From 3b12410b916adfdae099f31561bb49ca6f2fc922 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Mon, 7 Jun 2021 22:08:20 +0200 Subject: [PATCH] Squashed 'external/CImg/' content from commit c0becdf8 git-subtree-dir: external/CImg git-subtree-split: c0becdf881b0f3e2445975cac01c2422170d1fd9 --- .travis.yml | 20 + CImg.h | 64793 +++++++++++++ Licence_CeCILL-C_V1-en.txt | 508 + Licence_CeCILL_V2-en.txt | 504 + README.md | 24 + README.txt | 180 + examples/CImg_demo.cpp | 1712 + examples/CMakeLists.txt | 310 + examples/Makefile | 609 + examples/captcha.cpp | 163 + examples/curve_editor2d.cpp | 356 + examples/dtmri_view3d.cpp | 563 + examples/edge_explorer2d.cpp | 218 + examples/fade_images.cpp | 94 + examples/gaussian_fit1d.cpp | 172 + examples/generate_loop_macros.cpp | 353 + examples/hough_transform2d.cpp | 146 + examples/image2ascii.cpp | 157 + examples/image_registration2d.cpp | 216 + examples/image_surface3d.cpp | 140 + examples/img/CImg_demo.h | 27810 ++++++ examples/img/logo.bmp | Bin 0 -> 90534 bytes examples/img/milla.bmp | Bin 0 -> 153966 bytes examples/img/odykill.h | 79162 ++++++++++++++++ examples/img/parrot.ppm | Bin 0 -> 739676 bytes examples/img/parrot_mask.pgm | Bin 0 -> 246569 bytes examples/img/sh0r.pgm | 256 + examples/img/sh1r.pgm | 243 + examples/img/tetris.h | 2313 + examples/jawbreaker.cpp | 232 + examples/mcf_levelsets2d.cpp | 120 + examples/mcf_levelsets3d.cpp | 180 + examples/odykill.cpp | 229 + examples/pde_TschumperleDeriche2d.cpp | 231 + examples/pde_heatflow2d.cpp | 114 + examples/plotter1d.cpp | 73 + examples/radon_transform2d.cpp | 379 + examples/scene3d.cpp | 142 + examples/spherical_function3d.cpp | 113 + examples/tetris.cpp | 208 + examples/tron.cpp | 190 + examples/tutorial.cpp | 133 + examples/use_RGBclass.cpp | 138 + examples/use_chlpca.cpp | 70 + examples/use_cimgIPL.cpp | 155 + examples/use_cimgmatlab.cpp | 102 + examples/use_cimgmatlab.m | 33 + examples/use_draw_gradient.cpp | 138 + examples/use_jpeg_buffer.cpp | 109 + examples/use_nlmeans.cpp | 125 + examples/use_skeleton.cpp | 119 + examples/use_tiff_stream.cpp | 81 + examples/use_tinymatwriter.cpp | 135 + examples/wavelet_atrous.cpp | 191 + html/CImg.doxygen | 1473 + html/CImg_documentation.h | 1019 + html/CImg_flyer.svg | 2165 + html/CImg_reference_chinese.pdf | Bin 0 -> 925937 bytes html/download.html | 63 + html/favicon.ico | Bin 0 -> 1406 bytes html/favicon.png | Bin 0 -> 520 bytes html/footer.html | 27 + html/footer_doxygen.html | 22 + html/header.html | 68 + html/header_doxygen.html | 69 + html/highslide.js | 1891 + html/highslide/graphics/close.png | Bin 0 -> 1910 bytes html/highslide/graphics/closeX.png | Bin 0 -> 3665 bytes .../graphics/controlbar-black-border.gif | Bin 0 -> 5109 bytes .../graphics/controlbar-text-buttons.png | Bin 0 -> 1300 bytes .../graphics/controlbar-white-small.gif | Bin 0 -> 3151 bytes html/highslide/graphics/controlbar-white.gif | Bin 0 -> 4999 bytes html/highslide/graphics/controlbar2.gif | Bin 0 -> 884 bytes html/highslide/graphics/controlbar3.gif | Bin 0 -> 838 bytes html/highslide/graphics/controlbar4-hover.gif | Bin 0 -> 2410 bytes html/highslide/graphics/controlbar4.gif | Bin 0 -> 854 bytes html/highslide/graphics/fullexpand.gif | Bin 0 -> 209 bytes html/highslide/graphics/geckodimmer.png | Bin 0 -> 2817 bytes html/highslide/graphics/icon.gif | Bin 0 -> 867 bytes html/highslide/graphics/loader.gif | Bin 0 -> 668 bytes html/highslide/graphics/loader.white.gif | Bin 0 -> 673 bytes html/highslide/graphics/outlines/Outlines.psd | Bin 0 -> 171802 bytes html/highslide/graphics/outlines/beveled.png | Bin 0 -> 1848 bytes .../graphics/outlines/drop-shadow.png | Bin 0 -> 2091 bytes .../graphics/outlines/glossy-dark.png | Bin 0 -> 2793 bytes .../graphics/outlines/outer-glow.png | Bin 0 -> 3423 bytes .../graphics/outlines/rounded-black.png | Bin 0 -> 3031 bytes .../graphics/outlines/rounded-white.png | Bin 0 -> 2050 bytes html/highslide/graphics/resize.gif | Bin 0 -> 70 bytes html/highslide/graphics/scrollarrows.png | Bin 0 -> 6463 bytes html/highslide/graphics/zoomin.cur | Bin 0 -> 326 bytes html/highslide/graphics/zoomout.cur | Bin 0 -> 326 bytes html/highslide/highslide-full.js | 3320 + html/highslide/highslide-full.min.js | 9 + html/highslide/highslide-full.packed.js | 9 + html/highslide/highslide-ie6.css | 76 + html/highslide/highslide-with-gallery.js | 2657 + html/highslide/highslide-with-gallery.min.js | 9 + .../highslide-with-gallery.packed.js | 9 + html/highslide/highslide-with-html.js | 2481 + html/highslide/highslide-with-html.min.js | 9 + html/highslide/highslide-with-html.packed.js | 9 + html/highslide/highslide.css | 889 + html/highslide/highslide.js | 1891 + html/highslide/highslide.min.js | 9 + html/highslide/highslide.packed.js | 9 + html/img/book_cimg.jpg | Bin 0 -> 19883 bytes html/img/item_clickvideo.jpg | Bin 0 -> 1992 bytes html/img/item_clickvideo2.jpg | Bin 0 -> 1885 bytes html/img/item_description.jpg | Bin 0 -> 946 bytes html/img/item_extensibility.jpg | Bin 0 -> 1687 bytes html/img/item_file.jpg | Bin 0 -> 659 bytes html/img/item_freedom.jpg | Bin 0 -> 1536 bytes html/img/item_genericity.jpg | Bin 0 -> 1376 bytes html/img/item_portability.jpg | Bin 0 -> 1721 bytes html/img/item_simplicity.jpg | Bin 0 -> 1572 bytes html/img/item_sources.jpg | Bin 0 -> 2928 bytes html/img/item_sources2.jpg | Bin 0 -> 2793 bytes html/img/item_standard_package.jpg | Bin 0 -> 2711 bytes html/img/item_standard_package2.jpg | Bin 0 -> 2623 bytes html/img/item_usefulness.jpg | Bin 0 -> 1593 bytes html/img/logoCNRS.gif | Bin 0 -> 3273 bytes html/img/logoGREYC.gif | Bin 0 -> 2695 bytes html/img/logoIMAGE.gif | Bin 0 -> 3473 bytes html/img/logoINRIA.gif | Bin 0 -> 3095 bytes html/img/logoODYSSEE.jpg | Bin 0 -> 1639 bytes html/img/logo_header.jpg | Bin 0 -> 73325 bytes html/img/menu_download.png | Bin 0 -> 303 bytes html/img/menu_faq.png | Bin 0 -> 450 bytes html/img/menu_home.png | Bin 0 -> 342 bytes html/img/menu_issue.png | Bin 0 -> 404 bytes html/img/menu_links.png | Bin 0 -> 388 bytes html/img/menu_reference.png | Bin 0 -> 348 bytes html/img/menu_screenshots.png | Bin 0 -> 324 bytes html/img/menu_tutorial.png | Bin 0 -> 245 bytes html/img/postcard1.jpg | Bin 0 -> 33985 bytes html/img/postcard10.jpg | Bin 0 -> 47516 bytes html/img/postcard11.jpg | Bin 0 -> 114479 bytes html/img/postcard12.jpg | Bin 0 -> 98927 bytes html/img/postcard13.jpg | Bin 0 -> 103513 bytes html/img/postcard14.jpg | Bin 0 -> 130890 bytes html/img/postcard15.jpg | Bin 0 -> 92032 bytes html/img/postcard16.jpg | Bin 0 -> 125066 bytes html/img/postcard17.jpg | Bin 0 -> 100482 bytes html/img/postcard18.jpg | Bin 0 -> 105155 bytes html/img/postcard19.jpg | Bin 0 -> 33526 bytes html/img/postcard2.jpg | Bin 0 -> 32177 bytes html/img/postcard20.jpg | Bin 0 -> 23574 bytes html/img/postcard21.jpg | Bin 0 -> 73230 bytes html/img/postcard22.jpg | Bin 0 -> 15553 bytes html/img/postcard23.jpg | Bin 0 -> 16614 bytes html/img/postcard24.jpg | Bin 0 -> 21545 bytes html/img/postcard25.jpg | Bin 0 -> 14460 bytes html/img/postcard26.jpg | Bin 0 -> 26100 bytes html/img/postcard27.jpg | Bin 0 -> 28887 bytes html/img/postcard28.jpg | Bin 0 -> 107344 bytes html/img/postcard29.jpg | Bin 0 -> 111353 bytes html/img/postcard3.jpg | Bin 0 -> 161009 bytes html/img/postcard30.jpg | Bin 0 -> 20984 bytes html/img/postcard31.jpg | Bin 0 -> 70777 bytes html/img/postcard32.jpg | Bin 0 -> 88699 bytes html/img/postcard33.jpg | Bin 0 -> 27590 bytes html/img/postcard34.jpg | Bin 0 -> 192499 bytes html/img/postcard35.jpg | Bin 0 -> 30788 bytes html/img/postcard36.jpg | Bin 0 -> 41640 bytes html/img/postcard37.jpg | Bin 0 -> 125786 bytes html/img/postcard38.jpg | Bin 0 -> 19505 bytes html/img/postcard39.jpg | Bin 0 -> 101721 bytes html/img/postcard4.jpg | Bin 0 -> 121337 bytes html/img/postcard40.jpg | Bin 0 -> 12872 bytes html/img/postcard41.jpg | Bin 0 -> 13553 bytes html/img/postcard42.jpg | Bin 0 -> 16241 bytes html/img/postcard43.jpg | Bin 0 -> 17167 bytes html/img/postcard44.jpg | Bin 0 -> 21761 bytes html/img/postcard45.jpg | Bin 0 -> 106388 bytes html/img/postcard46.jpg | Bin 0 -> 77339 bytes html/img/postcard47.jpg | Bin 0 -> 89065 bytes html/img/postcard48.jpg | Bin 0 -> 33683 bytes html/img/postcard49.jpg | Bin 0 -> 28317 bytes html/img/postcard5.jpg | Bin 0 -> 160804 bytes html/img/postcard50.jpg | Bin 0 -> 20224 bytes html/img/postcard51.jpg | Bin 0 -> 125339 bytes html/img/postcard52.jpg | Bin 0 -> 20127 bytes html/img/postcard53.jpg | Bin 0 -> 21563 bytes html/img/postcard54.jpg | Bin 0 -> 25464 bytes html/img/postcard55.jpg | Bin 0 -> 14124 bytes html/img/postcard56.jpg | Bin 0 -> 43128 bytes html/img/postcard57.jpg | Bin 0 -> 20102 bytes html/img/postcard58.jpg | Bin 0 -> 18893 bytes html/img/postcard59.jpg | Bin 0 -> 24580 bytes html/img/postcard6.jpg | Bin 0 -> 150731 bytes html/img/postcard60.jpg | Bin 0 -> 16121 bytes html/img/postcard61.jpg | Bin 0 -> 22115 bytes html/img/postcard62.jpg | Bin 0 -> 27065 bytes html/img/postcard63.jpg | Bin 0 -> 32656 bytes html/img/postcard64.jpg | Bin 0 -> 21641 bytes html/img/postcard65.jpg | Bin 0 -> 18325 bytes html/img/postcard66.jpg | Bin 0 -> 13192 bytes html/img/postcard67.jpg | Bin 0 -> 25711 bytes html/img/postcard68.jpg | Bin 0 -> 21171 bytes html/img/postcard69.jpg | Bin 0 -> 35412 bytes html/img/postcard7.jpg | Bin 0 -> 153359 bytes html/img/postcard70.jpg | Bin 0 -> 14868 bytes html/img/postcard71.jpg | Bin 0 -> 9767 bytes html/img/postcard72.jpg | Bin 0 -> 76187 bytes html/img/postcard73.jpg | Bin 0 -> 53830 bytes html/img/postcard74.jpg | Bin 0 -> 20208 bytes html/img/postcard8.jpg | Bin 0 -> 104499 bytes html/img/postcard9.jpg | Bin 0 -> 137613 bytes html/img/reference/ref_box3d.jpg | Bin 0 -> 2025 bytes html/img/reference/ref_colormap_cool.jpg | Bin 0 -> 2979 bytes html/img/reference/ref_colormap_cube.jpg | Bin 0 -> 3518 bytes html/img/reference/ref_colormap_default.jpg | Bin 0 -> 5586 bytes html/img/reference/ref_colormap_flag.jpg | Bin 0 -> 8929 bytes html/img/reference/ref_colormap_hot.jpg | Bin 0 -> 2907 bytes html/img/reference/ref_colormap_hsv.jpg | Bin 0 -> 3403 bytes html/img/reference/ref_colormap_jet.jpg | Bin 0 -> 3280 bytes html/img/reference/ref_colormap_lines.jpg | Bin 0 -> 8356 bytes html/img/reference/ref_cone3d.jpg | Bin 0 -> 3655 bytes html/img/reference/ref_constructor1.jpg | Bin 0 -> 1856 bytes html/img/reference/ref_constructor2.jpg | Bin 0 -> 11519 bytes html/img/reference/ref_contrast_LUT256.jpg | Bin 0 -> 6877 bytes html/img/reference/ref_cut.jpg | Bin 0 -> 7326 bytes html/img/reference/ref_cylinder3d.jpg | Bin 0 -> 2883 bytes html/img/reference/ref_default_LUT256.jpg | Bin 0 -> 2781 bytes html/img/reference/ref_elevation3d.jpg | Bin 0 -> 12060 bytes html/img/reference/ref_ellipsoid3d.jpg | Bin 0 -> 3102 bytes html/img/reference/ref_equalize.jpg | Bin 0 -> 43170 bytes html/img/reference/ref_histogram.jpg | Bin 0 -> 9982 bytes html/img/reference/ref_image.jpg | Bin 0 -> 19475 bytes html/img/reference/ref_index.jpg | Bin 0 -> 16297 bytes html/img/reference/ref_isoline3d.jpg | Bin 0 -> 8909 bytes html/img/reference/ref_isosurface3d.jpg | Bin 0 -> 9029 bytes html/img/reference/ref_label_regions.jpg | Bin 0 -> 11588 bytes html/img/reference/ref_map.jpg | Bin 0 -> 47340 bytes html/img/reference/ref_noise.jpg | Bin 0 -> 12159 bytes html/img/reference/ref_norm.jpg | Bin 0 -> 36408 bytes html/img/reference/ref_normalize.jpg | Bin 0 -> 32312 bytes html/img/reference/ref_normalize2.jpg | Bin 0 -> 6697 bytes html/img/reference/ref_operator_comma.jpg | Bin 0 -> 13678 bytes html/img/reference/ref_operator_eq.jpg | Bin 0 -> 16529 bytes html/img/reference/ref_operator_less.jpg | Bin 0 -> 19448 bytes html/img/reference/ref_operator_minus.jpg | Bin 0 -> 10924 bytes html/img/reference/ref_operator_plus.jpg | Bin 0 -> 11887 bytes html/img/reference/ref_operator_plus1.jpg | Bin 0 -> 6579 bytes html/img/reference/ref_plane3d.jpg | Bin 0 -> 5166 bytes html/img/reference/ref_quantize.jpg | Bin 0 -> 10301 bytes html/img/reference/ref_rainbow_LUT256.jpg | Bin 0 -> 3860 bytes html/img/reference/ref_sphere3d.jpg | Bin 0 -> 2925 bytes html/img/reference/ref_sqr.jpg | Bin 0 -> 45941 bytes html/img/reference/ref_sqrt.jpg | Bin 0 -> 10380 bytes html/img/reference/ref_threshold.jpg | Bin 0 -> 12088 bytes html/img/reference/ref_torus3d.jpg | Bin 0 -> 2482 bytes html/img/section_bottom.png | Bin 0 -> 459 bytes html/img/section_bottom_mirrored.png | Bin 0 -> 444 bytes html/img/section_middle.png | Bin 0 -> 406 bytes html/img/section_top.png | Bin 0 -> 5821 bytes html/img/ss_blobs.jpg | Bin 0 -> 17426 bytes html/img/ss_bubble.jpg | Bin 0 -> 7258 bytes html/img/ss_bump.jpg | Bin 0 -> 61110 bytes html/img/ss_demomenu.jpg | Bin 0 -> 34928 bytes html/img/ss_dtmri.jpg | Bin 0 -> 86565 bytes html/img/ss_fourier.jpg | Bin 0 -> 10124 bytes html/img/ss_hough.jpg | Bin 0 -> 58712 bytes html/img/ss_imgfade.jpg | Bin 0 -> 6373 bytes html/img/ss_jawbreaker.jpg | Bin 0 -> 49169 bytes html/img/ss_landscape.jpg | Bin 0 -> 13751 bytes html/img/ss_mandelbrot.jpg | Bin 0 -> 73565 bytes html/img/ss_metaballs.jpg | Bin 0 -> 131447 bytes html/img/ss_mini_000000.jpg | Bin 0 -> 9060 bytes html/img/ss_mini_000001.jpg | Bin 0 -> 20980 bytes html/img/ss_mini_000002.jpg | Bin 0 -> 5767 bytes html/img/ss_mini_000003.jpg | Bin 0 -> 6884 bytes html/img/ss_mini_000004.jpg | Bin 0 -> 13191 bytes html/img/ss_mini_000005.jpg | Bin 0 -> 11659 bytes html/img/ss_mini_000006.jpg | Bin 0 -> 7356 bytes html/img/ss_mini_000007.jpg | Bin 0 -> 9267 bytes html/img/ss_mini_000008.jpg | Bin 0 -> 10395 bytes html/img/ss_mini_000009.jpg | Bin 0 -> 13076 bytes html/img/ss_mini_000010.jpg | Bin 0 -> 5385 bytes html/img/ss_mini_000011.jpg | Bin 0 -> 6295 bytes html/img/ss_mini_000012.jpg | Bin 0 -> 1099 bytes html/img/ss_mini_000013.jpg | Bin 0 -> 1473 bytes html/img/ss_mini_000014.jpg | Bin 0 -> 1291 bytes html/img/ss_mini_000015.jpg | Bin 0 -> 2106 bytes html/img/ss_mini_000016.jpg | Bin 0 -> 1915 bytes html/img/ss_mini_000017.jpg | Bin 0 -> 1897 bytes html/img/ss_mini_000018.jpg | Bin 0 -> 6948 bytes html/img/ss_mini_000019.jpg | Bin 0 -> 15670 bytes html/img/ss_mini_000020.jpg | Bin 0 -> 1153 bytes html/img/ss_mini_000021.jpg | Bin 0 -> 9197 bytes html/img/ss_mini_000022.jpg | Bin 0 -> 8121 bytes html/img/ss_mini_000023.jpg | Bin 0 -> 8458 bytes html/img/ss_mini_000024.jpg | Bin 0 -> 27697 bytes html/img/ss_mini_000025.jpg | Bin 0 -> 9597 bytes html/img/ss_mini_000026.jpg | Bin 0 -> 3739 bytes html/img/ss_mini_000027.jpg | Bin 0 -> 8340 bytes html/img/ss_odykill.jpg | Bin 0 -> 15496 bytes html/img/ss_optflow.jpg | Bin 0 -> 55045 bytes html/img/ss_paint.jpg | Bin 0 -> 10593 bytes html/img/ss_plasma.jpg | Bin 0 -> 14476 bytes html/img/ss_puzzle.jpg | Bin 0 -> 276130 bytes html/img/ss_reflection.jpg | Bin 0 -> 25852 bytes html/img/ss_render3d.jpg | Bin 0 -> 10918 bytes html/img/ss_restoration.jpg | Bin 0 -> 63829 bytes html/img/ss_rotozoom.jpg | Bin 0 -> 11087 bytes html/img/ss_shadebobs.jpg | Bin 0 -> 34204 bytes html/img/ss_surface.jpg | Bin 0 -> 22095 bytes html/img/ss_tetris.jpg | Bin 0 -> 11459 bytes html/img/ss_triangle.jpg | Bin 0 -> 43314 bytes html/img/ss_volume3d.jpg | Bin 0 -> 13007 bytes html/img/ss_waves.jpg | Bin 0 -> 13656 bytes html/img/tutorial.jpg | Bin 0 -> 104446 bytes html/index.html | 453 + html/jquery-3.5.1.min.js | 2 + html/links.html | 60 + html/screenshots.html | 489 + html/style.css | 728 + plugins/add_fileformat.h | 79 + plugins/bayer.h | 212 + plugins/chlpca.h | 323 + plugins/cvMat.h | 350 + plugins/draw_gradient.h | 269 + plugins/inpaint.h | 500 + plugins/ipl.h | 309 + plugins/ipl_alt.h | 122 + plugins/jpeg_buffer.h | 376 + plugins/loop_macros.h | 24166 +++++ plugins/matlab.h | 287 + plugins/nlmeans.h | 242 + plugins/skeleton.h | 587 + plugins/tiff_stream.h | 192 + plugins/tinymatwriter.h | 109 + plugins/vrml.h | 894 + plugins/vtk.h | 103 + resources/CImg.pc | 8 + resources/cimg_buildpackage | 186 + resources/cimg_ftp | 42 + resources/compile_win_icl.bat | 15 + resources/compile_win_visualcpp.bat | 15 + resources/debian/changelog | 5 + resources/debian/cimg-dev.dirs | 3 + resources/debian/cimg-dev.install | 3 + resources/debian/cimg-dev.links | 3 + resources/debian/compat | 1 + resources/debian/control | 22 + resources/debian/copyright | 1035 + resources/debian/docs | 1 + resources/debian/rules | 80 + .../project_win_visualcpp.sln | 20 + .../project_win_visualcpp.suo | Bin 0 -> 7168 bytes .../project_win_visualcpp.vcproj | 200 + resources/pycimg.py | 113 + 353 files changed, 235549 insertions(+) create mode 100644 .travis.yml create mode 100644 CImg.h create mode 100644 Licence_CeCILL-C_V1-en.txt create mode 100644 Licence_CeCILL_V2-en.txt create mode 100644 README.md create mode 100644 README.txt create mode 100644 examples/CImg_demo.cpp create mode 100644 examples/CMakeLists.txt create mode 100644 examples/Makefile create mode 100644 examples/captcha.cpp create mode 100644 examples/curve_editor2d.cpp create mode 100644 examples/dtmri_view3d.cpp create mode 100644 examples/edge_explorer2d.cpp create mode 100644 examples/fade_images.cpp create mode 100644 examples/gaussian_fit1d.cpp create mode 100644 examples/generate_loop_macros.cpp create mode 100644 examples/hough_transform2d.cpp create mode 100644 examples/image2ascii.cpp create mode 100644 examples/image_registration2d.cpp create mode 100644 examples/image_surface3d.cpp create mode 100644 examples/img/CImg_demo.h create mode 100644 examples/img/logo.bmp create mode 100644 examples/img/milla.bmp create mode 100644 examples/img/odykill.h create mode 100644 examples/img/parrot.ppm create mode 100644 examples/img/parrot_mask.pgm create mode 100644 examples/img/sh0r.pgm create mode 100644 examples/img/sh1r.pgm create mode 100644 examples/img/tetris.h create mode 100644 examples/jawbreaker.cpp create mode 100644 examples/mcf_levelsets2d.cpp create mode 100644 examples/mcf_levelsets3d.cpp create mode 100644 examples/odykill.cpp create mode 100644 examples/pde_TschumperleDeriche2d.cpp create mode 100644 examples/pde_heatflow2d.cpp create mode 100644 examples/plotter1d.cpp create mode 100644 examples/radon_transform2d.cpp create mode 100644 examples/scene3d.cpp create mode 100644 examples/spherical_function3d.cpp create mode 100644 examples/tetris.cpp create mode 100644 examples/tron.cpp create mode 100644 examples/tutorial.cpp create mode 100644 examples/use_RGBclass.cpp create mode 100644 examples/use_chlpca.cpp create mode 100644 examples/use_cimgIPL.cpp create mode 100644 examples/use_cimgmatlab.cpp create mode 100644 examples/use_cimgmatlab.m create mode 100644 examples/use_draw_gradient.cpp create mode 100644 examples/use_jpeg_buffer.cpp create mode 100644 examples/use_nlmeans.cpp create mode 100644 examples/use_skeleton.cpp create mode 100644 examples/use_tiff_stream.cpp create mode 100644 examples/use_tinymatwriter.cpp create mode 100644 examples/wavelet_atrous.cpp create mode 100644 html/CImg.doxygen create mode 100644 html/CImg_documentation.h create mode 100644 html/CImg_flyer.svg create mode 100644 html/CImg_reference_chinese.pdf create mode 100644 html/download.html create mode 100644 html/favicon.ico create mode 100644 html/favicon.png create mode 100644 html/footer.html create mode 100644 html/footer_doxygen.html create mode 100644 html/header.html create mode 100644 html/header_doxygen.html create mode 100644 html/highslide.js create mode 100644 html/highslide/graphics/close.png create mode 100644 html/highslide/graphics/closeX.png create mode 100644 html/highslide/graphics/controlbar-black-border.gif create mode 100644 html/highslide/graphics/controlbar-text-buttons.png create mode 100644 html/highslide/graphics/controlbar-white-small.gif create mode 100644 html/highslide/graphics/controlbar-white.gif create mode 100644 html/highslide/graphics/controlbar2.gif create mode 100644 html/highslide/graphics/controlbar3.gif create mode 100644 html/highslide/graphics/controlbar4-hover.gif create mode 100644 html/highslide/graphics/controlbar4.gif create mode 100644 html/highslide/graphics/fullexpand.gif create mode 100644 html/highslide/graphics/geckodimmer.png create mode 100644 html/highslide/graphics/icon.gif create mode 100644 html/highslide/graphics/loader.gif create mode 100644 html/highslide/graphics/loader.white.gif create mode 100644 html/highslide/graphics/outlines/Outlines.psd create mode 100644 html/highslide/graphics/outlines/beveled.png create mode 100644 html/highslide/graphics/outlines/drop-shadow.png create mode 100644 html/highslide/graphics/outlines/glossy-dark.png create mode 100644 html/highslide/graphics/outlines/outer-glow.png create mode 100644 html/highslide/graphics/outlines/rounded-black.png create mode 100644 html/highslide/graphics/outlines/rounded-white.png create mode 100644 html/highslide/graphics/resize.gif create mode 100644 html/highslide/graphics/scrollarrows.png create mode 100644 html/highslide/graphics/zoomin.cur create mode 100644 html/highslide/graphics/zoomout.cur create mode 100644 html/highslide/highslide-full.js create mode 100644 html/highslide/highslide-full.min.js create mode 100644 html/highslide/highslide-full.packed.js create mode 100644 html/highslide/highslide-ie6.css create mode 100644 html/highslide/highslide-with-gallery.js create mode 100644 html/highslide/highslide-with-gallery.min.js create mode 100644 html/highslide/highslide-with-gallery.packed.js create mode 100644 html/highslide/highslide-with-html.js create mode 100644 html/highslide/highslide-with-html.min.js create mode 100644 html/highslide/highslide-with-html.packed.js create mode 100644 html/highslide/highslide.css create mode 100644 html/highslide/highslide.js create mode 100644 html/highslide/highslide.min.js create mode 100644 html/highslide/highslide.packed.js create mode 100644 html/img/book_cimg.jpg create mode 100644 html/img/item_clickvideo.jpg create mode 100644 html/img/item_clickvideo2.jpg create mode 100644 html/img/item_description.jpg create mode 100644 html/img/item_extensibility.jpg create mode 100644 html/img/item_file.jpg create mode 100644 html/img/item_freedom.jpg create mode 100644 html/img/item_genericity.jpg create mode 100644 html/img/item_portability.jpg create mode 100644 html/img/item_simplicity.jpg create mode 100644 html/img/item_sources.jpg create mode 100644 html/img/item_sources2.jpg create mode 100644 html/img/item_standard_package.jpg create mode 100644 html/img/item_standard_package2.jpg create mode 100644 html/img/item_usefulness.jpg create mode 100644 html/img/logoCNRS.gif create mode 100644 html/img/logoGREYC.gif create mode 100644 html/img/logoIMAGE.gif create mode 100644 html/img/logoINRIA.gif create mode 100644 html/img/logoODYSSEE.jpg create mode 100644 html/img/logo_header.jpg create mode 100644 html/img/menu_download.png create mode 100644 html/img/menu_faq.png create mode 100644 html/img/menu_home.png create mode 100644 html/img/menu_issue.png create mode 100644 html/img/menu_links.png create mode 100644 html/img/menu_reference.png create mode 100644 html/img/menu_screenshots.png create mode 100644 html/img/menu_tutorial.png create mode 100644 html/img/postcard1.jpg create mode 100644 html/img/postcard10.jpg create mode 100644 html/img/postcard11.jpg create mode 100644 html/img/postcard12.jpg create mode 100644 html/img/postcard13.jpg create mode 100644 html/img/postcard14.jpg create mode 100644 html/img/postcard15.jpg create mode 100644 html/img/postcard16.jpg create mode 100644 html/img/postcard17.jpg create mode 100644 html/img/postcard18.jpg create mode 100644 html/img/postcard19.jpg create mode 100644 html/img/postcard2.jpg create mode 100644 html/img/postcard20.jpg create mode 100644 html/img/postcard21.jpg create mode 100644 html/img/postcard22.jpg create mode 100644 html/img/postcard23.jpg create mode 100644 html/img/postcard24.jpg create mode 100644 html/img/postcard25.jpg create mode 100644 html/img/postcard26.jpg create mode 100644 html/img/postcard27.jpg create mode 100644 html/img/postcard28.jpg create mode 100644 html/img/postcard29.jpg create mode 100644 html/img/postcard3.jpg create mode 100644 html/img/postcard30.jpg create mode 100644 html/img/postcard31.jpg create mode 100644 html/img/postcard32.jpg create mode 100644 html/img/postcard33.jpg create mode 100644 html/img/postcard34.jpg create mode 100644 html/img/postcard35.jpg create mode 100644 html/img/postcard36.jpg create mode 100644 html/img/postcard37.jpg create mode 100644 html/img/postcard38.jpg create mode 100644 html/img/postcard39.jpg create mode 100644 html/img/postcard4.jpg create mode 100644 html/img/postcard40.jpg create mode 100644 html/img/postcard41.jpg create mode 100644 html/img/postcard42.jpg create mode 100644 html/img/postcard43.jpg create mode 100644 html/img/postcard44.jpg create mode 100644 html/img/postcard45.jpg create mode 100644 html/img/postcard46.jpg create mode 100644 html/img/postcard47.jpg create mode 100644 html/img/postcard48.jpg create mode 100644 html/img/postcard49.jpg create mode 100644 html/img/postcard5.jpg create mode 100644 html/img/postcard50.jpg create mode 100644 html/img/postcard51.jpg create mode 100644 html/img/postcard52.jpg create mode 100644 html/img/postcard53.jpg create mode 100644 html/img/postcard54.jpg create mode 100644 html/img/postcard55.jpg create mode 100644 html/img/postcard56.jpg create mode 100644 html/img/postcard57.jpg create mode 100644 html/img/postcard58.jpg create mode 100644 html/img/postcard59.jpg create mode 100644 html/img/postcard6.jpg create mode 100644 html/img/postcard60.jpg create mode 100644 html/img/postcard61.jpg create mode 100644 html/img/postcard62.jpg create mode 100644 html/img/postcard63.jpg create mode 100644 html/img/postcard64.jpg create mode 100644 html/img/postcard65.jpg create mode 100644 html/img/postcard66.jpg create mode 100644 html/img/postcard67.jpg create mode 100644 html/img/postcard68.jpg create mode 100644 html/img/postcard69.jpg create mode 100644 html/img/postcard7.jpg create mode 100644 html/img/postcard70.jpg create mode 100644 html/img/postcard71.jpg create mode 100644 html/img/postcard72.jpg create mode 100644 html/img/postcard73.jpg create mode 100644 html/img/postcard74.jpg create mode 100644 html/img/postcard8.jpg create mode 100644 html/img/postcard9.jpg create mode 100644 html/img/reference/ref_box3d.jpg create mode 100644 html/img/reference/ref_colormap_cool.jpg create mode 100644 html/img/reference/ref_colormap_cube.jpg create mode 100644 html/img/reference/ref_colormap_default.jpg create mode 100644 html/img/reference/ref_colormap_flag.jpg create mode 100644 html/img/reference/ref_colormap_hot.jpg create mode 100644 html/img/reference/ref_colormap_hsv.jpg create mode 100644 html/img/reference/ref_colormap_jet.jpg create mode 100644 html/img/reference/ref_colormap_lines.jpg create mode 100644 html/img/reference/ref_cone3d.jpg create mode 100644 html/img/reference/ref_constructor1.jpg create mode 100644 html/img/reference/ref_constructor2.jpg create mode 100644 html/img/reference/ref_contrast_LUT256.jpg create mode 100644 html/img/reference/ref_cut.jpg create mode 100644 html/img/reference/ref_cylinder3d.jpg create mode 100644 html/img/reference/ref_default_LUT256.jpg create mode 100644 html/img/reference/ref_elevation3d.jpg create mode 100644 html/img/reference/ref_ellipsoid3d.jpg create mode 100644 html/img/reference/ref_equalize.jpg create mode 100644 html/img/reference/ref_histogram.jpg create mode 100644 html/img/reference/ref_image.jpg create mode 100644 html/img/reference/ref_index.jpg create mode 100644 html/img/reference/ref_isoline3d.jpg create mode 100644 html/img/reference/ref_isosurface3d.jpg create mode 100644 html/img/reference/ref_label_regions.jpg create mode 100644 html/img/reference/ref_map.jpg create mode 100644 html/img/reference/ref_noise.jpg create mode 100644 html/img/reference/ref_norm.jpg create mode 100644 html/img/reference/ref_normalize.jpg create mode 100644 html/img/reference/ref_normalize2.jpg create mode 100644 html/img/reference/ref_operator_comma.jpg create mode 100644 html/img/reference/ref_operator_eq.jpg create mode 100644 html/img/reference/ref_operator_less.jpg create mode 100644 html/img/reference/ref_operator_minus.jpg create mode 100644 html/img/reference/ref_operator_plus.jpg create mode 100644 html/img/reference/ref_operator_plus1.jpg create mode 100644 html/img/reference/ref_plane3d.jpg create mode 100644 html/img/reference/ref_quantize.jpg create mode 100644 html/img/reference/ref_rainbow_LUT256.jpg create mode 100644 html/img/reference/ref_sphere3d.jpg create mode 100644 html/img/reference/ref_sqr.jpg create mode 100644 html/img/reference/ref_sqrt.jpg create mode 100644 html/img/reference/ref_threshold.jpg create mode 100644 html/img/reference/ref_torus3d.jpg create mode 100644 html/img/section_bottom.png create mode 100644 html/img/section_bottom_mirrored.png create mode 100644 html/img/section_middle.png create mode 100644 html/img/section_top.png create mode 100644 html/img/ss_blobs.jpg create mode 100644 html/img/ss_bubble.jpg create mode 100644 html/img/ss_bump.jpg create mode 100644 html/img/ss_demomenu.jpg create mode 100644 html/img/ss_dtmri.jpg create mode 100644 html/img/ss_fourier.jpg create mode 100644 html/img/ss_hough.jpg create mode 100644 html/img/ss_imgfade.jpg create mode 100644 html/img/ss_jawbreaker.jpg create mode 100644 html/img/ss_landscape.jpg create mode 100644 html/img/ss_mandelbrot.jpg create mode 100644 html/img/ss_metaballs.jpg create mode 100644 html/img/ss_mini_000000.jpg create mode 100644 html/img/ss_mini_000001.jpg create mode 100644 html/img/ss_mini_000002.jpg create mode 100644 html/img/ss_mini_000003.jpg create mode 100644 html/img/ss_mini_000004.jpg create mode 100644 html/img/ss_mini_000005.jpg create mode 100644 html/img/ss_mini_000006.jpg create mode 100644 html/img/ss_mini_000007.jpg create mode 100644 html/img/ss_mini_000008.jpg create mode 100644 html/img/ss_mini_000009.jpg create mode 100644 html/img/ss_mini_000010.jpg create mode 100644 html/img/ss_mini_000011.jpg create mode 100644 html/img/ss_mini_000012.jpg create mode 100644 html/img/ss_mini_000013.jpg create mode 100644 html/img/ss_mini_000014.jpg create mode 100644 html/img/ss_mini_000015.jpg create mode 100644 html/img/ss_mini_000016.jpg create mode 100644 html/img/ss_mini_000017.jpg create mode 100644 html/img/ss_mini_000018.jpg create mode 100644 html/img/ss_mini_000019.jpg create mode 100644 html/img/ss_mini_000020.jpg create mode 100644 html/img/ss_mini_000021.jpg create mode 100644 html/img/ss_mini_000022.jpg create mode 100644 html/img/ss_mini_000023.jpg create mode 100644 html/img/ss_mini_000024.jpg create mode 100644 html/img/ss_mini_000025.jpg create mode 100644 html/img/ss_mini_000026.jpg create mode 100644 html/img/ss_mini_000027.jpg create mode 100644 html/img/ss_odykill.jpg create mode 100644 html/img/ss_optflow.jpg create mode 100644 html/img/ss_paint.jpg create mode 100644 html/img/ss_plasma.jpg create mode 100644 html/img/ss_puzzle.jpg create mode 100644 html/img/ss_reflection.jpg create mode 100644 html/img/ss_render3d.jpg create mode 100644 html/img/ss_restoration.jpg create mode 100644 html/img/ss_rotozoom.jpg create mode 100644 html/img/ss_shadebobs.jpg create mode 100644 html/img/ss_surface.jpg create mode 100644 html/img/ss_tetris.jpg create mode 100644 html/img/ss_triangle.jpg create mode 100644 html/img/ss_volume3d.jpg create mode 100644 html/img/ss_waves.jpg create mode 100644 html/img/tutorial.jpg create mode 100644 html/index.html create mode 100644 html/jquery-3.5.1.min.js create mode 100644 html/links.html create mode 100644 html/screenshots.html create mode 100644 html/style.css create mode 100644 plugins/add_fileformat.h create mode 100644 plugins/bayer.h create mode 100644 plugins/chlpca.h create mode 100644 plugins/cvMat.h create mode 100644 plugins/draw_gradient.h create mode 100644 plugins/inpaint.h create mode 100644 plugins/ipl.h create mode 100644 plugins/ipl_alt.h create mode 100644 plugins/jpeg_buffer.h create mode 100644 plugins/loop_macros.h create mode 100644 plugins/matlab.h create mode 100644 plugins/nlmeans.h create mode 100644 plugins/skeleton.h create mode 100644 plugins/tiff_stream.h create mode 100644 plugins/tinymatwriter.h create mode 100644 plugins/vrml.h create mode 100644 plugins/vtk.h create mode 100644 resources/CImg.pc create mode 100755 resources/cimg_buildpackage create mode 100755 resources/cimg_ftp create mode 100644 resources/compile_win_icl.bat create mode 100644 resources/compile_win_visualcpp.bat create mode 100644 resources/debian/changelog create mode 100644 resources/debian/cimg-dev.dirs create mode 100644 resources/debian/cimg-dev.install create mode 100644 resources/debian/cimg-dev.links create mode 100644 resources/debian/compat create mode 100644 resources/debian/control create mode 100644 resources/debian/copyright create mode 100644 resources/debian/docs create mode 100755 resources/debian/rules create mode 100644 resources/project_win_visualcpp/project_win_visualcpp.sln create mode 100644 resources/project_win_visualcpp/project_win_visualcpp.suo create mode 100644 resources/project_win_visualcpp/project_win_visualcpp.vcproj create mode 100644 resources/pycimg.py diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..0e9575349 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,20 @@ +language: cpp +compiler: + - gcc +script: + - cd examples + - make CXX='g++-4.8' travis +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.8 + - g++-4.8 + - clang + - libpng12-dev + - libjpeg-dev + - libmagick++-dev + - libgraphicsmagick++1-dev + - libfftw3-dev + - zlib1g-dev diff --git a/CImg.h b/CImg.h new file mode 100644 index 000000000..a8b893a37 --- /dev/null +++ b/CImg.h @@ -0,0 +1,64793 @@ +/* + # + # File : CImg.h + # ( C++ header file ) + # + # Description : C++ Template Image Processing Toolkit. + # This file is the main component of the CImg Library project. + # ( http://cimg.eu ) + # + # Project manager : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # A complete list of contributors is available in file 'README.txt' + # distributed within the CImg package. + # + # Licenses : This file is 'dual-licensed', you have to choose one + # of the two licenses below to apply. + # + # CeCILL-C + # The CeCILL-C license is close to the GNU LGPL. + # ( http://cecill.info/licences/Licence_CeCILL-C_V1-en.html ) + # + # or CeCILL v2.1 + # The CeCILL license is compatible with the GNU GPL. + # ( http://cecill.info/licences/Licence_CeCILL_V2.1-en.html ) + # + # This software is governed either by the CeCILL or the CeCILL-C license + # under French law and abiding by the rules of distribution of free software. + # You can use, modify and or redistribute the software under the terms of + # the CeCILL or CeCILL-C licenses as circulated by CEA, CNRS and INRIA + # at the following URL: "http://cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL and CeCILL-C licenses and that you accept its terms. + # +*/ + +// Set version number of the library. +#ifndef cimg_version +#define cimg_version 297 + +/*----------------------------------------------------------- + # + # Test and possibly auto-set CImg configuration variables + # and include required headers. + # + # If you find that the default configuration variables are + # not adapted to your system, you can override their values + # before including the header file "CImg.h" + # (use the #define directive). + # + ------------------------------------------------------------*/ + +// Include standard C++ headers. +// This is the minimal set of required headers to make CImg-based codes compile. +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define cimg_str(x) #x +#define cimg_str2(x) cimg_str(x) + +// Detect/configure OS variables. +// +// Define 'cimg_OS' to: '0' for an unknown OS (will try to minize library dependencies). +// '1' for a Unix-like OS (Linux, Solaris, BSD, MacOSX, Irix, ...). +// '2' for Microsoft Windows. +// (auto-detection is performed if 'cimg_OS' is not set by the user). +#ifndef cimg_OS +#if defined(unix) || defined(__unix) || defined(__unix__) \ + || defined(linux) || defined(__linux) || defined(__linux__) \ + || defined(sun) || defined(__sun) \ + || defined(BSD) || defined(__OpenBSD__) || defined(__NetBSD__) \ + || defined(__FreeBSD__) || defined (__DragonFly__) \ + || defined(sgi) || defined(__sgi) \ + || defined(__OSX__) || defined(__MACOSX__) || defined(__APPLE__) \ + || defined(__CYGWIN__) +#define cimg_OS 1 +#elif defined(_MSC_VER) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ + || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) +#define cimg_OS 2 +#else +#define cimg_OS 0 +#endif +#elif !(cimg_OS==0 || cimg_OS==1 || cimg_OS==2) +#error CImg Library: Invalid configuration variable 'cimg_OS'. +#error (correct values are '0 = unknown OS', '1 = Unix-like OS', '2 = Microsoft Windows'). +#endif +#ifndef cimg_date +#define cimg_date __DATE__ +#endif +#ifndef cimg_time +#define cimg_time __TIME__ +#endif + +// Disable silly warnings on some Microsoft VC++ compilers. +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4127) +#pragma warning(disable:4244) +#pragma warning(disable:4311) +#pragma warning(disable:4312) +#pragma warning(disable:4319) +#pragma warning(disable:4512) +#pragma warning(disable:4571) +#pragma warning(disable:4640) +#pragma warning(disable:4706) +#pragma warning(disable:4710) +#pragma warning(disable:4800) +#pragma warning(disable:4804) +#pragma warning(disable:4820) +#pragma warning(disable:4996) + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif +#ifndef _CRT_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS 1 +#endif +#ifndef _CRT_NONSTDC_NO_DEPRECATE +#define _CRT_NONSTDC_NO_DEPRECATE 1 +#endif +#endif + +// Define correct string functions for each compiler and OS. +#if cimg_OS==2 && defined(_MSC_VER) +#define cimg_sscanf std::sscanf +#define cimg_sprintf std::sprintf +#define cimg_snprintf cimg::_snprintf +#define cimg_vsnprintf cimg::_vsnprintf +#else +#include +#if defined(__MACOSX__) || defined(__APPLE__) +#define cimg_sscanf cimg::_sscanf +#define cimg_sprintf cimg::_sprintf +#define cimg_snprintf cimg::_snprintf +#define cimg_vsnprintf cimg::_vsnprintf +#else +#define cimg_sscanf std::sscanf +#define cimg_sprintf std::sprintf +#define cimg_snprintf snprintf +#define cimg_vsnprintf vsnprintf +#endif +#endif + +// Include OS-specific headers. +#if cimg_OS==1 +#include +#include +#include +#include +#include +#include +#elif cimg_OS==2 +#ifndef NOMINMAX +#define NOMINMAX +#endif +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#ifndef _WIN32_IE +#define _WIN32_IE 0x0400 +#endif +#include +#include +#include +enum {FALSE_WIN = 0}; +#endif + +// Look for C++11 features. +#ifndef cimg_use_cpp11 +#if __cplusplus>201100 +#define cimg_use_cpp11 1 +#else +#define cimg_use_cpp11 0 +#endif +#endif +#if cimg_use_cpp11==1 +#include +#include +#endif + +// Convenient macro to define pragma +#ifdef _MSC_VER +#define cimg_pragma(x) __pragma(x) +#else +#define cimg_pragma(x) _Pragma(#x) +#endif + +// Define own types 'cimg_long/ulong' and 'cimg_int64/uint64' to ensure portability. +// ( constrained to 'sizeof(cimg_ulong/cimg_long) = sizeof(void*)' and 'sizeof(cimg_int64/cimg_uint64)=8' ). +#if cimg_OS==2 + +#define cimg_uint64 unsigned __int64 +#define cimg_int64 __int64 +#define cimg_ulong UINT_PTR +#define cimg_long INT_PTR +#ifdef _MSC_VER +#define cimg_fuint64 "%I64u" +#define cimg_fint64 "%I64d" +#else +#define cimg_fuint64 "%llu" +#define cimg_fint64 "%lld" +#endif + +#else + +#if UINTPTR_MAX==0xffffffff || defined(__arm__) || defined(_M_ARM) || ((ULONG_MAX)==(UINT_MAX)) +#define cimg_uint64 unsigned long long +#define cimg_int64 long long +#define cimg_fuint64 "%llu" +#define cimg_fint64 "%lld" +#else +#define cimg_uint64 unsigned long +#define cimg_int64 long +#define cimg_fuint64 "%lu" +#define cimg_fint64 "%ld" +#endif + +#if defined(__arm__) || defined(_M_ARM) +#define cimg_ulong unsigned long long +#define cimg_long long long +#else +#define cimg_ulong unsigned long +#define cimg_long long +#endif + +#endif + +// Configure filename separator. +// +// Filename separator is set by default to '/', except for Windows where it is '\'. +#ifndef cimg_file_separator +#if cimg_OS==2 +#define cimg_file_separator '\\' +#else +#define cimg_file_separator '/' +#endif +#endif + +// Configure verbosity of output messages. +// +// Define 'cimg_verbosity' to: '0' to hide library messages (quiet mode). +// '1' to output library messages on the console. +// '2' to output library messages on a basic dialog window (default behavior). +// '3' to do as '1' + add extra warnings (may slow down the code!). +// '4' to do as '2' + add extra warnings (may slow down the code!). +// +// Define 'cimg_strict_warnings' to replace warning messages by exception throwns. +// +// Define 'cimg_use_vt100' to allow output of color messages on VT100-compatible terminals. +#ifndef cimg_verbosity +#if cimg_OS==2 +#define cimg_verbosity 2 +#else +#define cimg_verbosity 1 +#endif +#elif !(cimg_verbosity==0 || cimg_verbosity==1 || cimg_verbosity==2 || cimg_verbosity==3 || cimg_verbosity==4) +#error CImg Library: Configuration variable 'cimg_verbosity' is badly defined. +#error (should be { 0=quiet | 1=console | 2=dialog | 3=console+warnings | 4=dialog+warnings }). +#endif + +// Configure OpenMP support. +// (http://www.openmp.org) +// +// Define 'cimg_use_openmp' to enable OpenMP support (requires OpenMP 3.0+). +// +// OpenMP directives are used in many CImg functions to get +// advantages of multi-core CPUs. +#if !defined(cimg_use_openmp) +#ifdef _OPENMP +#define cimg_use_openmp 1 +#else +#define cimg_use_openmp 0 +#endif +#endif +#if cimg_use_openmp!=0 +#include +#define cimg_pragma_openmp(p) cimg_pragma(omp p) +#else +#define cimg_pragma_openmp(p) +#endif + +// Configure the 'abort' signal handler (does nothing by default). +// A typical signal handler can be defined in your own source like this: +// #define cimg_abort_test if (is_abort) throw CImgAbortException("") +// +// where 'is_abort' is a boolean variable defined somewhere in your code and reachable in the method. +// 'cimg_abort_test2' does the same but is called more often (in inner loops). +#if defined(cimg_abort_test) && cimg_use_openmp!=0 + +// Define abort macros to be used with OpenMP. +#ifndef _cimg_abort_init_openmp +#define _cimg_abort_init_openmp bool _cimg_abort_go_openmp = true; cimg::unused(_cimg_abort_go_openmp) +#endif +#ifndef _cimg_abort_try_openmp +#define _cimg_abort_try_openmp if (_cimg_abort_go_openmp) try +#endif +#ifndef _cimg_abort_catch_openmp +#define _cimg_abort_catch_openmp catch (CImgAbortException&) { cimg_pragma(omp atomic) _cimg_abort_go_openmp&=false; } +#endif +#ifndef _cimg_abort_catch_fill_openmp +#define _cimg_abort_catch_fill_openmp \ + catch (CImgException& e) { cimg_pragma(omp critical(abort)) CImg::string(e._message).move_to(is_error); \ + cimg_pragma(omp atomic) _cimg_abort_go_openmp&=false; } +#endif +#ifdef cimg_abort_test2 +#ifndef _cimg_abort_try_openmp2 +#define _cimg_abort_try_openmp2 _cimg_abort_try_openmp +#endif +#ifndef _cimg_abort_catch_openmp2 +#define _cimg_abort_catch_openmp2 _cimg_abort_catch_openmp +#endif +#endif +#endif + +#ifndef _cimg_abort_init_openmp +#define _cimg_abort_init_openmp +#endif +#ifndef _cimg_abort_try_openmp +#define _cimg_abort_try_openmp +#endif +#ifndef _cimg_abort_catch_openmp +#define _cimg_abort_catch_openmp +#endif +#ifndef _cimg_abort_try_openmp2 +#define _cimg_abort_try_openmp2 +#endif +#ifndef _cimg_abort_catch_openmp2 +#define _cimg_abort_catch_openmp2 +#endif +#ifndef _cimg_abort_catch_fill_openmp +#define _cimg_abort_catch_fill_openmp +#endif +#ifndef cimg_abort_init +#define cimg_abort_init +#endif +#ifndef cimg_abort_test +#define cimg_abort_test +#endif +#ifndef cimg_abort_test2 +#define cimg_abort_test2 +#endif + +// Configure display framework. +// +// Define 'cimg_display' to: '0' to disable display capabilities. +// '1' to use the X-Window framework (X11). +// '2' to use the Microsoft GDI32 framework. +#ifndef cimg_display +#if cimg_OS==0 +#define cimg_display 0 +#elif cimg_OS==1 +#define cimg_display 1 +#elif cimg_OS==2 +#define cimg_display 2 +#endif +#elif !(cimg_display==0 || cimg_display==1 || cimg_display==2) +#error CImg Library: Configuration variable 'cimg_display' is badly defined. +#error (should be { 0=none | 1=X-Window (X11) | 2=Microsoft GDI32 }). +#endif + +// Include display-specific headers. +#if cimg_display==1 +#include +#include +#include +#include +#ifdef cimg_use_xshm +#include +#include +#include +#endif +#ifdef cimg_use_xrandr +#include +#endif +#endif +#ifndef cimg_appname +#define cimg_appname "CImg" +#endif + +// Configure OpenCV support. +// (http://opencv.willowgarage.com/wiki/) +// +// Define 'cimg_use_opencv' to enable OpenCV support. +// +// OpenCV library may be used to access images from cameras +// (see method 'CImg::load_camera()'). +#ifdef cimg_use_opencv +#ifdef True +#undef True +#define _cimg_redefine_True +#endif +#ifdef False +#undef False +#define _cimg_redefine_False +#endif +#ifdef Status +#undef Status +#define _cimg_redefine_Status +#endif +#include +#include +#if CV_MAJOR_VERSION>=3 +#define _cimg_fourcc cv::VideoWriter::fourcc +#define _cimg_cap_prop_frame_width cv::VideoCaptureProperties::CAP_PROP_FRAME_WIDTH +#define _cimg_cap_prop_frame_height cv::VideoCaptureProperties::CAP_PROP_FRAME_HEIGHT +#define _cimg_cap_prop_frame_count cv::VideoCaptureProperties::CAP_PROP_FRAME_COUNT +#else +#define _cimg_fourcc CV_FOURCC +#define _cimg_cap_prop_frame_width CV_CAP_PROP_FRAME_WIDTH +#define _cimg_cap_prop_frame_height CV_CAP_PROP_FRAME_HEIGHT +#define _cimg_cap_prop_frame_count CV_CAP_PROP_FRAME_COUNT +#endif +#endif + +// Configure LibPNG support. +// (http://www.libpng.org) +// +// Define 'cimg_use_png' to enable LibPNG support. +// +// PNG library may be used to get a native support of '.png' files. +// (see methods 'CImg::{load,save}_png()'. +#ifdef cimg_use_png +extern "C" { +#include "png.h" +} +#endif + +// Configure LibJPEG support. +// (http://en.wikipedia.org/wiki/Libjpeg) +// +// Define 'cimg_use_jpeg' to enable LibJPEG support. +// +// JPEG library may be used to get a native support of '.jpg' files. +// (see methods 'CImg::{load,save}_jpeg()'). +#ifdef cimg_use_jpeg +extern "C" { +#include "jpeglib.h" +#include "setjmp.h" +} +#endif + +// Configure LibTIFF support. +// (http://www.libtiff.org) +// +// Define 'cimg_use_tiff' to enable LibTIFF support. +// +// TIFF library may be used to get a native support of '.tif' files. +// (see methods 'CImg[List]::{load,save}_tiff()'). +#ifdef cimg_use_tiff +extern "C" { +#define uint64 uint64_hack_ +#define int64 int64_hack_ +#include "tiffio.h" +#undef uint64 +#undef int64 +} +#endif + +// Configure HEIF support +// (https://github.com/strukturag/libheif) +// +// Define 'cimg_use_heif' to enable HEIF support. +// +// HEIF library may be used to get a native support of '.heic' and '.avif' files. +// (see method 'CImg::load_heif()'). +#ifdef cimg_use_heif +#include +#endif + +// Configure LibMINC2 support. +// (http://en.wikibooks.org/wiki/MINC/Reference/MINC2.0_File_Format_Reference) +// +// Define 'cimg_use_minc2' to enable LibMINC2 support. +// +// MINC2 library may be used to get a native support of '.mnc' files. +// (see methods 'CImg::{load,save}_minc2()'). +#ifdef cimg_use_minc2 +#include "minc_io_simple_volume.h" +#include "minc_1_simple.h" +#include "minc_1_simple_rw.h" +#endif + +// Configure Zlib support. +// (http://www.zlib.net) +// +// Define 'cimg_use_zlib' to enable Zlib support. +// +// Zlib library may be used to allow compressed data in '.cimgz' files +// (see methods 'CImg[List]::{load,save}_cimg()'). +#ifdef cimg_use_zlib +extern "C" { +#include "zlib.h" +} +#endif + +// Configure libcurl support. +// (http://curl.haxx.se/libcurl/) +// +// Define 'cimg_use_curl' to enable libcurl support. +// +// Libcurl may be used to get a native support of file downloading from the network. +// (see method 'cimg::load_network()'.) +#ifdef cimg_use_curl +#include "curl/curl.h" +#endif + +// Configure Magick++ support. +// (http://www.imagemagick.org/Magick++) +// +// Define 'cimg_use_magick' to enable Magick++ support. +// +// Magick++ library may be used to get a native support of various image file formats. +// (see methods 'CImg::{load,save}()'). +#ifdef cimg_use_magick +#include "Magick++.h" +#endif + +// Configure FFTW3 support. +// (http://www.fftw.org) +// +// Define 'cimg_use_fftw3' to enable libFFTW3 support. +// +// FFTW3 library may be used to efficiently compute the Fast Fourier Transform +// of image data, without restriction on the image size. +// (see method 'CImg[List]::FFT()'). +#ifdef cimg_use_fftw3 +extern "C" { +#include "fftw3.h" +} +#endif + +// Configure LibBoard support. +// (http://libboard.sourceforge.net/) +// +// Define 'cimg_use_board' to enable Board support. +// +// Board library may be used to draw 3D objects in vector-graphics canvas +// that can be saved as '.ps' or '.svg' files afterwards. +// (see method 'CImg::draw_object3d()'). +#ifdef cimg_use_board +#include "Board.h" +#endif + +// Configure OpenEXR support. +// (http://www.openexr.com/) +// +// Define 'cimg_use_openexr' to enable OpenEXR support. +// +// OpenEXR library may be used to get a native support of '.exr' files. +// (see methods 'CImg::{load,save}_exr()'). +#ifdef cimg_use_openexr +#if __GNUC__>=5 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated" +#pragma GCC diagnostic ignored "-Wdeprecated-copy" +#pragma GCC diagnostic ignored "-Wshadow" +#endif +#include "ImfRgbaFile.h" +#include "ImfInputFile.h" +#include "ImfChannelList.h" +#include "ImfMatrixAttribute.h" +#include "ImfArray.h" +#if __GNUC__>=5 +#pragma GCC diagnostic pop +#endif +#endif + +// Configure TinyEXR support. +// (https://github.com/syoyo/tinyexr) +// +// Define 'cimg_use_tinyexr' to enable TinyEXR support. +// +// TinyEXR is a small, single header-only library to load and save OpenEXR(.exr) images. +#ifdef cimg_use_tinyexr +#ifndef TINYEXR_IMPLEMENTATION +#define TINYEXR_IMPLEMENTATION +#endif +#include "tinyexr.h" +#endif + +// Lapack configuration. +// (http://www.netlib.org/lapack) +// +// Define 'cimg_use_lapack' to enable LAPACK support. +// +// Lapack library may be used in several CImg methods to speed up +// matrix computations (eigenvalues, inverse, ...). +#ifdef cimg_use_lapack +extern "C" { + extern void sgetrf_(int*, int*, float*, int*, int*, int*); + extern void sgetri_(int*, float*, int*, int*, float*, int*, int*); + extern void sgetrs_(char*, int*, int*, float*, int*, int*, float*, int*, int*); + extern void sgesvd_(char*, char*, int*, int*, float*, int*, float*, float*, int*, float*, int*, float*, int*, int*); + extern void ssyev_(char*, char*, int*, float*, int*, float*, float*, int*, int*); + extern void dgetrf_(int*, int*, double*, int*, int*, int*); + extern void dgetri_(int*, double*, int*, int*, double*, int*, int*); + extern void dgetrs_(char*, int*, int*, double*, int*, int*, double*, int*, int*); + extern void dgesvd_(char*, char*, int*, int*, double*, int*, double*, double*, + int*, double*, int*, double*, int*, int*); + extern void dsyev_(char*, char*, int*, double*, int*, double*, double*, int*, int*); + extern void dgels_(char*, int*,int*,int*,double*,int*,double*,int*,double*,int*,int*); + extern void sgels_(char*, int*,int*,int*,float*,int*,float*,int*,float*,int*,int*); +} +#endif + +// Check if min/max/PI macros are defined. +// +// CImg does not compile if macros 'min', 'max' or 'PI' are defined, +// because it redefines functions min(), max() and const variable PI in the cimg:: namespace. +// so it '#undef' these macros if necessary, and restore them to reasonable +// values at the end of this file. +#ifdef min +#undef min +#define _cimg_redefine_min +#endif +#ifdef max +#undef max +#define _cimg_redefine_max +#endif +#ifdef PI +#undef PI +#define _cimg_redefine_PI +#endif + +// Define 'cimg_library' namespace suffix. +// +// You may want to add a suffix to the 'cimg_library' namespace, for instance if you need to work +// with several versions of the library at the same time. +#ifdef cimg_namespace_suffix +#define __cimg_library_suffixed(s) cimg_library_##s +#define _cimg_library_suffixed(s) __cimg_library_suffixed(s) +#define cimg_library_suffixed _cimg_library_suffixed(cimg_namespace_suffix) +#else +#define cimg_library_suffixed cimg_library +#endif + +/*------------------------------------------------------------------------------ + # + # Define user-friendly macros. + # + # These CImg macros are prefixed by 'cimg_' and can be used safely in your own + # code. They are useful to parse command line options, or to write image loops. + # + ------------------------------------------------------------------------------*/ + +// Macros to define program usage, and retrieve command line arguments. +#define cimg_usage(usage) cimg_library_suffixed::cimg::option((char*)0,argc,argv,(char*)0,usage,false) +#define cimg_help(str) cimg_library_suffixed::cimg::option((char*)0,argc,argv,str,(char*)0) +#define cimg_option(name,_default,usage) cimg_library_suffixed::cimg::option(name,argc,argv,_default,usage) + +// Macros to define and manipulate local neighborhoods. +#define CImg_2x2(I,T) T I[4]; \ + T& I##cc = I[0]; T& I##nc = I[1]; \ + T& I##cn = I[2]; T& I##nn = I[3]; \ + I##cc = I##nc = \ + I##cn = I##nn = 0 + +#define CImg_3x3(I,T) T I[9]; \ + T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; \ + T& I##pc = I[3]; T& I##cc = I[4]; T& I##nc = I[5]; \ + T& I##pn = I[6]; T& I##cn = I[7]; T& I##nn = I[8]; \ + I##pp = I##cp = I##np = \ + I##pc = I##cc = I##nc = \ + I##pn = I##cn = I##nn = 0 + +#define CImg_4x4(I,T) T I[16]; \ + T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; T& I##ap = I[3]; \ + T& I##pc = I[4]; T& I##cc = I[5]; T& I##nc = I[6]; T& I##ac = I[7]; \ + T& I##pn = I[8]; T& I##cn = I[9]; T& I##nn = I[10]; T& I##an = I[11]; \ + T& I##pa = I[12]; T& I##ca = I[13]; T& I##na = I[14]; T& I##aa = I[15]; \ + I##pp = I##cp = I##np = I##ap = \ + I##pc = I##cc = I##nc = I##ac = \ + I##pn = I##cn = I##nn = I##an = \ + I##pa = I##ca = I##na = I##aa = 0 + +#define CImg_5x5(I,T) T I[25]; \ + T& I##bb = I[0]; T& I##pb = I[1]; T& I##cb = I[2]; T& I##nb = I[3]; T& I##ab = I[4]; \ + T& I##bp = I[5]; T& I##pp = I[6]; T& I##cp = I[7]; T& I##np = I[8]; T& I##ap = I[9]; \ + T& I##bc = I[10]; T& I##pc = I[11]; T& I##cc = I[12]; T& I##nc = I[13]; T& I##ac = I[14]; \ + T& I##bn = I[15]; T& I##pn = I[16]; T& I##cn = I[17]; T& I##nn = I[18]; T& I##an = I[19]; \ + T& I##ba = I[20]; T& I##pa = I[21]; T& I##ca = I[22]; T& I##na = I[23]; T& I##aa = I[24]; \ + I##bb = I##pb = I##cb = I##nb = I##ab = \ + I##bp = I##pp = I##cp = I##np = I##ap = \ + I##bc = I##pc = I##cc = I##nc = I##ac = \ + I##bn = I##pn = I##cn = I##nn = I##an = \ + I##ba = I##pa = I##ca = I##na = I##aa = 0 + +#define CImg_2x2x2(I,T) T I[8]; \ + T& I##ccc = I[0]; T& I##ncc = I[1]; \ + T& I##cnc = I[2]; T& I##nnc = I[3]; \ + T& I##ccn = I[4]; T& I##ncn = I[5]; \ + T& I##cnn = I[6]; T& I##nnn = I[7]; \ + I##ccc = I##ncc = \ + I##cnc = I##nnc = \ + I##ccn = I##ncn = \ + I##cnn = I##nnn = 0 + +#define CImg_3x3x3(I,T) T I[27]; \ + T& I##ppp = I[0]; T& I##cpp = I[1]; T& I##npp = I[2]; \ + T& I##pcp = I[3]; T& I##ccp = I[4]; T& I##ncp = I[5]; \ + T& I##pnp = I[6]; T& I##cnp = I[7]; T& I##nnp = I[8]; \ + T& I##ppc = I[9]; T& I##cpc = I[10]; T& I##npc = I[11]; \ + T& I##pcc = I[12]; T& I##ccc = I[13]; T& I##ncc = I[14]; \ + T& I##pnc = I[15]; T& I##cnc = I[16]; T& I##nnc = I[17]; \ + T& I##ppn = I[18]; T& I##cpn = I[19]; T& I##npn = I[20]; \ + T& I##pcn = I[21]; T& I##ccn = I[22]; T& I##ncn = I[23]; \ + T& I##pnn = I[24]; T& I##cnn = I[25]; T& I##nnn = I[26]; \ + I##ppp = I##cpp = I##npp = \ + I##pcp = I##ccp = I##ncp = \ + I##pnp = I##cnp = I##nnp = \ + I##ppc = I##cpc = I##npc = \ + I##pcc = I##ccc = I##ncc = \ + I##pnc = I##cnc = I##nnc = \ + I##ppn = I##cpn = I##npn = \ + I##pcn = I##ccn = I##ncn = \ + I##pnn = I##cnn = I##nnn = 0 + +#define cimg_def2x2(img,x,y) \ + int _n1##x = x<(img).width() - 1?x + 1:(img).width() - 1, \ + _n1##y = y<(img).height() - 1?y + 1:(img).height() - 1 + +#define cimg_def3x3(img,x,y) \ + cimg_def2x2(img,x,y); \ + int _p1##x = x>1?x - 1:0, \ + _p1##y = y>1?y - 1:0 + +#define cimg_def4x4(img,x,y) \ + cimg_def3x3(img,x,y); \ + int _n2##x = x<(img).width() - 2?x + 2:(img).width() - 1, \ + _n2##y = y<(img).height() - 2?y + 2:(img).height() - 1 + +#define cimg_def5x5(img,x,y) \ + cimg_def4x4(img,x,y); \ + int _p2##x = x>2?x - 2:0, \ + _p2##y = y>2?y - 2:0 + +#define cimg_def6x6(img,x,y) \ + cimg_def5x5(img,x,y); \ + int _n3##x = x<(img).width() - 3?x + 3:(img).width() - 1, \ + _n3##y = y<(img).height() - 3?y + 3:(img).height() - 1 + +#define cimg_def7x7(img,x,y) \ + cimg_def6x6(img,x,y); \ + int _p3##x = x>3?x - 3:0, \ + _p3##y = y>3?y - 3:0 + +#define cimg_def8x8(img,x,y) \ + cimg_def7x7(img,x,y); \ + int _n4##x = x<(img).width() - 4?x + 4:(img).width() - 1, \ + _n4##y = y<(img).height() - 4?y + 4:(img).height() - 1 + +#define cimg_def9x9(img,x,y) \ + cimg_def8x8(img,x,y); \ + int _p4##x = x>4?x - 4:0, \ + _p4##y = y>4?y - 4:0 + +#define cimg_def2x2x2(img,x,y,z) \ + cimg_def2x2(img,x,y); \ + int _n1##z = z<(img).depth() - 1?z + 1:(img).depth() - 1 + +#define cimg_def3x3x3(img,x,y,z) \ + cimg_def2x2x2(img,x,y,z); \ + int _p1##x = x>1?x - 1:0, \ + _p1##y = y>1?y - 1:0, \ + _p1##z = z>1?z - 1:0 + +#define cimg_get2x2(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), \ + I[3] = (T)(img)(_n1##x,_n1##y,z,c) + +#define cimg_get3x3(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[3] = (T)(img)(_p1##x,y,z,c), I[4] = (T)(img)(x,y,z,c), I[5] = (T)(img)(_n1##x,y,z,c), \ + I[6] = (T)(img)(_p1##x,_n1##y,z,c), I[7] = (T)(img)(x,_n1##y,z,c), I[8] = (T)(img)(_n1##x,_n1##y,z,c) + +#define cimg_get4x4(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[3] = (T)(img)(_n2##x,_p1##y,z,c), I[4] = (T)(img)(_p1##x,y,z,c), I[5] = (T)(img)(x,y,z,c), \ + I[6] = (T)(img)(_n1##x,y,z,c), I[7] = (T)(img)(_n2##x,y,z,c), I[8] = (T)(img)(_p1##x,_n1##y,z,c), \ + I[9] = (T)(img)(x,_n1##y,z,c), I[10] = (T)(img)(_n1##x,_n1##y,z,c), I[11] = (T)(img)(_n2##x,_n1##y,z,c), \ + I[12] = (T)(img)(_p1##x,_n2##y,z,c), I[13] = (T)(img)(x,_n2##y,z,c), I[14] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[15] = (T)(img)(_n2##x,_n2##y,z,c) + +#define cimg_get5x5(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), \ + I[3] = (T)(img)(_n1##x,_p2##y,z,c), I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_p2##x,_p1##y,z,c), \ + I[6] = (T)(img)(_p1##x,_p1##y,z,c), I[7] = (T)(img)(x,_p1##y,z,c), I[8] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[9] = (T)(img)(_n2##x,_p1##y,z,c), I[10] = (T)(img)(_p2##x,y,z,c), I[11] = (T)(img)(_p1##x,y,z,c), \ + I[12] = (T)(img)(x,y,z,c), I[13] = (T)(img)(_n1##x,y,z,c), I[14] = (T)(img)(_n2##x,y,z,c), \ + I[15] = (T)(img)(_p2##x,_n1##y,z,c), I[16] = (T)(img)(_p1##x,_n1##y,z,c), I[17] = (T)(img)(x,_n1##y,z,c), \ + I[18] = (T)(img)(_n1##x,_n1##y,z,c), I[19] = (T)(img)(_n2##x,_n1##y,z,c), I[20] = (T)(img)(_p2##x,_n2##y,z,c), \ + I[21] = (T)(img)(_p1##x,_n2##y,z,c), I[22] = (T)(img)(x,_n2##y,z,c), I[23] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[24] = (T)(img)(_n2##x,_n2##y,z,c) + +#define cimg_get6x6(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), \ + I[3] = (T)(img)(_n1##x,_p2##y,z,c), I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_n3##x,_p2##y,z,c), \ + I[6] = (T)(img)(_p2##x,_p1##y,z,c), I[7] = (T)(img)(_p1##x,_p1##y,z,c), I[8] = (T)(img)(x,_p1##y,z,c), \ + I[9] = (T)(img)(_n1##x,_p1##y,z,c), I[10] = (T)(img)(_n2##x,_p1##y,z,c), I[11] = (T)(img)(_n3##x,_p1##y,z,c), \ + I[12] = (T)(img)(_p2##x,y,z,c), I[13] = (T)(img)(_p1##x,y,z,c), I[14] = (T)(img)(x,y,z,c), \ + I[15] = (T)(img)(_n1##x,y,z,c), I[16] = (T)(img)(_n2##x,y,z,c), I[17] = (T)(img)(_n3##x,y,z,c), \ + I[18] = (T)(img)(_p2##x,_n1##y,z,c), I[19] = (T)(img)(_p1##x,_n1##y,z,c), I[20] = (T)(img)(x,_n1##y,z,c), \ + I[21] = (T)(img)(_n1##x,_n1##y,z,c), I[22] = (T)(img)(_n2##x,_n1##y,z,c), I[23] = (T)(img)(_n3##x,_n1##y,z,c), \ + I[24] = (T)(img)(_p2##x,_n2##y,z,c), I[25] = (T)(img)(_p1##x,_n2##y,z,c), I[26] = (T)(img)(x,_n2##y,z,c), \ + I[27] = (T)(img)(_n1##x,_n2##y,z,c), I[28] = (T)(img)(_n2##x,_n2##y,z,c), I[29] = (T)(img)(_n3##x,_n2##y,z,c), \ + I[30] = (T)(img)(_p2##x,_n3##y,z,c), I[31] = (T)(img)(_p1##x,_n3##y,z,c), I[32] = (T)(img)(x,_n3##y,z,c), \ + I[33] = (T)(img)(_n1##x,_n3##y,z,c), I[34] = (T)(img)(_n2##x,_n3##y,z,c), I[35] = (T)(img)(_n3##x,_n3##y,z,c) + +#define cimg_get7x7(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), \ + I[3] = (T)(img)(x,_p3##y,z,c), I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), \ + I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_p3##x,_p2##y,z,c), I[8] = (T)(img)(_p2##x,_p2##y,z,c), \ + I[9] = (T)(img)(_p1##x,_p2##y,z,c), I[10] = (T)(img)(x,_p2##y,z,c), I[11] = (T)(img)(_n1##x,_p2##y,z,c), \ + I[12] = (T)(img)(_n2##x,_p2##y,z,c), I[13] = (T)(img)(_n3##x,_p2##y,z,c), I[14] = (T)(img)(_p3##x,_p1##y,z,c), \ + I[15] = (T)(img)(_p2##x,_p1##y,z,c), I[16] = (T)(img)(_p1##x,_p1##y,z,c), I[17] = (T)(img)(x,_p1##y,z,c), \ + I[18] = (T)(img)(_n1##x,_p1##y,z,c), I[19] = (T)(img)(_n2##x,_p1##y,z,c), I[20] = (T)(img)(_n3##x,_p1##y,z,c), \ + I[21] = (T)(img)(_p3##x,y,z,c), I[22] = (T)(img)(_p2##x,y,z,c), I[23] = (T)(img)(_p1##x,y,z,c), \ + I[24] = (T)(img)(x,y,z,c), I[25] = (T)(img)(_n1##x,y,z,c), I[26] = (T)(img)(_n2##x,y,z,c), \ + I[27] = (T)(img)(_n3##x,y,z,c), I[28] = (T)(img)(_p3##x,_n1##y,z,c), I[29] = (T)(img)(_p2##x,_n1##y,z,c), \ + I[30] = (T)(img)(_p1##x,_n1##y,z,c), I[31] = (T)(img)(x,_n1##y,z,c), I[32] = (T)(img)(_n1##x,_n1##y,z,c), \ + I[33] = (T)(img)(_n2##x,_n1##y,z,c), I[34] = (T)(img)(_n3##x,_n1##y,z,c), I[35] = (T)(img)(_p3##x,_n2##y,z,c), \ + I[36] = (T)(img)(_p2##x,_n2##y,z,c), I[37] = (T)(img)(_p1##x,_n2##y,z,c), I[38] = (T)(img)(x,_n2##y,z,c), \ + I[39] = (T)(img)(_n1##x,_n2##y,z,c), I[40] = (T)(img)(_n2##x,_n2##y,z,c), I[41] = (T)(img)(_n3##x,_n2##y,z,c), \ + I[42] = (T)(img)(_p3##x,_n3##y,z,c), I[43] = (T)(img)(_p2##x,_n3##y,z,c), I[44] = (T)(img)(_p1##x,_n3##y,z,c), \ + I[45] = (T)(img)(x,_n3##y,z,c), I[46] = (T)(img)(_n1##x,_n3##y,z,c), I[47] = (T)(img)(_n2##x,_n3##y,z,c), \ + I[48] = (T)(img)(_n3##x,_n3##y,z,c) + +#define cimg_get8x8(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), \ + I[3] = (T)(img)(x,_p3##y,z,c), I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), \ + I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_n4##x,_p3##y,z,c), I[8] = (T)(img)(_p3##x,_p2##y,z,c), \ + I[9] = (T)(img)(_p2##x,_p2##y,z,c), I[10] = (T)(img)(_p1##x,_p2##y,z,c), I[11] = (T)(img)(x,_p2##y,z,c), \ + I[12] = (T)(img)(_n1##x,_p2##y,z,c), I[13] = (T)(img)(_n2##x,_p2##y,z,c), I[14] = (T)(img)(_n3##x,_p2##y,z,c), \ + I[15] = (T)(img)(_n4##x,_p2##y,z,c), I[16] = (T)(img)(_p3##x,_p1##y,z,c), I[17] = (T)(img)(_p2##x,_p1##y,z,c), \ + I[18] = (T)(img)(_p1##x,_p1##y,z,c), I[19] = (T)(img)(x,_p1##y,z,c), I[20] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[21] = (T)(img)(_n2##x,_p1##y,z,c), I[22] = (T)(img)(_n3##x,_p1##y,z,c), I[23] = (T)(img)(_n4##x,_p1##y,z,c), \ + I[24] = (T)(img)(_p3##x,y,z,c), I[25] = (T)(img)(_p2##x,y,z,c), I[26] = (T)(img)(_p1##x,y,z,c), \ + I[27] = (T)(img)(x,y,z,c), I[28] = (T)(img)(_n1##x,y,z,c), I[29] = (T)(img)(_n2##x,y,z,c), \ + I[30] = (T)(img)(_n3##x,y,z,c), I[31] = (T)(img)(_n4##x,y,z,c), I[32] = (T)(img)(_p3##x,_n1##y,z,c), \ + I[33] = (T)(img)(_p2##x,_n1##y,z,c), I[34] = (T)(img)(_p1##x,_n1##y,z,c), I[35] = (T)(img)(x,_n1##y,z,c), \ + I[36] = (T)(img)(_n1##x,_n1##y,z,c), I[37] = (T)(img)(_n2##x,_n1##y,z,c), I[38] = (T)(img)(_n3##x,_n1##y,z,c), \ + I[39] = (T)(img)(_n4##x,_n1##y,z,c), I[40] = (T)(img)(_p3##x,_n2##y,z,c), I[41] = (T)(img)(_p2##x,_n2##y,z,c), \ + I[42] = (T)(img)(_p1##x,_n2##y,z,c), I[43] = (T)(img)(x,_n2##y,z,c), I[44] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[45] = (T)(img)(_n2##x,_n2##y,z,c), I[46] = (T)(img)(_n3##x,_n2##y,z,c), I[47] = (T)(img)(_n4##x,_n2##y,z,c), \ + I[48] = (T)(img)(_p3##x,_n3##y,z,c), I[49] = (T)(img)(_p2##x,_n3##y,z,c), I[50] = (T)(img)(_p1##x,_n3##y,z,c), \ + I[51] = (T)(img)(x,_n3##y,z,c), I[52] = (T)(img)(_n1##x,_n3##y,z,c), I[53] = (T)(img)(_n2##x,_n3##y,z,c), \ + I[54] = (T)(img)(_n3##x,_n3##y,z,c), I[55] = (T)(img)(_n4##x,_n3##y,z,c), I[56] = (T)(img)(_p3##x,_n4##y,z,c), \ + I[57] = (T)(img)(_p2##x,_n4##y,z,c), I[58] = (T)(img)(_p1##x,_n4##y,z,c), I[59] = (T)(img)(x,_n4##y,z,c), \ + I[60] = (T)(img)(_n1##x,_n4##y,z,c), I[61] = (T)(img)(_n2##x,_n4##y,z,c), I[62] = (T)(img)(_n3##x,_n4##y,z,c), \ + I[63] = (T)(img)(_n4##x,_n4##y,z,c); + +#define cimg_get9x9(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p4##x,_p4##y,z,c), I[1] = (T)(img)(_p3##x,_p4##y,z,c), I[2] = (T)(img)(_p2##x,_p4##y,z,c), \ + I[3] = (T)(img)(_p1##x,_p4##y,z,c), I[4] = (T)(img)(x,_p4##y,z,c), I[5] = (T)(img)(_n1##x,_p4##y,z,c), \ + I[6] = (T)(img)(_n2##x,_p4##y,z,c), I[7] = (T)(img)(_n3##x,_p4##y,z,c), I[8] = (T)(img)(_n4##x,_p4##y,z,c), \ + I[9] = (T)(img)(_p4##x,_p3##y,z,c), I[10] = (T)(img)(_p3##x,_p3##y,z,c), I[11] = (T)(img)(_p2##x,_p3##y,z,c), \ + I[12] = (T)(img)(_p1##x,_p3##y,z,c), I[13] = (T)(img)(x,_p3##y,z,c), I[14] = (T)(img)(_n1##x,_p3##y,z,c), \ + I[15] = (T)(img)(_n2##x,_p3##y,z,c), I[16] = (T)(img)(_n3##x,_p3##y,z,c), I[17] = (T)(img)(_n4##x,_p3##y,z,c), \ + I[18] = (T)(img)(_p4##x,_p2##y,z,c), I[19] = (T)(img)(_p3##x,_p2##y,z,c), I[20] = (T)(img)(_p2##x,_p2##y,z,c), \ + I[21] = (T)(img)(_p1##x,_p2##y,z,c), I[22] = (T)(img)(x,_p2##y,z,c), I[23] = (T)(img)(_n1##x,_p2##y,z,c), \ + I[24] = (T)(img)(_n2##x,_p2##y,z,c), I[25] = (T)(img)(_n3##x,_p2##y,z,c), I[26] = (T)(img)(_n4##x,_p2##y,z,c), \ + I[27] = (T)(img)(_p4##x,_p1##y,z,c), I[28] = (T)(img)(_p3##x,_p1##y,z,c), I[29] = (T)(img)(_p2##x,_p1##y,z,c), \ + I[30] = (T)(img)(_p1##x,_p1##y,z,c), I[31] = (T)(img)(x,_p1##y,z,c), I[32] = (T)(img)(_n1##x,_p1##y,z,c), \ + I[33] = (T)(img)(_n2##x,_p1##y,z,c), I[34] = (T)(img)(_n3##x,_p1##y,z,c), I[35] = (T)(img)(_n4##x,_p1##y,z,c), \ + I[36] = (T)(img)(_p4##x,y,z,c), I[37] = (T)(img)(_p3##x,y,z,c), I[38] = (T)(img)(_p2##x,y,z,c), \ + I[39] = (T)(img)(_p1##x,y,z,c), I[40] = (T)(img)(x,y,z,c), I[41] = (T)(img)(_n1##x,y,z,c), \ + I[42] = (T)(img)(_n2##x,y,z,c), I[43] = (T)(img)(_n3##x,y,z,c), I[44] = (T)(img)(_n4##x,y,z,c), \ + I[45] = (T)(img)(_p4##x,_n1##y,z,c), I[46] = (T)(img)(_p3##x,_n1##y,z,c), I[47] = (T)(img)(_p2##x,_n1##y,z,c), \ + I[48] = (T)(img)(_p1##x,_n1##y,z,c), I[49] = (T)(img)(x,_n1##y,z,c), I[50] = (T)(img)(_n1##x,_n1##y,z,c), \ + I[51] = (T)(img)(_n2##x,_n1##y,z,c), I[52] = (T)(img)(_n3##x,_n1##y,z,c), I[53] = (T)(img)(_n4##x,_n1##y,z,c), \ + I[54] = (T)(img)(_p4##x,_n2##y,z,c), I[55] = (T)(img)(_p3##x,_n2##y,z,c), I[56] = (T)(img)(_p2##x,_n2##y,z,c), \ + I[57] = (T)(img)(_p1##x,_n2##y,z,c), I[58] = (T)(img)(x,_n2##y,z,c), I[59] = (T)(img)(_n1##x,_n2##y,z,c), \ + I[60] = (T)(img)(_n2##x,_n2##y,z,c), I[61] = (T)(img)(_n3##x,_n2##y,z,c), I[62] = (T)(img)(_n4##x,_n2##y,z,c), \ + I[63] = (T)(img)(_p4##x,_n3##y,z,c), I[64] = (T)(img)(_p3##x,_n3##y,z,c), I[65] = (T)(img)(_p2##x,_n3##y,z,c), \ + I[66] = (T)(img)(_p1##x,_n3##y,z,c), I[67] = (T)(img)(x,_n3##y,z,c), I[68] = (T)(img)(_n1##x,_n3##y,z,c), \ + I[69] = (T)(img)(_n2##x,_n3##y,z,c), I[70] = (T)(img)(_n3##x,_n3##y,z,c), I[71] = (T)(img)(_n4##x,_n3##y,z,c), \ + I[72] = (T)(img)(_p4##x,_n4##y,z,c), I[73] = (T)(img)(_p3##x,_n4##y,z,c), I[74] = (T)(img)(_p2##x,_n4##y,z,c), \ + I[75] = (T)(img)(_p1##x,_n4##y,z,c), I[76] = (T)(img)(x,_n4##y,z,c), I[77] = (T)(img)(_n1##x,_n4##y,z,c), \ + I[78] = (T)(img)(_n2##x,_n4##y,z,c), I[79] = (T)(img)(_n3##x,_n4##y,z,c), I[80] = (T)(img)(_n4##x,_n4##y,z,c) + +#define cimg_get2x2x2(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), \ + I[3] = (T)(img)(_n1##x,_n1##y,z,c), I[4] = (T)(img)(x,y,_n1##z,c), I[5] = (T)(img)(_n1##x,y,_n1##z,c), \ + I[6] = (T)(img)(x,_n1##y,_n1##z,c), I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c) + +#define cimg_get3x3x3(img,x,y,z,c,I,T) \ + I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[1] = (T)(img)(x,_p1##y,_p1##z,c), \ + I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c), I[3] = (T)(img)(_p1##x,y,_p1##z,c), I[4] = (T)(img)(x,y,_p1##z,c), \ + I[5] = (T)(img)(_n1##x,y,_p1##z,c), I[6] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[7] = (T)(img)(x,_n1##y,_p1##z,c), \ + I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c), I[9] = (T)(img)(_p1##x,_p1##y,z,c), I[10] = (T)(img)(x,_p1##y,z,c), \ + I[11] = (T)(img)(_n1##x,_p1##y,z,c), I[12] = (T)(img)(_p1##x,y,z,c), I[13] = (T)(img)(x,y,z,c), \ + I[14] = (T)(img)(_n1##x,y,z,c), I[15] = (T)(img)(_p1##x,_n1##y,z,c), I[16] = (T)(img)(x,_n1##y,z,c), \ + I[17] = (T)(img)(_n1##x,_n1##y,z,c), I[18] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[19] = (T)(img)(x,_p1##y,_n1##z,c), \ + I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c), I[21] = (T)(img)(_p1##x,y,_n1##z,c), I[22] = (T)(img)(x,y,_n1##z,c), \ + I[23] = (T)(img)(_n1##x,y,_n1##z,c), I[24] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[25] = (T)(img)(x,_n1##y,_n1##z,c), \ + I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c) + +// Macros to perform various image loops. +// +// These macros are simpler to use than loops with C++ iterators. +#define cimg_for(img,ptrs,T_ptrs) \ + for (T_ptrs *ptrs = (img)._data, *_max##ptrs = (img)._data + (img).size(); ptrs<_max##ptrs; ++ptrs) +#define cimg_rof(img,ptrs,T_ptrs) for (T_ptrs *ptrs = (img)._data + (img).size() - 1; ptrs>=(img)._data; --ptrs) +#define cimg_foroff(img,off) for (cimg_ulong off = 0, _max##off = (img).size(); off<_max##off; ++off) +#define cimg_rofoff(img,off) for (cimg_long off = (cimg_long)((img).size() - 1); off>=0; --off) + +#define cimg_for1(bound,i) for (int i = 0; i<(int)(bound); ++i) +#define cimg_forX(img,x) cimg_for1((img)._width,x) +#define cimg_forY(img,y) cimg_for1((img)._height,y) +#define cimg_forZ(img,z) cimg_for1((img)._depth,z) +#define cimg_forC(img,c) cimg_for1((img)._spectrum,c) +#define cimg_forXY(img,x,y) cimg_forY(img,y) cimg_forX(img,x) +#define cimg_forXZ(img,x,z) cimg_forZ(img,z) cimg_forX(img,x) +#define cimg_forYZ(img,y,z) cimg_forZ(img,z) cimg_forY(img,y) +#define cimg_forXC(img,x,c) cimg_forC(img,c) cimg_forX(img,x) +#define cimg_forYC(img,y,c) cimg_forC(img,c) cimg_forY(img,y) +#define cimg_forZC(img,z,c) cimg_forC(img,c) cimg_forZ(img,z) +#define cimg_forXYZ(img,x,y,z) cimg_forZ(img,z) cimg_forXY(img,x,y) +#define cimg_forXYC(img,x,y,c) cimg_forC(img,c) cimg_forXY(img,x,y) +#define cimg_forXZC(img,x,z,c) cimg_forC(img,c) cimg_forXZ(img,x,z) +#define cimg_forYZC(img,y,z,c) cimg_forC(img,c) cimg_forYZ(img,y,z) +#define cimg_forXYZC(img,x,y,z,c) cimg_forC(img,c) cimg_forXYZ(img,x,y,z) + +#define cimg_rof1(bound,i) for (int i = (int)(bound) - 1; i>=0; --i) +#define cimg_rofX(img,x) cimg_rof1((img)._width,x) +#define cimg_rofY(img,y) cimg_rof1((img)._height,y) +#define cimg_rofZ(img,z) cimg_rof1((img)._depth,z) +#define cimg_rofC(img,c) cimg_rof1((img)._spectrum,c) +#define cimg_rofXY(img,x,y) cimg_rofY(img,y) cimg_rofX(img,x) +#define cimg_rofXZ(img,x,z) cimg_rofZ(img,z) cimg_rofX(img,x) +#define cimg_rofYZ(img,y,z) cimg_rofZ(img,z) cimg_rofY(img,y) +#define cimg_rofXC(img,x,c) cimg_rofC(img,c) cimg_rofX(img,x) +#define cimg_rofYC(img,y,c) cimg_rofC(img,c) cimg_rofY(img,y) +#define cimg_rofZC(img,z,c) cimg_rofC(img,c) cimg_rofZ(img,z) +#define cimg_rofXYZ(img,x,y,z) cimg_rofZ(img,z) cimg_rofXY(img,x,y) +#define cimg_rofXYC(img,x,y,c) cimg_rofC(img,c) cimg_rofXY(img,x,y) +#define cimg_rofXZC(img,x,z,c) cimg_rofC(img,c) cimg_rofXZ(img,x,z) +#define cimg_rofYZC(img,y,z,c) cimg_rofC(img,c) cimg_rofYZ(img,y,z) +#define cimg_rofXYZC(img,x,y,z,c) cimg_rofC(img,c) cimg_rofXYZ(img,x,y,z) + +#define cimg_for_in1(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), _max##i = (int)(i1)<(int)(bound)?(int)(i1):(int)(bound) - 1; i<=_max##i; ++i) +#define cimg_for_inX(img,x0,x1,x) cimg_for_in1((img)._width,x0,x1,x) +#define cimg_for_inY(img,y0,y1,y) cimg_for_in1((img)._height,y0,y1,y) +#define cimg_for_inZ(img,z0,z1,z) cimg_for_in1((img)._depth,z0,z1,z) +#define cimg_for_inC(img,c0,c1,c) cimg_for_in1((img)._spectrum,c0,c1,c) +#define cimg_for_inXY(img,x0,y0,x1,y1,x,y) cimg_for_inY(img,y0,y1,y) cimg_for_inX(img,x0,x1,x) +#define cimg_for_inXZ(img,x0,z0,x1,z1,x,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inX(img,x0,x1,x) +#define cimg_for_inXC(img,x0,c0,x1,c1,x,c) cimg_for_inC(img,c0,c1,c) cimg_for_inX(img,x0,x1,x) +#define cimg_for_inYZ(img,y0,z0,y1,z1,y,z) cimg_for_inZ(img,x0,z1,z) cimg_for_inY(img,y0,y1,y) +#define cimg_for_inYC(img,y0,c0,y1,c1,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inY(img,y0,y1,y) +#define cimg_for_inZC(img,z0,c0,z1,c1,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inZ(img,z0,z1,z) +#define cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inXY(img,x0,y0,x1,y1,x,y) +#define cimg_for_inXYC(img,x0,y0,c0,x1,y1,c1,x,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXY(img,x0,y0,x1,y1,x,y) +#define cimg_for_inXZC(img,x0,z0,c0,x1,z1,c1,x,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXZ(img,x0,z0,x1,z1,x,z) +#define cimg_for_inYZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inYZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_inXYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_inC(img,c0,c1,c) cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) +#define cimg_for_insideX(img,x,n) cimg_for_inX(img,n,(img)._width - 1 - (n),x) +#define cimg_for_insideY(img,y,n) cimg_for_inY(img,n,(img)._height - 1 - (n),y) +#define cimg_for_insideZ(img,z,n) cimg_for_inZ(img,n,(img)._depth - 1 - (n),z) +#define cimg_for_insideC(img,c,n) cimg_for_inC(img,n,(img)._spectrum - 1 - (n),c) +#define cimg_for_insideXY(img,x,y,n) cimg_for_inXY(img,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),x,y) +#define cimg_for_insideXYZ(img,x,y,z,n) \ + cimg_for_inXYZ(img,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),(img)._depth - 1 - (n),x,y,z) +#define cimg_for_insideXYZC(img,x,y,z,c,n) \ + cimg_for_inXYZ(img,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),(img)._depth - 1 - (n),x,y,z) + +#define cimg_for_out1(boundi,i0,i1,i) \ + for (int i = (int)(i0)>0?0:(int)(i1) + 1; i<(int)(boundi); ++i, i = i==(int)(i0)?(int)(i1) + 1:i) +#define cimg_for_out2(boundi,boundj,i0,j0,i1,j1,i,j) \ + for (int j = 0; j<(int)(boundj); ++j) \ + for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j?0:(int)(i0)>0?0:(int)(i1) + 1; i<(int)(boundi); \ + ++i, i = _n1j?i:(i==(int)(i0)?(int)(i1) + 1:i)) +#define cimg_for_out3(boundi,boundj,boundk,i0,j0,k0,i1,j1,k1,i,j,k) \ + for (int k = 0; k<(int)(boundk); ++k) \ + for (int _n1k = (int)(k<(int)(k0) || k>(int)(k1)), j = 0; j<(int)(boundj); ++j) \ + for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j || _n1k?0:(int)(i0)>0?0:(int)(i1) + 1; i<(int)(boundi); \ + ++i, i = _n1j || _n1k?i:(i==(int)(i0)?(int)(i1) + 1:i)) +#define cimg_for_out4(boundi,boundj,boundk,boundl,i0,j0,k0,l0,i1,j1,k1,l1,i,j,k,l) \ + for (int l = 0; l<(int)(boundl); ++l) \ + for (int _n1l = (int)(l<(int)(l0) || l>(int)(l1)), k = 0; k<(int)(boundk); ++k) \ + for (int _n1k = (int)(k<(int)(k0) || k>(int)(k1)), j = 0; j<(int)(boundj); ++j) \ + for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j || _n1k || _n1l?0:(int)(i0)>0?0:(int)(i1) + 1; \ + i<(int)(boundi); ++i, i = _n1j || _n1k || _n1l?i:(i==(int)(i0)?(int)(i1) + 1:i)) +#define cimg_for_outX(img,x0,x1,x) cimg_for_out1((img)._width,x0,x1,x) +#define cimg_for_outY(img,y0,y1,y) cimg_for_out1((img)._height,y0,y1,y) +#define cimg_for_outZ(img,z0,z1,z) cimg_for_out1((img)._depth,z0,z1,z) +#define cimg_for_outC(img,c0,c1,c) cimg_for_out1((img)._spectrum,c0,c1,c) +#define cimg_for_outXY(img,x0,y0,x1,y1,x,y) cimg_for_out2((img)._width,(img)._height,x0,y0,x1,y1,x,y) +#define cimg_for_outXZ(img,x0,z0,x1,z1,x,z) cimg_for_out2((img)._width,(img)._depth,x0,z0,x1,z1,x,z) +#define cimg_for_outXC(img,x0,c0,x1,c1,x,c) cimg_for_out2((img)._width,(img)._spectrum,x0,c0,x1,c1,x,c) +#define cimg_for_outYZ(img,y0,z0,y1,z1,y,z) cimg_for_out2((img)._height,(img)._depth,y0,z0,y1,z1,y,z) +#define cimg_for_outYC(img,y0,c0,y1,c1,y,c) cimg_for_out2((img)._height,(img)._spectrum,y0,c0,y1,c1,y,c) +#define cimg_for_outZC(img,z0,c0,z1,c1,z,c) cimg_for_out2((img)._depth,(img)._spectrum,z0,c0,z1,c1,z,c) +#define cimg_for_outXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) \ + cimg_for_out3((img)._width,(img)._height,(img)._depth,x0,y0,z0,x1,y1,z1,x,y,z) +#define cimg_for_outXYC(img,x0,y0,c0,x1,y1,c1,x,y,c) \ + cimg_for_out3((img)._width,(img)._height,(img)._spectrum,x0,y0,c0,x1,y1,c1,x,y,c) +#define cimg_for_outXZC(img,x0,z0,c0,x1,z1,c1,x,z,c) \ + cimg_for_out3((img)._width,(img)._depth,(img)._spectrum,x0,z0,c0,x1,z1,c1,x,z,c) +#define cimg_for_outYZC(img,y0,z0,c0,y1,z1,c1,y,z,c) \ + cimg_for_out3((img)._height,(img)._depth,(img)._spectrum,y0,z0,c0,y1,z1,c1,y,z,c) +#define cimg_for_outXYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_out4((img)._width,(img)._height,(img)._depth,(img)._spectrum,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) +#define cimg_for_borderX(img,x,n) cimg_for_outX(img,n,(img)._width - 1 - (n),x) +#define cimg_for_borderY(img,y,n) cimg_for_outY(img,n,(img)._height - 1 - (n),y) +#define cimg_for_borderZ(img,z,n) cimg_for_outZ(img,n,(img)._depth - 1 - (n),z) +#define cimg_for_borderC(img,c,n) cimg_for_outC(img,n,(img)._spectrum - 1 - (n),c) +#define cimg_for_borderXY(img,x,y,n) cimg_for_outXY(img,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),x,y) +#define cimg_for_borderXYZ(img,x,y,z,n) \ + cimg_for_outXYZ(img,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n),(img)._depth - 1 - (n),x,y,z) +#define cimg_for_borderXYZC(img,x,y,z,c,n) \ + cimg_for_outXYZC(img,n,n,n,n,(img)._width - 1 - (n),(img)._height - 1 - (n), \ + (img)._depth - 1 - (n),(img)._spectrum - 1 - (n),x,y,z,c) + +#define cimg_for_spiralXY(img,x,y) \ + for (int x = 0, y = 0, _n1##x = 1, _n1##y = (img).width()*(img).height(); _n1##y; \ + --_n1##y, _n1##x+=(_n1##x>>2) - ((!(_n1##x&3)?--y:((_n1##x&3)==1?(img)._width - 1 - ++x:\ + ((_n1##x&3)==2?(img)._height - 1 - ++y:--x))))?0:1) + +#define cimg_for_lineXY(x,y,x0,y0,x1,y1) \ + for (int x = (int)(x0), y = (int)(y0), _sx = 1, _sy = 1, _steep = 0, \ + _dx=(x1)>(x0)?(int)(x1) - (int)(x0):(_sx=-1,(int)(x0) - (int)(x1)), \ + _dy=(y1)>(y0)?(int)(y1) - (int)(y0):(_sy=-1,(int)(y0) - (int)(y1)), \ + _counter = _dx, \ + _err = _dx>_dy?(_dy>>1):((_steep=1),(_counter=_dy),(_dx>>1)); \ + _counter>=0; \ + --_counter, x+=_steep? \ + (y+=_sy,(_err-=_dx)<0?_err+=_dy,_sx:0): \ + (y+=(_err-=_dy)<0?_err+=_dx,_sy:0,_sx)) + +#define cimg_for2(bound,i) \ + for (int i = 0, _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + ++i, ++_n1##i) +#define cimg_for2X(img,x) cimg_for2((img)._width,x) +#define cimg_for2Y(img,y) cimg_for2((img)._height,y) +#define cimg_for2Z(img,z) cimg_for2((img)._depth,z) +#define cimg_for2C(img,c) cimg_for2((img)._spectrum,c) +#define cimg_for2XY(img,x,y) cimg_for2Y(img,y) cimg_for2X(img,x) +#define cimg_for2XZ(img,x,z) cimg_for2Z(img,z) cimg_for2X(img,x) +#define cimg_for2XC(img,x,c) cimg_for2C(img,c) cimg_for2X(img,x) +#define cimg_for2YZ(img,y,z) cimg_for2Z(img,z) cimg_for2Y(img,y) +#define cimg_for2YC(img,y,c) cimg_for2C(img,c) cimg_for2Y(img,y) +#define cimg_for2ZC(img,z,c) cimg_for2C(img,c) cimg_for2Z(img,z) +#define cimg_for2XYZ(img,x,y,z) cimg_for2Z(img,z) cimg_for2XY(img,x,y) +#define cimg_for2XZC(img,x,z,c) cimg_for2C(img,c) cimg_for2XZ(img,x,z) +#define cimg_for2YZC(img,y,z,c) cimg_for2C(img,c) cimg_for2YZ(img,y,z) +#define cimg_for2XYZC(img,x,y,z,c) cimg_for2C(img,c) cimg_for2XYZ(img,x,y,z) + +#define cimg_for_in2(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1; \ + i<=(int)(i1) && (_n1##i<(int)(bound) || i==--_n1##i); \ + ++i, ++_n1##i) +#define cimg_for_in2X(img,x0,x1,x) cimg_for_in2((img)._width,x0,x1,x) +#define cimg_for_in2Y(img,y0,y1,y) cimg_for_in2((img)._height,y0,y1,y) +#define cimg_for_in2Z(img,z0,z1,z) cimg_for_in2((img)._depth,z0,z1,z) +#define cimg_for_in2C(img,c0,c1,c) cimg_for_in2((img)._spectrum,c0,c1,c) +#define cimg_for_in2XY(img,x0,y0,x1,y1,x,y) cimg_for_in2Y(img,y0,y1,y) cimg_for_in2X(img,x0,x1,x) +#define cimg_for_in2XZ(img,x0,z0,x1,z1,x,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2X(img,x0,x1,x) +#define cimg_for_in2XC(img,x0,c0,x1,c1,x,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2X(img,x0,x1,x) +#define cimg_for_in2YZ(img,y0,z0,y1,z1,y,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2Y(img,y0,y1,y) +#define cimg_for_in2YC(img,y0,c0,y1,c1,y,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2Y(img,y0,y1,y) +#define cimg_for_in2ZC(img,z0,c0,z1,c1,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2Z(img,z0,z1,z) +#define cimg_for_in2XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in2XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in2YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in2XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in2C(img,c0,c1,c) cimg_for_in2XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for3(bound,i) \ + for (int i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + _p1##i = i++, ++_n1##i) +#define cimg_for3X(img,x) cimg_for3((img)._width,x) +#define cimg_for3Y(img,y) cimg_for3((img)._height,y) +#define cimg_for3Z(img,z) cimg_for3((img)._depth,z) +#define cimg_for3C(img,c) cimg_for3((img)._spectrum,c) +#define cimg_for3XY(img,x,y) cimg_for3Y(img,y) cimg_for3X(img,x) +#define cimg_for3XZ(img,x,z) cimg_for3Z(img,z) cimg_for3X(img,x) +#define cimg_for3XC(img,x,c) cimg_for3C(img,c) cimg_for3X(img,x) +#define cimg_for3YZ(img,y,z) cimg_for3Z(img,z) cimg_for3Y(img,y) +#define cimg_for3YC(img,y,c) cimg_for3C(img,c) cimg_for3Y(img,y) +#define cimg_for3ZC(img,z,c) cimg_for3C(img,c) cimg_for3Z(img,z) +#define cimg_for3XYZ(img,x,y,z) cimg_for3Z(img,z) cimg_for3XY(img,x,y) +#define cimg_for3XZC(img,x,z,c) cimg_for3C(img,c) cimg_for3XZ(img,x,z) +#define cimg_for3YZC(img,y,z,c) cimg_for3C(img,c) cimg_for3YZ(img,y,z) +#define cimg_for3XYZC(img,x,y,z,c) cimg_for3C(img,c) cimg_for3XYZ(img,x,y,z) + +#define cimg_for_in3(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1; \ + i<=(int)(i1) && (_n1##i<(int)(bound) || i==--_n1##i); \ + _p1##i = i++, ++_n1##i) +#define cimg_for_in3X(img,x0,x1,x) cimg_for_in3((img)._width,x0,x1,x) +#define cimg_for_in3Y(img,y0,y1,y) cimg_for_in3((img)._height,y0,y1,y) +#define cimg_for_in3Z(img,z0,z1,z) cimg_for_in3((img)._depth,z0,z1,z) +#define cimg_for_in3C(img,c0,c1,c) cimg_for_in3((img)._spectrum,c0,c1,c) +#define cimg_for_in3XY(img,x0,y0,x1,y1,x,y) cimg_for_in3Y(img,y0,y1,y) cimg_for_in3X(img,x0,x1,x) +#define cimg_for_in3XZ(img,x0,z0,x1,z1,x,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3X(img,x0,x1,x) +#define cimg_for_in3XC(img,x0,c0,x1,c1,x,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3X(img,x0,x1,x) +#define cimg_for_in3YZ(img,y0,z0,y1,z1,y,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3Y(img,y0,y1,y) +#define cimg_for_in3YC(img,y0,c0,y1,c1,y,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3Y(img,y0,y1,y) +#define cimg_for_in3ZC(img,z0,c0,z1,c1,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3Z(img,z0,z1,z) +#define cimg_for_in3XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in3XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in3YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in3XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in3C(img,c0,c1,c) cimg_for_in3XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for4(bound,i) \ + for (int i = 0, _p1##i = 0, _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2; \ + _n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i); \ + _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for4X(img,x) cimg_for4((img)._width,x) +#define cimg_for4Y(img,y) cimg_for4((img)._height,y) +#define cimg_for4Z(img,z) cimg_for4((img)._depth,z) +#define cimg_for4C(img,c) cimg_for4((img)._spectrum,c) +#define cimg_for4XY(img,x,y) cimg_for4Y(img,y) cimg_for4X(img,x) +#define cimg_for4XZ(img,x,z) cimg_for4Z(img,z) cimg_for4X(img,x) +#define cimg_for4XC(img,x,c) cimg_for4C(img,c) cimg_for4X(img,x) +#define cimg_for4YZ(img,y,z) cimg_for4Z(img,z) cimg_for4Y(img,y) +#define cimg_for4YC(img,y,c) cimg_for4C(img,c) cimg_for4Y(img,y) +#define cimg_for4ZC(img,z,c) cimg_for4C(img,c) cimg_for4Z(img,z) +#define cimg_for4XYZ(img,x,y,z) cimg_for4Z(img,z) cimg_for4XY(img,x,y) +#define cimg_for4XZC(img,x,z,c) cimg_for4C(img,c) cimg_for4XZ(img,x,z) +#define cimg_for4YZC(img,y,z,c) cimg_for4C(img,c) cimg_for4YZ(img,y,z) +#define cimg_for4XYZC(img,x,y,z,c) cimg_for4C(img,c) cimg_for4XYZ(img,x,y,z) + +#define cimg_for_in4(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2; \ + i<=(int)(i1) && (_n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i)); \ + _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for_in4X(img,x0,x1,x) cimg_for_in4((img)._width,x0,x1,x) +#define cimg_for_in4Y(img,y0,y1,y) cimg_for_in4((img)._height,y0,y1,y) +#define cimg_for_in4Z(img,z0,z1,z) cimg_for_in4((img)._depth,z0,z1,z) +#define cimg_for_in4C(img,c0,c1,c) cimg_for_in4((img)._spectrum,c0,c1,c) +#define cimg_for_in4XY(img,x0,y0,x1,y1,x,y) cimg_for_in4Y(img,y0,y1,y) cimg_for_in4X(img,x0,x1,x) +#define cimg_for_in4XZ(img,x0,z0,x1,z1,x,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4X(img,x0,x1,x) +#define cimg_for_in4XC(img,x0,c0,x1,c1,x,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4X(img,x0,x1,x) +#define cimg_for_in4YZ(img,y0,z0,y1,z1,y,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4Y(img,y0,y1,y) +#define cimg_for_in4YC(img,y0,c0,y1,c1,y,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4Y(img,y0,y1,y) +#define cimg_for_in4ZC(img,z0,c0,z1,c1,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4Z(img,z0,z1,z) +#define cimg_for_in4XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in4XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in4YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in4XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in4C(img,c0,c1,c) cimg_for_in4XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for5(bound,i) \ + for (int i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2; \ + _n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for5X(img,x) cimg_for5((img)._width,x) +#define cimg_for5Y(img,y) cimg_for5((img)._height,y) +#define cimg_for5Z(img,z) cimg_for5((img)._depth,z) +#define cimg_for5C(img,c) cimg_for5((img)._spectrum,c) +#define cimg_for5XY(img,x,y) cimg_for5Y(img,y) cimg_for5X(img,x) +#define cimg_for5XZ(img,x,z) cimg_for5Z(img,z) cimg_for5X(img,x) +#define cimg_for5XC(img,x,c) cimg_for5C(img,c) cimg_for5X(img,x) +#define cimg_for5YZ(img,y,z) cimg_for5Z(img,z) cimg_for5Y(img,y) +#define cimg_for5YC(img,y,c) cimg_for5C(img,c) cimg_for5Y(img,y) +#define cimg_for5ZC(img,z,c) cimg_for5C(img,c) cimg_for5Z(img,z) +#define cimg_for5XYZ(img,x,y,z) cimg_for5Z(img,z) cimg_for5XY(img,x,y) +#define cimg_for5XZC(img,x,z,c) cimg_for5C(img,c) cimg_for5XZ(img,x,z) +#define cimg_for5YZC(img,y,z,c) cimg_for5C(img,c) cimg_for5YZ(img,y,z) +#define cimg_for5XYZC(img,x,y,z,c) cimg_for5C(img,c) cimg_for5XYZ(img,x,y,z) + +#define cimg_for_in5(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2; \ + i<=(int)(i1) && (_n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i)); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i) +#define cimg_for_in5X(img,x0,x1,x) cimg_for_in5((img)._width,x0,x1,x) +#define cimg_for_in5Y(img,y0,y1,y) cimg_for_in5((img)._height,y0,y1,y) +#define cimg_for_in5Z(img,z0,z1,z) cimg_for_in5((img)._depth,z0,z1,z) +#define cimg_for_in5C(img,c0,c1,c) cimg_for_in5((img)._spectrum,c0,c1,c) +#define cimg_for_in5XY(img,x0,y0,x1,y1,x,y) cimg_for_in5Y(img,y0,y1,y) cimg_for_in5X(img,x0,x1,x) +#define cimg_for_in5XZ(img,x0,z0,x1,z1,x,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5X(img,x0,x1,x) +#define cimg_for_in5XC(img,x0,c0,x1,c1,x,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5X(img,x0,x1,x) +#define cimg_for_in5YZ(img,y0,z0,y1,z1,y,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5Y(img,y0,y1,y) +#define cimg_for_in5YC(img,y0,c0,y1,c1,y,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5Y(img,y0,y1,y) +#define cimg_for_in5ZC(img,z0,c0,z1,c1,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5Z(img,z0,z1,z) +#define cimg_for_in5XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in5XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in5YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in5XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in5C(img,c0,c1,c) cimg_for_in5XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for6(bound,i) \ + for (int i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(bound)?(int)(bound) - 1:3; \ + _n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for6X(img,x) cimg_for6((img)._width,x) +#define cimg_for6Y(img,y) cimg_for6((img)._height,y) +#define cimg_for6Z(img,z) cimg_for6((img)._depth,z) +#define cimg_for6C(img,c) cimg_for6((img)._spectrum,c) +#define cimg_for6XY(img,x,y) cimg_for6Y(img,y) cimg_for6X(img,x) +#define cimg_for6XZ(img,x,z) cimg_for6Z(img,z) cimg_for6X(img,x) +#define cimg_for6XC(img,x,c) cimg_for6C(img,c) cimg_for6X(img,x) +#define cimg_for6YZ(img,y,z) cimg_for6Z(img,z) cimg_for6Y(img,y) +#define cimg_for6YC(img,y,c) cimg_for6C(img,c) cimg_for6Y(img,y) +#define cimg_for6ZC(img,z,c) cimg_for6C(img,c) cimg_for6Z(img,z) +#define cimg_for6XYZ(img,x,y,z) cimg_for6Z(img,z) cimg_for6XY(img,x,y) +#define cimg_for6XZC(img,x,z,c) cimg_for6C(img,c) cimg_for6XZ(img,x,z) +#define cimg_for6YZC(img,y,z,c) cimg_for6C(img,c) cimg_for6YZ(img,y,z) +#define cimg_for6XYZC(img,x,y,z,c) cimg_for6C(img,c) cimg_for6XYZ(img,x,y,z) + +#define cimg_for_in6(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3; \ + i<=(int)(i1) && \ + (_n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i)); \ + _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for_in6X(img,x0,x1,x) cimg_for_in6((img)._width,x0,x1,x) +#define cimg_for_in6Y(img,y0,y1,y) cimg_for_in6((img)._height,y0,y1,y) +#define cimg_for_in6Z(img,z0,z1,z) cimg_for_in6((img)._depth,z0,z1,z) +#define cimg_for_in6C(img,c0,c1,c) cimg_for_in6((img)._spectrum,c0,c1,c) +#define cimg_for_in6XY(img,x0,y0,x1,y1,x,y) cimg_for_in6Y(img,y0,y1,y) cimg_for_in6X(img,x0,x1,x) +#define cimg_for_in6XZ(img,x0,z0,x1,z1,x,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6X(img,x0,x1,x) +#define cimg_for_in6XC(img,x0,c0,x1,c1,x,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6X(img,x0,x1,x) +#define cimg_for_in6YZ(img,y0,z0,y1,z1,y,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6Y(img,y0,y1,y) +#define cimg_for_in6YC(img,y0,c0,y1,c1,y,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6Y(img,y0,y1,y) +#define cimg_for_in6ZC(img,z0,c0,z1,c1,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6Z(img,z0,z1,z) +#define cimg_for_in6XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in6XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in6YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in6XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in6C(img,c0,c1,c) cimg_for_in6XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for7(bound,i) \ + for (int i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(bound)?(int)(bound) - 1:3; \ + _n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for7X(img,x) cimg_for7((img)._width,x) +#define cimg_for7Y(img,y) cimg_for7((img)._height,y) +#define cimg_for7Z(img,z) cimg_for7((img)._depth,z) +#define cimg_for7C(img,c) cimg_for7((img)._spectrum,c) +#define cimg_for7XY(img,x,y) cimg_for7Y(img,y) cimg_for7X(img,x) +#define cimg_for7XZ(img,x,z) cimg_for7Z(img,z) cimg_for7X(img,x) +#define cimg_for7XC(img,x,c) cimg_for7C(img,c) cimg_for7X(img,x) +#define cimg_for7YZ(img,y,z) cimg_for7Z(img,z) cimg_for7Y(img,y) +#define cimg_for7YC(img,y,c) cimg_for7C(img,c) cimg_for7Y(img,y) +#define cimg_for7ZC(img,z,c) cimg_for7C(img,c) cimg_for7Z(img,z) +#define cimg_for7XYZ(img,x,y,z) cimg_for7Z(img,z) cimg_for7XY(img,x,y) +#define cimg_for7XZC(img,x,z,c) cimg_for7C(img,c) cimg_for7XZ(img,x,z) +#define cimg_for7YZC(img,y,z,c) cimg_for7C(img,c) cimg_for7YZ(img,y,z) +#define cimg_for7XYZC(img,x,y,z,c) cimg_for7C(img,c) cimg_for7XYZ(img,x,y,z) + +#define cimg_for_in7(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3; \ + i<=(int)(i1) && \ + (_n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i)); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i) +#define cimg_for_in7X(img,x0,x1,x) cimg_for_in7((img)._width,x0,x1,x) +#define cimg_for_in7Y(img,y0,y1,y) cimg_for_in7((img)._height,y0,y1,y) +#define cimg_for_in7Z(img,z0,z1,z) cimg_for_in7((img)._depth,z0,z1,z) +#define cimg_for_in7C(img,c0,c1,c) cimg_for_in7((img)._spectrum,c0,c1,c) +#define cimg_for_in7XY(img,x0,y0,x1,y1,x,y) cimg_for_in7Y(img,y0,y1,y) cimg_for_in7X(img,x0,x1,x) +#define cimg_for_in7XZ(img,x0,z0,x1,z1,x,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7X(img,x0,x1,x) +#define cimg_for_in7XC(img,x0,c0,x1,c1,x,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7X(img,x0,x1,x) +#define cimg_for_in7YZ(img,y0,z0,y1,z1,y,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7Y(img,y0,y1,y) +#define cimg_for_in7YC(img,y0,c0,y1,c1,y,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7Y(img,y0,y1,y) +#define cimg_for_in7ZC(img,z0,c0,z1,c1,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7Z(img,z0,z1,z) +#define cimg_for_in7XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in7XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in7YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in7XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in7C(img,c0,c1,c) cimg_for_in7XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for8(bound,i) \ + for (int i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(bound)?(int)(bound) - 1:4; \ + _n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for8X(img,x) cimg_for8((img)._width,x) +#define cimg_for8Y(img,y) cimg_for8((img)._height,y) +#define cimg_for8Z(img,z) cimg_for8((img)._depth,z) +#define cimg_for8C(img,c) cimg_for8((img)._spectrum,c) +#define cimg_for8XY(img,x,y) cimg_for8Y(img,y) cimg_for8X(img,x) +#define cimg_for8XZ(img,x,z) cimg_for8Z(img,z) cimg_for8X(img,x) +#define cimg_for8XC(img,x,c) cimg_for8C(img,c) cimg_for8X(img,x) +#define cimg_for8YZ(img,y,z) cimg_for8Z(img,z) cimg_for8Y(img,y) +#define cimg_for8YC(img,y,c) cimg_for8C(img,c) cimg_for8Y(img,y) +#define cimg_for8ZC(img,z,c) cimg_for8C(img,c) cimg_for8Z(img,z) +#define cimg_for8XYZ(img,x,y,z) cimg_for8Z(img,z) cimg_for8XY(img,x,y) +#define cimg_for8XZC(img,x,z,c) cimg_for8C(img,c) cimg_for8XZ(img,x,z) +#define cimg_for8YZC(img,y,z,c) cimg_for8C(img,c) cimg_for8YZ(img,y,z) +#define cimg_for8XYZC(img,x,y,z,c) cimg_for8C(img,c) cimg_for8XYZ(img,x,y,z) + +#define cimg_for_in8(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4; \ + i<=(int)(i1) && (_n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for_in8X(img,x0,x1,x) cimg_for_in8((img)._width,x0,x1,x) +#define cimg_for_in8Y(img,y0,y1,y) cimg_for_in8((img)._height,y0,y1,y) +#define cimg_for_in8Z(img,z0,z1,z) cimg_for_in8((img)._depth,z0,z1,z) +#define cimg_for_in8C(img,c0,c1,c) cimg_for_in8((img)._spectrum,c0,c1,c) +#define cimg_for_in8XY(img,x0,y0,x1,y1,x,y) cimg_for_in8Y(img,y0,y1,y) cimg_for_in8X(img,x0,x1,x) +#define cimg_for_in8XZ(img,x0,z0,x1,z1,x,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8X(img,x0,x1,x) +#define cimg_for_in8XC(img,x0,c0,x1,c1,x,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8X(img,x0,x1,x) +#define cimg_for_in8YZ(img,y0,z0,y1,z1,y,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8Y(img,y0,y1,y) +#define cimg_for_in8YC(img,y0,c0,y1,c1,y,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8Y(img,y0,y1,y) +#define cimg_for_in8ZC(img,z0,c0,z1,c1,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8Z(img,z0,z1,z) +#define cimg_for_in8XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in8XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in8YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in8XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in8C(img,c0,c1,c) cimg_for_in8XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for9(bound,i) \ + for (int i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \ + _n1##i = 1>=(int)(bound)?(int)(bound) - 1:1, \ + _n2##i = 2>=(int)(bound)?(int)(bound) - 1:2, \ + _n3##i = 3>=(int)(bound)?(int)(bound) - 1:3, \ + _n4##i = 4>=(int)(bound)?(int)(bound) - 1:4; \ + _n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i); \ + _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for9X(img,x) cimg_for9((img)._width,x) +#define cimg_for9Y(img,y) cimg_for9((img)._height,y) +#define cimg_for9Z(img,z) cimg_for9((img)._depth,z) +#define cimg_for9C(img,c) cimg_for9((img)._spectrum,c) +#define cimg_for9XY(img,x,y) cimg_for9Y(img,y) cimg_for9X(img,x) +#define cimg_for9XZ(img,x,z) cimg_for9Z(img,z) cimg_for9X(img,x) +#define cimg_for9XC(img,x,c) cimg_for9C(img,c) cimg_for9X(img,x) +#define cimg_for9YZ(img,y,z) cimg_for9Z(img,z) cimg_for9Y(img,y) +#define cimg_for9YC(img,y,c) cimg_for9C(img,c) cimg_for9Y(img,y) +#define cimg_for9ZC(img,z,c) cimg_for9C(img,c) cimg_for9Z(img,z) +#define cimg_for9XYZ(img,x,y,z) cimg_for9Z(img,z) cimg_for9XY(img,x,y) +#define cimg_for9XZC(img,x,z,c) cimg_for9C(img,c) cimg_for9XZ(img,x,z) +#define cimg_for9YZC(img,y,z,c) cimg_for9C(img,c) cimg_for9YZ(img,y,z) +#define cimg_for9XYZC(img,x,y,z,c) cimg_for9C(img,c) cimg_for9XYZ(img,x,y,z) + +#define cimg_for_in9(bound,i0,i1,i) \ + for (int i = (int)(i0)<0?0:(int)(i0), \ + _p4##i = i - 4<0?0:i - 4, \ + _p3##i = i - 3<0?0:i - 3, \ + _p2##i = i - 2<0?0:i - 2, \ + _p1##i = i - 1<0?0:i - 1, \ + _n1##i = i + 1>=(int)(bound)?(int)(bound) - 1:i + 1, \ + _n2##i = i + 2>=(int)(bound)?(int)(bound) - 1:i + 2, \ + _n3##i = i + 3>=(int)(bound)?(int)(bound) - 1:i + 3, \ + _n4##i = i + 4>=(int)(bound)?(int)(bound) - 1:i + 4; \ + i<=(int)(i1) && (_n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \ + i==(_n4##i = _n3##i = _n2##i = --_n1##i)); \ + _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i) +#define cimg_for_in9X(img,x0,x1,x) cimg_for_in9((img)._width,x0,x1,x) +#define cimg_for_in9Y(img,y0,y1,y) cimg_for_in9((img)._height,y0,y1,y) +#define cimg_for_in9Z(img,z0,z1,z) cimg_for_in9((img)._depth,z0,z1,z) +#define cimg_for_in9C(img,c0,c1,c) cimg_for_in9((img)._spectrum,c0,c1,c) +#define cimg_for_in9XY(img,x0,y0,x1,y1,x,y) cimg_for_in9Y(img,y0,y1,y) cimg_for_in9X(img,x0,x1,x) +#define cimg_for_in9XZ(img,x0,z0,x1,z1,x,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9X(img,x0,x1,x) +#define cimg_for_in9XC(img,x0,c0,x1,c1,x,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9X(img,x0,x1,x) +#define cimg_for_in9YZ(img,y0,z0,y1,z1,y,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9Y(img,y0,y1,y) +#define cimg_for_in9YC(img,y0,c0,y1,c1,y,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9Y(img,y0,y1,y) +#define cimg_for_in9ZC(img,z0,c0,z1,c1,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9Z(img,z0,z1,z) +#define cimg_for_in9XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9XY(img,x0,y0,x1,y1,x,y) +#define cimg_for_in9XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9XZ(img,x0,y0,x1,y1,x,z) +#define cimg_for_in9YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9YZ(img,y0,z0,y1,z1,y,z) +#define cimg_for_in9XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \ + cimg_for_in9C(img,c0,c1,c) cimg_for_in9XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) + +#define cimg_for2x2(img,x,y,z,c,I,T) \ + cimg_for2((img)._height,y) for (int x = 0, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(0,y,z,c)), \ + (I[2] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], \ + I[2] = I[3], \ + ++x, ++_n1##x) + +#define cimg_for_in2x2(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in2((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _n1##x = (int)( \ + (I[0] = (T)(img)(x,y,z,c)), \ + (I[2] = (T)(img)(x,_n1##y,z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], \ + I[2] = I[3], \ + ++x, ++_n1##x) + +#define cimg_for3x3(img,x,y,z,c,I,T) \ + cimg_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,z,c)), \ + (I[6] = I[7] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + +#define cimg_for_in3x3(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in3((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = (T)(img)(_p1##x,y,z,c)), \ + (I[6] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[1] = (T)(img)(x,_p1##y,z,c)), \ + (I[4] = (T)(img)(x,y,z,c)), \ + (I[7] = (T)(img)(x,_n1##y,z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + +#define cimg_for4x4(img,x,y,z,c,I,T) \ + cimg_for4((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[4] = I[5] = (T)(img)(0,y,z,c)), \ + (I[8] = I[9] = (T)(img)(0,_n1##y,z,c)), \ + (I[12] = I[13] = (T)(img)(0,_n2##y,z,c)), \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_n2##y,z,c)), \ + 2>=(img)._width?(img).width() - 1:2); \ + (_n2##x<(img).width() && ( \ + (I[3] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], \ + I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for_in4x4(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in4((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = (int)( \ + (I[0] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[4] = (T)(img)(_p1##x,y,z,c)), \ + (I[8] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[1] = (T)(img)(x,_p1##y,z,c)), \ + (I[5] = (T)(img)(x,y,z,c)), \ + (I[9] = (T)(img)(x,_n1##y,z,c)), \ + (I[13] = (T)(img)(x,_n2##y,z,c)), \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[6] = (T)(img)(_n1##x,y,z,c)), \ + (I[10] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_n2##y,z,c)), \ + x + 2>=(int)(img)._width?(img).width() - 1:x + 2); \ + x<=(int)(x1) && ((_n2##x<(img).width() && ( \ + (I[3] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[7] = (T)(img)(_n2##x,y,z,c)), \ + (I[11] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], \ + I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for5x5(img,x,y,z,c,I,T) \ + cimg_for5((img)._height,y) for (int x = 0, \ + _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = (int)( \ + (I[0] = I[1] = I[2] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[5] = I[6] = I[7] = (T)(img)(0,_p1##y,z,c)), \ + (I[10] = I[11] = I[12] = (T)(img)(0,y,z,c)), \ + (I[15] = I[16] = I[17] = (T)(img)(0,_n1##y,z,c)), \ + (I[20] = I[21] = I[22] = (T)(img)(0,_n2##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_n2##y,z,c)), \ + 2>=(img)._width?(img).width() - 1:2); \ + (_n2##x<(img).width() && ( \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \ + I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for_in5x5(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in5((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = (int)( \ + (I[0] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[5] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[10] = (T)(img)(_p2##x,y,z,c)), \ + (I[15] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[20] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[1] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[6] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[11] = (T)(img)(_p1##x,y,z,c)), \ + (I[16] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[21] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[2] = (T)(img)(x,_p2##y,z,c)), \ + (I[7] = (T)(img)(x,_p1##y,z,c)), \ + (I[12] = (T)(img)(x,y,z,c)), \ + (I[17] = (T)(img)(x,_n1##y,z,c)), \ + (I[22] = (T)(img)(x,_n2##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[13] = (T)(img)(_n1##x,y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_n2##y,z,c)), \ + x + 2>=(int)(img)._width?(img).width() - 1:x + 2); \ + x<=(int)(x1) && ((_n2##x<(img).width() && ( \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n2##x,y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \ + _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \ + I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \ + I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \ + I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \ + I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x) + +#define cimg_for6x6(img,x,y,z,c,I,T) \ + cimg_for6((img)._height,y) for (int x = 0, \ + _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = 2>=(img)._width?(img).width() - 1:2, \ + _n3##x = (int)( \ + (I[0] = I[1] = I[2] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[6] = I[7] = I[8] = (T)(img)(0,_p1##y,z,c)), \ + (I[12] = I[13] = I[14] = (T)(img)(0,y,z,c)), \ + (I[18] = I[19] = I[20] = (T)(img)(0,_n1##y,z,c)), \ + (I[24] = I[25] = I[26] = (T)(img)(0,_n2##y,z,c)), \ + (I[30] = I[31] = I[32] = (T)(img)(0,_n3##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,y,z,c)), \ + (I[21] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[27] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,y,z,c)), \ + (I[22] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[28] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_n3##y,z,c)), \ + 3>=(img)._width?(img).width() - 1:3); \ + (_n3##x<(img).width() && ( \ + (I[5] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,y,z,c)), \ + (I[23] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[29] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3## x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for_in6x6(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in6((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)x0, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(int)(img)._width?(img).width() - 1:x + 2, \ + _n3##x = (int)( \ + (I[0] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[6] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[12] = (T)(img)(_p2##x,y,z,c)), \ + (I[18] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[24] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[30] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[1] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[7] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[13] = (T)(img)(_p1##x,y,z,c)), \ + (I[19] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[25] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[31] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[2] = (T)(img)(x,_p2##y,z,c)), \ + (I[8] = (T)(img)(x,_p1##y,z,c)), \ + (I[14] = (T)(img)(x,y,z,c)), \ + (I[20] = (T)(img)(x,_n1##y,z,c)), \ + (I[26] = (T)(img)(x,_n2##y,z,c)), \ + (I[32] = (T)(img)(x,_n3##y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[9] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[15] = (T)(img)(_n1##x,y,z,c)), \ + (I[21] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[27] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[33] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[10] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[16] = (T)(img)(_n2##x,y,z,c)), \ + (I[22] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[28] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[34] = (T)(img)(_n2##x,_n3##y,z,c)), \ + x + 3>=(int)(img)._width?(img).width() - 1:x + 3); \ + x<=(int)(x1) && ((_n3##x<(img).width() && ( \ + (I[5] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[11] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[17] = (T)(img)(_n3##x,y,z,c)), \ + (I[23] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[29] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[35] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3## x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \ + I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \ + I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \ + _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for7x7(img,x,y,z,c,I,T) \ + cimg_for7((img)._height,y) for (int x = 0, \ + _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=(img)._width?(img).width() - 1:1, \ + _n2##x = 2>=(img)._width?(img).width() - 1:2, \ + _n3##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[7] = I[8] = I[9] = I[10] = (T)(img)(0,_p2##y,z,c)), \ + (I[14] = I[15] = I[16] = I[17] = (T)(img)(0,_p1##y,z,c)), \ + (I[21] = I[22] = I[23] = I[24] = (T)(img)(0,y,z,c)), \ + (I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_n1##y,z,c)), \ + (I[35] = I[36] = I[37] = I[38] = (T)(img)(0,_n2##y,z,c)), \ + (I[42] = I[43] = I[44] = I[45] = (T)(img)(0,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[25] = (T)(img)(_n1##x,y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[46] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[26] = (T)(img)(_n2##x,y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[47] = (T)(img)(_n2##x,_n3##y,z,c)), \ + 3>=(img)._width?(img).width() - 1:3); \ + (_n3##x<(img).width() && ( \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[27] = (T)(img)(_n3##x,y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[48] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \ + I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for_in7x7(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in7((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(int)(img)._width?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(int)(img)._width?(img).width() - 1:x + 2, \ + _n3##x = (int)( \ + (I[0] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[7] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[14] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[21] = (T)(img)(_p3##x,y,z,c)), \ + (I[28] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[35] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[42] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[1] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[8] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[15] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[22] = (T)(img)(_p2##x,y,z,c)), \ + (I[29] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[36] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[43] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[2] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[9] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[16] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[23] = (T)(img)(_p1##x,y,z,c)), \ + (I[30] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[37] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[44] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[3] = (T)(img)(x,_p3##y,z,c)), \ + (I[10] = (T)(img)(x,_p2##y,z,c)), \ + (I[17] = (T)(img)(x,_p1##y,z,c)), \ + (I[24] = (T)(img)(x,y,z,c)), \ + (I[31] = (T)(img)(x,_n1##y,z,c)), \ + (I[38] = (T)(img)(x,_n2##y,z,c)), \ + (I[45] = (T)(img)(x,_n3##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[11] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[25] = (T)(img)(_n1##x,y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[39] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[46] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[26] = (T)(img)(_n2##x,y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[40] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[47] = (T)(img)(_n2##x,_n3##y,z,c)), \ + x + 3>=(int)(img)._width?(img).width() - 1:x + 3); \ + x<=(int)(x1) && ((_n3##x<(img).width() && ( \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[27] = (T)(img)(_n3##x,y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[41] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[48] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \ + _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \ + I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \ + I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \ + I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \ + I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \ + I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \ + I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x) + +#define cimg_for8x8(img,x,y,z,c,I,T) \ + cimg_for8((img)._height,y) for (int x = 0, \ + _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[8] = I[9] = I[10] = I[11] = (T)(img)(0,_p2##y,z,c)), \ + (I[16] = I[17] = I[18] = I[19] = (T)(img)(0,_p1##y,z,c)), \ + (I[24] = I[25] = I[26] = I[27] = (T)(img)(0,y,z,c)), \ + (I[32] = I[33] = I[34] = I[35] = (T)(img)(0,_n1##y,z,c)), \ + (I[40] = I[41] = I[42] = I[43] = (T)(img)(0,_n2##y,z,c)), \ + (I[48] = I[49] = I[50] = I[51] = (T)(img)(0,_n3##y,z,c)), \ + (I[56] = I[57] = I[58] = I[59] = (T)(img)(0,_n4##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[28] = (T)(img)(_n1##x,y,z,c)), \ + (I[36] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[44] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[52] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[21] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[29] = (T)(img)(_n2##x,y,z,c)), \ + (I[37] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[45] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[53] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[22] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[30] = (T)(img)(_n3##x,y,z,c)), \ + (I[38] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[46] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[54] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_n4##y,z,c)), \ + 4>=((img)._width)?(img).width() - 1:4); \ + (_n4##x<(img).width() && ( \ + (I[7] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[23] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[31] = (T)(img)(_n4##x,y,z,c)), \ + (I[39] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[47] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[55] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for_in8x8(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in8((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = (int)( \ + (I[0] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[8] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[16] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[24] = (T)(img)(_p3##x,y,z,c)), \ + (I[32] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[40] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[48] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[56] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[1] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[9] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[17] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[25] = (T)(img)(_p2##x,y,z,c)), \ + (I[33] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[41] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[49] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[57] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[2] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[10] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[18] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[26] = (T)(img)(_p1##x,y,z,c)), \ + (I[34] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[42] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[50] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[58] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[3] = (T)(img)(x,_p3##y,z,c)), \ + (I[11] = (T)(img)(x,_p2##y,z,c)), \ + (I[19] = (T)(img)(x,_p1##y,z,c)), \ + (I[27] = (T)(img)(x,y,z,c)), \ + (I[35] = (T)(img)(x,_n1##y,z,c)), \ + (I[43] = (T)(img)(x,_n2##y,z,c)), \ + (I[51] = (T)(img)(x,_n3##y,z,c)), \ + (I[59] = (T)(img)(x,_n4##y,z,c)), \ + (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[12] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[28] = (T)(img)(_n1##x,y,z,c)), \ + (I[36] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[44] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[52] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[60] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[13] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[21] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[29] = (T)(img)(_n2##x,y,z,c)), \ + (I[37] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[45] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[53] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[61] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[14] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[22] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[30] = (T)(img)(_n3##x,y,z,c)), \ + (I[38] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[46] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[54] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[62] = (T)(img)(_n3##x,_n4##y,z,c)), \ + x + 4>=(img).width()?(img).width() - 1:x + 4); \ + x<=(int)(x1) && ((_n4##x<(img).width() && ( \ + (I[7] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[15] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[23] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[31] = (T)(img)(_n4##x,y,z,c)), \ + (I[39] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[47] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[55] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[63] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \ + I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \ + I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \ + I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \ + _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for9x9(img,x,y,z,c,I,T) \ + cimg_for9((img)._height,y) for (int x = 0, \ + _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \ + _n1##x = 1>=((img)._width)?(img).width() - 1:1, \ + _n2##x = 2>=((img)._width)?(img).width() - 1:2, \ + _n3##x = 3>=((img)._width)?(img).width() - 1:3, \ + _n4##x = (int)( \ + (I[0] = I[1] = I[2] = I[3] = I[4] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[9] = I[10] = I[11] = I[12] = I[13] = (T)(img)(0,_p3##y,z,c)), \ + (I[18] = I[19] = I[20] = I[21] = I[22] = (T)(img)(0,_p2##y,z,c)), \ + (I[27] = I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_p1##y,z,c)), \ + (I[36] = I[37] = I[38] = I[39] = I[40] = (T)(img)(0,y,z,c)), \ + (I[45] = I[46] = I[47] = I[48] = I[49] = (T)(img)(0,_n1##y,z,c)), \ + (I[54] = I[55] = I[56] = I[57] = I[58] = (T)(img)(0,_n2##y,z,c)), \ + (I[63] = I[64] = I[65] = I[66] = I[67] = (T)(img)(0,_n3##y,z,c)), \ + (I[72] = I[73] = I[74] = I[75] = I[76] = (T)(img)(0,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[41] = (T)(img)(_n1##x,y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[59] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[42] = (T)(img)(_n2##x,y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[60] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[25] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[43] = (T)(img)(_n3##x,y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[61] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_n4##y,z,c)), \ + 4>=((img)._width)?(img).width() - 1:4); \ + (_n4##x<(img).width() && ( \ + (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[26] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[35] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[44] = (T)(img)(_n4##x,y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[62] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], \ + I[16] = I[17], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[24] = I[25], I[25] = I[26], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[54] = I[55], I[55] = I[56], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[63] = I[64], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[79] = I[80], \ + _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for_in9x9(img,x0,y0,x1,y1,x,y,z,c,I,T) \ + cimg_for_in9((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p4##x = x - 4<0?0:x - 4, \ + _p3##x = x - 3<0?0:x - 3, \ + _p2##x = x - 2<0?0:x - 2, \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = x + 1>=(img).width()?(img).width() - 1:x + 1, \ + _n2##x = x + 2>=(img).width()?(img).width() - 1:x + 2, \ + _n3##x = x + 3>=(img).width()?(img).width() - 1:x + 3, \ + _n4##x = (int)( \ + (I[0] = (T)(img)(_p4##x,_p4##y,z,c)), \ + (I[9] = (T)(img)(_p4##x,_p3##y,z,c)), \ + (I[18] = (T)(img)(_p4##x,_p2##y,z,c)), \ + (I[27] = (T)(img)(_p4##x,_p1##y,z,c)), \ + (I[36] = (T)(img)(_p4##x,y,z,c)), \ + (I[45] = (T)(img)(_p4##x,_n1##y,z,c)), \ + (I[54] = (T)(img)(_p4##x,_n2##y,z,c)), \ + (I[63] = (T)(img)(_p4##x,_n3##y,z,c)), \ + (I[72] = (T)(img)(_p4##x,_n4##y,z,c)), \ + (I[1] = (T)(img)(_p3##x,_p4##y,z,c)), \ + (I[10] = (T)(img)(_p3##x,_p3##y,z,c)), \ + (I[19] = (T)(img)(_p3##x,_p2##y,z,c)), \ + (I[28] = (T)(img)(_p3##x,_p1##y,z,c)), \ + (I[37] = (T)(img)(_p3##x,y,z,c)), \ + (I[46] = (T)(img)(_p3##x,_n1##y,z,c)), \ + (I[55] = (T)(img)(_p3##x,_n2##y,z,c)), \ + (I[64] = (T)(img)(_p3##x,_n3##y,z,c)), \ + (I[73] = (T)(img)(_p3##x,_n4##y,z,c)), \ + (I[2] = (T)(img)(_p2##x,_p4##y,z,c)), \ + (I[11] = (T)(img)(_p2##x,_p3##y,z,c)), \ + (I[20] = (T)(img)(_p2##x,_p2##y,z,c)), \ + (I[29] = (T)(img)(_p2##x,_p1##y,z,c)), \ + (I[38] = (T)(img)(_p2##x,y,z,c)), \ + (I[47] = (T)(img)(_p2##x,_n1##y,z,c)), \ + (I[56] = (T)(img)(_p2##x,_n2##y,z,c)), \ + (I[65] = (T)(img)(_p2##x,_n3##y,z,c)), \ + (I[74] = (T)(img)(_p2##x,_n4##y,z,c)), \ + (I[3] = (T)(img)(_p1##x,_p4##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,_p3##y,z,c)), \ + (I[21] = (T)(img)(_p1##x,_p2##y,z,c)), \ + (I[30] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[39] = (T)(img)(_p1##x,y,z,c)), \ + (I[48] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[57] = (T)(img)(_p1##x,_n2##y,z,c)), \ + (I[66] = (T)(img)(_p1##x,_n3##y,z,c)), \ + (I[75] = (T)(img)(_p1##x,_n4##y,z,c)), \ + (I[4] = (T)(img)(x,_p4##y,z,c)), \ + (I[13] = (T)(img)(x,_p3##y,z,c)), \ + (I[22] = (T)(img)(x,_p2##y,z,c)), \ + (I[31] = (T)(img)(x,_p1##y,z,c)), \ + (I[40] = (T)(img)(x,y,z,c)), \ + (I[49] = (T)(img)(x,_n1##y,z,c)), \ + (I[58] = (T)(img)(x,_n2##y,z,c)), \ + (I[67] = (T)(img)(x,_n3##y,z,c)), \ + (I[76] = (T)(img)(x,_n4##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,_p3##y,z,c)), \ + (I[23] = (T)(img)(_n1##x,_p2##y,z,c)), \ + (I[32] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[41] = (T)(img)(_n1##x,y,z,c)), \ + (I[50] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[59] = (T)(img)(_n1##x,_n2##y,z,c)), \ + (I[68] = (T)(img)(_n1##x,_n3##y,z,c)), \ + (I[77] = (T)(img)(_n1##x,_n4##y,z,c)), \ + (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \ + (I[15] = (T)(img)(_n2##x,_p3##y,z,c)), \ + (I[24] = (T)(img)(_n2##x,_p2##y,z,c)), \ + (I[33] = (T)(img)(_n2##x,_p1##y,z,c)), \ + (I[42] = (T)(img)(_n2##x,y,z,c)), \ + (I[51] = (T)(img)(_n2##x,_n1##y,z,c)), \ + (I[60] = (T)(img)(_n2##x,_n2##y,z,c)), \ + (I[69] = (T)(img)(_n2##x,_n3##y,z,c)), \ + (I[78] = (T)(img)(_n2##x,_n4##y,z,c)), \ + (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \ + (I[16] = (T)(img)(_n3##x,_p3##y,z,c)), \ + (I[25] = (T)(img)(_n3##x,_p2##y,z,c)), \ + (I[34] = (T)(img)(_n3##x,_p1##y,z,c)), \ + (I[43] = (T)(img)(_n3##x,y,z,c)), \ + (I[52] = (T)(img)(_n3##x,_n1##y,z,c)), \ + (I[61] = (T)(img)(_n3##x,_n2##y,z,c)), \ + (I[70] = (T)(img)(_n3##x,_n3##y,z,c)), \ + (I[79] = (T)(img)(_n3##x,_n4##y,z,c)), \ + x + 4>=(img).width()?(img).width() - 1:x + 4); \ + x<=(int)(x1) && ((_n4##x<(img).width() && ( \ + (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \ + (I[17] = (T)(img)(_n4##x,_p3##y,z,c)), \ + (I[26] = (T)(img)(_n4##x,_p2##y,z,c)), \ + (I[35] = (T)(img)(_n4##x,_p1##y,z,c)), \ + (I[44] = (T)(img)(_n4##x,y,z,c)), \ + (I[53] = (T)(img)(_n4##x,_n1##y,z,c)), \ + (I[62] = (T)(img)(_n4##x,_n2##y,z,c)), \ + (I[71] = (T)(img)(_n4##x,_n3##y,z,c)), \ + (I[80] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \ + _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x)); \ + I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], \ + I[16] = I[17], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \ + I[24] = I[25], I[25] = I[26], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], \ + I[32] = I[33], I[33] = I[34], I[34] = I[35], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], \ + I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[45] = I[46], I[46] = I[47], I[47] = I[48], \ + I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[54] = I[55], I[55] = I[56], \ + I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[63] = I[64], \ + I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \ + I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], \ + I[79] = I[80], \ + _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x) + +#define cimg_for2x2x2(img,x,y,z,c,I,T) \ + cimg_for2((img)._depth,z) cimg_for2((img)._height,y) for (int x = 0, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(0,y,z,c)), \ + (I[2] = (T)(img)(0,_n1##y,z,c)), \ + (I[4] = (T)(img)(0,y,_n1##z,c)), \ + (I[6] = (T)(img)(0,_n1##y,_n1##z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[2] = I[3], I[4] = I[5], I[6] = I[7], \ + ++x, ++_n1##x) + +#define cimg_for_in2x2x2(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in2((img)._depth,z0,z1,z) cimg_for_in2((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _n1##x = (int)( \ + (I[0] = (T)(img)(x,y,z,c)), \ + (I[2] = (T)(img)(x,_n1##y,z,c)), \ + (I[4] = (T)(img)(x,y,_n1##z,c)), \ + (I[6] = (T)(img)(x,_n1##y,_n1##z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[1] = (T)(img)(_n1##x,y,z,c)), \ + (I[3] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], I[2] = I[3], I[4] = I[5], I[6] = I[7], \ + ++x, ++_n1##x) + +#define cimg_for3x3x3(img,x,y,z,c,I,T) \ + cimg_for3((img)._depth,z) cimg_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,_p1##z,c)), \ + (I[6] = I[7] = (T)(img)(0,_n1##y,_p1##z,c)), \ + (I[9] = I[10] = (T)(img)(0,_p1##y,z,c)), \ + (I[12] = I[13] = (T)(img)(0,y,z,c)), \ + (I[15] = I[16] = (T)(img)(0,_n1##y,z,c)), \ + (I[18] = I[19] = (T)(img)(0,_p1##y,_n1##z,c)), \ + (I[21] = I[22] = (T)(img)(0,y,_n1##z,c)), \ + (I[24] = I[25] = (T)(img)(0,_n1##y,_n1##z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[11] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,y,z,c)), \ + (I[17] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[23] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[1] = I[2], I[3] = I[4], I[4] = I[5], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[12] = I[13], I[13] = I[14], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[21] = I[22], I[22] = I[23], I[24] = I[25], I[25] = I[26], \ + _p1##x = x++, ++_n1##x) + +#define cimg_for_in3x3x3(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \ + cimg_for_in3((img)._depth,z0,z1,z) cimg_for_in3((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \ + _p1##x = x - 1<0?0:x - 1, \ + _n1##x = (int)( \ + (I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \ + (I[3] = (T)(img)(_p1##x,y,_p1##z,c)), \ + (I[6] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \ + (I[9] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[12] = (T)(img)(_p1##x,y,z,c)), \ + (I[15] = (T)(img)(_p1##x,_n1##y,z,c)), \ + (I[18] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \ + (I[21] = (T)(img)(_p1##x,y,_n1##z,c)), \ + (I[24] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \ + (I[1] = (T)(img)(x,_p1##y,_p1##z,c)), \ + (I[4] = (T)(img)(x,y,_p1##z,c)), \ + (I[7] = (T)(img)(x,_n1##y,_p1##z,c)), \ + (I[10] = (T)(img)(x,_p1##y,z,c)), \ + (I[13] = (T)(img)(x,y,z,c)), \ + (I[16] = (T)(img)(x,_n1##y,z,c)), \ + (I[19] = (T)(img)(x,_p1##y,_n1##z,c)), \ + (I[22] = (T)(img)(x,y,_n1##z,c)), \ + (I[25] = (T)(img)(x,_n1##y,_n1##z,c)), \ + x + 1>=(int)(img)._width?(img).width() - 1:x + 1); \ + x<=(int)(x1) && ((_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \ + (I[5] = (T)(img)(_n1##x,y,_p1##z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \ + (I[11] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[14] = (T)(img)(_n1##x,y,z,c)), \ + (I[17] = (T)(img)(_n1##x,_n1##y,z,c)), \ + (I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \ + (I[23] = (T)(img)(_n1##x,y,_n1##z,c)), \ + (I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \ + x==--_n1##x); \ + I[0] = I[1], I[1] = I[2], I[3] = I[4], I[4] = I[5], I[6] = I[7], I[7] = I[8], \ + I[9] = I[10], I[10] = I[11], I[12] = I[13], I[13] = I[14], I[15] = I[16], I[16] = I[17], \ + I[18] = I[19], I[19] = I[20], I[21] = I[22], I[22] = I[23], I[24] = I[25], I[25] = I[26], \ + _p1##x = x++, ++_n1##x) + +#define cimglist_for(list,l) for (int l = 0; l<(int)(list)._width; ++l) +#define cimglist_rof(list,l) for (int l = (int)(list)._width - 1; l>=0; --l) +#define cimglist_for_in(list,l0,l1,l) \ + for (int l = (int)(l0)<0?0:(int)(l0), _max##l = (unsigned int)l1<(list)._width?(int)(l1):(int)(list)._width - 1; \ + l<=_max##l; ++l) + +#define cimglist_apply(list,fn) cimglist_for(list,__##fn) (list)[__##fn].fn + +// Macros used to display error messages when exceptions are thrown. +// You should not use these macros is your own code. +#define _cimgdisplay_instance "[instance(%u,%u,%u,%c%s%c)] CImgDisplay::" +#define cimgdisplay_instance _width,_height,_normalization,_title?'\"':'[',_title?_title:"untitled",_title?'\"':']' +#define _cimg_instance "[instance(%u,%u,%u,%u,%p,%sshared)] CImg<%s>::" +#define cimg_instance _width,_height,_depth,_spectrum,_data,_is_shared?"":"non-",pixel_type() +#define _cimglist_instance "[instance(%u,%u,%p)] CImgList<%s>::" +#define cimglist_instance _width,_allocated_width,_data,pixel_type() + +/*------------------------------------------------ + # + # + # Define cimg_library:: namespace + # + # + -------------------------------------------------*/ +//! Contains all classes and functions of the \CImg library. +/** + This namespace is defined to avoid functions and class names collisions + that could happen with the inclusion of other C++ header files. + Anyway, it should not happen often and you should reasonably start most of your + \CImg-based programs with + \code + #include "CImg.h" + using namespace cimg_library; + \endcode + to simplify the declaration of \CImg Library objects afterwards. +**/ +namespace cimg_library_suffixed { + + // Declare the four classes of the CImg Library. + template struct CImg; + template struct CImgList; + struct CImgDisplay; + struct CImgException; + + // Declare cimg:: namespace. + // This is an incomplete namespace definition here. It only contains some + // necessary stuff to ensure a correct declaration order of the classes and functions + // defined afterwards. + namespace cimg { + + // Define character sequences for colored terminal output. +#ifdef cimg_use_vt100 + static const char t_normal[] = { 0x1b, '[', '0', ';', '0', ';', '0', 'm', 0 }; + static const char t_black[] = { 0x1b, '[', '0', ';', '3', '0', ';', '5', '9', 'm', 0 }; + static const char t_red[] = { 0x1b, '[', '0', ';', '3', '1', ';', '5', '9', 'm', 0 }; + static const char t_green[] = { 0x1b, '[', '0', ';', '3', '2', ';', '5', '9', 'm', 0 }; + static const char t_yellow[] = { 0x1b, '[', '0', ';', '3', '3', ';', '5', '9', 'm', 0 }; + static const char t_blue[] = { 0x1b, '[', '0', ';', '3', '4', ';', '5', '9', 'm', 0 }; + static const char t_magenta[] = { 0x1b, '[', '0', ';', '3', '5', ';', '5', '9', 'm', 0 }; + static const char t_cyan[] = { 0x1b, '[', '0', ';', '3', '6', ';', '5', '9', 'm', 0 }; + static const char t_white[] = { 0x1b, '[', '0', ';', '3', '7', ';', '5', '9', 'm', 0 }; + static const char t_bold[] = { 0x1b, '[', '1', 'm', 0 }; + static const char t_underscore[] = { 0x1b, '[', '4', 'm', 0 }; +#else + static const char t_normal[] = { 0 }; + static const char *const t_black = cimg::t_normal, + *const t_red = cimg::t_normal, + *const t_green = cimg::t_normal, + *const t_yellow = cimg::t_normal, + *const t_blue = cimg::t_normal, + *const t_magenta = cimg::t_normal, + *const t_cyan = cimg::t_normal, + *const t_white = cimg::t_normal, + *const t_bold = cimg::t_normal, + *const t_underscore = cimg::t_normal; +#endif + + inline std::FILE* output(std::FILE *file=0); + inline void info(); + + //! Avoid warning messages due to unused parameters. Do nothing actually. + template + inline void unused(const T&, ...) {} + + // [internal] Lock/unlock a mutex for managing concurrent threads. + // 'lock_mode' can be { 0=unlock | 1=lock | 2=trylock }. + // 'n' can be in [0,31] but mutex range [0,15] is reserved by CImg. + inline int mutex(const unsigned int n, const int lock_mode=1); + + inline unsigned int& exception_mode(const unsigned int value, const bool is_set) { + static unsigned int mode = cimg_verbosity; + if (is_set) { cimg::mutex(0); mode = value<4?value:4; cimg::mutex(0,0); } + return mode; + } + + // Functions to return standard streams 'stdin', 'stdout' and 'stderr'. + inline FILE* _stdin(const bool throw_exception=true); + inline FILE* _stdout(const bool throw_exception=true); + inline FILE* _stderr(const bool throw_exception=true); + + // Mandatory because Microsoft's _snprintf() and _vsnprintf() do not add the '\0' character + // at the end of the string. +#if cimg_OS==2 && defined(_MSC_VER) + inline int _snprintf(char *const s, const size_t size, const char *const format, ...) { + va_list ap; + va_start(ap,format); + const int result = _vsnprintf(s,size,format,ap); + va_end(ap); + return result; + } + + inline int _vsnprintf(char *const s, const size_t size, const char *const format, va_list ap) { + int result = -1; + cimg::mutex(6); + if (size) result = _vsnprintf_s(s,size,_TRUNCATE,format,ap); + if (result==-1) result = _vscprintf(format,ap); + cimg::mutex(6,0); + return result; + } + + // Mutex-protected version of sscanf, sprintf and snprintf. + // Used only MacOSX, as it seems those functions are not re-entrant on MacOSX. +#elif defined(__MACOSX__) || defined(__APPLE__) + inline int _sscanf(const char *const s, const char *const format, ...) { + cimg::mutex(6); + va_list args; + va_start(args,format); + const int result = std::vsscanf(s,format,args); + va_end(args); + cimg::mutex(6,0); + return result; + } + + inline int _sprintf(char *const s, const char *const format, ...) { + cimg::mutex(6); + va_list args; + va_start(args,format); + const int result = std::vsprintf(s,format,args); + va_end(args); + cimg::mutex(6,0); + return result; + } + + inline int _snprintf(char *const s, const size_t n, const char *const format, ...) { + cimg::mutex(6); + va_list args; + va_start(args,format); + const int result = std::vsnprintf(s,n,format,args); + va_end(args); + cimg::mutex(6,0); + return result; + } + + inline int _vsnprintf(char *const s, const size_t size, const char* format, va_list ap) { + cimg::mutex(6); + const int result = std::vsnprintf(s,size,format,ap); + cimg::mutex(6,0); + return result; + } +#endif + + //! Set current \CImg exception mode. + /** + The way error messages are handled by \CImg can be changed dynamically, using this function. + \param mode Desired exception mode. Possible values are: + - \c 0: Hide library messages (quiet mode). + - \c 1: Print library messages on the console. + - \c 2: Display library messages on a dialog window. + - \c 3: Do as \c 1 + add extra debug warnings (slow down the code!). + - \c 4: Do as \c 2 + add extra debug warnings (slow down the code!). + **/ + inline unsigned int& exception_mode(const unsigned int mode) { + return exception_mode(mode,true); + } + + //! Return current \CImg exception mode. + /** + \note By default, return the value of configuration macro \c cimg_verbosity + **/ + inline unsigned int& exception_mode() { + return exception_mode(0,false); + } + + inline unsigned int openmp_mode(const unsigned int value, const bool is_set) { + static unsigned int mode = 2; + if (is_set) { cimg::mutex(0); mode = value<2?value:2; cimg::mutex(0,0); } + return mode; + } + + //! Set current \CImg openmp mode. + /** + The way openmp-based methods are handled by \CImg can be changed dynamically, using this function. + \param mode Desired openmp mode. Possible values are: + - \c 0: Never parallelize. + - \c 1: Always parallelize. + - \c 2: Adaptive parallelization mode (default behavior). + **/ + inline unsigned int openmp_mode(const unsigned int mode) { + return openmp_mode(mode,true); + } + + //! Return current \CImg openmp mode. + inline unsigned int openmp_mode() { + return openmp_mode(0,false); + } + +#ifndef cimg_openmp_sizefactor +#define cimg_openmp_sizefactor 1 +#endif +#define cimg_openmp_if(cond) if ((cimg::openmp_mode()==1 || (cimg::openmp_mode()>1 && (cond)))) +#define cimg_openmp_if_size(size,min_size) cimg_openmp_if((size)>=(cimg_openmp_sizefactor)*(min_size)) +#ifdef _MSC_VER +// Disable 'collapse()' directive for MSVC (supports only OpenMP 2.0). +#define cimg_openmp_collapse(k) +#else +#define cimg_openmp_collapse(k) collapse(k) +#endif + +#if cimg_OS==2 +// Disable parallelization of simple loops on Windows, due to noticed performance drop. +#define cimg_openmp_for(instance,expr,min_size) cimg_rof((instance),ptr,T) *ptr = (T)(expr); +#else +#define cimg_openmp_for(instance,expr,min_size) \ + cimg_pragma_openmp(parallel for cimg_openmp_if_size((instance).size(),min_size)) \ + cimg_rof((instance),ptr,T) *ptr = (T)(expr); +#endif + + // Display a simple dialog box, and wait for the user's response. + inline int dialog(const char *const title, const char *const msg, + const char *const button1_label="OK", const char *const button2_label=0, + const char *const button3_label=0, const char *const button4_label=0, + const char *const button5_label=0, const char *const button6_label=0, + const bool centering=false); + + // Evaluate math expression. + inline double eval(const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0); + + } // namespace cimg { ... + + /*--------------------------------------- + # + # Define the CImgException structures + # + --------------------------------------*/ + //! Instances of \c CImgException are thrown when errors are encountered in a \CImg function call. + /** + \par Overview + + CImgException is the base class of all exceptions thrown by \CImg (except \b CImgAbortException). + CImgException is never thrown itself. Derived classes that specify the type of errord are thrown instead. + These classes can be: + + - \b CImgAbortException: Thrown when a computationally-intensive function is aborted by an external signal. + This is the only \c non-derived exception class. + + - \b CImgArgumentException: Thrown when one argument of a called \CImg function is invalid. + This is probably one of the most thrown exception by \CImg. + For instance, the following example throws a \c CImgArgumentException: + \code + CImg img(100,100,1,3); // Define a 100x100 color image with float-valued pixels + img.mirror('e'); // Try to mirror image along the (non-existing) 'e'-axis + \endcode + + - \b CImgDisplayException: Thrown when something went wrong during the display of images in CImgDisplay instances. + + - \b CImgInstanceException: Thrown when an instance associated to a called \CImg method does not fit + the function requirements. For instance, the following example throws a \c CImgInstanceException: + \code + const CImg img; // Define an empty image + const float value = img.at(0); // Try to read first pixel value (does not exist) + \endcode + + - \b CImgIOException: Thrown when an error occurred when trying to load or save image files. + This happens when trying to read files that do not exist or with invalid formats. + For instance, the following example throws a \c CImgIOException: + \code + const CImg img("missing_file.jpg"); // Try to load a file that does not exist + \endcode + + - \b CImgWarningException: Thrown only if configuration macro \c cimg_strict_warnings is set, and + when a \CImg function has to display a warning message (see cimg::warn()). + + It is not recommended to throw CImgException instances by yourself, + since they are expected to be thrown only by \CImg. + When an error occurs in a library function call, \CImg may display error messages on the screen or on the + standard output, depending on the current \CImg exception mode. + The \CImg exception mode can be get and set by functions cimg::exception_mode() and + cimg::exception_mode(unsigned int). + + \par Exceptions handling + + In all cases, when an error occurs in \CImg, an instance of the corresponding exception class is thrown. + This may lead the program to break (this is the default behavior), but you can bypass this behavior by + handling the exceptions by yourself, + using a usual try { ... } catch () { ... } bloc, as in the following example: + \code + #define "CImg.h" + using namespace cimg_library; + int main() { + cimg::exception_mode(0); // Enable quiet exception mode + try { + ... // Here, do what you want to stress CImg + } catch (CImgException& e) { // You succeeded: something went wrong! + std::fprintf(stderr,"CImg Library Error: %s",e.what()); // Display your custom error message + ... // Do what you want now to save the ship! + } + } + \endcode + **/ + struct CImgException : public std::exception { +#define _cimg_exception_err(etype,disp_flag) \ + std::va_list ap, ap2; \ + va_start(ap,format); va_start(ap2,format); \ + int size = cimg_vsnprintf(0,0,format,ap2); \ + if (size++>=0) { \ + delete[] _message; \ + _message = new char[size]; \ + cimg_vsnprintf(_message,size,format,ap); \ + if (cimg::exception_mode()) { \ + std::fprintf(cimg::output(),"\n%s[CImg] *** %s ***%s %s\n",cimg::t_red,etype,cimg::t_normal,_message); \ + if (cimg_display && disp_flag && !(cimg::exception_mode()%2)) try { cimg::dialog(etype,_message,"Abort"); } \ + catch (CImgException&) {} \ + if (cimg::exception_mode()>=3) cimg_library_suffixed::cimg::info(); \ + } \ + } \ + va_end(ap); va_end(ap2); \ + + char *_message; + CImgException() { _message = new char[1]; *_message = 0; } + CImgException(const char *const format, ...):_message(0) { _cimg_exception_err("CImgException",true); } + CImgException(const CImgException& e):std::exception(e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + } + ~CImgException() throw() { delete[] _message; } + CImgException& operator=(const CImgException& e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + return *this; + } + //! Return a C-string containing the error message associated to the thrown exception. + const char *what() const throw() { return _message; } + }; // struct CImgException { ... + + // The CImgAbortException class is used to throw an exception when + // a computationally-intensive function has been aborted by an external signal. + struct CImgAbortException : public std::exception { + char *_message; + CImgAbortException() { _message = new char[1]; *_message = 0; } + CImgAbortException(const char *const format, ...):_message(0) { _cimg_exception_err("CImgAbortException",true); } + CImgAbortException(const CImgAbortException& e):std::exception(e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + } + ~CImgAbortException() throw() { delete[] _message; } + CImgAbortException& operator=(const CImgAbortException& e) { + const size_t size = std::strlen(e._message); + _message = new char[size + 1]; + std::strncpy(_message,e._message,size); + _message[size] = 0; + return *this; + } + //! Return a C-string containing the error message associated to the thrown exception. + const char *what() const throw() { return _message; } + }; // struct CImgAbortException { ... + + // The CImgArgumentException class is used to throw an exception related + // to invalid arguments encountered in a library function call. + struct CImgArgumentException : public CImgException { + CImgArgumentException(const char *const format, ...) { _cimg_exception_err("CImgArgumentException",true); } + }; // struct CImgArgumentException { ... + + // The CImgDisplayException class is used to throw an exception related + // to display problems encountered in a library function call. + struct CImgDisplayException : public CImgException { + CImgDisplayException(const char *const format, ...) { _cimg_exception_err("CImgDisplayException",false); } + }; // struct CImgDisplayException { ... + + // The CImgInstanceException class is used to throw an exception related + // to an invalid instance encountered in a library function call. + struct CImgInstanceException : public CImgException { + CImgInstanceException(const char *const format, ...) { _cimg_exception_err("CImgInstanceException",true); } + }; // struct CImgInstanceException { ... + + // The CImgIOException class is used to throw an exception related + // to input/output file problems encountered in a library function call. + struct CImgIOException : public CImgException { + CImgIOException(const char *const format, ...) { _cimg_exception_err("CImgIOException",true); } + }; // struct CImgIOException { ... + + // The CImgWarningException class is used to throw an exception for warnings + // encountered in a library function call. + struct CImgWarningException : public CImgException { + CImgWarningException(const char *const format, ...) { _cimg_exception_err("CImgWarningException",false); } + }; // struct CImgWarningException { ... + + /*------------------------------------- + # + # Define cimg:: namespace + # + -----------------------------------*/ + //! Contains \a low-level functions and variables of the \CImg Library. + /** + Most of the functions and variables within this namespace are used by the \CImg library for low-level operations. + You may use them to access specific const values or environment variables internally used by \CImg. + \warning Never write using namespace cimg_library::cimg; in your source code. Lot of functions in the + cimg:: namespace have the same names as standard C functions that may be defined in the global + namespace ::. + **/ + namespace cimg { + + // Define traits that will be used to determine the best data type to work in CImg functions. + // + template struct type { + static const char* string() { + static const char* s[] = { "unknown", "unknown8", "unknown16", "unknown24", + "unknown32", "unknown40", "unknown48", "unknown56", + "unknown64", "unknown72", "unknown80", "unknown88", + "unknown96", "unknown104", "unknown112", "unknown120", + "unknown128" }; + return s[(sizeof(T)<17)?sizeof(T):0]; + } + static bool is_float() { return false; } + static bool is_inf(const T) { return false; } + static bool is_nan(const T) { return false; } + static bool is_finite(const T) { return true; } + static T min() { return ~max(); } + static T max() { return (T)1<<(8*sizeof(T) - 1); } + static T inf() { return max(); } + static T cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(T)val; } + static const char* format() { return "%s"; } + static const char* format_s() { return "%s"; } + static const char* format(const T& val) { static const char *const s = "unknown"; cimg::unused(val); return s; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "bool"; return s; } + static bool is_float() { return false; } + static bool is_inf(const bool) { return false; } + static bool is_nan(const bool) { return false; } + static bool is_finite(const bool) { return true; } + static bool min() { return false; } + static bool max() { return true; } + static bool inf() { return max(); } + static bool is_inf() { return false; } + static bool cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(bool)val; } + static const char* format() { return "%s"; } + static const char* format_s() { return "%s"; } + static const char* format(const bool val) { static const char* s[] = { "false", "true" }; return s[val?1:0]; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const unsigned char) { return false; } + static bool is_nan(const unsigned char) { return false; } + static bool is_finite(const unsigned char) { return true; } + static unsigned char min() { return 0; } + static unsigned char max() { return (unsigned char)-1; } + static unsigned char inf() { return max(); } + static unsigned char cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned char)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const unsigned char val) { return (unsigned int)val; } + }; + +#if defined(CHAR_MAX) && CHAR_MAX==255 + template<> struct type { + static const char* string() { static const char *const s = "char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const char) { return false; } + static bool is_nan(const char) { return false; } + static bool is_finite(const char) { return true; } + static char min() { return 0; } + static char max() { return (char)-1; } + static char inf() { return max(); } + static char cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned char)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const char val) { return (unsigned int)val; } + }; +#else + template<> struct type { + static const char* string() { static const char *const s = "char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const char) { return false; } + static bool is_nan(const char) { return false; } + static bool is_finite(const char) { return true; } + static char min() { return ~max(); } + static char max() { return (char)((unsigned char)-1>>1); } + static char inf() { return max(); } + static char cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(char)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const char val) { return (int)val; } + }; +#endif + + template<> struct type { + static const char* string() { static const char *const s = "signed char"; return s; } + static bool is_float() { return false; } + static bool is_inf(const signed char) { return false; } + static bool is_nan(const signed char) { return false; } + static bool is_finite(const signed char) { return true; } + static signed char min() { return ~max(); } + static signed char max() { return (signed char)((unsigned char)-1>>1); } + static signed char inf() { return max(); } + static signed char cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(signed char)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const signed char val) { return (int)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned short"; return s; } + static bool is_float() { return false; } + static bool is_inf(const unsigned short) { return false; } + static bool is_nan(const unsigned short) { return false; } + static bool is_finite(const unsigned short) { return true; } + static unsigned short min() { return 0; } + static unsigned short max() { return (unsigned short)-1; } + static unsigned short inf() { return max(); } + static unsigned short cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned short)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const unsigned short val) { return (unsigned int)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "short"; return s; } + static bool is_float() { return false; } + static bool is_inf(const short) { return false; } + static bool is_nan(const short) { return false; } + static bool is_finite(const short) { return true; } + static short min() { return ~max(); } + static short max() { return (short)((unsigned short)-1>>1); } + static short inf() { return max(); } + static short cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(short)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const short val) { return (int)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned int"; return s; } + static bool is_float() { return false; } + static bool is_inf(const unsigned int) { return false; } + static bool is_nan(const unsigned int) { return false; } + static bool is_finite(const unsigned int) { return true; } + static unsigned int min() { return 0; } + static unsigned int max() { return (unsigned int)-1; } + static unsigned int inf() { return max(); } + static unsigned int cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(unsigned int)val; } + static const char* format() { return "%u"; } + static const char* format_s() { return "%u"; } + static unsigned int format(const unsigned int val) { return val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "int"; return s; } + static bool is_float() { return false; } + static bool is_inf(const int) { return false; } + static bool is_nan(const int) { return false; } + static bool is_finite(const int) { return true; } + static int min() { return ~max(); } + static int max() { return (int)((unsigned int)-1>>1); } + static int inf() { return max(); } + static int cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(int)val; } + static const char* format() { return "%d"; } + static const char* format_s() { return "%d"; } + static int format(const int val) { return val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "unsigned int64"; return s; } + static bool is_float() { return false; } + static bool is_inf(const cimg_uint64) { return false; } + static bool is_nan(const cimg_uint64) { return false; } + static bool is_finite(const cimg_uint64) { return true; } + static cimg_uint64 min() { return 0; } + static cimg_uint64 max() { return (cimg_uint64)-1; } + static cimg_uint64 inf() { return max(); } + static cimg_uint64 cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(cimg_uint64)val; } + static const char* format() { return cimg_fuint64; } + static const char* format_s() { return cimg_fuint64; } + static unsigned long format(const cimg_uint64 val) { return (unsigned long)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "int64"; return s; } + static bool is_float() { return false; } + static bool is_inf(const cimg_int64) { return false; } + static bool is_nan(const cimg_int64) { return false; } + static bool is_finite(const cimg_int64) { return true; } + static cimg_int64 min() { return ~max(); } + static cimg_int64 max() { return (cimg_int64)((cimg_uint64)-1>>1); } + static cimg_int64 inf() { return max(); } + static cimg_int64 cut(const double val) { + return val<(double)min()?min():val>(double)max()?max():(cimg_int64)val; + } + static const char* format() { return cimg_fint64; } + static const char* format_s() { return cimg_fint64; } + static long format(const long val) { return (long)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "double"; return s; } + static bool is_float() { return true; } + static bool is_inf(const double val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const double val) { // Custom version that works with '-ffast-math' + if (sizeof(double)==8) { + cimg_uint64 u; + std::memcpy(&u,&val,sizeof(double)); + return ((unsigned int)(u>>32)&0x7fffffff) + ((unsigned int)u!=0)>0x7ff00000; + } +#ifdef isnan + return (bool)isnan(val); +#else + return !(val==val); +#endif + } + static bool is_finite(const double val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static double min() { return -DBL_MAX; } + static double max() { return DBL_MAX; } + static double inf() { +#ifdef INFINITY + return (double)INFINITY; +#else + return max()*max(); +#endif + } + static double nan() { +#ifdef NAN + return (double)NAN; +#else + const double val_nan = -std::sqrt(-1.); return val_nan; +#endif + } + static double cut(const double val) { return val; } + static const char* format() { return "%.17g"; } + static const char* format_s() { return "%g"; } + static double format(const double val) { return val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "float"; return s; } + static bool is_float() { return true; } + static bool is_inf(const float val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const float val) { // Custom version that works with '-ffast-math' + if (sizeof(float)==4) { + unsigned int u; + std::memcpy(&u,&val,sizeof(float)); + return (u&0x7fffffff)>0x7f800000; + } +#ifdef isnan + return (bool)isnan(val); +#else + return !(val==val); +#endif + } + static bool is_finite(const float val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static float min() { return -FLT_MAX; } + static float max() { return FLT_MAX; } + static float inf() { return (float)cimg::type::inf(); } + static float nan() { return (float)cimg::type::nan(); } + static float cut(const double val) { return (float)val; } + static float cut(const float val) { return (float)val; } + static const char* format() { return "%.9g"; } + static const char* format_s() { return "%g"; } + static double format(const float val) { return (double)val; } + }; + + template<> struct type { + static const char* string() { static const char *const s = "long double"; return s; } + static bool is_float() { return true; } + static bool is_inf(const long double val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const long double val) { +#ifdef isnan + return (bool)isnan(val); +#else + return !(val==val); +#endif + } + static bool is_finite(const long double val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static long double min() { return -LDBL_MAX; } + static long double max() { return LDBL_MAX; } + static long double inf() { return max()*max(); } + static long double nan() { const long double val_nan = -std::sqrt(-1.L); return val_nan; } + static long double cut(const long double val) { return val; } + static const char* format() { return "%.17g"; } + static const char* format_s() { return "%g"; } + static double format(const long double val) { return (double)val; } + }; + +#ifdef cimg_use_half + template<> struct type { + static const char* string() { static const char *const s = "half"; return s; } + static bool is_float() { return true; } + static bool is_inf(const long double val) { +#ifdef isinf + return (bool)isinf(val); +#else + return !is_nan(val) && (val::min() || val>cimg::type::max()); +#endif + } + static bool is_nan(const half val) { // Custom version that works with '-ffast-math' + if (sizeof(half)==2) { + short u; + std::memcpy(&u,&val,sizeof(short)); + return (bool)((u&0x7fff)>0x7c00); + } + return cimg::type::is_nan((float)val); + } + static bool is_finite(const half val) { +#ifdef isfinite + return (bool)isfinite(val); +#else + return !is_nan(val) && !is_inf(val); +#endif + } + static half min() { return (half)-65504; } + static half max() { return (half)65504; } + static half inf() { return max()*max(); } + static half nan() { const half val_nan = (half)-std::sqrt(-1.); return val_nan; } + static half cut(const double val) { return (half)val; } + static const char* format() { return "%.9g"; } + static const char* format_s() { return "%g"; } + static double format(const half val) { return (double)val; } + }; +#endif + + template struct superset { typedef T type; }; + template<> struct superset { typedef unsigned char type; }; + template<> struct superset { typedef char type; }; + template<> struct superset { typedef signed char type; }; + template<> struct superset { typedef unsigned short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef unsigned int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef unsigned short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef unsigned int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef short type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef unsigned int type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef int type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_uint64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef cimg_int64 type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + template<> struct superset { typedef double type; }; + +#ifdef cimg_use_half + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef float type; }; + template<> struct superset { typedef double type; }; +#endif + + template struct superset2 { + typedef typename superset::type>::type type; + }; + + template struct superset3 { + typedef typename superset::type>::type type; + }; + + template struct last { typedef t2 type; }; + +#define _cimg_Tt typename cimg::superset::type +#define _cimg_Tfloat typename cimg::superset::type +#define _cimg_tfloat typename cimg::superset::type +#define _cimg_Ttfloat typename cimg::superset2::type +#define _cimg_Ttdouble typename cimg::superset2::type + + // Define variables used internally by CImg. +#if cimg_display==1 + struct X11_static { + unsigned int nb_wins; + pthread_t *events_thread; + pthread_cond_t wait_event; + pthread_mutex_t wait_event_mutex; + CImgDisplay **wins; + Display *display; + unsigned int nb_bits; + bool is_blue_first; + bool is_shm_enabled; + bool byte_order; + +#ifdef cimg_use_xrandr + XRRScreenSize *resolutions; + Rotation curr_rotation; + unsigned int curr_resolution; + unsigned int nb_resolutions; +#endif + X11_static():nb_wins(0),events_thread(0),display(0), + nb_bits(0),is_blue_first(false),is_shm_enabled(false),byte_order(false) { +#ifdef __FreeBSD__ + XInitThreads(); +#endif + wins = new CImgDisplay*[1024]; + pthread_mutex_init(&wait_event_mutex,0); + pthread_cond_init(&wait_event,0); + +#ifdef cimg_use_xrandr + resolutions = 0; + curr_rotation = 0; + curr_resolution = nb_resolutions = 0; +#endif + } + + ~X11_static() { + delete[] wins; + /* + if (events_thread) { + pthread_cancel(*events_thread); + delete events_thread; + } + if (display) { } // XCloseDisplay(display); } + pthread_cond_destroy(&wait_event); + pthread_mutex_unlock(&wait_event_mutex); + pthread_mutex_destroy(&wait_event_mutex); + */ + } + }; // struct X11_static { ... +#if defined(cimg_module) + X11_static& X11_attr(); +#elif defined(cimg_main) + X11_static& X11_attr() { static X11_static val; return val; } +#else + inline X11_static& X11_attr() { static X11_static val; return val; } +#endif + +#elif cimg_display==2 + struct Win32_static { + HANDLE wait_event; + Win32_static() { wait_event = CreateEvent(0,FALSE_WIN,FALSE_WIN,0); } + }; // struct Win32_static { ... +#if defined(cimg_module) + Win32_static& Win32_attr(); +#elif defined(cimg_main) + Win32_static& Win32_attr() { static Win32_static val; return val; } +#else + inline Win32_static& Win32_attr() { static Win32_static val; return val; } +#endif +#endif +#define cimg_lock_display() cimg::mutex(15) +#define cimg_unlock_display() cimg::mutex(15,0) + + struct Mutex_static { +#if cimg_OS==1 && (defined(cimg_use_pthread) || cimg_display==1) + pthread_mutex_t mutex[32]; + Mutex_static() { for (unsigned int i = 0; i<32; ++i) pthread_mutex_init(&mutex[i],0); } + void lock(const unsigned int n) { pthread_mutex_lock(&mutex[n]); } + void unlock(const unsigned int n) { pthread_mutex_unlock(&mutex[n]); } + int trylock(const unsigned int n) { return pthread_mutex_trylock(&mutex[n]); } +#elif cimg_OS==2 + HANDLE mutex[32]; + Mutex_static() { for (unsigned int i = 0; i<32; ++i) mutex[i] = CreateMutex(0,FALSE_WIN,0); } + void lock(const unsigned int n) { WaitForSingleObject(mutex[n],INFINITE); } + void unlock(const unsigned int n) { ReleaseMutex(mutex[n]); } + int trylock(const unsigned int) { return 0; } +#else + Mutex_static() {} + void lock(const unsigned int) {} + void unlock(const unsigned int) {} + int trylock(const unsigned int) { return 0; } +#endif + }; // struct Mutex_static { ... +#if defined(cimg_module) + Mutex_static& Mutex_attr(); +#elif defined(cimg_main) + Mutex_static& Mutex_attr() { static Mutex_static val; return val; } +#else + inline Mutex_static& Mutex_attr() { static Mutex_static val; return val; } +#endif + +#if defined(cimg_use_magick) + struct Magick_static { + Magick_static() { + Magick::InitializeMagick(""); + } + }; // struct Magick_static { ... + static Magick_static _Magick_static; +#endif + +#if defined(cimg_use_fftw3) && !defined(cimg_use_fftw3_singlethread) + struct FFTW3_static { + FFTW3_static() { + fftw_init_threads(); + } + }; // struct FFTW3_static { ... + static FFTW3_static _FFTW3_static; +#endif + +#if cimg_display==1 + // Define keycodes for X11-based graphical systems. + const unsigned int keyESC = XK_Escape; + const unsigned int keyF1 = XK_F1; + const unsigned int keyF2 = XK_F2; + const unsigned int keyF3 = XK_F3; + const unsigned int keyF4 = XK_F4; + const unsigned int keyF5 = XK_F5; + const unsigned int keyF6 = XK_F6; + const unsigned int keyF7 = XK_F7; + const unsigned int keyF8 = XK_F8; + const unsigned int keyF9 = XK_F9; + const unsigned int keyF10 = XK_F10; + const unsigned int keyF11 = XK_F11; + const unsigned int keyF12 = XK_F12; + const unsigned int keyPAUSE = XK_Pause; + const unsigned int key1 = XK_1; + const unsigned int key2 = XK_2; + const unsigned int key3 = XK_3; + const unsigned int key4 = XK_4; + const unsigned int key5 = XK_5; + const unsigned int key6 = XK_6; + const unsigned int key7 = XK_7; + const unsigned int key8 = XK_8; + const unsigned int key9 = XK_9; + const unsigned int key0 = XK_0; + const unsigned int keyBACKSPACE = XK_BackSpace; + const unsigned int keyINSERT = XK_Insert; + const unsigned int keyHOME = XK_Home; + const unsigned int keyPAGEUP = XK_Page_Up; + const unsigned int keyTAB = XK_Tab; + const unsigned int keyQ = XK_q; + const unsigned int keyW = XK_w; + const unsigned int keyE = XK_e; + const unsigned int keyR = XK_r; + const unsigned int keyT = XK_t; + const unsigned int keyY = XK_y; + const unsigned int keyU = XK_u; + const unsigned int keyI = XK_i; + const unsigned int keyO = XK_o; + const unsigned int keyP = XK_p; + const unsigned int keyDELETE = XK_Delete; + const unsigned int keyEND = XK_End; + const unsigned int keyPAGEDOWN = XK_Page_Down; + const unsigned int keyCAPSLOCK = XK_Caps_Lock; + const unsigned int keyA = XK_a; + const unsigned int keyS = XK_s; + const unsigned int keyD = XK_d; + const unsigned int keyF = XK_f; + const unsigned int keyG = XK_g; + const unsigned int keyH = XK_h; + const unsigned int keyJ = XK_j; + const unsigned int keyK = XK_k; + const unsigned int keyL = XK_l; + const unsigned int keyENTER = XK_Return; + const unsigned int keySHIFTLEFT = XK_Shift_L; + const unsigned int keyZ = XK_z; + const unsigned int keyX = XK_x; + const unsigned int keyC = XK_c; + const unsigned int keyV = XK_v; + const unsigned int keyB = XK_b; + const unsigned int keyN = XK_n; + const unsigned int keyM = XK_m; + const unsigned int keySHIFTRIGHT = XK_Shift_R; + const unsigned int keyARROWUP = XK_Up; + const unsigned int keyCTRLLEFT = XK_Control_L; + const unsigned int keyAPPLEFT = XK_Super_L; + const unsigned int keyALT = XK_Alt_L; + const unsigned int keySPACE = XK_space; + const unsigned int keyALTGR = XK_Alt_R; + const unsigned int keyAPPRIGHT = XK_Super_R; + const unsigned int keyMENU = XK_Menu; + const unsigned int keyCTRLRIGHT = XK_Control_R; + const unsigned int keyARROWLEFT = XK_Left; + const unsigned int keyARROWDOWN = XK_Down; + const unsigned int keyARROWRIGHT = XK_Right; + const unsigned int keyPAD0 = XK_KP_0; + const unsigned int keyPAD1 = XK_KP_1; + const unsigned int keyPAD2 = XK_KP_2; + const unsigned int keyPAD3 = XK_KP_3; + const unsigned int keyPAD4 = XK_KP_4; + const unsigned int keyPAD5 = XK_KP_5; + const unsigned int keyPAD6 = XK_KP_6; + const unsigned int keyPAD7 = XK_KP_7; + const unsigned int keyPAD8 = XK_KP_8; + const unsigned int keyPAD9 = XK_KP_9; + const unsigned int keyPADADD = XK_KP_Add; + const unsigned int keyPADSUB = XK_KP_Subtract; + const unsigned int keyPADMUL = XK_KP_Multiply; + const unsigned int keyPADDIV = XK_KP_Divide; + +#elif cimg_display==2 + // Define keycodes for Windows. + const unsigned int keyESC = VK_ESCAPE; + const unsigned int keyF1 = VK_F1; + const unsigned int keyF2 = VK_F2; + const unsigned int keyF3 = VK_F3; + const unsigned int keyF4 = VK_F4; + const unsigned int keyF5 = VK_F5; + const unsigned int keyF6 = VK_F6; + const unsigned int keyF7 = VK_F7; + const unsigned int keyF8 = VK_F8; + const unsigned int keyF9 = VK_F9; + const unsigned int keyF10 = VK_F10; + const unsigned int keyF11 = VK_F11; + const unsigned int keyF12 = VK_F12; + const unsigned int keyPAUSE = VK_PAUSE; + const unsigned int key1 = '1'; + const unsigned int key2 = '2'; + const unsigned int key3 = '3'; + const unsigned int key4 = '4'; + const unsigned int key5 = '5'; + const unsigned int key6 = '6'; + const unsigned int key7 = '7'; + const unsigned int key8 = '8'; + const unsigned int key9 = '9'; + const unsigned int key0 = '0'; + const unsigned int keyBACKSPACE = VK_BACK; + const unsigned int keyINSERT = VK_INSERT; + const unsigned int keyHOME = VK_HOME; + const unsigned int keyPAGEUP = VK_PRIOR; + const unsigned int keyTAB = VK_TAB; + const unsigned int keyQ = 'Q'; + const unsigned int keyW = 'W'; + const unsigned int keyE = 'E'; + const unsigned int keyR = 'R'; + const unsigned int keyT = 'T'; + const unsigned int keyY = 'Y'; + const unsigned int keyU = 'U'; + const unsigned int keyI = 'I'; + const unsigned int keyO = 'O'; + const unsigned int keyP = 'P'; + const unsigned int keyDELETE = VK_DELETE; + const unsigned int keyEND = VK_END; + const unsigned int keyPAGEDOWN = VK_NEXT; + const unsigned int keyCAPSLOCK = VK_CAPITAL; + const unsigned int keyA = 'A'; + const unsigned int keyS = 'S'; + const unsigned int keyD = 'D'; + const unsigned int keyF = 'F'; + const unsigned int keyG = 'G'; + const unsigned int keyH = 'H'; + const unsigned int keyJ = 'J'; + const unsigned int keyK = 'K'; + const unsigned int keyL = 'L'; + const unsigned int keyENTER = VK_RETURN; + const unsigned int keySHIFTLEFT = VK_SHIFT; + const unsigned int keyZ = 'Z'; + const unsigned int keyX = 'X'; + const unsigned int keyC = 'C'; + const unsigned int keyV = 'V'; + const unsigned int keyB = 'B'; + const unsigned int keyN = 'N'; + const unsigned int keyM = 'M'; + const unsigned int keySHIFTRIGHT = VK_SHIFT; + const unsigned int keyARROWUP = VK_UP; + const unsigned int keyCTRLLEFT = VK_CONTROL; + const unsigned int keyAPPLEFT = VK_LWIN; + const unsigned int keyALT = VK_LMENU; + const unsigned int keySPACE = VK_SPACE; + const unsigned int keyALTGR = VK_CONTROL; + const unsigned int keyAPPRIGHT = VK_RWIN; + const unsigned int keyMENU = VK_APPS; + const unsigned int keyCTRLRIGHT = VK_CONTROL; + const unsigned int keyARROWLEFT = VK_LEFT; + const unsigned int keyARROWDOWN = VK_DOWN; + const unsigned int keyARROWRIGHT = VK_RIGHT; + const unsigned int keyPAD0 = 0x60; + const unsigned int keyPAD1 = 0x61; + const unsigned int keyPAD2 = 0x62; + const unsigned int keyPAD3 = 0x63; + const unsigned int keyPAD4 = 0x64; + const unsigned int keyPAD5 = 0x65; + const unsigned int keyPAD6 = 0x66; + const unsigned int keyPAD7 = 0x67; + const unsigned int keyPAD8 = 0x68; + const unsigned int keyPAD9 = 0x69; + const unsigned int keyPADADD = VK_ADD; + const unsigned int keyPADSUB = VK_SUBTRACT; + const unsigned int keyPADMUL = VK_MULTIPLY; + const unsigned int keyPADDIV = VK_DIVIDE; + +#else + // Define random keycodes when no display is available. + // (should rarely be used then!). + const unsigned int keyESC = 1U; //!< Keycode for the \c ESC key (architecture-dependent) + const unsigned int keyF1 = 2U; //!< Keycode for the \c F1 key (architecture-dependent) + const unsigned int keyF2 = 3U; //!< Keycode for the \c F2 key (architecture-dependent) + const unsigned int keyF3 = 4U; //!< Keycode for the \c F3 key (architecture-dependent) + const unsigned int keyF4 = 5U; //!< Keycode for the \c F4 key (architecture-dependent) + const unsigned int keyF5 = 6U; //!< Keycode for the \c F5 key (architecture-dependent) + const unsigned int keyF6 = 7U; //!< Keycode for the \c F6 key (architecture-dependent) + const unsigned int keyF7 = 8U; //!< Keycode for the \c F7 key (architecture-dependent) + const unsigned int keyF8 = 9U; //!< Keycode for the \c F8 key (architecture-dependent) + const unsigned int keyF9 = 10U; //!< Keycode for the \c F9 key (architecture-dependent) + const unsigned int keyF10 = 11U; //!< Keycode for the \c F10 key (architecture-dependent) + const unsigned int keyF11 = 12U; //!< Keycode for the \c F11 key (architecture-dependent) + const unsigned int keyF12 = 13U; //!< Keycode for the \c F12 key (architecture-dependent) + const unsigned int keyPAUSE = 14U; //!< Keycode for the \c PAUSE key (architecture-dependent) + const unsigned int key1 = 15U; //!< Keycode for the \c 1 key (architecture-dependent) + const unsigned int key2 = 16U; //!< Keycode for the \c 2 key (architecture-dependent) + const unsigned int key3 = 17U; //!< Keycode for the \c 3 key (architecture-dependent) + const unsigned int key4 = 18U; //!< Keycode for the \c 4 key (architecture-dependent) + const unsigned int key5 = 19U; //!< Keycode for the \c 5 key (architecture-dependent) + const unsigned int key6 = 20U; //!< Keycode for the \c 6 key (architecture-dependent) + const unsigned int key7 = 21U; //!< Keycode for the \c 7 key (architecture-dependent) + const unsigned int key8 = 22U; //!< Keycode for the \c 8 key (architecture-dependent) + const unsigned int key9 = 23U; //!< Keycode for the \c 9 key (architecture-dependent) + const unsigned int key0 = 24U; //!< Keycode for the \c 0 key (architecture-dependent) + const unsigned int keyBACKSPACE = 25U; //!< Keycode for the \c BACKSPACE key (architecture-dependent) + const unsigned int keyINSERT = 26U; //!< Keycode for the \c INSERT key (architecture-dependent) + const unsigned int keyHOME = 27U; //!< Keycode for the \c HOME key (architecture-dependent) + const unsigned int keyPAGEUP = 28U; //!< Keycode for the \c PAGEUP key (architecture-dependent) + const unsigned int keyTAB = 29U; //!< Keycode for the \c TAB key (architecture-dependent) + const unsigned int keyQ = 30U; //!< Keycode for the \c Q key (architecture-dependent) + const unsigned int keyW = 31U; //!< Keycode for the \c W key (architecture-dependent) + const unsigned int keyE = 32U; //!< Keycode for the \c E key (architecture-dependent) + const unsigned int keyR = 33U; //!< Keycode for the \c R key (architecture-dependent) + const unsigned int keyT = 34U; //!< Keycode for the \c T key (architecture-dependent) + const unsigned int keyY = 35U; //!< Keycode for the \c Y key (architecture-dependent) + const unsigned int keyU = 36U; //!< Keycode for the \c U key (architecture-dependent) + const unsigned int keyI = 37U; //!< Keycode for the \c I key (architecture-dependent) + const unsigned int keyO = 38U; //!< Keycode for the \c O key (architecture-dependent) + const unsigned int keyP = 39U; //!< Keycode for the \c P key (architecture-dependent) + const unsigned int keyDELETE = 40U; //!< Keycode for the \c DELETE key (architecture-dependent) + const unsigned int keyEND = 41U; //!< Keycode for the \c END key (architecture-dependent) + const unsigned int keyPAGEDOWN = 42U; //!< Keycode for the \c PAGEDOWN key (architecture-dependent) + const unsigned int keyCAPSLOCK = 43U; //!< Keycode for the \c CAPSLOCK key (architecture-dependent) + const unsigned int keyA = 44U; //!< Keycode for the \c A key (architecture-dependent) + const unsigned int keyS = 45U; //!< Keycode for the \c S key (architecture-dependent) + const unsigned int keyD = 46U; //!< Keycode for the \c D key (architecture-dependent) + const unsigned int keyF = 47U; //!< Keycode for the \c F key (architecture-dependent) + const unsigned int keyG = 48U; //!< Keycode for the \c G key (architecture-dependent) + const unsigned int keyH = 49U; //!< Keycode for the \c H key (architecture-dependent) + const unsigned int keyJ = 50U; //!< Keycode for the \c J key (architecture-dependent) + const unsigned int keyK = 51U; //!< Keycode for the \c K key (architecture-dependent) + const unsigned int keyL = 52U; //!< Keycode for the \c L key (architecture-dependent) + const unsigned int keyENTER = 53U; //!< Keycode for the \c ENTER key (architecture-dependent) + const unsigned int keySHIFTLEFT = 54U; //!< Keycode for the \c SHIFTLEFT key (architecture-dependent) + const unsigned int keyZ = 55U; //!< Keycode for the \c Z key (architecture-dependent) + const unsigned int keyX = 56U; //!< Keycode for the \c X key (architecture-dependent) + const unsigned int keyC = 57U; //!< Keycode for the \c C key (architecture-dependent) + const unsigned int keyV = 58U; //!< Keycode for the \c V key (architecture-dependent) + const unsigned int keyB = 59U; //!< Keycode for the \c B key (architecture-dependent) + const unsigned int keyN = 60U; //!< Keycode for the \c N key (architecture-dependent) + const unsigned int keyM = 61U; //!< Keycode for the \c M key (architecture-dependent) + const unsigned int keySHIFTRIGHT = 62U; //!< Keycode for the \c SHIFTRIGHT key (architecture-dependent) + const unsigned int keyARROWUP = 63U; //!< Keycode for the \c ARROWUP key (architecture-dependent) + const unsigned int keyCTRLLEFT = 64U; //!< Keycode for the \c CTRLLEFT key (architecture-dependent) + const unsigned int keyAPPLEFT = 65U; //!< Keycode for the \c APPLEFT key (architecture-dependent) + const unsigned int keyALT = 66U; //!< Keycode for the \c ALT key (architecture-dependent) + const unsigned int keySPACE = 67U; //!< Keycode for the \c SPACE key (architecture-dependent) + const unsigned int keyALTGR = 68U; //!< Keycode for the \c ALTGR key (architecture-dependent) + const unsigned int keyAPPRIGHT = 69U; //!< Keycode for the \c APPRIGHT key (architecture-dependent) + const unsigned int keyMENU = 70U; //!< Keycode for the \c MENU key (architecture-dependent) + const unsigned int keyCTRLRIGHT = 71U; //!< Keycode for the \c CTRLRIGHT key (architecture-dependent) + const unsigned int keyARROWLEFT = 72U; //!< Keycode for the \c ARROWLEFT key (architecture-dependent) + const unsigned int keyARROWDOWN = 73U; //!< Keycode for the \c ARROWDOWN key (architecture-dependent) + const unsigned int keyARROWRIGHT = 74U; //!< Keycode for the \c ARROWRIGHT key (architecture-dependent) + const unsigned int keyPAD0 = 75U; //!< Keycode for the \c PAD0 key (architecture-dependent) + const unsigned int keyPAD1 = 76U; //!< Keycode for the \c PAD1 key (architecture-dependent) + const unsigned int keyPAD2 = 77U; //!< Keycode for the \c PAD2 key (architecture-dependent) + const unsigned int keyPAD3 = 78U; //!< Keycode for the \c PAD3 key (architecture-dependent) + const unsigned int keyPAD4 = 79U; //!< Keycode for the \c PAD4 key (architecture-dependent) + const unsigned int keyPAD5 = 80U; //!< Keycode for the \c PAD5 key (architecture-dependent) + const unsigned int keyPAD6 = 81U; //!< Keycode for the \c PAD6 key (architecture-dependent) + const unsigned int keyPAD7 = 82U; //!< Keycode for the \c PAD7 key (architecture-dependent) + const unsigned int keyPAD8 = 83U; //!< Keycode for the \c PAD8 key (architecture-dependent) + const unsigned int keyPAD9 = 84U; //!< Keycode for the \c PAD9 key (architecture-dependent) + const unsigned int keyPADADD = 85U; //!< Keycode for the \c PADADD key (architecture-dependent) + const unsigned int keyPADSUB = 86U; //!< Keycode for the \c PADSUB key (architecture-dependent) + const unsigned int keyPADMUL = 87U; //!< Keycode for the \c PADMUL key (architecture-dependent) + const unsigned int keyPADDIV = 88U; //!< Keycode for the \c PADDDIV key (architecture-dependent) +#endif + + const double PI = 3.14159265358979323846; //!< Value of the mathematical constant PI + + // Define a 10x13 binary font (small sans). + static const char *const data_font_small[] = { + " UwlwnwoyuwHwlwmwcwlwnw[xuwowlwmwoyuwRwlwnxcw Mw (wnwnwuwpwuypwuwoy" + "ZwnwmwuwowuwmwnwnwuwowuwfwuxnwnwmwuwpwuypwuwZwnwnwtwpwtwow'y Hw cwnw >{ jw %xdxZwdw_wexfwYwkw 7yowoyFx=w " + "ry qw %wuw !xnwkwnwoyuwfwuw[wkwnwcwowrwpwdwuwoxuwpwkwnwoyuwRwkwnwbwpwNyoyoyoyoy;wdwnxpxtxowG|!ydwnwuwowtwow" + "pxswqxlwnxnxmwDwoyoxnyoymwp{oyq{pyoy>ypwqwpwp{oyqzo{q{pzrwrwowlwqwswpwnwqwsxswpypzoyqzozq}swrwrwqwtwswswtxsxswq" + "ws}qwnwkwnydwew_wfwdwkwmwowkw(w0wmwmwGwtwdxQw swuwnwo{q{pynwp|rwtwtwqydwcwcwcwmwmxgwqwpwnzpwuwpzoyRzoyoyexnynwd" + "z\\xnxgxrwsxrwsyswowmwmwmwmwmwmwo}ryp{q{q{q{nwmwnwmwozqxswpyoyoyoyoyeyuwswrwrwrwrwrwrwrwrwqwrwmwtwnwmwnwuwpwuyp" + "wuwoyZwmwnwuwowuwmwqwkwuwowuwoxnwuxowmwnwuwpwuypwuwZwmwnwuwowuwnwowmwtw\\wuwuwqwswqwswqwswqwswEwqwtweypzr~qyIw " + "rwswewnwuwowuwozswtwuwqwtwmwnwlwowuwuwowOxpxuxqwuwowswqwswoxpwlwjwqwswqwswy~}P{|k~-{|w~}k{|w~}Ww~|S{|k~X{|v~vv~|Y{|}k~}|Z{|y~" + "}y|xy|}w~| s{|}k~}|Z{|l~|V{}p~}\"{|y~}|w{|}w~|V{|}|u{|v~P{}x~} {{}h~} N{|~y}y|}x~|S{|v~}|y{|}w~}2{|w~y}x~|g{}x" + "~|k{|w~y}x~|g{}x~|kx}|w{|}w~}k{}x~}%{}t~|P{}t~|P{}t~|P{}t~|P{}t~|P{}t~}W{|[~}e{}f~}b{}c~|a{}c~|a{}c~|a{}c~|X{}w" + "~}M{}w~}M{}w~}M{}w~}Z{|d~}|`{}t~}kv~b{|g~}]{|g~}]{|g~}]{|g~}]{|g~}){|g~|{|w~|h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f" + "{|v~h{}w~}f{|v~|j{|v~|b{}w~}L{|u~}|w{|}v~|W{|w~|Iw~}Qw~x{}x~|V{}y~}x{}s~|X{|v~|wv~}Vx~}v{|x~| D{}x~}I{}w~Q{}x~|" + "xw~U{}w~}w{|v~T{|w~|J{|w~Q{|x~}x{|x~|V{|v~vv~|T{}q~}|Wx~|x{}s~T{|w~I{|w~|R{|x~}x{}x~|Vx~}x{}s~|X{|v~vv~| Fw~}J{" + "|w~|R{|x~}x{|x~}Uv~|w{}w~}Q{|w~|Ww~}Hv~}w{}w~} Pw~}y{|x~}cY~ i{}y~|#{|w~}Qm~|`m~}w{|m~|\\{}v~| ;{}`~} -" + "{|r~x}t~}$v~}R{}x~}vw~}S{|w~t{|x~}U{|y~|_{|w~}w{}w~|n{}x~}_{|t~w}u~|Q{}x~}K{}w~N{}x~}Jx~ +{|w~Xs~y}s~|\\m~}X{}" + "f~\\{}g~}R{|s~}\\{|g~}Y{|i~|`{}c~|_{|s~w}s~}]{|s~x}s~ hr~}r~|[{|f~}Xs~}Y{}d~|\\{|c~}g{}b~|^{}c~|`{}e~_{|a~|g{" + "}w~}hv~|Y{}w~}M{}w~}W{}w~}n{|u~|_{}w~}V{}s~}jr~|h{}s~|lv~c{|p~}q~}^{}f~}_{|p~}q~}`{}e~[{}q~}p~dZ~g{|v~h{}w~}h{|" + "v~|f{|v~p{|v~m{|t~}m{}w~}m{|v~|m{}v~c{}v~jv~}e\\~]{|w~}Nw~}D{|w~|Sp~| ww~|!w~} `{|w~|${}w~}!w~}Cv~Lv~Tw~}Dv~ " + " Ov~ !{}w~}Mw~|N{|v~ :{}v~|s{|v~V{|t}|V{|t~s}w~| p{|v~ {{|v~|t{|v~|Vs~}W{}c~|_{}d~}c{|d~|W{|v~Y{}^~|iv~" + "}r{|v~qv~}f{|p~}q~}${}r~} v{}w~ v{}q~| ?y~}Ps~x}u~,v~k{}w~|Ww~|Su~}v|}w~X{|v~vv~|Z{}v~}y|wy|}v~}[{|}q{}x~} t{}" + "v~}y|wy|}v~}&{}w~|x{|w~}#y|r{}x~}Kw~|R{|w~ {{}p~}v|x~} H{}x~|S{}w~t{}w~|3x|x{}x~|h{|x~}j{|}|x{}x~|h{|x~}`{|w~l{" + "|w~$s~}Ps~}Ps~}Ps~}Ps~}Pr~W{}[~}g{|c~}c{}c~|a{}c~|a{}c~|a{}c~|X{}w~}M{}w~}M{}w~}M{}w~}Z{|b~}a{}s~|lv~c{|p~}q~}_" + "{|p~}q~}_{|p~}q~}_{|p~}q~}_{|p~}q~}+{|p~}q~}w~|g{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}e{}v~jv~}a{}w~}Lu~r{" + "|v~V{|w~J{}x~}Q{}x~|w{}x~Vx~|w{}u~}Vv|vv|U{}x~}x|}w~ Bw~|K{|w~|R{|x~}w{|x~}Vu|vv|S{|w~K{|w~|Qx~}v{}x~Uv|vv|T{|}" + "t~}|Tx~|w{|u~|S{}x~}Jw~}Qw~vw~Vx~|w{}u~}Vv|vv| Dw~|Kw~|Qw~v{}x~|Vv|vv|Pw~|Vw~}Hv|uv| G{|t}|P{|t}|P{|t}|P{|t}|P{" + "|t}|Lw~|xw~c{|[~} iy~}\"u~|S{|l~a{}l~|x{}l~]{}t~ ={|^~} .{|u~}|u{|}w~}$v~}R{}x~}vw~}S{}x~}t{}x~}Xy|y}y~y}x" + "|cw~}u{}w~o{|w~^u~}t{|}y~|Q{}x~}Kw~|N{|w~|T{}sx~s{} 4{}x~}Y{}v~}|v{}u~\\m~}X{}v~y}|wy|s~]{}x~}x|v{|}t~}Sr~}\\{" + "|v~k|Z{|t~}|v{|y}y~|`h|u~^t~|u{|}u~|^u~}|v{|}v~} iv~y|v{|t~]{|o~y}p~|[{|r~|Z{}w~}q|}s~]{|s~}|t{|}u~}g{}w~}r|y" + "}q~}_{}w~}h|_{}w~}j|`{|s~}|s{|}t~|g{}w~}hv~|Y{}w~}M{}w~}W{}w~}o{}u~|^{}w~}V{}r~k{|r~|h{}r~lv~d{|t~}|uy|s~_{}w~}" + "s|y}t~}a{|t~}|uy|s~a{}w~}s|y}s~]{}u~}|ty|}v~dn|}v~}n|g{|v~h{}w~}gv~}f{}w~}ov~|n{|t~}mv~|l{}v~|o{|v~|bv~}l{}v~dc" + "|u~}]{|w~}N{}w~D{|w~|T{}o~| x{|w~!w~} `{|w~|${}w~ w~} >w~}Dv~ Ov~ !{}w~|Mw~|M{}w~ :v~|q{}w~|Xp~}X{}v~|p{|" + "}| o{}w~| v~|r{|v~W{|r~|X{}v~}i|^{}w~}h|d{|s~}y|xy|}s~}[{|y}u~y}y|]{}w~}h|v~|iv~}r{|v~qv~}g{|t~}|uy|s~&{}p" + "~} w{}w~ w{}o~| @y~}Q{}v~}|u{|}y~,{|w~}m{|w~}Vw~|T{|v~|s{|}~({|w~}|o{|}w~|P{}x~| w{|w~}|o{|}w~|(x~}tw~ rw~K{}x" + "~|Rw~ {{}o~}w{|x~} H{}x~|T{|w~r{}x~}-{}x~|hw~|d{}x~|hw~|_{}x~|mw~|%{|r~|R{|r~|R{|r~|R{|r~|R{|r~|R{}r~|Y{|v~|y{|" + "v~}h|h{|s~}|t{|}u~}c{}w~}h|`{}w~}h|`{}w~}h|`{}w~}h|W{}w~}M{}w~}M{}w~}M{}w~}Z{|v~r|x}q~b{}r~lv~d{|t~}|uy|s~a{|t~" + "}|uy|s~a{|t~}|uy|s~a{|t~}|uy|s~a{|t~}|uy|s~-{|t~}|u{|}q~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}dv~}l{}v~`" + "{}w~}M{|v~p{}w~|V{}x~}L{}x~}Q{|x~|ux~}Wx~|v{|w~} {{}q~| Aw~|Lw~|Qw~u{}x~| y{|x~}Lw~|Q{}x~tx~}#{|}r~}Rx~u{|}y~}|" + "Q{}x~}L{}x~}Q{}x~|v{|x~}Wx~|v{}w~} j{|w~L{}x~}Q{}x~|u{}x~ x{}x~}Uw~} b{|}p~}|V{|}p~}|V{|}p~}|V{|}p~}|V{|}p~}|" + "P{|w~|xx|av~|fv~| j{|y~|#{}t~Sk~|c{|k~}y{|k~}_{|s~} ?{}t~}y| u{|u~|p{}y~}$v~}R{}x~}vw~}Sw~|tw~|[{|}m~}|h{" + "|w~sw~|p{}x~|_{}v~|q{|}|Q{}x~}L{}w~Lw~}U{}y~|ux~u{|y~}U{|x}| `w~|Z{|v~}s{|v~}]w~y}y|{}w~}X{}x~|p{|u~|^y}|n{|u~" + "|U{}x~y}w~}\\{|w~}K{|u~}o{}|Mv~|_{}v~}q{|u~_{}v~}r{|v~| jy~}|qu~|_{}t~}y|s{|}t~}\\{}w~}w~}Z{}w~}o{|u~}_{|t~|n" + "{|}x~}g{}w~}n{|}t~}`{}w~}L{}w~}P{|t~}m{|}w~|g{}w~}hv~|Y{}w~}M{}w~}W{}w~}p{}u~|]{}w~}V{}w~}w~|l{}r~|h{}r~|mv~e{|" + "u~}|p{|t~`{}w~}q{|}u~|c{|u~}|p{|t~b{}w~}p{}u~|_{|u~|n{|}y~W{|v~|Z{|v~h{}w~}g{|v~fv~|o{}w~}n{}x~}w~mv~|kv~}ov~}a" + "{|v~|n{|v~|M{}v~}\\{|w~}N{|w~|E{|w~|U{}v~}{|u~| x{|x~}\"w~} `{|w~|$v~ w~} >w~}Dv~ Ov~ !v~Lw~|M{}w~| <{|w~" + "}p{|w~}Xn~|Zv~ _{|v~ !{|w~}p{}w~}X{}w~}w~}W{}v~|M{}w~}R{|t~|p{|t~|_{|}l~}|`{}w~}hv~|iv~}r{|v~qv~}h{|u~}|p{|" + "t~({}n~} x{}w~ x{}m~| Ay~}R{|v~}p{}+{}w~|nv~Uw~|T{}w~| x{|w~|k{|w~|Q{|x~| x{|w~|k{|w~|*{|x~rx~|R{|w}Fw~Kw~|S{}" + "x~| {|n~}w{|x~} H{}x~|T{}x~}qw~|.{}x~|i{}x~}c{}x~|i{}x~}^{}x~|n{}x~}${}w~}w~}R{}w~}w~}R{}w~}w~}R{}w~}w~}R{}w~}w" + "~}Rv~|w~}Y{}w~}x{|v~U{|t~|n{|}x~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~n{|}s~c{}r~|mv~e{|u~}|p{|" + "t~c{|u~}|p{|t~c{|u~}|p{|t~c{|u~}|p{|t~c{|u~}|p{|t~/{|u~}|p{}t~}e{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}d{|v" + "~|n{|v~|`{}w~}M{}w~}ow~}U{}x~|N{|w~Px~}t{|x~|Xx|sy| w{}s~| @{|w~M{}x~|Q{}x~|tw~ x{}x~}N{}x~|Q{|x~|t{|x~|&{}t~}v" + "~} t{}x~|N{|x~}Q{|x~}t{}x~|Xx|sy| g{|x~}N{|x~}Q{|x~}sx~} {{|x~}Tw~} d{|j~|Z{|j~|Z{|j~|Z{|j~|Z{|j~|R{|w~Z{}w~}" + "g{}w~} Ay|J{}y~#{|s~}Tk~}c{}j~|{}j~_q~| A{}u~} q{}v~|n{}~}$v~}R{}x~}vw~}Sw~t{|w~\\{|h~|i{}x~}s{}x~}q{|x~}^" + "v~|C{}x~}Lw~}L{}w~V{|v~|wx~w{|v~|V{}w~ a{|w~Yv~}q{|v~|^{}y|u{}w~}Xy}|m{|u~M{|v~}V{|w~|}w~}\\{|w~}Ku~|?{|v~^u~o" + "{}v~|a{|v~}p{}v~ j{~|nv~}`u~}|l{|}u~]v~{v~Z{}w~}mu~_u~}j{|y~}g{}w~}l{|}u~}a{}w~}L{}w~}Q{|u~}i{|}y~|g{}w~}hv~|" + "Y{}w~}M{}w~}W{}w~}q{}u~|\\{}w~}V{}w~|w~}lw~|v~|h{}q~mv~f{|u~}m{|u~}a{}w~}o{}v~}d{|u~}m{|u~}c{}w~}o{|u~_{}v~|j{|" + "W{|v~|Z{|v~h{}w~}fv~|h{}v~n{}w~}nw~|w~|o{|v~j{|v~}q{}v~_{}v~nv~}M{|u~[{|w~}Mw~}E{|w~|V{}v~}x{|u~| vw~} `{|w~|$" + "w~} w~} >w~}Dv~ Ov~ !v~Lw~|M{}w~| <{}w~|ow~}Xm~|[v~ ^v~| \"v~|p{|v~Xv~{v~V{}v~|N{}w~}Ru~}l{}u~|b{|g~}" + "|b{}w~}hv~|iv~}r{|v~qv~}i{|u~}m{|u~}*{}l~} y{}w~ y{}k~| By~}R{}v~ y{|w~}o{|w~}Uw~|T{}w~ x{|x~}g{}x~|R{|x~} y{|" + "x~}g{}x~|+{}y~}r{}y~}R{}w~Fx~}M{|}w~ Mm~}w{|x~} H{}x~|Tw~p{}x~|.{}x~|j{|w~b{}x~|j{|w~]w~n{|w~#v~{v~Rv~{v~Rv~{v~" + "Rv~{v~Rv~{v~S{|w~}{}w~|Zv~|x{|v~Uu~}j{|y~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~k{}t~d{}q~mv~f{|" + "u~}m{|u~}e{|u~}m{|u~}e{|u~}m{|u~}e{|u~}m{|u~}e{|u~}m{|u~}1{|u~}m{|u~}e{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w" + "~}c{}v~nv~}_{}w~}Mv~n{}w~Tw}N{|x}P{|x}r{|x} F{|}x~}| ={|x}|O{|x}|Px}|s{|x}| xw|Nw|Pw|rw|'{|v~}|y{|v~} tw}Nw}P{|" + "x}rx}| 6w|Nw|Ox|rw| Nw~} e{}h~}\\{}h~}\\{}h~}\\{}h~}\\{}h~}S{|w~Z{|v~gv~| Ay~}L{|y~}${|q~}V{|j~ci~}|i~|a{}p~|" + "Oy|Uw|jw|Vu|Wv|kw|b{}v~} p{|v~|l{|}$v~}R{}x~}vw~}T{|x~}t{|x~}]{|g~|i{}x~|s{|w~qw~|^v~B{}x~}M{|w~|L{|w~}V{|}" + "w~}xx~x{}w~}|U{}w~ a{}w~Z{|v~o{}w~}U{}w~}X{|j{}v~|M{}v~Vw~}{}w~}\\{|w~}L{|v~|>v~}_{|v~|nv~}a{}v~nv~| \\{}w~}" + "b{|u~|h{|}v~|`{|w~}{}w~|[{}w~}m{|v~|a{}v~}gy}g{}w~}j{}u~|b{}w~}L{}w~}Q{}v~}f{|~|g{}w~}hv~|Y{}w~}M{}w~}W{}w~}r{}" + "u~|[{}w~}V{}w~y|w~m{|w~{v~|h{}w~}v~|nv~f{}v~}ju~|b{}w~}nu~d{}v~}ju~|d{}w~}n{}v~|`v~}D{|v~|Z{|v~h{}w~}f{}w~}hv~}" + "n{|v~o{|w~{}x~}o{}w~}i{}v~|s{|v~|^v~}p{}v~M{|u~|[{|w~}M{}x~}E{|w~|W{}v~|v{|u~| ww~} `{|w~|$w~} w~} >w~}Dv~ " + "Ov~ !v~Lw~|M{|w~| <{}w~|ow~}Xy~}w|}t~[v~| _{}w~} #{|w~}n{}w~|Z{|w~}{}w~|Vu~|O{}w~}S{}v~}j{}u~c{}d~|c{}w~" + "}hv~|iv~}r{|v~qv~}i{}v~}ju~|,{}v~y}w~|v~} {{}w~ {{}v~y}w~|u~| Cy~}R{}w~}R{|ey|_{}w~|pv~Tw~|T{}w~ y{|x~}e{}x~|\\" + "{|}p~} {{|x~}e{}x~|,{}y~}r{}y~}R{}w~G{}x~|Rq~| N{|m~}w{|x~} H{}x~|U{|w~p{|x~}.{}x~|j{}x~|b{}x~|j{}x~|_{|w~|n{}" + "x~|${|w~}{}w~|T{|w~}{}w~|T{|w~}{}w~|T{|w~}{}w~|T{|w~}{}w~|T{}w~|{|w~}[{|v~w{|v~V{}v~}gy}c{}w~}M{}w~}M{}w~}M{}w~" + "}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~j{|u~}e{}w~}v~|nv~f{}v~}ju~|f{}v~}ju~|f{}v~}ju~|f{}v~}ju~|f{}v~}ju~|c{}d{}|d{}v~}" + "k{}u~|f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}bv~}p{}v~^{}m~y}|Yv~o{|}w~ Py~}|u{|v~} 2w~} f{" + "}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~T{|w~Yv~|i{|v~ A{}x~}M{}y~|$o~|W{|j~ch~}i~}" + "b{}n~T{|}t~y}|Zw~}kw~}X{}u~|X{}w~|m{}w~|d{|v~| ov~}j{|$v~}R{}x~}vw~}T{}x~}t{}x~}]u~}|{|y~|y{|y}x~|iw~|rw~r{" + "}x~}]v~B{}x~}Mv~Jv~T{|}w~|{x~{|w~}|S{}w~ aw~}Z{}w~}o{|v~U{}w~}Ev~}M{|v~W{}w~y{}w~}\\{|w~}Lv~}>{|v~|_{|v~m{}w~}" + "av~|n{|v~ 8{|y}6{|~|4{}v~c{|v~}d{|v~`{}w~|{|w~}[{}w~}lv~|b{|v~}e{|g{}w~}i{}u~b{}w~}L{}w~}R{|v~}dy|g{}w~}hv~|Y{}" + "w~}M{}w~}W{}w~}s{}u~Y{}w~}V{}w~|{w~|nw~}{v~|h{}w~y|v~nv~g{|v~}i{|u~b{}w~}n{|v~|f{|v~}i{|u~d{}w~}n{|v~|a{|v~C{|v" + "~|Z{|v~h{}w~}f{|v~|j{|v~|mv~|p{|w~{|x~}ov~|hv~}sv~}]{|v~|r{|v~|Mu~|Z{|w~}M{|w~E{|w~|X{}v~|t{|u~| xw~} `{|w~|$w" + "~} w~} >w~}Dv~ Ov~ !w~}Lw~|M{|w~| {|v~]{|v~m{}w~}b{|w~}l{}w~}W{|v}M{}v~D{}r~}6{|r~}|>{|v~|e{}w~|^{|w~|dv~w{|v~\\{}w~}lv~|c{}v~N{}w~}g{}v~|d{" + "}w~}L{}w~}S{}v~L{}w~}hv~|Y{}w~}M{}w~}W{}w~}vu~}V{}w~}V{}w~|yw~}pw~}yv~|h{}w~|y{}w~}pv~h{}v~e{}v~|d{}w~}mv~}g{}v" + "~e{}v~|f{}w~}mv~}a{|v~C{|v~|Z{|v~h{}w~}dv~|l{|v~k{|v~q{|w~x{}x~}q{}w~}e{}v~wv~}Y{|v~|v{|v~|N{|v~}W{|w~}L{|w~F{|" + "w~|[{}v~l{}v~ S{|}k~|Zw~}y{|o~}V{|k~|\\{|o~}y{|w~|\\{|m~}X{}k~}Y{|o~}y{|w~|`w~}y{|o~}Sv~Lv~Tw~}o{|v~}Wv~_w~}y{|" + "o~|v{|o~|ew~}y{|o~}Y{|}n~}|[w~}y{|o~}Y{|o~}y{|w~|Zw~}y{|r~|[{}j~[{}i~]{|w~|m{}w~|b{}w~|k{|w~}i{|w~}q{|u~|q{|w~|" + "h{|v~|o{|v~}b{}w~|k{|w~}`d~Uw~}Lw~|M{|w~| n{|o~}vw~|av~o{}w~|M{|v~[{|o~}|U{}k~}]w~}y{|o~}_u~|k{|w~}Wu~X{|w~|m{" + "}w~|dv~|h{|v~_{}x~}x{}s~}__~|dv~t{}w~t{|w~}\\{}n~}Y{|}e~}f{|`~b{|w~}l{}w~|\\v~w{|v~T{|u~R{}w~}U{}v~dv~}i{}u~u{|" + "v~u{|u~|g{}w~}hv~|iv~}r{|v~qv~|k{}v~e{}v~|c{~}I{|y~}w{}w~w{|y~}I{}~|U{}w~T{}~|k{}~|\\y~}w{}w~w{|y~| v~}P{}k~Z{|" + "v~S{|v~}x{|}v~}|y{|v~}^{|w~}u{|w~}Rw~|S{|u~}${}y~|v{}v~}|wy|}y~u{|y~}c{|x~}r{|x~}Q{|q{| W{}y~|uw~vy|v~u{|y~}-w~" + "|v{|w~Q{}w~K{|w~|I{|w~'{|w~|m{}w~|a{}m~}w{|x~} H{}x~|U{|x~}p{|x~}]{|q{|X{}x~|m{|w~_{}x~|m{|w~]{|}w~}q{|w~Pv~|Sv" + "~w{|v~Vv~w{|v~Vv~w{|v~Vv~w{|v~Vv~w{|v~W{|v~vv~^{|v~|v{|v~X{}v~J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z" + "{|v~g{|v~}g{}w~|y{}w~}pv~h{}v~e{}v~|j{}v~e{}v~|j{}v~e{}v~|j{}v~e{}v~|j{}v~e{}v~|g{|u~l{}v~}g{}v~kw~}{}v~g{|v~h{" + "}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}`{|v~|v{|v~|\\{}w~}s|y}t~}_w~}u{|v~|Y{|}k~|Z{|}k~|Z{|}k~|Z{|}k~|Z{|}k~|Z{|" + "}k~|d{|}k~|v{|m~}_{|k~|[{|m~}W{|m~}W{|m~}W{|m~}Rv~Lv~Lv~Lv~Q{|}l~\\w~}y{|o~}Y{|}n~}|X{|}n~}|X{|}n~}|X{|}n~}|X{|" + "}n~}|S{}u~S{|}n~}{|x~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|b{}w~|k{|w~}aw~}y{|o~}^{}w~|k{|w~} X{|w~}" + "t{}w~t{|w~}f{|w~}h{|w~}f{|w~}yy|p{|}y{|w~}f{|w~}ly|y{|w~}f{|w~}h{|w~}X{}x~}X{|v~kv~| Cv~|Lx~&{|i~|Y{|m~}bU~|e{}" + "h~\\{|u~}|xy|}u~^w~}kw~}Yr~}X{}w~}ov~d{}w~ lv~| lv~}R{}x~}vw~}^{}Z~f{|w~|v{|y~|`w~|s{|w~tw~|[{|v~|D{}x~}Nw~" + "}H{}w~|Q{|t~|N{}w~ c{|w~|Zv~|lv~|W{}w~}E{}w~}M{}w~}Z{|w~|w{}w~}\\{|w~}N{|v~={}w~}\\v~|nv~|b{}w~}l{}v~W{}v~M{}v" + "~G{|}p~|6{|o~}@u~e{|w~|\\{}w~e{|w~}v{}w~|]{}w~}m{|v~|cv~}N{}w~}g{|v~}d{}w~}L{}w~}Sv~}L{}w~}hv~|Y{}w~}M{}w~}W{}w" + "~}x{|u~}U{}w~}V{}w~|y{}w~q{|w~|yv~|h{}w~|y{|v~pv~hv~}e{|v~}d{}w~}mv~}gv~}e{|v~}f{}w~}mv~}a{|v~|D{|v~|Z{|v~h{}w~" + "}d{}w~}l{}w~}jv~|r{|w~x{|x~}qv~|e{|v~}y{}v~W{}v~vv~}N{|u~V{|w~}Kw~|G{|w~|\\{}w~}j{}v~ T{}i~}[w~}{}m~}X{}j~|]{}m" + "~}{|w~|]{}j~Y{}k~}Z{}m~}{|w~|`w~}{|l~Tv~Lv~Tw~}p{}v~}Vv~_w~}{|m~|x{|m~|fw~}{|m~}[{|j~|\\w~}{}m~}[{}m~}{|w~|Zw~}" + "{|q~|\\{}i~[{}i~]{|w~|m{}w~|b{|w~}k{}w~|hw~}q{|u~}q{}w~|g{}v~ov~}a{|w~}k{}w~|`d~Uw~}Lw~|M{|w~| Gy|l{|Z{}m~}x{|w" + "~`v~p{|v~Kv~Z{|m~|X{}j~}]w~}{|l~`t~|l{}w~|X{|u~}Y{|w~|m{}w~|e{}v~f{}w~}b{|v~}y{|q~}`_~|dv~t{}w~t{|w~}^{|k~}[{|c" + "~}f{|`~b{}w~}l{}w~}]{|w~}vv~|T{|v~}S{}w~}Uv~}d{}v~j{|u~t{|v~t{|u~g{}w~}hv~|iv~}r{|v~r{|v~|kv~}e{|v~}dx~}I{|}v{}" + "w~v{|}I{}x~|V{}w~U{}x~|m{}x~|\\{|v{}w~vy| {{v~}R{|i~Z{|v~R{|v~}|q~}|v~}\\v~u{}w~Qw~|R{|t~|'{|y~}v{}w~}p{|t{}y~|" + "d{}x~|r{|x~}Ry}r{|~ X{|y~}tw~sw~|u{}y~|.{|w~}x|}w~|Q{}w~L{|w~|G{|x~}({|w~|m{}w~|a{}m~}w{|x~} H{}x~|U{|w~p{|x~}]" + "{~|r{|}Y{}x~|mw~|_{}x~|m{}x~|[{|w~|r{}x~|Pv~|T{|w~}v{}w~|X{|w~}v{}w~|X{|w~}v{}w~|X{|w~}v{}w~|X{|w~}v{}w~|X{}w~}" + "v{}w~}_{}w~}u{|v~Xv~}J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~fu~g{}w~|y{|v~pv~hv~}e{|v~}jv~}e{|v~}" + "jv~}e{|v~}jv~}e{|v~}jv~}e{|v~}f{|u~n{}v~}fv~}l{}x~}y{|v~|h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}_{}v~vv~}[" + "{}w~}q{|}u~|`w~}uv~W{}i~}[{}i~}[{}i~}[{}i~}[{}i~}[{}i~}e{}i~}x{}k~}a{}j~|\\{}j~Y{}j~Y{}j~Y{}j~Sv~Lv~Lv~Lv~R{}j~" + "}]w~}{|m~}[{|j~|Z{|j~|Z{|j~|Z{|j~|Z{|j~|T{}u~T{|f~`{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|b{|w~}k{}w~|a" + "w~}{}m~}_{|w~}k{}w~| Xw~}s{}w~s{}w~fw~}f{}w~fw~}y{|y~|r{|y~}y{}w~fw~}l{|y~}y{}w~fw~}f{}w~X{}x~}Wv~|m{|v~ C{}w~}" + "[{|}|o{|y~|&g~|Y{}n~|b{}V~e{|g~}]v~}r{|v~}_w~}kw~}Z{|r~}X{|v~p{|w~}dw~} pw|v~l| {{v~}R{}x~}vw~}^{}Z~f{|w~|v" + "{|y~|`{}x~}s{|x~}u{}x~}Y{}v~|E{}x~}O{|w~}H{}w~|S{|}r~}|P{}w~ c{|w~Yv~|lv~|W{}w~}Ev~|N{|v~|Zw~}v{}w~}\\{|w~}|}v" + "~y}|X{}w~}>{|v~|\\{}w~}o{|v~a{}w~}l{}v~W{}v~M{}v~J{|}p~}|2{|}p~}|D{}v~|e{}x~}p{|}w~}|vx|uw~|f{}w~|v{|w~}]{}w~}m" + "{}v~c{|v~|N{}w~}fv~}d{}w~}L{}w~}T{|v~|L{}w~}hv~|Y{}w~}M{}w~}W{}w~}y{|u~}T{}w~}V{}w~|y{|w~|r{}x~}xv~|h{}w~|x{}w~" + "}qv~i{|v~|dv~}d{}w~}mv~}h{|v~|dv~}f{}w~}n{|v~|`u~D{|v~|Z{|v~h{}w~}d{|v~m{|v~|j{}w~}r{}x~}x{|w~qv~|d{}v~y|v~|Vv~" + "}x{}v~Mu~|V{|w~}K{}x~}G{|w~|]{}w~}h{|v~ U{}u~v}s~}\\w~}|v~w}t~}Zr~v}v~|^{}t~w}v~}|w~|^{}t~v}t~Zv}v~s}[{}t~w}v~}" + "|w~|`w~}|u~x}t~}Uv~Lv~Tw~}q{}v~|Uv~_w~}|v~x}s~y{|v~x}s~fw~}|u~x}t~}]{|s~x}s~|]w~}|v~w}t~}]{|t~w}v~}|w~|Zw~}|t~}" + "x~|]{}t~u}u~[{|x}v~q}]{|w~|m{}w~|av~kv~g{}w~q{}t~qv~e{}v~q{}v~_v~|m{|v~_d~Uw~}Lw~|M{|w~| J{|}v~}r{}v~}|_{}u~w}u" + "~|y{}x~}`v~q{|v~}K{}w~|\\{}w~}p~}Z{}s~w}u~}]w~}|u~x}t~}as~m{|v~W{}t~Y{|w~|m{}w~|ev~|f{|v~c{|u~}yn~a_~|dv~t{}w~t" + "{|w~}_{|t~w}t~}]{|b~}f{|`~b{}w~|l{}w~}]{}w~|v{|w~}S{|v~}T{}w~}Uv~|d{|v~|k{}v~|t{|v~s{}v~|h{}w~}hv~|i{}w~}r{|v~r" + "{|v~|l{|v~|dv~}ev~}C{}w~C{}v~|W{}w~V{}v~n{|v~|W{}w~ sv~}S{|s~}y~x}v~Z{|v~Q{|e~}[{|w~}w{|w~}Qw~|R{}r~|){}y~|w{|w" + "~}g{|y~}dw~q{}x~}S{}~}s{}y~ X{}y~|tw~s{}x~}u{|y~}-{}p~}P{}w~M{|w~|F{|x~}({|w~|m{}w~|a{}m~}w{|x~} H{}x~|Tw~p{}x~" + "|]y~}s{|y~Z{}x~|n{|x~}^{}x~|n{|w~Y{|x~}s{|x~}Ov~|T{}w~|v{|w~}X{}w~|v{|w~}X{}w~|v{|w~}X{}w~|v{|w~}X{}w~|v{|w~}Xv" + "~u{|v~_v~|u{|v~Y{|v~|J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{}v~g{}w~|x{}w~}qv~i{|v~|dv~}k{|v~|d" + "v~}k{|v~|dv~}k{|v~|dv~}k{|v~|dv~}e{|u~p{}v~}f{|v~|m{}w~wv~}h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}^v~}x{}v" + "~Z{}w~}o{}v~}`w~}v{|w~|W{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}\\{}u~v}s~}f{}u~v}s~}{s~w}t~}cr~v}" + "v~|]{}t~v}t~[{}t~v}t~[{}t~v}t~[{}t~v}t~Tv~Lv~Lv~Lv~S{}h~|^w~}|u~x}t~}]{|s~x}s~|\\{|s~x}s~|\\{|s~x}s~|\\{|s~x}s~" + "|\\{|s~x}s~|U{}u~U{|s~x}q~|`{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|av~|m{|v~`w~}|v~w}t~}_v~|m{|v~ X{|w~" + "r{}w~rw~}h{|w~dw~}h{|w~y{|w~|t{|w~}yw~}h{|w~l{|w~}yw~}h{|w~dw~}Y{}x~}W{}w~}m{}w~} Xg|}v~s|e{|}x~}o{}y~&{}f~Y{|o" + "~}a{|V~f{|e~}_{|w~}p{|v~_w~}kw~}Z{}w~}v~Wv~|q{}w~}e{|w~ pc~} {{v~}R{|x}|v{|x}|^{}Z~f{|w~|v{|y~|`{|w~s{}x~}v" + "{|w~Wu~|F{|x}|O{}w~|H{|w~}U{|}w~|x~|w~}|R{}w~ c{}x~}Yv~|lv~|W{}w~}F{|v~N{|v~}Z{}w~u{}w~}\\{|k~}Z{}w~}x{|}u~y}|" + "L{}v~Zv~|pv~}a{|v~l{}v~|X{}v~M{}v~M{|}p~}|,{|}p~}|H{}v~|e{|w~q{|q~}y{}x~|v{|x~}fv~tv~]{}w~}n{}v~|c{|v~|N{}w~}f{" + "}v~d{}w~}L{}w~}T{}v~|L{}w~}hv~|Y{}w~}M{}w~}W{}w~}{|u~}S{}w~}V{}w~|xw~}rw~|xv~|h{}w~|x{|v~|rv~i{|v~|d{}v~d{}w~}n" + "{|v~|h{|v~|d{}v~f{}w~}n{}v~|`{}v~}|F{|v~|Z{|v~h{}w~}cv~|n{}v~i{}w~}rw~|ww~|s{|v~b{}q~}U{|v~|{|v~|N{}v~|U{|w~}K{" + "|w~G{|w~|^{}w~}f{|v~ V{}y~}|r{|u~|]r~|u{|u~}\\{}u~}s{|}y~|_{|u~|u{|}s~|_{}v~}|t{}v~}Vw~}T{|u~|u{|}s~|`r~|u{|u~|" + "Vv~Lv~Tw~}ru~|Tv~_r~|v{|}v~}{w~|u{}v~}gr~|u{|u~|^u~}|v{|}u~]r~|u{|u~|_{|u~|u{|}s~|Zr~}|v{|\\v~}|r{|}y~Wv~S{|w~|" + "m{}w~|a{}w~|m{|w~}g{}w~|rs~qw~}dv~}s{|v~|_{}w~}m{}w~|Nu~Uw~}Lw~|M{|w~| K{}r~u{|r~}a{|v~}|v{}v~yw~|`v~r{|u~|K{|w" + "~|]{}w~|xy|}t~}[u~}|s{|}~}]r~|u{|u~|ay|v~|n{}w~|X{|s~|Z{|w~|m{}w~|f{|v~dv~|e{|u~}|{|v~y|}v~}bx}u~q}u~x}|dv~t{}w" + "~t{|w~}_u~|u{|u~|_{|u~}|v{|}t~v}f{|q}u~p}b{}w~|l{|v~]v~tv~R{}v~}U{}w~}V{|v~|cv~}l{|v~}s{|v~s{|v~}h{}w~}hv~|i{}v" + "~r{|v~r{|v~|l{|v~|d{}v~fu~|C{}w~C{|u~|X{}w~W{}v~}m{}v~|X{}w~ sv~}T{|u~}|yy~}x{|}y~Z{|v~P{|g~}Y{}w~|xv~Pw~|T{|v~" + "}u~}*x~v{}w~ex~dw~qw~}U{|x~}t{}x~ Xx~sw~s{}x~}tx~,{|r~|O{}w~N{|w~|Dw~({|w~|m{}w~|a{|m~}w{|x~} H{}x~|T{}x~}qw~|]" + "x~}t{|x~|\\{}x~|nw~]{}x~|nw~|Xw~sw~|Ov~|Tv~tv~Xv~tv~Xv~tv~Xv~tv~Xv~tv~Y{|w~}tv~|a{|v~t{|v~Y{|v~|J{}w~}M{}w~}M{}" + "w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|x{|v~|rv~i{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{" + "}v~d{|u~r{}v~}e{|v~|n{}w~v{}v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}^{|v~|{|v~|Z{}w~}nu~`w~}v{}w~V{}y~}|r" + "{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|]{}y~}|r{|u~|g{}y~}|r{|o~}|u{|}v~}e{}u~}s{|}y~|^{}v~}|" + "t{}v~}]{}v~}|t{}v~}]{}v~}|t{}v~}]{}v~}|t{}v~}Uv~Lv~Lv~Lv~T{}u~}|v{|}v~}^r~|u{|u~|^u~}|v{|}u~\\u~}|v{|}u~\\u~}|v" + "{|}u~\\u~}|v{|}u~\\u~}|v{|}u~U{}u~Uu~}|u{}u~|_{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{}w~}m{}w~|`r~|u{" + "|u~|`{}w~}m{}w~| Xw~|r{}w~r{|w~hw~|d{|w~hw~|yu~|v{|u~y{|w~hw~|m{|u~y{|w~hw~|d{|w~Y{}x~}Vv~mv~| XZ~}g{}t~oy~}'{}" + "e~}Y{}p~_W~|fc~|`v~n{}w~|`w~}kw~}Zv~|}w~|X{}w~}qv~|e{}x~} q{|c~| {{v~} y{|x~}t{}x~}]{|w~}v{|y~|_w~|u{|w~|vw" + "~|Wt~ p{}w~|H{|v~V{}w~}yx~y{}w~}S{}w~ cw~|Z{|v~k{}w~}W{}w~}Fv~}Qy|u~}Z{|w~|u{}w~}\\{|i~|\\v~|y{}p~}|Nv~}Z{|v~|" + "s{|v~}`{|v~lu~|X{}v~M{}v~P{|}p~}|b{|Z~}b{|}p~}|L{}v~}d{}x~|r{|n~{}x~|uw~|h{}w~}t{}w~|^{}w~}q{|}u~}b{}v~M{}w~}f{" + "}v~d{}w~}L{}w~}T{}v~K{}w~}hv~|Y{}w~}M{}w~}W{}w~}|u~}R{}w~}V{}w~|x{|w~s{}w~wv~|h{}w~|w{}w~}rv~i{}v~c{}v~d{}w~}n{" + "}v~|h{}v~c{}v~f{}w~}o{|u~_{|t~}|H{|v~|Z{|v~h{}w~}c{}v~nv~}i{|v~s{|w~|w{}x~}s{}w~}b{|q~S{}v~|v~}N{}v~}T{|w~}K{|w" + "~|H{|w~| s{}|m{}w~}]t~}q{}v~|^{}v~}ny|_u~q{}t~|`{|v~|q{|v~|Ww~}Tu~q{|t~|`t~}r{|v~}Vv~Lv~Tw~}t{|u~Rv~_t~}r{}v~}" + "y~}r{}v~gt~}r{|v~}_{}v~|r{|v~}^s~q{}v~_{}v~|r{}t~|Zs~T{|w~}m{|Wv~S{|w~|m{}w~|a{|w~}mv~|g{|w~}s{|s~|s{|w~|d{|v~|" + "u{|v~}]v~mv~N{}v~Tw~}Lw~|M{|w~| L{}p~w{|p~}bv~}s{}w~y|w~_v~wx|}t~}J{|w~}^{}w~r{}u~|]{|v~|Ot~}r{|v~}_{|v~nv~W{}s" + "~}Z{|w~|m{}w~|f{}w~}d{}w~}eu~}x{|w~|x{}v~|`{|w~}q{|w~}`v~t{}w~t{|w~}`{}v~q{}v~_u~}r{|v~}V{|w~}Wv~|l{|v~^{}w~}t{" + "}w~|R{}v~}V{}w~}V{|v~bv~}l{|v~|s{|v~r{}v~h{}w~}hv~|i{}v~r{|v~r{}v~k{}v~c{}v~gu~|B{}w~B{|u~|Y{}w~X{}v~}k{}v~|Y{}" + "w~ sv~}Tu~|wy~}u{|Z{|v~O{|u~}|x{|}v~}_{|p~}y{|p~}Ww~|Tw~}y{|t~|,y~}vw~|e{}y~dw~|s{}w~}V{|w~}u{}w~ Xy~}sw~s{}x~}" + "t{}y~*y}x~}|[m|}w~l|^{}w~C{|x~}({|w~|m{}w~|`m~}w{|x~} H{}x~|T{|w~|s{}x~}\\w~}u{|w~|]{}x~|o{}x~}]{}x~|o{}x~}Ww~t" + "{}x~}Nv~|U{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~}t{}w~|Z{}w~|t{|w~}av~}t{|v~Y{}v~I{}w~}M{}w~}M{}w" + "~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|w{}w~}rv~i{}v~c{}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~c{|" + "u~t{}v~}d{}v~n{|w~|v{|v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}]{}v~|v~}Y{}w~}n{|v~|aw~}vv~V{}|m{}w~}]{}|m" + "{}w~}]{}|m{}w~}]{}|m{}w~}]{}|m{}w~}]{}|m{}w~}g{}|m{}r~|q{|v~|g{}v~}ny|_{|v~|q{|v~|_{|v~|q{|v~|_{|v~|q{|v~|_{|v~" + "|q{|v~|Vv~Lv~Lv~Lv~U{|v~}q{|v~|_t~}r{|v~}_{}v~|r{|v~}^{}v~|r{|v~}^{}v~|r{|v~}^{}v~|r{|v~}^{}v~|r{|v~}V{}u~V{}v~" + "|r{|v~}_{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|`v~mv~_s~q{}v~_v~mv~ X{|w~q{}w~q{}x~|j{|w~b{}x~|j{|w~wu~" + "|x{|u~|x{}x~|j{|w~m{|u~|x{}x~|j{|w~b{}x~|Z{}x~}V{}w~|o{|v~ WZ~}gx~}w~|q{}y~|({|c~}_v|{}r~u|d{}X~f{}b~|b{|w~}mw~" + "}`w~}kw~}[{|v~{}w~}X{|w~}r{|v~d{}x~| q{}c~ yv~} y{}x~}t{}x~}\\v~}w{|y~|_{}w~|vw~}v{|x~}X{|r~ qv~Fv~X{}w~}|x" + "x~x{|}w~}U{}w~ d{|w~Y{|v~k{}w~}W{}w~}G{}v~|Xm~}Y{}x~}t{}w~}\\{|h~}]v~y|l~}P{|v~|Y{|u~u|}v~}_{|v~|n{|u~|X{}v~M{" + "}v~R{|o~}|`{|Z~}_{|}p~}|P{}v~}cw~r{|l~}x~|u{|x~|hv~|t{|v~^{}e~}a{}v~M{}w~}f{|v~|e{}d~|_{}g~|d{}v~K{}^~|Y{}w~}M{" + "}w~}W{}p~|Q{}w~}V{}w~|ww~|tw~}wv~|h{}w~|vv~|sv~i{}v~c{|v~|e{}w~}o{|u~g{}v~c{|v~|g{}w~}p{|u~|^{}q~y}|M{|v~|Z{|v~" + "h{}w~}c{|v~|p{|v~gv~|t{|w~v{|x~}sv~|a{|s~|Rq~}N{}v~}S{|w~}Jw~}H{|w~| bv~|^t~ov~}^v~}P{|v~|p{}u~|`v~|o{|v~Ww~}U" + "{|v~o{}u~|`u~}p{|v~Vv~Lv~Tw~}u{|v~}Qv~_u~}pt~}pv~|hu~}p{|v~`{|v~|p{|v~|_t~ov~}a{|v~|p{}u~|Zt~S{}w~Gv~S{|w~|m{}w" + "~|`v~|o{|v~ev~s{|x~y}x~}s{}w~|c{}v~uv~}\\{}w~|o{|w~}O{}v~|U{|w~}Lw~|M{|w~} M{|x~}x|}w~}xv~}x|}x~|d{}v~qw~y}x~}_" + "v~x{}q~}I{|w~}_{|w~|q{|u~]{}w~|Nu~}p{|v~^{}w~|p{|w~}X{|q~Z{|w~|m{}w~|fv~|d{|v~f{|v~}w{}w~|wu~`{|w~}q{|w~}`v~t{}" + "w~t{|w~}a{|v~ov~}a{|v~}p{}v~|W{|w~}Wv~}l|}v~^v~|t{|v~Q{}v~}W{}w~}V{|v~b{}w~}l{}v~r{|v~r{}v~|i{}w~}hv~|i{|v~|s{|" + "v~r{}v~k{}v~xi~}y{|v~|iu~|A{}w~A{|u~|Z{}w~Y{}v~}i{}v~|Z{}w~ sv}|U{}v~|vy~}S{|v~O{|w~}s{|v~_{|o~|{o~}Ww~|U{}x~}v" + "{}u~}.{|y~|w{|w~d{|y~|e{}w~t{}v~}W{|v~|v{}w~}cY|8{|y~|sw~sw~|t{|y~| `{|Z~}_{}x~}C{|w~}({|w~|m{}w~|`{|n~}w{|x~} " + "H{}x~|Sv~|u{}w~|\\{}v~v{|v~|^{}x~|p{|w~\\{}x~|p{|w~W{|x~}u{|w~Mv}|Uv~|t{|v~Zv~|t{|v~Zv~|t{|v~Zv~|t{|v~Zv~|t{|v~" + "Zv~rv~b{|v~s{|c~l{}v~I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}Z{|v~ev~}h{}w~|vv~|sv~i{}v~c{|v~|l{}v~c{|v" + "~|l{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|c{|u~v{}v~}c{}v~o{|w~|u{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}\\q~" + "}X{}w~}mv~}aw~}vv~Ev~|Mv~|Mv~|Mv~|Mv~|Mv~|Ws~|o{}w~}gv~}Ov~|o{|v~_v~|o{|v~_v~|o{|v~_v~|o{|v~Vv~Lv~Lv~Lv~Uv~}o{}" + "w~}_u~}p{|v~`{|v~|p{|v~|`{|v~|p{|v~|`{|v~|p{|v~|`{|v~|p{|v~|`{|v~|p{|v~|Wt|W{|v~|q{}u~|`{|w~|m{}w~|a{|w~|m{}w~|" + "a{|w~|m{}w~|a{|w~|m{}w~|`{}w~|o{|w~}_t~ov~}`{}w~|o{|w~} X{}x~}q{}w~q{|x~}j{}x~}b{|x~}j{}x~}vu~|yu~|w{|x~}j{}x~}" + "mu~|w{|x~}j{}x~}b{|x~}Z{}x~}V{|v~o{}w~} WZ~}g{}|yw~}qx~'a~|c{|}t~}k~}|fY~}g{}`~b{|w~|m{}w~`w~}kw~}[{|w~}{|v~Wv~" + "r{}w~}dw~| lv~| kv~| yw~|tw~|\\{}v~}|y{|y~|^v~}y|}v~uw~X{|p~ rv~Fv~Xw~|vx~v{|w~U{}w~ d{}x~}Y{|v~k{}w~}W{}w" + "~}H{|v~}Wo~}|Y{|w~|t{}w~}\\{|v~x}|x}s~}^v~|j~}Q{}w~}V{}l~}]v~}n{}u~}X{}v~M{|v}U{|}p~}|]{|Z~}\\{}o~|S{}v~}c{|x~}" + "rv~}|w{|}t~|tx~}i{|v~rv~|_{}h~}|_v~}M{}w~}f{|v~|e{}d~|_{}g~|dv~}K{}^~|Y{}w~}M{}w~}W{}q~|P{}w~}V{}w~|w{}w~u{|w~|" + "wv~|h{}w~|v{}w~}sv~iv~}c{|v~|e{}w~}p{|u~|gv~}c{|v~|g{}w~}sy|}u~}\\{}m~}|Q{|v~|Z{|v~h{}w~}bv~}p{}w~}g{}w~}t{}x~}" + "v{|w~sv~|`{}u~}Q{|r~|O{|u~R{|w~}J{}w~H{|w~| b{|w~}^u~|o{|v~_{}v~Ov~}nu~|a{}w~}m{}w~|Xw~}Uv~|nu~|`u~nv~|Wv~Lv~T" + "w~}v{}v~}Pv~_u~o{}u~|p{}w~}hu~nv~|a{}w~}n{}w~}_u~|o{|v~a{}w~}nu~|Zu~|S{}w~Gv~S{|w~|m{}w~|`{}w~}o{}w~}e{}w~s{}x~" + "}|w~sv~a{}v~w{}v~[{|w~}ov~|P{}v~|T{|w~}Lw~|M{|w~}:{|4x~|v{|w~}{}x~}u{}x~dv~}q{}s~|_v~x{}r~}S{|y}~y}|w{|w~}_w~}o" + "{|v~}^{}w~Mu~nv~|_{|w~}pv~|X{}w~}v~|[{|w~|m{}w~|g{|v~bv~|g{}v~v{}w~v{|v~|a{|w~}q{|w~}`v~t{}w~t{|w~}a{}w~|o{|v~a" + "{}v~nv~}W{|w~}W`~_{|v~rv~|Q{}v~|X{}w~}V{|v~b{}w~}lu~r{|v~r{|v~|i{}w~}hv~|hv~}s{|v~rv~}kv~}xi~}y{|v~|ju~|@{}w~@{" + "|u~|[{}w~Z{}v~}g{}v~|[{}w~ Gv~}uy~}S{|v~Ow~}q{|w~|`{|n~}o~}Ww~|Uw~|t{}u~|0{|y~|w{|x~}d{|y~|e{|v~}w|t~}X{|v~|vv~" + "}c{|Z~}8{|y~|sw~t{}w~s{|y~| `{|Z~}`{}x~}M{|~}|v{|}v~'{|w~|m{}w~|_{}o~}w{|x~}Vv}| s{}x~|S{|v~}|{y|}w~}Z{}v~|w{|v" + "~}_{}x~|pw~|o{}w~m{}x~|p{}x~|vy|}w~y}|g{|w~|u{}x~|o{}w~3{|v~rv~|\\{|v~rv~|\\{|v~rv~|\\{|v~rv~|\\{|v~rv~|\\{}w~}" + "r{}w~|c{}w~}s{|c~lv~}I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}_{}i~}nv~}h{}w~|v{}w~}sv~iv~}c{|v~|lv~}c{|" + "v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|b{|u~x{}v~}bv~}p{|w~}t{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}\\{|r~|" + "X{}w~}mv~}aw~}v{}w~}F{|w~}M{|w~}M{|w~}M{|w~}M{|w~}M{|w~}W{|u~}m{}w~h{}v~O{}w~}m{}w~|a{}w~}m{}w~|a{}w~}m{}w~|a{}" + "w~}m{}w~|Wv~Lv~Lv~Lv~V{}v~n{|v~_u~nv~|a{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~},{}w~}q{}t~}`" + "{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|`{|w~}ov~|_u~|o{|v~`{|w~}ov~| X{}x~|q{}w~q{|w~j{}x~|b{|w~j{}x~|u" + "u~|u~|v{|w~j{}x~|nu~|v{|w~j{}x~|b{|w~Zw~}Uv~|q{|v~ VZ~}c{}w~r{|y~}({}`~d{}^~|h{|Z~g{|_~}c{}w~l{|w~`w~}kw~}[{}w~" + "|yv~|X{}w~|sv~|dV~} 2v~| k{}w~| {{|w~t{|w~Zs~y}y~|^{|o~|v{}x~}rx|e{|v~y}u~n{|w~},{|v~Fv~|Y{|~}tx~t{}~|U{}w~ " + " dw~|Y{|v~k{}w~}W{}w~}Hu~Vp~}|Y{|w~}s{}w~}\\{|~}|q{}t~|`{|q~}|xy|t~|Rv~|U{|}p~|[{}v~|ot~} V{|}p~}|Z{|Z~}Z{|}p~}" + "|W{}v~|b{}x~|s{}w~|s{|u~|tw~i{}w~}r{}w~}_{}g~}|`v~}M{}w~}f{|v~|e{}d~|_{}g~|dv~}K{}^~|Y{}w~}M{}w~}W{}q~O{}w~}V{}" + "w~|w{|w~|v{}w~vv~|h{}w~|uv~|tv~iv~}c{|v~|e{}w~}sy|s~fv~}c{|v~|g{}f~}Z{}k~}S{|v~|Z{|v~h{}w~}b{|v~pv~|g{}w~}tw~|u" + "w~|u{|v~_{}u~O{}t~|O{|u~|R{|w~}J{|w~|I{|w~| aw~}^v~}m{}w~}`v~|P{|v~m{}v~|av~l{|w~}Xw~}V{|v~m{|v~|`v~}n{}w~|Wv~" + "Lv~Tw~}w{}v~}Ov~_v~}o{|v~}o{|w~}hv~}n{}w~|av~|n{|v~|`u~mv~|bv~m{}v~|Zv~}R{}w~Gv~S{|w~|m{}w~|`{|v~ov~d{}w~|tw~|{" + "w~|u{|w~}`v~}y{|v~|Z{}w~|q{|v~P{}v~|Sv~|Lw~|Lv~|W{|y}w~}|iy}5{|y~}sw~|x~}s{}y~|f{|v~|ps~^v~x{}q~}|W{|r~|y{|w~}`" + "{}w~m{}v~^{}w~Mv~}n{}w~|^{}w~q{|v~Wv~y|w~}[{|w~|m{}w~|g{}v~b{}w~}h{|v~|v{}w~u{}w~}a{|w~}q{|w~}`v~t{}w~t{|w~}av~" + "mv~|c{|v~|n{|v~W{|w~}W`~_{}w~}r{}w~}Q{|v~}X{}w~}V{|v~b{}w~}lv~}r{|v~r{|v~|i{}w~}hv~|h{}v~s{|v~s{|v~|kv~}xi~}y{|" + "v~|ku~|?{}w~?{|u~|\\{}w~[{}v~}e{}v~|\\{}w~ H{}v~ty~}S{|v~P{|w~o{}w~_s|}r~s|Vw~|V{|w~r{|u~0{|y~v{}x~}d{|y~|d{}o~" + "|x~}Y{}v~v{|v~|b{|Z~}8{|y~rw~u}v~|s{|y~| `{|Z~}a{}l~|X{|m~|'{|w~|m{}w~|^o~}w{|x~}W{|v~| xm~}W{|n~}X{|v~|vv~}e{}" + "n~}v{}x~}o{|v~m{}x~|q{|w~w{|o~|t{|~}y|w{|}v~u{|x~}o{|v~3{}w~}r{}w~}\\{}w~}r{}w~}\\{}w~}r{}w~}\\{}w~}r{}w~}\\{}w" + "~}r{}w~}\\v~|r{|w~}cv~|s{|c~lv~}I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}_{}i~}nv~}h{}w~|uv~|tv~iv~}c{|v" + "~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|a{|u~|}v~}av~}pw~}s{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}[" + "{}t~|W{}w~}mv~}aw~}v{}v~|Fw~}Lw~}Lw~}Lw~}Lw~}Lw~}Vu~l{|w~|iv~|Ov~l{|w~}av~l{|w~}av~l{|w~}av~l{|w~}Wv~Lv~Lv~Lv~V" + "v~|mv~|`v~}n{}w~|av~|n{|v~|av~|n{|v~|av~|n{|v~|av~|n{|v~|av~|n{|v~|-v~|r{|x~}v~`{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{" + "}w~|a{|w~|m{}w~|_{}w~|q{|v~^u~mv~|`{}w~|q{|v~ Ww~p{}w~pw~jw~yd|yw~jw~t{|p~|tw~jw~nu~|tw~jw~pv~}qw~Zw~|U{}w~}q{}" + "w~} F{}w~}W{|w~|s{}y~|){|_~}f{}\\~|h{}\\~|g{}^~c{}w~l{|w~|aw~}kw~}[v~x{}w~}X{|w~}t{|v~cV~} 2v~| k{}w~| {{|x~" + "}t{|x~}Z{|o~}y|`{|}r~|v{|w~t{}u~}|hv~}y{}u~o{|w~|,{|v~F{}w~|X{|sx~s{|T{}w~ e{|w~X{|v~k{}w~}W{}w~}Iu~|Vm~|[{}w~" + "r{}w~}L{}u~`{|r~|s{|u~S{}v~V{|}m~}|\\u~p{}t~} Y{|}p~}|VY|W{|}p~}|[{|v~|aw~rw~}q{|v~|t{}x~iv~q{|v~_{}e~}av~}M{}w" + "~}f{|v~|e{}d~|_{}g~|dv~}m{}n~|h{}^~|Y{}w~}M{}w~}W{}q~}P{}w~}V{}w~|vw~}vw~}vv~|h{}w~|u{}v~tv~iv~}bv~|e{}e~|fv~}b" + "v~|g{}g~}X{|}k~}U{|v~|Z{|v~h{}w~}av~|r{|v~f{|v~u{|w~|u{}x~}u{}w~}`{|t~|O{}v~}Nu~|Q{|w~}Iw~}I{|w~| a{}w~^v~|m{|" + "w~}a{|v~O{|w~}lv~|b{|w~}kv~Xw~}V{|w~}lv~|`v~|n{|w~}Wv~Lv~Tw~}x{}v~|Nv~_v~|nv~|nv~hv~|n{|w~}b{|v~lv~|`v~}m{|w~}c" + "{|w~}m{|v~|Zv~|R{}w~|Hv~S{|w~|m{}w~|_{}w~|q{|w~}d{|w~}u{|w~y{}x~|u{|w~|`{|v~y|v~}Y{|w~}q{}w~|Q{|v~}S{}v~Kw~|L{}" + "w~}Y{|p~}|n{|y~}5{}y~r{|t~qy~}f{}v~ot~}^v~x{}o~}Y{}p~|{|w~|`w~}lv~|_{|w~}Nv~|n{|w~}^{|w~|r{}w~|X{}w~}yv~[{|w~|m" + "{}w~|gv~}b{}v~h{|v~u{}w~u{|v~a{|w~}q{|w~}`v~t{}w~t{|w~}b{|w~}m{|w~}c{|v~lv~|X{|w~}W`~_v~|r{|v~Qu~W{}w~}V{|v~b{}" + "w~}lv~}r{|v~qv~|i{}w~}hv~|h{|v~|t{|v~s{}v~jv~}xi~}xv~|lu~[|]{}w~\\\\|u~|]{}w~\\{}v~}c|u~|]{}w~ H{}w~}ty~}X{}g~|" + "[{}x~}nw~Vs~|Nw~|V{}x~}pv~}1{}y~v{}x~}d{|y~}c{}r~}{|x~}Z{}w~}v{|v~|a{|Z~}8{}y~rn~}q{|y~} `{|Z~}a{}l~|X{|o~}|&{|" + "w~|m{}w~|]{}q~}w{|x~}W{|v~| xm~}V{|}q~|V{|v~|v{}w~}fm~}vw~o{|u~rm~}vw~|w{}n~|u{|m~|uw~|p{|u~3v~q{|v~\\v~q{|v~\\" + "v~q{|v~\\v~q{|v~\\v~q{|v~]{|v~pv~|e{}w~}r{|c~lv~}I{}d~|`{}d~|`{}d~|`{}d~|W{}w~}M{}w~}M{}w~}M{}w~}_{}i~}nv~}h{}w" + "~|u{}v~tv~iv~}bv~|lv~}bv~|lv~}bv~|lv~}bv~|lv~}bv~|`{|p~}`v~}q{}x~}qv~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}" + "w~}Z{}v~}V{}w~}mv~}aw~}uu~}G{}w~L{}w~L{}w~L{}w~L{}w~L{}w~V{}w~}kw~}j{|v~O{|w~}kv~b{|w~}kv~b{|w~}kv~b{|w~}kv~Wv~" + "Lv~Lv~Lv~W{|v~l{}w~}`v~|n{|w~}b{|v~lv~|b{|v~lv~|b{|v~lv~|b{|v~lv~|b{|v~lv~|.{|v~r{|w~{}w~|a{|w~|m{}w~|a{|w~|m{}" + "w~|a{|w~|m{}w~|a{|w~|m{}w~|_{|w~}q{}w~|^v~}m{|w~}`{|w~}q{}w~| Ww~yd~|{w~jw~yd~|{w~jw~s{|r~|sw~jw~ou~|sw~jw~pv~}" + "qw~Zw~|U{|v~qv~| G{}w~}Uw~}sx~({}^~g{}Z~g]~}f{|_~|cw~}l{|w~|aw~}kw~}\\{|v~x{|v~Wv~t{}w~}cV~} 2v~| k{}w~| {{}" + "x~}t{}x~}Y{|}m~}`{|}w~}|tw~|v{|q~}j{}v~w{}u~p{}w~|,{|w~}F{}w~|Ox~Z{|Z~} t{}x~}X{|v~k{}w~}W{}w~}J{}v~|Ut|}t~}]{" + "|w~|r{}w~}K{}v~|a{|s~p{|v~}Tv~}W{}i~}]{}u~|t{|}s~} Z{|q~}| e{|}q~}\\v~}`x~}s{}w~ov~|t{}x~|k{|w~}p{}w~|`{}w~}p|}" + "t~|cv~}M{}w~}f{|v~|e{}w~}i|^{}w~}l|cv~}m{}n~|h{}w~}h|v~|Y{}w~}M{}w~}W{}w~}u~}Q{}w~}V{}w~|v{}w~w{|w~uv~|h{}w~|tv" + "~|uv~iv~}c{|v~|e{}f~|ev~}c{|v~|g{}i~}S{|}m~}V{|v~|Z{|v~h{}w~}a{}w~}rv~}ev~|v{|w~t{|w~uv~|`r~O{|v~|O{}v~}P{|w~}I" + "{}w~I{|w~| a{}w~^v~|lv~a{}w~}O{}w~|lv~|b{|w~|k{}w~Xw~}V{}w~|lv~|`v~m{|w~}Wv~Lv~Tw~}yu~|Mv~_v~mv~mv~hv~m{|w~}b{" + "}w~}l{}w~}`v~|m{|v~c{}w~|lv~|Zv~Q{}v~|Iv~S{|w~|m{}w~|_{|w~}q{}w~|cv~u{}x~}y{}x~}u{}w~^{}q~}Wv~qv~Q{|v~}Uy|}v~|K" + "w~|L{|u~}|^{|k~}|s{|}x~}5y~}q{}v~|q{}y~f{}w~}o{}u~|^v~ty|}s~[{|u~y}v~y|w~|a{|w~}l{}w~}^{}w~|Ov~m{|w~}]w~}rv~Wv~" + "|y{}w~}\\{|w~|m{}w~|gv~|b{|v~h{}w~}u{}w~tv~a{|w~}q{|w~}`v~t{}w~t{|w~}b{}w~|m{|v~c{}w~}l{}w~}X{|w~}W`~`{|w~}pv~|" + "S{}v~|W{}w~}V{|v~bv~}lv~}r{|v~r{|v~|i{}w~}hv~|gu~t{|v~t{|v~}jv~}xh|y{|v~|mT~]{}w~]T~|^{}w~]{}U~|^{}w~ Hv~|ty~}X" + "{}g~|[w~|nw~|W{}u~}Mw~|V{}w~ov~1{|y~v{}x~}d{|y~|ay}x~y}ww|[{}w~}v{|v~|`{|Z~}8{|y~ro~o{|y~| Q{}w~R{}l~|V{|y}v~y}" + "|${|w~|m{}w~|\\{|}s~}w{|x~}W{|v~| xm~}T{|y}w~}|S{|v~|v{}w~}gm~}w{}x~}oy~y}x~rm~}w{}x~}v{}~}y|w{|v~u{|o~}t{}x~}o", + "t~^v|V{|w~}p{}w~|^{|w~}p{}w~|^{|w~}p{}w~|^{|w~}p{}w~|^{|w~}p{}w~|^{}w~}p{}w~}ev~|r{|v~h|lv~}I{}w~}i|_{}w~}i|_{}" + "w~}i|_{}w~}i|V{}w~}M{}w~}M{}w~}M{}w~}_v}u~r}nv~}h{}w~|tv~|uv~iv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|" + "_{|r~}_v~}r{}w~q{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w~}mv~}aw~}u{|t~|I{}w~L{}w~L{}w~L{}w~" + "L{}w~L{}w~V{}w~|kv~j{}w~}O{|w~|k{}w~b{|w~|k{}w~b{|w~|k{}w~b{|w~|k{}w~Wv~Lv~Lv~Lv~W{}w~}l{|w~}`v~m{|w~}b{}w~}l{}" + "w~}b{}w~}l{}w~}b{}w~}l{}w~}b{}w~}l{}w~}b{}w~}l{}w~}eY|f{}w~}rw~y{|w~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|" + "m{}w~|^v~qv~]v~|m{|v~_v~qv~ Vw~yd~|{}x~|kw~yd~|{}x~|kw~r{|t~|r{}x~|kw~pu~|r{}x~|kw~pv~}q{}x~|[w~|T{}w~|s{|v~ G{" + "}v~T{}w~t{|y~}(]~|i{|Y~}h{|_~}d{|a~}bw~}kw~|aw~}kw~}\\{}w~}wv~|Xv~|u{}w~|cV~} 2v~| k{}w~| {{w~|tw~|W{|}m~}T{" + "}x~}v{|o~}l{|v~|v{}u~q{}w~+{|w~}F{}w~|Ox~Z{|Z~}+m| ww~|X{|v~k{}w~}W{}w~}K{}v~}K{|}v~}^w~}q{}w~}Ju~a{|t~|o{}v~U{" + "|v~|X{}u~}|wy|u~}]t~}y|{y|}q~} Z{|t~}| _{|}t~}\\v~`{|x~}s{}x~}o{|w~|t{}x~|kv~|p{|w~}`{}w~}n{|u~cv~}M{}w~}f{|v~|" + "e{}w~}L{}w~}Tv~}m{}n~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}|u~}R{}w~}V{}w~|v{|w~|x{}x~}uv~|h{}w~|t{|v~uv~iv~}c{|v~|e{}h~" + "}cv~}c{|v~|g{}h~}Qy|y}p~W{|v~|Z{|v~h{}w~}a{|v~s{|v~|e{}w~}v{}x~}t{|w~uv~|a{}r~}P{|v~|P{}v~}O{|w~}I{|w~|J{|w~| " + "n{|y}l~^v~kv~a{}w~|Ov~|l{}w~|b{}w~|k{}w~|Yw~}Vv~|l{}w~|`v~m{|w~}Wv~Lv~Tw~}|u~Kv~_v~mv~mv~hv~m{|w~}b{}w~|l{|v~`v" + "~kv~c{}w~|l{}w~|Zv~Pu~}|Kv~S{|w~|m{}w~|^v~qv~b{}w~u{}x~|y{|w~uv~]{}r~V{}w~|s{|w~}R{|v~}X{|q~}Jw~|K{|q~}c{}g~}w|" + "}u~}5y~}pw~}p{}y~fv~|o{}u~]v~p{|t~\\v~}w{|w~}w~|a{}w~|l{|w~}]{}w~}y|Rv~m{|w~}]{}w~s{}w~}X{}w~}x{|v~\\{|w~|m{}w~" + "|h{|v~|b{|v~|i{}w~|u{}w~tv~|b{|w~}q{|w~}`v~t{}w~t{|w~}bv~kv~c{}w~|l{|w~}X{|w~}Wv~jv~`v~|p{}w~}T{}v~|V{}w~}V{|v~" + "|cv~|lv~}r{|v~r{|v~|i{}w~}hv~|g{}v~}u{|v~tu~|jv~}c{|v~|n{|T~]{}w~]T~}^{}w~]T~}^{}w~ I{|v~sy~}X{}g~|[w~m{}x~|Vu~" + "|#{|w~|p{|w~|2{|y~|w{|x~}d{|y~|3v~}v{}v~|Aw~}8{|y~|sw~x{|w~}p{|y~| Q{}w~ p{|w~|m{}w~|Y{|}v~}w{|x~}W{|v~| jv~}" + "v{}v~|W{|w~o{}y~{}x~r{}n~}x{|w~uy|rw~|ty|t}|s{|w~o{}y~|}x~^{}w~|Wv~|p{|w~}^v~|p{|w~}^v~|p{|w~}^v~|p{|w~}^v~|p{|" + "w~}^v~|p{|v~f{|v~q{|v~Yv~}I{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~ev~}h{}w~|t{|v~uv~iv~}c{|v~|lv~}" + "c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|^{|t~}^v~}s{}w~p{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w" + "~}n{|v~|aw~}t{}t~}W{|y}l~Y{|y}l~Y{|y}l~Y{|y}l~Y{|y}l~Y{|y}l~c{|y}l~j{}w~j{}w~|O{}w~|k{}w~|c{}w~|k{}w~|c{}w~|k{}" + "w~|c{}w~|k{}w~|Xv~Lv~Lv~Lv~W{}w~|l{|v~`v~m{|w~}b{}w~|l{|v~b{}w~|l{|v~b{}w~|l{|v~b{}w~|l{|v~b{}w~|l{|v~f{|Z~}f{}" + "w~|s{}x~|y{|w~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|^{}w~|s{|w~}]v~kv~_{}w~|s{|w~} Vw~yd~|{}x~|kw~yd" + "~|{}x~|kw~qt~|r{}x~|kw~qu~|q{}x~|kw~pv~}q{}x~|[w~|T{|w~}s{}w~} H{|v~|T{|w~|u{}y~({|]~}i{}X~g{|`~b{}b~aw~}kw~}aw" + "~}kw~}\\v~|w{}w~}X{}w~}uv~bw~}Z| 5x|v~}p| v{}w~| {|w~t{|w~S{|}n~|Vw~uv~|y{|}w~}m{}w~}t{}u~rw~}+{|w~}F{}w~|Ox" + "~Z{|Z~},{|m~ x{|w~|X{|v~k{}w~}W{}w~}L{}v~}H{}v~}`{}w~p{}w~}J{}v~`t~n{|v~|V{}v~X{}v~}q{}v~}^{|j~|v~| Z{|t~| ]{|}" + "u~}]{|w~}`{|x~|sw~|o{|w~|t{}x~|l{|v~nv~`{}w~}lv~}dv~}M{}w~}f{|v~|e{}w~}L{}w~}Tv~}m{}n~|h{}w~}hv~|Y{}w~}M{}w~}W{" + "}w~}{|t~S{}w~}V{}w~|u{}x~}y{|w~|uv~|h{}w~|sv~|vv~iv~}c{|v~|e{}k~}|av~}c{|v~|g{}w~}t|y}u~}M{|}s~}X{|v~|Z{|v~h{}w" + "~}`v~}t{}v~d{}w~}vw~|sw~|w{|v~a{|v~}v~|Q{|v~|Q{|u~N{|w~}Hw~|J{|w~| p{}h~|_v~k{}w~|bv~|Ov~k{}w~|bv~j}v~|Yw~}Vv~" + "k{}w~|`w~}m{|w~}Wv~Lv~Tq~}Jv~_w~}mv~mv~hw~}m{|w~}bv~|l{|v~`v~kv~|dv~k{}w~|Zv~P{}r~}y|Pv~S{|w~|m{}w~|^{}w~|s{|w~" + "}b{|w~|vw~|xw~|w{|w~}\\s~|Uv~sv~|Ru~W{|s~}|Iw~|I{|}t~}d{|u~}w|}g~}5{|y~|p{|x~|p{}y~fv~|o{|v~}]v~n{}v~|^{}w~|ts~" + "`v~|l{|v~\\{}p~}Xw~}m{|w~}]{|w~|tv~|Xv~|wv~|]{|w~|m{}w~|h{|v~|q{}x~}q{|v~|iv~|u{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{" + "|w~}bv~kv~|dv~|l{|v~X{|w~}Wv~|l{|v~a{|v~nv~U{|v~}U{}w~}Uv~}d{|v~|l{}v~r{|v~r{|v~|i{}w~}hv~|fu~|v{|v~u{}v~}iv~}c" + "{|v~|n{|T~]{}w~]T~}^{}w~]T~}^{}w~ rw|V{|w~}sy~}X{|w}u~q}Zw~m{}x~|V{}v~\"{|v~ow~|2{|y~|w{|w~d{|y~|4{}w~}v{|v~?w~" + "}8{|y~|sw~vw~}q{|y~| Q{}w~ p{|w~|m{}w~|Ux~}w{|x~}W{|v~| i{}w~|v{|v~Ww~|p{|y~|{}x~`{}x~|j{|x~}bw~|p{|y~}{}x~^{" + "}w~|X{|v~nv~_{|v~nv~_{|v~nv~_{|v~nv~_{|v~nv~_{|w~}nv~|g{}w~}q{|v~Yv~}I{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}" + "M{}w~}Z{|v~ev~}h{}w~|sv~|vv~iv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|lv~}c{|v~|]{}u~|^v~}t{|w~|p{|v~|i{|v~h{}w~}" + "f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w~}n{}v~|aw~}s{|s~|[{}h~|\\{}h~|\\{}h~|\\{}h~|\\{}h~|\\{}h~|f{}h~j}v~" + "jv~|Ov~j}v~|cv~j}v~|cv~j}v~|cv~j}v~|Xv~Lv~Lv~Lv~Wv~|l{|v~`w~}m{|w~}bv~|l{|v~bv~|l{|v~bv~|l{|v~bv~|l{|v~bv~|l{|v" + "~f{|Z~}fv~|t{}x~|wv~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|]v~sv~|]v~kv~|_v~sv~| Vw~yd~|{w~jw~yd~|{w~j" + "w~rr~|sw~jw~ru~|pw~jw~pv~}qw~Zw~|Sv~sv~ H{|v~|Rw~}uy~}({|]~}i{}X~|g{}b~|a{}d~|aw~}kw~}aw~}kw~}]{|v~v{|v~X{|v~v{" + "|w~}b{}x~} pf~ v{|w~ {{|w~t{|x~}P{|y~}r~W{}x~|v{}w~u{}w~mv~r{}u~t{|w~|+{|v~F{}w~|Ox~Z{|Z~},{|m~ x{}w~W{|v~k" + "{}w~}W{}w~}M{}v~}F{}v~a{|w~|p{}w~}Iv~|au~}mv~}Vv~|Y{|v~}o{|v~|]{}m~|{v~| Z{|r~}| c{|}r~}]{|w~}`{|x~|sw~|nw~|t{}" + "x~k{}w~}n{}w~}a{}w~}l{|v~|e{}v~M{}w~}f{}v~d{}w~}L{}w~}T{}v~mr|v~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}y{|t~T{}w~}V{}w~|u" + "{|w~y{}w~tv~|h{}w~|s{|v~vv~i{}v~c{|v~|e{}w~}r|]{}v~c{|v~|g{}w~}q{}v~}K{|t~|Y{|v~|Z{|v~h{}w~}`{}v~tv~|d{|v~w{|w~" + "|s{}x~}w{}w~}av~}{}v~Q{|v~|R{|u~M{|w~}H{}x~}J{|w~| r{|f~|_w~}k{}w~|bv~|Ov~k{}w~|b`~|Yw~}Vv~k{}w~|`w~}m{|w~}Wv~" + "Lv~Tq~Iv~_w~}mv~mv~hw~}m{|w~}bv~jv~`v~k{}w~|dv~k{}w~|Zw~}O{}o~}|Sv~S{|w~|m{}w~|^{|w~}s{}w~|b{|w~}w{|w~w{}x~}w{|" + "w~|\\{|u~}T{}w~|u{|w~}Ru~V{|s~}|Iw~|J{|}s~}d{|w~|s{|}k~|3y~}p{|x~}p{}y~fv~mv~|]v~m{}v~_{|w~}rt~`v~jv~Z{}r~}Xw~}" + "m{|w~}\\w~}u{|w~}X{|w~}v{}w~}]{|w~|m{}w~|h{|v~|q{}x~}pv~|iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bv~k{}w~|dv~jv" + "~X{|w~}W{}w~|l{|v~a{}w~}n{}w~}W{|u~T{}w~}U{}w~}d{}v~k{}v~|s{|v~r{}v~h{}w~}hv~|f{|u~|w{|v~v{}u~h{}v~c{|v~|n{|T~]" + "{}w~]T~|^{}w~]{}U~}^{}w~ s{|w~V{|w~}sy~}S{|v~Pw~|nw~|V{|w~}!{}v~|q{}x~|1y~}vw~|e{}y~ci|]{}w~u{|w~|?w~}7y~}sw~v{" + "|w~|r{}y~ P{}w~ p{|w~|m{}w~|Ux~}w{|x~}W{|v~| Fi|U{|w~|u{}w~X{}x~}p{|y~}y{}x~a{|w~i{|x~}c{}x~}p{|y~}y{}x~^{}w~|" + "X{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~}n{}w~}`{}w~|n{}w~}h{|v~p{|v~Y{}v~I{}w~}M{}w~}M{}w~}M{}w~}" + "D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|s{|v~vv~i{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|l{}v~c{|v~|^{}s~|_" + "{}v~u{|w~|o{|v~|i{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{|v~|V{}w~}o{|u~`w~}q{}t~|^{|f~|^{|f~|^{|f~|^{|f~|" + "^{|f~|^{|f~|h{|P~jv~|O`~|c`~|c`~|c`~|Xv~Lv~Lv~Lv~Wv~jv~`w~}m{|w~}bv~jv~bv~jv~bv~jv~bv~jv~bv~jv~f{|Z~}fv~|u{}x~}" + "vv~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|]{}w~|u{|w~}\\v~k{}w~|_{}w~|u{|w~} Uw~yq}w~r}yw~jw~yd|yw~jw~" + "sp~|tw~jw~su~|ow~jw~pv~}qw~Zw~|S{}w~}u{|w~} Hv~|Q{}w~|w{|y~|({|\\~iW~|f{}d~|_e~|`w~}kw~}aw~}kw~|]{}w~}uv~Wv~|w{" + "}w~|b{}x~} q{|g~| v{|w~({}Z~X{|y~|{|}u~}Y{|w~uw~|tw~}o{|w~}q{}u~u{}w~*{|v~F{}w~|*m|}w~l|,{|m~ xw~}W{|v~k{}w" + "~}W{}w~}N{}v~}Dv~|bw~}o{}w~}Iv~|au~|m{}w~}W{|v~X{}v~m{}v~\\{|p~}xv~| Y{}p~}| i{|}p~}|]{}w~}`{|x~|sw~mw~|t{}x~kv" + "~}n|}v~a{}w~}kv~}e{}v~M{}w~}f{}v~d{}w~}L{}w~}T{}v~dv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}x{|t~U{}w~}V{}w~|tw~|{w~}tv~|" + "h{}w~|rv~}wv~i{}v~c{}v~d{}w~}T{}v~c{}v~f{}w~}p{}v~|Ju~}Y{|v~|Z{|v~h{}w~}_v~|v{|v~bv~|x{|w~r{}w~wv~|b{}v~xv~}R{|" + "v~|Ru~|M{|w~}H{|w~J{|w~| s{|q~t}v~|_w~}k{}w~|bv~Nv~k{}w~|b`~|Yw~}Vv~k{}w~|`w~}m{|w~}Wv~Lv~Tp~Jv~_w~}mv~mv~hw~}" + "m{|w~}bv~jv~`w~}k{}w~|dv~k{}w~|Zw~}N{|m~|Uv~S{|w~|m{}w~|]v~t{|v~`v~w{}x~}w{|x~}w{}w~[{|u~|T{|w~}u{}w~|S{}v~|V{|" + "x}t~}Jw~|K{|s~y}|d{|y~}n{|}p~}1y~}p{}w~p{}y~fv~mv~\\v~lv~|`{}w~|r{|v~}`v~jv~\\{|p~}Xw~}m{|w~}\\{}w~u{}w~|Xv~|v{" + "|v~]{|w~|m{}w~|h{|v~p{}w~pv~}iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bw~}k{}w~|dv~jv~X{|w~}W{}w~|l{|w~}av~|n{|v" + "~Wu~|T{}w~}U{}v~dv~}k{|v~}s{|v~s{|v~}h{}w~}hv~|e{}u~|x{|v~w{}u~|h{}v~c{}v~l{|u~}\\|]{}w~][|u~|]{}w~\\{}v~}c|u~}" + "]{}w~ s{|w~V{|w~}sy~}S{|v~P{}x~}o{|w~`{|a~}+u~|rw~|1y~}v{}w~ex~d{|j~}]{}w~}v{|v~|@w~}7y~}sw~u{}w~rx~ P{}w~ p{|" + "w~|m{}w~|Ux~}w{|x~} w{|j~}V{|v~|v{}w~}Xw~oy~}x{}x~aw~|i{|x~|cw~ox~x{}x~^{}w~|Xv~}n|}v~`v~}n|}v~`v~}n|}v~`v~}n|" + "}v~`v~}n|}v~a{|b~h{}v~p|}v~Y{}v~I{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{|v~|h{}w~|rv~}wv~i{}v~c{" + "}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~k{}v~c{}v~^{}q~|`{}v~v{|w~}n{}v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}Z{" + "|v~|V{}w~}p{|u~|`w~}p{|t~}`{|q~t}v~|_{|q~t}v~|_{|q~t}v~|_{|q~t}v~|_{|q~t}v~|_{|q~t}v~|i{|q~t}`~|kv~N`~|c`~|c`~|" + "c`~|Xv~Lv~Lv~Lv~Wv~jv~`w~}m{|w~}bv~jv~bv~jv~bv~jv~bv~jv~bv~jv~f{|Z~}fv~u{|x~}uv~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m" + "{}w~|a{|w~|m{}w~|]{|w~}u{}w~|\\w~}k{}w~|_{|w~}u{}w~| U{}x~|q{}w~q{|w~j{}x~|b{|w~j{}x~|uu~|u~|v{|w~j{}x~|uu~|o{|" + "w~j{}x~|qv}|r{|w~[{|w~|S{|v~uv~| TZ~}a{|w~}wx~'{|\\~iW~|ee~|^{|g~}_w~}kw~}aw~}kw~|]v~|u{}w~|X{}w~}wv~|b{|w~| " + " r{}g~ u{|w~({}Z~X{|y~|w{}v~|Zw~|v{|w~s{|w~o{|w~}p{}u~vw~})v~Fv~| w{}w~ x{|m~ y{|w~|Vv~|lv~|W{}w~}O{}v~}C{}w~}" + "c{|w~n|}w~}v|N{}w~}au~l{|v~Wv~}Xv~}m{|v~|[{|y}w~y}|x{|v~ V{|}p~}|XY|X{|}q~}|Z{}w~}`{|x~|sw~mw~|tw~l{|b~|b{}w~}k" + "{}v~e{|v~|N{}w~}fv~}d{}w~}L{}w~}T{|v~|ev~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}w{|t~V{}w~}V{}w~|t{}w~|w~|tv~|h{}w~|r{|v~" + "wv~i{|v~|d{}v~d{}w~}T{|v~|d{}v~f{}w~}o{}v~J{|u~Y{|v~|Z{|v~h{}w~}_{}w~}v{}w~}b{}w~}x{}x~}r{|w~wv~b{|v~|x{|v~|S{|" + "v~|S{}v~|L{|w~}Gw~|K{|w~| t{|u~}|q{}w~|_v~k{}w~|bv~Nv~k{}w~|b`~|Yw~}Vv~k{}w~|`w~}m{|w~}Wv~Lv~Tw~}|u~Kv~_w~}mv~" + "mv~hw~}m{|w~}bv~jv~`w~}k{}w~|dv~k{}w~|Zw~}L{|}o~}Vv~S{|w~|m{}w~|]{}w~}u{}w~}`{}w~|xw~|w{|w~wv~\\{|s~Sv~uv~S{}v~" + "|O{}v~}Kw~|L{|v~}|_{|~|j{|y}x~y}|/x~q{|v~}qx~fv~m{}x~}\\v~l{}w~|`v~pv~}`v~jv~]n~}Xw~}m{|w~}\\{|w~|vv~X{|v~t{}w~" + "|^{|w~|m{}w~|h{|v~p{}w~pv~|iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bw~}k{}w~|dv~jv~X{|w~}W{}w~}l{}w~}b{|v~lv~|Y" + "{}v~|S{}w~}U{|v~}f{|v~|ju~|t{|v~s{}v~|h{}w~}hv~|dt~}y{|v~y{|t~|g{|v~|d{}v~k{|u~|?{}w~>u~|b{|v{}w~[{}v~|e{}v~}\\" + "{}w~ s{|w~V{|w~}sy~}S{|v~P{|w~o{}x~}`{|a~}+{|u~}|u{|w~0{}y~v{|w~}g{|y~}d{|j~}\\{}v~|w{|v~}Aw~}7{}y~sw~tw~}t{|y~" + "} P{}w~ p{|w~|m{}w~|Ux~}w{|x~} w{|j~}W{|v~|vv~}X{}x~|p{}y~|x{}x~b{}x~}hw~c{}x~}p{}y~|x{}x~^v~X{|b~|b{|b~|b{|b" + "~|b{|b~|b{|b~|b{}b~}id~Y{|v~|J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~f{}v~g{}w~|r{|v~wv~i{|v~|d{}v" + "~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~k{|v~|d{}v~_{}v~}u~|a{|v~|ww~}m{}v~h{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w~}f{|v~h{}w" + "~}Z{|v~|V{}w~}sy|s~_w~}n{}u~|b{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|`{|u~}|q{}w~|j{|u" + "~}|q{}a~|kv~N`~|c`~|c`~|c`~|Xv~Lv~Lv~Lv~Wv~jv~`w~}m{|w~}bv~jv~bv~jv~bv~jv~bv~jv~bv~jv~.v~v{|w~tv~a{|w~|m{}w~|a{" + "|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|\\v~uv~[w~}k{}w~|^v~uv~ T{}x~}q{}w~q{|x~}j{}x~}b{|x~}j{}x~}vu~|{|u~|w{|x~}j{}" + "x~}vu~|n{|x~}j{}x~}b{|x~}[{|w~Qv~|w{|v~ SZ~}`v~x{|y~}'{|]~}iW~|e{|g~}\\{}i~}^w~}kw~}aw~}l{|w~|^{|v~t{|w~}X{|v~x" + "{|v~`w~} m{|v~ jw|({}Z~X{|y~|v{}w~}[{}x~}u{}x~}s{|w~o{}w~}o{}u~x{|w~|)v~Fv~ v{}w~ g{}w~Uv~|lv~|W{}w~}P{}v~" + "}B{|v~c{|_~|O{}w~}a{}v~l{|v~X{|v~|Y{|v~|lv~|N{|v~ S{|}p~|[{|Z~}[{|}p~}|X{}w~}`{|x~|sw~|nw~|u{|x~}l{}b~}b{}w~}k{" + "|v~e{|v~}N{}w~}g{|v~}d{}w~}L{}w~}T{|v~}ev~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}v{|t~W{}w~}V{}w~|t{|r~sv~|h{}w~|q{}w~}xv" + "~i{|v~}dv~}d{}w~}T{|v~}dv~}f{}w~}nv~}J{}v~Y{|v~|Z{|v~|i{}w~}_{|v~vv~|b{}w~}xw~|qw~|y{|v~bv~}v{}v~S{|v~|T{}v~}K{" + "|w~}G{}x~}K{|w~| tv~}n{}w~|_v~kv~|bv~|Ov~k{}w~|bv~Bw~}Vv~k{}w~|`w~}m{|w~}Wv~Lv~Tw~}{|u~|Mv~_w~}mv~mv~hw~}m{|w~" + "}bv~|kv~`v~k{}w~|dv~k{}w~|Zw~}Iy|}q~Wv~S{|w~|m{}w~|]{|v~uv~_{|w~|xw~uw~|y{|w~}\\r~}T{|w~|w{}w~}T{}v~|M{|v~Kw~|L" + "{}w~} O{}y~|rt~|s{|y~}fv~|nw~}\\v~l{|w~}`w~}p{}w~|`v~|kv~^u~}|Qw~}m{|w~}[w~}w{}w~}X{}w~|t{|w~}^{|w~|m{}w~|h{|v~" + "pv~pv~|iv~t{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~}bv~k{}w~|dv~|l{|v~X{|w~}W{|w~}l{}w~|b{}w~}l{}w~}Z{|v~}R{}w~}T{}v" + "~f{}v~i{|u~t{|v~t{|u~g{}w~}hv~|cr~}v~}s~}f{|v~}dv~}j{|u~|@{}w~?u~|b{}~|w{}w~vy~a{}v~|g{}v~}b{}~|w{}w~vy} {{}w~|" + "W{|w~}sy~}S{|v~Ow~}q{|w~|`{|a~}){}u~}vw~}0{|y~}v{}w~}p{|t{}y~|d{|j~}[{|v~|vv~}Bw~}7{|y~}tw~t{|w~|u{}y~| P{}w~ " + "p{|w~|m{}w~|Ux~}w{|x~} w{|j~}X{}v~v{|v~}X{|w~p{|y~|w{}x~bw~h{}x~|d{|w~p{|y~}w{}x~^v~X{}b~}b{}b~}b{}b~}b{}b~}b{" + "}b~}b`~j{}d~Y{|v~}J{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~fv~}g{}w~|q{}w~}xv~i{|v~}dv~}k{|v~}dv~}k" + "{|v~}dv~}k{|v~}dv~}k{|v~}dv~}`{}v~|{|u~|b{|v~}x{}x~}lv~}h{|v~|i{}w~}f{|v~|i{}w~}f{|v~|i{}w~}f{|v~|i{}w~}Z{|v~|V" + "{}e~|_w~}m{|u~bv~}n{}w~|`v~}n{}w~|`v~}n{}w~|`v~}n{}w~|`v~}n{}w~|`v~}n{}w~|jv~}n{}w~Tv~|Ov~Lv~Lv~Lv~Av~Lv~Lv~Lv~" + "Wv~|l{|v~`w~}m{|w~}bv~|kv~bv~|kv~bv~|kv~bv~|kv~bv~|kv~.v~vw~|u{|v~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}" + "w~|\\{|w~|w{}w~}[v~k{}w~|^{|w~|w{}w~} T{|w~q{}w~q{}x~|j{|w~b{}x~|j{|w~wu~|x{|u~|x{}x~|j{|w~wu~|m{}x~|j{|w~b{}x~" + "|[{|w~Q{|w~}w{}w~} SZ~}`{}w~|y{}y~|'{|n~y}~|n~}i{}k~x}k~c{|i~}Z{}j~]w~}kw~}a{}w~l{|w~|^{}w~}sv~Wv~|y{}w~}`{}w~|" + " mv~| o{}Z~X{|y~|v{|w~}\\{|w~t{}x~|rw~|p{}w~}n{}u~yw~}(v~|Gv~ v{}w~ gw~}U{}w~}m{|v~V{}w~}Q{}v~}A{|v~c{|_~" + "|O{}w~}a{}v~l{|v~X{}v~X{|v~k{}w~}N{}w~} Q{|}p~}|^{|Z~}^{|}p~}|U{}w~}`{|x~}sw~|o{|w~|u{}x~|l`~b{}w~}k{|v~|eu~N{}" + "w~}g{}v~|d{}w~}L{}w~}Su~ev~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}u{|t~X{}w~}V{}w~|ss~}sv~|h{}w~|q{|v~|yv~hu~e{|v~|d{}w~}" + "Su~e{|v~|f{}w~}n{}v~|K{|v~|Z{|v~|Yv~|i{}w~}^v~|x{}v~a{|v~y{|w~|q{}x~}y{}w~}c{}v~tv~}T{|v~|U{|v~}J{|w~}G{|w~K{|w" + "~| u{|v~m{}w~|_v~kv~a{}w~|O{}w~|l{}w~|bv~|Cw~}V{}w~|l{}w~|`w~}m{|w~}Wv~Lv~Tw~}y{|u~|Nv~_w~}mv~mv~hw~}m{|w~}bv~" + "|l{|v~`v~kv~cv~|l{}w~|Zw~}D{|}u~}Xv~S{|w~|m{}w~|\\{}w~|w{|w~}^w~}y{|w~u{}x~}y{}w~|]{}q~|Tv~wv~|U{|v~}K{}w~|Lw~|" + "Lv~ N{|x~s{}x~{w~|tx~|fv~|o{|v~\\v~l{|w~}a{|w~|p{}w~_{}w~|l{|v~_{}v~|Ow~}m{|w~}[{}w~|xv~X{|v~rv~|_{|w~|m{}w~|h{" + "|v~|qv~pv~|iv~|u{}w~t{}w~|b{|w~}q{|w~}`v~t{}w~t{|w~|bv~kv~c{}w~|l{|v~X{|w~}Vv~l{}w~|bv~|l{|v~[{|v~}Q{}w~}T{|v~}" + "h{|v~|hu~}u{|v~u{|u~|g{}w~}hv~|b{}f~|du~e{|v~|i{|u~|A{}w~@u~|b{}x~|x{}w~ww~a{}v~|i{}v~}b{}x~|x{}w~w{}y~} {}w~|W" + "{|v~sy~}S{|v~O{|w~}s{}w~}^q|}v~q|'{}t~|{|w~}.x~u{}v~}|wy|}y~tx~/{|v~|v{}w~}Cw~}6x~tw~s{}w~ux~ O{}w~ p{|w~|m{}w" + "~|Ux~}w{|x~} B{}w~}v{|v~|Ww~|q{|y~}v{}x~c{}x~|i{}x~}cw~|q{|y~}v{}x~_{|v~X`~b`~b`~b`~b`~c{|`~|kc~Xu~J{}w~}M{}w~" + "}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~g{|v~}g{}w~|q{|v~|yv~hu~e{|v~|ju~e{|v~|ju~e{|v~|ju~e{|v~|ju~e{|v~|a{}" + "v~|x{|u~|bu~y{}w~l{|v~|gv~|i{}w~}ev~|i{}w~}ev~|i{}w~}ev~|i{}w~}Z{|v~|V{}f~|^w~}l{|v~|d{|v~m{}w~|a{|v~m{}w~|a{|v" + "~m{}w~|a{|v~m{}w~|a{|v~m{}w~|a{|v~m{}w~|k{|v~m{}w~T{}w~|Ov~|Mv~|Mv~|Mv~|Bv~Lv~Lv~Lv~W{}w~|l{|v~`w~}m{|w~}bv~|l{" + "|v~bv~|l{|v~bv~|l{|v~bv~|l{|v~bv~|l{|v~.v~|x{}x~|t{|v~a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|a{|w~|m{}w~|[v~wv~|[v" + "~kv~\\v~wv~| Sw~|r{}w~r{|w~hw~|d{|w~hw~|yu~|v{|u~y{|w~hw~|yu~|m{|w~hw~|d{|w~Z{|w~Pv~wv~| SZ~}_w~}yx~%n~{|~{|o~|" + "i{|l~}|}|l~}b{}j~Xk~|]w~}kw~}a{}w~l{}w~]v~|s{}w~|X{}w~}yv~|_w~} mv~} g{}x~}t{}x~}O{|y~|uw~}\\{}x~|t{}x~|rw" + "~|p{|w~}m{}u~}w~|({}w~|H{|w~} v{}w~ h{|w~|U{}w~}m{|v~V{}w~}R{}v~}@{|v~c{|_~|Ov~|a{|v~l{}w~}Xv~}X{|v~k{}w~}Nv~|" + " N{|}p~}|a{|Z~}a{|}p~}|R{|w}|_x~}s{}x~}o{}w~|v{|w~l{}`~|c{}w~}k{|v~|e{}v~|O{}w~}gu~c{}w~}L{}w~}S{}v~|fv~|h{}w~}" + "hv~|Y{}w~}M{}w~}W{}w~}t{|t~Y{}w~}V{}w~|s{}t~rv~|h{}w~|p{}w~}yv~h{}v~|f{}v~c{}w~}S{}v~|f{}v~e{}w~}mv~}K{|v~|Z{|v" + "~|Yv~|iv~|^{}w~}xv~}`v~|{|w~p{}w~yv~|d{|v~|t{|v~|U{|v~|V{|u~I{|w~}Fw~|L{|w~| u{}w~|mv~|_v~|m{|v~a{}w~}O{}w~|lv" + "~|b{}w~|Cw~}V{}w~|lv~|`w~}m{|w~}Wv~Lv~Tw~}x{|u~|Ov~_w~}mv~mv~hw~}m{|w~}b{}w~|l{|w~}`v~kv~c{}w~|lv~|Zw~}B{|u~Xv~" + "S{|w~|m{}w~|\\{|w~}w{}w~|^v~y{}x~}u{|x~}y{}w~]{|v~|}v~T{}w~|y{|w~}U{|v~}J{|w~}Lw~|M{|w~} Mx~}v{|w~|{|w~|v{}x~e{" + "}w~|o{}v~\\v~l{|w~}a{|w~|pw~}_{}w~|l{|w~}_v~Mw~}m{|w~}[{|w~}y{|w~}X{}w~|r{}w~}_{|w~|m{}w~|h{|v~|qv~|r{|v~|i{}w~" + "|u{}w~tv~|b{|w~}q{|w~}`v~t{}w~t{}w~|bv~kv~c{}w~|l{|w~}X{|w~}Vv~lv~b{}v~jv~|\\u~P{}w~}S{}v~|iu~g{|t~|w{|v~v{}u~}" + "f{}w~}hv~|a{}h~|c{}v~|f{}v~g{|u~|B{}w~Au~|b{}v~|y{}w~xu~a{}v~|k{}v~}b{}v~|y{}w~x{}w~}!{}w~|Vv~sy~}S{|v~O{|u~}y|" + "{y|u~}T{|w~}Lw}|P{|}p~}-{|y~}u{}l~u{}y~|.{|v~|v{}w~}Dw~}6{|y~}uw~rw~}w{}y~| O{}w~ p{|w~|m{}w~|Ux~}w{|x~} C{}w" + "~}v{|v~|W{}x~}px~u{}x~d{|w~i{}x~}c{}x~}px~u{}x~_{}w~}Y{}`~|d{}`~|d{}`~|d{}`~|d{}`~|d{}w~}j|}w~}l{|c~X{}v~|K{}w~" + "}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~gu~|g{}w~|p{}w~}yv~h{}v~|f{}v~i{}v~|f{}v~i{}v~|f{}v~i{}v~|f{}v~" + "i{}v~|f{}v~a{}v~|v{|u~|c{}v~|}w~|l{}v~fv~|iv~|ev~|iv~|ev~|iv~|ev~|iv~|Z{|v~|V{}h~}\\w~}k{}w~|d{}w~|mv~|a{}w~|mv" + "~|a{}w~|mv~|a{}w~|mv~|a{}w~|mv~|a{}w~|mv~|k{}w~|mv~|U{}w~}O{}w~|M{}w~|M{}w~|M{}w~|Bv~Lv~Lv~Lv~W{}w~}l{}w~}`w~}m" + "{|w~}b{}w~|l{|w~}b{}w~|l{|w~}b{}w~|l{|w~}b{}w~|l{|w~}b{}w~|l{|w~}.{}w~|y{}x~|s{|w~}a{|w~|m{}w~|a{|w~|m{}w~|a{|w" + "~|m{}w~|a{|w~|m{}w~|[{}w~|y{|w~}Zv~kv~\\{}w~|y{|w~} R{|w~r{}w~rw~}h{|w~dw~}h{|w~y{|w~|t{|w~}yw~}h{|w~y{|w~|lw~}" + "h{|w~dw~}Z{|w~P{}w~|y{|w~} Rs}v~g}|_{}w~{|y~}%{|p~|{|~yp~}g{}m~{}~{}m~|a{}l~|X{|m~}\\w~}kw~}a{|w~|mv~]v~r{}w~}X" + "{|v~{|v~^{}w~} n{}v~ gw~|tw~|O{|y~|uw~}]{|x~}sw~|rw~|p{|v~l{}r~}'{|w~}H{|w~} v{}w~ h{|w~T{|v~m{}w~}V{}w~}" + "S{}v~}?{|v~c{|_~|Ov~|`v~|m{}w~}Y{|v~W{|v~k{}w~}O{|v~ J{|}p~}|d{|Z~}d{|}p~}|-w~s{|w~ov~|v{}x~|lv~|j{|v~c{}w~}k{}" + "v~cv~}O{}w~}h{}v~|c{}w~}L{}w~}Rv~}fv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}rt~Z{}w~}V{}w~|ru~}rv~|h{}w~|p{|v~|{v~h{|v~}g" + "{|v~}c{}w~}Rv~}g{|v~}e{}w~}m{|v~|L{|v~|Z{|v~|Y{}w~}j{|v~|^{|v~|{|v~_{}w~}{}x~}p{|w~yv~cv~}r{}v~U{|v~|W{|u~|I{|w" + "~}F{}x~}L{|w~| u{}w~|n{|v~|_v~}m{}w~}a{|w~}O{|w~}m{|v~|b{}w~}Cw~}V{|w~}m{|v~|`w~}m{|w~}Wv~Lv~Tw~}vu~|Pv~_w~}mv" + "~mv~hw~}m{|w~}b{|w~}l{}w~}`v~|m{|w~}c{|w~}lv~|Zw~}@v~|Yv~S{|w~}mv~|[v~wv~]{}w~|{w~|u{|w~yw~}]v~}y{}v~U{|w~}y{}w" + "~|V{|v~}I{|w~}Lw~|M{|w~} M{|w~x}v~}x{}v~x}w~|e{}w~}ou~|]v~l{|w~|a{|w~p{}w~|_{|w~}l{}w~}`{|w~}Mw~}m{|w~}Zv~y{}w~" + "|Y{|v~q{|v~_{|w~}m{}w~|gv~|r{|v~|r{|v~h{}w~}u{}w~tv~a{|w~}q{|w~}`v~t{}w~t{}w~|bv~|m{|w~}c{|w~}l{}w~}X{|w~}V{}w~" + "|n{|w~}bv~}j{}v~]{}v~|P{}w~}Ru~j{}v~|f{|t~}|y{|v~x{|t~}e{}w~}hv~|`{|}l~}`v~}g{|v~}f{|u~|C{}w~Bu~|`u~|{}w~yu~|`{" + "}v~|m{}v~}a{|u~|{}w~y{}v~}!{}w~|Vv~|ty~}S{|v~P{|g~}U{|w~}Lw~|N{|r~}+{}y~|u{|}o~}v{|y~}+v~}v{}v~Ew~}5{}y~|vw~r{|" + "w~|y{|y~} N{}w~ p{|w~}m{}w~|Ux~}w{|x~} Dv~}v{}v~|W{|w~p{}y~|u{}x~dw~|j{}w~c{|w~p{}y~|u{}x~`{}v~|Yv~|j{|v~dv~|" + "j{|v~dv~|j{|v~dv~|j{|v~dv~|j{|v~dv~|j{|v~l{}w~}n{|v~Wv~}K{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~h{" + "|v~}f{}w~|p{|v~|{v~h{|v~}g{|v~}i{|v~}g{|v~}i{|v~}g{|v~}i{|v~}g{|v~}i{|v~}g{|v~}b{}v~|t{|u~|cq~|l{|v~}f{}w~}j{|v" + "~|e{}w~}j{|v~|e{}w~}j{|v~|e{}w~}j{|v~|Z{|v~|V{}k~}|Zw~}k{}w~}d{}w~|n{|v~|a{}w~|n{|v~|a{}w~|n{|v~|a{}w~|n{|v~|a{" + "}w~|n{|v~|a{}w~|n{|v~|k{}w~|n{|v~}U{|w~}O{}w~}M{}w~}M{}w~}M{}w~}Bv~Lv~Lv~Lv~W{|v~lv~|`w~}m{|w~}b{|w~}l{}w~}b{|w" + "~}l{}w~}b{|w~}l{}w~}b{|w~}l{}w~}b{|w~}l{}w~}Xt|X{}w~}{}x~}r{}w~}a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|[{|w~}y" + "{}w~|Zv~|m{|w~}\\{|w~}y{}w~| Qw~}s{}w~s{}w~fw~}f{}w~fw~}y{|y~|r{|y~}y{}w~fw~}y{|y~|l{}w~fw~}f{}w~Y{|w~P{|v~y{}w" + "~| Kv~}J{|w~|}y~|${}r~}y{}~y{|q~f{|n~|{}~yn~}_m~|V{|o~}[w~}kw~}`w~}n{|w~}^{|w~}r{|v~Wv~{}w~}]v~| o{|v~| hw" + "~t{|w~N{|y~|uw~}]w~|s{}x~|rw~|ov~|l{}s~&{|w~}H{}w~| v{}w~ h{}x~}Sv~|nv~|V{}w~}T{}v~}>{}w~}Q{}w~}J{}v~_{}w~}mv~" + "}Y{}w~}Vv~|lv~|Ov~} G{|}p~}|0{|}o~}*{}x~rw~}q{}v~|w{}w~l{|v~hv~|d{}w~}ku~c{}v~}P{}w~}i{}u~b{}w~}L{}w~}R{}v~|gv~" + "|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}qt~[{}w~}V{}w~|r{}v~|rv~|h{}w~|o{}w~}{v~g{}v~|hu~|c{}w~}R{}v~|hu~|e{}w~}lv~}L{}v~Y" + "{|v~|Y{}v~j{}v~\\{}w~}{}w~}_{|v~{w~|ow~y|v~d{}v~pv~}V{|v~|Wu~|H{|w~}F{|w~L{|w~| u{}w~m{}v~|_u~mv~|a{|v~Nv~|n{}" + "v~|b{|v~Cw~}Uv~|n{}v~|`w~}m{|w~}Wv~Lv~Tw~}uu~|Qv~_w~}mv~mv~hw~}m{|w~}b{|v~lv~|`v~}m{}w~}c{|v~m{|v~|Zw~}@{}w~|Yv" + "~S{|w~}mv~|[{}w~|y{|w~}]{|w~}{w~sw~y|w~}^{}w~}wv~}U{}w~yv~Uv~}Gw~}Lw~|M{|w~| L{|q~}v{}q~|d{|w~}p{|u~|]v~l{}w~|a" + "{|w~pv~^{|v~lv~|`{|w~|Mw~}m{|w~}Z{}w~y|v~X{}w~}pv~|`{|w~}mv~|gv~}r{|v~}r{}v~h{|v~u{}w~u{|w~}a{|w~}q{|w~}`{}w~|u" + "{}w~tv~av~}m{}w~}c{|v~lv~|X{|w~}V{|w~}n{}w~|c{|v~i{|v~|_{}v~}O{}w~}R{|v~}l{}v~|d{|r~y}v~y}s~}d{}w~}hv~|]{|}s~y}" + "|^{}v~|hu~|e{|v~}C{}w~C{}v~|^u~|}w~{}v~|^{}v~n{|v~}_{|u~|}w~{}v~} {}w~|V{}w~}ty~}S{|v~Q{}e~}V{|w~}Lw~|L{|t~*{|x" + "~|t{|y}u~}|u{|x~|*{}w~|v{|v~Fw~}5{|x~|ww|qw|y{|x~| >{|w~}mv~|Ux~}w{|x~} Ev~}v{|v~U{}x~|q{|y~}t{}x~e{}x~}j{}w" + "~b{}x~|q{|y~}t{}x~a{}v~}Y{|v~hv~|f{|v~hv~|f{|v~hv~|f{|v~hv~|f{|v~hv~|f{}v~hv~|n{|v~|n{|v~W{}v~}L{}w~}M{}w~}M{}w" + "~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~i{|u~|f{}w~|o{}w~}{v~g{}v~|hu~|h{}v~|hu~|h{}v~|hu~|h{}v~|hu~|h{}v~|hu~|c{}" + "v~|r{|u~|d{}s~|ku~|f{}v~j{}v~d{}v~j{}v~d{}v~j{}v~d{}v~j{}v~Y{|v~|V{}w~}r|Vw~}k{|w~|d{}w~m{}v~|a{}w~m{}v~|a{}w~m" + "{}v~|a{}w~m{}v~|a{}w~m{}v~|a{}w~m{}v~|k{}w~m{}u~U{|v~O{|v~M{|v~M{|v~M{|v~Bv~Lv~Lv~Lv~Vv~|n{|v~_w~}m{|w~}b{|v~lv" + "~|b{|v~lv~|b{|v~lv~|b{|v~lv~|b{|v~lv~|X{}u~X{|v~|x~}qv~|a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|a{|w~}mv~|Z{}w~yv~Yv~}m{}" + "w~}[{}w~yv~ P{|w~}t{}w~t{|w~}f{|w~}h{|w~}f{|w~}yy|p{|}y{|w~}f{|w~}yy|l{|w~}f{|w~}h{|w~}Y{|w~Ov~y|v~ K{}w~}Hw~}y" + "~}\"{}t~}x{}~x{|s~d{|p~}y{}~y{|p~}]o~|T{}p~Zw~}kw~}`{}w~|o{}w~|^{}w~|qv~|X{}w~|v~|]{|v~| o{}v~j{} {|x~}t{|" + "x~}N{|y~|v{}w~}^{}x~}r{}x~}rw~|o{}v~k{}u~|%v~Hv~ u{}w~ hw~|S{}v~o{}v~U{}w~}U{}v~}>{|v~}Q{}w~}Ju~_{|v~n{|v~|Z{|" + "v~|Vv~}m{|v~|P{}v~ C{}o~}4{|o~}|({|x~}s{}w~}s{}u~|x{}w~|l{}w~}h{}w~}d{}w~}l{|v~}bu~|g{|}g{}w~}j{}u~|b{}w~}L{}w~" + "}R{|u~|hv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}pt~\\{}w~}V{}w~|r{|v}qv~|h{}w~|nv~|v~g{|u~|j{}v~}b{}w~}R{|u~i{}v~}d{}w~}" + "l{|v~|M{}v~Y{|v~|Y{|v~|kv~}\\{|v~{v~|_{|v~|w~|o{}x~y}w~}e{|v~|p{|v~|W{|v~|X{}v~}G{|w~}F{|w~|M{|w~| u{}w~|nu~|_" + "u~}o{}v~_v~}O{}w~}o{|u~|av~}Dw~}U{}w~}o{|u~|`w~}m{|w~}Wv~Lv~Tw~}t{}v~|Rv~_w~}mv~mv~hw~}m{|w~}av~|n{|v~_u~mv~|bv" + "~|n{}v~|Zw~}@{}w~|Yv~Rv~n{}v~|[{|w~}y{}w~|\\w~}|x~}s{}x~y}w~|_{}v~v{|v~|V{|w~y}w~}Vu~Fw~}Lw~|M{|w~| K{|s~}t{}s~" + "|bv~p{}u~}]v~|mv~`{|w~q{}w~}]v~}n{}v~_{|w~|Mw~}m{|w~}Yw~y}w~|Xv~o{|w~}`{|v~n{|v~|g{}v~r{}u~rv~}gv~|v{}w~uv~|a{|" + "w~}q{|w~}`{|w~}u{}w~u{|v~au~mv~|bv~}n{}v~Vv~Uv~nv~b{}w~}hv~}`{|v~}N{}w~}Q{|v~}n{}v~}b{|c~}c{}w~}hv~|Z{|v~Z{|u~|" + "j{}v~}c{|w~B{}w~B{}x~|\\u~}w~}v~|\\{}x~|m{}x~}]{|u~}w~}v~} {{v~|V{|v~|uy~}S{|v~R{}v~y|q~}|u~W{|w~}Lw~|J{}u~*{|x" + "~|e{|x~|({}x~}u{|w~F{|x}|4{|x~|e{|x~| ={|v~n{|v~|Ux~}w{|x~} Ew~|u{|x~}U{|x~}p{}j~}iw~j{}w~b{|x~}p{}j~}f{}v~}" + "X{}w~}h{}w~}f{}w~}h{}w~}f{}w~}h{}w~}f{}w~}h{}w~}f{}w~}h{}w~}fv~}h{}w~}n{}w~}m{|v~Vu~|g{|}c{}w~}M{}w~}M{}w~}M{}w" + "~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~j{|u~}e{}w~|nv~|v~g{|u~|j{}v~}g{|u~|j{}v~}g{|u~|j{}v~}g{|u~|j{}v~}g{|u~|j{}v~}c{" + "}v~|p{|u~|e{|t~}k{}v~}e{|v~|kv~}d{|v~|kv~}d{|v~|kv~}d{|v~|kv~}Y{|v~|V{}w~}Mw~}k{}w~|d{}w~|nu~|a{}w~|nu~|a{}w~|n" + "u~|a{}w~|nu~|a{}w~|nu~|a{}w~|nu~|k{}w~|nt~|Uv~}Ov~}Mv~}Mv~}Mv~}Cv~Lv~Lv~Lv~V{}v~nv~}_w~}m{|w~}av~|n{|v~`v~|n{|v" + "~`v~|n{|v~`v~|n{|v~`v~|n{|v~W{}u~Wr~q{|v~_v~n{}v~|`v~n{}v~|`v~n{}v~|`v~n{}v~|Z{|w~y}w~}Yu~mv~|[{|w~y}w~} O{}w~}" + "u{}w~u{}w~}d{}w~}j{}w~}d{}w~}j{}w~}d{}w~}j{}w~}d{}w~}j{}w~}X{}w~O{|w~y}w~} L{}w~}G{}u~|!{|}x~}|w{}~v{}w~}b{|r~|" + "x{}~w{}s~|\\{|q~}Rq~|Zw~}kw~}`{|v~p{|v~]v~p{}w~}X{|q~[{}v~} p{|v~}ly}$v}|\"{}x~}t{}x~}Yy}|s{|y~|w{|v~|_{|w~" + "q{}x~}s{|w~n{|v~}l{|u~}%{}w~|Iw~} u{}w~L{}w~} tv}|P{|w~R{|v~|pv~}U{}w~}V{}v~}={}v~|Q{}w~}K{}v~|^v~|o{}v~Y{}v~U{" + "}v~m{}v~P{|v~}U{|v}M{}w~}F{|}q~}6{|q~}|G{|w}|^w~ru~y|x{|}t~y|}v~|kv~|h{|v~d{}w~}m{|u~|b{|u~|i{|~}g{}w~}l{|}u~}a" + "{}w~}L{}w~}Q{}u~|iv~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}ot~]{}w~}V{}w~|bv~|h{}w~|n{}q~f{}u~k{}u~a{}w~}Q{}u~k{|u~c{}w~}" + "kv~}c{|}h{|v~}Y{|v~|X{}v~l{}v~|[v~}v~]v~}w~n{}r~|ev~}n{}v~W{|v~|Y{}v~}F{|w~}Ew~}M{|w~| u{}w~|o{}u~|_t~|q{|v~}_" + "{|v~|P{|v~}pt~|a{|v~|Ew~}U{|v~|pt~|`w~}m{|w~}Wv~Lv~Tw~}s{}v~|Sv~_w~}mv~mv~hw~}m{|w~}a{}v~nv~}_u~}o{}v~a{}v~o{|u" + "~|Zw~}@{}w~|Y{}w~|Sv~|p{|u~|Zv~{|v~[v~}x~}s{|r~_{|v~|u{}v~Uq~V{}v~|Fw~}Lw~|M{|w~| I{|y}~y}|r{|}x~}|`{}w~}qs~]u~" + "n{|v~`{|w~r{|v~\\{|v~nv~}_{|w~}Mw~}m{|w~}Y{}r~X{}w~}nv~`{|v~|o{}v~|g{|v~|st~|t{|v~|g{}v~v{}w~v{|v~`{|w~}q{|w~}_" + "v~|v{}w~uv~}au~}o{}v~a{|v~nv~}Vv~U{|w~}p{}w~}bv~|h{|v~`u~M{}w~}P{|u~|q{}v~}_{}g~}|b{}w~}hv~|Z{|v~Y{}u~k{}u~a{|y" + "~A{}w~A{}~|Zl~|Z{}~|k{}~}[{|l~} yv~}Uv~}uy~}S{|v~S{}v~|x{|y}x~}|wu~X{|w~}Lw~|I{|v~}*{}x~|g{|x~}&{}y~}t{|x~ T{}x" + "~|g{|x~} <{|v~|o{}v~|Ux~}w{|x~} Ex~|t{|y~}Tw~|p{}j~}j{}x~|k{}x~}aw~|p{}j~}g{}v~}Wv~|h{|v~fv~|h{|v~fv~|h{|v~f" + "v~|h{|v~fv~|h{|v~g{|v~g{|v~|ov~|m{|v~V{|u~|i{|~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~k{}t~d{}w~" + "|n{}q~f{}u~k{}u~e{}u~k{}u~e{}u~k{}u~e{}u~k{}u~e{}u~k{}u~c{}v~|n{|u~|e{}u~|l{}u~c{}v~l{}v~|c{}v~l{}v~|c{}v~l{}v~" + "|c{}v~l{}v~|Y{|v~|V{}w~}Mw~}kv~c{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|a{}w~|o{}u~|k{}w~|o{" + "}s~U{|v~|P{|v~|N{|v~|N{|v~|N{|v~|Dv~Lv~Lv~Lv~Uv~}p{}v~^w~}m{|w~}a{}v~nv~}`{}v~nv~}`{}v~nv~}`{}v~nv~}`{}v~nv~}W{" + "}u~W{}t~|qv~}_v~|p{|u~|`v~|p{|u~|`v~|p{|u~|`v~|p{|u~|Yq~Xu~}o{}v~Yq~ M{}w~}|w{}x~}v{}v~b{}w~}|m{}v~b{}w~}|m{}v~" + "b{}w~}|m{}v~b{}w~}|m{}v~W{}x~}Nq~| M{|v~F{|u~ py~|V{|}y~y}|vy~|w{|y}y~y}Y{|s~}Q{|s~|Yw~}kw~}_{}v~|s{}v~|^{|w~}p" + "{|v~X{|r~}Z{}u~} q{}v~}o{|y~}$v~}\"w~|tw~|Y{}y~}|u{|y~|x{|u~^{}x~|q{|w~s{}x~}mu~}n{|s~}&{|w~|J{|w~| u{}w~L{" + "}v~ u{|v~|P{}x~}Q{}v~|r{}v~T{}w~}W{}v~}O{}|k{}v~}P{}w~}]{}|l{}u~]{|v~|q{}v~|Yv~}U{|v~}o{}v~}Q{|v~}T{}v~M{}v~C{|" + "}t~}6{|t~}|D{}w~}^{}x~|s{|m~y}q~|k{|v~fv~|e{}w~}n{|u~}`{}u~|l{|}y~}g{}w~}n{|}t~}`{}w~}L{}w~}P{}u~}jv~|h{}w~}hv~" + "|Y{}w~}M{}w~}W{}w~}nt~^{}w~}V{}w~|bv~|h{}w~|mq~e{}u~|n{}u~|a{}w~}P{}u~|n{}u~|c{}w~}k{|v~|d{|y~}k{|u~|Y{|v~|X{|u" + "~n{|u~Z{}r~}]{}s~}n{|r~e{}v~lv~}X{|v~|Z{|u~E{|w~}E{}w~M{|w~| u{|v~p{|t~|_s~|s{|u~]u~|P{}v~}s{|s~|`u~|k{|Ww~}T{" + "}v~}s{|s~|`w~}m{|w~}Wv~Lv~Tw~}r{}v~}Tv~_w~}mv~mv~hw~}m{|w~}`v~}p{}v~|_t~|q{|v~|`v~}q{|t~|Zw~}Q{|kv~|Y{}w~}S{}v~" + "pt~|Z{}w~y}w~}[{}s~|rs~}_v~}s{}w~}V{}s~}W{}v~|Ew~}Lw~|M{|w~| r{|v~|s{}s~}^u~}ov~|_w~|s{}w~|[v~}pu~]v~|Nw~}m{|w" + "~}Y{|s~}Xv~m{}w~|a{|u~p{|u~|fv~}t{}x~}x~}t{}v~ev~}w{}w~w{|v~}`{|w~}q{|w~}_{}v~|w{}w~v{}v~`t~|q{|v~|`v~}p{}v~U{}" + "w~|Uv~|r{|v~b{|v~fv~|bu~|M{}w~}O{|u~}t{|u~}\\{|k~}|`{}w~}hv~|Z{|v~X{}u~|n{}u~|`{|@{}w~@{|Xn~|X{|i{|Y{|n~} xv~}U" + "{|v~}vy~}S{|v~T{|v~|jv~}Y{|w~}Lw~|H{|v~|*{}x~}i{}x~}${}~}s{|y~ S{}x~}i{}x~} ;{|u~p{|u~|Ux~}w{|x~} Ey~|s{|~}T" + "{}x~}o{}j~}k{|w~k{}x~}a{}x~}o{}j~}h{}v~}W{|v~fv~|h{|v~fv~|h{|v~fv~|h{|v~fv~|h{|v~fv~|h{}w~}f{}w~}p{|v~l{|v~U{}u" + "~|l{|}y~}c{}w~}M{}w~}M{}w~}M{}w~}D{}w~}M{}w~}M{}w~}M{}w~}Z{|v~n{|}s~c{}w~|mq~e{}u~|n{}u~|d{}u~|n{}u~|d{}u~|n{}u" + "~|d{}u~|n{}u~|d{}u~|n{}u~|d{}v~|l{|u~|et~|n{}u~|c{|u~n{|u~b{|u~n{|u~b{|u~n{|u~b{|u~n{|u~X{|v~|V{}w~}Mw~}x{|p{}v" + "~c{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|a{|v~p{|t~|k{|v~p{|q~j{|gu~|Pu~|k{|_u~|k{|_u~|k{|_u~|k{" + "|Vv~Lv~Lv~Lv~U{|v~}r{}v~}^w~}m{|w~}`v~}p{}v~|_v~}p{}v~|_v~}p{}v~|_v~}p{}v~|_v~}p{}v~|W{}u~Vu~|q{}v~|_{}v~pt~|`{" + "}v~pt~|`{}v~pt~|`{}v~pt~|Y{}s~}Xt~|q{|v~|Y{}s~} Lu~}p{}u~|au~}p{}u~|au~}p{}u~|au~}p{}u~|au~}p{}u~|W{}x~}N{}s~} " + "M{|v~|Ev~} py~|Jy~|M{}t~O{|u~}Xw~}kw~}_{|t~}w|}u~}]{}w~}ov~|Xr~|Y{}t~}y| tt~|r{}x~}$v~}\"w~t{|w~X{}v~}y|y{|" + "y~y|}t~|_{|x~}ow~}tw~|m{|t~|r{|}q~}&w~}J{}w~ t{}w~L{}v~ u{|v~|Pw~|Pu~|t{}v~|\\s|}w~}r|a{}v~}Nx~}|p{}t~O{}w~}]{}" + "y~}|q{}t~|\\{}v~|s{}u~Y{|v~|T{}u~|r{}u~|_{~}|r{|}u~|T{}v~M{}v~@{|}w~}6{|w~}|A{}w~}^{|w~r{|o~}{}s~}iv~}f{}w~}e{}" + "w~}q|y}s~|_{}t~|p{|}w~}g{}w~}r|y}q~}_{}w~}g|`{}w~}O{}t~}o{|}u~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}mt~_{}w~}h|i{}w~|bv~" + "|h{}w~|m{}r~dt~}|r{|t~|`{}w~}Ot~}q{|t~}b{}w~}jv~}d{|w~}|p{|}u~}X{|v~|W{}u~|q{}u~|Z{|r~|]{|s~|mr~f{|v~|l{|v~|Y{|" + "v~|[{|u~}b|^{|w~}E{|w~|N{|w~| tv~}r{}s~|_w~y}x~}|w{|}u~|]{|u~|p{|}|^t~y|x{|}w~}w~|`{|u~|n{|y~|Xw~}St~y|x{|}w~}" + "w~|`w~}m{|w~}Wv~Lv~Tw~}q{}v~}Uv~_w~}mv~mv~hw~}m{|w~}`{}v~}r{}v~}^s~}s{|v~}_{}v~}s{|s~|Zw~}Qy~}|o{}w~}X{|v~}|U{|" + "v~}s{|s~|Z{|q~Z{|s~qs~|`{}w~}qv~}Vs~|X{}v~|Dw~}Lw~|M{|w~| qu~|u{}w~|v~}_s~|s{|u~^{}w~t{}w~}Z{|v~}|t{|}v~|]{}v~" + "|ny|^w~}m{|w~}Xs~|Y{}w~}m{|w~}a{|t~|s{}t~}f{}v~}v{|w~{w~|v{}v~}e{}v~}x{}w~x{}u~_{|w~}q{|w~}^u~}|y{}w~x{}u~}`s~}" + "s{|v~}_{|v~}|t{|}v~|U{|v~}|W{|v~|t{|v~|bu~f|v~}c{}v~}h|_{}w~}Vs}t~}v{}t~s}`{|y}t~y}|]{}w~}hv~|Z{|v~Wt~}|r{|t~|#" + "{}w~ vp~| {|p~} wv~}T{}v~}wy~}v{}~Z{|v~S{}x~|hx~}X{|w~}Lw~|G{}w~}){|w~|m{|w~|\"{|}q{} R{|w~|m{|w~| XY| ${|u~}r{" + "|t~}Ux~}w{|x~} E{}qy|T{|w~c{}x~gw~|lw~}a{|w~c{}x~e{}v~}Vv~}f{}w~}hv~}f{}w~}hv~}f{}w~}hv~}f{}w~}hv~}f{}w~}hv~|f" + "{|v~pv~}l{|v~}h|h{}t~|p{|}w~}c{}w~}g|a{}w~}g|a{}w~}g|a{}w~}g|X{}w~}M{}w~}M{}w~}M{}w~}Z{|v~r|x}q~b{}w~|m{}r~dt~}" + "|r{|t~|bt~}|r{|t~|bt~}|r{|t~|bt~}|r{|t~|bt~}|r{|t~|d{|v~|j{|v~}f{}s~}|r{|t~|a{}u~|q{}u~|a{}u~|q{}u~|a{}u~|q{}u~" + "|a{}u~|q{}u~|X{|v~|V{}w~}Mw~}xy~}y|wy|u~|bv~}r{}s~|`v~}r{}s~|`v~}r{}s~|`v~}r{}s~|`v~}r{}s~|`v~}r{}s~|jv~}r{}w~}" + "|u~|o{|}y~g{|u~|p{|}|_{|u~|n{|y~|`{|u~|n{|y~|`{|u~|n{|y~|`{|u~|n{|y~|Wv~Lv~Lv~Lv~T{}u~}|x{|}u~}]w~}m{|w~}`{}v~}" + "r{}v~}^{}v~}r{}v~}^{}v~}r{}v~}^{}v~}r{}v~}^{}v~}r{}v~}V{}u~V{|v~}r{}v~}^{|v~}s{|s~|`{|v~}s{|s~|`{|v~}s{|s~|`{|v" + "~}s{|s~|Xs~|Xs~}s{|v~}Ws~| K{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~^{}u~}x|{x|}t~U{}x~}N{|s~| M" + "{|w~|D{}w~| q{|y~}K{|y~}L{}v~|N{}v~Ww~}kw~}^{|j~}\\v~|o{}w~}X{}s~W{|^~} -s~}v|}v~}$v~}#{|w~t{|x~}X{}e~|^w~|o" + "{|w~|v{}w~k{|s~}v|}t~y}v~}'{}w~Jw~} t{}w~L{}v~ u{|v~|Q{|w~O{|u~}w|}u~}\\{|e~|ab~`u~w}|x}r~|O{}w~}]{}v~w}|x}s~}Z" + "t~}w|}t~X{}w~}S{|t~y}v|}t~}^v~y}y|y}s~|S{}v~M{}v~={|}~}6{|y~}|?{}w~}]w~}q{}r~|y{}u~}h{|v~|f{|v~e{}c~|]{}s~y}v|y" + "}t~}g{}b~|^{}c~}`{}w~}N{}r~y}v|y}r~|h{}w~}hv~|Y{}w~}M{}w~}W{}w~}lt~`{}d~}i{}w~|bv~|h{}w~|lr~cr~}v|}s~}_{}w~}Ns~" + "y}v|}s~}a{}w~}j{|v~|e{|s~}u|}r~W{|v~|Vs~}v|y}t~|Xs~}\\{|s~|m{}t~}fv~}j{}v~Y{|v~|[{}\\~}^{|w~}Dw~}N{|w~| t{}u~y" + "|x{|}w~y}w~|_w~}{k~|[{|t~}|wy|}x~|^{|k~y|w~|_{|t~}|vy|y}w~|Xw~}S{|k~y|w~|`w~}m{|w~}Wv~Lv~Tw~}p{}v~}Vv~_w~}mv~mv" + "~hw~}m{|w~}_{}u~}|x{|}u~}]w~y}w~y|yy|}u~|^{}u~}|x{|}w~}w~|Zw~}Qv~}y|v{|}u~|Wm~[{}u~}w|}v~}w~|Y{}s~}Yt~}q{}t~|a{" + "}v~p{|v~|W{}t~W{}d~Uw~}Lw~|M{|w~| q{|u~}|y{|}v~{|s~br~}y|yy|}u~|^{|w~}v{}v~X{}u~}y|{y|}u~}\\{|t~}|vy|y}y~}^w~}" + "m{|w~}X{}t~Xv~|lv~|b{|s~}v|}q~x}hu~}|{y|w~}{}w~}|{|}u~c{}u~}|}w~|}t~|_{|w~}q{|v~}_{|s~}v~}s~}_w~y}w~y|yy|}u~|^{" + "}u~}y|{y|}u~}S{}r~}Z{}v~}|x{|}v~}b{|Z~c{}c~}_{}w~}Vk~v{}l~|^{|v~Y{}w~}hv~|Z{|v~Vr~}v|}s~|\"{}w~ ur~| y{|r~} vv~" + "}St~}y|y~}{y|}x~`{}b~}a{}~|f{~}W{|w~}Lw~|G{|w~}({|v~}|s{|}v~| E{|v~}|s{|}v~| X{|Z~} ${|s~}y|{y|}q~}|}Xx~}w{|x~" + "} l{}x~|c{}x~h{}x~}m{|w~|`{}x~|c{}x~f{|v~}V{|v~|f{|v~i{|v~|f{|v~i{|v~|f{|v~i{|v~|f{|v~i{|v~|f{|v~i{|v~dv~|r{|" + "v~k{|b~g{}s~y}v|y}t~}c{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}w~}M{}w~}M{}w~}Z{|b~}a{}w~|lr~cr~}v|}s~}`r~}v|}s~}`r~}v|}" + "s~}`r~}v|}s~}`r~}v|}s~}b{|x~|h{|x~}f{}o~}v|}s~}_s~}v|y}t~|_s~}v|y}t~|_s~}v|y}t~|_s~}v|y}t~|W{|v~|V{}w~}Mw~}xk~}" + "a{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|`{}u~y|x{|}w~y}w~|j{}" + "u~y|x{|}u~y{|t~}|vy|}v~f{|t~}|wy|}x~|^{|t~}|vy|y}w~|_{|t~}|vy|y}w~|_{|t~}|vy|y}w~|_{|t~}|vy|y}w~|Wv~Lv~Lv~Lv~S{" + "}j~}\\w~}m{|w~}_{}u~}|x{|}u~}\\{}u~}|x{|}u~}\\{}u~}|x{|}u~}\\{}u~}|x{|}u~}\\{}u~}|x{|}u~}U{}u~V{}t~}|x{|}u~}\\{" + "}u~}w|}v~}w~|_{}u~}w|}v~}w~|_{}u~}w|}v~}w~|_{}u~}w|}v~}w~|X{}t~Ww~y}w~y|yy|}u~|W{}t~ I{}h~}\\{}h~}\\{}h~}\\{}h~" + "}\\{}h~}T{}x~}Ms~ K{|y~}C{|w~ p{}x~K{}x~Kw~|L{}x~|Ww~}kw~}]{|l~}\\{|v~n{|w~}X{|s~U{}`~} -{|h~|$v~}#{}x~}t{}x" + "~}X{|}g~|^{}x~}m{}w~}y|}v~|j{|g~}y{}v~}({|w~|L{|w~| t{}w~L{}v~ u{|v~|Q{}x~}N{}k~}[{|e~|ab~`e~|N{}w~}]{}g~}Y{|i~" + "|Xv~|R{|g~}]i~|R{}v~M{}v~;y|5{|<{}w~}]{|w~|p{|v}|w{|x}|e{}v~dv~}f{}e~}|[{}d~|g{}d~}\\{}c~}`{}w~}M{}c~}|g{}w~}hv" + "~|Y{}w~}M{}w~}W{}w~}kt~a{}d~}i{}w~|bv~|h{}w~|l{|s~b{}f~|^{}w~}M{}f~|`{}w~}iv~}e{|c~V{|v~|Uf~}W{}t~|[s~l{}t~|g{}" + "v~hv~}Z{|v~|[{}\\~}^{|w~}D{}w~N{|w~| sj~{}w~|_w~}{|m~|Y{}i~|]{|m~|{|w~|^{|f~|Xw~}R{|m~|{}w~|`w~}m{|w~}Wv~Lv~Tw" + "~}o{}v~}Wv~_w~}mv~mv~hw~}m{|w~}^h~\\w~}{k~|\\k~y|w~|Zw~}Qg~}V{|n~Zk~{}w~|Y{|s~|Y{}u~}q{|t~a{|v~|o{}v~W{|u~|W{}d" + "~Uw~}Lw~|M{|w~| p{|l~|ys~be~}\\{}v~x}u~V{}j~}Z{|h~}^w~}m{|w~}X{|u~|Y{|w~}k{}w~}b{|w~}m~|s~h{|m~xm~|b{}g~|^{|w~" + "}pr~a{|f~}^w~}{k~|\\{}j~}R{|r~}Y{}l~}a{}Z~}d{}c~}_{}w~}Vk~v{}l~|^{|v~Y{}w~}hv~|Z{|v~U{}f~|!{}w~ tt~| w{|t~} uv~" + "}R{}i~`{}b~}`{|?{|w~}Lw~|Fw~}&{}t~w}t~} A{}t~w}t~} V{|Z~} ${|w~}m~|s~Xx~}w{|x~} m{|x~}b{}x~hw~lk~k{|x~}b{}x~" + "fv~}U{}v~dv~}j{}v~dv~}j{}v~dv~}j{}v~dv~}j{}v~dv~}j{}w~}d{}w~}r{}w~}k{|b~f{}d~|c{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}" + "w~}M{}w~}M{}w~}Z{|d~}|`{}w~|l{|s~b{}f~|^{}f~|^{}f~|^{}f~|^{}f~|`{|~|f{|~}f{|w~|}f~|]f~}]f~}]f~}]f~}V{|v~|V{}w~}" + "Mw~}xl~}_j~{}w~|_j~{}w~|_j~{}w~|_j~{}w~|_j~{}w~|_j~{}w~|ii~w{|f~e{}i~|]{|f~|^{|f~|^{|f~|^{|f~|Wv~Lv~Lv~Lv~R{}l~" + "}[w~}m{|w~}^h~Zh~Zh~Zh~Zh~){|f~Zk~{}w~|^k~{}w~|^k~{}w~|^k~{}w~|X{|u~|Ww~}{k~|V{|u~| H{|j~|Z{|j~|Z{|j~|Z{|j~|Z{|" + "j~|S{}x~}M{}u~} I{}Ax~} pw~|Lw~|L{|y~|Jy~|Vw~}kw~}[{}o~|[{}w~}mv~Wt~}T{|}b~} +{}l~}\"v~}#w~|tw~|U{|}l~}]{|w~" + "ko~|h{|j~}|w{}u~({}w~L{}w~ s{}w~Lv~| u{|v~|Qw~}M{|m~}Z{|e~|ab~`g~}|M{}w~}]{}h~|W{|k~W{}v~P{|i~|\\k~}P{}v~Mv~| " + "i{}w~}\\{}w~Jv~}d{}v~f{}g~}|X{|}h~}e{}g~}|Z{}c~}`{}w~}L{|}g~}|e{}w~}hv~|Y{}w~}M{}w~}W{}w~}jt~b{}d~}i{}w~|bv~|h{" + "}w~|ks~a{|i~}\\{}w~}L{|i~}^{}w~}i{|v~|e{}f~}U{|v~|T{}i~|Ut~Z{}u~}l{|t~g{|v~|h{|v~|[{|v~|[{}\\~}^{|w~}D{|w~N{|w~" + "| s{|l~|{}w~|_w~}x{}q~}|W{|j~|[{}p~|y{|w~|]{|g~|Xw~}P{}q~}|y{}w~|`w~}m{|w~}Wv~Lv~Tw~}n{|v~}Xv~_w~}mv~mv~hw~}m{" + "|w~}]{}l~}[w~}{|m~|Zm~|{|w~|Zw~}Qh~|T{|o~Z{|m~|{}w~|Xs~X{}u~|pu~}av~}m{}w~}Wu~V{}d~Uw~}Lw~|M{|w~| o{|n~|w{}u~b" + "f~}Z{}p~}T{}l~}X{|i~}^w~}m{|w~}Wu~Xv~|k{|v~b{|w~y|o~|{}t~g{|o~|x{|o~}`{}i~|]{|w~}p{}s~_{}j~}|]w~}{|m~|Z{}l~}P{|" + "s~}X{}n~}`X~d{}c~}_{}w~}Vk~v{}l~|^{|v~Y{}w~}hv~|Z{|v~T{|i~} {{}w~ sv~| u{|v~} tv~}Q{}j~`{}b~}#{|w~}Lw~|G{|w~}${" + "}m~} ={}m~} T{|Z~} ${|w~y|o~|{}t~Xx~}w{|x~} mw~|b{}x~i{}x~|lk~kw~|b{}x~g{|v~Tv~}d{}v~jv~}d{}v~jv~}d{}v~jv~}d" + "{}v~jv~}d{}v~k{|v~|d{|v~rv~|k{|b~e{|}h~}a{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}w~}M{}w~}M{}w~}Z{|g~}|]{}w~|ks~a{|i~}[" + "{|i~}[{|i~}[{|i~}[{|i~}/{|w~|y{|i~}Z{}i~|[{}i~|[{}i~|[{}i~|U{|v~|V{}w~}Mw~}xm~|^{|l~|{}w~|_{|l~|{}w~|_{|l~|{}w~" + "|_{|l~|{}w~|_{|l~|{}w~|_{|l~|{}w~|i{|l~}u{|g~d{|j~|\\{|g~|]{|g~|]{|g~|]{|g~|Wv~Lv~Lv~Lv~Q{|}p~}|Zw~}m{|w~}]{}l~" + "}X{}l~}X{}l~}X{}l~}X{}l~}){|w~}l~}Y{|m~|{}w~|^{|m~|{}w~|^{|m~|{}w~|^{|m~|{}w~|Wu~Vw~}{|m~|Tu~ E{|}p~}|V{|}p~}|V" + "{|}p~}|V{|}p~}|V{|}p~}|Qw~}Lu~| i{}y~| q{|w~}M{|w~}K{|}I{|}Uw~}kw~}Y{|y}w~y}|Yv~|m{}w~|X{}u~|Q{|}e~} *{|}p~" + "}|!v~}#w~t{|w~Py|x}y~x}y|[w~|j{}r~|e{|n~}|t{}u~){|w~|N{|w~| s{}w~Lv~ t{|v~|R{|w~|L{|}p~|Y{|e~|ab~`y|}l~}|K{}w~}" + "]{|}k~|S{}o~|Vv~}N{|m~}Z{}n~}|O{}v~Mv~ h{}w~}[v~L{|v~|d{|v~|g{}k~y}y|T{|}m~}|c{}m~x}y|W{}c~}`{}w~}J{|}k~}|c{}w" + "~}hv~|Y{}w~}M{}w~}W{}w~}it~c{}d~}i{}w~|bv~|h{}w~|k{|t~_{|m~}|[{}w~}J{|l~|]{}w~}h{}w~}c{|}k~}|T{|v~R{|}m~|S{}v~}" + "Z{|u~|kt~gv~}f{}v~[{|v~|[{}\\~}^{|w~}Cw~|O{|w~| q{}p~}x{}w~|_v}vy}w~y}|S{}m~}Xy}w~y}|w{|w}|[{|l~}|Vw~}N{|}w~y}" + "|w{}w~|`v}lw}|Wv~Lv~Tv}m{|u}Yv}_w~}mv~mv~hw~}m{|w~}\\{|n~|Zw~}x{}q~}W{}q~}|y{|w~|Zw~}Q{|}l~}P{|y}s~X{}q~}x{}w~|" + "X{}u~}X{|u~o{}v~|b{}w~}kv~}X{}w~}V{}d~Uv~Lw~|M{|w~| n{|}q~}u{|}w~bv~{}o~}|X{|r~|R{|}p~}|U{}l~}|^w~}m{|w~}W{}w~" + "}Xw}|i{|w}b{|w~|{|q~|y{|t~f{|q~|v{|q~|^{|l~}[{|w~}os~]{|}o~}|[w~}x{}q~}W{|}p~}|M{|}v~}W{|p~|`{|X~|e{}c~}_{}w~}V" + "k~v{}l~|^{|v~Y{}w~}hv~|Z{|v~R{|m~}| y{}w~ rx~| s{|x~} sv~}P{|}n~}|`{}b~}#{|w~}Lw~|Ty|pv~|\"y|}u~}y| 9y|}u~}y| " + "R{|Z~} ${|w~|{|q~|y{|t~Xx~}w{|x~} y}| q{}x~}aw}j{|w~kk~l{}x~}aw}gv~}U{|v~|d{|v~|l{|v~|d{|v~|l{|v~|d{|v~|l{|v~|" + "d{|v~|l{|v~|d{|v~|l{|v}bv}|t{}w~}j{|b~c{|}m~}|_{}c~}a{}c~}a{}c~}a{}c~}X{}w~}M{}w~}M{}w~}M{}w~}Z{|m~x}y|Z{}w~|k{" + "|t~_{|m~}|X{|m~}|X{|m~}|X{|m~}|X{|m~}|.w~}v{|}n~}|X{|}m~|X{|}m~|X{|}m~|X{|}m~|S{|v~|V{}w~}Mv|wy|}u~y}|Z{}p~}x{}" + "w~|]{}p~}x{}w~|]{}p~}x{}w~|]{}p~}x{}w~|]{}p~}x{}w~|]{}p~}x{}w~|g{}o~|r{|l~}|a{}m~}Y{|l~}|Y{|l~}|Y{|l~}|Y{|l~}|U" + "v~Lv~Lv~Lv~O{|y}v~y}|Xw~}m{|w~}\\{|n~|V{|n~|V{|n~|V{|n~|V{|n~|(w~|{|n~|V{}q~}x{}w~|\\{}q~}x{}w~|\\{}q~}x{}w~|\\" + "{}q~}x{}w~|W{}w~}Vw~}x{}q~}R{}w~} B{|t}|P{|t}|P{|t}|P{|t}|P{|t}|Nw~} 3{|~} ;f| '{|y}w~}y| 8{|y~|X{|x~}" + "h{|}w~}|ay|y}w~y}| rw~}N{}w~ ?{|w~| D{}w~I{|y}w~y}|%b|\\{|x}u~y}|!y|y}u~y}y|O{|y}w~y}| {{y|}u~y}|Vy|y}v~}y| u{|" + "w~| B{|v~| 1{|y}u~y}| o{|x}u~y}y| Fv~| 7y|y}v~y}| {{y|y}q~|#y|y}u~y}y| {{|y}v~y}y| a{|w~}C{}x~}O{|w~| oy}" + "v~}|vv|!{|}t~y}|!{|y}t~y}|Sv|Av~\"v|Lv~ Rv|mv|mv|hv|lv|Z{|y}u~}|Xw~}v{|}w~y}|T{|}w~y}|w{|w~|Zv|Ny|y}u~y}| {{|y}" + "w~}|uw|W{|u}|Wv}|o{|v}av|ju|Xv~| sv~Lw~|M{}w~| ly|}v~}|Uv~yy|}v~y}|S{|y}~y}|N{|y}v~y}|Qy|y}v~x}|[v|m{|w~}W{|w~" + "|#{|w~|x{|}w~}|v{|}y~y}c{|y}x~y}ry}x~y}|Z{|y}s~}y|G{}w~}|Zy|v~}|Ww~}v{|}w~y}|T{|y}v~y}| x{|y}w~}| Ry|y}v~y}|" + " Zy| rv~}M{|y}u~}|]`| Iw~|T{|y~}|u{|u~ 5{|w~|x{|}w~}|v{|}x~}Wx~}w{|x~} {}y~} r{|y}|Kw~|L{|y}|Hv~| E" + "{|y}u~y}| qy|y}v~y}|Sy|y}v~y}|Sy|y}v~y}|Sy|y}v~y}|Sy|y}v~y}|+{|y~}r{|y}v~y}|R{|y}v~y}y|S{|y}v~y}y|S{|y}v~y" + "}y|S{|y}v~y}y| oy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|Zy}v~}|vv|d{|}v~y}|n{|y}u~y}y|\\{|}t~y}|U{|y}" + "t~y}|T{|y}t~y}|T{|y}t~y}|T{|y}t~y}|Rv|Lv|Lv|Lv|!v|lv|Z{|y}u~}|R{|y}u~}|R{|y}u~}|R{|y}u~}|R{|y}u~}|'{}x~|w{|y}u~" + "}|S{|y}w~}|uw|Z{|y}w~}|uw|Z{|y}w~}|uw|Z{|y}w~}|uw|Vv~|Vw~}v{|}w~y}|Qv~| Mw~| K{|y~| e{|w~Nw~" + "| ?{}w~ Cw~} .{}w~ @{|v~|d{}| Kv~| !u~| J{|w~}C{|w~O{|w~| 9w~} Iv~ bw~}9{|w~| X{|v~ rv" + "~Lw~|M{}w~| w~| D{|w~| .w~| ?{|v~}g{|x~| M{|v~ {|u~| K{|w~}Bw~|P{|w~| :{}w~} Iw~} bw~}9{" + "|w~| X{}w~| r{}w~|Mw~|Mv~ ;v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~|T{|l~| 4{|w~" + "|Ax~}w{|x~} {{}y~} /v~| ?x~| f{|x~ M{} %{}w~|Uw~}D{}w~| Lw~| K" + "{|y~| d{|w~Pw~| ?{|w~ C{}w~ .{|w~ ={|u~}|l{|u~| N{}v~ {{|u~| L{|q~}H{}x~}V{}q~| :v~| Iw~}" + " bw~}9{|w~| Xv~ q{}w~}Mw~|N{|v~ ;v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~|T{|}o~}| " + " 3{|w~|Ax~}w{|x~} {{|x~| 0v~}m{} N{|x~ e{}y~} Rv~Tw~}Dv~ S{}x~x{|w~| " + " K{|y~| c{}x~}R{}x~} >{|x~| Cw~} .{|x~| ;{}t~}|sy|}t~| N{|v~} y{|u~| M{|q~}H{|w~V" + "{}q~| ;{}v~ I{|w~} bw~}9{|w~| Y{}w~} q{|v~}|Ow~|P{|}v~} ;v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} " + " )v~}Iy~} gw~|Q{|y}v~y}| 1{|w~|Ax~}w{|x~} yx~| 0{}v~|p{|~} N{|x~| f{|x~ " + " S{}w~}Tw~}E{}w~} S{}x~|y{|w~ J{|y~| bw~|Sw~| >{}y~} K{}y~} 9{|p~x}q~}| N{|u~" + "| x{|u~ M{|q~} y{}q~| K{|}|p{|u~| I{}w~| bw~}9{|w~| Z{|v~ o{}q~}Tw~|U{|p~ :v~ S{|w~}W{|w~|#{|" + "w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~| W{|w~|Aw|vx| y{|x~} 0{|u~|s{}x~} N{|x~| " + " f{|x~| U{|v~Sw~}F{|v~ R{|x~}y{}w~ J{|y~| b{|x}|T{|x}| w{}g~}| Q" + "x|y}u~} v{|u~ N{|p} yp}| K{|x~}y|wy|}u~} J{|}v~ aw~}9{|w~| \\{|}v~} nq~}Tw~|U{|q~| :v~ S{|w~}" + "W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy~} gw~| W{|w~| :{|}w|}w~| /t~y}x|y}v~} U{|}|x{|w~| " + " f{}x~| W{|}v~}Sw~}H{|}v~} Qq~| J{|y} *{|}l~}| O{}q" + "~ tt| `{|i~} Lr~| aw~}9{|w~| `{}q~ l{}s~}Tw~|U{|s~}| 9v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~" + "} )v~}Iy~} gw~| W{|w~| :{|q~ .{|i~} U{|q~ ly}w|}w~| [{}q~Rw~}" + "L{}q~ P{}r~ M{|y}u~y}y| L{}r~| R{|j~} Ks~} `w~}9{|w~| " + " `{}r~| jy|v}|Tw~|U{|u}| 6v~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} )v~}Iy}| gw~| W{|w~| :{|r~| " + " -{|k~}| U{|r~} l{}r~} Z{}r~|Rw~}L{}r~| O{}t~ " + " k{}t~} -{|`}| `{|}m~}| Jt~} _w~}9{|w~| `{}s~| :w~| cv~ S{|w~}W{|w~|#{|w~| j{}w~ s{}" + "w~Uw~} )v~} d{|w~| 9y}w~y} ){}o~}| S{|}u~}| k{}r~ Y{}s~|Qw~" + "}L{}s~| M{}w~} j{}w~}| +{}`~} ]{|x}v~y}| Gw~y} ]w~}9{|w~" + "| `{}v~}| 8w~| cv~ S{|w~}W{|w~|#{|w~| j{}w~ s{}w~Uw~} g{|w~| 8{|}v~y}| Ly| " + " g{|y}w~}| X{}v~}|Ow~}L{}v~}| Iy| " + "l{}`~} Ww~| " + " L{}`~} Ww}| " + " r{" }; + + // Define a 104x128 binary font (huge sans). + static const char *const data_font_huge[] = { + " " + " " + " " + " " + " " + " " + " " + " " + " FY AY " + "'Z ;W @Y @Y 'Z Y @Y (Z :Y ?Y (Z 0Y ?Y (Z >X " + " " + " " + " " + " " + " )X AX '\\ )XAV 7YDY -] BY BY '[ +YEY 2X AY (\\ -YDY 'XAU 3Y AY (\\ )XAV 8YD" + "Y LY AY (\\ ,YEY #Y " + " " + " " + " " + " (X CX '^ +[CU 6ZEY .` C" + "X CY '] -ZEZ 2X CY (^ .ZEZ )[CU 2Y CY (] *[CU 7ZEZ LY CY (] -ZEZ %Y " + " " + " " + " " + " " + " 'Y EY '^ ,^FV 6ZEY /b CX DX '_ .ZEZ 2Y DX '_ /ZEZ +_FV 1X CX (_ ,^FV 7ZEZ " + " KX CX (_ .ZEZ &Y " + " " + " " + " " + " %Y GY '` .aHV 6ZEY 1e DY FX" + " 'a /ZEZ 1Y FX '` /ZEZ +aHV 0X EX '` .aHV 7ZEZ JX EX (a /ZEZ &X " + " " + " " + " " + " " + " #X GX 'XNX 0dKW 6ZEY 1f DY HX &WMX 0ZEZ 0X GX 'XMW 0ZEZ ,dLX /X GX 'WMX 0dLX 7ZEZ" + " IX GX 'WMX 0ZEZ 'X :T " + " " + " " + " " + " ;X IX 'XLX 1o 5ZEY 2ZLY " + " CX IX &WKW 0ZEZ /X HX (XLX 1ZEZ ,o .Y HX (WKX 1o 6ZEZ IY IY (WKW 0ZEZ (X X MX &WH" + "W 3VHa 4ZEY 3WDW CX LX 'WGW 2ZEZ -X LX 'WHW 2ZEZ -VHa +X KX (XHW 3VHa 5ZEZ GX KX (WGW 2ZEZ )X " + " ?b " + " " + " " + " " + " ?W MW &WFW 4VF^ 3ZEY 4WBV BW MX 'WEW 3ZEZ ,W M" + "X 'WFW 3ZEZ -VF^ )X MX 'WFW 4VF^ 4ZEZ FX MX 'WFW 3ZEZ *X ?d " + " " + " " + " " + " " + " ?W X 'WDW 5UC[ 2ZEY 4VAV AW X &WDW 4ZEZ +W NW 'WDW 4ZEZ -UC[ 'W MW 'WDW 5UC[ 3ZEZ " + "EW MW 'WDW 4ZEZ +X ?f " + " " + " " + " " + " @X \"X 'WBW 6UAW 0ZEY 4V@V B" + "X !W &WBV 4ZEZ +X !W 'WBW 5ZEZ .VAW $W W 'WBW 6UAW 1ZEZ DW W 'WBV 4ZEZ +W >f " + " " + " " + " " + " " + " ?X #W 'W@W U?V AX #W &W@V NX #W &V@W 9W \"W 'W@V .W " + "\"W 'W@V !W >XHX " + " 3Y " + " " + " " + " 6W $W &V>V U?V @W $W &W>V " + " NW $X 'V>V 8W $X (W>V /X $W 'W>V #W >XFX " + " 5Z " + " " + " ,Z " + " GZ " + " #U?V NY 7Z ,X CVCW MY " + " 7Z ,X $Z 7Z ,X >Z 6Y ,X 4Z 7Y +W 7Y @Z " + " " + " +Z " + " " + " HY \"U?V " + " MY 8Y ,Y CVBV LY 9Z ,Y #Z 9Z ,Z >Z 8Y ,Y 3Y 8Z ,Y 9Y " + " ?Z " + " *Y " + " " + " IY !U?V " + " LY :Y ,[ $R>U ,V@V MZ :Y +Z #Y 9Y +Z ?R" + ">U 8Y 9Y +Z %S?U HY :Z ,[ ;Y ?[ " + " " + " )Y " + " 8U " + " 9Y V@U JY Y @Y /X 0Y K` .X " + " ^ =ZEY @Y " + " NVAV

Y E^ /X 0_ %f 1] 'c " + " @ZEZ AY MV" + "CW X *^ +]DU 7ZEZ 5U>U JY ?Y *^ -YEZ 4Y " + " ?Y *^ .ZEZ 5[ ]DU 5Y >Y +^ ,]DU 6ZEZ Y ?Y +_ .ZEZ \"Y Z G[ G\\ @e !f JX !Y " + "LY %d :Y Y Ha /X 0b *j L] D_ " + " +g A[ LY 8Z -ZEZ \"Y 1o )V FX NZ FY " + "%Y ,X NX*Z NW 3WEW H\\ #[ !Z \"[ \"[ \"[ G[7T 8g 0Y " + "@Y +_ ,_FV 7ZEZ 5U>U IY @Y +` .YEZ 3X ?X *` /ZEZ 4[:P 8_FV 4X ?Y +` ._EU 6ZEZ NX @Y *_ .ZEZ #Y ;Y" + " FYEZ ;] GU W ,X " + " FV a \"d -g >d (d +b %b 4f Bg Ie \"e \"h " + " Ge !f IX \"Y LY &e :Y Y Jc /X 0c " + " -n $g I` .j >a ;e HU .U +b Ac 2ZEZ 'b " + " 5o -] Na (c KY .Y #_ 8Y!W'Y\"X.c$X 3XGX Mf -e +d " + ",e ,e ,e \"e=V ;k 1Y BY +XNW .aGV 7ZEZ 5V@V HX AY +XNW .YEZ 3Y AY *WNW /ZEZ 4\\>T 9`GV 3" + "X AY +XNW .`GV 6ZEZ NY AX *XNW /ZEZ $Y :Y FYEZ <_ IU (Q LZ 4Z2Z 1Q " + " &g %Z +XCX MT Y Kd /X 0e 0p " + " (m Lb 1m ,\\ 5~S E~R Ah 'Z :~]+[;Z;Z Ik LW DX DW /i ?Y(Y 4h 5ZEZ" + " ,\\ ,h 7\\ -o .` $f -h NY No %_ %c @_\"X-_\"W0h&W .\\ $\\ \"\\ #\\ #\\ )g 5~a Lm D~S I~S " + "H~R H~R 6Z !Z !Z \"Z :r 8^,Y Bk 2k 2k 2k 2k (kAX+Z(Z#Z(Z$Z(Z$Y'Y&[%[ MZ Im 1X CY *WMX /bHV 7ZEZ 5V@V G" + "X CY *WLW /YEZ 2Y CY *WLW 0ZEZ 3[AW :bHV 3Y BX *WLW 0bHV 6ZEZ MY CX *XMX 0ZEZ $X 9Y FYEZ " + " =a M~i 7U (Q N_ 9_8_ 3R )k 'Z +XCX +X@X 4T >e,X Cl &X IX *X GV " + " GX 5i 0d 2p ;u !^ ?y 2o F~S @n 4j /l N\\ 8x .r Nx 7~R E} >t KZ(Z :Z \"Z 4Z-] KZ 2_'_(^-Z" + " Ep =t 5o Au 1u N~d'Z(Z)Z MZY " + " Le /X 0e 1r +r c 3o -\\ 5~S E~R Dn *Z :~]+[;Z;Z Ko " + " Y EX EY 2m @Y)Y 6l 7ZEZ 0e 2k >e 1o 0c 'j /i X !r (b 'g Eb\"W0c#X0i(W -" + "\\ $] #\\ $] #\\ (f 6~b r F~S I~S H~R H~R 6Z !Z !Z \"Z :w =^,Y Ep 6p 7p 7o 7p ,oDY+Z(Z#Z(Z$Z(Z$Y'Y%Z%Z LZ Kp" + " 1X DX *WKW /WMYJV 6ZEZ 5V@V GY EY *WKX 0YEZ 1Y EY *XKW 1ZEZ 2[EZ :WMZKV 1Y DX *WKX 1WLYKW 6ZEZ L" + "Y EY *WKW 0ZEZ %X 8Y FYEZ >c M~h 7T (S !a Y >X 8f /X 0f 3t -s c " + " 4q /^ 6~S E~R Fr ,Z :~]+[;Z;Z Ms #[ FX F[ 4n @Y*Y 6m 7ZEZ 3k 5l Bk 4o 1f )k 0k #" + "X #u (b (i Fb#X0c#W/k+X .^ %] $^ %] $^ (d 5~b\"v H~S I~S H~R H~R 6Z !Z !Z \"Z :{ A_-Y Gt :t ;t ;s ;t " + " 0sGY*Z(Z#Z(Z$Z(Z$Y'Y$Z'[ LZ Ls 2X FX *WIW 1WJc 6ZEZ 4VBV EY FX *XJW 0YEZ 0X EX )WJW 1ZEZ 1[I^ x %_ ?y 5r F~S Ct :p" + " 6s /e *^ 9| 6z#~ =~R E} B}!Z(Z :Z \"Z 4Z/\\ HZ 2`)`(_.Z Iw @y >w Ez 9z!~d'Z(Z)[ Z;Z0]/Z4Z,Z$[(Z%~^ " + "@e 2X Gf +a MX %Y LY *i :Y Y >Y 9f /X 0g 5v " + " 0u d 6_K_ 0^ 6~S E~R Gu .Z :~]+[;Z;Z w &] GX G] 6U &o ?Y+Y 7X )n 7ZEZ " + "6p 7m Eo 6o 2h *l 1l %X #v (b )k Gb$X/c$X/l,W -^ &_ %^ &_ %^ 'b 4~b$z J~S I~S H~R H~R 6Z !Z " + "!Z \"Z :~ D_-Y Hw =v >w >w >w 4wIX)Z(Z#Z(Z$Z(Z$Y'Y$[)[ KZ Mt 1X HX )WHW 2VHb 6ZEZ 4WDW DX GX )WHW 1YE" + "Z /X GX )WHW 2ZEZ 0[M` ;VHb /X GY *WHW 3VHb 5ZEZ JX GX )WHW 2ZEZ 'Y 7Y FYEZ ?e M~f " + " 7U )U %g Bh@g :W .~T 't +Z +XCX ,X@X 3T Ak1X Er (X JX 'X IV HX 8q" + " =m 7y ?y '` ?y 6s F~S Dv Y >Y " + " :] %X &] 5]C\\ 1v Nc 7\\D\\ 1_ 6~S E~R Iy 0Z :~]+[;Z;Z!y (_ H" + "X H_ 7U 'p ?Y,Y 6X *o 7ZEZ 8t 9YH] Ht 9o 3i *XG[ 1VE[ &Y %x (b *[I[ Hb$W.c%X.VE[-X " + " ._ &_ %_ '_ %_ '` 4~c%} L~S I~S H~R H~R 6Z !Z !Z \"Z :~Q F`.Y Jz @z Az Ay Az 7zKX(Z(Z#Z(Z$Z(Z$Y'Y#[*Z JZ Na" + "J_ 2X IX )WGW 2VG` 5ZEZ 4XFX CX IX )WFW 2YEZ .X IX )WFW 3ZEZ /j 8VG` -X HX *WFW 4VG` 4ZEZ IX IX " + ")WGW 2ZEZ 'X 6Y FYEZ ?XKX M~f 7T )W 'i DiAi ;X 1~V (w -Z " + "+XCX ,X@X 3T AZI[2W Es (X KX &X IV HX 9s >m 7z @z )a ?y 7t F~R Dx >t 9v 8s 2` :~P <~Q&~S" + " A~R E} E~T$Z(Z :Z \"Z 4Z2] FZ 2a+a(`/Z K| C{ C} H| =|!~d'Z(Z(Z!Z9Z1^1Z2[0[!Z+[$~^ @X $X ;Y -e MX 'Y " + "LY +[ +Y Y >Y :[ #X #Z 6\\?[ 2v F\\ " + " 8Z@[ 2` 7~S E~R J{ 1Z :~]+[;Z;Z#} +` HX Ia 8U (q >Y-Y 6X +p 7ZEZ 9bMb ;U@Y JbMb :" + "n 3ZIZ +T@Y 2R>Y 'X %y (XLV +ZEZ IXMW%X.YMW%W-R>Y.W -` '_ &` '_ &` '` 4~c'~R N~S I~S H~R H~R 6Z !Z " + "!Z \"Z :~S Ha/Y K| B| C| D} D| 9|MX'Z(Z#Z(Z$Z(Z$Y'Y\"Z+[ JZ N]B\\ 2X JX *WEW 3UE_ 5ZEZ 3YJY AX JW )WE" + "W 2YEZ -X KX (WFW 3ZEZ .f 5UE_ ,X JX )WFW 4VF_ 4ZEZ HX KX )WEW 3ZEZ (X 5Y FYEZ @YJW M~" + "e 7U *X (j EkCk =Y 3~X )x -Z +XCX ,W?X 3T BYEY3X Ft (X KX %X JV " + " IX 9u ?m 7{ A{ *a ?y 8u F~R Ez @v :v :w 4` :~Q >~S'~U C~R E} G~V$Z(Z :Z \"Z 4Z3] EZ 2a+a(a0Z M~P D" + "| E~P I} ?}!~d'Z(Z'Z\"Z9Z1^1Z1Z0Z [,Z#~^ @X $X ;Y .g MW 'Y LY +Y )Y Y " + " >Y :Z \"X \"Z 7[=Z 3aE[ E[ 9Z>[ 3` 7~S E~R L~ 2Z :~]+[;Z;Z$" + "~P -b IX Jc 9U )r >Y.Y 5X ,]DX 7ZEZ ;\\>\\ \\ 0XDX ,R=Y MX (X %hEW (SG" + "V ,YAY JSHW%W-SGW&X GX/W ,` (a '` (a '` (a 5~d(~S N~S I~S H~R H~R 6Z !Z !Z \"Z :~T Ia/Y L~P F~P F~P F~P F~P" + " <~X&Z(Z#Z(Z$Z(Z$Y'Y\"[-[ IZ \\>Z 1X LX )VCW 4UD] 4ZEZ 2f ?X LX )WDW 3YEZ ,W KX )WDW 4ZEZ -b 2UD] *W" + " KX )WDW 5UD] 3ZEZ GW LX (VCW 4ZEZ )X 4Y FYEZ @XIX M~d 7U *Y *l GmDl ?[ " + " 6~Z *`C\\ -Z +XCX ,W?W 2T CYCY5X E]CZ (X LX $X JV IX 9]E^ @m 7aGb B^Ec ,b ?y " + "9aF[ F~R E_C_ B_E^ ;]E_ ={ 7b ;~R @cBb'~V D~R E} HeBc$Z(Z :Z \"Z 4Z4] DZ 2b-b(a0Z NbCb E} GbCb J~ Aa" + "B_!~d'Z(Z'Z#[9Z2_1Z0Z2[ N[.Z\"~^ @X $X ;Y /i MW (Y LY ,Y (Y Y >Y " + " :Y !X !Y 8[;Z 1\\ 0\\:U D[ ;ZbCh%Z(Z" + "#Z(Z$Z(Z$Y'Y![.Z HZ Z;Z 1X NX )WBV 5VBZ $e >W MX )WBW !X MX )WBW #` /UBZ (W MX )WBW 6UBZ " + " 9X MW (WCW MX 3Y GXHW M~d 8U *[ +m HnFn A] 9~\\ +^=Y" + " -Z +XCX -X@X 2U DXAX5W E\\=V (X LX #X .R@V?Q ,X :\\A\\ @m 7\\>_ CY<_ -c ?y :^=V F~Q E]>^ D]@] " + " j E~R E| Ha8^$Z(Z :Z \"Z 4Z5] CZ 2b-b(b1Z `<_ FZ@d I`=` K[@d C_:Z ~b&Z(Z'Z#Z8Z2`" + "2Z0[4[ LZ/[\"~^ @X #X Y >Y ;Z " + "!X !Y 8Z9Y 6d 4[5R CZ ;Y:Z 5b 8~R D~Q MbAb 8` =~]+[;Z;Z&`=` 1f KX Lg " + " ;U *\\=T =Y0Y 4X ,Z;R 5Z3Y &W !Y3Y 3W@W EW LX *W %jEW KV -X=X @W'X W'X EX1W ,b " + "*b (b )b )b )b 7ZH~R)a:] N~R H~R G~R H~R 6Z !Z !Z \"Z :Z>j Lb0Y N_<` J`<_ J`=` J`=` J`=` @`=e%Z(Z#Z(Z$Z(Z$Y'Y" + " Z/[ HZ !Z9Y 0W X )WAW 6VAW \"d Y >Y ;Y X !Y " + " 8Y8Y 6f 6Z2P BY j BZ(Z+[;Z;Z'_9_ 3h LX Mi <" + "U *[:R V EW KW +W %kEW KV .X;W @W'W NW(X CW2X -c *c )b " + "*c )c +c 7ZHZ 2_5[ NZ !Z Z !Z >Z !Z !Z \"Z :Z7d Mc1Y ^8_ K^8^ L_8^ L_9_ L^8_ B_9b$Z(Z#Z(Z$Z(Z$Y'Y [1[ GZ !Z" + "8Y 0W !W (V?W I` :X !W (V?W X \"X (W@W *d EX !W (W@W 0X \"X (V?W !W 1Y #d ," + "e +d +d ,e #XHW LZ#Z 7U +] -o KqHp C_ X #X " + " Y >Y ;Y X X 9Z7X 6g 7Y" + " #Z =Y8Z 7d 7[ Z )_7_ Bp EZ(Z+[;Z;Z(^5^ 5j MX Nk =U +[7P Z !Z !Z \"Z :Z3a Nc1Y!^5] L]4] N^5^ N^5^ N^5] C^5_#Z(Z#Z(Z$Z(Z$Y'Y N[2Z FZ \"Z7Y /W #W (W>V H^" + " 8X #W (W>V NW \"W (W>W .h EW \"X )W>W 0W #X (V=V \"W 0Y &j 1i 0j 1j 1i &X ` .\\5U -Z +XCX -W?W =r'X>W8X EZ ;X NY !X 1XDVDX 2X " + " &X ;[;[ BWDZ 7T2\\ \"\\ 1XMZ ?Y L\\ 2Z E[7[ G\\9[ >S5[ F`7` ?YNY Y >Y ;Y X Y :Y6Y 7i 9Y \"Y " + " >Y6Y 7YNY 6[ !Z *^3] Dt GZ(Z+[;Z;Z)]2] 6l NX m >U +Z !Y4Z 3X -Y NW(W (W " + " &X)X 8VZ !Z !Z \"Z :Z1` d2Y\"]2] N]2] ]2]!^2]!]2] E]2]\"Z(Z#Z(Z$Z(Z$Y'Y MZ3[ FZ \"Z6X .V $W 'VR4[ G^1^ AZNY Y >Y ;Y X Y :Y6Y 7j :Y \"Y " + " >Y6Z 9YMY 5[ \"Z *]1] Hy IZ(Z+[;Z;Z)\\/\\ 8n X !o ?U ,[ Y5Y 2X -Y W&W )W 'W%W 9V" + "Z " + "!Z !Z \"Z :Z/_!d2Y#]0]!]0]\"]0\\!\\/\\\"]0] F\\0]#Z(Z#Z(Z$Z(Z$Y'Y M[5[ EZ \"Y5X +P " + " %_K[ CY *r 9q 8r 9r 9q *X ;Z%Z >Q JT ,b 0q MsKs Ge " + "C^ *[0R -Z +XCX .X@X @v)X=X:W CY :X Y NX 1[HVH[ 1X 'X ;Z7Z 0Z 7P,[ ![ 3XLZ ?Y M[" + " 1Z EZ4[ I[5Z ?P1Z I^-] BYLY =Z1[ H\\(T'Z-^ JZ MZ *\\$S$Z(Z :Z \"Z 4Z:] >Z 2YMX1XMY(YNZ4Z$].\\ JZ5" + "\\!\\-\\ Z4[ GZ ;Y 9Z(Z%Z'Z4Z5XNX5Z*Z:[ F[6Z [ ;X \"X =Y 5\\C[ #Y LY -Y 'Y 8X >Y " + " >Y ;Y X Y :Y6Y 7k ;Y \"Z @Z5Y 9YLY 5[ #Z +\\.] J| KZ" + "(Z+[;Z;Z*\\-\\ :p !X \"q @U ,Z NY6Y 1X -X W#V *W (W#W :U;V +X DW LW )mEW KV" + " /X9X BW*X LW*X BW3W +YLY -YMY ,YLY -YMY ,YLY -YMZ ;ZFZ 5\\'S NZ !Z Z !Z >Z !Z !Z \"Z :Z-^\"e3Y#\\.]#].\\" + "#\\-\\#\\-\\#\\-\\ H\\.]$Z(Z#Z(Z$Z(Z$Y'Y L[6Z DZ \"Y5Y /[G[ " + " DY +u =u S LU ,c 1q MtLt Hf E] )[.Q " + " -Z +XCX .W?X Bx)X=X;X DZ :X X MY 0ZIVIZ /X 'X ;Z7[ 1Z AZ ![ 4XKZ ?Y MZ 0Z EZ3Z I[5Z " + "Z J])\\ CYLY =Z1[ I\\%R'Z+] KZ MZ +\\\"R$Z(Z :Z \"Z 4Z;] =Z 2YMX1XMY(YNZ4Z$\\,\\ KZ4[\"\\+[ Z4\\ I[ ;Y 9Z(Z$Z" + "(Z4Z5WLW5Z*[<[ DZ7[ !\\ ;X \"X =Y 6\\A[ $Y LY -Y 'Y 8X >Y >Y " + " ;Y X Y :Y6Y 7l Z !Z !Z \"Z :Z,^#YNZ3Y$\\,\\#\\,\\$\\,\\%\\+\\%\\,\\ MP" + " NP N\\-]$Z(Z#Z(Z$Z(Z$Y'Y KZ7[ Dq :Z4X /XC[ EY " + " -x @x >x ?x @x -X :Z'Z ?U MU -e 2q MtLt Ig E[ 'Z,P -Z +XCX .W?W By)" + "XZ0Z" + " J\\#Q'Z*\\ KZ MZ +[ Q$Z(Z :Z \"Z 4Z<] Y 7[>[ %Y LY -Y 'Y 8X >Y >Y ;Y X Y ;Y" + "5Y 7UH_ Z !Z !Z \"Z :Z+]#YMZ4Y%\\*\\%\\*\\&\\*[%[)[%[*\\ R!R [-_%Z(Z#Z" + "(Z$Z(Z$Y'Y K[9[ Ct =Y3X /U@[ \"Q EY .z B{ " + "B{ Az B{ /X :Z'Y >V U -g 4r NvNu Ji *\\ 5X.X 6\\ 7Z1Z M[ '[ 8Z +XCX /X@X C`MTL_)W;" + "WZ0Z " + "J[ 'Z)\\ LZ MZ ,\\ \"Z(Z :Z \"Z 4Z=] ;Z 2YLX3XLY(YMZ5Z%[([ LZ3[$\\)\\\"Z3[ IZ :Y 9Z(Z$Z)Z3Z6XLX6Z(Z>[ B[:Z !" + "\\ 9X !X >Y 8[<[ &Y LY -Y 'Y 8X >Y >Y ;Y X Y ;Y5Y " + "7RB] =\\ $Z BY2Y ;YJY 3[ &Z -[(\\!~U Z(Z+[;Z;Z,\\)\\ ?\\MXL[ $X %\\LXM\\ CU" + " ,Y *Q\"R DY9Y 0X -Y #V=_?V Cm *V LV Z !Z !Z \"Z :Z*]$YMZ4Y%[([%[(['\\)\\'\\)\\'\\)[!T#T\"\\-`&Z(Z#Z(" + "Z$Z(Z$Y'Y J[:Z Bw @Y6[ .Q<[ #S GY /`Da E`C" + "` DaD` C`Da E`C` 0X 9Y(Z ?X !U .h 4r NvNu Kk .c 9X.X 7^ 7Y1Y M[ &Z 7Z +XCX /X@X C\\" + "ITFY)W;W=X BY 9X !X KY +YNVNZ *X (X ;Z4Z 2Z @Z !Z 6YJZ ?Y Z /Z DY2Z JZ1Y ,T T MZ N[ NZ HZJ" + "Y >Z0Z K[ &Z(\\ MZ MZ ,[ !Z(Z :Z \"Z 4Z>] :Z 2YLX3XLY(YLZ6Z&['\\ MZ3[$['[\"Z2Z IZ :Y 9Z(Z#Z*Z2Z7XLX7Z'[@[ @Z;" + "[ ![ 8X !X >Y 9[:[ 'Y LY -Y 'Y 8X >Y >Y ;Y X Y ;Y" + "5Y %\\ =] %Y BY2Z =ZJY 3\\ 'Z .\\'[#cLZLb!Z(Z+[;Z;Z,['[ @\\LXK[ %X &\\KXL\\ " + " DU -Z +S$T EY:Y /X -Z %V?fBU Eo +VEg=V =VZ !Z !Z \"Z :Z)\\$YLZ5Y&\\'['['\\(['['['['['[#V%V#[-a&Z(Z#Z(Z$" + "Z(Z$Y'Y IZ;Z Ay BY9^ G[ %U HY 0]<^ G^=^ F" + "^<] E]<^ G^=^ 1X 9Z)Z @Z \"U .i 5r NvNu Lm 2h ;X.X 7^ 7Y1Y N[ &[ 7Z +XCX /W?X D[GTC" + "V)W;W=W AZ :X \"Y KY *j (X (X ZY .Y3Y 3Z '\\ MZ )Z ;Z 2^ +Y ;Y " + "X Y 6Y /Y5Y $[ =` G^ !Z IZ M\\ #Y2Z =YIZ 3\\ (Z .[%[%aIZI`\"Z(Z+[;Z;Z-[%[ B\\KXJ[" + " &X '\\JXK\\ H\\ 1Z ,U&V EY;Y /X ,Z 'V@jDV Gp +UDj?V >VZ !Z !Z \"Z :Z(\\%YLZ5Y&[&['[&[)\\&[)[%[)" + "[&[$X'X%[-b&Z(Z#Z(Z$Z(Z$Y'Y I[=[ Az CY;` 5\\ $] $\\ \"\\ #\\ $] 8\\/[ 3\\ '\\ #\\ \"[ \"[ \"[ &Z &[ ![" + " #\\ #[ ![ G[@W IYBZ J]8] I\\7\\ H]8] I]8] I\\7\\ 2X 8Y*Z @Z \"U .k 5q N~o Mm 4l =X" + ".X 7^ 7Z3Z NZ %Z 6Z +XCX /W?W D[FT@S)W;W>X AZ :X \"Y JX (f &X )X ;Z3Z 2Z @Z !Z 7" + "XHZ ?Y !Z /Z CY1Y JZ1Z 2Y Y $Z Z HY JYHY ?Z/Y L[ %Z'\\ NZ MZ -[ Z(Z :Z \"Z 4Z@\\ 7Z 2YKX5XKY(YKZ7Z'[" + "$[ NZ2Z%[%[#Z2[ JZ :Y 9Z(Z#[,Z1Z8XJW7Z%ZB[ >[>Z !\\ 7X X ?Y ;[6[ (e 7YE` (e 3aEY 8c 2r 5`DX GYEa (X NX " + "0X1Z 8Y FXD`9` YD` -c 9XD` /aEX :XD] 6g 7t BX0Y LY)Y+X6Z6X)Z/Z NX)Y I} 2Y X Y 9_>W KY5Y #[ =c h >XD` " + "AT#X 5Y 6X0X LY'Y ?RCW ?~Y!X?X?X ;d 'r!~W KZ1Y =YHY 2\\ )Z /[$[%_GZG_#Z(Z+[;Z;Z-[%[ C\\JXI[ 'X (\\IXJ\\ " + " (Y d 5Z -W(X FYV=W +X HX )^ ,Y1Y HnEW KV 0X7W BW-W HW.X M^/X )" + "Y +YHY 2YHZ 1YHY 2ZHY 1YHY 2ZHY ?ZDZ 9[ LZ !Z Z !Z >Z !Z !Z \"Z :Z'[%YKZ6Y'\\%[)[$[*[%[)[%[)[%[%Y)Z&[.d'Z(Z#" + "Z(Z$Z(Z$Y'Y H[>Z @{ DY=b ;f -f -f ,e -f -f Ae7c ;e /b )c *c *c 'Y NX NX X E[ >XD` -c )c *b *c )c '\\ &bDX L" + "X0X GX0X GX0X GX0X KY)X KYE` ?Y*Y 8[4\\ K[3[ J\\4[ I[4\\ K[3[ 3X 8Z+Z AZ !U /m 6q N~o No 6o ?X.X 8_ " + "6Y3Z Z $Z 6Z +XCX 0X@X DZET>Q)W;W>W ?Y :X \"X IY 'b $X )X ;Z2Y 2Z @Z !Z 8YHZ ?Y " + "!Z 0[ CY1Y JZ1Z 5\\ \\ 'Z!Z FY LZHZ @Z/Y L[ %Z&[ NZ MZ .[ NZ(Z :Z \"Z 4ZA\\ 6Z 2YKX6YKY(YKZ7Z'[$[ NZ" + "2Z&[#Z#Z2[ JZ :Y 9Z(Z\"Z,Z1Z8XJX8Z%[D[ ZHY 1\\ *Z /[#['^EZE^$Z(Z+[;Z;Z.[#Z C[IXH[ (X ([HXI[ (" + "Z $k 9Z .Y*Z FY=Y .X ,\\ *UAnCU J^CW -VCmAV ?W>V *X IX (a /Y1Y HnEW KV 0X7W BW.X HW.W La3X " + "(Y ,ZHY 2YGY 2ZHZ 3YGY 1YHZ 3YGY @ZCZ 9[ LZ !Z Z !Z >Z !Z !Z \"Z :Z'\\&YJY6Y'[$[)[$[*[$[+[#[+[$[&[+\\([.e'Z(" + "Z#Z(Z$Z(Z$Y'Y GZ?Z ?| EY>c >l 4l 3l 2l 3l 4l Gl=h @k 5h /h /h /h )Y Y NX Y E[ ?XFd 1g .h /h /h /h )\\ )hHX " + "LY0X HY0X GX0X GX0Y LZ+Y KYGd AY*Y 9[EXD[ M[1[ L[1[ K[1[ M[1[ 4X 8Z+Y A[ !T /n 6q N~o q 8q @X.X 8` 7" + "Y3Y Z $Z 5Z +XCX 0X@X DYDT EW;W?X ?Y :X #Y IY %^ \"X )X k 5}\"~W KY0Z ?YGZ 1[ *Z /Z\"[(]CZD^%Z(Z+[;Z;Z.[#[ CYHXGY 'X 'YGXHY 'Z &o" + " ;Z /[,[ FZ?Y -X +\\ +UBoBU LZ>W -UBnAU >W@W *X JX 'c 1Y1Y HnEW KV /W7W BW.W GW/X Lc5W 'Y ," + "YFY 4ZGY 2YFY 3YGZ 3YFY 3YGZ AZCZ 9Z KZ !Z Z !Z >Z !Z !Z \"Z :Z&[&YJZ7Y'[#[*Z\"Z+[#[+[#[+[#[&[-\\'[/YM[(Z(Z#" + "Z(Z$Z(Z$Y'Y G[A[ ?} FY?] :p 8q 8q 7q 8q 8p LqAl Do 9l 3l 3l 3l +Y Y NX Y #i @XHh 5k 2l 3l 3k 2l +\\ +lKX KY0" + "X HY0X GX0X GX0Y KY,Z KYIh CZ,Z :ZCXC[ [/[ N[.Z MZ.[ [/[ 5X 7Y,Z AZ !U /o 7p M~n s :s AX.X 8` 7Z4Y Y" + " #Z 5Z +XCX 0W?X EYCT EW;W@X >Z ;X #Y HX #Z X *X ;Z1Z 3Z @Z !Z 9XFZ ?Y \"Z /Z " + "BY2Z KZ0[ [/Z 4t =YJj 3q >kJY >o 8r ;kJY GYJk .Y NX 0X5\\ 6Y FY" + "JiBi$YJk 8o ?YJj 9kJX ;YJc Z !Z !Z \"Z :Z&[&YIZ8Y([\"[+[\"[,[\"Z+Z!Z,[\"[%[/\\" + "&Z/YL[(Z(Z#Z(Z$Z(Z$Y'Y F[BZ >Z@d GY@\\ :t ;t t TAU NX;W )P9P =UAWAYAU >XDX )X LX HY 3Y1Y HnEW KV /W7W " + "AP9P 9W0X FW0X ?Y8W &Y -YEZ 5YEY 4ZFZ 5YEY 4ZEY 5YEY BZBZ :[ KZ !Z Z !Z >Z !Z !Z \"Z :Z%['YIZ8Y([!Z+Z![,Z![-" + "[![-[!Z$[1\\&[/XJZ(Z(Z#Z(Z$Z(Z$Y'Y EZCZ =Z;` HYA[ 8u oLX ;YLe ?u VAW?XAU ?ZHY (X MX EX 4Y1Y HnE" + "W KV /W7W AQ:Q :W0W EW1X Z !Z !Z \"Z :Z%['YHZ" + "9Y(Z Z+Z Z-[![-[![-Z [$[3\\%[0XI[)Z(Z#Z(Z$Z(Z$Y'Y E[E[ =Z9^ HYBZ 6v =v >w =w >v =v\"vIt Lt >t ;t ;t ;t /Y Y N" + "X Y *r BXKn qMY GYMp 0Y NX 0X8[ 2Y FYMoIp'YMq ?v BYMp ?qMX ;YMf ?u U@W?XAU >j (X " + " NX CX 5Y1Y HnEW KV /W7W AR;R ;W1X EW1W :XZ " + "!Z !Z \"Z :Z$Z'YHZ9Y)[ [-[ [.[ Z-Z NZ-Z [#[5\\$Z0XH[)Z(Z#Z(Z$Z(Z$Y'Y D[FZ w ?x >x ?w >w#wKv Nu ?v" + " =v =v =v 0Y Y NX Y +s BXLp >u \\ DX.X :c 7Z7Z!Y \"Z 4Z +XCX C~d&XBT DW=XB" + "X :[ >X $Y FY +f &X +X ;Z/Z 4Z AZ !Z ;YDZ ?YFP -Z?Q BZ ?Z5Z JZ/Z 5Z \"[ Gj Ii ;[\"X1Q,W\"YCZ BZ1" + "Z MZ \"Z$[!Z MZ /Z LZ(Z :Z \"Z 4ZH] 0Z 2YHX;XHY(YHZ:Z)Z N[!Z2Z([ NZ%Z2Z I[ ;Y 9Z(Z Z1Z,Z;XGW;Z N[L[ 4[H[ #\\" + " 1X MX AY BZ&Z 8^Ga AYN[H_ " + "YDY *X )b 6UDY%U V9W ,SU@W>W@T =h 'X X AW 5Y1Y HnEW KV /X9X ASZ !Z !Z \"Z :Z$Z'YGZ:Y)[ NZ-[ [.Z N[.Z NZ.[ NZ\"[7\\$[1XFZ)Z(Z#Z(" + "Z$Z(Z$Y'Y CZGZ ;Z6\\ IYCY 4^Ga ?^Ga @_Hb ?^Ga ?^Ga ?^Ga$^GaMaI`!bH\\ @aI` ?aI` ?aI` ?aI` 1Y Y NX Y ,u CXM^Nb" + " @aKa >aJa ?aJa ?aKa =`Ja 1\\ 0`Ic GY0X HY0X GX0X GX0Y IY0Z IYN[H_ FZ0Z X>Y&X#X%YJT9TIY&Y.TJY&X#X 8X 5Y0" + "Z CZ ;P4U 1w 9l J~m#z B[;[ EX.X :d 7Y7Y X )~Q #Z +XCX C~d&XBT DW=XCX 9\\ ?X $Y FY " + "-j (X +X ;Z/Z 4Z AZ \"Z :XCZ ?YM_ 5ZE^ IZ >Y6Z IZ0[ 5Z \"[ Jj Ci ?\\\"X6\\2X#YBY BZ1Z MZ \"Z$[!Z " + "MZ 0[ LZ(Z :Z \"Z 4ZI] /Z 2YHX;XHY(YGZ;Z)Z N[!Z3[([ NZ%Z2Z H[ ^ BcB] >_?W C^CYNY C]A] 4Y /]Bc GYNYD^ 2Y NX 0X;\\ 0Y FYNXC\\KYD](YNYC] A]B^ DcB] C^CYNX ;YNZDQ A\\" + ";V 5Y .Y1Y IY/Y&Y;_;Y\"Z;Z FZ0Y $[ 2Y X Y M];\\ F]E[JX IY9[ LY >ZKf =]=V CYNYC] K`2Z 5^ 9Y1Y!Z\"Z!^JZM^" + " K~Y!Y@X@Y E]C^ CaHl\"~W LY.Z BYBY .\\ 0Z 1Z M[-[>Z>[(Z(Z*Z;Z<[0[ N[$[ W@U =f &X !X @W 5Y1Y HnEW KV /X9X AT=T =W2X DW2W 8W=X $Y .YBY 8ZC" + "Z 7YBY 8ZCZ 7YBY 8ZBY FZ@Z ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z$[(YGZ:Y)[ NZ-Z MZ.Z N[/[ N[/[ NZ![9\\#[2YFZ)Z(Z#Z(Z" + "$Z(Z$Y'Y C[I[ ;Z5\\ JYCY 4X=^ @X=] @Y=] ?Y>^ @X=^ @X=^%X=l@\\\"_?W A]@\\ @]@\\ @^A\\ @^A\\ 1Y Y NX Y -w DXNY" + "C] A^C^ ?^C^ A^B] @^C^ ?^C^ 2\\ 1^C_ FY0X HY0X GX0X GX0Y IY0Y HcB] FY0Y ;X=X=Y(Y#Y'YJV;VIX&X.VJY(Y#Y 9W 4Z1" + "Z DZ =S4U 2y 9j I~l#{ BZ9Z EX.X :d 7Z8Y!Y *~R #Z +XCX C~d'YBT DX?XBW 7\\ @X $Y FY " + "/ZNVNZ *X ,X :Z/Z 4Z AZ #Z :XBZ ?o 9ZGc MZ =Z8[ HY0\\ 6Z \"[ Li >j C\\\"X8aGVBW$ZBZ CZ2Z LZ \"Z#Z!" + "Z MZ 0[ LZ(Z :Z \"Z 4ZJ] .Z 2YHXY 9Z(Z NZ2Z,Z\\ @^:T C\\?b D\\=\\ 5Y 0\\>a Ga?\\ 2Y NX 0X<\\ /Y Fa@\\MX@[(b@\\ B]?\\ Da?] D\\?a ;b 1Z6" + "S 5Y .Y1Y IZ1Z&Y;_;X![=Z DY1Y #[ 2Y X Y `>` I\\B[KX IY:\\ LY ?ZDa ?\\7R Cb?\\ F[3Y 5_ 9Y1Y\"Z Y!]IYJ] L" + "~Y!Y@X@Y F\\?\\ D^Ai\"~W LY.Z CZBZ .\\ 1Z 1Z LZ.[=Z>[(Z(Z*Z;Z<[0[ N[%\\ XAU V ?W3X CW3X 8X>W #Y /Z" + "BZ 9YAY 8ZBZ 9YAY 8ZBZ 9YAY FZ@Z ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z$[(YFZ;Y)Z MZ-Z MZ/[ MZ/[ N[/Z M[![;\\\"[3YE[*" + "Z(Z#Z(Z$Z(Z$Y'Y B[JZ :Z4[ JYCX 3U8\\ @U8\\ AV8\\ @U7\\ AU7[ @U8\\%U8h=\\$]9T B\\=\\ B\\=\\ B\\=\\ B\\<[ 2Y Y " + "NX Y .x Da?\\ C]?] A]?] B\\?] B]?] A]?] 3\\ 2]?] FY0X HY0X GX0X GX0Y IZ1Y Ha?] GY1Z ~d W5T 2{ 9i H~k$} DZ7Z FX.X :d 7Z9Z!X )~R #Z 0~d&XBT DX?XCX 6\\ " + " =Y EY 0ZMVMZ +X ,X :Z/Z 4Z B[ %\\ :XBZ ?q ;YHg Z \\ 0Z 6Y.Z CYAZ -\\ 2Z 1Z LZ.[=Z=[)Z(Z*Z;ZW>X@T ;a #X #X =W 6Y1Y GmEW KV .X;X @W@W @W3W BW4X 6W?X #Y /Y@Y :" + "ZAY 8Y@Y 9YAZ 9Y@Y 9YAZ GZ@Z ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z#Z(YFZ;Y)Z M[/[ MZ/[ MZ/Z LZ/Z M[ [=\\!Z3YD[*Z(Z#Z" + "(Z$Z(Z$Y'Y AZKZ 9Z4[ JYDY 3R3[ AR3[ BS3Z @S4[ AS4[ AR3[&R3e:[&]6R C\\:[ D\\:[ D\\:[ D\\:[ 3Y Y NX Y /_B] E_<" + "[ C[;[ B\\<\\ C\\<\\ C[;\\ C\\<\\ 3\\ 3\\<\\ FY0X HY0X GX0X GX0Y HY2Z H`<[ FY2Y ;X~d#Z6U 3} :h G~k%~P EY5Y FX.X ;ZNY 6Y9Z!X *~R \"Z 0~d&YCT CXAXBW 5] " + " >Y EY 2ZKVKZ -X ,X :Z/Z 4Z BZ &] :XAZ ?s =YJk #[ ;[=[ FZ1\\ 6Z \"[ #j L~d Ki J\\!X:hKVAW%Y@Y CZ5\\ L" + "[ \"Z#Z!Z MZ 0Z KZ(Z :Z \"Z 4ZL] ,Z 2YGX=XGY(YEZ=Z*[ M[\"Z4['Z LZ&Z4[ F` BY 9Z(Z MZ4Z*Z=XEW=Z Jd .ZLZ #\\ .X" + " LX BY JQ1[ D_:[ B\\ ([9_ F[7Z 6Y 1[:_ G^9Z 3Y NX 0X>\\ -Y F^;b;Z)_:Z D[:\\ F_:[ G[9^ ;_ /Y EY .Y1Y " + "HY2Z$Y=a=Y NZ@[ BY3Z %[ 0Y X Y \"eCd L[>YLX HY>^ IY AY=] @Z &_:Z DY4Y 5a :Y1Y\"Z Z$\\GYG\\ EY9Y IY@X@Y G" + "Z9[ G\\;[ 0Y 5Y.Z DZ@Y ,\\ 3Z 1Z LZ.ZUDX!T\"XW>X@U :] !X $X Z !Z !Z \"Z :Z#Z(YEZ~d&^7U 4~ 9f E~i%~R GY4Y FX.X ;ZNZ 7Y9Y!X )~R \"Z NW?W BYCT CYBXCX 6_ ?Y EZ 5ZI" + "VIZ /X ,X :Z.Y 4Z C[ )_ :YAZ ?t >YKn %Z 9\\A\\ EZ1\\ 6Z \"[ &j I~d Hi N\\ W:jLVAW&Z@Z DZ8^ KZ !Z#[\"Z " + " MZ 0Z KZ(Z :Z \"Z 4ZM] +Z 2YGY?XFY(YEZ=Z*Z L[\"Z4['Z LZ&Z4[ Fc EY 9Z(Z MZ5Z)Z>XDW=Z Ic .[NZ #\\ -X KX CY " + " )Z D^8[ D\\ '[8^ FZ5Z 7Y 2[8^ G]8Z 3Y NX 0X?[ +Y F]9`9Y)^9Z E[8[ F^8Z GZ8^ ;^ .Y EY .Y1Y GY3Y#Y=WNX=Y M" + "ZAZ AY3Y %[ /Y X Y #gEf N[W>W?U 7W <~d BX ;W 6Y1Y GmEW KV -X=X ?YBY BW4W AW5X 5W@W !Y 0Y?Z ;Y?Y :Z@Z ;Y?Y :Z?Y ;Y" + "?Y HZ?Z <[ IZ !Z Z !Z >Z !Z !Z \"Z :Z#Z(YEZY D~P JZ !Z#[\"~Q Dy Z K~] :Z \"Z 4ZN] *Z 2YFX?XF" + "Y(YDZ>Z*Z L[\"Z5\\([ LZ&Z5\\ Eg JY 9Z(Z MZ5Z)Z>XDX>Z Ib ,f $\\ ,X KX CY (Y D]6Z D[ '[7^ GZ4Z 7Y 2Z6] " + "G]7Z 4Y NX 0X@[ *Y F]8^8Z*]7Z FZ6[ G]6Z I[7] ;] -X DY .Y1Y GY3Y#Y=WNX=X L[CZ ?Y4Y &[ .X NX Y $iGh Z:XNX" + " GYHg HY CY8\\ CY $]7Z DY6Y 4b ;Y1Y#Z MZ&[EYE[ FY9Y IY@X@Y HZ7[ I[7[ 2Y 5~V DY>Y +\\ 5Z 2Z KZ/[W>W?U K~d CX ;X " + " 6Y1Y FlEW KV -Y?Y ?ZCZ CW5X AW5W 5XAX !Y 0Y>Y Y Y ;Y?Z JZ>~Q3[ I~Q G~Q F~Q G~Q 5Z !Z !Z " + "\"Z :Z#Z(YDZ=Y*[ LZ/Z L[0Z L[0Z LZ0[ LZ L[C\\ N[5X@Z*Z(Z#Z(Z$Z(Z$Y'Y ?e 7Z3[ KYDY @Y Y !Z Y Y Y 4_4Y)[ %Z3" + "Y GZ3Y FZ4Y FZ4Y 4Y Y NX Y 1[8Z F\\7Z F[7[ EZ6[ G[6[ G[6Z EZ6[ Y D~ IZ !Z#[\"~Q Dy![ K~] :Z \"Z 4h )Z 2YFX@YFY(YDZ>Z*Z KZ\"Z5\\([ LZ&Z6\\ Ck Y 9Z(Z LZ6Z(" + "Z?XDX?Z G` *d #[ +X KX CY 'Y E]6[ F[ &Z5] GY2Y 7Y 3Z4\\ G\\6Z 4Y NX 0XA[ )Y F\\7]6Y*\\5Y G[5Z G\\5Z I" + "Z5\\ ;] -X DY .Y1Y GZ5Z#Y>XMW>Y K[E[ ?Y5Y &[ .Y NX Y $XIZHZIY!Z:XNX GYHf GY DY6[ CY $\\5Y CX6Y 5c ;Y1Y#" + "Z MZ&[EYDZ FY9Y IY@X@Y IZ5Z IZ5Z 2Y 5~V EZ>Y *[ 5Z 2Z KZ/[Z EiKh 6X /XC^ BTDX U\"YA\\ 4ZCZ N~d &U>W?X>T K~d EY :W 5Y1Y EkEW KV ,YAY =ZCZ DW6X @W6" + "X 5W@W 'Z>Y Z =Y=Y ;Y>Z =Z>Y JZ>~Q3Z H~Q G~Q F~Q G~Q 5Z !Z !Z \"Z :Z#[)YDZ=Y*[ LZ/Z KZ0Z L[1[ LZ0[ L" + "Z K[E\\ M[6Y@Z*Z(Z#Z(Z$Z(Z$Y'Y >d 7Z2Z KYDY @Y Y Y NY Y !Y 4^3Z*Z $Z3Z HZ3Z HZ3Z HZ2Y 5Y Y NX Y 2[6Z G" + "\\6Y FZ5[ G[5Z GZ5[ GZ5[ G[5Z =[:_ HY0X HY0X GX0X GX0Y GZ5Y F\\5Z GY5Z Z6Y &[ .Y NX Y %WEYJYEX#Z8a GYHe FY DX4[ DY $\\5Y CY8Z 5d Y*Z KZ/Z KZ0Z L[1[ L[1[ LZ J[G\\ L[7Y?Z*Z(Z#Z(Z$Z(Z$" + "Y'Y >c 6Z2Z KYDY ?Y X NX NY Y Y 4\\1Y+[ %Z1Y HY1Y HY1Y HY1Y 5Y Y NX Y 3[5Z G[5Z HZ3Z GZ4[ HZ4Z HZ3Z GZ" + "4[ >Z9` IY0X HY0X GX0X GX0Y FY6Z F\\4Z GY6Y ;W9X9W-X JX,WD[I\\DW,W1[DW-X JX =X 1Y6Z <~d'RKY:U 5~U J" + "~T$~g'~X KY1X GX.X Z ?y DgF` *Z 2k >Z4^ 6Z \"[ 1j >~d =i -[ LW=\\C_?W)YZ=Z =YZ=Z =YZ=Z LZ=~Q3Z H~Q G~Q F~Q G~Q" + " 5Z !Z !Z \"Z Ew5[)YCZ>Y*Z KZ/Z KZ0Z KZ1[ L[1Z KZ I[I\\ K[8Y>[+Z(Z#Z(Z$Z(Z$Y'Y =a 5Z2Z KYDY ?Y Y X MX Y Y" + " 4\\1Y+Z $Y0Y IZ1Y IZ1Y IZ0X 5Y Y NX Y 3Z3Y GZ3Y HZ3Z HZ2Z IZ2Z IZ3Z GZ3Z >Z:a IY0X HY0X GX0X GX0Y FZ7Y E[" + "3Z GY6Y ;W9X9W-W HW,WC[K\\CW,W2[CW-W HW =X 1Z7Z <~d NX:U 5~V M~X%~e&~Y LX0Y HX.X =ZJY 6Y=Z W " + " NZ 3Y X@X ?]IT ?hCW 7h2X ;Y CY 7TAVAT 1X .X 8Z.Y 4Z G\\ 6g 5X=Z ?X?a EeB^ +Z /f ;[5" + "^ 4i ;~d :i 1[ LWr *Y " + "9Z(Z KZ8Z'Z@XBX@Y D\\ &` $\\ )X JX DY &X E[2Z HZ %Z3\\ IZ/X 8Y 4Z2[ GZ3Y 4Y NX 0XE\\ &Y FZ4[5Y*[4Z IZ" + "2Z H[2Y KY2[ ;[ +X DY .Y1Y FZ7Z!Y?WLX?X H[IZ ;Y7Y '[ ,Y NX NY *Q NV@WLW?U#Z8` FYHd .^FY EX2[ DX $[3Y CX8Y" + " 5YMY [/[IuI[.\\ 4X 4\\ =X =\\$\\" + " =X MZAU -Z &X8Y G~W 6X 0W<\\ FUEX MT iNW 8[D[ K~d &T=WE\\QZZeBX] ,Z 1j <[7_ 7i 8~d 7i 5[ KW=Z=" + "\\?W*Y:Y F{ FZ !Z\"Z\"~Q Dy![1j&~] :Z \"Z 4e &Z 2YDXCXDY(YBZ@Z*Z KZ\"Z[/[IuI[/\\ 3X 3\\ >X >\\\"\\ >X MZAU -Z 'X6X 5c " + "%X 1X;\\ GUEX MT NgMW 9[D[ J~d &T=m;T K~d In 4TA[ 4Y1Y BhEW 3Z DX )i 5[D[ IX9W5Z3W8WFj?TA[BX5Z KY" + ";Z @Z;Z ?Y:Y @Z;Z ?Z;Y ?Y;Z NZ<~Q3Z H~Q G~Q F~Q G~Q 5Z !Z !Z \"Z Ew5[)YAY?Y*Z KZ/Z KZ1[ KZ1[ L[1Z KZ G[M\\ IZ8" + "X<[+Z(Z#Z(Z$Z(Z$Y'Y <_ 4Z2Z KYD[ @X NX Y NY X NX 3Z/Y-Z $Z/Y KZ/Y KZ/Y KZ/Y 6Y Y NX Y 4Z2Z HZ3Y IZ1Z I" + "Z1Z JY1Z JZ1Z IZ1Z @Z;XNZ JY0X HY0X GX0X GX0Y EY8Y D[2Z GY8Y ;X9X8W.W HW-W@hAW-X4[@W.W:[:W =X 0Z9Z I" + "[ 7YY ~m 4Z 3Y W?X >g =cAW?]'[K\\5Y ;Y CZ %V M" + "X /X 7Y-Z 5Z H[ 4l ;XZ>Z.[IuI[0\\ 2X 2\\ ?X ?\\ \\ ?X MY@U 8y ;X6X 4a $X 1X9[ HUEX MT MeLW :[D[ I~d &T=l:T " + "K~d Io 5m 3Y1Y AgEW 3Z Nl 2g 3[D[%lDX5Z>mDXFk@mAW5[ LZ:Y @Y:Z ?Y:Y @Z:Y ?Y:Z AZ:Y NZ<~Q3Z H~Q G~Q F~Q G" + "~Q 5Z !Z !Z \"Z Ew5[)YAZ@Y*Z KZ/Z KZ1[ KZ1[ L[1Z K[ Gh HZ9X;[+Z(Z#Z(Z$Z(Z$Y'Y ;] 3Z2Z KYC[ AX NX Y NY Y X" + " 3Y.Y-Z $Y.Y KY.Y KY.Y KY.Y 6Y Y NX Y 4Z1Y HY2Y IZ1Z IY0Z KZ0Z KZ1Z IY0Z @Y;XMZ JY0X HY0X GX0X GX0Y DY9Y D" + "Z0Y GY9Z ;W8X8W.W HW-W?f?W.W4[?W.W:[:W =X 0Z9Y HZ 5X_@XAa*[I\\6Y ;Y CZ %V MX /X 7Y-Z 5Z I[ 3n >X;Z ] G`9\\ .Z 4s @[9` " + " =i /i ;Z IV=Y9Z>V+Z:Z G~P JZ !Z\"Z\"~Q Dy!Z1l'~] :Z \"Z 4g (Z 2YDYEXCY(YAZAZ*Z KZ\"}$Z K['z 5r /Y 9Z(Z JZ;Z" + "$ZAW@WAZ F_ %\\ $[ &X IX EY &Y FZ0Y IZ %Y/Z IY.Y 9Y 4Y0Z GY1Y 5Y NX 0XH[ \"Y FY3Z3Y+Z2Y JZ0Z IZ0Y MY0" + "Z ;Z *Z FY .Y1Y DY9Y MYAWJXAY F[MZ 8Z:Y )[ +Z MX N[ 7g1U U<^;U&Z6^ EYHj 9gJY FX/Y CY &Z2Y BYY1Y%Z" + " J[*ZBYBZ HY9Y IY@X@Y KY0Z MY/Y 4Y 6~W GZ:Z ,[ 6Z 2Z KZ/Z;Z;Z*Z(Z([>Z?[.ZHuI[1\\ 1X 1\\ @X @\\ M\\ @X NZ" + "@U 8y ;W4X 5` #X 1X8Z HUEX MT LbJW ;ZC[ H~d &T=j8U L~d Io 5l 2Y1Y @fEW 3Z Nl 0c 0[CZ&lDW5[>mEXE\\N^" + "AlAX6\\ LZ:Z AY9Y @Z:Z AY9Y @Z:Z AY9Z!Z;~Q3Z H~Q G~Q F~Q G~Q 5Z !Z !Z \"Z Ew5[)Y@ZAY*Z KZ/Z KZ1[ KZ1[ L[1Z K" + "[ Ff GZ:X:[+Z(Z#Z(Z$Z(Z$Y'Y :\\ 3Z2Z KYC\\ BY X NX NY Y X 3Y-X-Y #Y-X KY-X KY-X KY-X 6Y Y NX Y 5Z0Y HY" + "2Y IY/Y JZ0Z KZ0Z KY/Z KZ/Y AZ;WKY JY0X HY0X GX0X GX0Y DY:Z DZ0Y FY:Y :WK~KW.WK}KW-W>d>W.W5[>W.W:[:W =X /" + "Y:Z IZ 4Y=T 6~[%~b'~_%~\\ NY/X HX.X >ZHY 6Y?Y N~m 4Z 3Y !X@X ;l @[>WBe,ZG\\7Y ;Y" + " CZ %V ;~c LX 7Y-Z 5Z J\\ 2n @Y;Z N\\ G`8\\ /Z 5u A\\V+Y8Y G~R LZ !Z\"Z\"~Q" + " Dy![2l'~] :Z \"Z 4h )Z 2YCXEXCY(Y@ZBZ*Z KZ\"|#Z K['x 0q 1Y 9Z(Z IZY1Y%Z IZ*YAYBZ HY9Y IY@X@Y KY/Y MY/Y 4Y 6~W GY9Z " + "-[ 5Z 2[ LZ/Z;Z;Z*Z(Z'[?Z?[.[IuI[2~n BX B~n AX A~m AX NZ@U 8y dEW 3Z Nl ._ ,ZCZ'lEX6\\>mEWDVCZBkAX6] LY8Y BZ9Z AY8Y BZ9Z AY8Y BZ9Z!Z;~Q3Z H~Q " + "G~Q F~Q G~Q 5Z !Z !Z \"Z Ew5[)Y@ZAY*Z KZ/Z KZ1[ KZ1[ L[1Z KZ Ee FZ;Y:[+Z(Z#Z(Z$Z(Z$Y'Y :[ 2Z2Z KYB\\ CY X NX" + " NY Y Y 4Y-Y.Y #Y-X KY-X KY-Y LY-Y 7Y Y NX Y 5Z0Z IY2Y JZ/Z KZ/Y KY/Z KY/Z KZ/Y#~d$ZX /Z;Z JZ 2X>U 6~\\'~c&~^$~Z MY/X HX.X >YGZ 7Z@Y " + "N~m 4Z 3Y !X@X :n 'WBg.ZE\\8X :Y CZ %V <~e NX 6Y-Y 4Z K\\ #a AX:Z M\\ H_6[ 0Z" + " 6aI` A]?c ?f $f ?Z IW>Y7Y>V,Z8Z HZ8` MZ !Z\"Z\"Z MZ 1[2l'Z(Z :Z \"Z 4ZN] *Z 2YCXFYCY(Y@ZBZ*Z KZ\"{\"Z " + "K['v +o 2Y 9Z(Z IZq:X !U:[9U&Y5] DY?d =jLX FY/Z C[ " + ")Y1Y AX=Z 6ZIY >Y1Y%Z IZ*YAYAY HY9Y IY@X@Y KY/Y NZ/Z 5Y 5Y-Y HZ8Y .[ 4Z 1Z LZ/Z;Z;Z*Z(Z'[?Z@[-[ L[3~o BX B~o BX" + " B~o BX NZ@U 8y mFXDS?YBi?W5] CY 4Z8Y BY7Y BZ8Z CY7Y AY8Z CZ8Y!Y:Z Z !Z !Z \"Z Ew5[)Y?ZBY*Z KZ/Z KZ1[ KZ" + "1[ L[1Z KZ Dc E[=Y9[+Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z2Z KYB^ &i 0i 1i /i 0i 0i Ej-Y/Z $Z-Y MZ-Y MZ-Y LY-Y 7Y Y NX Y 5Y/" + "Z IY1X JZ/Z KZ/Z LY.Y LZ/Z KZ/Z$~d$Z=WIZ KY0X HY0X GX0X GX0Y CYX .Y;Y JZ 1Y?U 6~\\(~e'~]\"~X LX.X HX.X >YFY 7ZAZ N~m 4Z 3Y !W?X 9p +XCi0ZC\\9X " + " :Y CZ %V <~e NX 6Z.Y 4Z L\\ M^ CY:Z L[ H^4Z 0Z 7^A^ C_Ce ?c Mc @Z HW>X6Y>V,Y7Z HZ5^ NZ !Z\"" + "Z\"Z MZ 1[2l'Z(Z :Z \"Z 4ZM] +Z 2YBXGXBY(Y?ZCZ*Z KZ\"z![ LZ&w 'k 3Y 9Z(Z IZ=Z\"ZCX@XCZ Gc &Z &\\ $X HX FY " + " >q FY.Y JY $Y/Z JY,X 9Y 5Y.Y GY1Y 5Y NX 0XL\\ NY FY3Z3Y+Y1Y JY.Z JY/Z NY/Y ;Y (^ KY .Y1Y CY;Y KYCXIXCY " + "Bc 4Y\\IYMX FY/Z B\\ +Y1Y AY>Y 5ZIZ ?Y1Y%Z IZ*YAYAY HY9Y IY@X@Y KY/Y NZ" + "/Z 5Y 5Y-Y HZ8Z 0\\ 4Z 1Z LZ/Z;Z;Z*Z(Z&[@Z@[-[ L[4~p BX B~o BX B~p CX NY?U 8y mFWCQ;XAe>X6UNW CY 4Y7Z DZ7Y BZ8Z CY7Z CZ7" + "Y CY7Z#Z:Z Z !Z !Z \"Z :Z#[)Y?ZBY*Z KZ/Z KZ0Z KZ1[ L[1Z KZ Ca D[>Y8[+Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z3[ " + "KYA^ /q 9r 9q 7q 8q 9r Mq,Y/Z $Y,Y MY,Y MY,Y MZ-Y 7Y Y NX Y 5Y.Y IY1X JZ/Z KY.Z LY.Y LZ/Z KY.Z$~d$Y=XIZ KY0X" + " HY0X GX0X GX0Y CYX .YW-Y6Y HZ2\\ Z !Z\"Z\"Z MZ 1[2l'Z(Z :Z \"Z 4ZL] ,Z 2YBXGXBY(Y?Z" + "CZ*Z KZ\"x N[ LZ&x #f 3Y 9Z(Z HZ>Z\"ZCW>WCZ Hd &Z &[ #X HX FY At FY.Y JY $Y/Z JY,Y :Y 5Y.Y GY1Y 5Y NX" + " 0XM\\ MY FY3Y2Y+Y1Y JY.Z JY.Y Z/Y ;Y (b Y .Y1Y CY;Y KYCWHXCY Bb 3Y=Y *[ 6e JX Ke KzF^ !U9Y7T'Z4[ CY7] @[E" + "XNX GZ.Y Ai 9Y1Y AY>Y 5YHZ ?Y1Y&[ IZ+ZAYAY HY9Y IY@X@Y KY/Y NZ.Y 5Y 5Y-Y IZ6Y 0[ 3Z 1Z LZ/Z;Z;Z*Z(Z&\\AZA[,[ L[" + "4~p BX B~o BX C~q CX NY?U 8y Z !Z !Z \"Z :Z#[)Y>ZCY*Z K" + "Z/Z KZ0Z L[1[ L[1Z KZ B_ C[>X7[+Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z3[ KY@_ 5u XHZ KY0X HY0X GX0X GX0Y BY=Y BY.Y FY=Z 9WK~KW/WJ}JW.W:\\:W.W" + "9[:W/W9[9W >X .Z=Y JZ /X@U 6~^*~g&~Y N~V KX.Y IX.X ?ZFZ 7ZBY L~l 4Z 3Y \"X@X 3n /X" + "CZIZ2Z@\\W.Z6" + "Z IZ1[ Z !Z#[\"Z MZ 1[2l'Z(Z :Z \"Z 4ZK] -Z 2YBXHYBY(Y>ZDZ*Z KZ\"v L[ LZ&z !c 4Y 9Z(Z HZ>Z\"ZDX>XDY Ge 'Z '[ " + "\"X GX GY Dw FY.Y JY %Z/Z J~W :Y 5Y.Y GY1Y 5Y NX 0XN\\ LY FY3Y2Y+Y1Y JY.Z JY.Y Z/Y ;Y 'e $Y .Y1Y CZ=Z" + " KYDXGWDY @a 3Z>Y +[ 5d IX Ic L~d !U8X7T'Z4[ CY5\\ AZCa GY-Y @h 9Y1Y @X?Z 6ZGY ?Y1Y&[9X9Z+ZAYAZ IY9Y IY@X@Y " + "KY/Z Y-Y 5Y 5Y.Z IZ6Z 2[ 2Z 1Z M[/Z;Z<[*Z(Z%[AZB\\,[ LZ3~p BX B~o BX C~q CX NY?U 8y Z !Z !Z \"Z :Z#[)Y>ZCY*Z KZ/Z KZ0Z L[1[ L[1[ LZ A] B[?X6Z*Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z3[ KY?" + "_ 8w ?x ?w =w >w >w$~u/Y #~W M~W M~W M~W 7Y Y NX Y 6Z.Y IX0X JY-Y KY.Z MZ.Z MY-Y KY-Y$~d$Y?XFY KY0X HY0X GX0" + "X GX0Y BY>Z BY.Y EY>Y 8WK~KW/WJ}JW.W;]:W.W:[9W/W9[9W >X -Y>Z KZ .YAU 6~^*~g%~W L~T JX.Y IX.X ?YEZ 7Z" + "CZ L~k :y KY \"X@X 0m 1WCYEY3Y>\\=X 9Y BY %V <~e =l X 5Z.Y 4Z \\ E[ GY8Z JZ I]" + "2Z 2Z 8[7[ BqMZ ?^ C^ @Y GV=W4X>V-Y5Z IZ0[!Z !Z#[\"Z MZ 1[2l'Z(Z :Z \"Z 4ZJ] .Z 2YAXIXAY(Y=YDZ*Z L[\"s" + " I[ LZ&[Cc Na 5Y 9Z(Z HZ?Z YDX>XEZ Hg (Z (\\ \"X GX GY Fy FY.Y KZ %Z/Z J~W :Y 5Y.Y GY1Y 5Y NX 0e KY" + " FY3Y2Y+Y1Y KZ.Z JY.Y Y.Y ;Y &h (Y .Y1Y BY=Y IXDXGWDY ?_ 1Y?Z ,[ 4b GX Ga L~c T6V6T'Z4[ CY4\\ CZ@_ GY-Y >f " + "9Y1Y @Y@Y 5YFZ @Y1Y&Z8X9[,ZAYAZ IY9Y IY@X@Y KX.Z Y-Y 5Y 5Y.Z IY5Z 3[ 1Z 1Z M[/[WEY9T -X EY1Y 1WEW 3Z 6ZCZ 7X7" + "UKV HW*W KX6ULW CY 5Y5Z FZ5Z EY4Y FZ5Z EZ5Y EY5Z%Z9Z Z !Z !Z \"Z :Z#Z(Y=ZDY*[ LZ/Z KZ0Z L[0Z " + "LZ0[ LZ A] B[@X5Z*Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z4[ JY>` Y 8WK~KW/WJ}JW.W<_;W.W;[8W/W9[9W >X -Z?Z " + " LZ -YBU 5~^*~h%~U J~R IX.Y IX.X @ZDY 6YCZ LW 'y JY \"W?X ,j 3WCYCY4Y=\\>X 9Y CZ" + " %V <~e =l X 5Z.Y 4Z !\\ C[ IY7Z JZ I]2Z 3[ 9[5[ BoLZ ?a Ia @Y HW>X3W>V.Z4Y IZ/Z!Z !Z#[\"Z MZ 0" + "Z Z'Z(Z :Z \"Z 4ZI] /Z 2YAXIXAY(Y=ZEZ*Z L[\"o DZ LZ&Z<^ M_ 5Y 9Z(Z GZ@Z ZEX>XEZ I[MZ (Z )\\ !X GX GY " + "Gz FY.Y KZ %Y-Y J~W :Y 5Y.Y GY1Y 5Y NX 0c IY FY3Y2Y+Y1Y KZ.Z JY.Y Y.Y ;Y %j +Y .Y1Y BY=Y IYEXGXEY >] 0Y?Y ,[ " + "3` EX E_ L\\Cx NT6V6T'Z4Z BY2Z CY>^ GY-Y ;c 9Y1Y @YAZ 6ZEY @Y1Y&Z8X9[,ZAYAZ IY9Y IY@X@Y KX.Z Y-Y 5Y 5Y.Z JZ" + "4Y 4\\ 1Z 1[ NZ.[" + "WDX:U -X EY1Y 1WEW 3Z 5YBY 7W6UKV IX*W KW6UKW CY 6Z4Y FZ5Z FZ4Z GZ4Y EY4Z GZ4Y%Y8Z <[ IZ !Z " + " Z !Z >Z !Z !Z \"Z :Z#Z(Y=ZDY*[ LZ/Z L[0Z L[0Z LZ0[ LZ B_ BZAY5Z*Z(Z#Z(Z$Z(Z$Y'Y 9Z 2Z5\\ JY=` ?{ B{ Bz @z B{ " + "B{'~x/Y #~W M~W M~W M~W 7Y Y NX Y 6Z.Y IX0X JY-Y LZ-Y MZ.Z MY-Y KY-Y$~d$Y@WDY KY0X HY0X GX0X GX0Y AY@Z AY.Y " + "DY@Z 8WK~KW/WJ}JW.W=aX ,Y?Y LZ +XBU 6~_+~i%~U I~P HX.Y IX.X @ZDZ 7YCY KX " + " (y JY \"W?W (h 5XCXAX5Z<\\@Y 9Y CZ $T ;~e =l X 5Z/Z 4Z \"\\ AZ IX6Z JZ I\\1[ 4Z 8Z3Z AmKZ" + " ?d d AZ HW>X3W>V.Z4Z JZ.Z\"[ \"Z#[\"Z MZ 0Z Z'Z(Z :Z \"Z 4ZH] 0Z 2YAYKX@Y(YWCX;U -X EY1Y 1WEW 3Z Is 0YAX 8W6UJV IW)W" + " LX7UJW CY 6Z4Z GY3Y FZ4Z GY3Y FZ4Z GY3Z'Z8Z <[ IZ !Z Z !Z >Z !Z !Z \"Z :Z#Z(Yc=W.W=[6W/X:[:X >X ,Y@Z M[ " + "+YCT 5~`,~i$~S H~P HX.Y IX.X @YCZ 7ZDY KX )y HX #X@X (TNc 6WCX@X5Y:\\AX 8Y CZ :~e" + " =l !X 4Z/Z 4Z #\\ @[ KY6Z IZ I[0Z 4Z 9Z2[ @jJZ ?f %g AZ HW>X3W>V.Y2Y JZ.Z\"[ \"Z#Z!Z MZ 0Z Z'Z(Z" + " :Z \"Z 4ZG] 1Z 2Y@XKX@Y(YWBXZ !Z !Z \"Z :Z#Z(YW.W>[5W.W:[:W =W +ZAY LZ *YDU 5~`,~i#~Q F} GX.Y IX.X AZBY 7ZEZ KX " + ")y HX 6~e 9TJ_ 7XCX?X6Y9\\BX 8Y CZ KX Nl !X 4Z/Z 4Z $\\ >Z LY5Z IZ I[0Z 5Z 8Z1Z >fHY =h " + " +i @Z HW>X3W?W/Z2Z KZ.[#[ \"Z#Z!Z MZ 0Z Z'Z(Z :Z \"Z 4ZF] 2Z 2Y@XLY@Y(Y;ZGZ*[ MZ!Z /Z M[&Z7[ K\\ 6Y 9Z(Z FZ" + "BZ MYFXY FY.Y KZ %Y-Y K~X :Y 5Y.Y GY1Y 5Y NX 0e KY FY3Y2Y+Y1Y KZ-Y JY.Y" + " Y-X ;Y !m 2Y .Y1Y AZAZ GYGXEXGY >] .ZBY -[ 1e JX Ke LU4k IU8Y8T'Y2X AY0Y EX:[ FY-Z Ah 9Y1Y >XCZ 6YBY AY1Y&" + "Z8X8Z,Y@YAZ IY9Y IY@X@Y LY-Y Y-Y 5Y 5Z/Y JZ2Z 8[ .Z 0[!Z,[=Z=[)Z(Z\"]FZG]'Z M[1] 1X 1\\ @X @\\ L\\ AX DX 4" + "Z?U -Z (X4X H~W ;\\;W GTDX\"U s A[D[ 6X %T>WBXZ !Z !Z \"Z :Z$[(Y;ZFY)Z M[/[ MZ/[ MZ/Z M[/Z M[ Ee EZC" + "X3[*Z(Z#Z(Z$Z(Z$Y(Z 9Z 2Z8^ IY9` Fb=Y Eb=Y Eb=X Cb>Y Eb=Y Eb=Y*b=~V/Y #~W M~W M~W M~W 7Y Y NX Y 6Y-Z JX0X JY" + "-Y LZ-Y MY-Z MY-Y LZ-Y CZCXBY KY0X HY0X GX0X GX0Y @YBZ @Y.Y CYBY 6W8X8W.W HW-W@g@X.W?[4W.W:[:W =W *YBZ " + " MZ (XDU 5~`,~i\"~ D{ FX.Y IX.X AZBZ 7YEY IX +y GX 6~e 9TG] 8WBW>X6Y8\\DY 8Y CZ " + " KX Nl !X 4Z/Z 4Z %\\ =Z LX4Z IZ I[0Z 5Z 9Z0Z X3W?W/~S KZ-Z\"Z \"Z#Z!Z MZ 0[!Z" + "'Z(Z :Z \"Z 4ZE] 3Z 2Y?XMX?Y(Y;ZGZ)Z MZ!Z /[ N[&Z6[ K\\ 7Y 9Z(Z FZCZ LZGX^ .YCZ ." + "[ )_ KX L_ ES/e FU8Z9T'Z3X AY0Y FY:[ FY-Z Cj 9Y1Y >XCY 6ZBZ BY1Y&Z8X9[,Y@YAZ IY9Y IY@X@Y LY-Y Y-Y 5Y 5Z/Y J" + "Z2Z 9\\ .Z /Z!Z,\\>Z>[(Z(Z!]GZH^'[ N[0\\ 1X 2\\ ?X ?[ M\\ @X DX 4Z?U -Z 'W4W G~W :]>X GTDY#U s @[D[ 7" + "X %U?WAX>U ,X EY1Y 1WEW \"s 3ZC[ 9X7UHV KW(W MX7UHW CY 7~S J~S H~S I~S I~S I~S)} ;Z IZ !Z Z" + " !Z >Z !Z !Z \"Z :Z$[(Y;ZFY)Z MZ-Z MZ/[ N[/[ N[/Z MZ Eg F[EX2[*Z(Z#Z(Z$Z(Z$Y(Z 9Z 2Z9^ HY7_ G]8Y F^8Y F^8X D]8" + "Y E]8Y F^8Y+^8~V/Y #~W M~W M~W M~W 7Y Y NX Y 6Y-Z JX0X JY-Y LZ-Y MY-Z MY-Y LZ-Y BYDXAY KY0X HY0X GX0X GX0Y" + " @ZCY ?Y.Y CYBY 5W9X8W.W HW-WAiAW,WA[3W.W9Y9W >X *ZCZ 6~d IYET 4~`,~i!| By EX.Y IX.X AYAZ 7ZFY IX " + " Z 3X 6~e 9TF\\ 9WBX=W7Z7\\EX 7Y CZ KX Nl \"X 3Z/Z 4Z &\\ ;Z M~Z %Z I[0Z 6[ 9Z/" + "Y 8ZCZ 8i 6~d 5i ;Z HW>X3W?W0~T KZ-Z\"Z \"Z$[!Z MZ 0[!Z'Z(Z :Z \"Z 4ZD] 4Z 2Y?XMX?Y(Y:ZHZ)Z N[!Z /[ NZ%Z6[" + " J[ 7Y 9Z(Y DZDZ LZGW:WGZ K[GZ +Z -\\ LX EX IY L\\6Y FY.Y KZ %Y-Y K~W 9Y 5Y.Y GY1Y 5Y NX 0XM\\ MY " + "FY3Y2Y+Y1Y KZ.Z JY.Y Y-X ;Y Ji 4Y .Y1Y @YAY FYGWDXGX >` /YCY .[ $\\ LX M\\ AR+` CT9[:U'Z3X AY0Y FY9Z FY-Z " + "D` .Y1Y >YEZ 6YAZ BY1Y&Z8X9[,ZAYAZ IY9Y IY@X@Y LY.Z Y-Y 5Y 5Z/Y KZ1Z 9[ -Z /Z\"[+[>Z>[(Z(Z ^IZJ_&[ NZ.\\ 2X 3" + "\\ >X >[ \\ ?X DX 4Z?U -Z 'X6X G~W 9^@X GUDY$T Ns ?[CZ 8X %U?WAY?U ,X EY1Y 1WEW \"s 4" + "ZCZ 7W7UGV LX)X MW7UGW CY 8~T J~T I~S J~T I~T K~T*~ ;Z IZ !Z Z !Z >Z !Z !Z \"Z :Z$[(Y:ZGY)[ NZ-Z N[.Z N[/[ N" + "[/[ NZ Fi G[FX1Z)Z(Z#Z(Z$Z(Z$Z)Z 9Z 2ZX )YCY 5~d IYFU 4~`,~i!{ @x EX.Y IX.X AY@Y 7ZGZ IX Z 3X 6~e 9TD[ ;XBX=X8" + "Z6\\GY 7Y CY JX Nl \"X 2Y/Z 4Z '\\ :Z M~Z %Z I[0Z 6Z 8Z/Z \"Z 5i 9~d 8i 8Z HW>X3W?W0~U LZ-Z\"[ " + "#Z$[!Z MZ /Z!Z'Z(Z :Z \"Z 4ZC] 5Z 2Y?XNY?Y(Y:ZHZ)[ [!Z .Z NZ%Z5[ K[ 7Y 9Z(Y DZDY KZHX:XHY K[EZ ,Z .\\ KX EX" + " IY LZ4Y FY.Y KZ %Z.Y KZ X DX 4Z?U -Z 'X6X G~W " + "8^BX FUDY%U Ns =ZCZ 9X $U@W@X?T +X EY1Y 1WEW \"s 5ZCZ 7W7UFV LW(W MX8UFW CY 8~U K~T J~U K~" + "T J~U K~T*~ ;[ JZ !Z Z !Z >Z !Z !Z \"Z :Z$Z'Y9YGY)[ [-[ [.Z N[.Z NZ.[ NZ G\\L[ GZGX0Z)Z(Z#Z(Z$Z(Y#Z)Z 9Z 2~ " + "GY4] J[4Y G[4Y G[4X EZ4Y FZ4Y G[4Y,[4X 1Y #Y Y Y Y 9Y Y NX Y 6Y-Z JX0X JY-Y LZ-Y MZ.Z MY-Y KY-Y BYEW?Y" + " KY0X HY0X GX0X GX0Y ?YDY >Y.Y BYDY 4W9X9W-X JX,WD\\J[CW,WC[2W-X JX >X )YDZ 5~d HXFU 4~_+~i z @w DX.Y" + " IX.X BZ@Y 6YGZ IY Y @~e 9TCZ ;WAX=X8Y4\\HX 6Y CY JX Mj !X 2Y/Y 3Z (\\ 9Z" + " M~Z %Z I[0Z 6Z 8Z/Z \"Z 2i <~d ;i 5Z HW>X3W@W/~U LZ-[#[ #Z$Z Z MZ /Z!Z'Z(Z :Z \"Z 4ZB] 6Z 2Y>a>Y(Y9ZIZ)[ " + "Z Z .Z [%Z4Z JZ 7Y 9Z)Z DZEZ JYHX:XIZ KZD[ -Z /\\ JX EX IY MZ3Y FY.Y JY %Z/Z JY Z !Z !Z \"Z :Z%['Y9ZHY(Z [-[ Z" + "-[ Z-Z [-Z [ H\\J[ HZHY1[)Z(Z#Z(Z$Z(Y#Z)Z 9Z 2} FY2\\ KZ3Y GZ3Y GY3Y FZ3Y GZ3Y GZ3Y,Z3X 1Y #Y Y Y Y 9Y Y " + "NX Y 6Y-Z JX0X JY-Y KY.Z MZ.Z MY-Y KY-Y BYFX?Y KY0X HY0X GX0X GX0Y >YEY >Y.Y BYEZ 4X:X9W,W JW+WE\\H[EX,X" + "E[1W,W JW =X )ZEY 4~d HYHU 2~^+~i Nx >u CX.Y IX.X BY?Z 7ZHY GX Z A~e 9TCZ ~d >i 2Z GV>X3W@W0~V LZ-[\"Z " + "#Z%[ Z MZ /[\"Z'Z(Z :Z \"Z 4ZA] 7Z 2Y>a>Y(Y9ZIZ(Z Z Z .[![%Z4[ KZ 7Y 9Z)Z CZFZ JZIX:XIZ L[CZ -Z /[ IX DX J" + "Y MY2Y FY.Y JY %Z/Z JY Y CY1Y&Z9Y9Z+ZAYAY HY9Y IY@X@Y LZ/Y N" + "Y-Y 5Y 4Y0Z LZ.Y =[ *Z .[%Z(]AZA]'Z(Z L~\"[![+\\ 5X 6\\ JTEXET J[&\\ KSDXES $Y 3Y?U -Z &Y:Y F~W 5_GX DU" + "CZ9QAU DZCZ ;X $VAW?YBU +X EY1Y 1WEW DZCZ 6W7UEV NX)X MX8UEW DY 8~V L~V L~W M~V K~V M~V" + ",~P :Z JZ !Z Z !Z >Z !Z !Z \"Z :Z%['Y8ZIY(Z Z+Z Z-[![-[![-[![ I\\H[ I[JY0[(Y(Z#Z(Z$Z)Z#Z)Z 9Z 2| EY1\\ LY2Y " + "HZ2Y HZ3Y FY2Y GY2Y GY2Y-Z2X 1Y #Y Y Y Y 9Y Y NX Y 6Z.Y IX0X JY-Y KY.Z MZ.Z MY-Y KY.Z BYGX?Z KY1Y HY0X" + " GX0X GX0Y >YFZ >Y.Y AYFY 2W:X:X,W JW+XG\\F[FW+XF[1X,W JW =X (YEY 4~d GXHU 2kNRMk*tNq Mv Y 7ZIZ GY !Z A~e 9TBY `=Y(Y8ZJZ([\"[ Z " + ".[!Z$Z3Z KZ 7Y 9Z)Z CZGZ IZIW8WIZ M[AZ .Z 0\\ IX DX JY MY2Y FY.Y JY $Y/Z JY YEY CYIWBXIX @f 0YGZ 0[ LZ NX NY 'U>WMW?V&Z4Y AY/Y HY8Y" + " EZ.Y FZ %Y1Y Y CY1Y&[:Z:Z+ZAYAY HY9Y IY@X@Y LZ/Y NZ.Y 5Y 4Y0Y KZ.Z ?\\ *Z -['['\\AZB]&Z(Z K|![!Z)\\ 6" + "X 7\\ JVFXFV J[(\\ KUEXFU %Y 3Y?U -Z %YXCU *X EY1Y 1WEW" + " F[CZ 6X8UDV NW)X MX8UDW DY 8~W N~W L~W M~V L~W M~W-~P :[ KZ !Z Z !Z >Z !Z !Z \"Z :Z%['Y8ZIY([\"[+[" + "\"[,Z![-[!Z,[!Z I\\F[ J[KY/Z'Z)Z#Z)Z#Z)Z#Z)Z 9Z 2{ DY0[ MY1Y HY1Y HY2Y FY2Y HZ2Y HY1Y-Y2Y 1Z $Y Y Y Z :Y Y" + " NX Y 6Z.Y IX0X JZ.Y KY.Z MZ.Y LZ.Y KY.Z BYHX>Z KY1Y HY1Y GX0X GX0Y =YGY =Y.Y AYFY 2X;X:W+X LX*WH\\D[HX" + "*WG[0W+X LX =X (YFZ 4~d GYIU 2jLQLj*pNRNq Lt :q AX.Y IY0Y CZ>Y 6YIZ FX !Z A~e 9T" + "BZ >W?W;W8Z2\\MY 4Y DY JX 4X 1Z1Z 3Z +\\ 6Z M~Z %Z HZ0Z 8[ 7Y.Z #Z )i D~d Ci -Z GV=W4XAW/~W M" + "Z-[\"[ $Z&[ NZ MZ .Z\"Z'Z(Z :Z \"Z 4Z?] 9Z 2Y=_=Y(Y8ZJZ([\"[ Z -Z\"[$Z3[ L[ 8Y 9Z)Z BZHZ IZJX8XJY LZ@[ /Z 1\\" + " HX DX JY NY1Y FZ0Z JY $Y/Z JY YEY BXJXAWJY A[N[ 1YGY 0[ JY NX NY 'V@WLX@U$Y5[ BY/Y HX7X DZ.Y FY $Y1Y Z " + "/Z K_MZ BUC]BVBU A[D[ >X #VBW=XDU *X EY1Y 1WEW G[D[ 5W8UCV X*X LW8UCW EZ 8~W N~X M" + "~W N~X M~W N~X.~Q :[ KZ !Z Z !Z >Z !Z !Z \"Z :Z&[&Y7ZJY([\"[+[\"[,[\"Z+[#[+Z\"[ J\\D[ JZKX/['Z*[#[*Z#Z)Z#Z)Z" + " 9Z 2z CY/Z MY1Y HY2Z HY2Y GY1Y HY1Y HY1Y-Y2Z 2Z $Z !Z !Z !Z :Y Y NX Y 6Z.Y IX0X JZ/Z KY.Z LY.Y LZ/Z KY.Z " + " BYHW=Z KY1Y GX1Y GX1Y GX0Y =YHZ =Y/Z @YHY 1X;X;X*W LW)XJ\\B[IX*XI[0X*W LW Z 7ZJY EY !Z 1X@X &TAY ?X?W;W8Z1\\NX 3Y DY JX 5Y 0" + "Y1Z 3Z ,\\ 5Z M~Z %Z HZ0Z 8Z 6Y.Z #Z &i G~d Fi )X FV=X5XAW0~Y NZ-[!Z $Z&[ NZ MZ .[#Z'Z(Z :Z \"Z 4Z>] :Z 2" + "Y=_=Y(Y7ZKZ'Z#[ NZ -[#[$Z2[ M[ 8Y 9Z)Z BZHZ HYJX8XKZ M[?Z /Z 2\\ GX CX KY NY1Y FZ0Z JZ %Y/Z JZ =Y 4" + "Y0Z GY1Y 5Y NX 0XG\\ $Y FY3Y2Y+Y1Y JZ/Y IZ0Y MY/Y ;Y 8[ 8Y .Y1Y >ZGZ BYKXAXKY B[LZ 0YHY 1[ IY NX Z &VB" + "XKXBV$Y5[ BY/Y HX8Y CY/Z GY #Y1Y Z !Z !Z \"Z :Z&[&" + "Y7ZJY'[#Z)Z#[+[#[+[#[+[#[ K\\B[ K[MX.['Z*Z!Z*Z#Z)Z#Z)Z 9Z 2x AY.Z NY2Z HY2Z IY1Y GY1Y HY1Y HY2Z-X1Z 2Z $Z !Z !Z" + " !Z :Y Y NX Y 5Y/Z IX0X JZ/Z KZ/Y KY.Y LZ/Z KZ/Y AYIWW;W8Z0e 3Y EZ JX 5X /Z2Y 2Z -\\ 4Z M~Z %Z HZ0Z 8Z 6Z/Z $Z #j J~d Ii CW>X6Y" + "BX0~Y NZ-[![ %Z'\\ NZ MZ -Z#Z'Z(Z :Z \"Z 4Z=] ;Z 2Y<][ 0" + "Z 3\\ FX CX KY NY2Z FZ0Y IZ %Y/Z JZ =Y 4Y0Z GY1Y 5Y NX 0XF\\ %Y FY3Y2Y+Y1Y JZ/Y IZ0Y MY/Y ;Y 7Z 8Y" + " .Y2Z =YGY AYKW@XKY BZJZ 1YIY 1[ HY NX Y %WEYIYFW#Y5[ BY/Y HX8Y CY/Z GY #Y1Y ;XIY 6Y;Z EY1Y%Z:Z:Z*ZBYBZ " + "HY9Y IY@X@Y LZ/Y MY/Z 4Y 4Y2Y KZ,Z B[ 'Z +[+[#_FZF_$Z(Z Gt JZ$[%\\ 9X :\\ J\\IXI[ I\\/\\ K[HXI[ (Y 3Z@U -Z " + "%^F^ /Z X \"f >VBnCU >[D[ @X \"VCWZ !Z !Z \"Z :Z'[%Y6ZKY'[$[)[$[*[$[*[%[*[$[ K\\@[ Le.[&Z*Z!Z*Z\"Z*Z#Z*[ 9Z 2v " + "?Y.Z NY2Z HX1Z IY1Y GY1Y HY2Z HX1Z.Y1Z 1Y #Y Y Y Y :Y Y NX Y 5Y/Z IX0X IY/Z KZ/Y KY/Z KY/Z KZ/Y 7\\ 7ZKW" + ";Y IX1Y GX1Y GY2Y GY2Z YJX(XJY/X)X Y W;W7Y/c 2Y EY IX 5X /Z3Z 2Z .\\" + " 3Z M~Z &Z FY1Z 8[ 6Z/Z $Z i L~d Li @W>Y7YBW0Z*Y NZ-[![ %Z'[ MZ MZ -[$Z'Z(Z :Z \"Z 4Z<] Z !Z !Z \"Z :Z(\\%" + "Y6ZKY&[%[)\\&[)[%[)[%[)[%[ L\\>[ Ld.[&Z*Z!Z*Z\"Z+[\"Z+Z 8Z 2s YJY .X=X=Y(" + "X!X'YJWX.Y HY2Y CZW=X8ZC" + "W/Z*Z Z-Z N[ &Z(\\ MZ MZ -\\%Z'Z(Z :Z \"Z 4Z;] =Z 2Y<]Y 4Z2[ GY1Y 5Y NX 0XD\\ 'Y FY3Y2Y+Y1Y IY0Z IZ1Z MZ1Z ;Y 6Y" + " 8Y .Y2Z =ZIZ @XLX?WLY C[H[ 2YKZ 3[ EX NX Y $hFh\"Z7\\ BY0Y GX9Y BZ1Z FX \"Y1Y ;YKY 6Y9Y EY2Z%Z;[:Z*ZBYB" + "Y GY9Y IY@XAZ L[1Y LZ1Z 3Y 3Y3Y LZ*Z D[ &Z *[-[ aJZJa\"Z(Z Cl F\\'[\"\\ ;X <\\ F\\KXK\\ F\\3\\ H\\JXK\\ 'Y " + "2ZAU -Z 'z 1Z X Na ;V@jDV :ZCZ BX UDW;XIU 'X EY2Z 1WEW KZCZ 3X9U@V\"W*X LX9VAW H[ " + "8Z*Z\"Y)Y!Z*Z\"Z*Y!Z*Z\"Z*Z1Z3Z 8[ MZ !Z Z !Z >Z !Z !Z \"Z :Z(\\%Y5ZLY&[&['[&[([&[)\\'\\)[&[ L\\<[ Mc.[$Z,[!" + "[,[\"Z+Z!Z+Z 8Z 2n 7Y-Y NX1Z IY2[ IY2Z GY2Z HY2Z IY2[.Y2\\ 2Z $Z !Z !Z !Z ;Y Y NX Y 5Z0Y HX0X IZ1Z IY0Z KZ0" + "Y JZ1Z IZ1Z 7\\ 6YMX;Z IY3Z GY2Y GY2Y GY2Z ;YKY ;Z1Z >YJY .Y>X=X'Y#Y&XIU:UJY&YJU.X'Y#Y ;X &YJZ #Z JXLU" + " -dIQId%kKRKk El 2j >X.Y HY2Y CY;Z 7ZMZ BZ #Z 3X@X %TAX @WZ 2Y;[;Y(Y5ZMZ&\\([ LZ +['[\"Z0[ Z 7Y 8[,Z ?YKZ EYLX6XLY [:[ 2Z 5\\ DX BX LY NY3[ F[2Z HZ %Y1" + "[ IZ >Y 3Y2[ GY1Y 5Y NX 0XC\\ (Y FY3Y2Y+Y1Y IZ2Z H[2Z LY1Z ;Y 6Z 9Y .Y2Z Z !Z" + " !Z \"Z :Z)\\$Y5ZLY%[(\\'\\(['\\(['['['[(\\ M\\:[ Ma-[$Z,Z NZ,Z![,Z!Z,[ 8Z 2Z #Y-Y NX2[ IY2[ IY2Z GY3[ HX2[ IY2" + "[.Y2\\ 2Z $Z !Z !Z Y ;Y Y NX Y 5Z1Z HX0X IZ1Z IZ1Z JZ2Z JZ1Z IZ1Z 7\\ 6c:Z IY3Z GY3Z GY3Z GY3[ ;YKY ;[2Z =" + "YLY ,Y?X>Y&Y%Y%YIS8SJY$YJS.Y&Y%Y :X &ZKY #Z IYNU ,cISIb#jKRJi Cj 1i =X.Y GY4Y BY:Y 7ZMZ AZ " + " $[,P )W?X %TBY AXXMY DZDZ 2YLY 3[ DY X Y \"eCd NY8^ CY0Y GX:Y @Z2Z FX \"Y1Y :YMY 6Y7Y " + "FY2Z%[<\\a@V 7YBY CX NV LV BZ3Z 1WEW LYBY 2W8U?V#W+X KX9U" + "?W J[ 7Z(Y#Z)Z#Z(Z$Z)Z\"Y(Z$Z(Y2Z2Z 7\\\"P NZ !Z Z !Z >Z !Z !Z \"Z :Z*\\#Y4ZMY%\\)[%[)\\&[)\\'\\)\\'\\)[ M\\8" + "[ N`-[#Z,Z NZ,Z Z-[![-[ 8Z 2Z #Y-Y NX2[ IY2[ IY3[ GY3[ HY3[ HX2[.Y3^ 2Z $Z !Z !Z !Z ZMZ DZMW4WMZ![7Z 3Z 7\\ BX AX MY NY3" + "[ F\\4Z FZ &Z3\\ HZ ?Y 3Z4\\ GY1Y 5Y NX 0X@[ *Y FY3Y2Y+Y1Y HZ3Z H\\4Z KZ3[ ;Y 5Y 9Y -Y4[ ;YKY >YNX=WNY D[D[ " + "3YMY 3[ CY X Y !cAb MZ9^ CZ2Z GX:Y @Z3Z EX \"Y1Y :YMY 7Z7Y FZ4[$Z<\\Z !Z !Z \"Z :Z+]#Y4ZMY$[*\\%\\*[%\\+\\%\\+\\%\\+\\ N\\6[ N^-\\#[.[ N[.[ [.Z NZ-Z 7Z 2Z #Y-Y NY4\\ IY3" + "\\ IY3[ GY3[ HY4\\ HX3\\.Y3^ 2Z $Z !Z !Z !Z i i 2WZ4" + "Z EY #Y1Y 9XNZ 7Y6Z GZ4[$Z=]=['ZDYDZ FY9Y HZBXBZ K]5Z J[5[ 2Y 2Z7Y L[(Z H[ #Z '\\5[ F~ LZ(Z :Z :\\-\\ KW :X :" + "V >r >V/V @s #Z 2[CU -Z +[MeL[ 5Z X G\\ :W!V 3W@W 7V!W AZ4[ 1WEW LW@W 1W7s,X-" + "Y JX8t$\\ 7Z'Z%Z'Z$Z'Y%Z'Z$Z'Y%Z'Z4Z1Z 6\\&S NZ !Z Z !Z >Z !Z !Z \"Z :Z,]\"Y3ZNY$\\,\\#\\,\\$\\,\\$\\-\\$\\," + "\\ N\\4[ ]-\\![/Z LZ/[ N[/[ N[/[ 7Z 2Z #Y-Y NY4\\ HY5] IY4\\ GY4\\ HY4\\ HY4\\.Z5` 2Z $Z !Z !Z !Z =Y Y NX Y " + "3Z4Z GX0X H[5[ GZ4Z GZ4Z H[5[ GZ4[ 6\\ 5_9[ HZ5[ GZ5[ FY5[ FY5\\ :YNZ :\\4Z ;YNY )YAXAZ\"Z+Z!Z*Y Y*Z\"Z+Z 8" + "X $YMY %[ F^ '\\FSF\\ LcGRGc >f ,c :X.Y FZ7Y BY8Y 7e >[ %[1S -Y 'X@X ;Q:TCZ CX:X=X" + "5[.] /Y HY HX NZ GZ 'X +[8Z 0Z 4\\ 0[ 'Z M\\ CZ6[ 9Z 2[3[ '[ 0Y Y ?f f BX DW=\\C_J[.Z&Z\"Z0\\ " + "J\\(T'Z._ JZ MZ *])Z'Z(Z :Z \"Z 4Z6] BZ 2Y JY(Y3e#\\.\\ JZ )]/\\ NZ.[ NQ'[ 6Y 6[0[ =ZNZ CYNX4XNY!Z4[ 5Z 8[ @X" + " AX MY NY5] F]6Z DZ &Z5] G[ AY 2[8^ GY1Y 5Y NX 0X>[ ,Y FY3Y2Y+Y1Y H[6[ G]6Z IZ5\\ ;Y 6Y 8Y -Z6\\ ;Z" + "MZ =b=b EZ@Z 3d 5[ AY X Y L[:\\ IZ;` D[4Z FXZ5[ EY #Y1Y 9c 7Z5Y GZ5\\$[>^>['[EYE[ FY9Y HZBXCZ J]5Z " + "IZ5Z 1Y 1Y8Z LZ&Z J[ \"Z &\\8] E| KZ(Z :Z :]/] JU 9X 9T

q \"Z 1ZCU -Z ,[JaI[ 6Z X F\\ :W#V 1" + "V?V 7W#W @[5[ 1WEW LV?V 1X7s,W-Y JX7t%\\ 6Z&Z&Z'Z%Z&Z&Z'Z%Z&Z&Z&Y4Y0Z 5\\(T NZ !Z Z " + "!Z >Z !Z !Z \"Z :Z.^!Y3e#\\.\\!\\.\\#].\\#]/]#\\.\\ N\\2[ ]/]![0[ L[0[ M[0[ N\\1[ 6Z 2Z #Y-Y NY5] HY5] IZ6] GY" + "5] HY5] HY5]-Y5a 3[ %[ \"[ \"[ \"[ >Y Y NX Y 3Z5[ GX0X GZ5Z F[6[ G[6[ GZ5Z F[5Z 5\\ 4^9Z FY6\\ FY6\\ FY6\\ " + "FY6] 9c 9]6Z :d )[CXBZ Z-Z NZ-[ [-Z Z-Z 7X $YNZ %Z D] $VCSDW G`FSG` ;d +c :X.Y F[9Z CZ8Y 6d =\\ " + " '\\3T -Z (W?X ;Sd c @Z EW<_Ks-Z&Z\"Z1] J^,V'Z/_ IZ MZ )]*Z'Z(Z :Z \"Z 4Z5] CZ 2Y JY(Y2d#]0\\ IZ (]1] NZ-" + "Z NS*\\ 6Y 6[1[ Z 4c 5[ @Y X Y HS3V FZZ%ZEYF[ EY9Y GZCXD[ J^7Z H[7[ 1Y 1Z:Z KZ&Z K[ !Z %];] Bx IZ(Z :Z 9]1] HS 8X 8R :n :R+R U 6W%W ?[6\\ 1WEW LU>U 0W6s-X.X HW6t&\\ 5Z&Z'Z" + "%Z&Z&Z'Z%Z&Z&Z&Z&Z6Z0Z 4],V NZ !Z Z !Z >Z !Z !Z \"Z :Z0`!Y2d\"\\0]!]0\\!]0\\!]1]!]1] \\0[ ]1] N[2\\ L\\2[ L\\" + "2[ L[1[ 6Z 2Z #Y.Y MZ7^ HY6^ HY6] GZ6] HZ7^ HZ7^-Y6c 3[ %[ \"[ \"[ \"[ ?Y Y NX Y 3[7[ FX0X G[7[ E[7[ FZ7[ F" + "[7[ E[7[ 5\\ 4]9[ FZ8] FZ8] FZ8] FZ7] 9c 9]7[ 9b '[DXD[ N[/Z LZ/[ M[0[ N[/Z 6X $d %Z C\\ ?S 2\\ETD" + "\\ 9b )a 9X.Y E[<[ BY7Z 7c ;\\ '\\5U -Z (W?W :U>TE[ CX8X?X3\\3b 1Y IY GX NZ GZ (" + "X )[;[ /Z 5[ %Q-\\ &Z BQ/] AZ9\\ 9Z 0[6\\ (\\ /Z \"[ ;a ` =Z EX[ 4b 6[ ?Y X Y " + "FZ=b E]7Z EX=Z <[9\\ D[ %Y1Y 8a 6Y3Y H\\8]#[@WNW@[%[FYG\\ EY9Y G[DXD[ J_9[ G[9[ /Y 1Z;Z LZ%Z L\\ !Z $]=\\ >t GZ" + "(Z :Z 8]3] FQ 7X 7P 8l 8P)P :m Z 0[EU -Z .[?P?[ 8Z X D[ 9W(W -T\\8] 1WEW " + " LSZ !Z !Z \"Z :Z2a Y2d\"^3] N]3^ ]3" + "] N]3] N]3] \\.[!^3] M\\4\\ J\\4\\ K\\4\\ L\\4\\ 5Z 2Z #Y.Y MZ8_ HZ8_ HZ8^ FZ8^ HZ8_ HZ8_-Z8e-Q)\\ &\\-Q G\\-Q " + "G\\-Q G\\-Q 5Y Y NX Y 2[9\\ FX0X F[9[ D\\9[ E[8[ E[9[ D\\9[ 4\\ 3[9[ EZ9^ FZ9^ FZ9^ F[9^ 9b 8^9[ 8b &[2[" + " L\\3\\ K[2[ K[2[ L\\3\\ 6X #c &Z B\\ ?S /UATAT 4a '_ 8X.Y E\\>\\ BY6Y 7c :] (\\7V " + "-Z )X@X :W@TF[ BW7X?X3]6e 1X IY GX NZ GZ (X ([=[ .Z 6[ $S1^ &Z BS3^ @\\<\\ 8Z 0]9] FR6] .Z \"[ 8^ " + " ^ ;Z DW;lMc+Z$Z#Z4_ G_2Y'Z5c GZ MZ '^/\\'Z(Z :Z \"Z 4Z3] EZ 2Y JY(Y1c!^6^ HZ '^6^ LZ,Z X1] 5Y 5]6\\ :c Ab2a" + "\"Z0[ 7Z ;\\ >X @X NY MZ:` F_:[ B\\3P D[;` E\\1S 7Y 0\\>a GY1Y 5Y NX 0X;\\ 0Y FY3Y2Y+Y1Y F[:[ E_;\\ " + "F[;_ ;Y *S1Y 6Z .[;_ :e ;`;` G[<[ 5a 6[ >Y X Y F[?YNY F_:[ DX?Z :[;\\ B[ &Y1Y 8a 7Z3Y H]:^#\\BXNWA[#[" + "GYH\\ DY9Y F\\FXF\\ I`;[ F\\;\\ /Z 2[=Z KZ$Z N\\ Z #^A] :n DZ(Z :Z 7]5] +X Mj (k NZ 0\\FUBP ;Z /[,[ " + "9Z X CZ 8X+W *R;R 4X+X =]:^ 1WEW LR;R /X5s.W.X GW5t(\\ 4Z$Z(Z%Z'Z$Z(Z$Y'Z$Z(Z$Z" + "8Z/Z 3_2Y NZ !Z Z !Z >Z !Z !Z \"Z :Z5c NY1c!^6^ L^6^ M^6^ M]5] M^6^ \\,[#a7^ K\\6] I\\6\\ J]6\\ J\\6] 5Z 2Z #" + "Y/Z LZ:` H[:` H[:_ FZ:` GZ:` GZ:`-[:YN\\0S(\\4Q C\\0S F\\0S F\\0S F\\0S 5Y Y NX Y 1[:[ EX0X F\\;\\ C\\;[ C[:" + "[ D\\;\\ C\\;\\ 4\\ 3[:\\ DZ;_ EZ;_ EZ;_ EZ;` 8a 8_;\\ 7a %\\6\\ J\\5\\ I\\6\\ I\\6\\ J\\5\\ 5X #c 'Z " + "@[ @T JT _ %] 7X.Y D^D^ BZ6Y 6b 9_ *];X -Z )X@X :ZCTH] CX7YAX1^:h 2Y JY GX NZ" + " GZ (X (\\?\\ .Z 7\\ $W7_ %Z BV8` ?\\>] 9[ /];] ET9] -Z \"[ 5[ [ 8Z DX;jLb*Z$Z#Z7a E`7\\'Z9f FZ MZ &`4^" + "'Z(Z :Z \"Z 4Z2] FZ 2Y JY(Y1c _:_ GZ &_9^ KZ,[![6^ 4Y 4]9] 8b @a2a#[/Z 7Z ;[ =X @X NY M[\\ @]7R" + " D\\=a E]4U 7Y /]Bc GY1Y 5Y NX 0X:\\ 1Y FY3Y2Y+Y1Y E\\>] E`=\\ E\\=` ;Y *U5[ 6[ /\\>a 9c :_:` GZ:Z 4` 6[ >Y " + "X Y E[AYMZ G`<[ CX@Z 9\\=\\ A\\3Q EY1Y 7` 7Y2Z I^<_\"[BWMXC\\#]IYI\\ CY9Y F]GXG] Ia=\\ E\\=\\ .[ 2[?Z J" + "Z$Z N[ NZ \"^C^ 7g @Z(Z :Z 7_9_ +X Lh &i MZ /]HUDR ;Z .Y*Y 8Z X BZ 8Y/X (Q:Q 2X/Y " + " <^<` 2WEW LQ:Q .W MV(X/X GX NW\"\\ 3Z$Z)Z#Z(Z$Z)Z#Z(Z$Z)Z#Z8Z/Z 2`7\\ NZ !Z Z !Z >Z !Z !Z \"Z :" + "Z9f MY0b _:_ J_:_ K_:_ L_9_ L_9^ N[*[$c:^ J^:^ H^:^ I^:] H]9] 4Z 2Z #YIP7[ L[] C\\=\\ A\\=\\ 3\\ 2\\=\\ C[=` E[=` E[=" + "` E[=a 8a 8`=\\ 6` #]:] H]9] G]:] G]:] H]9] 4W !a 'Z ?Z ?U KT N] $] 7X.Y Cv AZ6Z 7a 7a " + " -_?Z -Z )W?X :^GTK_ CX5XAX0_>k 3Y JX FX NZ GZ )Y ']C] ?} I~S IZ=b %Z BZ>a =]B^ 8Z ._?^ DX" + "@_ ,Z \"[ 3Y X 5Z CW:gJ`)Z\"Z$~T Cb=_'~W E~S FZ %b:a'Z(Z :Z \"Z 4Z1] G~Q)Y JY(Y0b N`>` FZ %a?` JZ+Z!^_ 8b @a2a$[.[ 8Z <~` AX ?X Y L\\@c Fb@] ?^` H`>` I`>` Ja?a Ja?` LY(Y$f?` H_>_ F_>_ G_>_ H_>" + "_ 3Z 2Z #YIS;[ K\\?c G\\?c G\\?b E\\@c F\\@c G\\?c,\\?[L^9Y'^} I~S I~ $Z B| ;^F_ 7Z -aEa Dv +Z \"[ 0V U 2Z CX9dI^'Z\"Z$~S AfGd'~U C~S FZ $gGg&Z(Z :Z \"Z 4Z0] H" + "~Q)Y JY(Y0b McGd EZ $dGc IZ+[\"cEd 3Y 3cGc 7a ?`1a$Z,[ 9Z =~a AX ?X Y L^DZNY FYNZF_ =`CY B^EZNY CaB] 7" + "Y .qMY GY1Y 5Y NX 0X8\\ 3Y FY3Y2Y+Y1Y D_F_ CYNYE_ B^EZNX ;Y *]A^ 4k >^G[NY 8a 9_9^ H[8[ 5^ 6~P 2Y X Y " + " D^H[La NfH` AYD[ 6^E_ ?`?X EY1Y 7_ 7Y0Y IcFk(]HZLZI^ `Nk BY9Z E~Q GYNZE^ B_E_ ,e ;]G] J~c!~T FZ 3oDo @Z :Z(Z :" + "Z 5dGd )X Jd \"e KZ -`MUKY H~U IU&U 6Z X AY 5Z7Z LZ7Z ;~d 3cFk 8WEW " + " BW LV)X0X FW LW$\\ 2Z\"Z+[#Z)Z\"Z*Z\"Z*Z\"Z*Z\"Z:Z.~T*fGd N~T J~T I~S I~S 7Z !Z !Z \"Z :~U JY/a MdGc FcGd GcGd" + " HdGd HdGc JW&W$kGc FbFb DbFb FcFb FcGc 3Z 2Z #YIWB] I^DZNY F]D[NY F]D[NX E^DZNY F^DZNY F^E[NY+]D]J`@]&`BY AaA]" + " DaA] DaA] DaA] 5Y Y NX Y /_F_ CX0X D_E_ ?_F_ ?_F_ @_E_ ?_F_ 7aF_ @^FZMX D^FZMX D_GZMX D_G[NY 7_ 7YNYE_ 4^" + " dLd CdMd BdLd CdLd DeMd 2X !` %X =Y ?U LV MZ !Y 5X.Y As AZ4Y 6` 5~] )x -Z " + "*X@X 9} BX3YFZ-{L] 4Y LY FX NZ GZ )X $t >} I~S I} #Z B{ :v 7[ ,{ Cu *Z \"[ -S S 0Z BW8aG[%[\"Z$~R" + " ?~S'~T B~S FZ #~V%Z(Z :Z \"Z 4Z/] I~Q)Y JY(Y/a L~ DZ #~ HZ*Z\"~R 2Y 2} 5` ?`0_$[+Z 9Z =~a AX ?X Y KsN" + "Y FYNr ;u AqMY B{ 7Y -oLY GY1Y 5Y NX 0X7\\ 4Y FY3Y2Y+Y1Y Cv BYNr ArMX ;Y *y 2j >qMY 8a 8^9^ I[6Z 5^ 6~P 2Y X " + " Y CpK` N} ?YF[ 5w =x EY1Y 6] 7Z0Z J~Y(nJm M{ AY9\\ F~ FYMq @w *d ;r J~d!~T FZ 3oDo @Z :Z(Z :Z 4~ 'X " + " Ib c JZ ,u H~U HS$S 5Z X AY 4\\>\\ I]>\\ :~d 3~Y 8WEW CW KV)W0X FX LW" + "$[ 2[\"Z+Z!Z*Z\"Z+Z!Z*Z!Z,Z!Z:Z.~T)~S N~T J~T I~S I~S 7Z !Z !Z \"Z :~T IY/a L~ D~ E~ F~ E~ HU$U$~X D| B| D} D} " + "2Z 2Z #YIr HrMY FsMY FsMX DsNY ErMY FsMY+uH|%v @| C| C| C| 5Y Y NX Y .v BX0X Cw =w >v >w =w 8{ ?qMX CqMX C" + "qMX CqMY 6] 6YNr 3^ My Ay @y @z Ay 1X _ $V X !" + "Y JqMY FYMp 9t ApLY Az 7Y ,mKY GY1Y 5Y NX 0X6\\ 5Y FY3Y2Y+Y1Y Bt AYMp ?pLX ;Y *x 1j =oLY 8a 8]8^ IZ4Z 6" + "] 5~P 2Y X Y CoI_ N} ?[K] 3u ;w EY1Y 6] 7Y.Y JvM_'mJm Ly @Y9b K| EYLp ?u (c :p I~e\"~T FZ 3oDo @Z :Z(Z" + " :Z 2{ &X H` Ma IZ +t H~U GQ\"Q 4Z X AY 2aLb FaKa 8~d 3YNlN_ 8WEW " + "DX KV*W0o-W KW%[ 1Z Z,Z!Z+Z Z,Z!Z+Z Z,Z!Z;Z-~T'~P M~T J~T I~S I~S 7Z !Z !Z \"Z :~R GY.` K| B| C{ B{ B{ FS\"S$YM" + "{ Bz @z B{ B{ 1Z 2Z #YIq GqLY EqLY EqLX CqMY ErMY EqLY*sF{$u ?{ B{ B{ B{ 5Y Y NX Y -t AX0X Bu ;u pLX CpLX CpLX BoLY 6] 6YMp 1] Lv >w =v =v >w 0X _ #T ;X ?W MV LW LV 4X.Y ?n >Y3Z 7_ 1~Z " + " 't +Z *W?X 8y @X1j)vG] 5X MY EX NZ GZ *X !p <} I~S Iz Z By 6r 5Z )w As (Z \"[ " + " 5Z AX HZ Z%~ 9|$~P >~S FZ ~P\"Z(Z :Z \"Z 4Z-] K~Q)Y JY(Y.` Jy AZ x EZ)Z#~P 0Y /x 3_ =_0_%Z([ ;Z =~a AX " + ">X !Y JpLY FYLn 7s @nKY @y 7Y +kJY GY1Y 5Y NX 0X5\\ 6Y FY3Y2Y+Y1Y Ar @YLn =nKX ;Y *w /i x ?x @y 0Z 2Z #YIp EoKY DoKY DoKX BoLY DpLY DoKY)qCy#t =y @y @y @y 5Y Y NX Y ,r @X0X As 9s :r :s 9s 7z <" + "nKX BnKX BnKX BnKY 6] 6YLn 0\\ Jt ;s :t ;t ;s .X N] !R 9V >W NX LU KU 3X.Y >l =Y2Y 7_ /~X " + " %p )Z *W?W 4u @X/i(tE] 6Y NX DX NZ GZ *X m :} I~S Iy NZ Bw 2o 5Z 'u @r 'Z \"Z " + " 4Z AY J[ Z%} 6x\"} <~S FZ N| Z(Z :Z \"Z 4Z,] L~Q)Y JY(Y.` Hv @Z Mu DZ)[$~ /Y .u 0^ =^/_&['Z ;Z =~a AX >X" + " !Y InKY FYKl 5r ?lJY >w 7Y )hIY GY1Y 5Y NX 0X4\\ 7Y FY3Y2Y+Y1Y @p ?YKl ;lJX ;Y *v -h ;kJY 7_ 7]7\\ J[2" + "[ 7\\ 5~P 2Y X Y AkE] Nz :i .p 7u EY1Y 5[ 7Y,Y KYMiL_%iGj Hu >Y8a Hv BYJl :p $a 7k H~f\"~T FZ 3oDo @Z " + ":Z(Z :Z /u #X F\\ I] GZ )r H~U *Z X AY /p >o 4~d 3YMiK^ 8WEW EX " + "JV+W/o/X JW&Z 0[ Z-Z NZ-[ [.Z NZ,Z NZ.Z NZ=Z,~T$x I~T J~T I~S I~S 7Z !Z !Z \"Z :| BY-_ Hv p %Z \"Z " + " 4Z @X JZ MZ&{ 3u z 9~S FZ Lx MZ(Z :Z \"Z 4Z+] M~Q)Y JY(Y-_ Fr >Z Lr BZ(Z!y -Y -s /] <^.]&[&[ m >YJj 8iIX ;Y *u *f :iIY 7_ 6\\7" + "\\ K[0Z 6Z 4~P 2Y X Y ?hC\\ NYMm 8f +m 3s EY1Y 5[ 8Z,Y KYLgJ^$gEh Fs =Y8a Fr @YIi 7m !` 6i G~g#~T FZ 3o" + "Do @Z :Z(Z :Z .s \"X EZ G[ FZ 'p H~U *Z X AY ,k :k 2~d 3YLgJ^ 8WEW " + " EW IV,X/o/W IW&Z 0Z MZ/[ NZ-Z MZ.Z N[.Z MZ.Z MZ>Z,~T\"t G~T J~T I~S I~S 7Z !Z !Z \"Z :y ?Y-_ Fr 8r 9r :s :r " + " AXEr :r 8r :s :s -Z 2Z #YIn AkIY BkIY BkIX @jIY BkIY BkIY'l=t Mq :t ;t ;t ;t 3Y Y NX Y *m =X0X >m 3m 5n 5m" + " 3m 6XLm 7iHX @iHX @jIX @jIY 5[ 5YJj -Z El 3k 2l 3l 4l *X N\\ 5U ?Y Y KR HQ 1X.Y 9b 9Y1Z 7" + "] )~S \"j &Z +X@X -h ;X+c!l?\\ 6X Y DX Z FZ +X Kh 8} I~S Fr JZ As ,i 3[ $n ;m " + "#Z \"Y 3Z ?X KZ MZ&x -p Mu 4~S FZ Js JZ(Z :Z \"Z 4Z*] N~Q)Y JY(Y-_ Dn gB[ NYLj 5d (j 0q EY1Y 5Z 7Y+Z LYKdG]\"dBd Bo ;Y7` Dn >YHg 4i L^ 4e " + "E~g#~T FZ 3oDo @Z :Z(Z :Z ,n NX DX EY EZ %m G~U *Z X BZ )e 4e /~d 3YKeH] 8" + "WEW FW HV,W.o0X IW'Z /Z MZ/Z LZ.Z MZ/[ MZ.Z MZ/[ MZ>Y+~T p E~T J~T I~S I~S 7Z !Z !Z \"Z :u ;Y,^ Dn 4" + "n 5n 6o 6n @XBm 5n 4n 6o 6o +Z 2Z #YIl =gGY AhGY AhGX ?hHY @hHY @gGY%i:o Hm 7p 6o 6p 7p 1Y Y NX Y (i ;X0X " + "fGX >fGX >fGY 4Y 4YHf +Z Bg /g .g -g /g (X M[ 5T ?Z !Z JP 'X.Y 5" + "[ 6Y0Y 7] &~P Ne $Z +W?X '] 6W)a Mh<\\ 7Y !X CX Y EZ +X Id 6} I~S Cm HZ =l 'e " + "1Z i 6h !Z #Z 3Z ?Y M[ M['s &k Jo .~S FZ Gm GZ(Z :Z \"Z 4Z)] ~Q)Y JY(Y,^ Bi 9Z Gl AZ'Z Jm (Y (i )\\ " + ";].]'[#Z =Z =~a AX =X \"Y DdFY FYFb *h 6cFY 8j 0Y \"YAY GY1Y 5Y NX 0X1\\ :Y FY3Y2Y+Y1Y ;f :YFb 1cFX ;Y" + " $k ` 7cFY 6] 5[5Z KZ-[ 8Y 3~P 2Y X Y ;b=X NYJe 0` $e +l BY1Y 4Y 7Y*Y LYIaE[ b@a >k 9Y6_ Ah ;YFc 0e " + "FZ 2a D~i$~T FZ 3oDo @Z :Z(Z :Z )i LX CV CW DZ #h D~U *Z X -R9Z #[ *[ *~d 3" + "YIaE\\ 8WEW GX HV-W-o0W HW'Z 0Z L[0Z LZ/[ LZ0Z LZ/[ LZ0Z LZ?Z+~T Lj B~T J~T I~S I~S 7Z !Z !Z \"Z :o " + "5Y,^ Ai /h 0i 0i 0i >W?i 1j 0j 1j 1i (Z 2Z #YGh 9cEY ?dEY ?dEX =dFY >dFY >cEY#d5j Ch 1j 1j 1j 1j -Y Y NX Y" + " &e 9X0X :e ,f -f -e ,f 4XFe 0cEX a NU CZ N` 9X -T<[ " + " LYG]BX 5WEW %U HW NX MX GZ (d +b (b )b )a )b 9V;a " + ")c *c *c *c =a 4_ &^ %^ $^ &_ &_ :_/c RM] !R Z 5\\ " + " 9X ;X $Y HY NY 0Y 'X NY BY X !Y " + ":Y 8Y 4Y *Y 1Y EX 3Y CZ IU 3X -p " + " IY 8WEW #V &Z MV " + " 0U 'P ;Y 2Y >Z 8X " + " MT *X &X 9X DX " + " 5X ?\\%W ?Z 4\\ :X ;X $Y " + " IZ NY 0Y 'X NY BZ !X !Y :Y 8Y 4Y *Y 1Y EX 3Y " + " CZ IU 3X -o HY 8WEW \"V " + " 'Z LU 0V " + " CZ 2Y >Y 7X " + " MT )X 'X 9X DX 5W <\\(X ?" + "Z 3\\ ;Y e GX 2f KZ LY 0Y 'X !Y >" + "\\ %X &] 9Y 8Y 4Y *Y 1Y EX 3Y CZ IU 3" + "X $^ @Y 8WEW !V '\\:V ;V " + " 1W GZ 0Y @Z " + " FWHX LT 'X +W 7W " + " V 5b?c A[ -\\ ?e !f " + " f /X 0g 9Y 8Y 4Y *Y " + " 1Y EX 3Y CZ IU 3X 5Y " + " NV &\\=X ;V " + "1W GY /Y AZ EWHX " + " LT &W ,X 7V V 3~T " + " A] ,\\ @e !f d " + " %e -Y Nd @c " + " (m @c " + " +u $b -Y 'X 0d 2^ /X 0_ 1Y 8Y 4Y *Y " + " 1Y EX 3Y CZ IT 2X 5Y " + "-c !q Hd >c " + " $d ,Y Nd ?b " + " %g =" + "b *t #a ,Y 'X 0d " + " ,X /X 0Y +Y 8Y 4Y *Y 1Y EX 3Y CZ '" + "X 5Y -c Nm Fc " + " =c $c +Y Nc " + " >a " + " M\\ 8a \"~Y 1" + "r !` +Y 'X 0c 1X 1Y 8Y 4Y *Y 1Y EX 3Y " + " CZ &W 5Y -b Lj " + " Db std::printf(). + \note If configuration macro \c cimg_strict_warnings is set, this function throws a + \c CImgWarningException instead. + \warning As the first argument is a format string, it is highly recommended to write + \code + cimg::warn("%s",warning_message); + \endcode + instead of + \code + cimg::warn(warning_message); + \endcode + if \c warning_message can be arbitrary, to prevent nasty memory access. + **/ + inline void warn(const char *const format, ...) { + if (cimg::exception_mode()>=1) { + char *const message = new char[16384]; + std::va_list ap; + va_start(ap,format); + cimg_vsnprintf(message,16384,format,ap); + va_end(ap); +#ifdef cimg_strict_warnings + throw CImgWarningException(message); +#else + std::fprintf(cimg::output(),"\n%s[CImg] *** Warning ***%s%s\n",cimg::t_red,cimg::t_normal,message); +#endif + delete[] message; + } + } + + // Execute an external system command. + /** + \param command C-string containing the command line to execute. + \param module_name Module name. + \return Status value of the executed command, whose meaning is OS-dependent. + \note This function is similar to std::system() + but it does not open an extra console windows + on Windows-based systems. + **/ + inline int system(const char *const command, const char *const module_name=0, const bool is_verbose=false) { + cimg::unused(module_name); +#ifdef cimg_no_system_calls + return -1; +#else + if (is_verbose) return std::system(command); +#if cimg_OS==1 + const unsigned int l = (unsigned int)std::strlen(command); + if (l) { + char *const ncommand = new char[l + 24]; + std::memcpy(ncommand,command,l); + std::strcpy(ncommand + l," >/dev/null 2>&1"); // Make command silent + const int out_val = std::system(ncommand); + delete[] ncommand; + return out_val; + } else return -1; +#elif cimg_OS==2 + PROCESS_INFORMATION pi; + STARTUPINFOA si; + std::memset(&pi,0,sizeof(PROCESS_INFORMATION)); + std::memset(&si,0,sizeof(STARTUPINFO)); + GetStartupInfoA(&si); + si.cb = sizeof(si); + si.wShowWindow = SW_HIDE; + si.dwFlags |= SW_HIDE | STARTF_USESHOWWINDOW; + const BOOL res = CreateProcessA((LPCSTR)module_name,(LPSTR)command,0,0,FALSE,0,0,0,&si,&pi); + if (res) { + WaitForSingleObject(pi.hProcess,INFINITE); + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + return 0; + } else { + char* lpMsgBuf; + + // Get the error message. + DWORD errorCode = GetLastError(); + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + 0,errorCode,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,0); + cimg::warn("cimg::system() : Command '%s' (module name '%s) failed with error %lu: %s", + module_name==0?"(null)":module_name, + command==0?"(null)":command, + errorCode,lpMsgBuf); + return -1; + } +#else + return std::system(command); +#endif +#endif + } + + //! Return a reference to a temporary variable of type T. + template + inline T& temporary(const T&) { + static T temp; + return temp; + } + + //! Exchange values of variables \c a and \c b. + template + inline void swap(T& a, T& b) { T t = a; a = b; b = t; } + + //! Exchange values of variables (\c a1,\c a2) and (\c b1,\c b2). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2) { + cimg::swap(a1,b1); cimg::swap(a2,b2); + } + + //! Exchange values of variables (\c a1,\c a2,\c a3) and (\c b1,\c b2,\c b3). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3) { + cimg::swap(a1,b1,a2,b2); cimg::swap(a3,b3); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a4) and (\c b1,\c b2,...,\c b4). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4) { + cimg::swap(a1,b1,a2,b2,a3,b3); cimg::swap(a4,b4); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a5) and (\c b1,\c b2,...,\c b5). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4); cimg::swap(a5,b5); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a6) and (\c b1,\c b2,...,\c b6). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5); cimg::swap(a6,b6); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a7) and (\c b1,\c b2,...,\c b7). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6, + T7& a7, T7& b7) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5,a6,b6); cimg::swap(a7,b7); + } + + //! Exchange values of variables (\c a1,\c a2,...,\c a8) and (\c b1,\c b2,...,\c b8). + template + inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6, + T7& a7, T7& b7, T8& a8, T8& b8) { + cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5,a6,b6,a7,b7); cimg::swap(a8,b8); + } + + //! Return the endianness of the current architecture. + /** + \return \c false for Little Endian or \c true for Big Endian. + **/ + inline bool endianness() { + const int x = 1; + return ((unsigned char*)&x)[0]?false:true; + } + + //! Reverse endianness of all elements in a memory buffer. + /** + \param[in,out] buffer Memory buffer whose endianness must be reversed. + \param size Number of buffer elements to reverse. + **/ + template + inline void invert_endianness(T* const buffer, const cimg_ulong size) { + if (size) switch (sizeof(T)) { + case 1 : break; + case 2 : { + for (unsigned short *ptr = (unsigned short*)buffer + size; ptr>(unsigned short*)buffer; ) { + const unsigned short val = *(--ptr); + *ptr = (unsigned short)((val>>8) | ((val<<8))); + } + } break; + case 4 : { + for (unsigned int *ptr = (unsigned int*)buffer + size; ptr>(unsigned int*)buffer; ) { + const unsigned int val = *(--ptr); + *ptr = (val>>24) | ((val>>8)&0xff00) | ((val<<8)&0xff0000) | (val<<24); + } + } break; + case 8 : { + const cimg_uint64 + m0 = (cimg_uint64)0xff, m1 = m0<<8, m2 = m0<<16, m3 = m0<<24, + m4 = m0<<32, m5 = m0<<40, m6 = m0<<48, m7 = m0<<56; + for (cimg_uint64 *ptr = (cimg_uint64*)buffer + size; ptr>(cimg_uint64*)buffer; ) { + const cimg_uint64 val = *(--ptr); + *ptr = (((val&m7)>>56) | ((val&m6)>>40) | ((val&m5)>>24) | ((val&m4)>>8) | + ((val&m3)<<8) |((val&m2)<<24) | ((val&m1)<<40) | ((val&m0)<<56)); + } + } break; + default : { + for (T* ptr = buffer + size; ptr>buffer; ) { + unsigned char *pb = (unsigned char*)(--ptr), *pe = pb + sizeof(T); + for (int i = 0; i<(int)sizeof(T)/2; ++i) swap(*(pb++),*(--pe)); + } + } + } + } + inline void invert_endianness(bool* const, const cimg_ulong) {} + inline void invert_endianness(unsigned char* const, const cimg_ulong) {} + inline void invert_endianness(char* const, const cimg_ulong) {} + + //! Reverse endianness of a single variable. + /** + \param[in,out] a Variable to reverse. + \return Reference to reversed variable. + **/ + template + inline T& invert_endianness(T& a) { + invert_endianness(&a,1); + return a; + } + + // Conversion functions to get more precision when trying to store unsigned ints values as floats. + inline unsigned int float2uint(const float f) { + int tmp = 0; + std::memcpy(&tmp,&f,sizeof(float)); + if (tmp>=0) return (unsigned int)f; + unsigned int u; + // use memcpy instead of assignment to avoid undesired optimizations by C++-compiler. + std::memcpy(&u,&f,sizeof(float)); + return ((u)<<2)>>2; // set sign & exponent bit to 0 + } + + inline float uint2float(const unsigned int u) { + if (u<(1U<<19)) return (float)u; // Consider safe storage of unsigned int as floats until 19bits (i.e 524287) + float f; + const unsigned int v = u|(3U<<(8*sizeof(unsigned int)-2)); // set sign & exponent bit to 1 + // use memcpy instead of simple assignment to avoid undesired optimizations by C++-compiler. + std::memcpy(&f,&v,sizeof(float)); + return f; + } + + //! Return the value of a system timer, with a millisecond precision. + /** + \note The timer does not necessarily starts from \c 0. + **/ + inline cimg_uint64 time() { +#if cimg_OS==1 + struct timeval st_time; + gettimeofday(&st_time,0); + return (cimg_uint64)st_time.tv_sec*1000 + (cimg_uint64)st_time.tv_usec/1000; +#elif cimg_OS==2 + ULARGE_INTEGER ul; + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + ul.LowPart = ft.dwLowDateTime; + ul.HighPart = ft.dwHighDateTime; + return (cimg_uint64)ul.QuadPart/10000; +#else + return 0; +#endif + } + + // Implement a tic/toc mechanism to display elapsed time of algorithms. + inline cimg_uint64 tictoc(const bool is_tic); + + //! Start tic/toc timer for time measurement between code instructions. + /** + \return Current value of the timer (same value as time()). + **/ + inline cimg_uint64 tic() { + return cimg::tictoc(true); + } + + //! End tic/toc timer and displays elapsed time from last call to tic(). + /** + \return Time elapsed (in ms) since last call to tic(). + **/ + inline cimg_uint64 toc() { + return cimg::tictoc(false); + } + + //! Sleep for a given numbers of milliseconds. + /** + \param milliseconds Number of milliseconds to wait for. + \note This function frees the CPU resources during the sleeping time. + It can be used to temporize your program properly, without wasting CPU time. + **/ + inline void sleep(const unsigned int milliseconds) { +#if cimg_OS==1 + struct timespec tv; + tv.tv_sec = milliseconds/1000; + tv.tv_nsec = (milliseconds%1000)*1000000; + nanosleep(&tv,0); +#elif cimg_OS==2 + Sleep(milliseconds); +#else + cimg::unused(milliseconds); +#endif + } + + inline unsigned int wait(const unsigned int milliseconds, cimg_uint64 *const p_timer) { + if (!*p_timer) *p_timer = cimg::time(); + const cimg_uint64 current_time = cimg::time(); + if (current_time<*p_timer || current_time>=*p_timer + milliseconds) { *p_timer = current_time; return 0; } + const unsigned int time_diff = (unsigned int)(*p_timer + milliseconds - current_time); + *p_timer = current_time + time_diff; + cimg::sleep(time_diff); + return time_diff; + } + + //! Wait for a given number of milliseconds since the last call to wait(). + /** + \param milliseconds Number of milliseconds to wait for. + \return Number of milliseconds elapsed since the last call to wait(). + \note Same as sleep() with a waiting time computed with regard to the last call + of wait(). It may be used to temporize your program properly, without wasting CPU time. + **/ + inline unsigned int wait(const unsigned int milliseconds) { + cimg::mutex(3); + static cimg_uint64 timer = cimg::time(); + cimg::mutex(3,0); + return cimg::wait(milliseconds,&timer); + } + + // Custom random number generator (allow re-entrance). + inline cimg_uint64& rng() { // Used as a shared global number for rng + static cimg_uint64 rng = 0xB16B00B5U; + return rng; + } + + inline unsigned int _rand(cimg_uint64 *const p_rng) { + *p_rng = *p_rng*1103515245 + 12345U; + return (unsigned int)*p_rng; + } + + inline unsigned int _rand() { + cimg::mutex(4); + const unsigned int res = cimg::_rand(&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline void srand(cimg_uint64 *const p_rng) { +#if cimg_OS==1 + *p_rng = cimg::time() + (cimg_uint64)getpid(); +#elif cimg_OS==2 + *p_rng = cimg::time() + (cimg_uint64)_getpid(); +#endif + } + + inline void srand() { + cimg::mutex(4); + cimg::srand(&cimg::rng()); + cimg::mutex(4,0); + } + + inline void srand(const cimg_uint64 seed) { + cimg::mutex(4); + cimg::rng() = seed; + cimg::mutex(4,0); + } + + inline double rand(const double val_min, const double val_max, cimg_uint64 *const p_rng) { + const double val = cimg::_rand(p_rng)/(double)~0U; + return val_min + (val_max - val_min)*val; + } + + inline double rand(const double val_min, const double val_max) { + cimg::mutex(4); + const double res = cimg::rand(val_min,val_max,&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline double rand(const double val_max, cimg_uint64 *const p_rng) { + const double val = cimg::_rand(p_rng)/(double)~0U; + return val_max*val; + } + + inline double rand(const double val_max=1) { + cimg::mutex(4); + const double res = cimg::rand(val_max,&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline double grand(cimg_uint64 *const p_rng) { + double x1, w; + do { + const double x2 = cimg::rand(-1,1,p_rng); + x1 = cimg::rand(-1,1,p_rng); + w = x1*x1 + x2*x2; + } while (w<=0 || w>=1.); + return x1*std::sqrt((-2*std::log(w))/w); + } + + inline double grand() { + cimg::mutex(4); + const double res = cimg::grand(&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + inline unsigned int prand(const double z, cimg_uint64 *const p_rng) { + if (z<=1.e-10) return 0; + if (z>100) return (unsigned int)((std::sqrt(z) * cimg::grand(p_rng)) + z); + unsigned int k = 0; + const double y = std::exp(-z); + for (double s = 1.; s>=y; ++k) s*=cimg::rand(1,p_rng); + return k - 1; + } + + inline unsigned int prand(const double z) { + cimg::mutex(4); + const unsigned int res = cimg::prand(z,&cimg::rng()); + cimg::mutex(4,0); + return res; + } + + //! Cut (i.e. clamp) value in specified interval. + template + inline T cut(const T& val, const t& val_min, const t& val_max) { + return val<=val_min?(T)val_min:val>=val_max?(T)val_max:val; + } + + //! Bitwise-rotate value on the left. + template + inline T rol(const T& a, const unsigned int n=1) { + return n?(T)((a<>((sizeof(T)<<3) - n))):a; + } + + inline float rol(const float a, const unsigned int n=1) { + return (float)rol((int)a,n); + } + + inline double rol(const double a, const unsigned int n=1) { + return (double)rol((cimg_long)a,n); + } + + inline double rol(const long double a, const unsigned int n=1) { + return (double)rol((cimg_long)a,n); + } + +#ifdef cimg_use_half + inline half rol(const half a, const unsigned int n=1) { + return (half)rol((int)a,n); + } +#endif + + //! Bitwise-rotate value on the right. + template + inline T ror(const T& a, const unsigned int n=1) { + return n?(T)((a>>n)|(a<<((sizeof(T)<<3) - n))):a; + } + + inline float ror(const float a, const unsigned int n=1) { + return (float)ror((int)a,n); + } + + inline double ror(const double a, const unsigned int n=1) { + return (double)ror((cimg_long)a,n); + } + + inline double ror(const long double a, const unsigned int n=1) { + return (double)ror((cimg_long)a,n); + } + +#ifdef cimg_use_half + inline half ror(const half a, const unsigned int n=1) { + return (half)ror((int)a,n); + } +#endif + + //! Return absolute value of a value. + template + inline T abs(const T& a) { + return a>=0?a:-a; + } + inline bool abs(const bool a) { + return a; + } + inline int abs(const unsigned char a) { + return (int)a; + } + inline int abs(const unsigned short a) { + return (int)a; + } + inline int abs(const unsigned int a) { + return (int)a; + } + inline int abs(const int a) { + return std::abs(a); + } + inline cimg_int64 abs(const cimg_uint64 a) { + return (cimg_int64)a; + } + inline double abs(const double a) { + return std::fabs(a); + } + inline float abs(const float a) { + return (float)std::fabs((double)a); + } + + //! Return hyperbolic arcosine of a value. + inline double acosh(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::acosh(x); +#else + return std::log(x + std::sqrt(x*x - 1)); +#endif + } + + //! Return hyperbolic arcsine of a value. + inline double asinh(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::asinh(x); +#else + return std::log(x + std::sqrt(x*x + 1)); +#endif + } + + //! Return hyperbolic arctangent of a value. + inline double atanh(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::atanh(x); +#else + return 0.5*std::log((1. + x)/(1. - x)); +#endif + } + + //! Return the sinc of a given value. + inline double sinc(const double x) { + return x?std::sin(x)/x:1; + } + + //! Return base-2 logarithm of a value. + inline double log2(const double x) { +#if cimg_use_cpp11==1 && !defined(_MSC_VER) + return std::log2(x); +#else + const double base2 = std::log(2.); + return std::log(x)/base2; +#endif + } + + //! Return square of a value. + template + inline T sqr(const T& val) { + return val*val; + } + + //! Return cubic root of a value. + template + inline double cbrt(const T& x) { +#if cimg_use_cpp11==1 + return std::cbrt(x); +#else + return x>=0?std::pow((double)x,1./3):-std::pow(-(double)x,1./3); +#endif + } + + template + inline T pow3(const T& val) { + return val*val*val; + } + template + inline T pow4(const T& val) { + return val*val*val*val; + } + + //! Return the minimum between three values. + template + inline t min(const t& a, const t& b, const t& c) { + return std::min(std::min(a,b),c); + } + + //! Return the minimum between four values. + template + inline t min(const t& a, const t& b, const t& c, const t& d) { + return std::min(std::min(a,b),std::min(c,d)); + } + + //! Return the minabs between two values. + template + inline t minabs(const t& a, const t& b) { + return cimg::abs(b) + inline t minabs(const t& a, const t& b, const t& abs_b) { + return abs_b + inline t max(const t& a, const t& b, const t& c) { + return std::max(std::max(a,b),c); + } + + //! Return the maximum between four values. + template + inline t max(const t& a, const t& b, const t& c, const t& d) { + return std::max(std::max(a,b),std::max(c,d)); + } + + //! Return the maxabs between two values. + template + inline t maxabs(const t& a, const t& b) { + return cimg::abs(b)>cimg::abs(a)?b:a; + } + + template + inline t maxabs(const t& a, const t& b, const t& abs_b) { + return abs_b>cimg::abs(a)?b:a; + } + + //! Return the sign of a value. + template + inline T sign(const T& x) { + return (T)(cimg::type::is_nan(x)?0:x<0?-1:x>0); + } + + //! Return the nearest power of 2 higher than given value. + template + inline cimg_uint64 nearest_pow2(const T& x) { + cimg_uint64 i = 1; + while (x>i) i<<=1; + return i; + } + + //! Return the modulo of a value. + /** + \param x Input value. + \param m Modulo value. + \note This modulo function accepts negative and floating-points modulo numbers, as well as variables of any type. + **/ + template + inline T mod(const T& x, const T& m) { + const double dx = (double)x, dm = (double)m; + if (!cimg::type::is_finite(dm)) return x; + if (cimg::type::is_finite(dx)) return (T)(dx - dm * std::floor(dx / dm)); + return (T)0; + } + inline int mod(const bool x, const bool m) { + return m?(x?1:0):0; + } + inline int mod(const unsigned char x, const unsigned char m) { + return x%m; + } + inline int mod(const char x, const char m) { +#if defined(CHAR_MAX) && CHAR_MAX==255 + return x%m; +#else + return x>=0?x%m:(x%m?m + x%m:0); +#endif + } + inline int mod(const unsigned short x, const unsigned short m) { + return x%m; + } + inline int mod(const short x, const short m) { + return x>=0?x%m:(x%m?m + x%m:0); + } + inline int mod(const unsigned int x, const unsigned int m) { + return (int)(x%m); + } + inline int mod(const int x, const int m) { + return x>=0?x%m:(x%m?m + x%m:0); + } + inline cimg_int64 mod(const cimg_uint64 x, const cimg_uint64 m) { + return x%m; + } + inline cimg_int64 mod(const cimg_int64 x, const cimg_int64 m) { + return x>=0?x%m:(x%m?m + x%m:0); + } + + //! Return the min-mod of two values. + /** + \note minmod(\p a,\p b) is defined to be: + - minmod(\p a,\p b) = min(\p a,\p b), if \p a and \p b have the same sign. + - minmod(\p a,\p b) = 0, if \p a and \p b have different signs. + **/ + template + inline T minmod(const T& a, const T& b) { + return a*b<=0?0:(a>0?(a + inline T round(const T& x) { + return (T)std::floor((_cimg_Tfloat)x + 0.5f); + } + + template + inline int uiround(const T x) { + return cimg::type::is_float()?(int)(x + 0.5f):(int)x; + } + + //! Return rounded value. + /** + \param x Value to be rounded. + \param y Rounding precision. + \param rounding_type Type of rounding operation (\c 0 = nearest, \c -1 = backward, \c 1 = forward). + \return Rounded value, having the same type as input value \c x. + **/ + template + inline T round(const T& x, const double y, const int rounding_type=0) { + if (y<=0) return x; + if (y==1) switch (rounding_type) { + case 0 : return cimg::round(x); + case 1 : return (T)std::ceil((_cimg_Tfloat)x); + default : return (T)std::floor((_cimg_Tfloat)x); + } + const double sx = (double)x/y, floor = std::floor(sx), delta = sx - floor; + return (T)(y*(rounding_type<0?floor:rounding_type>0?std::ceil(sx):delta<0.5?floor:std::ceil(sx))); + } + + // Code to compute fast median from 2,3,5,7,9,13,25 and 49 values. + // (contribution by RawTherapee: http://rawtherapee.com/). + template + inline T median(T val0, T val1) { + return (val0 + val1)/2; + } + + template + inline T median(T val0, T val1, T val2) { + return std::max(std::min(val0,val1),std::min(val2,std::max(val0,val1))); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4) { + T tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val3,val4); val4 = std::max(val3,val4); + val3 = std::max(val0,tmp); val1 = std::min(val1,val4); tmp = std::min(val1,val2); val2 = std::max(val1,val2); + val1 = tmp; tmp = std::min(val2,val3); + return std::max(val1,tmp); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6) { + T tmp = std::min(val0,val5); + val5 = std::max(val0,val5); val0 = tmp; tmp = std::min(val0,val3); val3 = std::max(val0,val3); val0 = tmp; + tmp = std::min(val1,val6); val6 = std::max(val1,val6); val1 = tmp; tmp = std::min(val2,val4); + val4 = std::max(val2,val4); val2 = tmp; val1 = std::max(val0,val1); tmp = std::min(val3,val5); + val5 = std::max(val3,val5); val3 = tmp; tmp = std::min(val2,val6); val6 = std::max(val2,val6); + val3 = std::max(tmp,val3); val3 = std::min(val3,val6); tmp = std::min(val4,val5); val4 = std::max(val1,tmp); + tmp = std::min(val1,tmp); val3 = std::max(tmp,val3); + return std::min(val3,val4); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6, T val7, T val8) { + T tmp = std::min(val1,val2); + val2 = std::max(val1,val2); val1 = tmp; tmp = std::min(val4,val5); + val5 = std::max(val4,val5); val4 = tmp; tmp = std::min(val7,val8); + val8 = std::max(val7,val8); val7 = tmp; tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val3,val4); + val4 = std::max(val3,val4); val3 = tmp; tmp = std::min(val6,val7); + val7 = std::max(val6,val7); val6 = tmp; tmp = std::min(val1,val2); + val2 = std::max(val1,val2); val1 = tmp; tmp = std::min(val4,val5); + val5 = std::max(val4,val5); val4 = tmp; tmp = std::min(val7,val8); + val8 = std::max(val7,val8); val3 = std::max(val0,val3); val5 = std::min(val5,val8); + val7 = std::max(val4,tmp); tmp = std::min(val4,tmp); val6 = std::max(val3,val6); + val4 = std::max(val1,tmp); val2 = std::min(val2,val5); val4 = std::min(val4,val7); + tmp = std::min(val4,val2); val2 = std::max(val4,val2); val4 = std::max(val6,tmp); + return std::min(val4,val2); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6, T val7, T val8, T val9, T val10, T val11, + T val12) { + T tmp = std::min(val1,val7); + val7 = std::max(val1,val7); val1 = tmp; tmp = std::min(val9,val11); val11 = std::max(val9,val11); val9 = tmp; + tmp = std::min(val3,val4); val4 = std::max(val3,val4); val3 = tmp; tmp = std::min(val5,val8); + val8 = std::max(val5,val8); val5 = tmp; tmp = std::min(val0,val12); val12 = std::max(val0,val12); + val0 = tmp; tmp = std::min(val2,val6); val6 = std::max(val2,val6); val2 = tmp; tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val2,val3); val3 = std::max(val2,val3); val2 = tmp; + tmp = std::min(val4,val6); val6 = std::max(val4,val6); val4 = tmp; tmp = std::min(val8,val11); + val11 = std::max(val8,val11); val8 = tmp; tmp = std::min(val7,val12); val12 = std::max(val7,val12); val7 = tmp; + tmp = std::min(val5,val9); val9 = std::max(val5,val9); val5 = tmp; tmp = std::min(val0,val2); + val2 = std::max(val0,val2); val0 = tmp; tmp = std::min(val3,val7); val7 = std::max(val3,val7); val3 = tmp; + tmp = std::min(val10,val11); val11 = std::max(val10,val11); val10 = tmp; tmp = std::min(val1,val4); + val4 = std::max(val1,val4); val1 = tmp; tmp = std::min(val6,val12); val12 = std::max(val6,val12); val6 = tmp; + tmp = std::min(val7,val8); val8 = std::max(val7,val8); val7 = tmp; val11 = std::min(val11,val12); + tmp = std::min(val4,val9); val9 = std::max(val4,val9); val4 = tmp; tmp = std::min(val6,val10); + val10 = std::max(val6,val10); val6 = tmp; tmp = std::min(val3,val4); val4 = std::max(val3,val4); val3 = tmp; + tmp = std::min(val5,val6); val6 = std::max(val5,val6); val5 = tmp; val8 = std::min(val8,val9); + val10 = std::min(val10,val11); tmp = std::min(val1,val7); val7 = std::max(val1,val7); val1 = tmp; + tmp = std::min(val2,val6); val6 = std::max(val2,val6); val2 = tmp; val3 = std::max(val1,val3); + tmp = std::min(val4,val7); val7 = std::max(val4,val7); val4 = tmp; val8 = std::min(val8,val10); + val5 = std::max(val0,val5); val5 = std::max(val2,val5); tmp = std::min(val6,val8); val8 = std::max(val6,val8); + val5 = std::max(val3,val5); val7 = std::min(val7,val8); val6 = std::max(val4,tmp); tmp = std::min(val4,tmp); + val5 = std::max(tmp,val5); val6 = std::min(val6,val7); + return std::max(val5,val6); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, + T val5, T val6, T val7, T val8, T val9, + T val10, T val11, T val12, T val13, T val14, + T val15, T val16, T val17, T val18, T val19, + T val20, T val21, T val22, T val23, T val24) { + T tmp = std::min(val0,val1); + val1 = std::max(val0,val1); val0 = tmp; tmp = std::min(val3,val4); val4 = std::max(val3,val4); + val3 = tmp; tmp = std::min(val2,val4); val4 = std::max(val2,val4); val2 = std::min(tmp,val3); + val3 = std::max(tmp,val3); tmp = std::min(val6,val7); val7 = std::max(val6,val7); val6 = tmp; + tmp = std::min(val5,val7); val7 = std::max(val5,val7); val5 = std::min(tmp,val6); val6 = std::max(tmp,val6); + tmp = std::min(val9,val10); val10 = std::max(val9,val10); val9 = tmp; tmp = std::min(val8,val10); + val10 = std::max(val8,val10); val8 = std::min(tmp,val9); val9 = std::max(tmp,val9); + tmp = std::min(val12,val13); val13 = std::max(val12,val13); val12 = tmp; tmp = std::min(val11,val13); + val13 = std::max(val11,val13); val11 = std::min(tmp,val12); val12 = std::max(tmp,val12); + tmp = std::min(val15,val16); val16 = std::max(val15,val16); val15 = tmp; tmp = std::min(val14,val16); + val16 = std::max(val14,val16); val14 = std::min(tmp,val15); val15 = std::max(tmp,val15); + tmp = std::min(val18,val19); val19 = std::max(val18,val19); val18 = tmp; tmp = std::min(val17,val19); + val19 = std::max(val17,val19); val17 = std::min(tmp,val18); val18 = std::max(tmp,val18); + tmp = std::min(val21,val22); val22 = std::max(val21,val22); val21 = tmp; tmp = std::min(val20,val22); + val22 = std::max(val20,val22); val20 = std::min(tmp,val21); val21 = std::max(tmp,val21); + tmp = std::min(val23,val24); val24 = std::max(val23,val24); val23 = tmp; tmp = std::min(val2,val5); + val5 = std::max(val2,val5); val2 = tmp; tmp = std::min(val3,val6); val6 = std::max(val3,val6); val3 = tmp; + tmp = std::min(val0,val6); val6 = std::max(val0,val6); val0 = std::min(tmp,val3); val3 = std::max(tmp,val3); + tmp = std::min(val4,val7); val7 = std::max(val4,val7); val4 = tmp; tmp = std::min(val1,val7); + val7 = std::max(val1,val7); val1 = std::min(tmp,val4); val4 = std::max(tmp,val4); tmp = std::min(val11,val14); + val14 = std::max(val11,val14); val11 = tmp; tmp = std::min(val8,val14); val14 = std::max(val8,val14); + val8 = std::min(tmp,val11); val11 = std::max(tmp,val11); tmp = std::min(val12,val15); + val15 = std::max(val12,val15); val12 = tmp; tmp = std::min(val9,val15); val15 = std::max(val9,val15); + val9 = std::min(tmp,val12); val12 = std::max(tmp,val12); tmp = std::min(val13,val16); + val16 = std::max(val13,val16); val13 = tmp; tmp = std::min(val10,val16); val16 = std::max(val10,val16); + val10 = std::min(tmp,val13); val13 = std::max(tmp,val13); tmp = std::min(val20,val23); + val23 = std::max(val20,val23); val20 = tmp; tmp = std::min(val17,val23); val23 = std::max(val17,val23); + val17 = std::min(tmp,val20); val20 = std::max(tmp,val20); tmp = std::min(val21,val24); + val24 = std::max(val21,val24); val21 = tmp; tmp = std::min(val18,val24); val24 = std::max(val18,val24); + val18 = std::min(tmp,val21); val21 = std::max(tmp,val21); tmp = std::min(val19,val22); + val22 = std::max(val19,val22); val19 = tmp; val17 = std::max(val8,val17); tmp = std::min(val9,val18); + val18 = std::max(val9,val18); val9 = tmp; tmp = std::min(val0,val18); val18 = std::max(val0,val18); + val9 = std::max(tmp,val9); tmp = std::min(val10,val19); val19 = std::max(val10,val19); val10 = tmp; + tmp = std::min(val1,val19); val19 = std::max(val1,val19); val1 = std::min(tmp,val10); + val10 = std::max(tmp,val10); tmp = std::min(val11,val20); val20 = std::max(val11,val20); val11 = tmp; + tmp = std::min(val2,val20); val20 = std::max(val2,val20); val11 = std::max(tmp,val11); + tmp = std::min(val12,val21); val21 = std::max(val12,val21); val12 = tmp; tmp = std::min(val3,val21); + val21 = std::max(val3,val21); val3 = std::min(tmp,val12); val12 = std::max(tmp,val12); + tmp = std::min(val13,val22); val22 = std::max(val13,val22); val4 = std::min(val4,val22); + val13 = std::max(val4,tmp); tmp = std::min(val4,tmp); val4 = tmp; tmp = std::min(val14,val23); + val23 = std::max(val14,val23); val14 = tmp; tmp = std::min(val5,val23); val23 = std::max(val5,val23); + val5 = std::min(tmp,val14); val14 = std::max(tmp,val14); tmp = std::min(val15,val24); + val24 = std::max(val15,val24); val15 = tmp; val6 = std::min(val6,val24); tmp = std::min(val6,val15); + val15 = std::max(val6,val15); val6 = tmp; tmp = std::min(val7,val16); val7 = std::min(tmp,val19); + tmp = std::min(val13,val21); val15 = std::min(val15,val23); tmp = std::min(val7,tmp); + val7 = std::min(tmp,val15); val9 = std::max(val1,val9); val11 = std::max(val3,val11); + val17 = std::max(val5,val17); val17 = std::max(val11,val17); val17 = std::max(val9,val17); + tmp = std::min(val4,val10); val10 = std::max(val4,val10); val4 = tmp; tmp = std::min(val6,val12); + val12 = std::max(val6,val12); val6 = tmp; tmp = std::min(val7,val14); val14 = std::max(val7,val14); + val7 = tmp; tmp = std::min(val4,val6); val6 = std::max(val4,val6); val7 = std::max(tmp,val7); + tmp = std::min(val12,val14); val14 = std::max(val12,val14); val12 = tmp; val10 = std::min(val10,val14); + tmp = std::min(val6,val7); val7 = std::max(val6,val7); val6 = tmp; tmp = std::min(val10,val12); + val12 = std::max(val10,val12); val10 = std::max(val6,tmp); tmp = std::min(val6,tmp); + val17 = std::max(tmp,val17); tmp = std::min(val12,val17); val17 = std::max(val12,val17); val12 = tmp; + val7 = std::min(val7,val17); tmp = std::min(val7,val10); val10 = std::max(val7,val10); val7 = tmp; + tmp = std::min(val12,val18); val18 = std::max(val12,val18); val12 = std::max(val7,tmp); + val10 = std::min(val10,val18); tmp = std::min(val12,val20); val20 = std::max(val12,val20); val12 = tmp; + tmp = std::min(val10,val20); + return std::max(tmp,val12); + } + + template + inline T median(T val0, T val1, T val2, T val3, T val4, T val5, T val6, + T val7, T val8, T val9, T val10, T val11, T val12, T val13, + T val14, T val15, T val16, T val17, T val18, T val19, T val20, + T val21, T val22, T val23, T val24, T val25, T val26, T val27, + T val28, T val29, T val30, T val31, T val32, T val33, T val34, + T val35, T val36, T val37, T val38, T val39, T val40, T val41, + T val42, T val43, T val44, T val45, T val46, T val47, T val48) { + T tmp = std::min(val0,val32); + val32 = std::max(val0,val32); val0 = tmp; tmp = std::min(val1,val33); val33 = std::max(val1,val33); val1 = tmp; + tmp = std::min(val2,val34); val34 = std::max(val2,val34); val2 = tmp; tmp = std::min(val3,val35); + val35 = std::max(val3,val35); val3 = tmp; tmp = std::min(val4,val36); val36 = std::max(val4,val36); val4 = tmp; + tmp = std::min(val5,val37); val37 = std::max(val5,val37); val5 = tmp; tmp = std::min(val6,val38); + val38 = std::max(val6,val38); val6 = tmp; tmp = std::min(val7,val39); val39 = std::max(val7,val39); val7 = tmp; + tmp = std::min(val8,val40); val40 = std::max(val8,val40); val8 = tmp; tmp = std::min(val9,val41); + val41 = std::max(val9,val41); val9 = tmp; tmp = std::min(val10,val42); val42 = std::max(val10,val42); + val10 = tmp; tmp = std::min(val11,val43); val43 = std::max(val11,val43); val11 = tmp; + tmp = std::min(val12,val44); val44 = std::max(val12,val44); val12 = tmp; tmp = std::min(val13,val45); + val45 = std::max(val13,val45); val13 = tmp; tmp = std::min(val14,val46); val46 = std::max(val14,val46); + val14 = tmp; tmp = std::min(val15,val47); val47 = std::max(val15,val47); val15 = tmp; + tmp = std::min(val16,val48); val48 = std::max(val16,val48); val16 = tmp; tmp = std::min(val0,val16); + val16 = std::max(val0,val16); val0 = tmp; tmp = std::min(val1,val17); val17 = std::max(val1,val17); + val1 = tmp; tmp = std::min(val2,val18); val18 = std::max(val2,val18); val2 = tmp; tmp = std::min(val3,val19); + val19 = std::max(val3,val19); val3 = tmp; tmp = std::min(val4,val20); val20 = std::max(val4,val20); val4 = tmp; + tmp = std::min(val5,val21); val21 = std::max(val5,val21); val5 = tmp; tmp = std::min(val6,val22); + val22 = std::max(val6,val22); val6 = tmp; tmp = std::min(val7,val23); val23 = std::max(val7,val23); val7 = tmp; + tmp = std::min(val8,val24); val24 = std::max(val8,val24); val8 = tmp; tmp = std::min(val9,val25); + val25 = std::max(val9,val25); val9 = tmp; tmp = std::min(val10,val26); val26 = std::max(val10,val26); + val10 = tmp; tmp = std::min(val11,val27); val27 = std::max(val11,val27); val11 = tmp; + tmp = std::min(val12,val28); val28 = std::max(val12,val28); val12 = tmp; tmp = std::min(val13,val29); + val29 = std::max(val13,val29); val13 = tmp; tmp = std::min(val14,val30); val30 = std::max(val14,val30); + val14 = tmp; tmp = std::min(val15,val31); val31 = std::max(val15,val31); val15 = tmp; + tmp = std::min(val32,val48); val48 = std::max(val32,val48); val32 = tmp; tmp = std::min(val16,val32); + val32 = std::max(val16,val32); val16 = tmp; tmp = std::min(val17,val33); val33 = std::max(val17,val33); + val17 = tmp; tmp = std::min(val18,val34); val34 = std::max(val18,val34); val18 = tmp; + tmp = std::min(val19,val35); val35 = std::max(val19,val35); val19 = tmp; tmp = std::min(val20,val36); + val36 = std::max(val20,val36); val20 = tmp; tmp = std::min(val21,val37); val37 = std::max(val21,val37); + val21 = tmp; tmp = std::min(val22,val38); val38 = std::max(val22,val38); val22 = tmp; + tmp = std::min(val23,val39); val39 = std::max(val23,val39); val23 = tmp; tmp = std::min(val24,val40); + val40 = std::max(val24,val40); val24 = tmp; tmp = std::min(val25,val41); val41 = std::max(val25,val41); + val25 = tmp; tmp = std::min(val26,val42); val42 = std::max(val26,val42); val26 = tmp; + tmp = std::min(val27,val43); val43 = std::max(val27,val43); val27 = tmp; tmp = std::min(val28,val44); + val44 = std::max(val28,val44); val28 = tmp; tmp = std::min(val29,val45); val45 = std::max(val29,val45); + val29 = tmp; tmp = std::min(val30,val46); val46 = std::max(val30,val46); val30 = tmp; + tmp = std::min(val31,val47); val47 = std::max(val31,val47); val31 = tmp; tmp = std::min(val0,val8); + val8 = std::max(val0,val8); val0 = tmp; tmp = std::min(val1,val9); val9 = std::max(val1,val9); val1 = tmp; + tmp = std::min(val2,val10); val10 = std::max(val2,val10); val2 = tmp; tmp = std::min(val3,val11); + val11 = std::max(val3,val11); val3 = tmp; tmp = std::min(val4,val12); val12 = std::max(val4,val12); val4 = tmp; + tmp = std::min(val5,val13); val13 = std::max(val5,val13); val5 = tmp; tmp = std::min(val6,val14); + val14 = std::max(val6,val14); val6 = tmp; tmp = std::min(val7,val15); val15 = std::max(val7,val15); val7 = tmp; + tmp = std::min(val16,val24); val24 = std::max(val16,val24); val16 = tmp; tmp = std::min(val17,val25); + val25 = std::max(val17,val25); val17 = tmp; tmp = std::min(val18,val26); val26 = std::max(val18,val26); + val18 = tmp; tmp = std::min(val19,val27); val27 = std::max(val19,val27); val19 = tmp; + tmp = std::min(val20,val28); val28 = std::max(val20,val28); val20 = tmp; tmp = std::min(val21,val29); + val29 = std::max(val21,val29); val21 = tmp; tmp = std::min(val22,val30); val30 = std::max(val22,val30); + val22 = tmp; tmp = std::min(val23,val31); val31 = std::max(val23,val31); val23 = tmp; + tmp = std::min(val32,val40); val40 = std::max(val32,val40); val32 = tmp; tmp = std::min(val33,val41); + val41 = std::max(val33,val41); val33 = tmp; tmp = std::min(val34,val42); val42 = std::max(val34,val42); + val34 = tmp; tmp = std::min(val35,val43); val43 = std::max(val35,val43); val35 = tmp; + tmp = std::min(val36,val44); val44 = std::max(val36,val44); val36 = tmp; tmp = std::min(val37,val45); + val45 = std::max(val37,val45); val37 = tmp; tmp = std::min(val38,val46); val46 = std::max(val38,val46); + val38 = tmp; tmp = std::min(val39,val47); val47 = std::max(val39,val47); val39 = tmp; + tmp = std::min(val8,val32); val32 = std::max(val8,val32); val8 = tmp; tmp = std::min(val9,val33); + val33 = std::max(val9,val33); val9 = tmp; tmp = std::min(val10,val34); val34 = std::max(val10,val34); + val10 = tmp; tmp = std::min(val11,val35); val35 = std::max(val11,val35); val11 = tmp; + tmp = std::min(val12,val36); val36 = std::max(val12,val36); val12 = tmp; tmp = std::min(val13,val37); + val37 = std::max(val13,val37); val13 = tmp; tmp = std::min(val14,val38); val38 = std::max(val14,val38); + val14 = tmp; tmp = std::min(val15,val39); val39 = std::max(val15,val39); val15 = tmp; + tmp = std::min(val24,val48); val48 = std::max(val24,val48); val24 = tmp; tmp = std::min(val8,val16); + val16 = std::max(val8,val16); val8 = tmp; tmp = std::min(val9,val17); val17 = std::max(val9,val17); + val9 = tmp; tmp = std::min(val10,val18); val18 = std::max(val10,val18); val10 = tmp; + tmp = std::min(val11,val19); val19 = std::max(val11,val19); val11 = tmp; tmp = std::min(val12,val20); + val20 = std::max(val12,val20); val12 = tmp; tmp = std::min(val13,val21); val21 = std::max(val13,val21); + val13 = tmp; tmp = std::min(val14,val22); val22 = std::max(val14,val22); val14 = tmp; + tmp = std::min(val15,val23); val23 = std::max(val15,val23); val15 = tmp; tmp = std::min(val24,val32); + val32 = std::max(val24,val32); val24 = tmp; tmp = std::min(val25,val33); val33 = std::max(val25,val33); + val25 = tmp; tmp = std::min(val26,val34); val34 = std::max(val26,val34); val26 = tmp; + tmp = std::min(val27,val35); val35 = std::max(val27,val35); val27 = tmp; tmp = std::min(val28,val36); + val36 = std::max(val28,val36); val28 = tmp; tmp = std::min(val29,val37); val37 = std::max(val29,val37); + val29 = tmp; tmp = std::min(val30,val38); val38 = std::max(val30,val38); val30 = tmp; + tmp = std::min(val31,val39); val39 = std::max(val31,val39); val31 = tmp; tmp = std::min(val40,val48); + val48 = std::max(val40,val48); val40 = tmp; tmp = std::min(val0,val4); val4 = std::max(val0,val4); + val0 = tmp; tmp = std::min(val1,val5); val5 = std::max(val1,val5); val1 = tmp; tmp = std::min(val2,val6); + val6 = std::max(val2,val6); val2 = tmp; tmp = std::min(val3,val7); val7 = std::max(val3,val7); val3 = tmp; + tmp = std::min(val8,val12); val12 = std::max(val8,val12); val8 = tmp; tmp = std::min(val9,val13); + val13 = std::max(val9,val13); val9 = tmp; tmp = std::min(val10,val14); val14 = std::max(val10,val14); + val10 = tmp; tmp = std::min(val11,val15); val15 = std::max(val11,val15); val11 = tmp; + tmp = std::min(val16,val20); val20 = std::max(val16,val20); val16 = tmp; tmp = std::min(val17,val21); + val21 = std::max(val17,val21); val17 = tmp; tmp = std::min(val18,val22); val22 = std::max(val18,val22); + val18 = tmp; tmp = std::min(val19,val23); val23 = std::max(val19,val23); val19 = tmp; + tmp = std::min(val24,val28); val28 = std::max(val24,val28); val24 = tmp; tmp = std::min(val25,val29); + val29 = std::max(val25,val29); val25 = tmp; tmp = std::min(val26,val30); val30 = std::max(val26,val30); + val26 = tmp; tmp = std::min(val27,val31); val31 = std::max(val27,val31); val27 = tmp; + tmp = std::min(val32,val36); val36 = std::max(val32,val36); val32 = tmp; tmp = std::min(val33,val37); + val37 = std::max(val33,val37); val33 = tmp; tmp = std::min(val34,val38); val38 = std::max(val34,val38); + val34 = tmp; tmp = std::min(val35,val39); val39 = std::max(val35,val39); val35 = tmp; + tmp = std::min(val40,val44); val44 = std::max(val40,val44); val40 = tmp; tmp = std::min(val41,val45); + val45 = std::max(val41,val45); val41 = tmp; tmp = std::min(val42,val46); val46 = std::max(val42,val46); + val42 = tmp; tmp = std::min(val43,val47); val47 = std::max(val43,val47); val43 = tmp; + tmp = std::min(val4,val32); val32 = std::max(val4,val32); val4 = tmp; tmp = std::min(val5,val33); + val33 = std::max(val5,val33); val5 = tmp; tmp = std::min(val6,val34); val34 = std::max(val6,val34); + val6 = tmp; tmp = std::min(val7,val35); val35 = std::max(val7,val35); val7 = tmp; + tmp = std::min(val12,val40); val40 = std::max(val12,val40); val12 = tmp; tmp = std::min(val13,val41); + val41 = std::max(val13,val41); val13 = tmp; tmp = std::min(val14,val42); val42 = std::max(val14,val42); + val14 = tmp; tmp = std::min(val15,val43); val43 = std::max(val15,val43); val15 = tmp; + tmp = std::min(val20,val48); val48 = std::max(val20,val48); val20 = tmp; tmp = std::min(val4,val16); + val16 = std::max(val4,val16); val4 = tmp; tmp = std::min(val5,val17); val17 = std::max(val5,val17); + val5 = tmp; tmp = std::min(val6,val18); val18 = std::max(val6,val18); val6 = tmp; + tmp = std::min(val7,val19); val19 = std::max(val7,val19); val7 = tmp; tmp = std::min(val12,val24); + val24 = std::max(val12,val24); val12 = tmp; tmp = std::min(val13,val25); val25 = std::max(val13,val25); + val13 = tmp; tmp = std::min(val14,val26); val26 = std::max(val14,val26); val14 = tmp; + tmp = std::min(val15,val27); val27 = std::max(val15,val27); val15 = tmp; tmp = std::min(val20,val32); + val32 = std::max(val20,val32); val20 = tmp; tmp = std::min(val21,val33); val33 = std::max(val21,val33); + val21 = tmp; tmp = std::min(val22,val34); val34 = std::max(val22,val34); val22 = tmp; + tmp = std::min(val23,val35); val35 = std::max(val23,val35); val23 = tmp; tmp = std::min(val28,val40); + val40 = std::max(val28,val40); val28 = tmp; tmp = std::min(val29,val41); val41 = std::max(val29,val41); + val29 = tmp; tmp = std::min(val30,val42); val42 = std::max(val30,val42); val30 = tmp; + tmp = std::min(val31,val43); val43 = std::max(val31,val43); val31 = tmp; tmp = std::min(val36,val48); + val48 = std::max(val36,val48); val36 = tmp; tmp = std::min(val4,val8); val8 = std::max(val4,val8); + val4 = tmp; tmp = std::min(val5,val9); val9 = std::max(val5,val9); val5 = tmp; tmp = std::min(val6,val10); + val10 = std::max(val6,val10); val6 = tmp; tmp = std::min(val7,val11); val11 = std::max(val7,val11); val7 = tmp; + tmp = std::min(val12,val16); val16 = std::max(val12,val16); val12 = tmp; tmp = std::min(val13,val17); + val17 = std::max(val13,val17); val13 = tmp; tmp = std::min(val14,val18); val18 = std::max(val14,val18); + val14 = tmp; tmp = std::min(val15,val19); val19 = std::max(val15,val19); val15 = tmp; + tmp = std::min(val20,val24); val24 = std::max(val20,val24); val20 = tmp; tmp = std::min(val21,val25); + val25 = std::max(val21,val25); val21 = tmp; tmp = std::min(val22,val26); val26 = std::max(val22,val26); + val22 = tmp; tmp = std::min(val23,val27); val27 = std::max(val23,val27); val23 = tmp; + tmp = std::min(val28,val32); val32 = std::max(val28,val32); val28 = tmp; tmp = std::min(val29,val33); + val33 = std::max(val29,val33); val29 = tmp; tmp = std::min(val30,val34); val34 = std::max(val30,val34); + val30 = tmp; tmp = std::min(val31,val35); val35 = std::max(val31,val35); val31 = tmp; + tmp = std::min(val36,val40); val40 = std::max(val36,val40); val36 = tmp; tmp = std::min(val37,val41); + val41 = std::max(val37,val41); val37 = tmp; tmp = std::min(val38,val42); val42 = std::max(val38,val42); + val38 = tmp; tmp = std::min(val39,val43); val43 = std::max(val39,val43); val39 = tmp; + tmp = std::min(val44,val48); val48 = std::max(val44,val48); val44 = tmp; tmp = std::min(val0,val2); + val2 = std::max(val0,val2); val0 = tmp; tmp = std::min(val1,val3); val3 = std::max(val1,val3); val1 = tmp; + tmp = std::min(val4,val6); val6 = std::max(val4,val6); val4 = tmp; tmp = std::min(val5,val7); + val7 = std::max(val5,val7); val5 = tmp; tmp = std::min(val8,val10); val10 = std::max(val8,val10); val8 = tmp; + tmp = std::min(val9,val11); val11 = std::max(val9,val11); val9 = tmp; tmp = std::min(val12,val14); + val14 = std::max(val12,val14); val12 = tmp; tmp = std::min(val13,val15); val15 = std::max(val13,val15); + val13 = tmp; tmp = std::min(val16,val18); val18 = std::max(val16,val18); val16 = tmp; + tmp = std::min(val17,val19); val19 = std::max(val17,val19); val17 = tmp; tmp = std::min(val20,val22); + val22 = std::max(val20,val22); val20 = tmp; tmp = std::min(val21,val23); val23 = std::max(val21,val23); + val21 = tmp; tmp = std::min(val24,val26); val26 = std::max(val24,val26); val24 = tmp; + tmp = std::min(val25,val27); val27 = std::max(val25,val27); val25 = tmp; tmp = std::min(val28,val30); + val30 = std::max(val28,val30); val28 = tmp; tmp = std::min(val29,val31); val31 = std::max(val29,val31); + val29 = tmp; tmp = std::min(val32,val34); val34 = std::max(val32,val34); val32 = tmp; + tmp = std::min(val33,val35); val35 = std::max(val33,val35); val33 = tmp; tmp = std::min(val36,val38); + val38 = std::max(val36,val38); val36 = tmp; tmp = std::min(val37,val39); val39 = std::max(val37,val39); + val37 = tmp; tmp = std::min(val40,val42); val42 = std::max(val40,val42); val40 = tmp; + tmp = std::min(val41,val43); val43 = std::max(val41,val43); val41 = tmp; tmp = std::min(val44,val46); + val46 = std::max(val44,val46); val44 = tmp; tmp = std::min(val45,val47); val47 = std::max(val45,val47); + val45 = tmp; tmp = std::min(val2,val32); val32 = std::max(val2,val32); val2 = tmp; tmp = std::min(val3,val33); + val33 = std::max(val3,val33); val3 = tmp; tmp = std::min(val6,val36); val36 = std::max(val6,val36); val6 = tmp; + tmp = std::min(val7,val37); val37 = std::max(val7,val37); val7 = tmp; tmp = std::min(val10,val40); + val40 = std::max(val10,val40); val10 = tmp; tmp = std::min(val11,val41); val41 = std::max(val11,val41); + val11 = tmp; tmp = std::min(val14,val44); val44 = std::max(val14,val44); val14 = tmp; + tmp = std::min(val15,val45); val45 = std::max(val15,val45); val15 = tmp; tmp = std::min(val18,val48); + val48 = std::max(val18,val48); val18 = tmp; tmp = std::min(val2,val16); val16 = std::max(val2,val16); + val2 = tmp; tmp = std::min(val3,val17); val17 = std::max(val3,val17); val3 = tmp; + tmp = std::min(val6,val20); val20 = std::max(val6,val20); val6 = tmp; tmp = std::min(val7,val21); + val21 = std::max(val7,val21); val7 = tmp; tmp = std::min(val10,val24); val24 = std::max(val10,val24); + val10 = tmp; tmp = std::min(val11,val25); val25 = std::max(val11,val25); val11 = tmp; + tmp = std::min(val14,val28); val28 = std::max(val14,val28); val14 = tmp; tmp = std::min(val15,val29); + val29 = std::max(val15,val29); val15 = tmp; tmp = std::min(val18,val32); val32 = std::max(val18,val32); + val18 = tmp; tmp = std::min(val19,val33); val33 = std::max(val19,val33); val19 = tmp; + tmp = std::min(val22,val36); val36 = std::max(val22,val36); val22 = tmp; tmp = std::min(val23,val37); + val37 = std::max(val23,val37); val23 = tmp; tmp = std::min(val26,val40); val40 = std::max(val26,val40); + val26 = tmp; tmp = std::min(val27,val41); val41 = std::max(val27,val41); val27 = tmp; + tmp = std::min(val30,val44); val44 = std::max(val30,val44); val30 = tmp; tmp = std::min(val31,val45); + val45 = std::max(val31,val45); val31 = tmp; tmp = std::min(val34,val48); val48 = std::max(val34,val48); + val34 = tmp; tmp = std::min(val2,val8); val8 = std::max(val2,val8); val2 = tmp; tmp = std::min(val3,val9); + val9 = std::max(val3,val9); val3 = tmp; tmp = std::min(val6,val12); val12 = std::max(val6,val12); val6 = tmp; + tmp = std::min(val7,val13); val13 = std::max(val7,val13); val7 = tmp; tmp = std::min(val10,val16); + val16 = std::max(val10,val16); val10 = tmp; tmp = std::min(val11,val17); val17 = std::max(val11,val17); + val11 = tmp; tmp = std::min(val14,val20); val20 = std::max(val14,val20); val14 = tmp; + tmp = std::min(val15,val21); val21 = std::max(val15,val21); val15 = tmp; tmp = std::min(val18,val24); + val24 = std::max(val18,val24); val18 = tmp; tmp = std::min(val19,val25); val25 = std::max(val19,val25); + val19 = tmp; tmp = std::min(val22,val28); val28 = std::max(val22,val28); val22 = tmp; + tmp = std::min(val23,val29); val29 = std::max(val23,val29); val23 = tmp; tmp = std::min(val26,val32); + val32 = std::max(val26,val32); val26 = tmp; tmp = std::min(val27,val33); val33 = std::max(val27,val33); + val27 = tmp; tmp = std::min(val30,val36); val36 = std::max(val30,val36); val30 = tmp; + tmp = std::min(val31,val37); val37 = std::max(val31,val37); val31 = tmp; tmp = std::min(val34,val40); + val40 = std::max(val34,val40); val34 = tmp; tmp = std::min(val35,val41); val41 = std::max(val35,val41); + val35 = tmp; tmp = std::min(val38,val44); val44 = std::max(val38,val44); val38 = tmp; + tmp = std::min(val39,val45); val45 = std::max(val39,val45); val39 = tmp; tmp = std::min(val42,val48); + val48 = std::max(val42,val48); val42 = tmp; tmp = std::min(val2,val4); val4 = std::max(val2,val4); + val2 = tmp; tmp = std::min(val3,val5); val5 = std::max(val3,val5); val3 = tmp; tmp = std::min(val6,val8); + val8 = std::max(val6,val8); val6 = tmp; tmp = std::min(val7,val9); val9 = std::max(val7,val9); val7 = tmp; + tmp = std::min(val10,val12); val12 = std::max(val10,val12); val10 = tmp; tmp = std::min(val11,val13); + val13 = std::max(val11,val13); val11 = tmp; tmp = std::min(val14,val16); val16 = std::max(val14,val16); + val14 = tmp; tmp = std::min(val15,val17); val17 = std::max(val15,val17); val15 = tmp; + tmp = std::min(val18,val20); val20 = std::max(val18,val20); val18 = tmp; tmp = std::min(val19,val21); + val21 = std::max(val19,val21); val19 = tmp; tmp = std::min(val22,val24); val24 = std::max(val22,val24); + val22 = tmp; tmp = std::min(val23,val25); val25 = std::max(val23,val25); val23 = tmp; + tmp = std::min(val26,val28); val28 = std::max(val26,val28); val26 = tmp; tmp = std::min(val27,val29); + val29 = std::max(val27,val29); val27 = tmp; tmp = std::min(val30,val32); val32 = std::max(val30,val32); + val30 = tmp; tmp = std::min(val31,val33); val33 = std::max(val31,val33); val31 = tmp; + tmp = std::min(val34,val36); val36 = std::max(val34,val36); val34 = tmp; tmp = std::min(val35,val37); + val37 = std::max(val35,val37); val35 = tmp; tmp = std::min(val38,val40); val40 = std::max(val38,val40); + val38 = tmp; tmp = std::min(val39,val41); val41 = std::max(val39,val41); val39 = tmp; + tmp = std::min(val42,val44); val44 = std::max(val42,val44); val42 = tmp; tmp = std::min(val43,val45); + val45 = std::max(val43,val45); val43 = tmp; tmp = std::min(val46,val48); val48 = std::max(val46,val48); + val46 = tmp; val1 = std::max(val0,val1); val3 = std::max(val2,val3); val5 = std::max(val4,val5); + val7 = std::max(val6,val7); val9 = std::max(val8,val9); val11 = std::max(val10,val11); + val13 = std::max(val12,val13); val15 = std::max(val14,val15); val17 = std::max(val16,val17); + val19 = std::max(val18,val19); val21 = std::max(val20,val21); val23 = std::max(val22,val23); + val24 = std::min(val24,val25); val26 = std::min(val26,val27); val28 = std::min(val28,val29); + val30 = std::min(val30,val31); val32 = std::min(val32,val33); val34 = std::min(val34,val35); + val36 = std::min(val36,val37); val38 = std::min(val38,val39); val40 = std::min(val40,val41); + val42 = std::min(val42,val43); val44 = std::min(val44,val45); val46 = std::min(val46,val47); + val32 = std::max(val1,val32); val34 = std::max(val3,val34); val36 = std::max(val5,val36); + val38 = std::max(val7,val38); val9 = std::min(val9,val40); val11 = std::min(val11,val42); + val13 = std::min(val13,val44); val15 = std::min(val15,val46); val17 = std::min(val17,val48); + val24 = std::max(val9,val24); val26 = std::max(val11,val26); val28 = std::max(val13,val28); + val30 = std::max(val15,val30); val17 = std::min(val17,val32); val19 = std::min(val19,val34); + val21 = std::min(val21,val36); val23 = std::min(val23,val38); val24 = std::max(val17,val24); + val26 = std::max(val19,val26); val21 = std::min(val21,val28); val23 = std::min(val23,val30); + val24 = std::max(val21,val24); val23 = std::min(val23,val26); + return std::max(val23,val24); + } + + //! Return sqrt(x^2 + y^2). + template + inline T hypot(const T x, const T y) { + return std::sqrt(x*x + y*y); + } + + template + inline T hypot(const T x, const T y, const T z) { + return std::sqrt(x*x + y*y + z*z); + } + + template + inline T _hypot(const T x, const T y) { // Slower but more precise version + T nx = cimg::abs(x), ny = cimg::abs(y), t; + if (nx0) { t/=nx; return nx*std::sqrt(1 + t*t); } + return 0; + } + + //! Return the factorial of n + inline double factorial(const int n) { + if (n<0) return cimg::type::nan(); + if (n<2) return 1; + double res = 2; + for (int i = 3; i<=n; ++i) res*=i; + return res; + } + + //! Return the number of permutations of k objects in a set of n objects. + inline double permutations(const int k, const int n, const bool with_order) { + if (n<0 || k<0) return cimg::type::nan(); + if (k>n) return 0; + double res = 1; + for (int i = n; i>=n - k + 1; --i) res*=i; + return with_order?res:res/cimg::factorial(k); + } + + inline double _fibonacci(int exp) { + double + base = (1 + std::sqrt(5.))/2, + result = 1/std::sqrt(5.); + while (exp) { + if (exp&1) result*=base; + exp>>=1; + base*=base; + } + return result; + } + + //! Calculate fibonacci number. + // (Precise up to n = 78, less precise for n>78). + inline double fibonacci(const int n) { + if (n<0) return cimg::type::nan(); + if (n<3) return 1; + if (n<11) { + cimg_uint64 fn1 = 1, fn2 = 1, fn = 0; + for (int i = 3; i<=n; ++i) { fn = fn1 + fn2; fn2 = fn1; fn1 = fn; } + return (double)fn; + } + if (n<75) // precise up to n = 74, faster than the integer calculation above for n>10 + return (double)((cimg_uint64)(_fibonacci(n) + 0.5)); + + if (n<94) { // precise up to n = 78, less precise for n>78 up to n = 93, overflows for n>93 + cimg_uint64 + fn1 = ((cimg_uint64)303836)<<32 | 3861581201UL, // 1304969544928657ULL (avoid C++98 warning with ULL) + fn2 = ((cimg_uint64)187781)<<32 | 2279239217UL, // 806515533049393ULL + fn = 0; + for (int i = 75; i<=n; ++i) { fn = fn1 + fn2; fn2 = fn1; fn1 = fn; } + return (double)fn; + } + return _fibonacci(n); // Not precise, but better than the wrong overflowing calculation + } + + //! Calculate greatest common divisor. + inline long gcd(long a, long b) { + while (a) { const long c = a; a = b%a; b = c; } + return b; + } + + //! Convert character to lower case. + inline char lowercase(const char x) { + return (char)((x<'A'||x>'Z')?x:x - 'A' + 'a'); + } + inline double lowercase(const double x) { + return (double)((x<'A'||x>'Z')?x:x - 'A' + 'a'); + } + + //! Convert C-string to lower case. + inline void lowercase(char *const str) { + if (str) for (char *ptr = str; *ptr; ++ptr) *ptr = lowercase(*ptr); + } + + //! Convert character to upper case. + inline char uppercase(const char x) { + return (char)((x<'a'||x>'z')?x:x - 'a' + 'A'); + } + + inline double uppercase(const double x) { + return (double)((x<'a'||x>'z')?x:x - 'a' + 'A'); + } + + //! Convert C-string to upper case. + inline void uppercase(char *const str) { + if (str) for (char *ptr = str; *ptr; ++ptr) *ptr = uppercase(*ptr); + } + + //! Return \c true if input character is blank (space, tab, or non-printable character). + inline bool is_blank(const char c) { + return c>=0 && (unsigned char)c<=' '; + } + + //! Read value in a C-string. + /** + \param str C-string containing the float value to read. + \return Read value. + \note Same as std::atof() extended to manage the retrieval of fractions from C-strings, + as in "1/2". + **/ + inline double atof(const char *const str) { + double x = 0, y = 1; + return str && cimg_sscanf(str,"%lf/%lf",&x,&y)>0?x/y:0; + } + + //! Compare the first \p l characters of two C-strings, ignoring the case. + /** + \param str1 C-string. + \param str2 C-string. + \param l Number of characters to compare. + \return \c 0 if the two strings are equal, something else otherwise. + \note This function has to be defined since it is not provided by all C++-compilers (not ANSI). + **/ + inline int strncasecmp(const char *const str1, const char *const str2, const int l) { + if (!l) return 0; + if (!str1) return str2?-1:0; + const char *nstr1 = str1, *nstr2 = str2; + int k, diff = 0; for (k = 0; kp && str[q]==delimiter; ) { --q; if (!is_iterative) break; } + } + const int n = q - p + 1; + if (n!=l) { std::memmove(str,str + p,(unsigned int)n); str[n] = 0; return true; } + return false; + } + + //! Remove white spaces on the start and/or end of a C-string. + inline bool strpare(char *const str, const bool is_symmetric, const bool is_iterative) { + if (!str) return false; + const int l = (int)std::strlen(str); + int p, q; + if (is_symmetric) for (p = 0, q = l - 1; pp && is_blank(str[q]); ) { --q; if (!is_iterative) break; } + } + const int n = q - p + 1; + if (n!=l) { std::memmove(str,str + p,(unsigned int)n); str[n] = 0; return true; } + return false; + } + + //! Replace reserved characters (for Windows filename) by another character. + /** + \param[in,out] str C-string to work with (modified at output). + \param[in] c Replacement character. + **/ + inline void strwindows_reserved(char *const str, const char c='_') { + for (char *s = str; *s; ++s) { + const char i = *s; + if (i=='<' || i=='>' || i==':' || i=='\"' || i=='/' || i=='\\' || i=='|' || i=='?' || i=='*') *s = c; + } + } + + //! Replace escape sequences in C-strings by character values. + /** + \param[in,out] str C-string to work with (modified at output). + **/ + inline void strunescape(char *const str) { +#define cimg_strunescape(ci,co) case ci : *nd = co; ++ns; break; + + unsigned char val = 0; + for (char *ns = str, *nd = str; *ns || (bool)(*nd = 0); ++nd) if (*ns=='\\') switch (*(++ns)) { + cimg_strunescape('a','\a'); + cimg_strunescape('b','\b'); + cimg_strunescape('e',0x1B); + cimg_strunescape('f','\f'); + cimg_strunescape('n','\n'); + cimg_strunescape('r','\r'); + cimg_strunescape('t','\t'); + cimg_strunescape('v','\v'); + cimg_strunescape('\\','\\'); + cimg_strunescape('\'','\''); + cimg_strunescape('\"','\"'); + cimg_strunescape('\?','\?'); + case '0' : case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' : + val = *(ns++) - '0'; + if (*ns>='0' && *ns<='7') (val<<=3)|=*(ns++) - '0'; + if (*ns>='0' && *ns<='7') (val<<=3)|=*(ns++) - '0'; + *nd = (char)val; + break; + case 'x' : { + char c = lowercase(*(++ns)); + if ((c>='0' && c<='9') || (c>='a' && c<='f')) { + val = (c<='9'?c - '0':c - 'a' + 10); + c = lowercase(*(++ns)); + if ((c>='0' && c<='9') || (c>='a' && c<='f')) { + (val<<=4)|=(c<='9'?c - '0':c - 'a' + 10); + ++ns; + } + *nd = val; + } else *nd = c; + } break; + case 'u' : { // UTF-8 BMP + char c1, c2, c3, c4; + if ((((c1 = lowercase(ns[1]))>='0' && c1<='9') || (c1>='a' && c1<='f')) && + (((c2 = lowercase(ns[2]))>='0' && c2<='9') || (c2>='a' && c2<='f')) && + (((c3 = lowercase(ns[3]))>='0' && c3<='9') || (c3>='a' && c3<='f')) && + (((c4 = lowercase(ns[4]))>='0' && c4<='9') || (c4>='a' && c4<='f'))) { + c1 = (c1<='9'?c1 - '0':c1 - 'a' + 10); + c2 = (c2<='9'?c2 - '0':c2 - 'a' + 10); + c3 = (c3<='9'?c3 - '0':c3 - 'a' + 10); + c4 = (c4<='9'?c4 - '0':c4 - 'a' + 10); + const unsigned int ival = + ((unsigned int)c1<<12) | ((unsigned int)c2<<8) | ((unsigned int)c3<<4) | c4; + if (ival<=0x007f) *nd = (char)ival; + else if (ival<=0x07ff) { + *(nd++) = (char)((ival>>6)|0xc0); + *nd = (char)((ival&0x3f)|0x80); + } else { + *(nd++) = (char)((ival>>12)|0xe0); + *(nd++) = (char)(((ival>>6)&0x3f)|0x80); + *nd = (char)((ival&0x3f)|0x80); + } + ns+=5; + } else *nd = *(ns++); + } break; + case 'U' : { // UTF-8 astral planes + char c1, c2, c3, c4, c5, c6, c7, c8; + if ((((c1 = lowercase(ns[1]))>='0' && c1<='9') || (c1>='a' && c1<='f')) && + (((c2 = lowercase(ns[2]))>='0' && c2<='9') || (c2>='a' && c2<='f')) && + (((c3 = lowercase(ns[3]))>='0' && c3<='9') || (c3>='a' && c3<='f')) && + (((c4 = lowercase(ns[4]))>='0' && c4<='9') || (c4>='a' && c4<='f')) && + (((c5 = lowercase(ns[5]))>='0' && c5<='9') || (c5>='a' && c5<='f')) && + (((c6 = lowercase(ns[6]))>='0' && c6<='9') || (c6>='a' && c6<='f')) && + (((c7 = lowercase(ns[7]))>='0' && c7<='9') || (c7>='a' && c7<='f')) && + (((c8 = lowercase(ns[8]))>='0' && c8<='9') || (c8>='a' && c8<='f'))) { + c1 = (c1<='9'?c1 - '0':c1 - 'a' + 10); + c2 = (c2<='9'?c2 - '0':c2 - 'a' + 10); + c3 = (c3<='9'?c3 - '0':c3 - 'a' + 10); + c4 = (c4<='9'?c4 - '0':c4 - 'a' + 10); + c5 = (c5<='9'?c5 - '0':c5 - 'a' + 10); + c6 = (c6<='9'?c6 - '0':c6 - 'a' + 10); + c7 = (c7<='9'?c7 - '0':c7 - 'a' + 10); + c8 = (c8<='9'?c8 - '0':c8 - 'a' + 10); + const unsigned int ival = + ((unsigned int)c1<<28) | ((unsigned int)c2<<24) | ((unsigned int)c3<<20) | ((unsigned int)c4<<16) | + ((unsigned int)c5<<12) | ((unsigned int)c6<<8) | ((unsigned int)c7<<4) | (unsigned int)c8; + if (ival<=0x007f) *nd = (char)ival; + else if (ival<=0x07ff) { + *(nd++) = (char)((ival>>6)|0xc0); + *nd = (char)((ival&0x3f)|0x80); + } else if (ival<=0xffff) { + *(nd++) = (char)((ival>>12)|0xe0); + *(nd++) = (char)(((ival>>6)&0x3f)|0x80); + *nd = (char)((ival&0x3f)|0x80); + } else { + *(nd++) = (char)((ival>>18)|0xf0); + *(nd++) = (char)(((ival>>12)&0x3f)|0x80); + *(nd++) = (char)(((ival>>6)&0x3f)|0x80); + *nd = (char)((ival&0x3f)|0x80); + } + ns+=9; + } else *nd = *(ns++); + } break; + default : if (*ns) *nd = *(ns++); + } + else *nd = *(ns++); + } + + // Return a temporary string describing the size of a memory buffer. + inline const char *strbuffersize(const cimg_ulong size); + + // Return string that identifies the running OS. + inline const char *stros() { +#if defined(linux) || defined(__linux) || defined(__linux__) + static const char *const str = "Linux"; +#elif defined(sun) || defined(__sun) + static const char *const str = "Sun OS"; +#elif defined(BSD) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined (__DragonFly__) + static const char *const str = "BSD"; +#elif defined(sgi) || defined(__sgi) + static const char *const str = "Irix"; +#elif defined(__MACOSX__) || defined(__APPLE__) + static const char *const str = "Mac OS"; +#elif defined(unix) || defined(__unix) || defined(__unix__) + static const char *const str = "Generic Unix"; +#elif defined(_MSC_VER) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || \ + defined(WIN64) || defined(_WIN64) || defined(__WIN64__) + static const char *const str = "Windows"; +#else + const char + *const _str1 = std::getenv("OSTYPE"), + *const _str2 = _str1?_str1:std::getenv("OS"), + *const str = _str2?_str2:"Unknown OS"; +#endif + return str; + } + + //! Return the basename of a filename. + inline const char* basename(const char *const s, const char separator=cimg_file_separator) { + const char *p = 0, *np = s; + while (np>=s && (p=np)) np = std::strchr(np,separator) + 1; + return p; + } + + // Return a random filename. + inline const char* filenamerand() { + cimg::mutex(6); + static char randomid[9]; + for (unsigned int k = 0; k<8; ++k) { + const int v = (int)cimg::rand(65535)%3; + randomid[k] = (char)(v==0?('0' + ((int)cimg::rand(65535)%10)): + (v==1?('a' + ((int)cimg::rand(65535)%26)): + ('A' + ((int)cimg::rand(65535)%26)))); + } + cimg::mutex(6,0); + return randomid; + } + + // Convert filename as a Windows-style filename (short path name). + inline void winformat_string(char *const str) { + if (str && *str) { +#if cimg_OS==2 + char *const nstr = new char[MAX_PATH]; + if (GetShortPathNameA(str,nstr,MAX_PATH)) std::strcpy(str,nstr); + delete[] nstr; +#endif + } + } + + // Open a file (similar to std:: fopen(), but with wide character support on Windows). + inline std::FILE *std_fopen(const char *const path, const char *const mode); + + + //! Open a file. + /** + \param path Path of the filename to open. + \param mode C-string describing the opening mode. + \return Opened file. + \note Same as std::fopen() but throw a \c CImgIOException when + the specified file cannot be opened, instead of returning \c 0. + **/ + inline std::FILE *fopen(const char *const path, const char *const mode) { + if (!path) + throw CImgArgumentException("cimg::fopen(): Specified file path is (null)."); + if (!mode) + throw CImgArgumentException("cimg::fopen(): File '%s', specified mode is (null).", + path); + std::FILE *res = 0; + if (*path=='-' && (!path[1] || path[1]=='.')) { + res = (*mode=='r')?cimg::_stdin():cimg::_stdout(); +#if cimg_OS==2 + if (*mode && mode[1]=='b') { // Force stdin/stdout to be in binary mode +#ifdef __BORLANDC__ + if (setmode(_fileno(res),0x8000)==-1) res = 0; +#else + if (_setmode(_fileno(res),0x8000)==-1) res = 0; +#endif + } +#endif + } else res = cimg::std_fopen(path,mode); + if (!res) throw CImgIOException("cimg::fopen(): Failed to open file '%s' with mode '%s'.", + path,mode); + return res; + } + + //! Close a file. + /** + \param file File to close. + \return \c 0 if file has been closed properly, something else otherwise. + \note Same as std::fclose() but display a warning message if + the file has not been closed properly. + **/ + inline int fclose(std::FILE *file) { + if (!file) { warn("cimg::fclose(): Specified file is (null)."); return 0; } + if (file==cimg::_stdin(false) || file==cimg::_stdout(false)) return 0; + const int errn = std::fclose(file); + if (errn!=0) warn("cimg::fclose(): Error code %d returned during file closing.", + errn); + return errn; + } + + //! Version of 'fseek()' that supports >=64bits offsets everywhere (for Windows). + inline int fseek(FILE *stream, cimg_long offset, int origin) { +#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) + return _fseeki64(stream,(__int64)offset,origin); +#else + return std::fseek(stream,offset,origin); +#endif + } + + //! Version of 'ftell()' that supports >=64bits offsets everywhere (for Windows). + inline cimg_long ftell(FILE *stream) { +#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) + return (cimg_long)_ftelli64(stream); +#else + return (cimg_long)std::ftell(stream); +#endif + } + + // Get the file or directory attributes with support for UTF-8 paths (Windows only). +#if cimg_OS==2 + inline DWORD win_getfileattributes(const char *const path); +#endif + + //! Check if a path is a directory. + /** + \param path Specified path to test. + **/ + inline bool is_directory(const char *const path) { + if (!path || !*path) return false; +#if cimg_OS==1 + struct stat st_buf; + return (!stat(path,&st_buf) && S_ISDIR(st_buf.st_mode)); +#elif cimg_OS==2 + const DWORD res = win_getfileattributes(path); + return res!=INVALID_FILE_ATTRIBUTES && (res&FILE_ATTRIBUTE_DIRECTORY); +#else + return false; +#endif + } + + //! Check if a path is a file. + /** + \param path Specified path to test. + **/ + inline bool is_file(const char *const path) { + if (!path || !*path) return false; +#if cimg_OS==2 + const DWORD res = cimg::win_getfileattributes(path); + return res!=INVALID_FILE_ATTRIBUTES && !(res&FILE_ATTRIBUTE_DIRECTORY); +#else + std::FILE *const file = cimg::std_fopen(path,"rb"); + if (!file) return false; + cimg::fclose(file); + return !is_directory(path); +#endif + } + + //! Get file size. + /** + \param filename Specified filename to get size from. + \return File size or '-1' if file does not exist. + **/ + inline cimg_int64 fsize(const char *const filename) { + std::FILE *const file = cimg::std_fopen(filename,"rb"); + if (!file) return (cimg_int64)-1; + std::fseek(file,0,SEEK_END); + const cimg_int64 siz = (cimg_int64)std::ftell(file); + cimg::fclose(file); + return siz; + } + + //! Get last write time of a given file or directory (multiple-attributes version). + /** + \param path Specified path to get attributes from. + \param[in,out] attr Type of requested time attributes. + Can be { 0=year | 1=month | 2=day | 3=day of week | 4=hour | 5=minute | 6=second } + Replaced by read attributes after return (or -1 if an error occurred). + \param nb_attr Number of attributes to read/write. + \return Latest read attribute. + **/ + template + inline int fdate(const char *const path, T *attr, const unsigned int nb_attr) { +#define _cimg_fdate_err() for (unsigned int i = 0; i + inline int date(T *attr, const unsigned int nb_attr) { + int res = -1; + cimg::mutex(6); +#if cimg_OS==2 + SYSTEMTIME st; + GetLocalTime(&st); + for (unsigned int i = 0; itm_year + 1900: + attr[i]==1?st->tm_mon + 1: + attr[i]==2?st->tm_mday: + attr[i]==3?st->tm_wday: + attr[i]==4?st->tm_hour: + attr[i]==5?st->tm_min: + attr[i]==6?st->tm_sec: + attr[i]==7?_st.tv_usec/1000:-1); + attr[i] = (T)res; + } +#endif + cimg::mutex(6,0); + return res; + } + + //! Get current local time (single-attribute version). + /** + \param attr Type of requested time attribute. + Can be { 0=year | 1=month | 2=day | 3=day of week | 4=hour | 5=minute | 6=second | + 7=millisecond } + \return Specified attribute or -1 if an error occurred. + **/ + inline int date(unsigned int attr) { + int out = (int)attr; + return date(&out,1); + } + + // Get/set path to the \c curl binary. + inline const char *curl_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c dcraw binary. + inline const char *dcraw_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the FFMPEG's \c ffmpeg binary. + inline const char *ffmpeg_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the GraphicsMagick's \c gm binary. + inline const char* graphicsmagick_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c gunzip binary. + inline const char *gunzip_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c gzip binary. + inline const char *gzip_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the ImageMagick's \c convert binary. + inline const char* imagemagick_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the Medcon's \c medcon binary. + inline const char* medcon_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to store temporary files. + inline const char* temporary_path(const char *const user_path=0, const bool reinit_path=false); + + // Get/set path to the \c wget binary. + inline const char *wget_path(const char *const user_path=0, const bool reinit_path=false); + + //! Split filename into two C-strings \c body and \c extension. + /** + filename and body must not overlap! + **/ + inline const char *split_filename(const char *const filename, char *const body=0) { + if (!filename) { if (body) *body = 0; return ""; } + const char * p = std::strrchr(filename,'.'); + if (!p || std::strchr(p,'/') || std::strchr(p,'\\')) { // No extension. + if (body) std::strcpy(body,filename); + return filename + std::strlen(filename); + } + const unsigned int l = (unsigned int)(p - filename); + if (body) { if (l) std::memcpy(body,filename,l); body[l] = 0; } + return p + 1; + } + + // Generate a numbered version of a filename. + inline char* number_filename(const char *const filename, const int number, + const unsigned int digits, char *const str); + + //! Read data from file. + /** + \param[out] ptr Pointer to memory buffer that will contain the binary data read from file. + \param nmemb Number of elements to read. + \param stream File to read data from. + \return Number of read elements. + \note Same as std::fread() but may display warning message if all elements could not be read. + **/ + template + inline size_t fread(T *const ptr, const size_t nmemb, std::FILE *stream) { + if (!ptr || !stream) + throw CImgArgumentException("cimg::fread(): Invalid reading request of %u %s%s from file %p to buffer %p.", + nmemb,cimg::type::string(),nmemb>1?"s":"",stream,ptr); + if (!nmemb) return 0; + const size_t wlimitT = 63*1024*1024, wlimit = wlimitT/sizeof(T); + size_t to_read = nmemb, al_read = 0, l_to_read = 0, l_al_read = 0; + do { + l_to_read = (to_read*sizeof(T))0); + if (to_read>0) + warn("cimg::fread(): Only %lu/%lu elements could be read from file.", + (unsigned long)al_read,(unsigned long)nmemb); + return al_read; + } + + //! Write data to file. + /** + \param ptr Pointer to memory buffer containing the binary data to write on file. + \param nmemb Number of elements to write. + \param[out] stream File to write data on. + \return Number of written elements. + \note Similar to std::fwrite but may display warning messages if all elements could not be written. + **/ + template + inline size_t fwrite(const T *ptr, const size_t nmemb, std::FILE *stream) { + if (!ptr || !stream) + throw CImgArgumentException("cimg::fwrite(): Invalid writing request of %u %s%s from buffer %p to file %p.", + nmemb,cimg::type::string(),nmemb>1?"s":"",ptr,stream); + if (!nmemb) return 0; + const size_t wlimitT = 63*1024*1024, wlimit = wlimitT/sizeof(T); + size_t to_write = nmemb, al_write = 0, l_to_write = 0, l_al_write = 0; + do { + l_to_write = (to_write*sizeof(T))0); + if (to_write>0) + warn("cimg::fwrite(): Only %lu/%lu elements could be written in file.", + (unsigned long)al_write,(unsigned long)nmemb); + return al_write; + } + + //! Create an empty file. + /** + \param file Input file (can be \c 0 if \c filename is set). + \param filename Filename, as a C-string (can be \c 0 if \c file is set). + **/ + inline void fempty(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException("cimg::fempty(): Specified filename is (null)."); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + if (!file) cimg::fclose(nfile); + } + + // Try to guess format from an image file. + inline const char *ftype(std::FILE *const file, const char *const filename); + + // Get or set load from network mode (can be { 0=disabled | 1=enabled }). + inline bool& network_mode(const bool value, const bool is_set) { + static bool mode = true; + if (is_set) { cimg::mutex(0); mode = value; cimg::mutex(0,0); } + return mode; + } + + inline bool& network_mode() { + return network_mode(false,false); + } + + // Load file from network as a local temporary file. + inline char *load_network(const char *const url, char *const filename_local, + const unsigned int timeout=0, const bool try_fallback=false, + const char *const referer=0); + + //! Return options specified on the command line. + inline const char* option(const char *const name, const int argc, const char *const *const argv, + const char *const _default, const char *const usage, const bool reset_static) { + static bool first = true, visu = false; + if (reset_static) { first = true; return 0; } + const char *res = 0; + if (first) { + first = false; + visu = cimg::option("-h",argc,argv,(char*)0,(char*)0,false)!=0; + visu |= cimg::option("-help",argc,argv,(char*)0,(char*)0,false)!=0; + visu |= cimg::option("--help",argc,argv,(char*)0,(char*)0,false)!=0; + } + if (!name && visu) { + if (usage) { + std::fprintf(cimg::output(),"\n %s%s%s",cimg::t_red,cimg::basename(argv[0]),cimg::t_normal); + std::fprintf(cimg::output(),": %s",usage); + std::fprintf(cimg::output()," (%s, %s)\n\n",cimg_date,cimg_time); + } + if (_default) std::fprintf(cimg::output(),"%s\n",_default); + } + if (name) { + if (argc>0) { + int k = 0; + while (k Operating System: %s%-13s%s %s('cimg_OS'=%d)%s\n", + cimg::t_bold, + cimg_OS==1?"Unix":(cimg_OS==2?"Windows":"Unknown"), + cimg::t_normal,cimg::t_green, + cimg_OS, + cimg::t_normal); + + std::fprintf(cimg::output()," > CPU endianness: %s%s Endian%s\n", + cimg::t_bold, + cimg::endianness()?"Big":"Little", + cimg::t_normal); + + std::fprintf(cimg::output()," > Verbosity mode: %s%-13s%s %s('cimg_verbosity'=%d)%s\n", + cimg::t_bold, + cimg_verbosity==0?"Quiet": + cimg_verbosity==1?"Console": + cimg_verbosity==2?"Dialog": + cimg_verbosity==3?"Console+Warnings":"Dialog+Warnings", + cimg::t_normal,cimg::t_green, + cimg_verbosity, + cimg::t_normal); + + std::fprintf(cimg::output()," > Stricts warnings: %s%-13s%s %s('cimg_strict_warnings' %s)%s\n", + cimg::t_bold, +#ifdef cimg_strict_warnings + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Support for C++11: %s%-13s%s %s('cimg_use_cpp11'=%d)%s\n", + cimg::t_bold, + cimg_use_cpp11?"Yes":"No", + cimg::t_normal,cimg::t_green, + (int)cimg_use_cpp11, + cimg::t_normal); + + std::fprintf(cimg::output()," > Using VT100 messages: %s%-13s%s %s('cimg_use_vt100' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_vt100 + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Display type: %s%-13s%s %s('cimg_display'=%d)%s\n", + cimg::t_bold, + cimg_display==0?"No display":cimg_display==1?"X11":cimg_display==2?"Windows GDI":"Unknown", + cimg::t_normal,cimg::t_green, + (int)cimg_display, + cimg::t_normal); + +#if cimg_display==1 + std::fprintf(cimg::output()," > Using XShm for X11: %s%-13s%s %s('cimg_use_xshm' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_xshm + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using XRand for X11: %s%-13s%s %s('cimg_use_xrandr' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_xrandr + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); +#endif + std::fprintf(cimg::output()," > Using OpenMP: %s%-13s%s %s('cimg_use_openmp' %s)%s\n", + cimg::t_bold, +#if cimg_use_openmp!=0 + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + std::fprintf(cimg::output()," > Using PNG library: %s%-13s%s %s('cimg_use_png' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_png + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + std::fprintf(cimg::output()," > Using JPEG library: %s%-13s%s %s('cimg_use_jpeg' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_jpeg + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using TIFF library: %s%-13s%s %s('cimg_use_tiff' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_tiff + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using Magick++ library: %s%-13s%s %s('cimg_use_magick' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_magick + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using FFTW3 library: %s%-13s%s %s('cimg_use_fftw3' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_fftw3 + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + std::fprintf(cimg::output()," > Using LAPACK library: %s%-13s%s %s('cimg_use_lapack' %s)%s\n", + cimg::t_bold, +#ifdef cimg_use_lapack + "Yes",cimg::t_normal,cimg::t_green,"defined", +#else + "No",cimg::t_normal,cimg::t_green,"undefined", +#endif + cimg::t_normal); + + char *const tmp = new char[1024]; + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::curl_path()); + std::fprintf(cimg::output()," > Path of 'curl': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::dcraw_path()); + std::fprintf(cimg::output()," > Path of 'dcraw': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::ffmpeg_path()); + std::fprintf(cimg::output()," > Path of 'ffmpeg': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::graphicsmagick_path()); + std::fprintf(cimg::output()," > Path of 'graphicsmagick': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::gunzip_path()); + std::fprintf(cimg::output()," > Path of 'gunzip': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::gzip_path()); + std::fprintf(cimg::output()," > Path of 'gzip': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::imagemagick_path()); + std::fprintf(cimg::output()," > Path of 'imagemagick': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::medcon_path()); + std::fprintf(cimg::output()," > Path of 'medcon': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::temporary_path()); + std::fprintf(cimg::output()," > Temporary path: %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + cimg_snprintf(tmp,1024,"\"%.1020s\"",cimg::wget_path()); + std::fprintf(cimg::output()," > Path of 'wget': %s%-13s%s\n", + cimg::t_bold, + tmp, + cimg::t_normal); + + std::fprintf(cimg::output(),"\n"); + delete[] tmp; + } + + // Declare LAPACK function signatures if LAPACK support is enabled. +#ifdef cimg_use_lapack + template + inline void getrf(int &N, T *lapA, int *IPIV, int &INFO) { + dgetrf_(&N,&N,lapA,&N,IPIV,&INFO); + } + + inline void getrf(int &N, float *lapA, int *IPIV, int &INFO) { + sgetrf_(&N,&N,lapA,&N,IPIV,&INFO); + } + + template + inline void getri(int &N, T *lapA, int *IPIV, T* WORK, int &LWORK, int &INFO) { + dgetri_(&N,lapA,&N,IPIV,WORK,&LWORK,&INFO); + } + + inline void getri(int &N, float *lapA, int *IPIV, float* WORK, int &LWORK, int &INFO) { + sgetri_(&N,lapA,&N,IPIV,WORK,&LWORK,&INFO); + } + + template + inline void gesvd(char &JOB, int &M, int &N, T *lapA, int &MN, + T *lapS, T *lapU, T *lapV, T *WORK, int &LWORK, int &INFO) { + dgesvd_(&JOB,&JOB,&M,&N,lapA,&MN,lapS,lapU,&M,lapV,&N,WORK,&LWORK,&INFO); + } + + inline void gesvd(char &JOB, int &M, int &N, float *lapA, int &MN, + float *lapS, float *lapU, float *lapV, float *WORK, int &LWORK, int &INFO) { + sgesvd_(&JOB,&JOB,&M,&N,lapA,&MN,lapS,lapU,&M,lapV,&N,WORK,&LWORK,&INFO); + } + + template + inline void getrs(char &TRANS, int &N, T *lapA, int *IPIV, T *lapB, int &INFO) { + int one = 1; + dgetrs_(&TRANS,&N,&one,lapA,&N,IPIV,lapB,&N,&INFO); + } + + inline void getrs(char &TRANS, int &N, float *lapA, int *IPIV, float *lapB, int &INFO) { + int one = 1; + sgetrs_(&TRANS,&N,&one,lapA,&N,IPIV,lapB,&N,&INFO); + } + + template + inline void syev(char &JOB, char &UPLO, int &N, T *lapA, T *lapW, T *WORK, int &LWORK, int &INFO) { + dsyev_(&JOB,&UPLO,&N,lapA,&N,lapW,WORK,&LWORK,&INFO); + } + + inline void syev(char &JOB, char &UPLO, int &N, float *lapA, float *lapW, float *WORK, int &LWORK, int &INFO) { + ssyev_(&JOB,&UPLO,&N,lapA,&N,lapW,WORK,&LWORK,&INFO); + } + + template + inline void sgels(char & TRANS, int &M, int &N, int &NRHS, T* lapA, int &LDA, + T* lapB, int &LDB, T* WORK, int &LWORK, int &INFO) { + dgels_(&TRANS, &M, &N, &NRHS, lapA, &LDA, lapB, &LDB, WORK, &LWORK, &INFO); + } + + inline void sgels(char & TRANS, int &M, int &N, int &NRHS, float* lapA, int &LDA, + float* lapB, int &LDB, float* WORK, int &LWORK, int &INFO) { + sgels_(&TRANS, &M, &N, &NRHS, lapA, &LDA, lapB, &LDB, WORK, &LWORK, &INFO); + } + +#endif + + } // namespace cimg { ... + + /*------------------------------------------------ + # + # + # Definition of mathematical operators and + # external functions. + # + # + -------------------------------------------------*/ + +#define _cimg_create_operator(typ) \ + template \ + inline CImg::type> operator+(const typ val, const CImg& img) { \ + return img + val; \ + } \ + template \ + inline CImg::type> operator-(const typ val, const CImg& img) { \ + typedef typename cimg::superset::type Tt; \ + return CImg(img._width,img._height,img._depth,img._spectrum,val)-=img; \ + } \ + template \ + inline CImg::type> operator*(const typ val, const CImg& img) { \ + return img*val; \ + } \ + template \ + inline CImg::type> operator/(const typ val, const CImg& img) { \ + return val*img.get_invert(); \ + } \ + template \ + inline CImg::type> operator&(const typ val, const CImg& img) { \ + return img & val; \ + } \ + template \ + inline CImg::type> operator|(const typ val, const CImg& img) { \ + return img | val; \ + } \ + template \ + inline CImg::type> operator^(const typ val, const CImg& img) { \ + return img ^ val; \ + } \ + template \ + inline bool operator==(const typ val, const CImg& img) { \ + return img == val; \ + } \ + template \ + inline bool operator!=(const typ val, const CImg& img) { \ + return img != val; \ + } + + _cimg_create_operator(bool) + _cimg_create_operator(unsigned char) + _cimg_create_operator(char) + _cimg_create_operator(signed char) + _cimg_create_operator(unsigned short) + _cimg_create_operator(short) + _cimg_create_operator(unsigned int) + _cimg_create_operator(int) + _cimg_create_operator(cimg_uint64) + _cimg_create_operator(cimg_int64) + _cimg_create_operator(float) + _cimg_create_operator(double) + _cimg_create_operator(long double) + + template + inline CImg<_cimg_Tfloat> operator+(const char *const expression, const CImg& img) { + return img + expression; + } + + template + inline CImg<_cimg_Tfloat> operator-(const char *const expression, const CImg& img) { + return CImg<_cimg_Tfloat>(img,false).fill(expression,true)-=img; + } + + template + inline CImg<_cimg_Tfloat> operator*(const char *const expression, const CImg& img) { + return img*expression; + } + + template + inline CImg<_cimg_Tfloat> operator/(const char *const expression, const CImg& img) { + return expression*img.get_invert(); + } + + template + inline CImg operator&(const char *const expression, const CImg& img) { + return img & expression; + } + + template + inline CImg operator|(const char *const expression, const CImg& img) { + return img | expression; + } + + template + inline CImg operator^(const char *const expression, const CImg& img) { + return img ^ expression; + } + + template + inline bool operator==(const char *const expression, const CImg& img) { + return img==expression; + } + + template + inline bool operator!=(const char *const expression, const CImg& img) { + return img!=expression; + } + + template + inline CImg transpose(const CImg& instance) { + return instance.get_transpose(); + } + + template + inline CImg<_cimg_Tfloat> invert(const CImg& instance, const bool use_LU=true) { + return instance.get_invert(use_LU); + } + + template + inline CImg<_cimg_Tfloat> pseudoinvert(const CImg& instance, const bool use_LU=false) { + return instance.get_pseudoinvert(use_LU); + } + +#define _cimg_create_pointwise_function(name) \ + template \ + inline CImg<_cimg_Tfloat> name(const CImg& instance) { \ + return instance.get_##name(); \ + } + + _cimg_create_pointwise_function(sqr) + _cimg_create_pointwise_function(sqrt) + _cimg_create_pointwise_function(exp) + _cimg_create_pointwise_function(log) + _cimg_create_pointwise_function(log2) + _cimg_create_pointwise_function(log10) + _cimg_create_pointwise_function(abs) + _cimg_create_pointwise_function(sign) + _cimg_create_pointwise_function(cos) + _cimg_create_pointwise_function(sin) + _cimg_create_pointwise_function(sinc) + _cimg_create_pointwise_function(tan) + _cimg_create_pointwise_function(acos) + _cimg_create_pointwise_function(asin) + _cimg_create_pointwise_function(atan) + _cimg_create_pointwise_function(cosh) + _cimg_create_pointwise_function(sinh) + _cimg_create_pointwise_function(tanh) + _cimg_create_pointwise_function(acosh) + _cimg_create_pointwise_function(asinh) + _cimg_create_pointwise_function(atanh) + + /*----------------------------------- + # + # Define the CImgDisplay structure + # + ----------------------------------*/ + //! Allow the creation of windows, display images on them and manage user events (keyboard, mouse and windows events). + /** + CImgDisplay methods rely on a low-level graphic library to perform: it can be either \b X-Window + (X11, for Unix-based systems) or \b GDI32 (for Windows-based systems). + If both libraries are missing, CImgDisplay will not be able to display images on screen, and will enter + a minimal mode where warning messages will be outputted each time the program is trying to call one of the + CImgDisplay method. + + The configuration variable \c cimg_display tells about the graphic library used. + It is set automatically by \CImg when one of these graphic libraries has been detected. + But, you can override its value if necessary. Valid choices are: + - 0: Disable display capabilities. + - 1: Use \b X-Window (X11) library. + - 2: Use \b GDI32 library. + + Remember to link your program against \b X11 or \b GDI32 libraries if you use CImgDisplay. + **/ + struct CImgDisplay { + cimg_uint64 _timer, _fps_frames, _fps_timer; + unsigned int _width, _height, _normalization; + float _fps_fps, _min, _max; + bool _is_fullscreen; + char *_title; + unsigned int _window_width, _window_height, _button, *_keys, *_released_keys; + int _window_x, _window_y, _mouse_x, _mouse_y, _wheel; + bool _is_closed, _is_resized, _is_moved, _is_event, + _is_keyESC, _is_keyF1, _is_keyF2, _is_keyF3, _is_keyF4, _is_keyF5, _is_keyF6, _is_keyF7, + _is_keyF8, _is_keyF9, _is_keyF10, _is_keyF11, _is_keyF12, _is_keyPAUSE, _is_key1, _is_key2, + _is_key3, _is_key4, _is_key5, _is_key6, _is_key7, _is_key8, _is_key9, _is_key0, + _is_keyBACKSPACE, _is_keyINSERT, _is_keyHOME, _is_keyPAGEUP, _is_keyTAB, _is_keyQ, _is_keyW, _is_keyE, + _is_keyR, _is_keyT, _is_keyY, _is_keyU, _is_keyI, _is_keyO, _is_keyP, _is_keyDELETE, + _is_keyEND, _is_keyPAGEDOWN, _is_keyCAPSLOCK, _is_keyA, _is_keyS, _is_keyD, _is_keyF, _is_keyG, + _is_keyH, _is_keyJ, _is_keyK, _is_keyL, _is_keyENTER, _is_keySHIFTLEFT, _is_keyZ, _is_keyX, + _is_keyC, _is_keyV, _is_keyB, _is_keyN, _is_keyM, _is_keySHIFTRIGHT, _is_keyARROWUP, _is_keyCTRLLEFT, + _is_keyAPPLEFT, _is_keyALT, _is_keySPACE, _is_keyALTGR, _is_keyAPPRIGHT, _is_keyMENU, _is_keyCTRLRIGHT, + _is_keyARROWLEFT, _is_keyARROWDOWN, _is_keyARROWRIGHT, _is_keyPAD0, _is_keyPAD1, _is_keyPAD2, _is_keyPAD3, + _is_keyPAD4, _is_keyPAD5, _is_keyPAD6, _is_keyPAD7, _is_keyPAD8, _is_keyPAD9, _is_keyPADADD, _is_keyPADSUB, + _is_keyPADMUL, _is_keyPADDIV; + + //@} + //--------------------------- + // + //! \name Plugins + //@{ + //--------------------------- + +#ifdef cimgdisplay_plugin +#include cimgdisplay_plugin +#endif +#ifdef cimgdisplay_plugin1 +#include cimgdisplay_plugin1 +#endif +#ifdef cimgdisplay_plugin2 +#include cimgdisplay_plugin2 +#endif +#ifdef cimgdisplay_plugin3 +#include cimgdisplay_plugin3 +#endif +#ifdef cimgdisplay_plugin4 +#include cimgdisplay_plugin4 +#endif +#ifdef cimgdisplay_plugin5 +#include cimgdisplay_plugin5 +#endif +#ifdef cimgdisplay_plugin6 +#include cimgdisplay_plugin6 +#endif +#ifdef cimgdisplay_plugin7 +#include cimgdisplay_plugin7 +#endif +#ifdef cimgdisplay_plugin8 +#include cimgdisplay_plugin8 +#endif + + //@} + //-------------------------------------------------------- + // + //! \name Constructors / Destructor / Instance Management + //@{ + //-------------------------------------------------------- + + //! Destructor. + /** + \note If the associated window is visible on the screen, it is closed by the call to the destructor. + **/ + ~CImgDisplay() { + assign(); + delete[] _keys; + delete[] _released_keys; + } + + //! Construct an empty display. + /** + \note Constructing an empty CImgDisplay instance does not make a window appearing on the screen, until + display of valid data is performed. + \par Example + \code + CImgDisplay disp; // Does actually nothing + ... + disp.display(img); // Construct new window and display image in it + \endcode + **/ + CImgDisplay(): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(); + } + + //! Construct a display with specified dimensions. + /** \param width Window width. + \param height Window height. + \param title Window title. + \param normalization Normalization type + (0=none, 1=always, 2=once, 3=pixel type-dependent, see normalization()). + \param is_fullscreen Tells if fullscreen mode is enabled. + \param is_closed Tells if associated window is initially visible or not. + \note A black background is initially displayed on the associated window. + **/ + CImgDisplay(const unsigned int width, const unsigned int height, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(width,height,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display from an image. + /** \param img Image used as a model to create the window. + \param title Window title. + \param normalization Normalization type + (0=none, 1=always, 2=once, 3=pixel type-dependent, see normalization()). + \param is_fullscreen Tells if fullscreen mode is enabled. + \param is_closed Tells if associated window is initially visible or not. + \note The pixels of the input image are initially displayed on the associated window. + **/ + template + explicit CImgDisplay(const CImg& img, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(img,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display from an image list. + /** \param list The images list to display. + \param title Window title. + \param normalization Normalization type + (0=none, 1=always, 2=once, 3=pixel type-dependent, see normalization()). + \param is_fullscreen Tells if fullscreen mode is enabled. + \param is_closed Tells if associated window is initially visible or not. + \note All images of the list, appended along the X-axis, are initially displayed on the associated window. + **/ + template + explicit CImgDisplay(const CImgList& list, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(list,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display as a copy of an existing one. + /** + \param disp Display instance to copy. + \note The pixel buffer of the input window is initially displayed on the associated window. + **/ + CImgDisplay(const CImgDisplay& disp): + _width(0),_height(0),_normalization(0), + _min(0),_max(0), + _is_fullscreen(false), + _title(0), + _window_width(0),_window_height(0),_button(0), + _keys(new unsigned int[128]),_released_keys(new unsigned int[128]), + _window_x(cimg::type::min()),_window_y(cimg::type::min()), + _mouse_x(-1),_mouse_y(-1),_wheel(0), + _is_closed(true),_is_resized(false),_is_moved(false),_is_event(false) { + assign(disp); + } + + //! Take a screenshot. + /** + \param[out] img Output screenshot. Can be empty on input + **/ + template + static void screenshot(CImg& img) { + return screenshot(0,0,cimg::type::max(),cimg::type::max(),img); + } + +#if cimg_display==0 + + static void _no_display_exception() { + throw CImgDisplayException("CImgDisplay(): No display available."); + } + + //! Destructor - Empty constructor \inplace. + /** + \note Replace the current instance by an empty display. + **/ + CImgDisplay& assign() { + return flush(); + } + + //! Construct a display with specified dimensions \inplace. + /** + **/ + CImgDisplay& assign(const unsigned int width, const unsigned int height, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false) { + cimg::unused(width,height,title,normalization,is_fullscreen,is_closed); + _no_display_exception(); + return assign(); + } + + //! Construct a display from an image \inplace. + /** + **/ + template + CImgDisplay& assign(const CImg& img, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false) { + _no_display_exception(); + return assign(img._width,img._height,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display from an image list \inplace. + /** + **/ + template + CImgDisplay& assign(const CImgList& list, + const char *const title=0, const unsigned int normalization=3, + const bool is_fullscreen=false, const bool is_closed=false) { + _no_display_exception(); + return assign(list._width,list._width,title,normalization,is_fullscreen,is_closed); + } + + //! Construct a display as a copy of another one \inplace. + /** + **/ + CImgDisplay& assign(const CImgDisplay &disp) { + _no_display_exception(); + return assign(disp._width,disp._height); + } + +#endif + + //! Return a reference to an empty display. + /** + \note Can be useful for writing function prototypes where one of the argument (of type CImgDisplay&) + must have a default value. + \par Example + \code + void foo(CImgDisplay& disp=CImgDisplay::empty()); + \endcode + **/ + static CImgDisplay& empty() { + static CImgDisplay _empty; + return _empty.assign(); + } + + //! Return a reference to an empty display \const. + static const CImgDisplay& const_empty() { + static const CImgDisplay _empty; + return _empty; + } + +#define cimg_fitscreen(dx,dy,dz) CImgDisplay::_fitscreen(dx,dy,dz,-25,-85,false), \ + CImgDisplay::_fitscreen(dx,dy,dz,-25,-85,true) + static unsigned int _fitscreen(const unsigned int dx, const unsigned int dy, const unsigned int dz, + const int dmin, const int dmax, const bool return_y) { + const int + u = CImgDisplay::screen_width(), + v = CImgDisplay::screen_height(); + const float + mw = dmin<0?cimg::round(u*-dmin/100.f):(float)dmin, + mh = dmin<0?cimg::round(v*-dmin/100.f):(float)dmin, + Mw = dmax<0?cimg::round(u*-dmax/100.f):(float)dmax, + Mh = dmax<0?cimg::round(v*-dmax/100.f):(float)dmax; + float + w = (float)std::max(1U,dx), + h = (float)std::max(1U,dy); + if (dz>1) { w+=dz; h+=dz; } + if (wMw) { h = h*Mw/w; w = Mw; } + if (h>Mh) { w = w*Mh/h; h = Mh; } + if (wdisp = img is equivalent to disp.display(img). + **/ + template + CImgDisplay& operator=(const CImg& img) { + return display(img); + } + + //! Display list of images on associated window. + /** + \note disp = list is equivalent to disp.display(list). + **/ + template + CImgDisplay& operator=(const CImgList& list) { + return display(list); + } + + //! Construct a display as a copy of another one \inplace. + /** + \note Equivalent to assign(const CImgDisplay&). + **/ + CImgDisplay& operator=(const CImgDisplay& disp) { + return assign(disp); + } + + //! Return \c false if display is empty, \c true otherwise. + /** + \note if (disp) { ... } is equivalent to if (!disp.is_empty()) { ... }. + **/ + operator bool() const { + return !is_empty(); + } + + //@} + //------------------------------------------ + // + //! \name Instance Checking + //@{ + //------------------------------------------ + + //! Return \c true if display is empty, \c false otherwise. + /** + **/ + bool is_empty() const { + return !(_width && _height); + } + + //! Return \c true if display is closed (i.e. not visible on the screen), \c false otherwise. + /** + \note + - When a user physically closes the associated window, the display is set to closed. + - A closed display is not destroyed. Its associated window can be show again on the screen using show(). + **/ + bool is_closed() const { + return _is_closed; + } + + //! Return \c true if associated window has been resized on the screen, \c false otherwise. + /** + **/ + bool is_resized() const { + return _is_resized; + } + + //! Return \c true if associated window has been moved on the screen, \c false otherwise. + /** + **/ + bool is_moved() const { + return _is_moved; + } + + //! Return \c true if any event has occurred on the associated window, \c false otherwise. + /** + **/ + bool is_event() const { + return _is_event; + } + + //! Return \c true if current display is in fullscreen mode, \c false otherwise. + /** + **/ + bool is_fullscreen() const { + return _is_fullscreen; + } + + //! Return \c true if any key is being pressed on the associated window, \c false otherwise. + /** + \note The methods below do the same only for specific keys. + **/ + bool is_key() const { + return _is_keyESC || _is_keyF1 || _is_keyF2 || _is_keyF3 || + _is_keyF4 || _is_keyF5 || _is_keyF6 || _is_keyF7 || + _is_keyF8 || _is_keyF9 || _is_keyF10 || _is_keyF11 || + _is_keyF12 || _is_keyPAUSE || _is_key1 || _is_key2 || + _is_key3 || _is_key4 || _is_key5 || _is_key6 || + _is_key7 || _is_key8 || _is_key9 || _is_key0 || + _is_keyBACKSPACE || _is_keyINSERT || _is_keyHOME || + _is_keyPAGEUP || _is_keyTAB || _is_keyQ || _is_keyW || + _is_keyE || _is_keyR || _is_keyT || _is_keyY || + _is_keyU || _is_keyI || _is_keyO || _is_keyP || + _is_keyDELETE || _is_keyEND || _is_keyPAGEDOWN || + _is_keyCAPSLOCK || _is_keyA || _is_keyS || _is_keyD || + _is_keyF || _is_keyG || _is_keyH || _is_keyJ || + _is_keyK || _is_keyL || _is_keyENTER || + _is_keySHIFTLEFT || _is_keyZ || _is_keyX || _is_keyC || + _is_keyV || _is_keyB || _is_keyN || _is_keyM || + _is_keySHIFTRIGHT || _is_keyARROWUP || _is_keyCTRLLEFT || + _is_keyAPPLEFT || _is_keyALT || _is_keySPACE || _is_keyALTGR || + _is_keyAPPRIGHT || _is_keyMENU || _is_keyCTRLRIGHT || + _is_keyARROWLEFT || _is_keyARROWDOWN || _is_keyARROWRIGHT || + _is_keyPAD0 || _is_keyPAD1 || _is_keyPAD2 || + _is_keyPAD3 || _is_keyPAD4 || _is_keyPAD5 || + _is_keyPAD6 || _is_keyPAD7 || _is_keyPAD8 || + _is_keyPAD9 || _is_keyPADADD || _is_keyPADSUB || + _is_keyPADMUL || _is_keyPADDIV; + } + + //! Return \c true if key specified by given keycode is being pressed on the associated window, \c false otherwise. + /** + \param keycode Keycode to test. + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + \par Example + \code + CImgDisplay disp(400,400); + while (!disp.is_closed()) { + if (disp.key(cimg::keyTAB)) { ... } // Equivalent to 'if (disp.is_keyTAB())' + disp.wait(); + } + \endcode + **/ + bool is_key(const unsigned int keycode) const { +#define _cimg_iskey_test(k) if (keycode==cimg::key##k) return _is_key##k; + _cimg_iskey_test(ESC); _cimg_iskey_test(F1); _cimg_iskey_test(F2); _cimg_iskey_test(F3); + _cimg_iskey_test(F4); _cimg_iskey_test(F5); _cimg_iskey_test(F6); _cimg_iskey_test(F7); + _cimg_iskey_test(F8); _cimg_iskey_test(F9); _cimg_iskey_test(F10); _cimg_iskey_test(F11); + _cimg_iskey_test(F12); _cimg_iskey_test(PAUSE); _cimg_iskey_test(1); _cimg_iskey_test(2); + _cimg_iskey_test(3); _cimg_iskey_test(4); _cimg_iskey_test(5); _cimg_iskey_test(6); + _cimg_iskey_test(7); _cimg_iskey_test(8); _cimg_iskey_test(9); _cimg_iskey_test(0); + _cimg_iskey_test(BACKSPACE); _cimg_iskey_test(INSERT); _cimg_iskey_test(HOME); + _cimg_iskey_test(PAGEUP); _cimg_iskey_test(TAB); _cimg_iskey_test(Q); _cimg_iskey_test(W); + _cimg_iskey_test(E); _cimg_iskey_test(R); _cimg_iskey_test(T); _cimg_iskey_test(Y); + _cimg_iskey_test(U); _cimg_iskey_test(I); _cimg_iskey_test(O); _cimg_iskey_test(P); + _cimg_iskey_test(DELETE); _cimg_iskey_test(END); _cimg_iskey_test(PAGEDOWN); + _cimg_iskey_test(CAPSLOCK); _cimg_iskey_test(A); _cimg_iskey_test(S); _cimg_iskey_test(D); + _cimg_iskey_test(F); _cimg_iskey_test(G); _cimg_iskey_test(H); _cimg_iskey_test(J); + _cimg_iskey_test(K); _cimg_iskey_test(L); _cimg_iskey_test(ENTER); + _cimg_iskey_test(SHIFTLEFT); _cimg_iskey_test(Z); _cimg_iskey_test(X); _cimg_iskey_test(C); + _cimg_iskey_test(V); _cimg_iskey_test(B); _cimg_iskey_test(N); _cimg_iskey_test(M); + _cimg_iskey_test(SHIFTRIGHT); _cimg_iskey_test(ARROWUP); _cimg_iskey_test(CTRLLEFT); + _cimg_iskey_test(APPLEFT); _cimg_iskey_test(ALT); _cimg_iskey_test(SPACE); _cimg_iskey_test(ALTGR); + _cimg_iskey_test(APPRIGHT); _cimg_iskey_test(MENU); _cimg_iskey_test(CTRLRIGHT); + _cimg_iskey_test(ARROWLEFT); _cimg_iskey_test(ARROWDOWN); _cimg_iskey_test(ARROWRIGHT); + _cimg_iskey_test(PAD0); _cimg_iskey_test(PAD1); _cimg_iskey_test(PAD2); + _cimg_iskey_test(PAD3); _cimg_iskey_test(PAD4); _cimg_iskey_test(PAD5); + _cimg_iskey_test(PAD6); _cimg_iskey_test(PAD7); _cimg_iskey_test(PAD8); + _cimg_iskey_test(PAD9); _cimg_iskey_test(PADADD); _cimg_iskey_test(PADSUB); + _cimg_iskey_test(PADMUL); _cimg_iskey_test(PADDIV); + return false; + } + + //! Return \c true if key specified by given keycode is being pressed on the associated window, \c false otherwise. + /** + \param keycode C-string containing the keycode label of the key to test. + \note Use it when the key you want to test can be dynamically set by the user. + \par Example + \code + CImgDisplay disp(400,400); + const char *const keycode = "TAB"; + while (!disp.is_closed()) { + if (disp.is_key(keycode)) { ... } // Equivalent to 'if (disp.is_keyTAB())' + disp.wait(); + } + \endcode + **/ + bool& is_key(const char *const keycode) { + static bool f = false; + f = false; +#define _cimg_iskey_test2(k) if (!cimg::strcasecmp(keycode,#k)) return _is_key##k; + _cimg_iskey_test2(ESC); _cimg_iskey_test2(F1); _cimg_iskey_test2(F2); _cimg_iskey_test2(F3); + _cimg_iskey_test2(F4); _cimg_iskey_test2(F5); _cimg_iskey_test2(F6); _cimg_iskey_test2(F7); + _cimg_iskey_test2(F8); _cimg_iskey_test2(F9); _cimg_iskey_test2(F10); _cimg_iskey_test2(F11); + _cimg_iskey_test2(F12); _cimg_iskey_test2(PAUSE); _cimg_iskey_test2(1); _cimg_iskey_test2(2); + _cimg_iskey_test2(3); _cimg_iskey_test2(4); _cimg_iskey_test2(5); _cimg_iskey_test2(6); + _cimg_iskey_test2(7); _cimg_iskey_test2(8); _cimg_iskey_test2(9); _cimg_iskey_test2(0); + _cimg_iskey_test2(BACKSPACE); _cimg_iskey_test2(INSERT); _cimg_iskey_test2(HOME); + _cimg_iskey_test2(PAGEUP); _cimg_iskey_test2(TAB); _cimg_iskey_test2(Q); _cimg_iskey_test2(W); + _cimg_iskey_test2(E); _cimg_iskey_test2(R); _cimg_iskey_test2(T); _cimg_iskey_test2(Y); + _cimg_iskey_test2(U); _cimg_iskey_test2(I); _cimg_iskey_test2(O); _cimg_iskey_test2(P); + _cimg_iskey_test2(DELETE); _cimg_iskey_test2(END); _cimg_iskey_test2(PAGEDOWN); + _cimg_iskey_test2(CAPSLOCK); _cimg_iskey_test2(A); _cimg_iskey_test2(S); _cimg_iskey_test2(D); + _cimg_iskey_test2(F); _cimg_iskey_test2(G); _cimg_iskey_test2(H); _cimg_iskey_test2(J); + _cimg_iskey_test2(K); _cimg_iskey_test2(L); _cimg_iskey_test2(ENTER); + _cimg_iskey_test2(SHIFTLEFT); _cimg_iskey_test2(Z); _cimg_iskey_test2(X); _cimg_iskey_test2(C); + _cimg_iskey_test2(V); _cimg_iskey_test2(B); _cimg_iskey_test2(N); _cimg_iskey_test2(M); + _cimg_iskey_test2(SHIFTRIGHT); _cimg_iskey_test2(ARROWUP); _cimg_iskey_test2(CTRLLEFT); + _cimg_iskey_test2(APPLEFT); _cimg_iskey_test2(ALT); _cimg_iskey_test2(SPACE); _cimg_iskey_test2(ALTGR); + _cimg_iskey_test2(APPRIGHT); _cimg_iskey_test2(MENU); _cimg_iskey_test2(CTRLRIGHT); + _cimg_iskey_test2(ARROWLEFT); _cimg_iskey_test2(ARROWDOWN); _cimg_iskey_test2(ARROWRIGHT); + _cimg_iskey_test2(PAD0); _cimg_iskey_test2(PAD1); _cimg_iskey_test2(PAD2); + _cimg_iskey_test2(PAD3); _cimg_iskey_test2(PAD4); _cimg_iskey_test2(PAD5); + _cimg_iskey_test2(PAD6); _cimg_iskey_test2(PAD7); _cimg_iskey_test2(PAD8); + _cimg_iskey_test2(PAD9); _cimg_iskey_test2(PADADD); _cimg_iskey_test2(PADSUB); + _cimg_iskey_test2(PADMUL); _cimg_iskey_test2(PADDIV); + return f; + } + + //! Return \c true if specified key sequence has been typed on the associated window, \c false otherwise. + /** + \param keycodes_sequence Buffer of keycodes to test. + \param length Number of keys in the \c keycodes_sequence buffer. + \param remove_sequence Tells if the key sequence must be removed from the key history, if found. + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + \par Example + \code + CImgDisplay disp(400,400); + const unsigned int key_seq[] = { cimg::keyCTRLLEFT, cimg::keyD }; + while (!disp.is_closed()) { + if (disp.is_key_sequence(key_seq,2)) { ... } // Test for the 'CTRL+D' keyboard event + disp.wait(); + } + \endcode + **/ + bool is_key_sequence(const unsigned int *const keycodes_sequence, const unsigned int length, + const bool remove_sequence=false) { + if (keycodes_sequence && length) { + const unsigned int + *const ps_end = keycodes_sequence + length - 1, + *const pk_end = (unsigned int*)_keys + 1 + 128 - length, + k = *ps_end; + for (unsigned int *pk = (unsigned int*)_keys; pk[0,255]. + If the range of values of the data to display is different, a normalization may be required for displaying + the data in a correct way. The normalization type can be one of: + - \c 0: Value normalization is disabled. It is then assumed that all input data to be displayed by the + CImgDisplay instance have values in range [0,255]. + - \c 1: Value normalization is always performed (this is the default behavior). + Before displaying an input image, its values will be (virtually) stretched + in range [0,255], so that the contrast of the displayed pixels will be maximum. + Use this mode for images whose minimum and maximum values are not prescribed to known values + (e.g. float-valued images). + Note that when normalized versions of images are computed for display purposes, the actual values of these + images are not modified. + - \c 2: Value normalization is performed once (on the first image display), then the same normalization + coefficients are kept for next displayed frames. + - \c 3: Value normalization depends on the pixel type of the data to display. For integer pixel types, + the normalization is done regarding the minimum/maximum values of the type (no normalization occurs then + for unsigned char). + For float-valued pixel types, the normalization is done regarding the minimum/maximum value of the image + data instead. + **/ + unsigned int normalization() const { + return _normalization; + } + + //! Return title of the associated window as a C-string. + /** + \note Window title may be not visible, depending on the used window manager or if the current display is + in fullscreen mode. + **/ + const char *title() const { + return _title?_title:""; + } + + //! Return width of the associated window. + /** + \note The width of the display (i.e. the width of the pixel data buffer associated to the CImgDisplay instance) + may be different from the actual width of the associated window. + **/ + int window_width() const { + return (int)_window_width; + } + + //! Return height of the associated window. + /** + \note The height of the display (i.e. the height of the pixel data buffer associated to the CImgDisplay instance) + may be different from the actual height of the associated window. + **/ + int window_height() const { + return (int)_window_height; + } + + //! Return X-coordinate of the associated window. + /** + \note The returned coordinate corresponds to the location of the upper-left corner of the associated window. + **/ + int window_x() const { + return _window_x; + } + + //! Return Y-coordinate of the associated window. + /** + \note The returned coordinate corresponds to the location of the upper-left corner of the associated window. + **/ + int window_y() const { + return _window_y; + } + + //! Return X-coordinate of the mouse pointer. + /** + \note + - If the mouse pointer is outside window area, \c -1 is returned. + - Otherwise, the returned value is in the range [0,width()-1]. + **/ + int mouse_x() const { + return _mouse_x; + } + + //! Return Y-coordinate of the mouse pointer. + /** + \note + - If the mouse pointer is outside window area, \c -1 is returned. + - Otherwise, the returned value is in the range [0,height()-1]. + **/ + int mouse_y() const { + return _mouse_y; + } + + //! Return current state of the mouse buttons. + /** + \note Three mouse buttons can be managed. If one button is pressed, its corresponding bit in the returned + value is set: + - bit \c 0 (value \c 0x1): State of the left mouse button. + - bit \c 1 (value \c 0x2): State of the right mouse button. + - bit \c 2 (value \c 0x4): State of the middle mouse button. + + Several bits can be activated if more than one button are pressed at the same time. + \par Example + \code + CImgDisplay disp(400,400); + while (!disp.is_closed()) { + if (disp.button()&1) { // Left button clicked + ... + } + if (disp.button()&2) { // Right button clicked + ... + } + if (disp.button()&4) { // Middle button clicked + ... + } + disp.wait(); + } + \endcode + **/ + unsigned int button() const { + return _button; + } + + //! Return current state of the mouse wheel. + /** + \note + - The returned value can be positive or negative depending on whether the mouse wheel has been scrolled + forward or backward. + - Scrolling the wheel forward add \c 1 to the wheel value. + - Scrolling the wheel backward subtract \c 1 to the wheel value. + - The returned value cumulates the number of forward of backward scrolls since the creation of the display, + or since the last reset of the wheel value (using set_wheel()). It is strongly recommended to quickly reset + the wheel counter when an action has been performed regarding the current wheel value. + Otherwise, the returned wheel value may be for instance \c 0 despite the fact that many scrolls have been done + (as many in forward as in backward directions). + \par Example + \code + CImgDisplay disp(400,400); + while (!disp.is_closed()) { + if (disp.wheel()) { + int counter = disp.wheel(); // Read the state of the mouse wheel + ... // Do what you want with 'counter' + disp.set_wheel(); // Reset the wheel value to 0 + } + disp.wait(); + } + \endcode + **/ + int wheel() const { + return _wheel; + } + + //! Return one entry from the pressed keys history. + /** + \param pos Index to read from the pressed keys history (index \c 0 corresponds to latest entry). + \return Keycode of a pressed key or \c 0 for a released key. + \note + - Each CImgDisplay stores a history of the pressed keys in a buffer of size \c 128. When a new key is pressed, + its keycode is stored in the pressed keys history. When a key is released, \c 0 is put instead. + This means that up to the 64 last pressed keys may be read from the pressed keys history. + When a new value is stored, the pressed keys history is shifted so that the latest entry is always + stored at position \c 0. + - Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + **/ + unsigned int& key(const unsigned int pos=0) const { + static unsigned int key0; + return pos<128?_keys[pos]:(key0 = 0); + + } + + //! Return one entry from the released keys history. + /** + \param pos Index to read from the released keys history (index \c 0 corresponds to latest entry). + \return Keycode of a released key or \c 0 for a pressed key. + \note + - Each CImgDisplay stores a history of the released keys in a buffer of size \c 128. When a new key is released, + its keycode is stored in the pressed keys history. When a key is pressed, \c 0 is put instead. + This means that up to the 64 last released keys may be read from the released keys history. + When a new value is stored, the released keys history is shifted so that the latest entry is always + stored at position \c 0. + - Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + **/ + unsigned int& released_key(const unsigned int pos=0) const { + static unsigned int key0; + return pos<128?_released_keys[pos]:(key0 = 0); + } + + //! Return keycode corresponding to the specified string. + /** + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + \par Example + \code + const unsigned int keyTAB = CImgDisplay::keycode("TAB"); // Return cimg::keyTAB + \endcode + **/ + static unsigned int keycode(const char *const keycode) { +#define _cimg_keycode(k) if (!cimg::strcasecmp(keycode,#k)) return cimg::key##k; + _cimg_keycode(ESC); _cimg_keycode(F1); _cimg_keycode(F2); _cimg_keycode(F3); + _cimg_keycode(F4); _cimg_keycode(F5); _cimg_keycode(F6); _cimg_keycode(F7); + _cimg_keycode(F8); _cimg_keycode(F9); _cimg_keycode(F10); _cimg_keycode(F11); + _cimg_keycode(F12); _cimg_keycode(PAUSE); _cimg_keycode(1); _cimg_keycode(2); + _cimg_keycode(3); _cimg_keycode(4); _cimg_keycode(5); _cimg_keycode(6); + _cimg_keycode(7); _cimg_keycode(8); _cimg_keycode(9); _cimg_keycode(0); + _cimg_keycode(BACKSPACE); _cimg_keycode(INSERT); _cimg_keycode(HOME); + _cimg_keycode(PAGEUP); _cimg_keycode(TAB); _cimg_keycode(Q); _cimg_keycode(W); + _cimg_keycode(E); _cimg_keycode(R); _cimg_keycode(T); _cimg_keycode(Y); + _cimg_keycode(U); _cimg_keycode(I); _cimg_keycode(O); _cimg_keycode(P); + _cimg_keycode(DELETE); _cimg_keycode(END); _cimg_keycode(PAGEDOWN); + _cimg_keycode(CAPSLOCK); _cimg_keycode(A); _cimg_keycode(S); _cimg_keycode(D); + _cimg_keycode(F); _cimg_keycode(G); _cimg_keycode(H); _cimg_keycode(J); + _cimg_keycode(K); _cimg_keycode(L); _cimg_keycode(ENTER); + _cimg_keycode(SHIFTLEFT); _cimg_keycode(Z); _cimg_keycode(X); _cimg_keycode(C); + _cimg_keycode(V); _cimg_keycode(B); _cimg_keycode(N); _cimg_keycode(M); + _cimg_keycode(SHIFTRIGHT); _cimg_keycode(ARROWUP); _cimg_keycode(CTRLLEFT); + _cimg_keycode(APPLEFT); _cimg_keycode(ALT); _cimg_keycode(SPACE); _cimg_keycode(ALTGR); + _cimg_keycode(APPRIGHT); _cimg_keycode(MENU); _cimg_keycode(CTRLRIGHT); + _cimg_keycode(ARROWLEFT); _cimg_keycode(ARROWDOWN); _cimg_keycode(ARROWRIGHT); + _cimg_keycode(PAD0); _cimg_keycode(PAD1); _cimg_keycode(PAD2); + _cimg_keycode(PAD3); _cimg_keycode(PAD4); _cimg_keycode(PAD5); + _cimg_keycode(PAD6); _cimg_keycode(PAD7); _cimg_keycode(PAD8); + _cimg_keycode(PAD9); _cimg_keycode(PADADD); _cimg_keycode(PADSUB); + _cimg_keycode(PADMUL); _cimg_keycode(PADDIV); + return 0; + } + + //! Return the current refresh rate, in frames per second. + /** + \note Returns a significant value when the current instance is used to display successive frames. + It measures the delay between successive calls to frames_per_second(). + **/ + float frames_per_second() { + if (!_fps_timer) _fps_timer = cimg::time(); + const float delta = (float)((cimg::time() - _fps_timer)/1000.f); + ++_fps_frames; + if (delta>=1) { + _fps_fps = _fps_frames/delta; + _fps_frames = 0; + _fps_timer = cimg::time(); + } + return _fps_fps; + } + + // Move current display window so that its content stays inside the current screen. + CImgDisplay& move_inside_screen() { + if (is_empty()) return *this; + const int + x0 = window_x(), + y0 = window_y(), + x1 = x0 + window_width() - 1, + y1 = y0 + window_height() - 1, + sw = CImgDisplay::screen_width(), + sh = CImgDisplay::screen_height(); + if (x0<0 || y0<0 || x1>=sw || y1>=sh) + move(std::max(0,std::min(x0,sw - x1 + x0)), + std::max(0,std::min(y0,sh - y1 + y0))); + return *this; + } + + //@} + //--------------------------------------- + // + //! \name Window Manipulation + //@{ + //--------------------------------------- + +#if cimg_display==0 + + //! Display image on associated window. + /** + \param img Input image to display. + \note This method returns immediately. + **/ + template + CImgDisplay& display(const CImg& img) { + return assign(img); + } + +#endif + + //! Display list of images on associated window. + /** + \param list List of images to display. + \param axis Axis used to append the images along, for the visualization (can be \c x, \c y, \c z or \c c). + \param align Relative position of aligned images when displaying lists with images of different sizes + (\c 0 for upper-left, \c 0.5 for centering and \c 1 for lower-right). + \note This method returns immediately. + **/ + template + CImgDisplay& display(const CImgList& list, const char axis='x', const float align=0) { + if (list._width==1) { + const CImg& img = list[0]; + if (img._depth==1 && (img._spectrum==1 || img._spectrum>=3) && _normalization!=1) return display(img); + } + CImgList::ucharT> visu(list._width); + unsigned int dims = 0; + cimglist_for(list,l) { + const CImg& img = list._data[l]; + img._get_select(*this,_normalization,(img._width - 1)/2,(img._height - 1)/2, + (img._depth - 1)/2).move_to(visu[l]); + dims = std::max(dims,visu[l]._spectrum); + } + cimglist_for(list,l) if (visu[l]._spectrumimg.width() become equal, as well as height() and + img.height(). + - The associated window is also resized to specified dimensions. + **/ + template + CImgDisplay& resize(const CImg& img, const bool force_redraw=true) { + return resize(img._width,img._height,force_redraw); + } + + //! Resize display to the size of another CImgDisplay instance. + /** + \param disp Input display to take size from. + \param force_redraw Tells if the previous window content must be resized and updated as well. + \note + - Calling this method ensures that width() and disp.width() become equal, as well as height() and + disp.height(). + - The associated window is also resized to specified dimensions. + **/ + CImgDisplay& resize(const CImgDisplay& disp, const bool force_redraw=true) { + return resize(disp.width(),disp.height(),force_redraw); + } + + // [internal] Render pixel buffer with size (wd,hd) from source buffer of size (ws,hs). + template + static void _render_resize(const T *ptrs, const unsigned int ws, const unsigned int hs, + t *ptrd, const unsigned int wd, const unsigned int hd) { + typedef typename cimg::last::type ulongT; + const ulongT one = (ulongT)1; + CImg off_x(wd), off_y(hd + 1); + if (wd==ws) off_x.fill(1); + else { + ulongT *poff_x = off_x._data, curr = 0; + for (unsigned int x = 0; xstd::printf(). + \warning As the first argument is a format string, it is highly recommended to write + \code + disp.set_title("%s",window_title); + \endcode + instead of + \code + disp.set_title(window_title); + \endcode + if \c window_title can be arbitrary, to prevent nasty memory access. + **/ + CImgDisplay& set_title(const char *const format, ...) { + return assign(0,0,format); + } + +#endif + + //! Enable or disable fullscreen mode. + /** + \param is_fullscreen Tells is the fullscreen mode must be activated or not. + \param force_redraw Tells if the previous window content must be displayed as well. + \note + - When the fullscreen mode is enabled, the associated window fills the entire screen but the size of the + current display is not modified. + - The screen resolution may be switched to fit the associated window size and ensure it appears the largest + as possible. + For X-Window (X11) users, the configuration flag \c cimg_use_xrandr has to be set to allow the screen + resolution change (requires the X11 extensions to be enabled). + **/ + CImgDisplay& set_fullscreen(const bool is_fullscreen, const bool force_redraw=true) { + if (is_empty() || _is_fullscreen==is_fullscreen) return *this; + return toggle_fullscreen(force_redraw); + } + +#if cimg_display==0 + + //! Toggle fullscreen mode. + /** + \param force_redraw Tells if the previous window content must be displayed as well. + \note Enable fullscreen mode if it was not enabled, and disable it otherwise. + **/ + CImgDisplay& toggle_fullscreen(const bool force_redraw=true) { + return assign(_width,_height,0,3,force_redraw); + } + + //! Show mouse pointer. + /** + \note Depending on the window manager behavior, this method may not succeed + (no exceptions are thrown nevertheless). + **/ + CImgDisplay& show_mouse() { + return assign(); + } + + //! Hide mouse pointer. + /** + \note Depending on the window manager behavior, this method may not succeed + (no exceptions are thrown nevertheless). + **/ + CImgDisplay& hide_mouse() { + return assign(); + } + + //! Move mouse pointer to a specified location. + /** + \note Depending on the window manager behavior, this method may not succeed + (no exceptions are thrown nevertheless). + **/ + CImgDisplay& set_mouse(const int pos_x, const int pos_y) { + return assign(pos_x,pos_y); + } + +#endif + + //! Simulate a mouse button release event. + /** + \note All mouse buttons are considered released at the same time. + **/ + CImgDisplay& set_button() { + _button = 0; + _is_event = true; +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + return *this; + } + + //! Simulate a mouse button press or release event. + /** + \param button Buttons event code, where each button is associated to a single bit. + \param is_pressed Tells if the mouse button is considered as pressed or released. + **/ + CImgDisplay& set_button(const unsigned int button, const bool is_pressed=true) { + const unsigned int buttoncode = button==1U?1U:button==2U?2U:button==3U?4U:0U; + if (is_pressed) _button |= buttoncode; else _button &= ~buttoncode; + _is_event = buttoncode?true:false; + if (buttoncode) { +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + } + return *this; + } + + //! Flush all mouse wheel events. + /** + \note Make wheel() to return \c 0, if called afterwards. + **/ + CImgDisplay& set_wheel() { + _wheel = 0; + _is_event = true; +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + return *this; + } + + //! Simulate a wheel event. + /** + \param amplitude Amplitude of the wheel scrolling to simulate. + \note Make wheel() to return \c amplitude, if called afterwards. + **/ + CImgDisplay& set_wheel(const int amplitude) { + _wheel+=amplitude; + _is_event = amplitude?true:false; + if (amplitude) { +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + } + return *this; + } + + //! Flush all key events. + /** + \note Make key() to return \c 0, if called afterwards. + **/ + CImgDisplay& set_key() { + std::memset((void*)_keys,0,128*sizeof(unsigned int)); + std::memset((void*)_released_keys,0,128*sizeof(unsigned int)); + _is_keyESC = _is_keyF1 = _is_keyF2 = _is_keyF3 = _is_keyF4 = _is_keyF5 = _is_keyF6 = _is_keyF7 = _is_keyF8 = + _is_keyF9 = _is_keyF10 = _is_keyF11 = _is_keyF12 = _is_keyPAUSE = _is_key1 = _is_key2 = _is_key3 = _is_key4 = + _is_key5 = _is_key6 = _is_key7 = _is_key8 = _is_key9 = _is_key0 = _is_keyBACKSPACE = _is_keyINSERT = + _is_keyHOME = _is_keyPAGEUP = _is_keyTAB = _is_keyQ = _is_keyW = _is_keyE = _is_keyR = _is_keyT = _is_keyY = + _is_keyU = _is_keyI = _is_keyO = _is_keyP = _is_keyDELETE = _is_keyEND = _is_keyPAGEDOWN = _is_keyCAPSLOCK = + _is_keyA = _is_keyS = _is_keyD = _is_keyF = _is_keyG = _is_keyH = _is_keyJ = _is_keyK = _is_keyL = + _is_keyENTER = _is_keySHIFTLEFT = _is_keyZ = _is_keyX = _is_keyC = _is_keyV = _is_keyB = _is_keyN = + _is_keyM = _is_keySHIFTRIGHT = _is_keyARROWUP = _is_keyCTRLLEFT = _is_keyAPPLEFT = _is_keyALT = _is_keySPACE = + _is_keyALTGR = _is_keyAPPRIGHT = _is_keyMENU = _is_keyCTRLRIGHT = _is_keyARROWLEFT = _is_keyARROWDOWN = + _is_keyARROWRIGHT = _is_keyPAD0 = _is_keyPAD1 = _is_keyPAD2 = _is_keyPAD3 = _is_keyPAD4 = _is_keyPAD5 = + _is_keyPAD6 = _is_keyPAD7 = _is_keyPAD8 = _is_keyPAD9 = _is_keyPADADD = _is_keyPADSUB = _is_keyPADMUL = + _is_keyPADDIV = false; + _is_event = true; +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + return *this; + } + + //! Simulate a keyboard press/release event. + /** + \param keycode Keycode of the associated key. + \param is_pressed Tells if the key is considered as pressed or released. + \note Keycode constants are defined in the cimg namespace and are architecture-dependent. Use them to ensure + your code stay portable (see cimg::keyESC). + **/ + CImgDisplay& set_key(const unsigned int keycode, const bool is_pressed=true) { +#define _cimg_set_key(k) if (keycode==cimg::key##k) _is_key##k = is_pressed; + _cimg_set_key(ESC); _cimg_set_key(F1); _cimg_set_key(F2); _cimg_set_key(F3); + _cimg_set_key(F4); _cimg_set_key(F5); _cimg_set_key(F6); _cimg_set_key(F7); + _cimg_set_key(F8); _cimg_set_key(F9); _cimg_set_key(F10); _cimg_set_key(F11); + _cimg_set_key(F12); _cimg_set_key(PAUSE); _cimg_set_key(1); _cimg_set_key(2); + _cimg_set_key(3); _cimg_set_key(4); _cimg_set_key(5); _cimg_set_key(6); + _cimg_set_key(7); _cimg_set_key(8); _cimg_set_key(9); _cimg_set_key(0); + _cimg_set_key(BACKSPACE); _cimg_set_key(INSERT); _cimg_set_key(HOME); + _cimg_set_key(PAGEUP); _cimg_set_key(TAB); _cimg_set_key(Q); _cimg_set_key(W); + _cimg_set_key(E); _cimg_set_key(R); _cimg_set_key(T); _cimg_set_key(Y); + _cimg_set_key(U); _cimg_set_key(I); _cimg_set_key(O); _cimg_set_key(P); + _cimg_set_key(DELETE); _cimg_set_key(END); _cimg_set_key(PAGEDOWN); + _cimg_set_key(CAPSLOCK); _cimg_set_key(A); _cimg_set_key(S); _cimg_set_key(D); + _cimg_set_key(F); _cimg_set_key(G); _cimg_set_key(H); _cimg_set_key(J); + _cimg_set_key(K); _cimg_set_key(L); _cimg_set_key(ENTER); + _cimg_set_key(SHIFTLEFT); _cimg_set_key(Z); _cimg_set_key(X); _cimg_set_key(C); + _cimg_set_key(V); _cimg_set_key(B); _cimg_set_key(N); _cimg_set_key(M); + _cimg_set_key(SHIFTRIGHT); _cimg_set_key(ARROWUP); _cimg_set_key(CTRLLEFT); + _cimg_set_key(APPLEFT); _cimg_set_key(ALT); _cimg_set_key(SPACE); _cimg_set_key(ALTGR); + _cimg_set_key(APPRIGHT); _cimg_set_key(MENU); _cimg_set_key(CTRLRIGHT); + _cimg_set_key(ARROWLEFT); _cimg_set_key(ARROWDOWN); _cimg_set_key(ARROWRIGHT); + _cimg_set_key(PAD0); _cimg_set_key(PAD1); _cimg_set_key(PAD2); + _cimg_set_key(PAD3); _cimg_set_key(PAD4); _cimg_set_key(PAD5); + _cimg_set_key(PAD6); _cimg_set_key(PAD7); _cimg_set_key(PAD8); + _cimg_set_key(PAD9); _cimg_set_key(PADADD); _cimg_set_key(PADSUB); + _cimg_set_key(PADMUL); _cimg_set_key(PADDIV); + if (is_pressed) { + if (*_keys) + std::memmove((void*)(_keys + 1),(void*)_keys,127*sizeof(unsigned int)); + *_keys = keycode; + if (*_released_keys) { + std::memmove((void*)(_released_keys + 1),(void*)_released_keys,127*sizeof(unsigned int)); + *_released_keys = 0; + } + } else { + if (*_keys) { + std::memmove((void*)(_keys + 1),(void*)_keys,127*sizeof(unsigned int)); + *_keys = 0; + } + if (*_released_keys) + std::memmove((void*)(_released_keys + 1),(void*)_released_keys,127*sizeof(unsigned int)); + *_released_keys = keycode; + } + _is_event = keycode?true:false; + if (keycode) { +#if cimg_display==1 + pthread_cond_broadcast(&cimg::X11_attr().wait_event); +#elif cimg_display==2 + SetEvent(cimg::Win32_attr().wait_event); +#endif + } + return *this; + } + + //! Flush all display events. + /** + \note Remove all passed events from the current display. + **/ + CImgDisplay& flush() { + set_key().set_button().set_wheel(); + _is_resized = _is_moved = _is_event = false; + _fps_timer = _fps_frames = _timer = 0; + _fps_fps = 0; + return *this; + } + + //! Wait for any user event occurring on the current display. + CImgDisplay& wait() { + wait(*this); + return *this; + } + + //! Wait for a given number of milliseconds since the last call to wait(). + /** + \param milliseconds Number of milliseconds to wait for. + \note Similar to cimg::wait(). + **/ + CImgDisplay& wait(const unsigned int milliseconds) { + cimg::wait(milliseconds,&_timer); + return *this; + } + + //! Wait for any event occurring on the display \c disp1. + static void wait(CImgDisplay& disp1) { + disp1._is_event = false; + while (!disp1._is_closed && !disp1._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1 or \c disp2. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2) { + disp1._is_event = disp2._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed) && + !disp1._is_event && !disp2._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2 or \c disp3. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3) { + disp1._is_event = disp2._is_event = disp3._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3 or \c disp4. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4 or \c disp5. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, + CImgDisplay& disp5) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event) + wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp6. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp7. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp8. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7, CImgDisplay& disp8) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = disp8._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed || !disp8._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event && !disp8._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp9. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7, CImgDisplay& disp8, CImgDisplay& disp9) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = disp8._is_event = disp9._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed || !disp8._is_closed || !disp9._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event && !disp8._is_event && !disp9._is_event) wait_all(); + } + + //! Wait for any event occurring either on the display \c disp1, \c disp2, \c disp3, \c disp4, ... \c disp10. + static void wait(CImgDisplay& disp1, CImgDisplay& disp2, CImgDisplay& disp3, CImgDisplay& disp4, CImgDisplay& disp5, + CImgDisplay& disp6, CImgDisplay& disp7, CImgDisplay& disp8, CImgDisplay& disp9, + CImgDisplay& disp10) { + disp1._is_event = disp2._is_event = disp3._is_event = disp4._is_event = disp5._is_event = + disp6._is_event = disp7._is_event = disp8._is_event = disp9._is_event = disp10._is_event = false; + while ((!disp1._is_closed || !disp2._is_closed || !disp3._is_closed || !disp4._is_closed || !disp5._is_closed || + !disp6._is_closed || !disp7._is_closed || !disp8._is_closed || !disp9._is_closed || !disp10._is_closed) && + !disp1._is_event && !disp2._is_event && !disp3._is_event && !disp4._is_event && !disp5._is_event && + !disp6._is_event && !disp7._is_event && !disp8._is_event && !disp9._is_event && !disp10._is_event) + wait_all(); + } + +#if cimg_display==0 + + //! Wait for any window event occurring in any opened CImgDisplay. + static void wait_all() { + return _no_display_exception(); + } + + //! Render image into internal display buffer. + /** + \param img Input image data to render. + \note + - Convert image data representation into the internal display buffer (architecture-dependent structure). + - The content of the associated window is not modified, until paint() is called. + - Should not be used for common CImgDisplay uses, since display() is more useful. + **/ + template + CImgDisplay& render(const CImg& img) { + return assign(img); + } + + //! Paint internal display buffer on associated window. + /** + \note + - Update the content of the associated window with the internal display buffer, e.g. after a render() call. + - Should not be used for common CImgDisplay uses, since display() is more useful. + **/ + CImgDisplay& paint() { + return assign(); + } + + + //! Take a snapshot of the current screen content. + /** + \param x0 X-coordinate of the upper left corner. + \param y0 Y-coordinate of the upper left corner. + \param x1 X-coordinate of the lower right corner. + \param y1 Y-coordinate of the lower right corner. + \param[out] img Output screenshot. Can be empty on input + **/ + template + static void screenshot(const int x0, const int y0, const int x1, const int y1, CImg& img) { + cimg::unused(x0,y0,x1,y1,&img); + _no_display_exception(); + } + + //! Take a snapshot of the associated window content. + /** + \param[out] img Output snapshot. Can be empty on input. + **/ + template + const CImgDisplay& snapshot(CImg& img) const { + cimg::unused(img); + _no_display_exception(); + return *this; + } +#endif + + // X11-based implementation + //-------------------------- +#if cimg_display==1 + + Atom _wm_window_atom, _wm_protocol_atom; + Window _window, _background_window; + Colormap _colormap; + XImage *_image; + void *_data; + +#ifdef cimg_use_xshm + XShmSegmentInfo *_shminfo; +#endif + + static int screen_width() { + Display *const dpy = cimg::X11_attr().display; + int res = 0; + if (!dpy) { + Display *const _dpy = XOpenDisplay(0); + if (!_dpy) + throw CImgDisplayException("CImgDisplay::screen_width(): Failed to open X11 display."); + res = DisplayWidth(_dpy,DefaultScreen(_dpy)); + XCloseDisplay(_dpy); + } else { + +#ifdef cimg_use_xrandr + if (cimg::X11_attr().resolutions && cimg::X11_attr().curr_resolution) + res = cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].width; + else res = DisplayWidth(dpy,DefaultScreen(dpy)); +#else + res = DisplayWidth(dpy,DefaultScreen(dpy)); +#endif + } + return res; + } + + static int screen_height() { + Display *const dpy = cimg::X11_attr().display; + int res = 0; + if (!dpy) { + Display *const _dpy = XOpenDisplay(0); + if (!_dpy) + throw CImgDisplayException("CImgDisplay::screen_height(): Failed to open X11 display."); + res = DisplayHeight(_dpy,DefaultScreen(_dpy)); + XCloseDisplay(_dpy); + } else { + +#ifdef cimg_use_xrandr + if (cimg::X11_attr().resolutions && cimg::X11_attr().curr_resolution) + res = cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].height; + else res = DisplayHeight(dpy,DefaultScreen(dpy)); +#else + res = DisplayHeight(dpy,DefaultScreen(dpy)); +#endif + } + return res; + } + + static void wait_all() { + if (!cimg::X11_attr().display) return; + pthread_mutex_lock(&cimg::X11_attr().wait_event_mutex); + pthread_cond_wait(&cimg::X11_attr().wait_event,&cimg::X11_attr().wait_event_mutex); + pthread_mutex_unlock(&cimg::X11_attr().wait_event_mutex); + } + + void _handle_events(const XEvent *const pevent) { + Display *const dpy = cimg::X11_attr().display; + XEvent event = *pevent; + switch (event.type) { + case ClientMessage : { + if ((int)event.xclient.message_type==(int)_wm_protocol_atom && + (int)event.xclient.data.l[0]==(int)_wm_window_atom) { + XUnmapWindow(cimg::X11_attr().display,_window); + _is_closed = _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } + } break; + case ConfigureNotify : { + while (XCheckWindowEvent(dpy,_window,StructureNotifyMask,&event)) {} + const unsigned int nw = event.xconfigure.width, nh = event.xconfigure.height; + const int nx = event.xconfigure.x, ny = event.xconfigure.y; + if (nw && nh && (nw!=_window_width || nh!=_window_height)) { + _window_width = nw; _window_height = nh; _mouse_x = _mouse_y = -1; + XResizeWindow(dpy,_window,_window_width,_window_height); + _is_resized = _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } + if (nx!=_window_x || ny!=_window_y) { + _window_x = nx; + _window_y = ny; + _is_moved = _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } + } break; + case Expose : { + while (XCheckWindowEvent(dpy,_window,ExposureMask,&event)) {} + _paint(false); + if (_is_fullscreen) { + XWindowAttributes attr; + do { + XGetWindowAttributes(dpy,_window,&attr); + if (attr.map_state!=IsViewable) { XSync(dpy,0); cimg::sleep(10); } + } while (attr.map_state!=IsViewable); + XSetInputFocus(dpy,_window,RevertToParent,CurrentTime); + } + } break; + case ButtonPress : { + do { + _mouse_x = event.xmotion.x; _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + switch (event.xbutton.button) { + case 1 : set_button(1); break; + case 3 : set_button(2); break; + case 2 : set_button(3); break; + } + } while (XCheckWindowEvent(dpy,_window,ButtonPressMask,&event)); + } break; + case ButtonRelease : { + do { + _mouse_x = event.xmotion.x; _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + switch (event.xbutton.button) { + case 1 : set_button(1,false); break; + case 3 : set_button(2,false); break; + case 2 : set_button(3,false); break; + case 4 : set_wheel(1); break; + case 5 : set_wheel(-1); break; + } + } while (XCheckWindowEvent(dpy,_window,ButtonReleaseMask,&event)); + } break; + case KeyPress : { + char tmp = 0; KeySym ksym; + XLookupString(&event.xkey,&tmp,1,&ksym,0); + set_key((unsigned int)ksym,true); + } break; + case KeyRelease : { + char keys_return[32]; // Check that the key has been physically unpressed + XQueryKeymap(dpy,keys_return); + const unsigned int kc = event.xkey.keycode, kc1 = kc/8, kc2 = kc%8; + const bool is_key_pressed = kc1>=32?false:(keys_return[kc1]>>kc2)&1; + if (!is_key_pressed) { + char tmp = 0; KeySym ksym; + XLookupString(&event.xkey,&tmp,1,&ksym,0); + set_key((unsigned int)ksym,false); + } + } break; + case EnterNotify: { + while (XCheckWindowEvent(dpy,_window,EnterWindowMask,&event)) {} + _mouse_x = event.xmotion.x; + _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + } break; + case LeaveNotify : { + while (XCheckWindowEvent(dpy,_window,LeaveWindowMask,&event)) {} + _mouse_x = _mouse_y = -1; _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } break; + case MotionNotify : { + while (XCheckWindowEvent(dpy,_window,PointerMotionMask,&event)) {} + _mouse_x = event.xmotion.x; + _mouse_y = event.xmotion.y; + if (_mouse_x<0 || _mouse_y<0 || _mouse_x>=width() || _mouse_y>=height()) _mouse_x = _mouse_y = -1; + _is_event = true; + pthread_cond_broadcast(&cimg::X11_attr().wait_event); + } break; + } + } + + static void* _events_thread(void *arg) { // Thread to manage events for all opened display windows + Display *const dpy = cimg::X11_attr().display; + XEvent event; + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,0); + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,0); + if (!arg) for ( ; ; ) { + cimg_lock_display(); + bool event_flag = XCheckTypedEvent(dpy,ClientMessage,&event); + if (!event_flag) event_flag = XCheckMaskEvent(dpy, + ExposureMask | StructureNotifyMask | ButtonPressMask | + KeyPressMask | PointerMotionMask | EnterWindowMask | + LeaveWindowMask | ButtonReleaseMask | KeyReleaseMask,&event); + if (event_flag) + for (unsigned int i = 0; i_is_closed && event.xany.window==cimg::X11_attr().wins[i]->_window) + cimg::X11_attr().wins[i]->_handle_events(&event); + cimg_unlock_display(); + pthread_testcancel(); + cimg::sleep(8); + } + return 0; + } + + void _set_colormap(Colormap& cmap, const unsigned int dim) { + XColor *const colormap = new XColor[256]; + switch (dim) { + case 1 : { // colormap for greyscale images + for (unsigned int index = 0; index<256; ++index) { + colormap[index].pixel = index; + colormap[index].red = colormap[index].green = colormap[index].blue = (unsigned short)(index<<8); + colormap[index].flags = DoRed | DoGreen | DoBlue; + } + } break; + case 2 : { // colormap for RG images + for (unsigned int index = 0, r = 8; r<256; r+=16) + for (unsigned int g = 8; g<256; g+=16) { + colormap[index].pixel = index; + colormap[index].red = colormap[index].blue = (unsigned short)(r<<8); + colormap[index].green = (unsigned short)(g<<8); + colormap[index++].flags = DoRed | DoGreen | DoBlue; + } + } break; + default : { // colormap for RGB images + for (unsigned int index = 0, r = 16; r<256; r+=32) + for (unsigned int g = 16; g<256; g+=32) + for (unsigned int b = 32; b<256; b+=64) { + colormap[index].pixel = index; + colormap[index].red = (unsigned short)(r<<8); + colormap[index].green = (unsigned short)(g<<8); + colormap[index].blue = (unsigned short)(b<<8); + colormap[index++].flags = DoRed | DoGreen | DoBlue; + } + } + } + XStoreColors(cimg::X11_attr().display,cmap,colormap,256); + delete[] colormap; + } + + void _map_window() { + Display *const dpy = cimg::X11_attr().display; + bool is_exposed = false, is_mapped = false; + XWindowAttributes attr; + XEvent event; + XMapRaised(dpy,_window); + do { // Wait for the window to be mapped + XWindowEvent(dpy,_window,StructureNotifyMask | ExposureMask,&event); + switch (event.type) { + case MapNotify : is_mapped = true; break; + case Expose : is_exposed = true; break; + } + } while (!is_exposed || !is_mapped); + do { // Wait for the window to be visible + XGetWindowAttributes(dpy,_window,&attr); + if (attr.map_state!=IsViewable) { XSync(dpy,0); cimg::sleep(10); } + } while (attr.map_state!=IsViewable); + _window_x = attr.x; + _window_y = attr.y; + } + + void _paint(const bool wait_expose=true) { + if (_is_closed || !_image) return; + Display *const dpy = cimg::X11_attr().display; + if (wait_expose) { // Send an expose event sticked to display window to force repaint + XEvent event; + event.xexpose.type = Expose; + event.xexpose.serial = 0; + event.xexpose.send_event = 1; + event.xexpose.display = dpy; + event.xexpose.window = _window; + event.xexpose.x = 0; + event.xexpose.y = 0; + event.xexpose.width = width(); + event.xexpose.height = height(); + event.xexpose.count = 0; + XSendEvent(dpy,_window,0,0,&event); + } else { // Repaint directly (may be called from the expose event) + GC gc = DefaultGC(dpy,DefaultScreen(dpy)); + +#ifdef cimg_use_xshm + if (_shminfo) XShmPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height,1); + else XPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height); +#else + XPutImage(dpy,_window,gc,_image,0,0,0,0,_width,_height); +#endif + } + } + + template + void _resize(T pixel_type, const unsigned int ndimx, const unsigned int ndimy, const bool force_redraw) { + Display *const dpy = cimg::X11_attr().display; + cimg::unused(pixel_type); + +#ifdef cimg_use_xshm + if (_shminfo) { + XShmSegmentInfo *const nshminfo = new XShmSegmentInfo; + XImage *const nimage = XShmCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)), + cimg::X11_attr().nb_bits,ZPixmap,0,nshminfo,ndimx,ndimy); + if (!nimage) { delete nshminfo; return; } + else { + nshminfo->shmid = shmget(IPC_PRIVATE,ndimx*ndimy*sizeof(T),IPC_CREAT | 0777); + if (nshminfo->shmid==-1) { XDestroyImage(nimage); delete nshminfo; return; } + else { + nshminfo->shmaddr = nimage->data = (char*)shmat(nshminfo->shmid,0,0); + if (nshminfo->shmaddr==(char*)-1) { + shmctl(nshminfo->shmid,IPC_RMID,0); XDestroyImage(nimage); delete nshminfo; return; + } else { + nshminfo->readOnly = 0; + cimg::X11_attr().is_shm_enabled = true; + XErrorHandler oldXErrorHandler = XSetErrorHandler(_assign_xshm); + XShmAttach(dpy,nshminfo); + XFlush(dpy); + XSetErrorHandler(oldXErrorHandler); + if (!cimg::X11_attr().is_shm_enabled) { + shmdt(nshminfo->shmaddr); + shmctl(nshminfo->shmid,IPC_RMID,0); + XDestroyImage(nimage); + delete nshminfo; + return; + } else { + T *const ndata = (T*)nimage->data; + if (force_redraw) _render_resize((T*)_data,_width,_height,ndata,ndimx,ndimy); + else std::memset(ndata,0,sizeof(T)*ndimx*ndimy); + XShmDetach(dpy,_shminfo); + XDestroyImage(_image); + shmdt(_shminfo->shmaddr); + shmctl(_shminfo->shmid,IPC_RMID,0); + delete _shminfo; + _shminfo = nshminfo; + _image = nimage; + _data = (void*)ndata; + } + } + } + } + } else +#endif + { + T *ndata = (T*)std::malloc(ndimx*ndimy*sizeof(T)); + if (force_redraw) _render_resize((T*)_data,_width,_height,ndata,ndimx,ndimy); + else std::memset(ndata,0,sizeof(T)*ndimx*ndimy); + _data = (void*)ndata; + XDestroyImage(_image); + _image = XCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)), + cimg::X11_attr().nb_bits,ZPixmap,0,(char*)_data,ndimx,ndimy,8,0); + } + } + + void _init_fullscreen() { + if (!_is_fullscreen || _is_closed) return; + Display *const dpy = cimg::X11_attr().display; + _background_window = 0; + +#ifdef cimg_use_xrandr + int foo; + if (XRRQueryExtension(dpy,&foo,&foo)) { + XRRRotations(dpy,DefaultScreen(dpy),&cimg::X11_attr().curr_rotation); + if (!cimg::X11_attr().resolutions) { + cimg::X11_attr().resolutions = XRRSizes(dpy,DefaultScreen(dpy),&foo); + cimg::X11_attr().nb_resolutions = (unsigned int)foo; + } + if (cimg::X11_attr().resolutions) { + cimg::X11_attr().curr_resolution = 0; + for (unsigned int i = 0; i=_width && nh>=_height && + nw<=(unsigned int)(cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].width) && + nh<=(unsigned int)(cimg::X11_attr().resolutions[cimg::X11_attr().curr_resolution].height)) + cimg::X11_attr().curr_resolution = i; + } + if (cimg::X11_attr().curr_resolution>0) { + XRRScreenConfiguration *config = XRRGetScreenInfo(dpy,DefaultRootWindow(dpy)); + XRRSetScreenConfig(dpy,config,DefaultRootWindow(dpy), + cimg::X11_attr().curr_resolution,cimg::X11_attr().curr_rotation,CurrentTime); + XRRFreeScreenConfigInfo(config); + XSync(dpy,0); + } + } + } + if (!cimg::X11_attr().resolutions) + cimg::warn(_cimgdisplay_instance + "init_fullscreen(): Xrandr extension not supported by the X server.", + cimgdisplay_instance); +#endif + + const unsigned int sx = screen_width(), sy = screen_height(); + if (sx==_width && sy==_height) return; + XSetWindowAttributes attr_set; + + attr_set.background_pixel = XBlackPixel(dpy,XDefaultScreen(dpy)); + attr_set.override_redirect = 1; + _background_window = XCreateWindow(dpy,DefaultRootWindow(dpy),0,0,sx,sy,0,0, + InputOutput,CopyFromParent,CWBackPixel | CWOverrideRedirect,&attr_set); + XEvent event; + XSelectInput(dpy,_background_window,StructureNotifyMask); + XMapRaised(dpy,_background_window); + do XWindowEvent(dpy,_background_window,StructureNotifyMask,&event); + while (event.type!=MapNotify); + + XWindowAttributes attr; + do { + XGetWindowAttributes(dpy,_background_window,&attr); + if (attr.map_state!=IsViewable) { XSync(dpy,0); cimg::sleep(10); } + } while (attr.map_state!=IsViewable); + } + + void _desinit_fullscreen() { + if (!_is_fullscreen) return; + Display *const dpy = cimg::X11_attr().display; + XUngrabKeyboard(dpy,CurrentTime); + +#ifdef cimg_use_xrandr + if (cimg::X11_attr().resolutions && cimg::X11_attr().curr_resolution) { + XRRScreenConfiguration *config = XRRGetScreenInfo(dpy,DefaultRootWindow(dpy)); + XRRSetScreenConfig(dpy,config,DefaultRootWindow(dpy),0,cimg::X11_attr().curr_rotation,CurrentTime); + XRRFreeScreenConfigInfo(config); + XSync(dpy,0); + cimg::X11_attr().curr_resolution = 0; + } +#endif + if (_background_window) XDestroyWindow(dpy,_background_window); + _background_window = 0; + _is_fullscreen = false; + } + + static int _assign_xshm(Display *dpy, XErrorEvent *error) { + cimg::unused(dpy,error); + cimg::X11_attr().is_shm_enabled = false; + return 0; + } + + void _assign(const unsigned int dimw, const unsigned int dimh, const char *const ptitle=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + cimg::mutex(14); + + // Allocate space for window title + const char *const nptitle = ptitle?ptitle:""; + const unsigned int s = (unsigned int)std::strlen(nptitle) + 1; + char *const tmp_title = s?new char[s]:0; + if (s) std::memcpy(tmp_title,nptitle,s*sizeof(char)); + + // Destroy previous display window if existing + if (!is_empty()) assign(); + + // Open X11 display and retrieve graphical properties. + Display* &dpy = cimg::X11_attr().display; + if (!dpy) { + dpy = XOpenDisplay(0); + if (!dpy) + throw CImgDisplayException(_cimgdisplay_instance + "assign(): Failed to open X11 display.", + cimgdisplay_instance); + + cimg::X11_attr().nb_bits = DefaultDepth(dpy,DefaultScreen(dpy)); + if (cimg::X11_attr().nb_bits!=8 && cimg::X11_attr().nb_bits!=16 && + cimg::X11_attr().nb_bits!=24 && cimg::X11_attr().nb_bits!=32) + throw CImgDisplayException(_cimgdisplay_instance + "assign(): Invalid %u bits screen mode detected " + "(only 8, 16, 24 and 32 bits modes are managed).", + cimgdisplay_instance, + cimg::X11_attr().nb_bits); + XVisualInfo vtemplate; + vtemplate.visualid = XVisualIDFromVisual(DefaultVisual(dpy,DefaultScreen(dpy))); + int nb_visuals; + XVisualInfo *vinfo = XGetVisualInfo(dpy,VisualIDMask,&vtemplate,&nb_visuals); + if (vinfo && vinfo->red_maskblue_mask) cimg::X11_attr().is_blue_first = true; + cimg::X11_attr().byte_order = ImageByteOrder(dpy); + XFree(vinfo); + + cimg_lock_display(); + cimg::X11_attr().events_thread = new pthread_t; + pthread_create(cimg::X11_attr().events_thread,0,_events_thread,0); + } else cimg_lock_display(); + + // Set display variables. + _width = std::min(dimw,(unsigned int)screen_width()); + _height = std::min(dimh,(unsigned int)screen_height()); + _normalization = normalization_type<4?normalization_type:3; + _is_fullscreen = fullscreen_flag; + _window_x = _window_y = cimg::type::min(); + _is_closed = closed_flag; + _title = tmp_title; + flush(); + + // Create X11 window (and LUT, if 8bits display) + if (_is_fullscreen) { + if (!_is_closed) _init_fullscreen(); + const unsigned int sx = screen_width(), sy = screen_height(); + XSetWindowAttributes attr_set; + attr_set.override_redirect = 1; + _window = XCreateWindow(dpy,DefaultRootWindow(dpy),(sx - _width)/2,(sy - _height)/2,_width,_height,0,0, + InputOutput,CopyFromParent,CWOverrideRedirect,&attr_set); + } else + _window = XCreateSimpleWindow(dpy,DefaultRootWindow(dpy),0,0,_width,_height,0,0L,0L); + + XSelectInput(dpy,_window, + ExposureMask | StructureNotifyMask | ButtonPressMask | KeyPressMask | PointerMotionMask | + EnterWindowMask | LeaveWindowMask | ButtonReleaseMask | KeyReleaseMask); + + XStoreName(dpy,_window,_title?_title:" "); + if (cimg::X11_attr().nb_bits==8) { + _colormap = XCreateColormap(dpy,_window,DefaultVisual(dpy,DefaultScreen(dpy)),AllocAll); + _set_colormap(_colormap,3); + XSetWindowColormap(dpy,_window,_colormap); + } + + static const char *const _window_class = cimg_appname; + XClassHint *const window_class = XAllocClassHint(); + window_class->res_name = (char*)_window_class; + window_class->res_class = (char*)_window_class; + XSetClassHint(dpy,_window,window_class); + XFree(window_class); + + _window_width = _width; + _window_height = _height; + + // Create XImage +#ifdef cimg_use_xshm + _shminfo = 0; + if (XShmQueryExtension(dpy)) { + _shminfo = new XShmSegmentInfo; + _image = XShmCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)),cimg::X11_attr().nb_bits, + ZPixmap,0,_shminfo,_width,_height); + if (!_image) { delete _shminfo; _shminfo = 0; } + else { + _shminfo->shmid = shmget(IPC_PRIVATE,_image->bytes_per_line*_image->height,IPC_CREAT|0777); + if (_shminfo->shmid==-1) { XDestroyImage(_image); delete _shminfo; _shminfo = 0; } + else { + _shminfo->shmaddr = _image->data = (char*)(_data = shmat(_shminfo->shmid,0,0)); + if (_shminfo->shmaddr==(char*)-1) { + shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image); delete _shminfo; _shminfo = 0; + } else { + _shminfo->readOnly = 0; + cimg::X11_attr().is_shm_enabled = true; + XErrorHandler oldXErrorHandler = XSetErrorHandler(_assign_xshm); + XShmAttach(dpy,_shminfo); + XSync(dpy,0); + XSetErrorHandler(oldXErrorHandler); + if (!cimg::X11_attr().is_shm_enabled) { + shmdt(_shminfo->shmaddr); shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image); + delete _shminfo; _shminfo = 0; + } + } + } + } + } + if (!_shminfo) +#endif + { + const cimg_ulong buf_size = (cimg_ulong)_width*_height*(cimg::X11_attr().nb_bits==8?1: + (cimg::X11_attr().nb_bits==16?2:4)); + _data = std::malloc(buf_size); + _image = XCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)),cimg::X11_attr().nb_bits, + ZPixmap,0,(char*)_data,_width,_height,8,0); + } + + _wm_window_atom = XInternAtom(dpy,"WM_DELETE_WINDOW",0); + _wm_protocol_atom = XInternAtom(dpy,"WM_PROTOCOLS",0); + XSetWMProtocols(dpy,_window,&_wm_window_atom,1); + + if (_is_fullscreen) XGrabKeyboard(dpy,_window,1,GrabModeAsync,GrabModeAsync,CurrentTime); + cimg::X11_attr().wins[cimg::X11_attr().nb_wins++]=this; + if (!_is_closed) _map_window(); else _window_x = _window_y = cimg::type::min(); + cimg_unlock_display(); + cimg::mutex(14,0); + } + + CImgDisplay& assign() { + if (is_empty()) return flush(); + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + + // Remove display window from event thread list. + unsigned int i; + for (i = 0; ishmaddr); + shmctl(_shminfo->shmid,IPC_RMID,0); + delete _shminfo; + _shminfo = 0; + } +#endif + + XDestroyImage(_image); + if (cimg::X11_attr().nb_bits==8) XFreeColormap(dpy,_colormap); + XDestroyWindow(dpy,_window); + XSync(dpy,0); + _window = 0; _colormap = 0; _data = 0; _image = 0; + + // Reset display variables. + delete[] _title; + _width = _height = _normalization = _window_width = _window_height = 0; + _window_x = _window_y = cimg::type::min(); + _is_fullscreen = false; + _is_closed = true; + _min = _max = 0; + _title = 0; + flush(); + + cimg_unlock_display(); + return *this; + } + + CImgDisplay& assign(const unsigned int dimw, const unsigned int dimh, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!dimw || !dimh) return assign(); + _assign(dimw,dimh,title,normalization_type,fullscreen_flag,closed_flag); + _min = _max = 0; + std::memset(_data,0,(cimg::X11_attr().nb_bits==8?sizeof(unsigned char): + (cimg::X11_attr().nb_bits==16?sizeof(unsigned short):sizeof(unsigned int)))* + (size_t)_width*_height); + return paint(); + } + + template + CImgDisplay& assign(const CImg& img, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!img) return assign(); + CImg tmp; + const CImg& nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return render(nimg).paint(); + } + + template + CImgDisplay& assign(const CImgList& list, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!list) return assign(); + CImg tmp; + const CImg img = list>'x', &nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return render(nimg).paint(); + } + + CImgDisplay& assign(const CImgDisplay& disp) { + if (!disp) return assign(); + _assign(disp._width,disp._height,disp._title,disp._normalization,disp._is_fullscreen,disp._is_closed); + std::memcpy(_data,disp._data,(cimg::X11_attr().nb_bits==8?sizeof(unsigned char): + cimg::X11_attr().nb_bits==16?sizeof(unsigned short): + sizeof(unsigned int))*(size_t)_width*_height); + return paint(); + } + + CImgDisplay& resize(const int nwidth, const int nheight, const bool force_redraw=true) { + if (!nwidth || !nheight || (is_empty() && (nwidth<0 || nheight<0))) return assign(); + if (is_empty()) return assign(nwidth,nheight); + Display *const dpy = cimg::X11_attr().display; + const unsigned int + tmpdimx = (nwidth>0)?nwidth:(-nwidth*width()/100), + tmpdimy = (nheight>0)?nheight:(-nheight*height()/100), + dimx = tmpdimx?tmpdimx:1, + dimy = tmpdimy?tmpdimy:1; + if (_width!=dimx || _height!=dimy || _window_width!=dimx || _window_height!=dimy) { + show(); + cimg_lock_display(); + if (_window_width!=dimx || _window_height!=dimy) { + XWindowAttributes attr; + for (unsigned int i = 0; i<10; ++i) { + XResizeWindow(dpy,_window,dimx,dimy); + XGetWindowAttributes(dpy,_window,&attr); + if (attr.width==(int)dimx && attr.height==(int)dimy) break; + cimg::wait(5,&_timer); + } + } + if (_width!=dimx || _height!=dimy) switch (cimg::X11_attr().nb_bits) { + case 8 : { unsigned char pixel_type = 0; _resize(pixel_type,dimx,dimy,force_redraw); } break; + case 16 : { unsigned short pixel_type = 0; _resize(pixel_type,dimx,dimy,force_redraw); } break; + default : { unsigned int pixel_type = 0; _resize(pixel_type,dimx,dimy,force_redraw); } + } + _window_width = _width = dimx; _window_height = _height = dimy; + cimg_unlock_display(); + } + _is_resized = false; + if (_is_fullscreen) move((screen_width() - _width)/2,(screen_height() - _height)/2); + if (force_redraw) return paint(); + return *this; + } + + CImgDisplay& toggle_fullscreen(const bool force_redraw=true) { + if (is_empty()) return *this; + if (force_redraw) { + const cimg_ulong buf_size = (cimg_ulong)_width*_height* + (cimg::X11_attr().nb_bits==8?1:(cimg::X11_attr().nb_bits==16?2:4)); + void *image_data = std::malloc(buf_size); + std::memcpy(image_data,_data,buf_size); + assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + std::memcpy(_data,image_data,buf_size); + std::free(image_data); + return paint(); + } + return assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + } + + CImgDisplay& show() { + if (is_empty() || !_is_closed) return *this; + cimg_lock_display(); + _is_closed = false; + if (_is_fullscreen) _init_fullscreen(); + _map_window(); + cimg_unlock_display(); + return paint(); + } + + CImgDisplay& close() { + if (is_empty() || _is_closed) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + if (_is_fullscreen) _desinit_fullscreen(); + XUnmapWindow(dpy,_window); + _window_x = _window_y = cimg::type::min(); + _is_closed = true; + cimg_unlock_display(); + return *this; + } + + CImgDisplay& move(const int posx, const int posy) { + if (is_empty()) return *this; + show(); + if (_window_x!=posx || _window_y!=posy) { + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XMoveWindow(dpy,_window,posx,posy); + _window_x = posx; + _window_y = posy; + cimg_unlock_display(); + } + _is_moved = false; + return paint(); + } + + CImgDisplay& show_mouse() { + if (is_empty()) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XUndefineCursor(dpy,_window); + cimg_unlock_display(); + return *this; + } + + CImgDisplay& hide_mouse() { + if (is_empty()) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + static const char pix_data[8] = { 0 }; + XColor col; + col.red = col.green = col.blue = 0; + Pixmap pix = XCreateBitmapFromData(dpy,_window,pix_data,8,8); + Cursor cur = XCreatePixmapCursor(dpy,pix,pix,&col,&col,0,0); + XFreePixmap(dpy,pix); + XDefineCursor(dpy,_window,cur); + cimg_unlock_display(); + return *this; + } + + CImgDisplay& set_mouse(const int posx, const int posy) { + if (is_empty() || _is_closed) return *this; + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XWarpPointer(dpy,0L,_window,0,0,0,0,posx,posy); + _mouse_x = posx; _mouse_y = posy; + _is_moved = false; + XSync(dpy,0); + cimg_unlock_display(); + return *this; + } + + CImgDisplay& set_title(const char *const format, ...) { + if (is_empty()) return *this; + char *const tmp = new char[1024]; + va_list ap; + va_start(ap, format); + cimg_vsnprintf(tmp,1024,format,ap); + va_end(ap); + if (!std::strcmp(_title,tmp)) { delete[] tmp; return *this; } + delete[] _title; + const unsigned int s = (unsigned int)std::strlen(tmp) + 1; + _title = new char[s]; + std::memcpy(_title,tmp,s*sizeof(char)); + Display *const dpy = cimg::X11_attr().display; + cimg_lock_display(); + XStoreName(dpy,_window,tmp); + cimg_unlock_display(); + delete[] tmp; + return *this; + } + + template + CImgDisplay& display(const CImg& img) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "display(): Empty specified image.", + cimgdisplay_instance); + if (is_empty()) return assign(img); + return render(img).paint(false); + } + + CImgDisplay& paint(const bool wait_expose=true) { + if (is_empty()) return *this; + cimg_lock_display(); + _paint(wait_expose); + cimg_unlock_display(); + return *this; + } + + template + CImgDisplay& render(const CImg& img, const bool flag8=false) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "render(): Empty specified image.", + cimgdisplay_instance); + if (is_empty()) return *this; + if (img._depth!=1) return render(img.get_projections2d((img._width - 1)/2,(img._height - 1)/2, + (img._depth - 1)/2)); + if (cimg::X11_attr().nb_bits==8 && (img._width!=_width || img._height!=_height)) + return render(img.get_resize(_width,_height,1,-100,1)); + if (cimg::X11_attr().nb_bits==8 && !flag8 && img._spectrum==3) { + static const CImg::ucharT> default_colormap = CImg::ucharT>::default_LUT256(); + return render(img.get_index(default_colormap,1,false)); + } + + const T + *data1 = img._data, + *data2 = (img._spectrum>1)?img.data(0,0,0,1):data1, + *data3 = (img._spectrum>2)?img.data(0,0,0,2):data1; + + if (cimg::X11_attr().is_blue_first) cimg::swap(data1,data3); + cimg_lock_display(); + + if (!_normalization || (_normalization==3 && cimg::type::string()==cimg::type::string())) { + _min = _max = 0; + switch (cimg::X11_attr().nb_bits) { + case 8 : { // 256 colormap, no normalization + _set_colormap(_colormap,img._spectrum); + unsigned char + *const ndata = (img._width==_width && img._height==_height)?(unsigned char*)_data: + new unsigned char[(size_t)img._width*img._height], + *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + (*ptrd++) = (unsigned char)*(data1++); + break; + case 2 : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++); + (*ptrd++) = (R&0xf0) | (G>>4); + } break; + default : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++), + B = (unsigned char)*(data3++); + (*ptrd++) = (R&0xe0) | ((G>>5)<<2) | (B>>6); + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned char*)_data,_width,_height); + delete[] ndata; + } + } break; + case 16 : { // 16 bits colors, no normalization + unsigned short *const ndata = (img._width==_width && img._height==_height)?(unsigned short*)_data: + new unsigned short[(size_t)img._width*img._height]; + unsigned char *ptrd = (unsigned char*)ndata; + const unsigned int M = 248; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++), G = val>>2; + ptrd[0] = (val&M) | (G>>3); + ptrd[1] = (G<<5) | (G>>1); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++), G = val>>2; + ptrd[0] = (G<<5) | (G>>1); + ptrd[1] = (val&M) | (G>>3); + ptrd+=2; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd[1] = (G<<5); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = (G<<5); + ptrd[1] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd+=2; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd[1] = (G<<5) | ((unsigned char)*(data3++)>>3); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)*(data2++)>>2; + ptrd[0] = (G<<5) | ((unsigned char)*(data3++)>>3); + ptrd[1] = ((unsigned char)*(data1++)&M) | (G>>3); + ptrd+=2; + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned short*)_data,_width,_height); + delete[] ndata; + } + } break; + default : { // 24 bits colors, no normalization + unsigned int *const ndata = (img._width==_width && img._height==_height)?(unsigned int*)_data: + new unsigned int[(size_t)img._width*img._height]; + if (sizeof(int)==4) { // 32 bits int uses optimized version + unsigned int *ptrd = ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++); + *(ptrd++) = (val<<16) | (val<<8) | val; + } + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++); + *(ptrd++) = (val<<16) | (val<<8) | val; + } + break; + case 2 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data1++)<<16) | ((unsigned char)*(data2++)<<8); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data2++)<<16) | ((unsigned char)*(data1++)<<8); + break; + default : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data1++)<<16) | ((unsigned char)*(data2++)<<8) | + (unsigned char)*(data3++); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = ((unsigned char)*(data3++)<<24) | ((unsigned char)*(data2++)<<16) | + ((unsigned char)*(data1++)<<8); + } + } else { + unsigned char *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)*(data1++); + ptrd[2] = 0; + ptrd[3] = 0; + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = 0; + ptrd[2] = (unsigned char)*(data1++); + ptrd[3] = 0; + ptrd+=4; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) cimg::swap(data1,data2); + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)*(data2++); + ptrd[2] = (unsigned char)*(data1++); + ptrd[3] = 0; + ptrd+=4; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)*(data1++); + ptrd[2] = (unsigned char)*(data2++); + ptrd[3] = (unsigned char)*(data3++); + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = (unsigned char)*(data3++); + ptrd[1] = (unsigned char)*(data2++); + ptrd[2] = (unsigned char)*(data1++); + ptrd[3] = 0; + ptrd+=4; + } + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned int*)_data,_width,_height); + delete[] ndata; + } + } + } + } else { + if (_normalization==3) { + if (cimg::type::is_float()) _min = (float)img.min_max(_max); + else { _min = (float)cimg::type::min(); _max = (float)cimg::type::max(); } + } else if ((_min>_max) || _normalization==1) _min = (float)img.min_max(_max); + const float delta = _max - _min, mm = 255/(delta?delta:1.f); + switch (cimg::X11_attr().nb_bits) { + case 8 : { // 256 colormap, with normalization + _set_colormap(_colormap,img._spectrum); + unsigned char *const ndata = (img._width==_width && img._height==_height)?(unsigned char*)_data: + new unsigned char[(size_t)img._width*img._height]; + unsigned char *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char R = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = R; + } break; + case 2 : for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm); + (*ptrd++) = (R&0xf0) | (G>>4); + } break; + default : + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm), + B = (unsigned char)((*(data3++) - _min)*mm); + *(ptrd++) = (R&0xe0) | ((G>>5)<<2) | (B>>6); + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned char*)_data,_width,_height); + delete[] ndata; + } + } break; + case 16 : { // 16 bits colors, with normalization + unsigned short *const ndata = (img._width==_width && img._height==_height)?(unsigned short*)_data: + new unsigned short[(size_t)img._width*img._height]; + unsigned char *ptrd = (unsigned char*)ndata; + const unsigned int M = 248; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm), G = val>>2; + ptrd[0] = (val&M) | (G>>3); + ptrd[1] = (G<<5) | (val>>3); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm), G = val>>2; + ptrd[0] = (G<<5) | (val>>3); + ptrd[1] = (val&M) | (G>>3); + ptrd+=2; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd[1] = (G<<5); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = (G<<5); + ptrd[1] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd+=2; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd[1] = (G<<5) | ((unsigned char)((*(data3++) - _min)*mm)>>3); + ptrd+=2; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char G = (unsigned char)((*(data2++) - _min)*mm)>>2; + ptrd[0] = (G<<5) | ((unsigned char)((*(data3++) - _min)*mm)>>3); + ptrd[1] = ((unsigned char)((*(data1++) - _min)*mm)&M) | (G>>3); + ptrd+=2; + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned short*)_data,_width,_height); + delete[] ndata; + } + } break; + default : { // 24 bits colors, with normalization + unsigned int *const ndata = (img._width==_width && img._height==_height)?(unsigned int*)_data: + new unsigned int[(size_t)img._width*img._height]; + if (sizeof(int)==4) { // 32 bits int uses optimized version + unsigned int *ptrd = ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = (val<<16) | (val<<8) | val; + } + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = (val<<24) | (val<<16) | (val<<8); + } + break; + case 2 : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data1++) - _min)*mm)<<16) | + ((unsigned char)((*(data2++) - _min)*mm)<<8); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data2++) - _min)*mm)<<16) | + ((unsigned char)((*(data1++) - _min)*mm)<<8); + break; + default : + if (cimg::X11_attr().byte_order==cimg::endianness()) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data1++) - _min)*mm)<<16) | + ((unsigned char)((*(data2++) - _min)*mm)<<8) | + (unsigned char)((*(data3++) - _min)*mm); + else + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) + *(ptrd++) = + ((unsigned char)((*(data3++) - _min)*mm)<<24) | + ((unsigned char)((*(data2++) - _min)*mm)<<16) | + ((unsigned char)((*(data1++) - _min)*mm)<<8); + } + } else { + unsigned char *ptrd = (unsigned char*)ndata; + switch (img._spectrum) { + case 1 : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + ptrd[0] = 0; + ptrd[1] = val; + ptrd[2] = val; + ptrd[3] = val; + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + ptrd[0] = val; + ptrd[1] = val; + ptrd[2] = val; + ptrd[3] = 0; + ptrd+=4; + } + break; + case 2 : + if (cimg::X11_attr().byte_order) cimg::swap(data1,data2); + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)((*(data2++) - _min)*mm); + ptrd[2] = (unsigned char)((*(data1++) - _min)*mm); + ptrd[3] = 0; + ptrd+=4; + } + break; + default : + if (cimg::X11_attr().byte_order) + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = 0; + ptrd[1] = (unsigned char)((*(data1++) - _min)*mm); + ptrd[2] = (unsigned char)((*(data2++) - _min)*mm); + ptrd[3] = (unsigned char)((*(data3++) - _min)*mm); + ptrd+=4; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ptrd[0] = (unsigned char)((*(data3++) - _min)*mm); + ptrd[1] = (unsigned char)((*(data2++) - _min)*mm); + ptrd[2] = (unsigned char)((*(data1++) - _min)*mm); + ptrd[3] = 0; + ptrd+=4; + } + } + } + if (ndata!=_data) { + _render_resize(ndata,img._width,img._height,(unsigned int*)_data,_width,_height); + delete[] ndata; + } + } + } + } + cimg_unlock_display(); + return *this; + } + + template + static void screenshot(const int x0, const int y0, const int x1, const int y1, CImg& img) { + img.assign(); + Display *dpy = cimg::X11_attr().display; + cimg_lock_display(); + if (!dpy) { + dpy = XOpenDisplay(0); + if (!dpy) + throw CImgDisplayException("CImgDisplay::screenshot(): Failed to open X11 display."); + } + Window root = DefaultRootWindow(dpy); + XWindowAttributes gwa; + XGetWindowAttributes(dpy,root,&gwa); + const int width = gwa.width, height = gwa.height; + int _x0 = x0, _y0 = y0, _x1 = x1, _y1 = y1; + if (_x0>_x1) cimg::swap(_x0,_x1); + if (_y0>_y1) cimg::swap(_y0,_y1); + + XImage *image = 0; + if (_x1>=0 && _x0=0 && _y0red_mask, + green_mask = image->green_mask, + blue_mask = image->blue_mask; + img.assign(image->width,image->height,1,3); + T *pR = img.data(0,0,0,0), *pG = img.data(0,0,0,1), *pB = img.data(0,0,0,2); + cimg_forXY(img,x,y) { + const unsigned long pixel = XGetPixel(image,x,y); + *(pR++) = (T)((pixel & red_mask)>>16); + *(pG++) = (T)((pixel & green_mask)>>8); + *(pB++) = (T)(pixel & blue_mask); + } + XDestroyImage(image); + } + } + if (!cimg::X11_attr().display) XCloseDisplay(dpy); + cimg_unlock_display(); + if (img.is_empty()) + throw CImgDisplayException("CImgDisplay::screenshot(): Failed to take screenshot " + "with coordinates (%d,%d)-(%d,%d).", + x0,y0,x1,y1); + } + + template + const CImgDisplay& snapshot(CImg& img) const { + if (is_empty()) { img.assign(); return *this; } + const unsigned char *ptrs = (unsigned char*)_data; + img.assign(_width,_height,1,3); + T + *data1 = img.data(0,0,0,0), + *data2 = img.data(0,0,0,1), + *data3 = img.data(0,0,0,2); + if (cimg::X11_attr().is_blue_first) cimg::swap(data1,data3); + switch (cimg::X11_attr().nb_bits) { + case 8 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = *(ptrs++); + *(data1++) = (T)(val&0xe0); + *(data2++) = (T)((val&0x1c)<<3); + *(data3++) = (T)(val<<6); + } + } break; + case 16 : { + if (cimg::X11_attr().byte_order) for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + val0 = ptrs[0], + val1 = ptrs[1]; + ptrs+=2; + *(data1++) = (T)(val0&0xf8); + *(data2++) = (T)((val0<<5) | ((val1&0xe0)>>5)); + *(data3++) = (T)(val1<<3); + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned short + val0 = ptrs[0], + val1 = ptrs[1]; + ptrs+=2; + *(data1++) = (T)(val1&0xf8); + *(data2++) = (T)((val1<<5) | ((val0&0xe0)>>5)); + *(data3++) = (T)(val0<<3); + } + } break; + default : { + if (cimg::X11_attr().byte_order) for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + ++ptrs; + *(data1++) = (T)ptrs[0]; + *(data2++) = (T)ptrs[1]; + *(data3++) = (T)ptrs[2]; + ptrs+=3; + } else for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + *(data3++) = (T)ptrs[0]; + *(data2++) = (T)ptrs[1]; + *(data1++) = (T)ptrs[2]; + ptrs+=3; + ++ptrs; + } + } + } + return *this; + } + + // Windows-based implementation. + //------------------------------- +#elif cimg_display==2 + + bool _is_mouse_tracked, _is_cursor_visible; + HANDLE _thread, _is_created, _mutex; + HWND _window, _background_window; + CLIENTCREATESTRUCT _ccs; + unsigned int *_data; + DEVMODE _curr_mode; + BITMAPINFO _bmi; + HDC _hdc; + + static int screen_width() { + DEVMODE mode; + mode.dmSize = sizeof(DEVMODE); + mode.dmDriverExtra = 0; + EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,&mode); + return (int)mode.dmPelsWidth; + } + + static int screen_height() { + DEVMODE mode; + mode.dmSize = sizeof(DEVMODE); + mode.dmDriverExtra = 0; + EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,&mode); + return (int)mode.dmPelsHeight; + } + + static void wait_all() { + WaitForSingleObject(cimg::Win32_attr().wait_event,INFINITE); + } + + static LRESULT APIENTRY _handle_events(HWND window, UINT msg, WPARAM wParam, LPARAM lParam) { +#ifdef _WIN64 + CImgDisplay *const disp = (CImgDisplay*)GetWindowLongPtr(window,GWLP_USERDATA); +#else + CImgDisplay *const disp = (CImgDisplay*)GetWindowLong(window,GWL_USERDATA); +#endif + MSG st_msg; + switch (msg) { + case WM_CLOSE : + disp->_mouse_x = disp->_mouse_y = -1; + disp->_window_x = disp->_window_y = cimg::type::min(); + disp->set_button().set_key(0).set_key(0,false)._is_closed = true; + ReleaseMutex(disp->_mutex); + ShowWindow(disp->_window,SW_HIDE); + disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + return 0; + case WM_SIZE : { + while (PeekMessage(&st_msg,window,WM_SIZE,WM_SIZE,PM_REMOVE)) {} + WaitForSingleObject(disp->_mutex,INFINITE); + const unsigned int nw = LOWORD(lParam),nh = HIWORD(lParam); + if (nw && nh && (nw!=disp->_width || nh!=disp->_height)) { + disp->_window_width = nw; + disp->_window_height = nh; + disp->_mouse_x = disp->_mouse_y = -1; + disp->_is_resized = disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + } + ReleaseMutex(disp->_mutex); + } break; + case WM_MOVE : { + while (PeekMessage(&st_msg,window,WM_SIZE,WM_SIZE,PM_REMOVE)) {} + WaitForSingleObject(disp->_mutex,INFINITE); + const int nx = (int)(short)(LOWORD(lParam)), ny = (int)(short)(HIWORD(lParam)); + if (nx!=disp->_window_x || ny!=disp->_window_y) { + disp->_window_x = nx; + disp->_window_y = ny; + disp->_is_moved = disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + } + ReleaseMutex(disp->_mutex); + } break; + case WM_PAINT : + disp->paint(); + cimg_lock_display(); + if (disp->_is_cursor_visible) while (ShowCursor(TRUE)<0); else while (ShowCursor(FALSE_WIN)>=0); + cimg_unlock_display(); + break; + case WM_ERASEBKGND : + // return 0; + break; + case WM_KEYDOWN : + disp->set_key((unsigned int)wParam); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_KEYUP : + disp->set_key((unsigned int)wParam,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_MOUSEMOVE : { + while (PeekMessage(&st_msg,window,WM_MOUSEMOVE,WM_MOUSEMOVE,PM_REMOVE)) {} + disp->_mouse_x = LOWORD(lParam); + disp->_mouse_y = HIWORD(lParam); +#if (_WIN32_WINNT>=0x0400) && !defined(NOTRACKMOUSEEVENT) + if (!disp->_is_mouse_tracked) { + TRACKMOUSEEVENT tme; + tme.cbSize = sizeof(TRACKMOUSEEVENT); + tme.dwFlags = TME_LEAVE; + tme.hwndTrack = disp->_window; + if (TrackMouseEvent(&tme)) disp->_is_mouse_tracked = true; + } +#endif + if (disp->_mouse_x<0 || disp->_mouse_y<0 || disp->_mouse_x>=disp->width() || disp->_mouse_y>=disp->height()) + disp->_mouse_x = disp->_mouse_y = -1; + disp->_is_event = true; + SetEvent(cimg::Win32_attr().wait_event); + cimg_lock_display(); + if (disp->_is_cursor_visible) while (ShowCursor(TRUE)<0); else while (ShowCursor(FALSE_WIN)>=0); + cimg_unlock_display(); + } break; + case WM_MOUSELEAVE : { + disp->_mouse_x = disp->_mouse_y = -1; + disp->_is_mouse_tracked = false; + cimg_lock_display(); + while (ShowCursor(TRUE)<0) {} + cimg_unlock_display(); + } break; + case WM_LBUTTONDOWN : + disp->set_button(1); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_RBUTTONDOWN : + disp->set_button(2); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_MBUTTONDOWN : + disp->set_button(3); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_LBUTTONUP : + disp->set_button(1,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_RBUTTONUP : + disp->set_button(2,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case WM_MBUTTONUP : + disp->set_button(3,false); + SetEvent(cimg::Win32_attr().wait_event); + break; + case 0x020A : // WM_MOUSEWHEEL: + disp->set_wheel((int)((short)HIWORD(wParam))/120); + SetEvent(cimg::Win32_attr().wait_event); + } + return DefWindowProc(window,msg,wParam,lParam); + } + + static DWORD WINAPI _events_thread(void* arg) { + CImgDisplay *const disp = (CImgDisplay*)(((void**)arg)[0]); + const char *const title = (const char*)(((void**)arg)[1]); + MSG msg; + delete[] (void**)arg; + disp->_bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + disp->_bmi.bmiHeader.biWidth = disp->width(); + disp->_bmi.bmiHeader.biHeight = -disp->height(); + disp->_bmi.bmiHeader.biPlanes = 1; + disp->_bmi.bmiHeader.biBitCount = 32; + disp->_bmi.bmiHeader.biCompression = BI_RGB; + disp->_bmi.bmiHeader.biSizeImage = 0; + disp->_bmi.bmiHeader.biXPelsPerMeter = 1; + disp->_bmi.bmiHeader.biYPelsPerMeter = 1; + disp->_bmi.bmiHeader.biClrUsed = 0; + disp->_bmi.bmiHeader.biClrImportant = 0; + disp->_data = new unsigned int[(size_t)disp->_width*disp->_height]; + if (!disp->_is_fullscreen) { // Normal window + RECT rect; + rect.left = rect.top = 0; rect.right = (LONG)disp->_width - 1; rect.bottom = (LONG)disp->_height - 1; + AdjustWindowRect(&rect,WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,false); + const int + border1 = (int)((rect.right - rect.left + 1 - disp->_width)/2), + border2 = (int)(rect.bottom - rect.top + 1 - disp->_height - border1), + ww = disp->_width + 2*border1, + wh = disp->_height + border1 + border2, + sw = CImgDisplay::screen_width(), + sh = CImgDisplay::screen_height(); + int + wx = (int)cimg::round(cimg::rand(0,sw - ww -1)), + wy = (int)cimg::round(cimg::rand(64,sh - wh - 65)); + if (wx + ww>=sw) wx = sw - ww; + if (wy + wh>=sh) wy = sh - wh; + if (wx<0) wx = 0; + if (wy<0) wy = 0; + disp->_window = CreateWindowA("MDICLIENT",title?title:" ", + WS_OVERLAPPEDWINDOW | (disp->_is_closed?0:WS_VISIBLE), + wx,wy,ww,wh,0,0,0,&(disp->_ccs)); + if (!disp->_is_closed) { + GetWindowRect(disp->_window,&rect); + disp->_window_x = rect.left; + disp->_window_y = rect.top; + } else disp->_window_x = disp->_window_y = cimg::type::min(); + } else { // Fullscreen window + const unsigned int + sx = (unsigned int)screen_width(), + sy = (unsigned int)screen_height(); + disp->_window = CreateWindowA("MDICLIENT",title?title:" ", + WS_POPUP | (disp->_is_closed?0:WS_VISIBLE), + (sx - disp->_width)/2, + (sy - disp->_height)/2, + disp->_width,disp->_height,0,0,0,&(disp->_ccs)); + disp->_window_x = disp->_window_y = 0; + } + SetForegroundWindow(disp->_window); + disp->_hdc = GetDC(disp->_window); + disp->_window_width = disp->_width; + disp->_window_height = disp->_height; + disp->flush(); +#ifdef _WIN64 + SetWindowLongPtr(disp->_window,GWLP_USERDATA,(LONG_PTR)disp); + SetWindowLongPtr(disp->_window,GWLP_WNDPROC,(LONG_PTR)_handle_events); +#else + SetWindowLong(disp->_window,GWL_USERDATA,(LONG)disp); + SetWindowLong(disp->_window,GWL_WNDPROC,(LONG)_handle_events); +#endif + SetEvent(disp->_is_created); + while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg); + return 0; + } + + CImgDisplay& _update_window_pos() { + if (_is_closed) _window_x = _window_y = cimg::type::min(); + else { + RECT rect; + rect.left = rect.top = 0; rect.right = (LONG)_width - 1; rect.bottom = (LONG)_height - 1; + AdjustWindowRect(&rect,WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,false); + GetWindowRect(_window,&rect); + _window_x = rect.left; + _window_y = rect.top; + } + return *this; + } + + void _init_fullscreen() { + _background_window = 0; + if (!_is_fullscreen || _is_closed) _curr_mode.dmSize = 0; + else { + DEVMODE mode; + unsigned int imode = 0, ibest = 0, bestbpp = 0, bw = ~0U, bh = ~0U; + for (mode.dmSize = sizeof(DEVMODE), mode.dmDriverExtra = 0; EnumDisplaySettings(0,imode,&mode); ++imode) { + const unsigned int nw = mode.dmPelsWidth, nh = mode.dmPelsHeight; + if (nw>=_width && nh>=_height && mode.dmBitsPerPel>=bestbpp && nw<=bw && nh<=bh) { + bestbpp = mode.dmBitsPerPel; + ibest = imode; + bw = nw; bh = nh; + } + } + if (bestbpp) { + _curr_mode.dmSize = sizeof(DEVMODE); _curr_mode.dmDriverExtra = 0; + EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,&_curr_mode); + EnumDisplaySettings(0,ibest,&mode); + ChangeDisplaySettings(&mode,0); + } else _curr_mode.dmSize = 0; + + const unsigned int + sx = (unsigned int)screen_width(), + sy = (unsigned int)screen_height(); + if (sx!=_width || sy!=_height) { + CLIENTCREATESTRUCT background_ccs = { 0,0 }; + _background_window = CreateWindowA("MDICLIENT","",WS_POPUP | WS_VISIBLE, 0,0,sx,sy,0,0,0,&background_ccs); + SetForegroundWindow(_background_window); + } + } + } + + void _desinit_fullscreen() { + if (!_is_fullscreen) return; + if (_background_window) DestroyWindow(_background_window); + _background_window = 0; + if (_curr_mode.dmSize) ChangeDisplaySettings(&_curr_mode,0); + _is_fullscreen = false; + } + + CImgDisplay& _assign(const unsigned int dimw, const unsigned int dimh, const char *const ptitle=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + + // Allocate space for window title + const char *const nptitle = ptitle?ptitle:""; + const unsigned int s = (unsigned int)std::strlen(nptitle) + 1; + char *const tmp_title = s?new char[s]:0; + if (s) std::memcpy(tmp_title,nptitle,s*sizeof(char)); + + // Destroy previous window if existing + if (!is_empty()) assign(); + + // Set display variables + _width = std::min(dimw,(unsigned int)screen_width()); + _height = std::min(dimh,(unsigned int)screen_height()); + _normalization = normalization_type<4?normalization_type:3; + _is_fullscreen = fullscreen_flag; + _window_x = _window_y = cimg::type::min(); + _is_closed = closed_flag; + _is_cursor_visible = true; + _is_mouse_tracked = false; + _title = tmp_title; + flush(); + if (_is_fullscreen) _init_fullscreen(); + + // Create event thread + void *const arg = (void*)(new void*[2]); + ((void**)arg)[0] = (void*)this; + ((void**)arg)[1] = (void*)_title; + _mutex = CreateMutex(0,FALSE_WIN,0); + _is_created = CreateEvent(0,FALSE_WIN,FALSE_WIN,0); + _thread = CreateThread(0,0,_events_thread,arg,0,0); + WaitForSingleObject(_is_created,INFINITE); + return *this; + } + + CImgDisplay& assign() { + if (is_empty()) return flush(); + DestroyWindow(_window); + TerminateThread(_thread,0); + delete[] _data; + delete[] _title; + _data = 0; + _title = 0; + if (_is_fullscreen) _desinit_fullscreen(); + _width = _height = _normalization = _window_width = _window_height = 0; + _window_x = _window_y = cimg::type::min(); + _is_fullscreen = false; + _is_closed = true; + _min = _max = 0; + _title = 0; + flush(); + return *this; + } + + CImgDisplay& assign(const unsigned int dimw, const unsigned int dimh, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!dimw || !dimh) return assign(); + _assign(dimw,dimh,title,normalization_type,fullscreen_flag,closed_flag); + _min = _max = 0; + std::memset(_data,0,sizeof(unsigned int)*_width*_height); + return paint(); + } + + template + CImgDisplay& assign(const CImg& img, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!img) return assign(); + CImg tmp; + const CImg& nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return display(nimg); + } + + template + CImgDisplay& assign(const CImgList& list, const char *const title=0, + const unsigned int normalization_type=3, + const bool fullscreen_flag=false, const bool closed_flag=false) { + if (!list) return assign(); + CImg tmp; + const CImg img = list>'x', &nimg = (img._depth==1)?img:(tmp=img.get_projections2d((img._width - 1)/2, + (img._height - 1)/2, + (img._depth - 1)/2)); + _assign(nimg._width,nimg._height,title,normalization_type,fullscreen_flag,closed_flag); + if (_normalization==2) _min = (float)nimg.min_max(_max); + return display(nimg); + } + + CImgDisplay& assign(const CImgDisplay& disp) { + if (!disp) return assign(); + _assign(disp._width,disp._height,disp._title,disp._normalization,disp._is_fullscreen,disp._is_closed); + std::memcpy(_data,disp._data,sizeof(unsigned int)*_width*_height); + return paint(); + } + + CImgDisplay& resize(const int nwidth, const int nheight, const bool force_redraw=true) { + if (!nwidth || !nheight || (is_empty() && (nwidth<0 || nheight<0))) return assign(); + if (is_empty()) return assign(nwidth,nheight); + const unsigned int + tmpdimx = (nwidth>0)?nwidth:(-nwidth*_width/100), + tmpdimy = (nheight>0)?nheight:(-nheight*_height/100), + dimx = tmpdimx?tmpdimx:1, + dimy = tmpdimy?tmpdimy:1; + if (_width!=dimx || _height!=dimy || _window_width!=dimx || _window_height!=dimy) { + if (_window_width!=dimx || _window_height!=dimy) { + RECT rect; rect.left = rect.top = 0; rect.right = (LONG)dimx - 1; rect.bottom = (LONG)dimy - 1; + AdjustWindowRect(&rect,WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,false); + const int cwidth = rect.right - rect.left + 1, cheight = rect.bottom - rect.top + 1; + SetWindowPos(_window,0,0,0,cwidth,cheight,SWP_NOMOVE | SWP_NOZORDER | SWP_NOCOPYBITS); + } + if (_width!=dimx || _height!=dimy) { + unsigned int *const ndata = new unsigned int[dimx*dimy]; + if (force_redraw) _render_resize(_data,_width,_height,ndata,dimx,dimy); + else std::memset(ndata,0x80,sizeof(unsigned int)*dimx*dimy); + delete[] _data; + _data = ndata; + _bmi.bmiHeader.biWidth = (LONG)dimx; + _bmi.bmiHeader.biHeight = -(int)dimy; + _width = dimx; + _height = dimy; + } + _window_width = dimx; _window_height = dimy; + show(); + } + _is_resized = false; + if (_is_fullscreen) move((screen_width() - width())/2,(screen_height() - height())/2); + if (force_redraw) return paint(); + return *this; + } + + CImgDisplay& toggle_fullscreen(const bool force_redraw=true) { + if (is_empty()) return *this; + if (force_redraw) { + const cimg_ulong buf_size = (cimg_ulong)_width*_height*4; + void *odata = std::malloc(buf_size); + if (odata) { + std::memcpy(odata,_data,buf_size); + assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + std::memcpy(_data,odata,buf_size); + std::free(odata); + } + return paint(); + } + return assign(_width,_height,_title,_normalization,!_is_fullscreen,false); + } + + CImgDisplay& show() { + if (is_empty() || !_is_closed) return *this; + _is_closed = false; + if (_is_fullscreen) _init_fullscreen(); + ShowWindow(_window,SW_SHOW); + _update_window_pos(); + return paint(); + } + + CImgDisplay& close() { + if (is_empty() || _is_closed) return *this; + _is_closed = true; + if (_is_fullscreen) _desinit_fullscreen(); + ShowWindow(_window,SW_HIDE); + _window_x = _window_y = cimg::type::min(); + return *this; + } + + CImgDisplay& move(const int posx, const int posy) { + if (is_empty()) return *this; + if (_window_x!=posx || _window_y!=posy) { + SetWindowPos(_window,0,posx,posy,0,0,SWP_NOSIZE | SWP_NOZORDER); + _window_x = posx; + _window_y = posy; + } + show(); + _is_moved = false; + return *this; + } + + CImgDisplay& show_mouse() { + if (is_empty()) return *this; + _is_cursor_visible = true; + return *this; + } + + CImgDisplay& hide_mouse() { + if (is_empty()) return *this; + _is_cursor_visible = false; + return *this; + } + + CImgDisplay& set_mouse(const int posx, const int posy) { + if (is_empty() || _is_closed || posx<0 || posy<0) return *this; + if (!_is_closed) { + _update_window_pos(); + const int res = (int)SetCursorPos(_window_x + posx,_window_y + posy); + if (res) { _mouse_x = posx; _mouse_y = posy; } + } + return *this; + } + + CImgDisplay& set_title(const char *const format, ...) { + if (is_empty()) return *this; + char *const tmp = new char[1024]; + va_list ap; + va_start(ap, format); + cimg_vsnprintf(tmp,1024,format,ap); + va_end(ap); + if (!std::strcmp(_title,tmp)) { delete[] tmp; return *this; } + delete[] _title; + const unsigned int s = (unsigned int)std::strlen(tmp) + 1; + _title = new char[s]; + std::memcpy(_title,tmp,s*sizeof(char)); + SetWindowTextA(_window, tmp); + delete[] tmp; + return *this; + } + + template + CImgDisplay& display(const CImg& img) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "display(): Empty specified image.", + cimgdisplay_instance); + if (is_empty()) return assign(img); + return render(img).paint(); + } + + CImgDisplay& paint() { + if (_is_closed) return *this; + WaitForSingleObject(_mutex,INFINITE); + SetDIBitsToDevice(_hdc,0,0,_width,_height,0,0,0,_height,_data,&_bmi,DIB_RGB_COLORS); + ReleaseMutex(_mutex); + return *this; + } + + template + CImgDisplay& render(const CImg& img) { + if (!img) + throw CImgArgumentException(_cimgdisplay_instance + "render(): Empty specified image.", + cimgdisplay_instance); + + if (is_empty()) return *this; + if (img._depth!=1) return render(img.get_projections2d((img._width - 1)/2,(img._height - 1)/2, + (img._depth - 1)/2)); + + const T + *data1 = img._data, + *data2 = (img._spectrum>=2)?img.data(0,0,0,1):data1, + *data3 = (img._spectrum>=3)?img.data(0,0,0,2):data1; + + WaitForSingleObject(_mutex,INFINITE); + unsigned int + *const ndata = (img._width==_width && img._height==_height)?_data: + new unsigned int[(size_t)img._width*img._height], + *ptrd = ndata; + + if (!_normalization || (_normalization==3 && cimg::type::string()==cimg::type::string())) { + _min = _max = 0; + switch (img._spectrum) { + case 1 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)*(data1++); + *(ptrd++) = (unsigned int)((val<<16) | (val<<8) | val); + } + } break; + case 2 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8)); + } + } break; + default : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)*(data1++), + G = (unsigned char)*(data2++), + B = (unsigned char)*(data3++); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8) | B); + } + } + } + } else { + if (_normalization==3) { + if (cimg::type::is_float()) _min = (float)img.min_max(_max); + else { + _min = (float)cimg::type::min(); + _max = (float)cimg::type::max(); + } + } else if ((_min>_max) || _normalization==1) _min = (float)img.min_max(_max); + const float delta = _max - _min, mm = 255/(delta?delta:1.f); + switch (img._spectrum) { + case 1 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char val = (unsigned char)((*(data1++) - _min)*mm); + *(ptrd++) = (unsigned int)((val<<16) | (val<<8) | val); + } + } break; + case 2 : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8)); + } + } break; + default : { + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned char + R = (unsigned char)((*(data1++) - _min)*mm), + G = (unsigned char)((*(data2++) - _min)*mm), + B = (unsigned char)((*(data3++) - _min)*mm); + *(ptrd++) = (unsigned int)((R<<16) | (G<<8) | B); + } + } + } + } + if (ndata!=_data) { _render_resize(ndata,img._width,img._height,_data,_width,_height); delete[] ndata; } + ReleaseMutex(_mutex); + return *this; + } + + template + static void screenshot(const int x0, const int y0, const int x1, const int y1, CImg& img) { + img.assign(); + HDC hScreen = GetDC(GetDesktopWindow()); + if (hScreen) { + const int + width = GetDeviceCaps(hScreen,HORZRES), + height = GetDeviceCaps(hScreen,VERTRES); + int _x0 = x0, _y0 = y0, _x1 = x1, _y1 = y1; + if (_x0>_x1) cimg::swap(_x0,_x1); + if (_y0>_y1) cimg::swap(_y0,_y1); + if (_x1>=0 && _x0=0 && _y0 + const CImgDisplay& snapshot(CImg& img) const { + if (is_empty()) { img.assign(); return *this; } + const unsigned int *ptrs = _data; + img.assign(_width,_height,1,3); + T + *data1 = img.data(0,0,0,0), + *data2 = img.data(0,0,0,1), + *data3 = img.data(0,0,0,2); + for (cimg_ulong xy = (cimg_ulong)img._width*img._height; xy>0; --xy) { + const unsigned int val = *(ptrs++); + *(data1++) = (T)(unsigned char)(val>>16); + *(data2++) = (T)(unsigned char)((val>>8)&0xFF); + *(data3++) = (T)(unsigned char)(val&0xFF); + } + return *this; + } +#endif + + //@} + }; // struct CImgDisplay { ... + + /* + #-------------------------------------- + # + # + # + # Definition of the CImg structure + # + # + # + #-------------------------------------- + */ + + //! Class representing an image (up to 4 dimensions wide), each pixel being of type \c T. + /** + This is the main class of the %CImg Library. It declares and constructs + an image, allows access to its pixel values, and is able to perform various image operations. + + \par Image representation + + A %CImg image is defined as an instance of the container \c CImg, which contains a regular grid of pixels, + each pixel value being of type \c T. The image grid can have up to 4 dimensions: width, height, depth + and number of channels. + Usually, the three first dimensions are used to describe spatial coordinates (x,y,z), + while the number of channels is rather used as a vector-valued dimension + (it may describe the R,G,B color channels for instance). + If you need a fifth dimension, you can use image lists \c CImgList rather than simple images \c CImg. + + Thus, the \c CImg class is able to represent volumetric images of vector-valued pixels, + as well as images with less dimensions (1D scalar signal, 2D color images, ...). + Most member functions of the class CImg<\c T> are designed to handle this maximum case of (3+1) dimensions. + + Concerning the pixel value type \c T: + fully supported template types are the basic C++ types: unsigned char, char, short, unsigned int, int, + unsigned long, long, float, double, ... . + Typically, fast image display can be done using CImg images, + while complex image processing algorithms may be rather coded using CImg or CImg + images that have floating-point pixel values. The default value for the template T is \c float. + Using your own template types may be possible. However, you will certainly have to define the complete set + of arithmetic and logical operators for your class. + + \par Image structure + + The \c CImg structure contains \e six fields: + - \c _width defines the number of \a columns of the image (size along the X-axis). + - \c _height defines the number of \a rows of the image (size along the Y-axis). + - \c _depth defines the number of \a slices of the image (size along the Z-axis). + - \c _spectrum defines the number of \a channels of the image (size along the C-axis). + - \c _data defines a \a pointer to the \a pixel \a data (of type \c T). + - \c _is_shared is a boolean that tells if the memory buffer \c data is shared with + another image. + + You can access these fields publicly although it is recommended to use the dedicated functions + width(), height(), depth(), spectrum() and ptr() to do so. + Image dimensions are not limited to a specific range (as long as you got enough available memory). + A value of \e 1 usually means that the corresponding dimension is \a flat. + If one of the dimensions is \e 0, or if the data pointer is null, the image is considered as \e empty. + Empty images should not contain any pixel data and thus, will not be processed by CImg member functions + (a CImgInstanceException will be thrown instead). + Pixel data are stored in memory, in a non interlaced mode (See \ref cimg_storage). + + \par Image declaration and construction + + Declaring an image can be done by using one of the several available constructors. + Here is a list of the most used: + + - Construct images from arbitrary dimensions: + - CImg img; declares an empty image. + - CImg img(128,128); declares a 128x128 greyscale image with + \c unsigned \c char pixel values. + - CImg img(3,3); declares a 3x3 matrix with \c double coefficients. + - CImg img(256,256,1,3); declares a 256x256x1x3 (color) image + (colors are stored as an image with three channels). + - CImg img(128,128,128); declares a 128x128x128 volumetric and greyscale image + (with \c double pixel values). + - CImg<> img(128,128,128,3); declares a 128x128x128 volumetric color image + (with \c float pixels, which is the default value of the template parameter \c T). + - \b Note: images pixels are not automatically initialized to 0. You may use the function \c fill() to + do it, or use the specific constructor taking 5 parameters like this: + CImg<> img(128,128,128,3,0); declares a 128x128x128 volumetric color image with all pixel values to 0. + + - Construct images from filenames: + - CImg img("image.jpg"); reads a JPEG color image from the file "image.jpg". + - CImg img("analyze.hdr"); reads a volumetric image (ANALYZE7.5 format) from the + file "analyze.hdr". + - \b Note: You need to install ImageMagick + to be able to read common compressed image formats (JPG,PNG, ...) (See \ref cimg_files_io). + + - Construct images from C-style arrays: + - CImg img(data_buffer,256,256); constructs a 256x256 greyscale image from a \c int* buffer + \c data_buffer (of size 256x256=65536). + - CImg img(data_buffer,256,256,1,3); constructs a 256x256 color image + from a \c unsigned \c char* buffer \c data_buffer (where R,G,B channels follow each others). + + The complete list of constructors can be found here. + + \par Most useful functions + + The \c CImg class contains a lot of functions that operates on images. + Some of the most useful are: + + - operator()(): Read or write pixel values. + - display(): displays the image in a new window. + **/ + template + struct CImg { + + unsigned int _width, _height, _depth, _spectrum; + bool _is_shared; + T *_data; + + //! Simple iterator type, to loop through each pixel value of an image instance. + /** + \note + - The \c CImg::iterator type is defined to be a T*. + - You will seldom have to use iterators in %CImg, most classical operations + being achieved (often in a faster way) using methods of \c CImg. + \par Example + \code + CImg img("reference.jpg"); // Load image from file + // Set all pixels to '0', with a CImg iterator. + for (CImg::iterator it = img.begin(), it::const_iterator type is defined to be a \c const \c T*. + - You will seldom have to use iterators in %CImg, most classical operations + being achieved (often in a faster way) using methods of \c CImg. + \par Example + \code + const CImg img("reference.jpg"); // Load image from file + float sum = 0; + // Compute sum of all pixel values, with a CImg iterator. + for (CImg::iterator it = img.begin(), it::value_type type of a \c CImg is defined to be a \c T. + - \c CImg::value_type is actually not used in %CImg methods. It has been mainly defined for + compatibility with STL naming conventions. + **/ + typedef T value_type; + + // Define common types related to template type T. + typedef typename cimg::superset::type Tbool; + typedef typename cimg::superset::type Tuchar; + typedef typename cimg::superset::type Tchar; + typedef typename cimg::superset::type Tushort; + typedef typename cimg::superset::type Tshort; + typedef typename cimg::superset::type Tuint; + typedef typename cimg::superset::type Tint; + typedef typename cimg::superset::type Tulong; + typedef typename cimg::superset::type Tlong; + typedef typename cimg::superset::type Tfloat; + typedef typename cimg::superset::type Tdouble; + typedef typename cimg::last::type boolT; + typedef typename cimg::last::type ucharT; + typedef typename cimg::last::type charT; + typedef typename cimg::last::type ushortT; + typedef typename cimg::last::type shortT; + typedef typename cimg::last::type uintT; + typedef typename cimg::last::type intT; + typedef typename cimg::last::type ulongT; + typedef typename cimg::last::type longT; + typedef typename cimg::last::type uint64T; + typedef typename cimg::last::type int64T; + typedef typename cimg::last::type floatT; + typedef typename cimg::last::type doubleT; + + // Return 'dx*dy*dz*dc' as a 'size_t' and check no overflow occurs. + static size_t safe_size(const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) { + if (!(dx && dy && dz && dc)) return 0; + size_t siz = (size_t)dx, osiz = siz; + if ((dy==1 || (siz*=dy)>osiz) && + ((osiz = siz), dz==1 || (siz*=dz)>osiz) && + ((osiz = siz), dc==1 || (siz*=dc)>osiz) && + ((osiz = siz), sizeof(T)==1 || (siz*sizeof(T))>osiz)) return siz; + throw CImgArgumentException("CImg<%s>::safe_size(): Specified size (%u,%u,%u,%u) overflows 'size_t'.", + pixel_type(),dx,dy,dz,dc); + } + + //@} + //--------------------------- + // + //! \name Plugins + //@{ + //--------------------------- +#ifdef cimg_plugin +#include cimg_plugin +#endif +#ifdef cimg_plugin1 +#include cimg_plugin1 +#endif +#ifdef cimg_plugin2 +#include cimg_plugin2 +#endif +#ifdef cimg_plugin3 +#include cimg_plugin3 +#endif +#ifdef cimg_plugin4 +#include cimg_plugin4 +#endif +#ifdef cimg_plugin5 +#include cimg_plugin5 +#endif +#ifdef cimg_plugin6 +#include cimg_plugin6 +#endif +#ifdef cimg_plugin7 +#include cimg_plugin7 +#endif +#ifdef cimg_plugin8 +#include cimg_plugin8 +#endif + + //@} + //--------------------------------------------------------- + // + //! \name Constructors / Destructor / Instance Management + //@{ + //--------------------------------------------------------- + + //! Destroy image. + /** + \note + - The pixel buffer data() is deallocated if necessary, e.g. for non-empty and non-shared image instances. + - Destroying an empty or shared image does nothing actually. + \warning + - When destroying a non-shared image, make sure that you will \e not operate on a remaining shared image + that shares its buffer with the destroyed instance, in order to avoid further invalid memory access + (to a deallocated buffer). + **/ + ~CImg() { + if (!_is_shared) delete[] _data; + } + + //! Construct empty image. + /** + \note + - An empty image has no pixel data and all of its dimensions width(), height(), depth(), spectrum() + are set to \c 0, as well as its pixel buffer pointer data(). + - An empty image may be re-assigned afterwards, e.g. with the family of + assign(unsigned int,unsigned int,unsigned int,unsigned int) methods, + or by operator=(const CImg&). In all cases, the type of pixels stays \c T. + - An empty image is never shared. + \par Example + \code + CImg img1, img2; // Construct two empty images + img1.assign(256,256,1,3); // Re-assign 'img1' to be a 256x256x1x3 (color) image + img2 = img1.get_rand(0,255); // Re-assign 'img2' to be a random-valued version of 'img1' + img2.assign(); // Re-assign 'img2' to be an empty image again + \endcode + **/ + CImg():_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) {} + + //! Construct image with specified size. + /** + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \note + - It is able to create only \e non-shared images, and allocates thus a pixel buffer data() + for each constructed image instance. + - Setting one dimension \c size_x,\c size_y,\c size_z or \c size_c to \c 0 leads to the construction of + an \e empty image. + - A \c CImgInstanceException is thrown when the pixel buffer cannot be allocated + (e.g. when requested size is too big for available memory). + \warning + - The allocated pixel buffer is \e not filled with a default value, and is likely to contain garbage values. + In order to initialize pixel values during construction (e.g. with \c 0), use constructor + CImg(unsigned int,unsigned int,unsigned int,unsigned int,T) instead. + \par Example + \code + CImg img1(256,256,1,3); // Construct a 256x256x1x3 (color) image, filled with garbage values + CImg img2(256,256,1,3,0); // Construct a 256x256x1x3 (color) image, filled with value '0' + \endcode + **/ + explicit CImg(const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1): + _is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values. + /** + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param value Initialization value. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), + but it also fills the pixel buffer with the specified \c value. + \warning + - It cannot be used to construct a vector-valued image and initialize it with \e vector-valued pixels + (e.g. RGB vector, for color images). + For this task, you may use fillC() after construction. + **/ + CImg(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const T& value): + _is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + fill(value); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values from a sequence of integers. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, + with pixels of type \c T, and initialize pixel + values from the specified sequence of integers \c value0,\c value1,\c ... + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param value0 First value of the initialization sequence (must be an \e integer). + \param value1 Second value of the initialization sequence (must be an \e integer). + \param ... + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it also fills + the pixel buffer with a sequence of specified integer values. + \warning + - You must specify \e exactly \c size_x*\c size_y*\c size_z*\c size_c integers in the initialization sequence. + Otherwise, the constructor may crash or fill your image pixels with garbage. + \par Example + \code + const CImg img(2,2,1,3, // Construct a 2x2 color (RGB) image + 0,255,0,255, // Set the 4 values for the red component + 0,0,255,255, // Set the 4 values for the green component + 64,64,64,64); // Set the 4 values for the blue component + img.resize(150,150).display(); + \endcode + \image html ref_constructor1.jpg + **/ + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const int value0, const int value1, ...): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { +#define _CImg_stdarg(img,a0,a1,N,t) { \ + size_t _siz = (size_t)N; \ + if (_siz--) { \ + va_list ap; \ + va_start(ap,a1); \ + T *ptrd = (img)._data; \ + *(ptrd++) = (T)a0; \ + if (_siz--) { \ + *(ptrd++) = (T)a1; \ + for ( ; _siz; --_siz) *(ptrd++) = (T)va_arg(ap,t); \ + } \ + va_end(ap); \ + } \ + } + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),int); + } + +#if cimg_use_cpp11==1 + //! Construct image with specified size and initialize pixel values from an initializer list of integers. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, + with pixels of type \c T, and initialize pixel + values from the specified initializer list of integers { \c value0,\c value1,\c ... } + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param { value0, value1, ... } Initialization list + \param repeat_values Tells if the value filling process is repeated over the image. + + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it also fills + the pixel buffer with a sequence of specified integer values. + \par Example + \code + const CImg img(2,2,1,3, // Construct a 2x2 color (RGB) image + { 0,255,0,255, // Set the 4 values for the red component + 0,0,255,255, // Set the 4 values for the green component + 64,64,64,64 }); // Set the 4 values for the blue component + img.resize(150,150).display(); + \endcode + \image html ref_constructor1.jpg + **/ + template + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const std::initializer_list values, + const bool repeat_values=true): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { +#define _cimg_constructor_cpp11(repeat_values) \ + auto it = values.begin(); \ + size_t siz = size(); \ + if (repeat_values) for (T *ptrd = _data; siz--; ) { \ + *(ptrd++) = (T)(*(it++)); if (it==values.end()) it = values.begin(); } \ + else { siz = std::min(siz,values.size()); for (T *ptrd = _data; siz--; ) *(ptrd++) = (T)(*(it++)); } + assign(size_x,size_y,size_z,size_c); + _cimg_constructor_cpp11(repeat_values); + } + + template + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, + std::initializer_list values, + const bool repeat_values=true): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x,size_y,size_z); + _cimg_constructor_cpp11(repeat_values); + } + + template + CImg(const unsigned int size_x, const unsigned int size_y, + std::initializer_list values, + const bool repeat_values=true): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x,size_y); + _cimg_constructor_cpp11(repeat_values); + } + + template + CImg(const unsigned int size_x, + std::initializer_list values, + const bool repeat_values=true):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x); + _cimg_constructor_cpp11(repeat_values); + } + + //! Construct single channel 1D image with pixel values and width obtained from an initializer list of integers. + /** + Construct a new image instance of size \c width x \c 1 x \c 1 x \c 1, + with pixels of type \c T, and initialize pixel + values from the specified initializer list of integers { \c value0,\c value1,\c ... }. Image width is + given by the size of the initializer list. + \param { value0, value1, ... } Initialization list + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int) with height=1, depth=1, and spectrum=1, + but it also fills the pixel buffer with a sequence of specified integer values. + \par Example + \code + const CImg img = {10,20,30,20,10 }; // Construct a 5x1 image with one channel, and set its pixel values + img.resize(150,150).display(); + \endcode + \image html ref_constructor1.jpg + **/ + template + CImg(const std::initializer_list values): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(values.size(),1,1,1); + auto it = values.begin(); + unsigned int siz = _width; + for (T *ptrd = _data; siz--; ) *(ptrd++) = (T)(*(it++)); + } + + template + CImg& operator=(std::initializer_list values) { + _cimg_constructor_cpp11(siz>values.size()); + return *this; + } +#endif + + //! Construct image with specified size and initialize pixel values from a sequence of doubles. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, with pixels of type \c T, + and initialize pixel values from the specified sequence of doubles \c value0,\c value1,\c ... + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param value0 First value of the initialization sequence (must be a \e double). + \param value1 Second value of the initialization sequence (must be a \e double). + \param ... + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int,int,int,...), but + takes a sequence of double values instead of integers. + \warning + - You must specify \e exactly \c dx*\c dy*\c dz*\c dc doubles in the initialization sequence. + Otherwise, the constructor may crash or fill your image with garbage. + For instance, the code below will probably crash on most platforms: + \code + const CImg img(2,2,1,1, 0.5,0.5,255,255); // FAIL: The two last arguments are 'int', not 'double'! + \endcode + **/ + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const double value0, const double value1, ...): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),double); + } + + //! Construct image with specified size and initialize pixel values from a value string. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, with pixels of type \c T, + and initializes pixel values from the specified string \c values. + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param values Value string describing the way pixel values are set. + \param repeat_values Tells if the value filling process is repeated over the image. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it also fills + the pixel buffer with values described in the value string \c values. + - Value string \c values may describe two different filling processes: + - Either \c values is a sequences of values assigned to the image pixels, as in "1,2,3,7,8,2". + In this case, set \c repeat_values to \c true to periodically fill the image with the value sequence. + - Either, \c values is a formula, as in "cos(x/10)*sin(y/20)". + In this case, parameter \c repeat_values is pointless. + - For both cases, specifying \c repeat_values is mandatory. + It disambiguates the possible overloading of constructor + CImg(unsigned int,unsigned int,unsigned int,unsigned int,T) with \c T being a const char*. + - A \c CImgArgumentException is thrown when an invalid value string \c values is specified. + \par Example + \code + const CImg img1(129,129,1,3,"0,64,128,192,255",true), // Construct image from a value sequence + img2(129,129,1,3,"if(c==0,255*abs(cos(x/10)),1.8*y)",false); // Construct image from a formula + (img1,img2).display(); + \endcode + \image html ref_constructor2.jpg + **/ + CImg(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z, const unsigned int size_c, + const char *const values, const bool repeat_values):_is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + fill(values,repeat_values); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values from a memory buffer. + /** + Construct a new image instance of size \c size_x x \c size_y x \c size_z x \c size_c, with pixels of type \c T, + and initializes pixel values from the specified \c t* memory buffer. + \param values Pointer to the input memory buffer. + \param size_x Image width(). + \param size_y Image height(). + \param size_z Image depth(). + \param size_c Image spectrum() (number of channels). + \param is_shared Tells if input memory buffer must be shared by the current instance. + \note + - If \c is_shared is \c false, the image instance allocates its own pixel buffer, + and values from the specified input buffer are copied to the instance buffer. + If buffer types \c T and \c t are different, a regular static cast is performed during buffer copy. + - Otherwise, the image instance does \e not allocate a new buffer, and uses the input memory buffer as its + own pixel buffer. This case requires that types \c T and \c t are the same. Later, destroying such a shared + image will not deallocate the pixel buffer, this task being obviously charged to the initial buffer allocator. + - A \c CImgInstanceException is thrown when the pixel buffer cannot be allocated + (e.g. when requested size is too big for available memory). + \warning + - You must take care when operating on a shared image, since it may have an invalid pixel buffer pointer data() + (e.g. already deallocated). + \par Example + \code + unsigned char tab[256*256] = { 0 }; + CImg img1(tab,256,256,1,1,false), // Construct new non-shared image from buffer 'tab' + img2(tab,256,256,1,1,true); // Construct new shared-image from buffer 'tab' + tab[1024] = 255; // Here, 'img2' is indirectly modified, but not 'img1' + \endcode + **/ + template + CImg(const t *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, const bool is_shared=false):_is_shared(false) { + if (is_shared) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgArgumentException(_cimg_instance + "CImg(): Invalid construction request of a (%u,%u,%u,%u) shared instance " + "from a (%s*) buffer (pixel types are different).", + cimg_instance, + size_x,size_y,size_z,size_c,CImg::pixel_type()); + } + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (values && siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + + } + const t *ptrs = values; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \specialization. + CImg(const T *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, const bool is_shared=false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (values && siz) { + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; _is_shared = is_shared; + if (_is_shared) _data = const_cast(values); + else { + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + std::memcpy(_data,values,siz*sizeof(T)); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Construct image from memory buffer with specified size and pixel ordering scheme. + template + CImg(const t *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const char *const axes_order):_data(0),_is_shared(false) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (values && siz) { + unsigned char s_code[4] = { 0,1,2,3 }, n_code[4] = { 0 }; + for (unsigned int l = 0; axes_order[l]; ++l) { + int c = cimg::lowercase(axes_order[l]); + if (l>=4 || (c!='x' && c!='y' && c!='z' && c!='c')) { *s_code = 4; break; } + else { ++n_code[c%=4]; s_code[l] = c; } + } + if (*axes_order && *s_code<4 && *n_code<=1 && n_code[1]<=1 && n_code[2]<=1 && n_code[3]<=1) { + const unsigned int code = (s_code[0]<<12) | (s_code[1]<<8) | (s_code[2]<<4) | (s_code[3]); + int s0 = 0, s1 = 0, s2 = 0, s3 = 0; + const char *inv_order = 0; + switch (code) { + case 0x0123 : inv_order = "xyzc"; s0 = size_x; s1 = size_y; s2 = size_z; s3 = size_c; break; // xyzc + case 0x0132 : inv_order = "xyzc"; s0 = size_x; s1 = size_y; s2 = size_c; s3 = size_z; break; // xycz + case 0x0213 : inv_order = "xzyc"; s0 = size_x; s1 = size_z; s2 = size_y; s3 = size_c; break; // xzyc + case 0x0231 : inv_order = "xcyz"; s0 = size_x; s1 = size_z; s2 = size_c; s3 = size_y; break; // xzcy + case 0x0312 : inv_order = "xzcy"; s0 = size_x; s1 = size_c; s2 = size_y; s3 = size_z; break; // xcyz + case 0x0321 : inv_order = "xczy"; s0 = size_x; s1 = size_c; s2 = size_z; s3 = size_y; break; // xczy + case 0x1023 : inv_order = "yxzc"; s0 = size_y; s1 = size_x; s2 = size_z; s3 = size_c; break; // yxzc + case 0x1032 : inv_order = "yxcz"; s0 = size_y; s1 = size_x; s2 = size_c; s3 = size_z; break; // yxcz + case 0x1203 : inv_order = "zxyc"; s0 = size_y; s1 = size_z; s2 = size_x; s3 = size_c; break; // yzxc + case 0x1230 : inv_order = "cxyz"; s0 = size_y; s1 = size_z; s2 = size_c; s3 = size_x; break; // yzcx + case 0x1302 : inv_order = "zxcy"; s0 = size_y; s1 = size_c; s2 = size_x; s3 = size_z; break; // ycxz + case 0x1320 : inv_order = "cxzy"; s0 = size_y; s1 = size_c; s2 = size_z; s3 = size_x; break; // yczx + case 0x2013 : inv_order = "yzxc"; s0 = size_z; s1 = size_x; s2 = size_y; s3 = size_c; break; // zxyc + case 0x2031 : inv_order = "ycxz"; s0 = size_z; s1 = size_x; s2 = size_c; s3 = size_y; break; // zxcy + case 0x2103 : inv_order = "zyxc"; s0 = size_z; s1 = size_y; s2 = size_x; s3 = size_c; break; // zyxc + case 0x2130 : inv_order = "cyxz"; s0 = size_z; s1 = size_y; s2 = size_c; s3 = size_x; break; // zycx + case 0x2301 : inv_order = "zcxy"; s0 = size_z; s1 = size_c; s2 = size_x; s3 = size_y; break; // zcxy + case 0x2310 : inv_order = "czxy"; s0 = size_z; s1 = size_c; s2 = size_y; s3 = size_x; break; // zcyx + case 0x3012 : inv_order = "yzcx"; s0 = size_c; s1 = size_x; s2 = size_y; s3 = size_z; break; // cxyz + case 0x3021 : inv_order = "yczx"; s0 = size_c; s1 = size_x; s2 = size_z; s3 = size_y; break; // cxzy + case 0x3102 : inv_order = "zycx"; s0 = size_c; s1 = size_y; s2 = size_x; s3 = size_z; break; // cyxz + case 0x3120 : inv_order = "cyzx"; s0 = size_c; s1 = size_y; s2 = size_z; s3 = size_x; break; // cyzx + case 0x3201 : inv_order = "zcyx"; s0 = size_c; s1 = size_z; s2 = size_x; s3 = size_y; break; // czxy + case 0x3210 : inv_order = "czyx"; s0 = size_c; s1 = size_z; s2 = size_y; s3 = size_x; break; // czyx + } + CImg(values,s0,s1,s2,s3,true).get_permute_axes(inv_order).move_to(*this); + } else { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgArgumentException(_cimg_instance + "CImg(): Invalid specified axes order '%s'.", + cimg_instance, + axes_order); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Construct image from reading an image file. + /** + Construct a new image instance with pixels of type \c T, and initialize pixel values with the data read from + an image file. + \param filename Filename, as a C-string. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it reads the image + dimensions and pixel values from the specified image file. + - The recognition of the image file format by %CImg higlhy depends on the tools installed on your system + and on the external libraries you used to link your code against. + - Considered pixel type \c T should better fit the file format specification, or data loss may occur during + file load (e.g. constructing a \c CImg from a float-valued image file). + - A \c CImgIOException is thrown when the specified \c filename cannot be read, or if the file format is not + recognized. + \par Example + \code + const CImg img("reference.jpg"); + img.display(); + \endcode + \image html ref_image.jpg + **/ + explicit CImg(const char *const filename):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(filename); + } + + //! Construct image copy. + /** + Construct a new image instance with pixels of type \c T, as a copy of an existing \c CImg instance. + \param img Input image to copy. + \note + - Constructed copy has the same size width() x height() x depth() x spectrum() and pixel values as the + input image \c img. + - If input image \c img is \e shared and if types \c T and \c t are the same, the constructed copy is also + \e shared, and shares its pixel buffer with \c img. + Modifying a pixel value in the constructed copy will thus also modifies it in the input image \c img. + This behavior is needful to allow functions to return shared images. + - Otherwise, the constructed copy allocates its own pixel buffer, and copies pixel values from the input + image \c img into its buffer. The copied pixel values may be eventually statically casted if types \c T and + \c t are different. + - Constructing a copy from an image \c img when types \c t and \c T are the same is significantly faster than + with different types. + - A \c CImgInstanceException is thrown when the pixel buffer cannot be allocated + (e.g. not enough available memory). + **/ + template + CImg(const CImg& img):_is_shared(false) { + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + } + const t *ptrs = img._data; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Construct image copy \specialization. + CImg(const CImg& img) { + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + _is_shared = img._is_shared; + if (_is_shared) _data = const_cast(img._data); + else { + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + + } + std::memcpy(_data,img._data,siz*sizeof(T)); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Advanced copy constructor. + /** + Construct a new image instance with pixels of type \c T, as a copy of an existing \c CImg instance, + while forcing the shared state of the constructed copy. + \param img Input image to copy. + \param is_shared Tells about the shared state of the constructed copy. + \note + - Similar to CImg(const CImg&), except that it allows to decide the shared state of + the constructed image, which does not depend anymore on the shared state of the input image \c img: + - If \c is_shared is \c true, the constructed copy will share its pixel buffer with the input image \c img. + For that case, the pixel types \c T and \c t \e must be the same. + - If \c is_shared is \c false, the constructed copy will allocate its own pixel buffer, whether the input + image \c img is shared or not. + - A \c CImgArgumentException is thrown when a shared copy is requested with different pixel types \c T and \c t. + **/ + template + CImg(const CImg& img, const bool is_shared):_is_shared(false) { + if (is_shared) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgArgumentException(_cimg_instance + "CImg(): Invalid construction request of a shared instance from a " + "CImg<%s> image (%u,%u,%u,%u,%p) (pixel types are different).", + cimg_instance, + CImg::pixel_type(),img._width,img._height,img._depth,img._spectrum,img._data); + } + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + } + const t *ptrs = img._data; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + } else { _width = _height = _depth = _spectrum = 0; _data = 0; } + } + + //! Advanced copy constructor \specialization. + CImg(const CImg& img, const bool is_shared) { + const size_t siz = (size_t)img.size(); + if (img._data && siz) { + _width = img._width; _height = img._height; _depth = img._depth; _spectrum = img._spectrum; + _is_shared = is_shared; + if (_is_shared) _data = const_cast(img._data); + else { + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "CImg(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*img._width*img._height*img._depth*img._spectrum), + img._width,img._height,img._depth,img._spectrum); + } + std::memcpy(_data,img._data,siz*sizeof(T)); + } + } else { _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; } + } + + //! Construct image with dimensions borrowed from another image. + /** + Construct a new image instance with pixels of type \c T, and size get from some dimensions of an existing + \c CImg instance. + \param img Input image from which dimensions are borrowed. + \param dimensions C-string describing the image size along the X,Y,Z and C-dimensions. + \note + - Similar to CImg(unsigned int,unsigned int,unsigned int,unsigned int), but it takes the image dimensions + (\e not its pixel values) from an existing \c CImg instance. + - The allocated pixel buffer is \e not filled with a default value, and is likely to contain garbage values. + In order to initialize pixel values (e.g. with \c 0), use constructor CImg(const CImg&,const char*,T) + instead. + \par Example + \code + const CImg img1(256,128,1,3), // 'img1' is a 256x128x1x3 image + img2(img1,"xyzc"), // 'img2' is a 256x128x1x3 image + img3(img1,"y,x,z,c"), // 'img3' is a 128x256x1x3 image + img4(img1,"c,x,y,3",0), // 'img4' is a 3x128x256x3 image (with pixels initialized to '0') + \endcode + **/ + template + CImg(const CImg& img, const char *const dimensions): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(img,dimensions); + } + + //! Construct image with dimensions borrowed from another image and initialize pixel values. + /** + Construct a new image instance with pixels of type \c T, and size get from the dimensions of an existing + \c CImg instance, and set all pixel values to specified \c value. + \param img Input image from which dimensions are borrowed. + \param dimensions String describing the image size along the X,Y,Z and V-dimensions. + \param value Value used for initialization. + \note + - Similar to CImg(const CImg&,const char*), but it also fills the pixel buffer with the specified \c value. + **/ + template + CImg(const CImg& img, const char *const dimensions, const T& value): + _width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + assign(img,dimensions).fill(value); + } + + //! Construct image from a display window. + /** + Construct a new image instance with pixels of type \c T, as a snapshot of an existing \c CImgDisplay instance. + \param disp Input display window. + \note + - The width() and height() of the constructed image instance are the same as the specified \c CImgDisplay. + - The depth() and spectrum() of the constructed image instance are respectively set to \c 1 and \c 3 + (i.e. a 2D color image). + - The image pixels are read as 8-bits RGB values. + **/ + explicit CImg(const CImgDisplay &disp):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + disp.snapshot(*this); + } + + // Constructor and assignment operator for rvalue references (c++11). + // This avoids an additional image copy for methods returning new images. Can save RAM for big images ! +#if cimg_use_cpp11==1 + CImg(CImg&& img):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { + swap(img); + } + + CImg& operator=(CImg&& img) { + if (_is_shared) return assign(img); + return img.swap(*this); + } +#endif + + //! Construct empty image \inplace. + /** + In-place version of the default constructor CImg(). It simply resets the instance to an empty image. + **/ + CImg& assign() { + if (!_is_shared) delete[] _data; + _width = _height = _depth = _spectrum = 0; _is_shared = false; _data = 0; + return *this; + } + + //! Construct image with specified size \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!siz) return assign(); + const size_t curr_siz = (size_t)size(); + if (siz!=curr_siz) { + if (_is_shared) + throw CImgArgumentException(_cimg_instance + "assign(): Invalid assignment request of shared instance from specified " + "image (%u,%u,%u,%u).", + cimg_instance, + size_x,size_y,size_z,size_c); + else { + delete[] _data; + try { _data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "assign(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + } + } + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + return *this; + } + + //! Construct image with specified size and initialize pixel values \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,T). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const T& value) { + return assign(size_x,size_y,size_z,size_c).fill(value); + } + + //! Construct image with specified size and initialize pixel values from a sequence of integers \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,int,int,...). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const int value0, const int value1, ...) { + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),int); + return *this; + } + + //! Construct image with specified size and initialize pixel values from a sequence of doubles \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,double,double,...). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const double value0, const double value1, ...) { + assign(size_x,size_y,size_z,size_c); + _CImg_stdarg(*this,value0,value1,safe_size(size_x,size_y,size_z,size_c),double); + return *this; + } + + //! Construct image with specified size and initialize pixel values from a value string \inplace. + /** + In-place version of the constructor CImg(unsigned int,unsigned int,unsigned int,unsigned int,const char*,bool). + **/ + CImg& assign(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const char *const values, const bool repeat_values) { + return assign(size_x,size_y,size_z,size_c).fill(values,repeat_values); + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \inplace. + /** + In-place version of the constructor CImg(const t*,unsigned int,unsigned int,unsigned int,unsigned int). + **/ + template + CImg& assign(const t *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!values || !siz) return assign(); + assign(size_x,size_y,size_z,size_c); + const t *ptrs = values; cimg_for(*this,ptrd,T) *ptrd = (T)*(ptrs++); + return *this; + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \specialization. + CImg& assign(const T *const values, const unsigned int size_x, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!values || !siz) return assign(); + const size_t curr_siz = (size_t)size(); + if (values==_data && siz==curr_siz) return assign(size_x,size_y,size_z,size_c); + if (_is_shared || values + siz<_data || values>=_data + size()) { + assign(size_x,size_y,size_z,size_c); + if (_is_shared) std::memmove((void*)_data,(void*)values,siz*sizeof(T)); + else std::memcpy((void*)_data,(void*)values,siz*sizeof(T)); + } else { + T *new_data = 0; + try { new_data = new T[siz]; } catch (...) { + _width = _height = _depth = _spectrum = 0; _data = 0; + throw CImgInstanceException(_cimg_instance + "assign(): Failed to allocate memory (%s) for image (%u,%u,%u,%u).", + cimg_instance, + cimg::strbuffersize(sizeof(T)*size_x*size_y*size_z*size_c), + size_x,size_y,size_z,size_c); + } + std::memcpy((void*)new_data,(void*)values,siz*sizeof(T)); + delete[] _data; _data = new_data; _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; + } + return *this; + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \overloading. + template + CImg& assign(const t *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const bool is_shared) { + if (is_shared) + throw CImgArgumentException(_cimg_instance + "assign(): Invalid assignment request of shared instance from (%s*) buffer" + "(pixel types are different).", + cimg_instance, + CImg::pixel_type()); + return assign(values,size_x,size_y,size_z,size_c); + } + + //! Construct image with specified size and initialize pixel values from a memory buffer \overloading. + CImg& assign(const T *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, const bool is_shared) { + const size_t siz = safe_size(size_x,size_y,size_z,size_c); + if (!values || !siz) return assign(); + if (!is_shared) { if (_is_shared) assign(); assign(values,size_x,size_y,size_z,size_c); } + else { + if (!_is_shared) { + if (values + siz<_data || values>=_data + size()) assign(); + else cimg::warn(_cimg_instance + "assign(): Shared image instance has overlapping memory.", + cimg_instance); + } + _width = size_x; _height = size_y; _depth = size_z; _spectrum = size_c; _is_shared = true; + _data = const_cast(values); + } + return *this; + } + + //! Construct image from memory buffer with specified size and pixel ordering scheme. + template + CImg& assign(const t *const values, const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const char *const axes_order) { + CImg(values,size_x,size_y,size_z,size_c,axes_order).move_to(*this); + } + + //! Construct image from reading an image file \inplace. + /** + In-place version of the constructor CImg(const char*). + **/ + CImg& assign(const char *const filename) { + return load(filename); + } + + //! Construct image copy \inplace. + /** + In-place version of the constructor CImg(const CImg&). + **/ + template + CImg& assign(const CImg& img) { + return assign(img._data,img._width,img._height,img._depth,img._spectrum); + } + + //! In-place version of the advanced copy constructor. + /** + In-place version of the constructor CImg(const CImg&,bool). + **/ + template + CImg& assign(const CImg& img, const bool is_shared) { + return assign(img._data,img._width,img._height,img._depth,img._spectrum,is_shared); + } + + //! Construct image with dimensions borrowed from another image \inplace. + /** + In-place version of the constructor CImg(const CImg&,const char*). + **/ + template + CImg& assign(const CImg& img, const char *const dimensions) { + if (!dimensions || !*dimensions) return assign(img._width,img._height,img._depth,img._spectrum); + unsigned int siz[4] = { 0,1,1,1 }, k = 0; + CImg item(256); + for (const char *s = dimensions; *s && k<4; ++k) { + if (cimg_sscanf(s,"%255[^0-9%xyzvwhdcXYZVWHDC]",item._data)>0) s+=std::strlen(item); + if (*s) { + unsigned int val = 0; char sep = 0; + if (cimg_sscanf(s,"%u%c",&val,&sep)>0) { + if (sep=='%') siz[k] = val*(k==0?_width:k==1?_height:k==2?_depth:_spectrum)/100; + else siz[k] = val; + while (*s>='0' && *s<='9') ++s; + if (sep=='%') ++s; + } else switch (cimg::lowercase(*s)) { + case 'x' : case 'w' : siz[k] = img._width; ++s; break; + case 'y' : case 'h' : siz[k] = img._height; ++s; break; + case 'z' : case 'd' : siz[k] = img._depth; ++s; break; + case 'c' : case 's' : siz[k] = img._spectrum; ++s; break; + default : + throw CImgArgumentException(_cimg_instance + "assign(): Invalid character '%c' detected in specified dimension string '%s'.", + cimg_instance, + *s,dimensions); + } + } + } + return assign(siz[0],siz[1],siz[2],siz[3]); + } + + //! Construct image with dimensions borrowed from another image and initialize pixel values \inplace. + /** + In-place version of the constructor CImg(const CImg&,const char*,T). + **/ + template + CImg& assign(const CImg& img, const char *const dimensions, const T& value) { + return assign(img,dimensions).fill(value); + } + + //! Construct image from a display window \inplace. + /** + In-place version of the constructor CImg(const CImgDisplay&). + **/ + CImg& assign(const CImgDisplay &disp) { + disp.snapshot(*this); + return *this; + } + + //! Construct empty image \inplace. + /** + Equivalent to assign(). + \note + - It has been defined for compatibility with STL naming conventions. + **/ + CImg& clear() { + return assign(); + } + + //! Transfer content of an image instance into another one. + /** + Transfer the dimensions and the pixel buffer content of an image instance into another one, + and replace instance by an empty image. It avoids the copy of the pixel buffer + when possible. + \param img Destination image. + \note + - Pixel types \c T and \c t of source and destination images can be different, though the process is + designed to be instantaneous when \c T and \c t are the same. + \par Example + \code + CImg src(256,256,1,3,0), // Construct a 256x256x1x3 (color) image filled with value '0' + dest(16,16); // Construct a 16x16x1x1 (scalar) image + src.move_to(dest); // Now, 'src' is empty and 'dest' is the 256x256x1x3 image + \endcode + **/ + template + CImg& move_to(CImg& img) { + img.assign(*this); + assign(); + return img; + } + + //! Transfer content of an image instance into another one \specialization. + CImg& move_to(CImg& img) { + if (_is_shared || img._is_shared) img.assign(*this); + else swap(img); + assign(); + return img; + } + + //! Transfer content of an image instance into a new image in an image list. + /** + Transfer the dimensions and the pixel buffer content of an image instance + into a newly inserted image at position \c pos in specified \c CImgList instance. + \param list Destination list. + \param pos Position of the newly inserted image in the list. + \note + - When optional parameter \c pos is omitted, the image instance is transferred as a new + image at the end of the specified \c list. + - It is convenient to sequentially insert new images into image lists, with no + additional copies of memory buffer. + \par Example + \code + CImgList list; // Construct an empty image list + CImg img("reference.jpg"); // Read image from filename + img.move_to(list); // Transfer image content as a new item in the list (no buffer copy) + \endcode + **/ + template + CImgList& move_to(CImgList& list, const unsigned int pos=~0U) { + const unsigned int npos = pos>list._width?list._width:pos; + move_to(list.insert(1,npos)[npos]); + return list; + } + + //! Swap fields of two image instances. + /** + \param img Image to swap fields with. + \note + - It can be used to interchange the content of two images in a very fast way. Can be convenient when dealing + with algorithms requiring two swapping buffers. + \par Example + \code + CImg img1("lena.jpg"), + img2("milla.jpg"); + img1.swap(img2); // Now, 'img1' is 'milla' and 'img2' is 'lena' + \endcode + **/ + CImg& swap(CImg& img) { + cimg::swap(_width,img._width,_height,img._height,_depth,img._depth,_spectrum,img._spectrum); + cimg::swap(_data,img._data); + cimg::swap(_is_shared,img._is_shared); + return img; + } + + //! Return a reference to an empty image. + /** + \note + This function is useful mainly to declare optional parameters having type \c CImg in functions prototypes, + e.g. + \code + void f(const int x=0, const int y=0, const CImg& img=CImg::empty()); + \endcode + **/ + static CImg& empty() { + static CImg _empty; + return _empty.assign(); + } + + //! Return a reference to an empty image \const. + static const CImg& const_empty() { + static const CImg _empty; + return _empty; + } + + //@} + //------------------------------------------ + // + //! \name Overloaded Operators + //@{ + //------------------------------------------ + + //! Access to a pixel value. + /** + Return a reference to a located pixel value of the image instance, + being possibly \e const, whether the image instance is \e const or not. + This is the standard method to get/set pixel values in \c CImg images. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Range of pixel coordinates start from (0,0,0,0) to + (width() - 1,height() - 1,depth() - 1,spectrum() - 1). + - Due to the particular arrangement of the pixel buffers defined in %CImg, you can omit one coordinate if the + corresponding dimension is equal to \c 1. + For instance, pixels of a 2D image (depth() equal to \c 1) can be accessed by img(x,y,c) instead of + img(x,y,0,c). + \warning + - There is \e no boundary checking done in this operator, to make it as fast as possible. + You \e must take care of out-of-bounds access by yourself, if necessary. + For debugging purposes, you may want to define macro \c 'cimg_verbosity'>=3 to enable additional boundary + checking operations in this operator. In that case, warning messages will be printed on the error output + when accessing out-of-bounds pixels. + \par Example + \code + CImg img(100,100,1,3,0); // Construct a 100x100x1x3 (color) image with pixels set to '0' + const float + valR = img(10,10,0,0), // Read red value at coordinates (10,10) + valG = img(10,10,0,1), // Read green value at coordinates (10,10) + valB = img(10,10,2), // Read blue value at coordinates (10,10) (Z-coordinate can be omitted) + avg = (valR + valG + valB)/3; // Compute average pixel value + img(10,10,0) = img(10,10,1) = img(10,10,2) = avg; // Replace the color pixel (10,10) by the average grey value + \endcode + **/ +#if cimg_verbosity>=3 + T& operator()(const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) { + const ulongT off = (ulongT)offset(x,y,z,c); + if (!_data || off>=size()) { + cimg::warn(_cimg_instance + "operator(): Invalid pixel request, at coordinates (%d,%d,%d,%d) [offset=%u].", + cimg_instance, + (int)x,(int)y,(int)z,(int)c,off); + return *_data; + } + else return _data[off]; + } + + //! Access to a pixel value \const. + const T& operator()(const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) const { + return const_cast*>(this)->operator()(x,y,z,c); + } + + //! Access to a pixel value. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param wh Precomputed offset, must be equal to width()*\ref height(). + \param whd Precomputed offset, must be equal to width()*\ref height()*\ref depth(). + \note + - Similar to (but faster than) operator()(). + It uses precomputed offsets to optimize memory access. You may use it to optimize + the reading/writing of several pixel values in the same image (e.g. in a loop). + **/ + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd=0) { + cimg::unused(wh,whd); + return (*this)(x,y,z,c); + } + + //! Access to a pixel value \const. + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd=0) const { + cimg::unused(wh,whd); + return (*this)(x,y,z,c); + } +#else + T& operator()(const unsigned int x) { + return _data[x]; + } + + const T& operator()(const unsigned int x) const { + return _data[x]; + } + + T& operator()(const unsigned int x, const unsigned int y) { + return _data[x + y*_width]; + } + + const T& operator()(const unsigned int x, const unsigned int y) const { + return _data[x + y*_width]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z) { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z) const { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c) { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height + c*(ulongT)_width*_height*_depth]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c) const { + return _data[x + y*(ulongT)_width + z*(ulongT)_width*_height + c*(ulongT)_width*_height*_depth]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int, + const ulongT wh) { + return _data[x + y*_width + z*wh]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int, + const ulongT wh) const { + return _data[x + y*_width + z*wh]; + } + + T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd) { + return _data[x + y*_width + z*wh + c*whd]; + } + + const T& operator()(const unsigned int x, const unsigned int y, const unsigned int z, const unsigned int c, + const ulongT wh, const ulongT whd) const { + return _data[x + y*_width + z*wh + c*whd]; + } +#endif + + //! Implicitly cast an image into a \c T*. + /** + Implicitly cast a \c CImg instance into a \c T* or \c const \c T* pointer, whether the image instance + is \e const or not. The returned pointer points on the first value of the image pixel buffer. + \note + - It simply returns the pointer data() to the pixel buffer. + - This implicit conversion is convenient to test the empty state of images (data() being \c 0 in this case), e.g. + \code + CImg img1(100,100), img2; // 'img1' is a 100x100 image, 'img2' is an empty image + if (img1) { // Test succeeds, 'img1' is not an empty image + if (!img2) { // Test succeeds, 'img2' is an empty image + std::printf("'img1' is not empty, 'img2' is empty."); + } + } + \endcode + - It also allows to use brackets to access pixel values, without need for a \c CImg::operator[](), e.g. + \code + CImg img(100,100); + const float value = img[99]; // Access to value of the last pixel on the first row + img[510] = 255; // Set pixel value at (10,5) + \endcode + **/ + operator T*() { + return _data; + } + + //! Implicitly cast an image into a \c T* \const. + operator const T*() const { + return _data; + } + + //! Assign a value to all image pixels. + /** + Assign specified \c value to each pixel value of the image instance. + \param value Value that will be assigned to image pixels. + \note + - The image size is never modified. + - The \c value may be casted to pixel type \c T if necessary. + \par Example + \code + CImg img(100,100); // Declare image (with garbage values) + img = 0; // Set all pixel values to '0' + img = 1.2; // Set all pixel values to '1' (cast of '1.2' as a 'char') + \endcode + **/ + CImg& operator=(const T& value) { + return fill(value); + } + + //! Assign pixels values from a specified expression. + /** + Initialize all pixel values from the specified string \c expression. + \param expression Value string describing the way pixel values are set. + \note + - String parameter \c expression may describe different things: + - If \c expression is a list of values (as in \c "1,2,3,8,3,2"), or a formula (as in \c "(x*y)%255"), + the pixel values are set from specified \c expression and the image size is not modified. + - If \c expression is a filename (as in \c "reference.jpg"), the corresponding image file is loaded and + replace the image instance. The image size is modified if necessary. + \par Example + \code + CImg img1(100,100), img2(img1), img3(img1); // Declare 3 scalar images 100x100 with uninitialized values + img1 = "0,50,100,150,200,250,200,150,100,50"; // Set pixel values of 'img1' from a value sequence + img2 = "10*((x*y)%25)"; // Set pixel values of 'img2' from a formula + img3 = "reference.jpg"; // Set pixel values of 'img3' from a file (image size is modified) + (img1,img2,img3).display(); + \endcode + \image html ref_operator_eq.jpg + **/ + CImg& operator=(const char *const expression) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { + _fill(expression,true,1,0,0,"operator=",0); + } catch (CImgException&) { + cimg::exception_mode(omode); + load(expression); + } + cimg::exception_mode(omode); + return *this; + } + + //! Copy an image into the current image instance. + /** + Similar to the in-place copy constructor assign(const CImg&). + **/ + template + CImg& operator=(const CImg& img) { + return assign(img); + } + + //! Copy an image into the current image instance \specialization. + CImg& operator=(const CImg& img) { + return assign(img); + } + + //! Copy the content of a display window to the current image instance. + /** + Similar to assign(const CImgDisplay&). + **/ + CImg& operator=(const CImgDisplay& disp) { + disp.snapshot(*this); + return *this; + } + + //! In-place addition operator. + /** + Add specified \c value to all pixels of an image instance. + \param value Value to add. + \note + - Resulting pixel values are casted to fit the pixel type \c T. + For instance, adding \c 0.2 to a \c CImg is possible but does nothing indeed. + - Overflow values are treated as with standard C++ numeric types. For instance, + \code + CImg img(100,100,1,1,255); // Construct a 100x100 image with pixel values '255' + img+=1; // Add '1' to each pixels -> Overflow + // here all pixels of image 'img' are equal to '0'. + \endcode + - To prevent value overflow, you may want to consider pixel type \c T as \c float or \c double, + and use cut() after addition. + \par Example + \code + CImg img1("reference.jpg"); // Load a 8-bits RGB image (values in [0,255]) + CImg img2(img1); // Construct a float-valued copy of 'img1' + img2+=100; // Add '100' to pixel values -> goes out of [0,255] but no problems with floats + img2.cut(0,255); // Cut values in [0,255] to fit the 'unsigned char' constraint + img1 = img2; // Rewrite safe result in 'unsigned char' version 'img1' + const CImg img3 = (img1 + 100).cut(0,255); // Do the same in a more simple and elegant way + (img1,img2,img3).display(); + \endcode + \image html ref_operator_plus.jpg + **/ + template + CImg& operator+=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr + value,524288); + return *this; + } + + //! In-place addition operator. + /** + Add values to image pixels, according to the specified string \c expression. + \param expression Value string describing the way pixel values are added. + \note + - Similar to operator=(const char*), except that it adds values to the pixels of the current image instance, + instead of assigning them. + **/ + CImg& operator+=(const char *const expression) { + return *this+=(+*this)._fill(expression,true,1,0,0,"operator+=",this); + } + + //! In-place addition operator. + /** + Add values to image pixels, according to the values of the input image \c img. + \param img Input image to add. + \note + - The size of the image instance is never modified. + - It is not mandatory that input image \c img has the same size as the image instance. + If less values are available in \c img, then the values are added periodically. For instance, adding one + WxH scalar image (spectrum() equal to \c 1) to one WxH color image (spectrum() equal to \c 3) + means each color channel will be incremented with the same values at the same locations. + \par Example + \code + CImg img1("reference.jpg"); // Load a RGB color image (img1.spectrum()==3) + // Construct a scalar shading (img2.spectrum()==1). + const CImg img2(img1.width(),img.height(),1,1,"255*(x/w)^2"); + img1+=img2; // Add shading to each channel of 'img1' + img1.cut(0,255); // Prevent [0,255] overflow + (img2,img1).display(); + \endcode + \image html ref_operator_plus1.jpg + **/ + template + CImg& operator+=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this+=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs& operator++() { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr + 1,524288); + return *this; + } + + //! In-place increment operator (postfix). + /** + Add \c 1 to all image pixels, and return a new copy of the initial (pre-incremented) image instance. + \note + - Use the prefixed version operator++() if you don't need a copy of the initial + (pre-incremented) image instance, since a useless image copy may be expensive in terms of memory usage. + **/ + CImg operator++(int) { + const CImg copy(*this,false); + ++*this; + return copy; + } + + //! Return a non-shared copy of the image instance. + /** + \note + - Use this operator to ensure you get a non-shared copy of an image instance with same pixel type \c T. + Indeed, the usual copy constructor CImg(const CImg&) returns a shared copy of a shared input image, + and it may be not desirable to work on a regular copy (e.g. for a resize operation) if you have no + information about the shared state of the input image. + - Writing \c (+img) is equivalent to \c CImg(img,false). + **/ + CImg operator+() const { + return CImg(*this,false); + } + + //! Addition operator. + /** + Similar to operator+=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator+(const t value) const { + return CImg<_cimg_Tt>(*this,false)+=value; + } + + //! Addition operator. + /** + Similar to operator+=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator+(const char *const expression) const { + return CImg(*this,false)+=expression; + } + + //! Addition operator. + /** + Similar to operator+=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator+(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false)+=img; + } + + //! In-place subtraction operator. + /** + Similar to operator+=(const t), except that it performs a subtraction instead of an addition. + **/ + template + CImg& operator-=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr - value,524288); + return *this; + } + + //! In-place subtraction operator. + /** + Similar to operator+=(const char*), except that it performs a subtraction instead of an addition. + **/ + CImg& operator-=(const char *const expression) { + return *this-=(+*this)._fill(expression,true,1,0,0,"operator-=",this); + } + + //! In-place subtraction operator. + /** + Similar to operator+=(const CImg&), except that it performs a subtraction instead of an addition. + **/ + template + CImg& operator-=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this-=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs& operator--() { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr - 1,524288); + return *this; + } + + //! In-place decrement operator (postfix). + /** + Similar to operator++(int), except that it performs a decrement instead of an increment. + **/ + CImg operator--(int) { + const CImg copy(*this,false); + --*this; + return copy; + } + + //! Replace each pixel by its opposite value. + /** + \note + - If the computed opposite values are out-of-range, they are treated as with standard C++ numeric types. + For instance, the \c unsigned \c char opposite of \c 1 is \c 255. + \par Example + \code + const CImg + img1("reference.jpg"), // Load a RGB color image + img2 = -img1; // Compute its opposite (in 'unsigned char') + (img1,img2).display(); + \endcode + \image html ref_operator_minus.jpg + **/ + CImg operator-() const { + return CImg(_width,_height,_depth,_spectrum,(T)0)-=*this; + } + + //! Subtraction operator. + /** + Similar to operator-=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator-(const t value) const { + return CImg<_cimg_Tt>(*this,false)-=value; + } + + //! Subtraction operator. + /** + Similar to operator-=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator-(const char *const expression) const { + return CImg(*this,false)-=expression; + } + + //! Subtraction operator. + /** + Similar to operator-=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator-(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false)-=img; + } + + //! In-place multiplication operator. + /** + Similar to operator+=(const t), except that it performs a multiplication instead of an addition. + **/ + template + CImg& operator*=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr * value,262144); + return *this; + } + + //! In-place multiplication operator. + /** + Similar to operator+=(const char*), except that it performs a multiplication instead of an addition. + **/ + CImg& operator*=(const char *const expression) { + return mul((+*this)._fill(expression,true,1,0,0,"operator*=",this)); + } + + //! In-place multiplication operator. + /** + Replace the image instance by the matrix multiplication between the image instance and the specified matrix + \c img. + \param img Second operand of the matrix multiplication. + \note + - It does \e not compute a pointwise multiplication between two images. For this purpose, use + mul(const CImg&) instead. + - The size of the image instance can be modified by this operator. + \par Example + \code + CImg A(2,2,1,1, 1,2,3,4); // Construct 2x2 matrix A = [1,2;3,4] + const CImg X(1,2,1,1, 1,2); // Construct 1x2 vector X = [1;2] + A*=X; // Assign matrix multiplication A*X to 'A' + // 'A' is now a 1x2 vector whose values are [5;11]. + \endcode + **/ + template + CImg& operator*=(const CImg& img) { + return ((*this)*img).move_to(*this); + } + + //! Multiplication operator. + /** + Similar to operator*=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator*(const t value) const { + return CImg<_cimg_Tt>(*this,false)*=value; + } + + //! Multiplication operator. + /** + Similar to operator*=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator*(const char *const expression) const { + return CImg(*this,false)*=expression; + } + + //! Multiplication operator. + /** + Similar to operator*=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator*(const CImg& img) const { + typedef _cimg_Ttdouble Ttdouble; + typedef _cimg_Tt Tt; + if (_width!=img._height || _depth!=1 || _spectrum!=1) + throw CImgArgumentException(_cimg_instance + "operator*(): Invalid multiplication of instance by specified " + "matrix (%u,%u,%u,%u,%p).", + cimg_instance, + img._width,img._height,img._depth,img._spectrum,img._data); + CImg res(img._width,_height); + + // Check for common cases to optimize. + if (img._width==1) { // Matrix * Vector + if (_height==1) switch (_width) { // Vector^T * Vector + case 1 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0]); + return res; + case 2 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1]); + return res; + case 3 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2]); + return res; + case 4 : + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2] + (Ttdouble)_data[3]*img[3]); + return res; + default : { + Ttdouble val = 0; + cimg_pragma_openmp(parallel for reduction(+:val) cimg_openmp_if_size(size(),4096)) + cimg_forX(*this,i) val+=(Ttdouble)_data[i]*img[i]; + res[0] = val; + return res; + } + } else if (_height==_width) switch (_width) { // Square_matrix * Vector + case 2 : // 2x2_matrix * Vector + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1]); + res[1] = (Tt)((Ttdouble)_data[2]*img[0] + (Ttdouble)_data[3]*img[1]); + return res; + case 3 : // 3x3_matrix * Vector + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2]); + res[1] = (Tt)((Ttdouble)_data[3]*img[0] + (Ttdouble)_data[4]*img[1] + + (Ttdouble)_data[5]*img[2]); + res[2] = (Tt)((Ttdouble)_data[6]*img[0] + (Ttdouble)_data[7]*img[1] + + (Ttdouble)_data[8]*img[2]); + return res; + case 4 : // 4x4_matrix * Vector + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[1] + + (Ttdouble)_data[2]*img[2] + (Ttdouble)_data[3]*img[3]); + res[1] = (Tt)((Ttdouble)_data[4]*img[0] + (Ttdouble)_data[5]*img[1] + + (Ttdouble)_data[6]*img[2] + (Ttdouble)_data[7]*img[3]); + res[2] = (Tt)((Ttdouble)_data[8]*img[0] + (Ttdouble)_data[9]*img[1] + + (Ttdouble)_data[10]*img[2] + (Ttdouble)_data[11]*img[3]); + res[3] = (Tt)((Ttdouble)_data[12]*img[0] + (Ttdouble)_data[13]*img[1] + + (Ttdouble)_data[14]*img[2] + (Ttdouble)_data[15]*img[3]); + return res; + } + } else if (_height==_width) { + if (img._height==img._width) switch (_width) { // Square_matrix * Square_matrix + case 2 : // 2x2_matrix * 2x2_matrix + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[2]); + res[1] = (Tt)((Ttdouble)_data[0]*img[1] + (Ttdouble)_data[1]*img[3]); + res[2] = (Tt)((Ttdouble)_data[2]*img[0] + (Ttdouble)_data[3]*img[2]); + res[3] = (Tt)((Ttdouble)_data[2]*img[1] + (Ttdouble)_data[3]*img[3]); + return res; + case 3 : // 3x3_matrix * 3x3_matrix + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[3] + + (Ttdouble)_data[2]*img[6]); + res[1] = (Tt)((Ttdouble)_data[0]*img[1] + (Ttdouble)_data[1]*img[4] + + (Ttdouble)_data[2]*img[7]); + res[2] = (Tt)((Ttdouble)_data[0]*img[2] + (Ttdouble)_data[1]*img[5] + + (Ttdouble)_data[2]*img[8]); + res[3] = (Tt)((Ttdouble)_data[3]*img[0] + (Ttdouble)_data[4]*img[3] + + (Ttdouble)_data[5]*img[6]); + res[4] = (Tt)((Ttdouble)_data[3]*img[1] + (Ttdouble)_data[4]*img[4] + + (Ttdouble)_data[5]*img[7]); + res[5] = (Tt)((Ttdouble)_data[3]*img[2] + (Ttdouble)_data[4]*img[5] + + (Ttdouble)_data[5]*img[8]); + res[6] = (Tt)((Ttdouble)_data[6]*img[0] + (Ttdouble)_data[7]*img[3] + + (Ttdouble)_data[8]*img[6]); + res[7] = (Tt)((Ttdouble)_data[6]*img[1] + (Ttdouble)_data[7]*img[4] + + (Ttdouble)_data[8]*img[7]); + res[8] = (Tt)((Ttdouble)_data[6]*img[2] + (Ttdouble)_data[7]*img[5] + + (Ttdouble)_data[8]*img[8]); + return res; + case 4 : // 4x4_matrix * 4x4_matrix + res[0] = (Tt)((Ttdouble)_data[0]*img[0] + (Ttdouble)_data[1]*img[4] + + (Ttdouble)_data[2]*img[8] + (Ttdouble)_data[3]*img[12]); + res[1] = (Tt)((Ttdouble)_data[0]*img[1] + (Ttdouble)_data[1]*img[5] + + (Ttdouble)_data[2]*img[9] + (Ttdouble)_data[3]*img[13]); + res[2] = (Tt)((Ttdouble)_data[0]*img[2] + (Ttdouble)_data[1]*img[6] + + (Ttdouble)_data[2]*img[10] + (Ttdouble)_data[3]*img[14]); + res[3] = (Tt)((Ttdouble)_data[0]*img[3] + (Ttdouble)_data[1]*img[7] + + (Ttdouble)_data[2]*img[11] + (Ttdouble)_data[3]*img[15]); + res[4] = (Tt)((Ttdouble)_data[4]*img[0] + (Ttdouble)_data[5]*img[4] + + (Ttdouble)_data[6]*img[8] + (Ttdouble)_data[7]*img[12]); + res[5] = (Tt)((Ttdouble)_data[4]*img[1] + (Ttdouble)_data[5]*img[5] + + (Ttdouble)_data[6]*img[9] + (Ttdouble)_data[7]*img[13]); + res[6] = (Tt)((Ttdouble)_data[4]*img[2] + (Ttdouble)_data[5]*img[6] + + (Ttdouble)_data[6]*img[10] + (Ttdouble)_data[7]*img[14]); + res[7] = (Tt)((Ttdouble)_data[4]*img[3] + (Ttdouble)_data[5]*img[7] + + (Ttdouble)_data[6]*img[11] + (Ttdouble)_data[7]*img[15]); + res[8] = (Tt)((Ttdouble)_data[8]*img[0] + (Ttdouble)_data[9]*img[4] + + (Ttdouble)_data[10]*img[8] + (Ttdouble)_data[11]*img[12]); + res[9] = (Tt)((Ttdouble)_data[8]*img[1] + (Ttdouble)_data[9]*img[5] + + (Ttdouble)_data[10]*img[9] + (Ttdouble)_data[11]*img[13]); + res[10] = (Tt)((Ttdouble)_data[8]*img[2] + (Ttdouble)_data[9]*img[6] + + (Ttdouble)_data[10]*img[10] + (Ttdouble)_data[11]*img[14]); + res[11] = (Tt)((Ttdouble)_data[8]*img[3] + (Ttdouble)_data[9]*img[7] + + (Ttdouble)_data[10]*img[11] + (Ttdouble)_data[11]*img[15]); + res[12] = (Tt)((Ttdouble)_data[12]*img[0] + (Ttdouble)_data[13]*img[4] + + (Ttdouble)_data[14]*img[8] + (Ttdouble)_data[15]*img[12]); + res[13] = (Tt)((Ttdouble)_data[12]*img[1] + (Ttdouble)_data[13]*img[5] + + (Ttdouble)_data[14]*img[9] + (Ttdouble)_data[15]*img[13]); + res[14] = (Tt)((Ttdouble)_data[12]*img[2] + (Ttdouble)_data[13]*img[6] + + (Ttdouble)_data[14]*img[10] + (Ttdouble)_data[15]*img[14]); + res[15] = (Tt)((Ttdouble)_data[12]*img[3] + (Ttdouble)_data[13]*img[7] + + (Ttdouble)_data[14]*img[11] + (Ttdouble)_data[15]*img[15]); + return res; + } else switch (_width) { // Square_matrix * Matrix + case 2 : { // 2x2_matrix * Matrix + const t *const ps0 = img.data(), *const ps1 = img.data(0,1); + Tt *const pd0 = res.data(), *const pd1 = res.data(0,1); + const Ttdouble + a0 = (Ttdouble)_data[0], a1 = (Ttdouble)_data[1], + a2 = (Ttdouble)_data[2], a3 = (Ttdouble)_data[3]; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(img.width(),4096)) + cimg_forX(img,i) { + const Ttdouble x = (Ttdouble)ps0[i], y = (Ttdouble)ps1[i]; + pd0[i] = (Tt)(a0*x + a1*y); + pd1[i] = (Tt)(a2*x + a3*y); + } + return res; + } + case 3 : { // 3x3_matrix * Matrix + const t *const ps0 = img.data(), *const ps1 = img.data(0,1), *const ps2 = img.data(0,2); + Tt *const pd0 = res.data(), *const pd1 = res.data(0,1), *const pd2 = res.data(0,2); + const Ttdouble + a0 = (Ttdouble)_data[0], a1 = (Ttdouble)_data[1], a2 = (Ttdouble)_data[2], + a3 = (Ttdouble)_data[3], a4 = (Ttdouble)_data[4], a5 = (Ttdouble)_data[5], + a6 = (Ttdouble)_data[6], a7 = (Ttdouble)_data[7], a8 = (Ttdouble)_data[8]; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(img.width(),1024)) + cimg_forX(img,i) { + const Ttdouble x = (Ttdouble)ps0[i], y = (Ttdouble)ps1[i], z = (Ttdouble)ps2[i]; + pd0[i] = (Tt)(a0*x + a1*y + a2*z); + pd1[i] = (Tt)(a3*x + a4*y + a5*z); + pd2[i] = (Tt)(a6*x + a7*y + a8*z); + } + return res; + } + case 4 : { // 4x4_matrix * Matrix + const t + *const ps0 = img.data(), *const ps1 = img.data(0,1), + *const ps2 = img.data(0,2), *const ps3 = img.data(0,3); + Tt + *const pd0 = res.data(), *const pd1 = res.data(0,1), + *const pd2 = res.data(0,2), *const pd3 = res.data(0,3); + const Ttdouble + a0 = (Ttdouble)_data[0], a1 = (Ttdouble)_data[1], a2 = (Ttdouble)_data[2], a3 = (Ttdouble)_data[3], + a4 = (Ttdouble)_data[4], a5 = (Ttdouble)_data[5], a6 = (Ttdouble)_data[6], a7 = (Ttdouble)_data[7], + a8 = (Ttdouble)_data[8], a9 = (Ttdouble)_data[9], a10 = (Ttdouble)_data[10], a11 = (Ttdouble)_data[11], + a12 = (Ttdouble)_data[12], a13 = (Ttdouble)_data[13], a14 = (Ttdouble)_data[14], + a15 = (Ttdouble)_data[15]; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(img.width(),512)) + cimg_forX(img,i) { + const Ttdouble x = (Ttdouble)ps0[i], y = (Ttdouble)ps1[i], z = (Ttdouble)ps2[i], c = (Ttdouble)ps3[i]; + pd0[i] = (Tt)(a0*x + a1*y + a2*z + a3*c); + pd1[i] = (Tt)(a4*x + a5*y + a6*z + a7*c); + pd2[i] = (Tt)(a8*x + a9*y + a10*z + a11*c); + pd3[i] = (Tt)(a12*x + a13*y + a14*z + a15*c); + } + return res; + } + } + } + + // Fallback to generic version. +#if cimg_use_openmp!=0 + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(size()>(cimg_openmp_sizefactor)*1024 && + img.size()>(cimg_openmp_sizefactor)*1024)) + cimg_forXY(res,i,j) { + Ttdouble value = 0; + cimg_forX(*this,k) value+=(*this)(k,j)*img(i,k); + res(i,j) = (Tt)value; + } +#else + Tt *ptrd = res._data; + cimg_forXY(res,i,j) { + Ttdouble value = 0; + cimg_forX(*this,k) value+=(*this)(k,j)*img(i,k); + *(ptrd++) = (Tt)value; + } +#endif + return res; + } + + //! In-place division operator. + /** + Similar to operator+=(const t), except that it performs a division instead of an addition. + **/ + template + CImg& operator/=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,*ptr / value,32768); + return *this; + } + + //! In-place division operator. + /** + Similar to operator+=(const char*), except that it performs a division instead of an addition. + **/ + CImg& operator/=(const char *const expression) { + return div((+*this)._fill(expression,true,1,0,0,"operator/=",this)); + } + + //! In-place division operator. + /** + Replace the image instance by the (right) matrix division between the image instance and the specified + matrix \c img. + \param img Second operand of the matrix division. + \note + - It does \e not compute a pointwise division between two images. For this purpose, use + div(const CImg&) instead. + - It returns the matrix operation \c A*inverse(img). + - The size of the image instance can be modified by this operator. + **/ + template + CImg& operator/=(const CImg& img) { + return (*this*img.get_invert()).move_to(*this); + } + + //! Division operator. + /** + Similar to operator/=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator/(const t value) const { + return CImg<_cimg_Tt>(*this,false)/=value; + } + + //! Division operator. + /** + Similar to operator/=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator/(const char *const expression) const { + return CImg(*this,false)/=expression; + } + + //! Division operator. + /** + Similar to operator/=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator/(const CImg& img) const { + return (*this)*img.get_invert(); + } + + //! In-place modulo operator. + /** + Similar to operator+=(const t), except that it performs a modulo operation instead of an addition. + **/ + template + CImg& operator%=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,cimg::mod(*ptr,(T)value),16384); + return *this; + } + + //! In-place modulo operator. + /** + Similar to operator+=(const char*), except that it performs a modulo operation instead of an addition. + **/ + CImg& operator%=(const char *const expression) { + return *this%=(+*this)._fill(expression,true,1,0,0,"operator%=",this); + } + + //! In-place modulo operator. + /** + Similar to operator+=(const CImg&), except that it performs a modulo operation instead of an addition. + **/ + template + CImg& operator%=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this%=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> operator%(const t value) const { + return CImg<_cimg_Tt>(*this,false)%=value; + } + + //! Modulo operator. + /** + Similar to operator%=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + CImg operator%(const char *const expression) const { + return CImg(*this,false)%=expression; + } + + //! Modulo operator. + /** + Similar to operator%=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image may be a superset of the initial pixel type \c T, if necessary. + **/ + template + CImg<_cimg_Tt> operator%(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false)%=img; + } + + //! In-place bitwise AND operator. + /** + Similar to operator+=(const t), except that it performs a bitwise AND operation instead of an addition. + **/ + template + CImg& operator&=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,(ulongT)*ptr & (ulongT)value,32768); + return *this; + } + + //! In-place bitwise AND operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise AND operation instead of an addition. + **/ + CImg& operator&=(const char *const expression) { + return *this&=(+*this)._fill(expression,true,1,0,0,"operator&=",this); + } + + //! In-place bitwise AND operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise AND operation instead of an addition. + **/ + template + CImg& operator&=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this&=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator&(const t value) const { + return (+*this)&=value; + } + + //! Bitwise AND operator. + /** + Similar to operator&=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator&(const char *const expression) const { + return (+*this)&=expression; + } + + //! Bitwise AND operator. + /** + Similar to operator&=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator&(const CImg& img) const { + return (+*this)&=img; + } + + //! In-place bitwise OR operator. + /** + Similar to operator+=(const t), except that it performs a bitwise OR operation instead of an addition. + **/ + template + CImg& operator|=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,(ulongT)*ptr | (ulongT)value,32768); + return *this; + } + + //! In-place bitwise OR operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise OR operation instead of an addition. + **/ + CImg& operator|=(const char *const expression) { + return *this|=(+*this)._fill(expression,true,1,0,0,"operator|=",this); + } + + //! In-place bitwise OR operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise OR operation instead of an addition. + **/ + template + CImg& operator|=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this|=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator|(const t value) const { + return (+*this)|=value; + } + + //! Bitwise OR operator. + /** + Similar to operator|=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator|(const char *const expression) const { + return (+*this)|=expression; + } + + //! Bitwise OR operator. + /** + Similar to operator|=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator|(const CImg& img) const { + return (+*this)|=img; + } + + //! In-place bitwise XOR operator. + /** + Similar to operator+=(const t), except that it performs a bitwise XOR operation instead of an addition. + \warning + - It does \e not compute the \e power of pixel values. For this purpose, use pow(const t) instead. + **/ + template + CImg& operator^=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,(ulongT)*ptr ^ (ulongT)value,32768); + return *this; + } + + //! In-place bitwise XOR operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise XOR operation instead of an addition. + \warning + - It does \e not compute the \e power of pixel values. For this purpose, use pow(const char*) instead. + **/ + CImg& operator^=(const char *const expression) { + return *this^=(+*this)._fill(expression,true,1,0,0,"operator^=",this); + } + + //! In-place bitwise XOR operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise XOR operation instead of an addition. + \warning + - It does \e not compute the \e power of pixel values. For this purpose, use pow(const CImg&) instead. + **/ + template + CImg& operator^=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this^=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator^(const t value) const { + return (+*this)^=value; + } + + //! Bitwise XOR operator. + /** + Similar to operator^=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator^(const char *const expression) const { + return (+*this)^=expression; + } + + //! Bitwise XOR operator. + /** + Similar to operator^=(const CImg&), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator^(const CImg& img) const { + return (+*this)^=img; + } + + //! In-place bitwise left shift operator. + /** + Similar to operator+=(const t), except that it performs a bitwise left shift instead of an addition. + **/ + template + CImg& operator<<=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,((longT)*ptr) << (int)value,65536); + return *this; + } + + //! In-place bitwise left shift operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise left shift instead of an addition. + **/ + CImg& operator<<=(const char *const expression) { + return *this<<=(+*this)._fill(expression,true,1,0,0,"operator<<=",this); + } + + //! In-place bitwise left shift operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise left shift instead of an addition. + **/ + template + CImg& operator<<=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this^=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg operator<<(const t value) const { + return (+*this)<<=value; + } + + //! Bitwise left shift operator. + /** + Similar to operator<<=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator<<(const char *const expression) const { + return (+*this)<<=expression; + } + + //! Bitwise left shift operator. + /** + Similar to operator<<=(const CImg&), except that it returns a new image instance instead of + operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator<<(const CImg& img) const { + return (+*this)<<=img; + } + + //! In-place bitwise right shift operator. + /** + Similar to operator+=(const t), except that it performs a bitwise right shift instead of an addition. + **/ + template + CImg& operator>>=(const t value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,((longT)*ptr) >> (int)value,65536); + return *this; + } + + //! In-place bitwise right shift operator. + /** + Similar to operator+=(const char*), except that it performs a bitwise right shift instead of an addition. + **/ + CImg& operator>>=(const char *const expression) { + return *this>>=(+*this)._fill(expression,true,1,0,0,"operator>>=",this); + } + + //! In-place bitwise right shift operator. + /** + Similar to operator+=(const CImg&), except that it performs a bitwise right shift instead of an addition. + **/ + template + CImg& operator>>=(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return *this^=+img; + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs> (int)*(ptrs++)); + for (const t *ptrs = img._data; ptrd> (int)*(ptrs++)); + } + return *this; + } + + //! Bitwise right shift operator. + /** + Similar to operator>>=(const t), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator>>(const t value) const { + return (+*this)>>=value; + } + + //! Bitwise right shift operator. + /** + Similar to operator>>=(const char*), except that it returns a new image instance instead of operating in-place. + The pixel type of the returned image is \c T. + **/ + CImg operator>>(const char *const expression) const { + return (+*this)>>=expression; + } + + //! Bitwise right shift operator. + /** + Similar to operator>>=(const CImg&), except that it returns a new image instance instead of + operating in-place. + The pixel type of the returned image is \c T. + **/ + template + CImg operator>>(const CImg& img) const { + return (+*this)>>=img; + } + + //! Bitwise inversion operator. + /** + Similar to operator-(), except that it compute the bitwise inverse instead of the opposite value. + **/ + CImg operator~() const { + CImg res(_width,_height,_depth,_spectrum); + const T *ptrs = _data; + cimg_for(res,ptrd,T) { const ulongT value = (ulongT)*(ptrs++); *ptrd = (T)~value; } + return res; + } + + //! Test if all pixels of an image have the same value. + /** + Return \c true is all pixels of the image instance are equal to the specified \c value. + \param value Reference value to compare with. + **/ + template + bool operator==(const t value) const { + if (is_empty()) return false; + typedef _cimg_Tt Tt; + bool is_equal = true; + for (T *ptrd = _data + size(); is_equal && ptrd>_data; is_equal = ((Tt)*(--ptrd)==(Tt)value)) {} + return is_equal; + } + + //! Test if all pixel values of an image follow a specified expression. + /** + Return \c true is all pixels of the image instance are equal to the specified \c expression. + \param expression Value string describing the way pixel values are compared. + **/ + bool operator==(const char *const expression) const { + return *this==(+*this)._fill(expression,true,1,0,0,"operator==",this); + } + + //! Test if two images have the same size and values. + /** + Return \c true if the image instance and the input image \c img have the same pixel values, + even if the dimensions of the two images do not match. It returns \c false otherwise. + \param img Input image to compare with. + \note + - The pixel buffer pointers data() of the two compared images do not have to be the same for operator==() + to return \c true. + Only the dimensions and the pixel values matter. Thus, the comparison can be \c true even for different + pixel types \c T and \c t. + \par Example + \code + const CImg img1(1,3,1,1, 0,1,2); // Construct a 1x3 vector [0;1;2] (with 'float' pixel values) + const CImg img2(1,3,1,1, 0,1,2); // Construct a 1x3 vector [0;1;2] (with 'char' pixel values) + if (img1==img2) { // Test succeeds, image dimensions and values are the same + std::printf("'img1' and 'img2' have same dimensions and values."); + } + \endcode + **/ + template + bool operator==(const CImg& img) const { + typedef _cimg_Tt Tt; + const ulongT siz = size(); + bool is_equal = true; + if (siz!=img.size()) return false; + t *ptrs = img._data + siz; + for (T *ptrd = _data + siz; is_equal && ptrd>_data; is_equal = ((Tt)*(--ptrd)==(Tt)*(--ptrs))) {} + return is_equal; + } + + //! Test if pixels of an image are all different from a value. + /** + Return \c true is all pixels of the image instance are different than the specified \c value. + \param value Reference value to compare with. + **/ + template + bool operator!=(const t value) const { + return !((*this)==value); + } + + //! Test if all pixel values of an image are different from a specified expression. + /** + Return \c true is all pixels of the image instance are different to the specified \c expression. + \param expression Value string describing the way pixel values are compared. + **/ + bool operator!=(const char *const expression) const { + return !((*this)==expression); + } + + //! Test if two images have different sizes or values. + /** + Return \c true if the image instance and the input image \c img have different dimensions or pixel values, + and \c false otherwise. + \param img Input image to compare with. + \note + - Writing \c img1!=img2 is equivalent to \c !(img1==img2). + **/ + template + bool operator!=(const CImg& img) const { + return !((*this)==img); + } + + //! Construct an image list from two images. + /** + Return a new list of image (\c CImgList instance) containing exactly two elements: + - A copy of the image instance, at position [\c 0]. + - A copy of the specified image \c img, at position [\c 1]. + + \param img Input image that will be the second image of the resulting list. + \note + - The family of operator,() is convenient to easily create list of images, but it is also \e quite \e slow + in practice (see warning below). + - Constructed lists contain no shared images. If image instance or input image \c img are shared, they are + inserted as new non-shared copies in the resulting list. + - The pixel type of the returned list may be a superset of the initial pixel type \c T, if necessary. + \warning + - Pipelining operator,() \c N times will perform \c N copies of the entire content of a (growing) image list. + This may become very expensive in terms of speed and used memory. You should avoid using this technique to + build a new CImgList instance from several images, if you are seeking for performance. + Fast insertions of images in an image list are possible with + CImgList::insert(const CImg&,unsigned int,bool) or move_to(CImgList&,unsigned int). + \par Example + \code + const CImg + img1("reference.jpg"), + img2 = img1.get_mirror('x'), + img3 = img2.get_blur(5); + const CImgList list = (img1,img2); // Create list of two elements from 'img1' and 'img2' + (list,img3).display(); // Display image list containing copies of 'img1','img2' and 'img3' + \endcode + \image html ref_operator_comma.jpg + **/ + template + CImgList<_cimg_Tt> operator,(const CImg& img) const { + return CImgList<_cimg_Tt>(*this,img); + } + + //! Construct an image list from image instance and an input image list. + /** + Return a new list of images (\c CImgList instance) containing exactly \c list.size() \c + \c 1 elements: + - A copy of the image instance, at position [\c 0]. + - A copy of the specified image list \c list, from positions [\c 1] to [\c list.size()]. + + \param list Input image list that will be appended to the image instance. + \note + - Similar to operator,(const CImg&) const, except that it takes an image list as an argument. + **/ + template + CImgList<_cimg_Tt> operator,(const CImgList& list) const { + return CImgList<_cimg_Tt>(list,false).insert(*this,0); + } + + //! Split image along specified axis. + /** + Return a new list of images (\c CImgList instance) containing the split components + of the instance image along the specified axis. + \param axis Splitting axis (can be '\c x','\c y','\c z' or '\c c') + \note + - Similar to get_split(char,int) const, with default second argument. + \par Example + \code + const CImg img("reference.jpg"); // Load a RGB color image + const CImgList list = (img<'c'); // Get a list of its three R,G,B channels + (img,list).display(); + \endcode + \image html ref_operator_less.jpg + **/ + CImgList operator<(const char axis) const { + return get_split(axis); + } + + //@} + //------------------------------------- + // + //! \name Instance Characteristics + //@{ + //------------------------------------- + + //! Return the type of image pixel values as a C string. + /** + Return a \c char* string containing the usual type name of the image pixel values + (i.e. a stringified version of the template parameter \c T). + \note + - The returned string may contain spaces (as in \c "unsigned char"). + - If the pixel type \c T does not correspond to a registered type, the string "unknown" is returned. + **/ + static const char* pixel_type() { + return cimg::type::string(); + } + + //! Return the number of image columns. + /** + Return the image width, i.e. the image dimension along the X-axis. + \note + - The width() of an empty image is equal to \c 0. + - width() is typically equal to \c 1 when considering images as \e vectors for matrix calculations. + - width() returns an \c int, although the image width is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._width. + **/ + int width() const { + return (int)_width; + } + + //! Return the number of image rows. + /** + Return the image height, i.e. the image dimension along the Y-axis. + \note + - The height() of an empty image is equal to \c 0. + - height() returns an \c int, although the image height is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._height. + **/ + int height() const { + return (int)_height; + } + + //! Return the number of image slices. + /** + Return the image depth, i.e. the image dimension along the Z-axis. + \note + - The depth() of an empty image is equal to \c 0. + - depth() is typically equal to \c 1 when considering usual 2D images. When depth()\c > \c 1, the image + is said to be \e volumetric. + - depth() returns an \c int, although the image depth is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._depth. + **/ + int depth() const { + return (int)_depth; + } + + //! Return the number of image channels. + /** + Return the number of image channels, i.e. the image dimension along the C-axis. + \note + - The spectrum() of an empty image is equal to \c 0. + - spectrum() is typically equal to \c 1 when considering scalar-valued images, to \c 3 + for RGB-coded color images, and to \c 4 for RGBA-coded color images (with alpha-channel). + The number of channels of an image instance is not limited. The meaning of the pixel values is not linked + up to the number of channels (e.g. a 4-channel image may indifferently stands for a RGBA or CMYK color image). + - spectrum() returns an \c int, although the image spectrum is internally stored as an \c unsigned \c int. + Using an \c int is safer and prevents arithmetic traps possibly encountered when doing calculations involving + \c unsigned \c int variables. + Access to the initial \c unsigned \c int variable is possible (though not recommended) by + (*this)._spectrum. + **/ + int spectrum() const { + return (int)_spectrum; + } + + //! Return the total number of pixel values. + /** + Return width()*\ref height()*\ref depth()*\ref spectrum(), + i.e. the total number of values of type \c T in the pixel buffer of the image instance. + \note + - The size() of an empty image is equal to \c 0. + - The allocated memory size for a pixel buffer of a non-shared \c CImg instance is equal to + size()*sizeof(T). + \par Example + \code + const CImg img(100,100,1,3); // Construct new 100x100 color image + if (img.size()==30000) // Test succeeds + std::printf("Pixel buffer uses %lu bytes", + img.size()*sizeof(float)); + \endcode + **/ + ulongT size() const { + return (ulongT)_width*_height*_depth*_spectrum; + } + + //! Return a pointer to the first pixel value. + /** + Return a \c T*, or a \c const \c T* pointer to the first value in the pixel buffer of the image instance, + whether the instance is \c const or not. + \note + - The data() of an empty image is equal to \c 0 (null pointer). + - The allocated pixel buffer for the image instance starts from \c data() + and goes to data()+\ref size() - 1 (included). + - To get the pointer to one particular location of the pixel buffer, use + data(unsigned int,unsigned int,unsigned int,unsigned int) instead. + **/ + T* data() { + return _data; + } + + //! Return a pointer to the first pixel value \const. + const T* data() const { + return _data; + } + + //! Return a pointer to a located pixel value. + /** + Return a \c T*, or a \c const \c T* pointer to the value located at (\c x,\c y,\c z,\c c) in the pixel buffer + of the image instance, + whether the instance is \c const or not. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Writing \c img.data(x,y,z,c) is equivalent to &(img(x,y,z,c)). Thus, this method has the same + properties as operator()(unsigned int,unsigned int,unsigned int,unsigned int). + **/ +#if cimg_verbosity>=3 + T *data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) { + const ulongT off = (ulongT)offset(x,y,z,c); + if (off>=size()) + cimg::warn(_cimg_instance + "data(): Invalid pointer request, at coordinates (%u,%u,%u,%u) [offset=%u].", + cimg_instance, + x,y,z,c,off); + return _data + off; + } + + //! Return a pointer to a located pixel value \const. + const T* data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) const { + return const_cast*>(this)->data(x,y,z,c); + } +#else + T* data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) { + return _data + x + (ulongT)y*_width + (ulongT)z*_width*_height + (ulongT)c*_width*_height*_depth; + } + + const T* data(const unsigned int x, const unsigned int y=0, const unsigned int z=0, const unsigned int c=0) const { + return _data + x + (ulongT)y*_width + (ulongT)z*_width*_height + (ulongT)c*_width*_height*_depth; + } +#endif + + //! Return the offset to a located pixel value, with respect to the beginning of the pixel buffer. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Writing \c img.data(x,y,z,c) is equivalent to &(img(x,y,z,c)) - img.data(). + Thus, this method has the same properties as operator()(unsigned int,unsigned int,unsigned int,unsigned int). + \par Example + \code + const CImg img(100,100,1,3); // Define a 100x100 RGB-color image + const long off = img.offset(10,10,0,2); // Get the offset of the blue value of the pixel located at (10,10) + const float val = img[off]; // Get the blue value of this pixel + \endcode + **/ + longT offset(const int x, const int y=0, const int z=0, const int c=0) const { + return x + (longT)y*_width + (longT)z*_width*_height + (longT)c*_width*_height*_depth; + } + + //! Return a CImg::iterator pointing to the first pixel value. + /** + \note + - Equivalent to data(). + - It has been mainly defined for compatibility with STL naming conventions. + **/ + iterator begin() { + return _data; + } + + //! Return a CImg::iterator pointing to the first value of the pixel buffer \const. + const_iterator begin() const { + return _data; + } + + //! Return a CImg::iterator pointing next to the last pixel value. + /** + \note + - Writing \c img.end() is equivalent to img.data() + img.size(). + - It has been mainly defined for compatibility with STL naming conventions. + \warning + - The returned iterator actually points to a value located \e outside the acceptable bounds of the pixel buffer. + Trying to read or write the content of the returned iterator will probably result in a crash. + Use it mainly as a strict upper bound for a CImg::iterator. + \par Example + \code + CImg img(100,100,1,3); // Define a 100x100 RGB color image + // 'img.end()' used below as an upper bound for the iterator. + for (CImg::iterator it = img.begin(); it::iterator pointing next to the last pixel value \const. + const_iterator end() const { + return _data + size(); + } + + //! Return a reference to the first pixel value. + /** + \note + - Writing \c img.front() is equivalent to img[0], or img(0,0,0,0). + - It has been mainly defined for compatibility with STL naming conventions. + **/ + T& front() { + return *_data; + } + + //! Return a reference to the first pixel value \const. + const T& front() const { + return *_data; + } + + //! Return a reference to the last pixel value. + /** + \note + - Writing \c img.back() is equivalent to img[img.size() - 1], or + img(img.width() - 1,img.height() - 1,img.depth() - 1,img.spectrum() - 1). + - It has been mainly defined for compatibility with STL naming conventions. + **/ + T& back() { + return *(_data + size() - 1); + } + + //! Return a reference to the last pixel value \const. + const T& back() const { + return *(_data + size() - 1); + } + + //! Access to a pixel value at a specified offset, using Dirichlet boundary conditions. + /** + Return a reference to the pixel value of the image instance located at a specified \c offset, + or to a specified default value in case of out-of-bounds access. + \param offset Offset to the desired pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note + - Writing \c img.at(offset,out_value) is similar to img[offset], except that if \c offset + is outside bounds (e.g. \c offset<0 or \c offset>=img.size()), a reference to a value \c out_value + is safely returned instead. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel offset. + **/ + T& at(const int offset, const T& out_value) { + return (offset<0 || offset>=(int)size())?(cimg::temporary(out_value)=out_value):(*this)[offset]; + } + + //! Access to a pixel value at a specified offset, using Dirichlet boundary conditions \const. + T at(const int offset, const T& out_value) const { + return (offset<0 || offset>=(int)size())?out_value:(*this)[offset]; + } + + //! Access to a pixel value at a specified offset, using Neumann boundary conditions. + /** + Return a reference to the pixel value of the image instance located at a specified \c offset, + or to the nearest pixel location in the image instance in case of out-of-bounds access. + \param offset Offset to the desired pixel value. + \note + - Similar to at(int,const T), except that an out-of-bounds access returns the value of the + nearest pixel in the image instance, regarding the specified offset, i.e. + - If \c offset<0, then \c img[0] is returned. + - If \c offset>=img.size(), then \c img[img.size() - 1] is returned. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel offset. + - If you know your image instance is \e not empty, you may rather use the slightly faster method \c _at(int). + **/ + T& at(const int offset) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "at(): Empty instance.", + cimg_instance); + return _at(offset); + } + + T& _at(const int offset) { + const unsigned int siz = (unsigned int)size(); + return (*this)[offset<0?0:(unsigned int)offset>=siz?siz - 1:offset]; + } + + //! Access to a pixel value at a specified offset, using Neumann boundary conditions \const. + const T& at(const int offset) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "at(): Empty instance.", + cimg_instance); + return _at(offset); + } + + const T& _at(const int offset) const { + const unsigned int siz = (unsigned int)size(); + return (*this)[offset<0?0:(unsigned int)offset>=siz?siz - 1:offset]; + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X-coordinate. + /** + Return a reference to the pixel value of the image instance located at (\c x,\c y,\c z,\c c), + or to a specified default value in case of out-of-bounds access along the X-axis. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c (\c x,\c y,\c z,\c c) is outside image bounds. + \note + - Similar to operator()(), except that an out-of-bounds access along the X-axis returns the specified value + \c out_value. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel coordinates. + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + T& atX(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || x>=width())?(cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X-coordinate \const. + T atX(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || x>=width())?out_value:(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X-coordinate. + /** + Return a reference to the pixel value of the image instance located at (\c x,\c y,\c z,\c c), + or to the nearest pixel location in the image instance in case of out-of-bounds access along the X-axis. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Similar to at(int,int,int,int,const T), except that an out-of-bounds access returns the value of the + nearest pixel in the image instance, regarding the specified X-coordinate. + - Due to the additional boundary checking operation, this method is slower than operator()(). Use it when + you are \e not sure about the validity of the specified pixel coordinates. + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _at(int,int,int,int). + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + T& atX(const int x, const int y=0, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atX(): Empty instance.", + cimg_instance); + return _atX(x,y,z,c); + } + + T& _atX(const int x, const int y=0, const int z=0, const int c=0) { + return (*this)(x<0?0:(x>=width()?width() - 1:x),y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X-coordinate \const. + const T& atX(const int x, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atX(): Empty instance.", + cimg_instance); + return _atX(x,y,z,c); + } + + const T& _atX(const int x, const int y=0, const int z=0, const int c=0) const { + return (*this)(x<0?0:(x>=width()?width() - 1:x),y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X and Y-coordinates. + /** + Similar to atX(int,int,int,int,const T), except that boundary checking is performed both on X and Y-coordinates. + **/ + T& atXY(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || y<0 || x>=width() || y>=height())?(cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X and Y coordinates \const. + T atXY(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || y<0 || x>=width() || y>=height())?out_value:(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X and Y-coordinates. + /** + Similar to atX(int,int,int,int), except that boundary checking is performed both on X and Y-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _atXY(int,int,int,int). + **/ + T& atXY(const int x, const int y, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXY(): Empty instance.", + cimg_instance); + return _atXY(x,y,z,c); + } + + T& _atXY(const int x, const int y, const int z=0, const int c=0) { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1),z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X and Y-coordinates \const. + const T& atXY(const int x, const int y, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXY(): Empty instance.", + cimg_instance); + return _atXY(x,y,z,c); + } + + const T& _atXY(const int x, const int y, const int z=0, const int c=0) const { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1),z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X,Y and Z-coordinates. + /** + Similar to atX(int,int,int,int,const T), except that boundary checking is performed both on + X,Y and Z-coordinates. + **/ + T& atXYZ(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || y<0 || z<0 || x>=width() || y>=height() || z>=depth())? + (cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions for the X,Y and Z-coordinates \const. + T atXYZ(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || y<0 || z<0 || x>=width() || y>=height() || z>=depth())?out_value:(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to atX(int,int,int,int), except that boundary checking is performed both on X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _atXYZ(int,int,int,int). + **/ + T& atXYZ(const int x, const int y, const int z, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZ(): Empty instance.", + cimg_instance); + return _atXYZ(x,y,z,c); + } + + T& _atXYZ(const int x, const int y, const int z, const int c=0) { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1),c); + } + + //! Access to a pixel value, using Neumann boundary conditions for the X,Y and Z-coordinates \const. + const T& atXYZ(const int x, const int y, const int z, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZ(): Empty instance.", + cimg_instance); + return _atXYZ(x,y,z,c); + } + + const T& _atXYZ(const int x, const int y, const int z, const int c=0) const { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1),c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions. + /** + Similar to atX(int,int,int,int,const T), except that boundary checking is performed on all + X,Y,Z and C-coordinates. + **/ + T& atXYZC(const int x, const int y, const int z, const int c, const T& out_value) { + return (x<0 || y<0 || z<0 || c<0 || x>=width() || y>=height() || z>=depth() || c>=spectrum())? + (cimg::temporary(out_value)=out_value):(*this)(x,y,z,c); + } + + //! Access to a pixel value, using Dirichlet boundary conditions \const. + T atXYZC(const int x, const int y, const int z, const int c, const T& out_value) const { + return (x<0 || y<0 || z<0 || c<0 || x>=width() || y>=height() || z>=depth() || c>=spectrum())?out_value: + (*this)(x,y,z,c); + } + + //! Access to a pixel value, using Neumann boundary conditions. + /** + Similar to atX(int,int,int,int), except that boundary checking is performed on all X,Y,Z and C-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _atXYZC(int,int,int,int). + **/ + T& atXYZC(const int x, const int y, const int z, const int c) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZC(): Empty instance.", + cimg_instance); + return _atXYZC(x,y,z,c); + } + + T& _atXYZC(const int x, const int y, const int z, const int c) { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1), + cimg::cut(c,0,spectrum() - 1)); + } + + //! Access to a pixel value, using Neumann boundary conditions \const. + const T& atXYZC(const int x, const int y, const int z, const int c) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "atXYZC(): Empty instance.", + cimg_instance); + return _atXYZC(x,y,z,c); + } + + const T& _atXYZC(const int x, const int y, const int z, const int c) const { + return (*this)(cimg::cut(x,0,width() - 1), + cimg::cut(y,0,height() - 1), + cimg::cut(z,0,depth() - 1), + cimg::cut(c,0,spectrum() - 1)); + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X-coordinate. + /** + Return a linearly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or a specified default value in case of out-of-bounds access along the X-axis. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c (\c fx,\c y,\c z,\c c) is outside image bounds. + \note + - Similar to atX(int,int,int,int,const T), except that the returned pixel value is approximated by + a linear interpolation along the X-axis, if corresponding coordinates are not integers. + - The type of the returned pixel value is extended to \c float, if the pixel type \c T is not float-valued. + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat linear_atX(const float fx, const int y, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1; + const float + dx = fx - x; + const Tfloat + Ic = (Tfloat)atX(x,y,z,c,out_value), In = (Tfloat)atXY(nx,y,z,c,out_value); + return Ic + dx*(In - Ic); + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for the X-coordinate. + /** + Return a linearly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or the value of the nearest pixel location in the image instance in case of out-of-bounds access along + the X-axis. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Similar to linear_atX(float,int,int,int,const T) const, except that an out-of-bounds access returns + the value of the nearest pixel in the image instance, regarding the specified X-coordinate. + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atX(float,int,int,int). + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat linear_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atX(): Empty instance.", + cimg_instance); + + return _linear_atX(fx,y,z,c); + } + + Tfloat _linear_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1); + const unsigned int + x = (unsigned int)nfx; + const float + dx = nfx - x; + const unsigned int + nx = dx>0?x + 1:x; + const Tfloat + Ic = (Tfloat)(*this)(x,y,z,c), In = (Tfloat)(*this)(nx,y,z,c); + return Ic + dx*(In - Ic); + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for the X-coordinate. + Tfloat linear_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atX_p(): Empty instance.", + cimg_instance); + + return _linear_atX_p(fx,y,z,c); + } + + Tfloat _linear_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f); + const unsigned int + x = (unsigned int)nfx; + const float + dx = nfx - x; + const unsigned int + nx = cimg::mod(x + 1,_width); + const Tfloat + Ic = (Tfloat)(*this)(x,y,z,c), In = (Tfloat)(*this)(nx,y,z,c); + return Ic + dx*(In - Ic); + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X and Y-coordinates. + /** + Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the + boundary checking are achieved both for X and Y-coordinates. + **/ + Tfloat linear_atXY(const float fx, const float fy, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1; + const float + dx = fx - x, + dy = fy - y; + const Tfloat + Icc = (Tfloat)atXY(x,y,z,c,out_value), Inc = (Tfloat)atXY(nx,y,z,c,out_value), + Icn = (Tfloat)atXY(x,ny,z,c,out_value), Inn = (Tfloat)atXY(nx,ny,z,c,out_value); + return Icc + (Inc - Icc + (Icc + Inn - Icn - Inc)*dy)*dx + (Icn - Icc)*dy; + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for the X and Y-coordinates. + /** + Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking + are achieved both for X and Y-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atXY(float,float,int,int). + **/ + Tfloat linear_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXY(): Empty instance.", + cimg_instance); + + return _linear_atXY(fx,fy,z,c); + } + + Tfloat _linear_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1), + nfy = cimg::cut(fy,0,height() - 1); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy; + const float + dx = nfx - x, + dy = nfy - y; + const unsigned int + nx = dx>0?x + 1:x, + ny = dy>0?y + 1:y; + const Tfloat + Icc = (Tfloat)(*this)(x,y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c); + return Icc + (Inc - Icc + (Icc + Inn - Icn - Inc)*dy)*dx + (Icn - Icc)*dy; + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for the X and Y-coordinates. + Tfloat linear_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXY_p(): Empty instance.", + cimg_instance); + + return _linear_atXY_p(fx,fy,z,c); + } + + Tfloat _linear_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f), + nfy = cimg::mod(fy,_height - 0.5f); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy; + const float + dx = nfx - x, + dy = nfy - y; + const unsigned int + nx = cimg::mod(x + 1,_width), + ny = cimg::mod(y + 1,_height); + const Tfloat + Icc = (Tfloat)(*this)(x,y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c); + return Icc + (Inc - Icc + (Icc + Inn - Icn - Inc)*dy)*dx + (Icn - Icc)*dy; + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates. + /** + Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the + boundary checking are achieved both for X,Y and Z-coordinates. + **/ + Tfloat linear_atXYZ(const float fx, const float fy, const float fz, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1, + z = (int)fz - (fz>=0?0:1), nz = z + 1; + const float + dx = fx - x, + dy = fy - y, + dz = fz - z; + const Tfloat + Iccc = (Tfloat)atXYZ(x,y,z,c,out_value), Incc = (Tfloat)atXYZ(nx,y,z,c,out_value), + Icnc = (Tfloat)atXYZ(x,ny,z,c,out_value), Innc = (Tfloat)atXYZ(nx,ny,z,c,out_value), + Iccn = (Tfloat)atXYZ(x,y,nz,c,out_value), Incn = (Tfloat)atXYZ(nx,y,nz,c,out_value), + Icnn = (Tfloat)atXYZ(x,ny,nz,c,out_value), Innn = (Tfloat)atXYZ(nx,ny,nz,c,out_value); + return Iccc + + (Incc - Iccc + + (Iccc + Innc - Icnc - Incc + + (Iccn + Innn + Icnc + Incc - Icnn - Incn - Iccc - Innc)*dz)*dy + + (Iccc + Incn - Iccn - Incc)*dz)*dx + + (Icnc - Iccc + + (Iccc + Icnn - Iccn - Icnc)*dz)*dy + + (Iccn - Iccc)*dz; + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking + are achieved both for X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atXYZ(float,float,float,int). + **/ + Tfloat linear_atXYZ(const float fx, const float fy=0, const float fz=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZ(): Empty instance.", + cimg_instance); + + return _linear_atXYZ(fx,fy,fz,c); + } + + Tfloat _linear_atXYZ(const float fx, const float fy=0, const float fz=0, const int c=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1), + nfy = cimg::cut(fy,0,height() - 1), + nfz = cimg::cut(fz,0,depth() - 1); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z; + const unsigned int + nx = dx>0?x + 1:x, + ny = dy>0?y + 1:y, + nz = dz>0?z + 1:z; + const Tfloat + Iccc = (Tfloat)(*this)(x,y,z,c), Incc = (Tfloat)(*this)(nx,y,z,c), + Icnc = (Tfloat)(*this)(x,ny,z,c), Innc = (Tfloat)(*this)(nx,ny,z,c), + Iccn = (Tfloat)(*this)(x,y,nz,c), Incn = (Tfloat)(*this)(nx,y,nz,c), + Icnn = (Tfloat)(*this)(x,ny,nz,c), Innn = (Tfloat)(*this)(nx,ny,nz,c); + return Iccc + + (Incc - Iccc + + (Iccc + Innc - Icnc - Incc + + (Iccn + Innn + Icnc + Incc - Icnn - Incn - Iccc - Innc)*dz)*dy + + (Iccc + Incn - Iccn - Incc)*dz)*dx + + (Icnc - Iccc + + (Iccc + Icnn - Iccn - Icnc)*dz)*dy + + (Iccn - Iccc)*dz; + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for the X,Y and Z-coordinates. + Tfloat linear_atXYZ_p(const float fx, const float fy=0, const float fz=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZ_p(): Empty instance.", + cimg_instance); + + return _linear_atXYZ_p(fx,fy,fz,c); + } + + Tfloat _linear_atXYZ_p(const float fx, const float fy=0, const float fz=0, const int c=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f), + nfy = cimg::mod(fy,_height - 0.5f), + nfz = cimg::mod(fz,_depth - 0.5f); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z; + const unsigned int + nx = cimg::mod(x + 1,_width), + ny = cimg::mod(y + 1,_height), + nz = cimg::mod(z + 1,_depth); + const Tfloat + Iccc = (Tfloat)(*this)(x,y,z,c), Incc = (Tfloat)(*this)(nx,y,z,c), + Icnc = (Tfloat)(*this)(x,ny,z,c), Innc = (Tfloat)(*this)(nx,ny,z,c), + Iccn = (Tfloat)(*this)(x,y,nz,c), Incn = (Tfloat)(*this)(nx,y,nz,c), + Icnn = (Tfloat)(*this)(x,ny,nz,c), Innn = (Tfloat)(*this)(nx,ny,nz,c); + return Iccc + + (Incc - Iccc + + (Iccc + Innc - Icnc - Incc + + (Iccn + Innn + Icnc + Incc - Icnn - Incn - Iccc - Innc)*dz)*dy + + (Iccc + Incn - Iccn - Incc)*dz)*dx + + (Icnc - Iccc + + (Iccc + Icnn - Iccn - Icnc)*dz)*dy + + (Iccn - Iccc)*dz; + } + + //! Return pixel value, using linear interpolation and Dirichlet boundary conditions for all X,Y,Z,C-coordinates. + /** + Similar to linear_atX(float,int,int,int,const T) const, except that the linear interpolation and the + boundary checking are achieved for all X,Y,Z and C-coordinates. + **/ + Tfloat linear_atXYZC(const float fx, const float fy, const float fz, const float fc, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1, + z = (int)fz - (fz>=0?0:1), nz = z + 1, + c = (int)fc - (fc>=0?0:1), nc = c + 1; + const float + dx = fx - x, + dy = fy - y, + dz = fz - z, + dc = fc - c; + const Tfloat + Icccc = (Tfloat)atXYZC(x,y,z,c,out_value), Inccc = (Tfloat)atXYZC(nx,y,z,c,out_value), + Icncc = (Tfloat)atXYZC(x,ny,z,c,out_value), Inncc = (Tfloat)atXYZC(nx,ny,z,c,out_value), + Iccnc = (Tfloat)atXYZC(x,y,nz,c,out_value), Incnc = (Tfloat)atXYZC(nx,y,nz,c,out_value), + Icnnc = (Tfloat)atXYZC(x,ny,nz,c,out_value), Innnc = (Tfloat)atXYZC(nx,ny,nz,c,out_value), + Icccn = (Tfloat)atXYZC(x,y,z,nc,out_value), Inccn = (Tfloat)atXYZC(nx,y,z,nc,out_value), + Icncn = (Tfloat)atXYZC(x,ny,z,nc,out_value), Inncn = (Tfloat)atXYZC(nx,ny,z,nc,out_value), + Iccnn = (Tfloat)atXYZC(x,y,nz,nc,out_value), Incnn = (Tfloat)atXYZC(nx,y,nz,nc,out_value), + Icnnn = (Tfloat)atXYZC(x,ny,nz,nc,out_value), Innnn = (Tfloat)atXYZC(nx,ny,nz,nc,out_value); + return Icccc + + dx*(Inccc - Icccc + + dy*(Icccc + Inncc - Icncc - Inccc + + dz*(Iccnc + Innnc + Icncc + Inccc - Icnnc - Incnc - Icccc - Inncc + + dc*(Iccnn + Innnn + Icncn + Inccn + Icnnc + Incnc + Icccc + Inncc - + Icnnn - Incnn - Icccn - Inncn - Iccnc - Innnc - Icncc - Inccc)) + + dc*(Icccn + Inncn + Icncc + Inccc - Icncn - Inccn - Icccc - Inncc)) + + dz*(Icccc + Incnc - Iccnc - Inccc + + dc*(Icccn + Incnn + Iccnc + Inccc - Iccnn - Inccn - Icccc - Incnc)) + + dc*(Icccc + Inccn - Inccc - Icccn)) + + dy*(Icncc - Icccc + + dz*(Icccc + Icnnc - Iccnc - Icncc + + dc*(Icccn + Icnnn + Iccnc + Icncc - Iccnn - Icncn - Icccc - Icnnc)) + + dc*(Icccc + Icncn - Icncc - Icccn)) + + dz*(Iccnc - Icccc + + dc*(Icccc + Iccnn - Iccnc - Icccn)) + + dc*(Icccn -Icccc); + } + + //! Return pixel value, using linear interpolation and Neumann boundary conditions for all X,Y,Z and C-coordinates. + /** + Similar to linear_atX(float,int,int,int) const, except that the linear interpolation and the boundary checking + are achieved for all X,Y,Z and C-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _linear_atXYZC(float,float,float,float). + **/ + Tfloat linear_atXYZC(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZC(): Empty instance.", + cimg_instance); + + return _linear_atXYZC(fx,fy,fz,fc); + } + + Tfloat _linear_atXYZC(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + const float + nfx = cimg::cut(fx,0,width() - 1), + nfy = cimg::cut(fy,0,height() - 1), + nfz = cimg::cut(fz,0,depth() - 1), + nfc = cimg::cut(fc,0,spectrum() - 1); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz, + c = (unsigned int)nfc; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z, + dc = nfc - c; + const unsigned int + nx = dx>0?x + 1:x, + ny = dy>0?y + 1:y, + nz = dz>0?z + 1:z, + nc = dc>0?c + 1:c; + const Tfloat + Icccc = (Tfloat)(*this)(x,y,z,c), Inccc = (Tfloat)(*this)(nx,y,z,c), + Icncc = (Tfloat)(*this)(x,ny,z,c), Inncc = (Tfloat)(*this)(nx,ny,z,c), + Iccnc = (Tfloat)(*this)(x,y,nz,c), Incnc = (Tfloat)(*this)(nx,y,nz,c), + Icnnc = (Tfloat)(*this)(x,ny,nz,c), Innnc = (Tfloat)(*this)(nx,ny,nz,c), + Icccn = (Tfloat)(*this)(x,y,z,nc), Inccn = (Tfloat)(*this)(nx,y,z,nc), + Icncn = (Tfloat)(*this)(x,ny,z,nc), Inncn = (Tfloat)(*this)(nx,ny,z,nc), + Iccnn = (Tfloat)(*this)(x,y,nz,nc), Incnn = (Tfloat)(*this)(nx,y,nz,nc), + Icnnn = (Tfloat)(*this)(x,ny,nz,nc), Innnn = (Tfloat)(*this)(nx,ny,nz,nc); + return Icccc + + dx*(Inccc - Icccc + + dy*(Icccc + Inncc - Icncc - Inccc + + dz*(Iccnc + Innnc + Icncc + Inccc - Icnnc - Incnc - Icccc - Inncc + + dc*(Iccnn + Innnn + Icncn + Inccn + Icnnc + Incnc + Icccc + Inncc - + Icnnn - Incnn - Icccn - Inncn - Iccnc - Innnc - Icncc - Inccc)) + + dc*(Icccn + Inncn + Icncc + Inccc - Icncn - Inccn - Icccc - Inncc)) + + dz*(Icccc + Incnc - Iccnc - Inccc + + dc*(Icccn + Incnn + Iccnc + Inccc - Iccnn - Inccn - Icccc - Incnc)) + + dc*(Icccc + Inccn - Inccc - Icccn)) + + dy*(Icncc - Icccc + + dz*(Icccc + Icnnc - Iccnc - Icncc + + dc*(Icccn + Icnnn + Iccnc + Icncc - Iccnn - Icncn - Icccc - Icnnc)) + + dc*(Icccc + Icncn - Icncc - Icccn)) + + dz*(Iccnc - Icccc + + dc*(Icccc + Iccnn - Iccnc - Icccn)) + + dc*(Icccn - Icccc); + } + + //! Return pixel value, using linear interpolation and periodic boundary conditions for all X,Y,Z and C-coordinates. + Tfloat linear_atXYZC_p(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "linear_atXYZC_p(): Empty instance.", + cimg_instance); + + return _linear_atXYZC_p(fx,fy,fz,fc); + } + + Tfloat _linear_atXYZC_p(const float fx, const float fy=0, const float fz=0, const float fc=0) const { + const float + nfx = cimg::mod(fx,_width - 0.5f), + nfy = cimg::mod(fy,_height - 0.5f), + nfz = cimg::mod(fz,_depth - 0.5f), + nfc = cimg::mod(fc,_spectrum - 0.5f); + const unsigned int + x = (unsigned int)nfx, + y = (unsigned int)nfy, + z = (unsigned int)nfz, + c = (unsigned int)nfc; + const float + dx = nfx - x, + dy = nfy - y, + dz = nfz - z, + dc = nfc - c; + const unsigned int + nx = cimg::mod(x + 1,_width), + ny = cimg::mod(y + 1,_height), + nz = cimg::mod(z + 1,_depth), + nc = cimg::mod(c + 1,_spectrum); + const Tfloat + Icccc = (Tfloat)(*this)(x,y,z,c), Inccc = (Tfloat)(*this)(nx,y,z,c), + Icncc = (Tfloat)(*this)(x,ny,z,c), Inncc = (Tfloat)(*this)(nx,ny,z,c), + Iccnc = (Tfloat)(*this)(x,y,nz,c), Incnc = (Tfloat)(*this)(nx,y,nz,c), + Icnnc = (Tfloat)(*this)(x,ny,nz,c), Innnc = (Tfloat)(*this)(nx,ny,nz,c), + Icccn = (Tfloat)(*this)(x,y,z,nc), Inccn = (Tfloat)(*this)(nx,y,z,nc), + Icncn = (Tfloat)(*this)(x,ny,z,nc), Inncn = (Tfloat)(*this)(nx,ny,z,nc), + Iccnn = (Tfloat)(*this)(x,y,nz,nc), Incnn = (Tfloat)(*this)(nx,y,nz,nc), + Icnnn = (Tfloat)(*this)(x,ny,nz,nc), Innnn = (Tfloat)(*this)(nx,ny,nz,nc); + return Icccc + + dx*(Inccc - Icccc + + dy*(Icccc + Inncc - Icncc - Inccc + + dz*(Iccnc + Innnc + Icncc + Inccc - Icnnc - Incnc - Icccc - Inncc + + dc*(Iccnn + Innnn + Icncn + Inccn + Icnnc + Incnc + Icccc + Inncc - + Icnnn - Incnn - Icccn - Inncn - Iccnc - Innnc - Icncc - Inccc)) + + dc*(Icccn + Inncn + Icncc + Inccc - Icncn - Inccn - Icccc - Inncc)) + + dz*(Icccc + Incnc - Iccnc - Inccc + + dc*(Icccn + Incnn + Iccnc + Inccc - Iccnn - Inccn - Icccc - Incnc)) + + dc*(Icccc + Inccn - Inccc - Icccn)) + + dy*(Icncc - Icccc + + dz*(Icccc + Icnnc - Iccnc - Icncc + + dc*(Icccn + Icnnn + Iccnc + Icncc - Iccnn - Icncn - Icccc - Icnnc)) + + dc*(Icccc + Icncn - Icncc - Icccn)) + + dz*(Iccnc - Icccc + + dc*(Icccc + Iccnn - Iccnc - Icccn)) + + dc*(Icccn - Icccc); + } + + //! Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate. + /** + Return a cubicly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or a specified default value in case of out-of-bounds access along the X-axis. + The cubic interpolation uses Hermite splines. + \param fx d X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c (\c fx,\c y,\c z,\c c) is outside image bounds. + \note + - Similar to linear_atX(float,int,int,int,const T) const, except that the returned pixel value is + approximated by a \e cubic interpolation along the X-axis. + - The type of the returned pixel value is extended to \c float, if the pixel type \c T is not float-valued. + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat cubic_atX(const float fx, const int y, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), px = x - 1, nx = x + 1, ax = x + 2; + const float + dx = fx - x; + const Tfloat + Ip = (Tfloat)atX(px,y,z,c,out_value), Ic = (Tfloat)atX(x,y,z,c,out_value), + In = (Tfloat)atX(nx,y,z,c,out_value), Ia = (Tfloat)atX(ax,y,z,c,out_value); + return Ic + 0.5f*(dx*(-Ip + In) + dx*dx*(2*Ip - 5*Ic + 4*In - Ia) + dx*dx*dx*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X-coordinate. + /** + Similar to cubic_atX(float,int,int,int,const T) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atX_c(const float fx, const int y, const int z, const int c, const T& out_value) const { + return cimg::type::cut(cubic_atX(fx,y,z,c,out_value)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate. + /** + Return a cubicly-interpolated pixel value of the image instance located at (\c fx,\c y,\c z,\c c), + or the value of the nearest pixel location in the image instance in case of out-of-bounds access + along the X-axis. The cubic interpolation uses Hermite splines. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Similar to cubic_atX(float,int,int,int,const T) const, except that the returned pixel value is + approximated by a cubic interpolation along the X-axis. + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atX(float,int,int,int). + \warning + - There is \e no boundary checking performed for the Y,Z and C-coordinates, so they must be inside image bounds. + **/ + Tfloat cubic_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atX(): Empty instance.", + cimg_instance); + return _cubic_atX(fx,y,z,c); + } + + Tfloat _cubic_atX(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::cut(fx,0,width() - 1); + const int + x = (int)nfx; + const float + dx = nfx - x; + const int + px = x - 1<0?0:x - 1, nx = dx>0?x + 1:x, ax = x + 2>=width()?width() - 1:x + 2; + const Tfloat + Ip = (Tfloat)(*this)(px,y,z,c), Ic = (Tfloat)(*this)(x,y,z,c), + In = (Tfloat)(*this)(nx,y,z,c), Ia = (Tfloat)(*this)(ax,y,z,c); + return Ic + 0.5f*(dx*(-Ip + In) + dx*dx*(2*Ip - 5*Ic + 4*In - Ia) + dx*dx*dx*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Neumann boundary conditions for the X-coordinate. + /** + Similar to cubic_atX(float,int,int,int) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atX_c(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(cubic_atX(fx,y,z,c)); + } + + T _cubic_atX_c(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(_cubic_atX(fx,y,z,c)); + } + + //! Return pixel value, using cubic interpolation and periodic boundary conditions for the X-coordinate. + Tfloat cubic_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atX_p(): Empty instance.", + cimg_instance); + return _cubic_atX_p(fx,y,z,c); + } + + Tfloat _cubic_atX_p(const float fx, const int y=0, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::mod(fx,_width - 0.5f); + const int + x = (int)nfx; + const float + dx = nfx - x; + const int + px = cimg::mod(x - 1,width()), nx = cimg::mod(x + 1,width()), ax = cimg::mod(x + 2,width()); + const Tfloat + Ip = (Tfloat)(*this)(px,y,z,c), Ic = (Tfloat)(*this)(x,y,z,c), + In = (Tfloat)(*this)(nx,y,z,c), Ia = (Tfloat)(*this)(ax,y,z,c); + return Ic + 0.5f*(dx*(-Ip + In) + dx*dx*(2*Ip - 5*Ic + 4*In - Ia) + dx*dx*dx*(-Ip + 3*Ic - 3*In + Ia)); + } + + T cubic_atX_pc(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(cubic_atX_p(fx,y,z,c)); + } + + T _cubic_atX_pc(const float fx, const int y, const int z, const int c) const { + return cimg::type::cut(_cubic_atX_p(fx,y,z,c)); + } + + //! Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X and Y-coordinates. + /** + Similar to cubic_atX(float,int,int,int,const T) const, except that the cubic interpolation and boundary checking + are achieved both for X and Y-coordinates. + **/ + Tfloat cubic_atXY(const float fx, const float fy, const int z, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), px = x - 1, nx = x + 1, ax = x + 2, + y = (int)fy - (fy>=0?0:1), py = y - 1, ny = y + 1, ay = y + 2; + const float dx = fx - x, dy = fy - y; + const Tfloat + Ipp = (Tfloat)atXY(px,py,z,c,out_value), Icp = (Tfloat)atXY(x,py,z,c,out_value), + Inp = (Tfloat)atXY(nx,py,z,c,out_value), Iap = (Tfloat)atXY(ax,py,z,c,out_value), + Ip = Icp + 0.5f*(dx*(-Ipp + Inp) + dx*dx*(2*Ipp - 5*Icp + 4*Inp - Iap) + dx*dx*dx*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ipc = (Tfloat)atXY(px,y,z,c,out_value), Icc = (Tfloat)atXY(x, y,z,c,out_value), + Inc = (Tfloat)atXY(nx,y,z,c,out_value), Iac = (Tfloat)atXY(ax,y,z,c,out_value), + Ic = Icc + 0.5f*(dx*(-Ipc + Inc) + dx*dx*(2*Ipc - 5*Icc + 4*Inc - Iac) + dx*dx*dx*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ipn = (Tfloat)atXY(px,ny,z,c,out_value), Icn = (Tfloat)atXY(x,ny,z,c,out_value), + Inn = (Tfloat)atXY(nx,ny,z,c,out_value), Ian = (Tfloat)atXY(ax,ny,z,c,out_value), + In = Icn + 0.5f*(dx*(-Ipn + Inn) + dx*dx*(2*Ipn - 5*Icn + 4*Inn - Ian) + dx*dx*dx*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ipa = (Tfloat)atXY(px,ay,z,c,out_value), Ica = (Tfloat)atXY(x,ay,z,c,out_value), + Ina = (Tfloat)atXY(nx,ay,z,c,out_value), Iaa = (Tfloat)atXY(ax,ay,z,c,out_value), + Ia = Ica + 0.5f*(dx*(-Ipa + Ina) + dx*dx*(2*Ipa - 5*Ica + 4*Ina - Iaa) + dx*dx*dx*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dy*(-Ip + In) + dy*dy*(2*Ip - 5*Ic + 4*In - Ia) + dy*dy*dy*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y-coordinates. + /** + Similar to cubic_atXY(float,float,int,int,const T) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atXY_c(const float fx, const float fy, const int z, const int c, const T& out_value) const { + return cimg::type::cut(cubic_atXY(fx,fy,z,c,out_value)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X and Y-coordinates. + /** + Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking + are achieved for both X and Y-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atXY(float,float,int,int). + **/ + Tfloat cubic_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXY(): Empty instance.", + cimg_instance); + return _cubic_atXY(fx,fy,z,c); + } + + Tfloat _cubic_atXY(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::cut(fx,0,width() - 1), + nfy = cimg::type::is_nan(fy)?0:cimg::cut(fy,0,height() - 1); + const int x = (int)nfx, y = (int)nfy; + const float dx = nfx - x, dy = nfy - y; + const int + px = x - 1<0?0:x - 1, nx = dx<=0?x:x + 1, ax = x + 2>=width()?width() - 1:x + 2, + py = y - 1<0?0:y - 1, ny = dy<=0?y:y + 1, ay = y + 2>=height()?height() - 1:y + 2; + const Tfloat + Ipp = (Tfloat)(*this)(px,py,z,c), Icp = (Tfloat)(*this)(x,py,z,c), Inp = (Tfloat)(*this)(nx,py,z,c), + Iap = (Tfloat)(*this)(ax,py,z,c), + Ip = Icp + 0.5f*(dx*(-Ipp + Inp) + dx*dx*(2*Ipp - 5*Icp + 4*Inp - Iap) + dx*dx*dx*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ipc = (Tfloat)(*this)(px,y,z,c), Icc = (Tfloat)(*this)(x, y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Iac = (Tfloat)(*this)(ax,y,z,c), + Ic = Icc + 0.5f*(dx*(-Ipc + Inc) + dx*dx*(2*Ipc - 5*Icc + 4*Inc - Iac) + dx*dx*dx*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ipn = (Tfloat)(*this)(px,ny,z,c), Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c), + Ian = (Tfloat)(*this)(ax,ny,z,c), + In = Icn + 0.5f*(dx*(-Ipn + Inn) + dx*dx*(2*Ipn - 5*Icn + 4*Inn - Ian) + dx*dx*dx*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ipa = (Tfloat)(*this)(px,ay,z,c), Ica = (Tfloat)(*this)(x,ay,z,c), Ina = (Tfloat)(*this)(nx,ay,z,c), + Iaa = (Tfloat)(*this)(ax,ay,z,c), + Ia = Ica + 0.5f*(dx*(-Ipa + Ina) + dx*dx*(2*Ipa - 5*Ica + 4*Ina - Iaa) + dx*dx*dx*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dy*(-Ip + In) + dy*dy*(2*Ip - 5*Ic + 4*In - Ia) + dy*dy*dy*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y-coordinates. + /** + Similar to cubic_atXY(float,float,int,int) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atXY_c(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(cubic_atXY(fx,fy,z,c)); + } + + T _cubic_atXY_c(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(_cubic_atXY(fx,fy,z,c)); + } + + //! Return pixel value, using cubic interpolation and periodic boundary conditions for the X and Y-coordinates. + Tfloat cubic_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXY_p(): Empty instance.", + cimg_instance); + return _cubic_atXY_p(fx,fy,z,c); + } + + Tfloat _cubic_atXY_p(const float fx, const float fy, const int z=0, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::mod(fx,_width - 0.5f), + nfy = cimg::type::is_nan(fy)?0:cimg::mod(fy,_height - 0.5f); + const int x = (int)nfx, y = (int)nfy; + const float dx = nfx - x, dy = nfy - y; + const int + px = cimg::mod(x - 1,width()), nx = cimg::mod(x + 1,width()), ax = cimg::mod(x + 2,width()), + py = cimg::mod(y - 1,height()), ny = cimg::mod(y + 1,height()), ay = cimg::mod(y + 2,height()); + const Tfloat + Ipp = (Tfloat)(*this)(px,py,z,c), Icp = (Tfloat)(*this)(x,py,z,c), Inp = (Tfloat)(*this)(nx,py,z,c), + Iap = (Tfloat)(*this)(ax,py,z,c), + Ip = Icp + 0.5f*(dx*(-Ipp + Inp) + dx*dx*(2*Ipp - 5*Icp + 4*Inp - Iap) + dx*dx*dx*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ipc = (Tfloat)(*this)(px,y,z,c), Icc = (Tfloat)(*this)(x, y,z,c), Inc = (Tfloat)(*this)(nx,y,z,c), + Iac = (Tfloat)(*this)(ax,y,z,c), + Ic = Icc + 0.5f*(dx*(-Ipc + Inc) + dx*dx*(2*Ipc - 5*Icc + 4*Inc - Iac) + dx*dx*dx*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ipn = (Tfloat)(*this)(px,ny,z,c), Icn = (Tfloat)(*this)(x,ny,z,c), Inn = (Tfloat)(*this)(nx,ny,z,c), + Ian = (Tfloat)(*this)(ax,ny,z,c), + In = Icn + 0.5f*(dx*(-Ipn + Inn) + dx*dx*(2*Ipn - 5*Icn + 4*Inn - Ian) + dx*dx*dx*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ipa = (Tfloat)(*this)(px,ay,z,c), Ica = (Tfloat)(*this)(x,ay,z,c), Ina = (Tfloat)(*this)(nx,ay,z,c), + Iaa = (Tfloat)(*this)(ax,ay,z,c), + Ia = Ica + 0.5f*(dx*(-Ipa + Ina) + dx*dx*(2*Ipa - 5*Ica + 4*Ina - Iaa) + dx*dx*dx*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dy*(-Ip + In) + dy*dy*(2*Ip - 5*Ic + 4*In - Ia) + dy*dy*dy*(-Ip + 3*Ic - 3*In + Ia)); + } + + T cubic_atXY_pc(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(cubic_atXY_p(fx,fy,z,c)); + } + + T _cubic_atXY_pc(const float fx, const float fy, const int z, const int c) const { + return cimg::type::cut(_cubic_atXY_p(fx,fy,z,c)); + } + + //! Return pixel value, using cubic interpolation and Dirichlet boundary conditions for the X,Y and Z-coordinates. + /** + Similar to cubic_atX(float,int,int,int,const T) const, except that the cubic interpolation and boundary checking + are achieved both for X,Y and Z-coordinates. + **/ + Tfloat cubic_atXYZ(const float fx, const float fy, const float fz, const int c, const T& out_value) const { + const int + x = (int)fx - (fx>=0?0:1), px = x - 1, nx = x + 1, ax = x + 2, + y = (int)fy - (fy>=0?0:1), py = y - 1, ny = y + 1, ay = y + 2, + z = (int)fz - (fz>=0?0:1), pz = z - 1, nz = z + 1, az = z + 2; + const float dx = fx - x, dy = fy - y, dz = fz - z; + const Tfloat + Ippp = (Tfloat)atXYZ(px,py,pz,c,out_value), Icpp = (Tfloat)atXYZ(x,py,pz,c,out_value), + Inpp = (Tfloat)atXYZ(nx,py,pz,c,out_value), Iapp = (Tfloat)atXYZ(ax,py,pz,c,out_value), + Ipp = Icpp + 0.5f*(dx*(-Ippp + Inpp) + dx*dx*(2*Ippp - 5*Icpp + 4*Inpp - Iapp) + + dx*dx*dx*(-Ippp + 3*Icpp - 3*Inpp + Iapp)), + Ipcp = (Tfloat)atXYZ(px,y,pz,c,out_value), Iccp = (Tfloat)atXYZ(x, y,pz,c,out_value), + Incp = (Tfloat)atXYZ(nx,y,pz,c,out_value), Iacp = (Tfloat)atXYZ(ax,y,pz,c,out_value), + Icp = Iccp + 0.5f*(dx*(-Ipcp + Incp) + dx*dx*(2*Ipcp - 5*Iccp + 4*Incp - Iacp) + + dx*dx*dx*(-Ipcp + 3*Iccp - 3*Incp + Iacp)), + Ipnp = (Tfloat)atXYZ(px,ny,pz,c,out_value), Icnp = (Tfloat)atXYZ(x,ny,pz,c,out_value), + Innp = (Tfloat)atXYZ(nx,ny,pz,c,out_value), Ianp = (Tfloat)atXYZ(ax,ny,pz,c,out_value), + Inp = Icnp + 0.5f*(dx*(-Ipnp + Innp) + dx*dx*(2*Ipnp - 5*Icnp + 4*Innp - Ianp) + + dx*dx*dx*(-Ipnp + 3*Icnp - 3*Innp + Ianp)), + Ipap = (Tfloat)atXYZ(px,ay,pz,c,out_value), Icap = (Tfloat)atXYZ(x,ay,pz,c,out_value), + Inap = (Tfloat)atXYZ(nx,ay,pz,c,out_value), Iaap = (Tfloat)atXYZ(ax,ay,pz,c,out_value), + Iap = Icap + 0.5f*(dx*(-Ipap + Inap) + dx*dx*(2*Ipap - 5*Icap + 4*Inap - Iaap) + + dx*dx*dx*(-Ipap + 3*Icap - 3*Inap + Iaap)), + Ip = Icp + 0.5f*(dy*(-Ipp + Inp) + dy*dy*(2*Ipp - 5*Icp + 4*Inp - Iap) + + dy*dy*dy*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ippc = (Tfloat)atXYZ(px,py,z,c,out_value), Icpc = (Tfloat)atXYZ(x,py,z,c,out_value), + Inpc = (Tfloat)atXYZ(nx,py,z,c,out_value), Iapc = (Tfloat)atXYZ(ax,py,z,c,out_value), + Ipc = Icpc + 0.5f*(dx*(-Ippc + Inpc) + dx*dx*(2*Ippc - 5*Icpc + 4*Inpc - Iapc) + + dx*dx*dx*(-Ippc + 3*Icpc - 3*Inpc + Iapc)), + Ipcc = (Tfloat)atXYZ(px,y,z,c,out_value), Iccc = (Tfloat)atXYZ(x, y,z,c,out_value), + Incc = (Tfloat)atXYZ(nx,y,z,c,out_value), Iacc = (Tfloat)atXYZ(ax,y,z,c,out_value), + Icc = Iccc + 0.5f*(dx*(-Ipcc + Incc) + dx*dx*(2*Ipcc - 5*Iccc + 4*Incc - Iacc) + + dx*dx*dx*(-Ipcc + 3*Iccc - 3*Incc + Iacc)), + Ipnc = (Tfloat)atXYZ(px,ny,z,c,out_value), Icnc = (Tfloat)atXYZ(x,ny,z,c,out_value), + Innc = (Tfloat)atXYZ(nx,ny,z,c,out_value), Ianc = (Tfloat)atXYZ(ax,ny,z,c,out_value), + Inc = Icnc + 0.5f*(dx*(-Ipnc + Innc) + dx*dx*(2*Ipnc - 5*Icnc + 4*Innc - Ianc) + + dx*dx*dx*(-Ipnc + 3*Icnc - 3*Innc + Ianc)), + Ipac = (Tfloat)atXYZ(px,ay,z,c,out_value), Icac = (Tfloat)atXYZ(x,ay,z,c,out_value), + Inac = (Tfloat)atXYZ(nx,ay,z,c,out_value), Iaac = (Tfloat)atXYZ(ax,ay,z,c,out_value), + Iac = Icac + 0.5f*(dx*(-Ipac + Inac) + dx*dx*(2*Ipac - 5*Icac + 4*Inac - Iaac) + + dx*dx*dx*(-Ipac + 3*Icac - 3*Inac + Iaac)), + Ic = Icc + 0.5f*(dy*(-Ipc + Inc) + dy*dy*(2*Ipc - 5*Icc + 4*Inc - Iac) + + dy*dy*dy*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ippn = (Tfloat)atXYZ(px,py,nz,c,out_value), Icpn = (Tfloat)atXYZ(x,py,nz,c,out_value), + Inpn = (Tfloat)atXYZ(nx,py,nz,c,out_value), Iapn = (Tfloat)atXYZ(ax,py,nz,c,out_value), + Ipn = Icpn + 0.5f*(dx*(-Ippn + Inpn) + dx*dx*(2*Ippn - 5*Icpn + 4*Inpn - Iapn) + + dx*dx*dx*(-Ippn + 3*Icpn - 3*Inpn + Iapn)), + Ipcn = (Tfloat)atXYZ(px,y,nz,c,out_value), Iccn = (Tfloat)atXYZ(x, y,nz,c,out_value), + Incn = (Tfloat)atXYZ(nx,y,nz,c,out_value), Iacn = (Tfloat)atXYZ(ax,y,nz,c,out_value), + Icn = Iccn + 0.5f*(dx*(-Ipcn + Incn) + dx*dx*(2*Ipcn - 5*Iccn + 4*Incn - Iacn) + + dx*dx*dx*(-Ipcn + 3*Iccn - 3*Incn + Iacn)), + Ipnn = (Tfloat)atXYZ(px,ny,nz,c,out_value), Icnn = (Tfloat)atXYZ(x,ny,nz,c,out_value), + Innn = (Tfloat)atXYZ(nx,ny,nz,c,out_value), Iann = (Tfloat)atXYZ(ax,ny,nz,c,out_value), + Inn = Icnn + 0.5f*(dx*(-Ipnn + Innn) + dx*dx*(2*Ipnn - 5*Icnn + 4*Innn - Iann) + + dx*dx*dx*(-Ipnn + 3*Icnn - 3*Innn + Iann)), + Ipan = (Tfloat)atXYZ(px,ay,nz,c,out_value), Ican = (Tfloat)atXYZ(x,ay,nz,c,out_value), + Inan = (Tfloat)atXYZ(nx,ay,nz,c,out_value), Iaan = (Tfloat)atXYZ(ax,ay,nz,c,out_value), + Ian = Ican + 0.5f*(dx*(-Ipan + Inan) + dx*dx*(2*Ipan - 5*Ican + 4*Inan - Iaan) + + dx*dx*dx*(-Ipan + 3*Ican - 3*Inan + Iaan)), + In = Icn + 0.5f*(dy*(-Ipn + Inn) + dy*dy*(2*Ipn - 5*Icn + 4*Inn - Ian) + + dy*dy*dy*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ippa = (Tfloat)atXYZ(px,py,az,c,out_value), Icpa = (Tfloat)atXYZ(x,py,az,c,out_value), + Inpa = (Tfloat)atXYZ(nx,py,az,c,out_value), Iapa = (Tfloat)atXYZ(ax,py,az,c,out_value), + Ipa = Icpa + 0.5f*(dx*(-Ippa + Inpa) + dx*dx*(2*Ippa - 5*Icpa + 4*Inpa - Iapa) + + dx*dx*dx*(-Ippa + 3*Icpa - 3*Inpa + Iapa)), + Ipca = (Tfloat)atXYZ(px,y,az,c,out_value), Icca = (Tfloat)atXYZ(x, y,az,c,out_value), + Inca = (Tfloat)atXYZ(nx,y,az,c,out_value), Iaca = (Tfloat)atXYZ(ax,y,az,c,out_value), + Ica = Icca + 0.5f*(dx*(-Ipca + Inca) + dx*dx*(2*Ipca - 5*Icca + 4*Inca - Iaca) + + dx*dx*dx*(-Ipca + 3*Icca - 3*Inca + Iaca)), + Ipna = (Tfloat)atXYZ(px,ny,az,c,out_value), Icna = (Tfloat)atXYZ(x,ny,az,c,out_value), + Inna = (Tfloat)atXYZ(nx,ny,az,c,out_value), Iana = (Tfloat)atXYZ(ax,ny,az,c,out_value), + Ina = Icna + 0.5f*(dx*(-Ipna + Inna) + dx*dx*(2*Ipna - 5*Icna + 4*Inna - Iana) + + dx*dx*dx*(-Ipna + 3*Icna - 3*Inna + Iana)), + Ipaa = (Tfloat)atXYZ(px,ay,az,c,out_value), Icaa = (Tfloat)atXYZ(x,ay,az,c,out_value), + Inaa = (Tfloat)atXYZ(nx,ay,az,c,out_value), Iaaa = (Tfloat)atXYZ(ax,ay,az,c,out_value), + Iaa = Icaa + 0.5f*(dx*(-Ipaa + Inaa) + dx*dx*(2*Ipaa - 5*Icaa + 4*Inaa - Iaaa) + + dx*dx*dx*(-Ipaa + 3*Icaa - 3*Inaa + Iaaa)), + Ia = Ica + 0.5f*(dy*(-Ipa + Ina) + dy*dy*(2*Ipa - 5*Ica + 4*Ina - Iaa) + + dy*dy*dy*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dz*(-Ip + In) + dz*dz*(2*Ip - 5*Ic + 4*In - Ia) + dz*dz*dz*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Dirichlet boundary conditions for the XYZ-coordinates. + /** + Similar to cubic_atXYZ(float,float,float,int,const T) const, except that the return value is clamped to stay + in the min/max range of the datatype \c T. + **/ + T cubic_atXYZ_c(const float fx, const float fy, const float fz, const int c, const T& out_value) const { + return cimg::type::cut(cubic_atXYZ(fx,fy,fz,c,out_value)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking + are achieved both for X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atXYZ(float,float,float,int). + **/ + Tfloat cubic_atXYZ(const float fx, const float fy, const float fz, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXYZ(): Empty instance.", + cimg_instance); + return _cubic_atXYZ(fx,fy,fz,c); + } + + Tfloat _cubic_atXYZ(const float fx, const float fy, const float fz, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::cut(fx,0,width() - 1), + nfy = cimg::type::is_nan(fy)?0:cimg::cut(fy,0,height() - 1), + nfz = cimg::type::is_nan(fz)?0:cimg::cut(fz,0,depth() - 1); + const int x = (int)nfx, y = (int)nfy, z = (int)nfz; + const float dx = nfx - x, dy = nfy - y, dz = nfz - z; + const int + px = x - 1<0?0:x - 1, nx = dx>0?x + 1:x, ax = x + 2>=width()?width() - 1:x + 2, + py = y - 1<0?0:y - 1, ny = dy>0?y + 1:y, ay = y + 2>=height()?height() - 1:y + 2, + pz = z - 1<0?0:z - 1, nz = dz>0?z + 1:z, az = z + 2>=depth()?depth() - 1:z + 2; + const Tfloat + Ippp = (Tfloat)(*this)(px,py,pz,c), Icpp = (Tfloat)(*this)(x,py,pz,c), + Inpp = (Tfloat)(*this)(nx,py,pz,c), Iapp = (Tfloat)(*this)(ax,py,pz,c), + Ipp = Icpp + 0.5f*(dx*(-Ippp + Inpp) + dx*dx*(2*Ippp - 5*Icpp + 4*Inpp - Iapp) + + dx*dx*dx*(-Ippp + 3*Icpp - 3*Inpp + Iapp)), + Ipcp = (Tfloat)(*this)(px,y,pz,c), Iccp = (Tfloat)(*this)(x, y,pz,c), + Incp = (Tfloat)(*this)(nx,y,pz,c), Iacp = (Tfloat)(*this)(ax,y,pz,c), + Icp = Iccp + 0.5f*(dx*(-Ipcp + Incp) + dx*dx*(2*Ipcp - 5*Iccp + 4*Incp - Iacp) + + dx*dx*dx*(-Ipcp + 3*Iccp - 3*Incp + Iacp)), + Ipnp = (Tfloat)(*this)(px,ny,pz,c), Icnp = (Tfloat)(*this)(x,ny,pz,c), + Innp = (Tfloat)(*this)(nx,ny,pz,c), Ianp = (Tfloat)(*this)(ax,ny,pz,c), + Inp = Icnp + 0.5f*(dx*(-Ipnp + Innp) + dx*dx*(2*Ipnp - 5*Icnp + 4*Innp - Ianp) + + dx*dx*dx*(-Ipnp + 3*Icnp - 3*Innp + Ianp)), + Ipap = (Tfloat)(*this)(px,ay,pz,c), Icap = (Tfloat)(*this)(x,ay,pz,c), + Inap = (Tfloat)(*this)(nx,ay,pz,c), Iaap = (Tfloat)(*this)(ax,ay,pz,c), + Iap = Icap + 0.5f*(dx*(-Ipap + Inap) + dx*dx*(2*Ipap - 5*Icap + 4*Inap - Iaap) + + dx*dx*dx*(-Ipap + 3*Icap - 3*Inap + Iaap)), + Ip = Icp + 0.5f*(dy*(-Ipp + Inp) + dy*dy*(2*Ipp - 5*Icp + 4*Inp - Iap) + + dy*dy*dy*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ippc = (Tfloat)(*this)(px,py,z,c), Icpc = (Tfloat)(*this)(x,py,z,c), + Inpc = (Tfloat)(*this)(nx,py,z,c), Iapc = (Tfloat)(*this)(ax,py,z,c), + Ipc = Icpc + 0.5f*(dx*(-Ippc + Inpc) + dx*dx*(2*Ippc - 5*Icpc + 4*Inpc - Iapc) + + dx*dx*dx*(-Ippc + 3*Icpc - 3*Inpc + Iapc)), + Ipcc = (Tfloat)(*this)(px,y,z,c), Iccc = (Tfloat)(*this)(x, y,z,c), + Incc = (Tfloat)(*this)(nx,y,z,c), Iacc = (Tfloat)(*this)(ax,y,z,c), + Icc = Iccc + 0.5f*(dx*(-Ipcc + Incc) + dx*dx*(2*Ipcc - 5*Iccc + 4*Incc - Iacc) + + dx*dx*dx*(-Ipcc + 3*Iccc - 3*Incc + Iacc)), + Ipnc = (Tfloat)(*this)(px,ny,z,c), Icnc = (Tfloat)(*this)(x,ny,z,c), + Innc = (Tfloat)(*this)(nx,ny,z,c), Ianc = (Tfloat)(*this)(ax,ny,z,c), + Inc = Icnc + 0.5f*(dx*(-Ipnc + Innc) + dx*dx*(2*Ipnc - 5*Icnc + 4*Innc - Ianc) + + dx*dx*dx*(-Ipnc + 3*Icnc - 3*Innc + Ianc)), + Ipac = (Tfloat)(*this)(px,ay,z,c), Icac = (Tfloat)(*this)(x,ay,z,c), + Inac = (Tfloat)(*this)(nx,ay,z,c), Iaac = (Tfloat)(*this)(ax,ay,z,c), + Iac = Icac + 0.5f*(dx*(-Ipac + Inac) + dx*dx*(2*Ipac - 5*Icac + 4*Inac - Iaac) + + dx*dx*dx*(-Ipac + 3*Icac - 3*Inac + Iaac)), + Ic = Icc + 0.5f*(dy*(-Ipc + Inc) + dy*dy*(2*Ipc - 5*Icc + 4*Inc - Iac) + + dy*dy*dy*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ippn = (Tfloat)(*this)(px,py,nz,c), Icpn = (Tfloat)(*this)(x,py,nz,c), + Inpn = (Tfloat)(*this)(nx,py,nz,c), Iapn = (Tfloat)(*this)(ax,py,nz,c), + Ipn = Icpn + 0.5f*(dx*(-Ippn + Inpn) + dx*dx*(2*Ippn - 5*Icpn + 4*Inpn - Iapn) + + dx*dx*dx*(-Ippn + 3*Icpn - 3*Inpn + Iapn)), + Ipcn = (Tfloat)(*this)(px,y,nz,c), Iccn = (Tfloat)(*this)(x, y,nz,c), + Incn = (Tfloat)(*this)(nx,y,nz,c), Iacn = (Tfloat)(*this)(ax,y,nz,c), + Icn = Iccn + 0.5f*(dx*(-Ipcn + Incn) + dx*dx*(2*Ipcn - 5*Iccn + 4*Incn - Iacn) + + dx*dx*dx*(-Ipcn + 3*Iccn - 3*Incn + Iacn)), + Ipnn = (Tfloat)(*this)(px,ny,nz,c), Icnn = (Tfloat)(*this)(x,ny,nz,c), + Innn = (Tfloat)(*this)(nx,ny,nz,c), Iann = (Tfloat)(*this)(ax,ny,nz,c), + Inn = Icnn + 0.5f*(dx*(-Ipnn + Innn) + dx*dx*(2*Ipnn - 5*Icnn + 4*Innn - Iann) + + dx*dx*dx*(-Ipnn + 3*Icnn - 3*Innn + Iann)), + Ipan = (Tfloat)(*this)(px,ay,nz,c), Ican = (Tfloat)(*this)(x,ay,nz,c), + Inan = (Tfloat)(*this)(nx,ay,nz,c), Iaan = (Tfloat)(*this)(ax,ay,nz,c), + Ian = Ican + 0.5f*(dx*(-Ipan + Inan) + dx*dx*(2*Ipan - 5*Ican + 4*Inan - Iaan) + + dx*dx*dx*(-Ipan + 3*Ican - 3*Inan + Iaan)), + In = Icn + 0.5f*(dy*(-Ipn + Inn) + dy*dy*(2*Ipn - 5*Icn + 4*Inn - Ian) + + dy*dy*dy*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ippa = (Tfloat)(*this)(px,py,az,c), Icpa = (Tfloat)(*this)(x,py,az,c), + Inpa = (Tfloat)(*this)(nx,py,az,c), Iapa = (Tfloat)(*this)(ax,py,az,c), + Ipa = Icpa + 0.5f*(dx*(-Ippa + Inpa) + dx*dx*(2*Ippa - 5*Icpa + 4*Inpa - Iapa) + + dx*dx*dx*(-Ippa + 3*Icpa - 3*Inpa + Iapa)), + Ipca = (Tfloat)(*this)(px,y,az,c), Icca = (Tfloat)(*this)(x, y,az,c), + Inca = (Tfloat)(*this)(nx,y,az,c), Iaca = (Tfloat)(*this)(ax,y,az,c), + Ica = Icca + 0.5f*(dx*(-Ipca + Inca) + dx*dx*(2*Ipca - 5*Icca + 4*Inca - Iaca) + + dx*dx*dx*(-Ipca + 3*Icca - 3*Inca + Iaca)), + Ipna = (Tfloat)(*this)(px,ny,az,c), Icna = (Tfloat)(*this)(x,ny,az,c), + Inna = (Tfloat)(*this)(nx,ny,az,c), Iana = (Tfloat)(*this)(ax,ny,az,c), + Ina = Icna + 0.5f*(dx*(-Ipna + Inna) + dx*dx*(2*Ipna - 5*Icna + 4*Inna - Iana) + + dx*dx*dx*(-Ipna + 3*Icna - 3*Inna + Iana)), + Ipaa = (Tfloat)(*this)(px,ay,az,c), Icaa = (Tfloat)(*this)(x,ay,az,c), + Inaa = (Tfloat)(*this)(nx,ay,az,c), Iaaa = (Tfloat)(*this)(ax,ay,az,c), + Iaa = Icaa + 0.5f*(dx*(-Ipaa + Inaa) + dx*dx*(2*Ipaa - 5*Icaa + 4*Inaa - Iaaa) + + dx*dx*dx*(-Ipaa + 3*Icaa - 3*Inaa + Iaaa)), + Ia = Ica + 0.5f*(dy*(-Ipa + Ina) + dy*dy*(2*Ipa - 5*Ica + 4*Ina - Iaa) + + dy*dy*dy*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dz*(-Ip + In) + dz*dz*(2*Ip - 5*Ic + 4*In - Ia) + dz*dz*dz*(-Ip + 3*Ic - 3*In + Ia)); + } + + //! Return clamped pixel value, using cubic interpolation and Neumann boundary conditions for the XYZ-coordinates. + /** + Similar to cubic_atXYZ(float,float,float,int) const, except that the return value is clamped to stay in the + min/max range of the datatype \c T. + **/ + T cubic_atXYZ_c(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(cubic_atXYZ(fx,fy,fz,c)); + } + + T _cubic_atXYZ_c(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(_cubic_atXYZ(fx,fy,fz,c)); + } + + //! Return pixel value, using cubic interpolation and Neumann boundary conditions for the X,Y and Z-coordinates. + /** + Similar to cubic_atX(float,int,int,int) const, except that the cubic interpolation and boundary checking + are achieved both for X,Y and Z-coordinates. + \note + - If you know your image instance is \e not empty, you may rather use the slightly faster method + \c _cubic_atXYZ(float,float,float,int). + **/ + Tfloat cubic_atXYZ_p(const float fx, const float fy, const float fz, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "cubic_atXYZ_p(): Empty instance.", + cimg_instance); + return _cubic_atXYZ_p(fx,fy,fz,c); + } + + Tfloat _cubic_atXYZ_p(const float fx, const float fy, const float fz, const int c=0) const { + const float + nfx = cimg::type::is_nan(fx)?0:cimg::mod(fx,_width - 0.5f), + nfy = cimg::type::is_nan(fy)?0:cimg::mod(fy,_height - 0.5f), + nfz = cimg::type::is_nan(fz)?0:cimg::mod(fz,_depth - 0.5f); + const int x = (int)nfx, y = (int)nfy, z = (int)nfz; + const float dx = nfx - x, dy = nfy - y, dz = nfz - z; + const int + px = cimg::mod(x - 1,width()), nx = cimg::mod(x + 1,width()), ax = cimg::mod(x + 2,width()), + py = cimg::mod(y - 1,height()), ny = cimg::mod(y + 1,height()), ay = cimg::mod(y + 2,height()), + pz = cimg::mod(z - 1,depth()), nz = cimg::mod(z + 1,depth()), az = cimg::mod(z + 2,depth()); + const Tfloat + Ippp = (Tfloat)(*this)(px,py,pz,c), Icpp = (Tfloat)(*this)(x,py,pz,c), + Inpp = (Tfloat)(*this)(nx,py,pz,c), Iapp = (Tfloat)(*this)(ax,py,pz,c), + Ipp = Icpp + 0.5f*(dx*(-Ippp + Inpp) + dx*dx*(2*Ippp - 5*Icpp + 4*Inpp - Iapp) + + dx*dx*dx*(-Ippp + 3*Icpp - 3*Inpp + Iapp)), + Ipcp = (Tfloat)(*this)(px,y,pz,c), Iccp = (Tfloat)(*this)(x, y,pz,c), + Incp = (Tfloat)(*this)(nx,y,pz,c), Iacp = (Tfloat)(*this)(ax,y,pz,c), + Icp = Iccp + 0.5f*(dx*(-Ipcp + Incp) + dx*dx*(2*Ipcp - 5*Iccp + 4*Incp - Iacp) + + dx*dx*dx*(-Ipcp + 3*Iccp - 3*Incp + Iacp)), + Ipnp = (Tfloat)(*this)(px,ny,pz,c), Icnp = (Tfloat)(*this)(x,ny,pz,c), + Innp = (Tfloat)(*this)(nx,ny,pz,c), Ianp = (Tfloat)(*this)(ax,ny,pz,c), + Inp = Icnp + 0.5f*(dx*(-Ipnp + Innp) + dx*dx*(2*Ipnp - 5*Icnp + 4*Innp - Ianp) + + dx*dx*dx*(-Ipnp + 3*Icnp - 3*Innp + Ianp)), + Ipap = (Tfloat)(*this)(px,ay,pz,c), Icap = (Tfloat)(*this)(x,ay,pz,c), + Inap = (Tfloat)(*this)(nx,ay,pz,c), Iaap = (Tfloat)(*this)(ax,ay,pz,c), + Iap = Icap + 0.5f*(dx*(-Ipap + Inap) + dx*dx*(2*Ipap - 5*Icap + 4*Inap - Iaap) + + dx*dx*dx*(-Ipap + 3*Icap - 3*Inap + Iaap)), + Ip = Icp + 0.5f*(dy*(-Ipp + Inp) + dy*dy*(2*Ipp - 5*Icp + 4*Inp - Iap) + + dy*dy*dy*(-Ipp + 3*Icp - 3*Inp + Iap)), + Ippc = (Tfloat)(*this)(px,py,z,c), Icpc = (Tfloat)(*this)(x,py,z,c), + Inpc = (Tfloat)(*this)(nx,py,z,c), Iapc = (Tfloat)(*this)(ax,py,z,c), + Ipc = Icpc + 0.5f*(dx*(-Ippc + Inpc) + dx*dx*(2*Ippc - 5*Icpc + 4*Inpc - Iapc) + + dx*dx*dx*(-Ippc + 3*Icpc - 3*Inpc + Iapc)), + Ipcc = (Tfloat)(*this)(px,y,z,c), Iccc = (Tfloat)(*this)(x, y,z,c), + Incc = (Tfloat)(*this)(nx,y,z,c), Iacc = (Tfloat)(*this)(ax,y,z,c), + Icc = Iccc + 0.5f*(dx*(-Ipcc + Incc) + dx*dx*(2*Ipcc - 5*Iccc + 4*Incc - Iacc) + + dx*dx*dx*(-Ipcc + 3*Iccc - 3*Incc + Iacc)), + Ipnc = (Tfloat)(*this)(px,ny,z,c), Icnc = (Tfloat)(*this)(x,ny,z,c), + Innc = (Tfloat)(*this)(nx,ny,z,c), Ianc = (Tfloat)(*this)(ax,ny,z,c), + Inc = Icnc + 0.5f*(dx*(-Ipnc + Innc) + dx*dx*(2*Ipnc - 5*Icnc + 4*Innc - Ianc) + + dx*dx*dx*(-Ipnc + 3*Icnc - 3*Innc + Ianc)), + Ipac = (Tfloat)(*this)(px,ay,z,c), Icac = (Tfloat)(*this)(x,ay,z,c), + Inac = (Tfloat)(*this)(nx,ay,z,c), Iaac = (Tfloat)(*this)(ax,ay,z,c), + Iac = Icac + 0.5f*(dx*(-Ipac + Inac) + dx*dx*(2*Ipac - 5*Icac + 4*Inac - Iaac) + + dx*dx*dx*(-Ipac + 3*Icac - 3*Inac + Iaac)), + Ic = Icc + 0.5f*(dy*(-Ipc + Inc) + dy*dy*(2*Ipc - 5*Icc + 4*Inc - Iac) + + dy*dy*dy*(-Ipc + 3*Icc - 3*Inc + Iac)), + Ippn = (Tfloat)(*this)(px,py,nz,c), Icpn = (Tfloat)(*this)(x,py,nz,c), + Inpn = (Tfloat)(*this)(nx,py,nz,c), Iapn = (Tfloat)(*this)(ax,py,nz,c), + Ipn = Icpn + 0.5f*(dx*(-Ippn + Inpn) + dx*dx*(2*Ippn - 5*Icpn + 4*Inpn - Iapn) + + dx*dx*dx*(-Ippn + 3*Icpn - 3*Inpn + Iapn)), + Ipcn = (Tfloat)(*this)(px,y,nz,c), Iccn = (Tfloat)(*this)(x, y,nz,c), + Incn = (Tfloat)(*this)(nx,y,nz,c), Iacn = (Tfloat)(*this)(ax,y,nz,c), + Icn = Iccn + 0.5f*(dx*(-Ipcn + Incn) + dx*dx*(2*Ipcn - 5*Iccn + 4*Incn - Iacn) + + dx*dx*dx*(-Ipcn + 3*Iccn - 3*Incn + Iacn)), + Ipnn = (Tfloat)(*this)(px,ny,nz,c), Icnn = (Tfloat)(*this)(x,ny,nz,c), + Innn = (Tfloat)(*this)(nx,ny,nz,c), Iann = (Tfloat)(*this)(ax,ny,nz,c), + Inn = Icnn + 0.5f*(dx*(-Ipnn + Innn) + dx*dx*(2*Ipnn - 5*Icnn + 4*Innn - Iann) + + dx*dx*dx*(-Ipnn + 3*Icnn - 3*Innn + Iann)), + Ipan = (Tfloat)(*this)(px,ay,nz,c), Ican = (Tfloat)(*this)(x,ay,nz,c), + Inan = (Tfloat)(*this)(nx,ay,nz,c), Iaan = (Tfloat)(*this)(ax,ay,nz,c), + Ian = Ican + 0.5f*(dx*(-Ipan + Inan) + dx*dx*(2*Ipan - 5*Ican + 4*Inan - Iaan) + + dx*dx*dx*(-Ipan + 3*Ican - 3*Inan + Iaan)), + In = Icn + 0.5f*(dy*(-Ipn + Inn) + dy*dy*(2*Ipn - 5*Icn + 4*Inn - Ian) + + dy*dy*dy*(-Ipn + 3*Icn - 3*Inn + Ian)), + Ippa = (Tfloat)(*this)(px,py,az,c), Icpa = (Tfloat)(*this)(x,py,az,c), + Inpa = (Tfloat)(*this)(nx,py,az,c), Iapa = (Tfloat)(*this)(ax,py,az,c), + Ipa = Icpa + 0.5f*(dx*(-Ippa + Inpa) + dx*dx*(2*Ippa - 5*Icpa + 4*Inpa - Iapa) + + dx*dx*dx*(-Ippa + 3*Icpa - 3*Inpa + Iapa)), + Ipca = (Tfloat)(*this)(px,y,az,c), Icca = (Tfloat)(*this)(x, y,az,c), + Inca = (Tfloat)(*this)(nx,y,az,c), Iaca = (Tfloat)(*this)(ax,y,az,c), + Ica = Icca + 0.5f*(dx*(-Ipca + Inca) + dx*dx*(2*Ipca - 5*Icca + 4*Inca - Iaca) + + dx*dx*dx*(-Ipca + 3*Icca - 3*Inca + Iaca)), + Ipna = (Tfloat)(*this)(px,ny,az,c), Icna = (Tfloat)(*this)(x,ny,az,c), + Inna = (Tfloat)(*this)(nx,ny,az,c), Iana = (Tfloat)(*this)(ax,ny,az,c), + Ina = Icna + 0.5f*(dx*(-Ipna + Inna) + dx*dx*(2*Ipna - 5*Icna + 4*Inna - Iana) + + dx*dx*dx*(-Ipna + 3*Icna - 3*Inna + Iana)), + Ipaa = (Tfloat)(*this)(px,ay,az,c), Icaa = (Tfloat)(*this)(x,ay,az,c), + Inaa = (Tfloat)(*this)(nx,ay,az,c), Iaaa = (Tfloat)(*this)(ax,ay,az,c), + Iaa = Icaa + 0.5f*(dx*(-Ipaa + Inaa) + dx*dx*(2*Ipaa - 5*Icaa + 4*Inaa - Iaaa) + + dx*dx*dx*(-Ipaa + 3*Icaa - 3*Inaa + Iaaa)), + Ia = Ica + 0.5f*(dy*(-Ipa + Ina) + dy*dy*(2*Ipa - 5*Ica + 4*Ina - Iaa) + + dy*dy*dy*(-Ipa + 3*Ica - 3*Ina + Iaa)); + return Ic + 0.5f*(dz*(-Ip + In) + dz*dz*(2*Ip - 5*Ic + 4*In - Ia) + dz*dz*dz*(-Ip + 3*Ic - 3*In + Ia)); + } + + T cubic_atXYZ_pc(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(cubic_atXYZ_p(fx,fy,fz,c)); + } + + T _cubic_atXYZ_pc(const float fx, const float fy, const float fz, const int c) const { + return cimg::type::cut(_cubic_atXYZ_p(fx,fy,fz,c)); + } + + //! Set pixel value, using linear interpolation for the X-coordinates. + /** + Set pixel value at specified coordinates (\c fx,\c y,\c z,\c c) in the image instance, in a way that + the value is spread amongst several neighbors if the pixel coordinates are float-valued. + \param value Pixel value to set. + \param fx X-coordinate of the pixel value (float-valued). + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param is_added Tells if the pixel value is added to (\c true), or simply replace (\c false) the current image + pixel(s). + \return A reference to the current image instance. + \note + - Calling this method with out-of-bounds coordinates does nothing. + **/ + CImg& set_linear_atX(const T& value, const float fx, const int y=0, const int z=0, const int c=0, + const bool is_added=false) { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1; + const float + dx = fx - x; + if (y>=0 && y=0 && z=0 && c=0 && x=0 && nx& set_linear_atXY(const T& value, const float fx, const float fy=0, const int z=0, const int c=0, + const bool is_added=false) { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1; + const float + dx = fx - x, + dy = fy - y; + if (z>=0 && z=0 && c=0 && y=0 && x=0 && nx=0 && ny=0 && x=0 && nx& set_linear_atXYZ(const T& value, const float fx, const float fy=0, const float fz=0, const int c=0, + const bool is_added=false) { + const int + x = (int)fx - (fx>=0?0:1), nx = x + 1, + y = (int)fy - (fy>=0?0:1), ny = y + 1, + z = (int)fz - (fz>=0?0:1), nz = z + 1; + const float + dx = fx - x, + dy = fy - y, + dz = fz - z; + if (c>=0 && c=0 && z=0 && y=0 && x=0 && nx=0 && ny=0 && x=0 && nx=0 && nz=0 && y=0 && x=0 && nx=0 && ny=0 && x=0 && nx image whose buffer data() is a \c char* string describing the list of all pixel values + of the image instance (written in base 10), separated by specified \c separator character. + \param separator A \c char character which specifies the separator between values in the returned C-string. + \param max_size Maximum size of the returned image (or \c 0 if no limits are set). + \param format For float/double-values, tell the printf format used to generate the text representation + of the numbers (or \c 0 for default representation). + \note + - The returned image is never empty. + - For an empty image instance, the returned string is "". + - If \c max_size is equal to \c 0, there are no limits on the size of the returned string. + - Otherwise, if the maximum number of string characters is exceeded, the value string is cut off + and terminated by character \c '\0'. In that case, the returned image size is max_size + 1. + **/ + CImg value_string(const char separator=',', const unsigned int max_size=0, + const char *const format=0) const { + if (is_empty() || max_size==1) return CImg(1,1,1,1,0); + CImgList items; + CImg s_item(256); *s_item = 0; + const T *ptrs = _data; + unsigned int string_size = 0; + const char *const _format = format?format:cimg::type::format(); + for (ulongT off = 0, siz = size(); off::format(*(ptrs++))); + CImg item(s_item._data,printed_size); + item[printed_size - 1] = separator; + item.move_to(items); + if (max_size) string_size+=printed_size; + } + CImg res; + (items>'x').move_to(res); + if (max_size && res._width>=max_size) res.crop(0,max_size - 1); + res.back() = 0; + return res; + } + + //@} + //------------------------------------- + // + //! \name Instance Checking + //@{ + //------------------------------------- + + //! Test shared state of the pixel buffer. + /** + Return \c true if image instance has a shared memory buffer, and \c false otherwise. + \note + - A shared image do not own his pixel buffer data() and will not deallocate it on destruction. + - Most of the time, a \c CImg image instance will \e not be shared. + - A shared image can only be obtained by a limited set of constructors and methods (see list below). + **/ + bool is_shared() const { + return _is_shared; + } + + //! Test if image instance is empty. + /** + Return \c true, if image instance is empty, i.e. does \e not contain any pixel values, has dimensions + \c 0 x \c 0 x \c 0 x \c 0 and a pixel buffer pointer set to \c 0 (null pointer), and \c false otherwise. + **/ + bool is_empty() const { + return !(_data && _width && _height && _depth && _spectrum); + } + + //! Test if image instance contains a 'inf' value. + /** + Return \c true, if image instance contains a 'inf' value, and \c false otherwise. + **/ + bool is_inf() const { + if (cimg::type::is_float()) cimg_for(*this,p,T) if (cimg::type::is_inf((float)*p)) return true; + return false; + } + + //! Test if image instance contains a NaN value. + /** + Return \c true, if image instance contains a NaN value, and \c false otherwise. + **/ + bool is_nan() const { + if (cimg::type::is_float()) cimg_for(*this,p,T) if (cimg::type::is_nan((float)*p)) return true; + return false; + } + + //! Test if image width is equal to specified value. + bool is_sameX(const unsigned int size_x) const { + return _width==size_x; + } + + //! Test if image width is equal to specified value. + template + bool is_sameX(const CImg& img) const { + return is_sameX(img._width); + } + + //! Test if image width is equal to specified value. + bool is_sameX(const CImgDisplay& disp) const { + return is_sameX(disp._width); + } + + //! Test if image height is equal to specified value. + bool is_sameY(const unsigned int size_y) const { + return _height==size_y; + } + + //! Test if image height is equal to specified value. + template + bool is_sameY(const CImg& img) const { + return is_sameY(img._height); + } + + //! Test if image height is equal to specified value. + bool is_sameY(const CImgDisplay& disp) const { + return is_sameY(disp._height); + } + + //! Test if image depth is equal to specified value. + bool is_sameZ(const unsigned int size_z) const { + return _depth==size_z; + } + + //! Test if image depth is equal to specified value. + template + bool is_sameZ(const CImg& img) const { + return is_sameZ(img._depth); + } + + //! Test if image spectrum is equal to specified value. + bool is_sameC(const unsigned int size_c) const { + return _spectrum==size_c; + } + + //! Test if image spectrum is equal to specified value. + template + bool is_sameC(const CImg& img) const { + return is_sameC(img._spectrum); + } + + //! Test if image width and height are equal to specified values. + /** + Test if is_sameX(unsigned int) const and is_sameY(unsigned int) const are both verified. + **/ + bool is_sameXY(const unsigned int size_x, const unsigned int size_y) const { + return _width==size_x && _height==size_y; + } + + //! Test if image width and height are the same as that of another image. + /** + Test if is_sameX(const CImg&) const and is_sameY(const CImg&) const are both verified. + **/ + template + bool is_sameXY(const CImg& img) const { + return is_sameXY(img._width,img._height); + } + + //! Test if image width and height are the same as that of an existing display window. + /** + Test if is_sameX(const CImgDisplay&) const and is_sameY(const CImgDisplay&) const are both verified. + **/ + bool is_sameXY(const CImgDisplay& disp) const { + return is_sameXY(disp._width,disp._height); + } + + //! Test if image width and depth are equal to specified values. + /** + Test if is_sameX(unsigned int) const and is_sameZ(unsigned int) const are both verified. + **/ + bool is_sameXZ(const unsigned int size_x, const unsigned int size_z) const { + return _width==size_x && _depth==size_z; + } + + //! Test if image width and depth are the same as that of another image. + /** + Test if is_sameX(const CImg&) const and is_sameZ(const CImg&) const are both verified. + **/ + template + bool is_sameXZ(const CImg& img) const { + return is_sameXZ(img._width,img._depth); + } + + //! Test if image width and spectrum are equal to specified values. + /** + Test if is_sameX(unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameXC(const unsigned int size_x, const unsigned int size_c) const { + return _width==size_x && _spectrum==size_c; + } + + //! Test if image width and spectrum are the same as that of another image. + /** + Test if is_sameX(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXC(const CImg& img) const { + return is_sameXC(img._width,img._spectrum); + } + + //! Test if image height and depth are equal to specified values. + /** + Test if is_sameY(unsigned int) const and is_sameZ(unsigned int) const are both verified. + **/ + bool is_sameYZ(const unsigned int size_y, const unsigned int size_z) const { + return _height==size_y && _depth==size_z; + } + + //! Test if image height and depth are the same as that of another image. + /** + Test if is_sameY(const CImg&) const and is_sameZ(const CImg&) const are both verified. + **/ + template + bool is_sameYZ(const CImg& img) const { + return is_sameYZ(img._height,img._depth); + } + + //! Test if image height and spectrum are equal to specified values. + /** + Test if is_sameY(unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameYC(const unsigned int size_y, const unsigned int size_c) const { + return _height==size_y && _spectrum==size_c; + } + + //! Test if image height and spectrum are the same as that of another image. + /** + Test if is_sameY(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameYC(const CImg& img) const { + return is_sameYC(img._height,img._spectrum); + } + + //! Test if image depth and spectrum are equal to specified values. + /** + Test if is_sameZ(unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameZC(const unsigned int size_z, const unsigned int size_c) const { + return _depth==size_z && _spectrum==size_c; + } + + //! Test if image depth and spectrum are the same as that of another image. + /** + Test if is_sameZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameZC(const CImg& img) const { + return is_sameZC(img._depth,img._spectrum); + } + + //! Test if image width, height and depth are equal to specified values. + /** + Test if is_sameXY(unsigned int,unsigned int) const and is_sameZ(unsigned int) const are both verified. + **/ + bool is_sameXYZ(const unsigned int size_x, const unsigned int size_y, const unsigned int size_z) const { + return is_sameXY(size_x,size_y) && _depth==size_z; + } + + //! Test if image width, height and depth are the same as that of another image. + /** + Test if is_sameXY(const CImg&) const and is_sameZ(const CImg&) const are both verified. + **/ + template + bool is_sameXYZ(const CImg& img) const { + return is_sameXYZ(img._width,img._height,img._depth); + } + + //! Test if image width, height and spectrum are equal to specified values. + /** + Test if is_sameXY(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameXYC(const unsigned int size_x, const unsigned int size_y, const unsigned int size_c) const { + return is_sameXY(size_x,size_y) && _spectrum==size_c; + } + + //! Test if image width, height and spectrum are the same as that of another image. + /** + Test if is_sameXY(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXYC(const CImg& img) const { + return is_sameXYC(img._width,img._height,img._spectrum); + } + + //! Test if image width, depth and spectrum are equal to specified values. + /** + Test if is_sameXZ(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameXZC(const unsigned int size_x, const unsigned int size_z, const unsigned int size_c) const { + return is_sameXZ(size_x,size_z) && _spectrum==size_c; + } + + //! Test if image width, depth and spectrum are the same as that of another image. + /** + Test if is_sameXZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXZC(const CImg& img) const { + return is_sameXZC(img._width,img._depth,img._spectrum); + } + + //! Test if image height, depth and spectrum are equal to specified values. + /** + Test if is_sameYZ(unsigned int,unsigned int) const and is_sameC(unsigned int) const are both verified. + **/ + bool is_sameYZC(const unsigned int size_y, const unsigned int size_z, const unsigned int size_c) const { + return is_sameYZ(size_y,size_z) && _spectrum==size_c; + } + + //! Test if image height, depth and spectrum are the same as that of another image. + /** + Test if is_sameYZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameYZC(const CImg& img) const { + return is_sameYZC(img._height,img._depth,img._spectrum); + } + + //! Test if image width, height, depth and spectrum are equal to specified values. + /** + Test if is_sameXYZ(unsigned int,unsigned int,unsigned int) const and is_sameC(unsigned int) const are both + verified. + **/ + bool is_sameXYZC(const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c) const { + return is_sameXYZ(size_x,size_y,size_z) && _spectrum==size_c; + } + + //! Test if image width, height, depth and spectrum are the same as that of another image. + /** + Test if is_sameXYZ(const CImg&) const and is_sameC(const CImg&) const are both verified. + **/ + template + bool is_sameXYZC(const CImg& img) const { + return is_sameXYZC(img._width,img._height,img._depth,img._spectrum); + } + + //! Test if specified coordinates are inside image bounds. + /** + Return \c true if pixel located at (\c x,\c y,\c z,\c c) is inside bounds of the image instance, + and \c false otherwise. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note + - Return \c true only if all these conditions are verified: + - The image instance is \e not empty. + - 0<=x<=\ref width() - 1. + - 0<=y<=\ref height() - 1. + - 0<=z<=\ref depth() - 1. + - 0<=c<=\ref spectrum() - 1. + **/ + bool containsXYZC(const int x, const int y=0, const int z=0, const int c=0) const { + return !is_empty() && x>=0 && x=0 && y=0 && z=0 && c img(100,100,1,3); // Construct a 100x100 RGB color image + const unsigned long offset = 1249; // Offset to the pixel (49,12,0,0) + unsigned int x,y,z,c; + if (img.contains(img[offset],x,y,z,c)) { // Convert offset to (x,y,z,c) coordinates + std::printf("Offset %u refers to pixel located at (%u,%u,%u,%u).\n", + offset,x,y,z,c); + } + \endcode + **/ + template + bool contains(const T& pixel, t& x, t& y, t& z, t& c) const { + const ulongT wh = (ulongT)_width*_height, whd = wh*_depth, siz = whd*_spectrum; + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + siz) return false; + ulongT off = (ulongT)(ppixel - _data); + const ulongT nc = off/whd; + off%=whd; + const ulongT nz = off/wh; + off%=wh; + const ulongT ny = off/_width, nx = off%_width; + x = (t)nx; y = (t)ny; z = (t)nz; c = (t)nc; + return true; + } + + //! Test if pixel value is inside image bounds and get its X,Y and Z-coordinates. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X,Y and Z-coordinates are set. + **/ + template + bool contains(const T& pixel, t& x, t& y, t& z) const { + const ulongT wh = (ulongT)_width*_height, whd = wh*_depth, siz = whd*_spectrum; + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + siz) return false; + ulongT off = ((ulongT)(ppixel - _data))%whd; + const ulongT nz = off/wh; + off%=wh; + const ulongT ny = off/_width, nx = off%_width; + x = (t)nx; y = (t)ny; z = (t)nz; + return true; + } + + //! Test if pixel value is inside image bounds and get its X and Y-coordinates. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X and Y-coordinates are set. + **/ + template + bool contains(const T& pixel, t& x, t& y) const { + const ulongT wh = (ulongT)_width*_height, siz = wh*_depth*_spectrum; + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + siz) return false; + ulongT off = ((unsigned int)(ppixel - _data))%wh; + const ulongT ny = off/_width, nx = off%_width; + x = (t)nx; y = (t)ny; + return true; + } + + //! Test if pixel value is inside image bounds and get its X-coordinate. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that only the X-coordinate is set. + **/ + template + bool contains(const T& pixel, t& x) const { + const T *const ppixel = &pixel; + if (is_empty() || ppixel<_data || ppixel>=_data + size()) return false; + x = (t)(((ulongT)(ppixel - _data))%_width); + return true; + } + + //! Test if pixel value is inside image bounds. + /** + Similar to contains(const T&,t&,t&,t&,t&) const, except that no pixel coordinates are set. + **/ + bool contains(const T& pixel) const { + const T *const ppixel = &pixel; + return !is_empty() && ppixel>=_data && ppixel<_data + size(); + } + + //! Test if pixel buffers of instance and input images overlap. + /** + Return \c true, if pixel buffers attached to image instance and input image \c img overlap, + and \c false otherwise. + \param img Input image to compare with. + \note + - Buffer overlapping may happen when manipulating \e shared images. + - If two image buffers overlap, operating on one of the image will probably modify the other one. + - Most of the time, \c CImg instances are \e non-shared and do not overlap between each others. + \par Example + \code + const CImg + img1("reference.jpg"), // Load RGB-color image + img2 = img1.get_shared_channel(1); // Get shared version of the green channel + if (img1.is_overlapped(img2)) { // Test succeeds, 'img1' and 'img2' overlaps + std::printf("Buffers overlap!\n"); + } + \endcode + **/ + template + bool is_overlapped(const CImg& img) const { + const ulongT csiz = size(), isiz = img.size(); + return !((void*)(_data + csiz)<=(void*)img._data || (void*)_data>=(void*)(img._data + isiz)); + } + + //! Test if the set {\c *this,\c primitives,\c colors,\c opacities} defines a valid 3D object. + /** + Return \c true is the 3D object represented by the set {\c *this,\c primitives,\c colors,\c opacities} defines a + valid 3D object, and \c false otherwise. The vertex coordinates are defined by the instance image. + \param primitives List of primitives of the 3D object. + \param colors List of colors of the 3D object. + \param opacities List (or image) of opacities of the 3D object. + \param full_check Tells if full checking of the 3D object must be performed. + \param[out] error_message C-string to contain the error message, if the test does not succeed. + \note + - Set \c full_checking to \c false to speed-up the 3D object checking. In this case, only the size of + each 3D object component is checked. + - Size of the string \c error_message should be at least 128-bytes long, to be able to contain the error message. + **/ + template + bool is_object3d(const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool full_check=true, + char *const error_message=0) const { + if (error_message) *error_message = 0; + + // Check consistency for the particular case of an empty 3D object. + if (is_empty()) { + if (primitives || colors || opacities) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines no vertices but %u primitives, " + "%u colors and %lu opacities", + _width,primitives._width,primitives._width, + colors._width,(unsigned long)opacities.size()); + return false; + } + return true; + } + + // Check consistency of vertices. + if (_height!=3 || _depth>1 || _spectrum>1) { // Check vertices dimensions + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) has invalid vertex dimensions (%u,%u,%u,%u)", + _width,primitives._width,_width,_height,_depth,_spectrum); + return false; + } + if (colors._width>primitives._width + 1) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines %u colors", + _width,primitives._width,colors._width); + return false; + } + if (opacities.size()>primitives._width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines %lu opacities", + _width,primitives._width,(unsigned long)opacities.size()); + return false; + } + if (!full_check) return true; + + // Check consistency of primitives. + cimglist_for(primitives,l) { + const CImg& primitive = primitives[l]; + const unsigned int psiz = (unsigned int)primitive.size(); + switch (psiz) { + case 1 : { // Point + const unsigned int i0 = (unsigned int)primitive(0); + if (i0>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex index %u in " + "point primitive [%u]", + _width,primitives._width,i0,l); + return false; + } + } break; + case 5 : { // Sphere + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + if (i0>=_width || i1>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u) in " + "sphere primitive [%u]", + _width,primitives._width,i0,i1,l); + return false; + } + } break; + case 2 : case 6 : { // Segment + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + if (i0>=_width || i1>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u) in " + "segment primitive [%u]", + _width,primitives._width,i0,i1,l); + return false; + } + } break; + case 3 : case 9 : { // Triangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2); + if (i0>=_width || i1>=_width || i2>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u,%u) in " + "triangle primitive [%u]", + _width,primitives._width,i0,i1,i2,l); + return false; + } + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2), + i3 = (unsigned int)primitive(3); + if (i0>=_width || i1>=_width || i2>=_width || i3>=_width) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) refers to invalid vertex indices (%u,%u,%u,%u) in " + "quadrangle primitive [%u]", + _width,primitives._width,i0,i1,i2,i3,l); + return false; + } + } break; + default : + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines an invalid primitive [%u] of size %u", + _width,primitives._width,l,(unsigned int)psiz); + return false; + } + } + + // Check consistency of colors. + cimglist_for(colors,c) { + const CImg& color = colors[c]; + if (!color) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines no color for primitive [%u]", + _width,primitives._width,c); + return false; + } + } + + // Check consistency of light texture. + if (colors._width>primitives._width) { + const CImg &light = colors.back(); + if (!light || light._depth>1) { + if (error_message) cimg_sprintf(error_message, + "3D object (%u,%u) defines an invalid light texture (%u,%u,%u,%u)", + _width,primitives._width,light._width, + light._height,light._depth,light._spectrum); + return false; + } + } + + return true; + } + + //! Test if image instance represents a valid serialization of a 3D object. + /** + Return \c true if the image instance represents a valid serialization of a 3D object, and \c false otherwise. + \param full_check Tells if full checking of the instance must be performed. + \param[out] error_message C-string to contain the error message, if the test does not succeed. + \note + - Set \c full_check to \c false to speed-up the 3D object checking. In this case, only the size of + each 3D object component is checked. + - Size of the string \c error_message should be at least 128-bytes long, to be able to contain the error message. + **/ + bool is_CImg3d(const bool full_check=true, char *const error_message=0) const { + if (error_message) *error_message = 0; + + // Check instance dimension and header. + if (_width!=1 || _height<8 || _depth!=1 || _spectrum!=1) { + if (error_message) cimg_sprintf(error_message, + "CImg3d has invalid dimensions (%u,%u,%u,%u)", + _width,_height,_depth,_spectrum); + return false; + } + const T *ptrs = _data, *const ptre = end(); + if (!_is_CImg3d(*(ptrs++),'C') || !_is_CImg3d(*(ptrs++),'I') || !_is_CImg3d(*(ptrs++),'m') || + !_is_CImg3d(*(ptrs++),'g') || !_is_CImg3d(*(ptrs++),'3') || !_is_CImg3d(*(ptrs++),'d')) { + if (error_message) cimg_sprintf(error_message, + "CImg3d header not found"); + return false; + } + const unsigned int + nb_points = cimg::float2uint((float)*(ptrs++)), + nb_primitives = cimg::float2uint((float)*(ptrs++)); + + // Check consistency of number of vertices / primitives. + if (!full_check) { + const ulongT minimal_size = 8UL + 3*nb_points + 6*nb_primitives; + if (_data + minimal_size>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has only %lu values, while at least %lu values were expected", + nb_points,nb_primitives,(unsigned long)size(),(unsigned long)minimal_size); + return false; + } + } + + // Check consistency of vertex data. + if (!nb_points) { + if (nb_primitives) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines no vertices but %u primitives", + nb_points,nb_primitives,nb_primitives); + return false; + } + if (ptrs!=ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) is an empty object but contains %u value%s " + "more than expected", + nb_points,nb_primitives,(unsigned int)(ptre - ptrs),(ptre - ptrs)>1?"s":""); + return false; + } + return true; + } + if (ptrs + 3*nb_points>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines only %u vertices data", + nb_points,nb_primitives,(unsigned int)(ptre - ptrs)/3); + return false; + } + ptrs+=3*nb_points; + + // Check consistency of primitive data. + if (ptrs==ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines %u vertices but no primitive", + nb_points,nb_primitives,nb_points); + return false; + } + + if (!full_check) return true; + + for (unsigned int p = 0; p=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex index %u in point primitive [%u]", + nb_points,nb_primitives,i0,p); + return false; + } + } break; + case 5 : { // Sphere + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)); + ptrs+=3; + if (i0>=nb_points || i1>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u) in " + "sphere primitive [%u]", + nb_points,nb_primitives,i0,i1,p); + return false; + } + } break; + case 2 : case 6 : { // Segment + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)); + if (nb_inds==6) ptrs+=4; + if (i0>=nb_points || i1>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u) in " + "segment primitive [%u]", + nb_points,nb_primitives,i0,i1,p); + return false; + } + } break; + case 3 : case 9 : { // Triangle + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)), + i2 = cimg::float2uint((float)*(ptrs++)); + if (nb_inds==9) ptrs+=6; + if (i0>=nb_points || i1>=nb_points || i2>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u,%u) in " + "triangle primitive [%u]", + nb_points,nb_primitives,i0,i1,i2,p); + return false; + } + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = cimg::float2uint((float)*(ptrs++)), + i1 = cimg::float2uint((float)*(ptrs++)), + i2 = cimg::float2uint((float)*(ptrs++)), + i3 = cimg::float2uint((float)*(ptrs++)); + if (nb_inds==12) ptrs+=8; + if (i0>=nb_points || i1>=nb_points || i2>=nb_points || i3>=nb_points) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid vertex indices (%u,%u,%u,%u) in " + "quadrangle primitive [%u]", + nb_points,nb_primitives,i0,i1,i2,i3,p); + return false; + } + } break; + default : + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines an invalid primitive [%u] of size %u", + nb_points,nb_primitives,p,nb_inds); + return false; + } + if (ptrs>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has incomplete primitive data for primitive [%u], " + "%u values missing", + nb_points,nb_primitives,p,(unsigned int)(ptrs - ptre)); + return false; + } + } + + // Check consistency of color data. + if (ptrs==ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines no color/texture data", + nb_points,nb_primitives); + return false; + } + for (unsigned int c = 0; c=c) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid shared sprite/texture index %u " + "for primitive [%u]", + nb_points,nb_primitives,w,c); + return false; + } + } else ptrs+=w*h*s; + } + if (ptrs>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has incomplete color/texture data for primitive [%u], " + "%u values missing", + nb_points,nb_primitives,c,(unsigned int)(ptrs - ptre)); + return false; + } + } + + // Check consistency of opacity data. + if (ptrs==ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) defines no opacity data", + nb_points,nb_primitives); + return false; + } + for (unsigned int o = 0; o=o) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) refers to invalid shared opacity index %u " + "for primitive [%u]", + nb_points,nb_primitives,w,o); + return false; + } + } else ptrs+=w*h*s; + } + if (ptrs>ptre) { + if (error_message) cimg_sprintf(error_message, + "CImg3d (%u,%u) has incomplete opacity data for primitive [%u]", + nb_points,nb_primitives,o); + return false; + } + } + + // Check end of data. + if (ptrs1?"s":""); + return false; + } + return true; + } + + static bool _is_CImg3d(const T val, const char c) { + return val>=(T)c && val<(T)(c + 1); + } + + //@} + //------------------------------------- + // + //! \name Mathematical Functions + //@{ + //------------------------------------- + + // Define the math formula parser/compiler and expression evaluator. + struct _cimg_math_parser { + CImg mem; + CImg memtype, memmerge; + CImgList _code, &code, code_begin, code_end, + _code_begin_t, &code_begin_t, _code_end_t, &code_end_t; + CImg opcode; + const CImg *p_code_end, *p_code; + const CImg *const p_break; + + CImg expr, pexpr; + const CImg& imgin; + const CImgList& listin; + CImg &imgout; + CImgList& listout; + + CImg _img_stats, &img_stats, constcache_vals; + CImgList _list_stats, &list_stats, _list_median, &list_median, _list_norm, &list_norm; + CImg mem_img_stats, constcache_inds; + + CImg level, variable_pos, reserved_label; + CImgList variable_def, macro_def, macro_body; + CImgList macro_body_is_string; + char *user_macro; + + unsigned int mempos, mem_img_median, mem_img_norm, mem_img_index, debug_indent, result_dim, break_type, + constcache_size; + bool is_parallelizable, is_end_code, is_fill, need_input_copy; + double *result; + cimg_uint64 rng; + const char *const calling_function, *s_op, *ss_op; + typedef double (*mp_func)(_cimg_math_parser&); + +#define _cimg_mp_is_constant(arg) (memtype[arg]==1) // Is constant value? +#define _cimg_mp_is_scalar(arg) (memtype[arg]<2) // Is scalar value? +#define _cimg_mp_is_comp(arg) (!memtype[arg]) // Is computation value? +#define _cimg_mp_is_variable(arg) (memtype[arg]==-1) // Is scalar variable? +#define _cimg_mp_is_vector(arg) (memtype[arg]>1) // Is vector? +#define _cimg_mp_size(arg) (_cimg_mp_is_scalar(arg)?0U:(unsigned int)memtype[arg] - 1) // Size (0=scalar, N>0=vectorN) +#define _cimg_mp_calling_function s_calling_function()._data +#define _cimg_mp_op(s) s_op = s; ss_op = ss +#define _cimg_mp_check_type(arg,n_arg,mode,N) check_type(arg,n_arg,mode,N,ss,se,saved_char) +#define _cimg_mp_check_constant(arg,n_arg,mode) check_constant(arg,n_arg,mode,ss,se,saved_char) +#define _cimg_mp_check_constant_index(arg) check_constant_index(arg,ss,se,saved_char) +#define _cimg_mp_check_matrix_square(arg,n_arg) check_matrix_square(arg,n_arg,ss,se,saved_char) +#define _cimg_mp_check_list(is_out) check_list(is_out,ss,se,saved_char) +#define _cimg_mp_defunc(mp) (*(mp_func)(*(mp).opcode))(mp) +#define _cimg_mp_return(x) { *se = saved_char; s_op = previous_s_op; ss_op = previous_ss_op; return x; } +#define _cimg_mp_return_nan() _cimg_mp_return(_cimg_mp_slot_nan) +#define _cimg_mp_constant(val) _cimg_mp_return(constant((double)(val))) +#define _cimg_mp_scalar0(op) _cimg_mp_return(scalar0(op)) +#define _cimg_mp_scalar1(op,i1) _cimg_mp_return(scalar1(op,i1)) +#define _cimg_mp_scalar2(op,i1,i2) _cimg_mp_return(scalar2(op,i1,i2)) +#define _cimg_mp_scalar3(op,i1,i2,i3) _cimg_mp_return(scalar3(op,i1,i2,i3)) +#define _cimg_mp_scalar4(op,i1,i2,i3,i4) _cimg_mp_return(scalar4(op,i1,i2,i3,i4)) +#define _cimg_mp_scalar5(op,i1,i2,i3,i4,i5) _cimg_mp_return(scalar5(op,i1,i2,i3,i4,i5)) +#define _cimg_mp_scalar6(op,i1,i2,i3,i4,i5,i6) _cimg_mp_return(scalar6(op,i1,i2,i3,i4,i5,i6)) +#define _cimg_mp_scalar7(op,i1,i2,i3,i4,i5,i6,i7) _cimg_mp_return(scalar7(op,i1,i2,i3,i4,i5,i6,i7)) +#define _cimg_mp_vector1_v(op,i1) _cimg_mp_return(vector1_v(op,i1)) +#define _cimg_mp_vector2_sv(op,i1,i2) _cimg_mp_return(vector2_sv(op,i1,i2)) +#define _cimg_mp_vector2_vs(op,i1,i2) _cimg_mp_return(vector2_vs(op,i1,i2)) +#define _cimg_mp_vector2_vv(op,i1,i2) _cimg_mp_return(vector2_vv(op,i1,i2)) +#define _cimg_mp_vector3_vss(op,i1,i2,i3) _cimg_mp_return(vector3_vss(op,i1,i2,i3)) +#define _cimg_mp_strerr \ + *se = saved_char; \ + for (s0 = ss; s0>expr._data && *s0!=';'; --s0) {} \ + if (*s0==';') ++s0; \ + while (cimg::is_blank(*s0)) ++s0; \ + cimg::strellipsize(s0,64) + + // Constructors / Destructors. + ~_cimg_math_parser() { + cimg::srand(rng); + } + + _cimg_math_parser(const char *const expression, const char *const funcname=0, + const CImg& img_input=CImg::const_empty(), CImg *const img_output=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0, + const bool _is_fill=false): + code(_code),code_begin_t(_code_begin_t),code_end_t(_code_end_t), + p_break((CImg*)(cimg_ulong)-2), + imgin(img_input),listin(list_inputs?*list_inputs:CImgList::const_empty()), + imgout(img_output?*img_output:CImg::empty()),listout(list_outputs?*list_outputs:CImgList::empty()), + img_stats(_img_stats),list_stats(_list_stats),list_median(_list_median),list_norm(_list_norm),user_macro(0), + mem_img_median(~0U),mem_img_norm(~0U),mem_img_index(~0U),debug_indent(0),result_dim(0),break_type(0), + constcache_size(0),is_parallelizable(true),is_fill(_is_fill),need_input_copy(false), + rng((cimg::_rand(),cimg::rng())),calling_function(funcname?funcname:"cimg_math_parser") { + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + if (!expression || !*expression) + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Empty expression.", + pixel_type(),_cimg_mp_calling_function); + const char *_expression = expression; + while (*_expression && (cimg::is_blank(*_expression) || *_expression==';')) ++_expression; + CImg::string(_expression).move_to(expr); + char *ps = &expr.back() - 1; + while (ps>expr._data && (cimg::is_blank(*ps) || *ps==';')) --ps; + *(++ps) = 0; expr._width = (unsigned int)(ps - expr._data + 1); + + // Ease the retrieval of previous non-space characters afterwards. + pexpr.assign(expr._width); + char c, *pe = pexpr._data; + for (ps = expr._data, c = ' '; *ps; ++ps) { + if (!cimg::is_blank(*ps)) c = *ps; else *ps = ' '; + *(pe++) = c; + } + *pe = 0; + level = get_level(expr); + + // Init constant values. +#define _cimg_mp_interpolation (reserved_label[30]!=~0U?reserved_label[30]:0) +#define _cimg_mp_boundary (reserved_label[31]!=~0U?reserved_label[31]:0) +#define _cimg_mp_slot_t 17 +#define _cimg_mp_slot_nan 29 +#define _cimg_mp_slot_x 30 +#define _cimg_mp_slot_y 31 +#define _cimg_mp_slot_z 32 +#define _cimg_mp_slot_c 33 + + mem.assign(96); + for (unsigned int i = 0; i<=10; ++i) mem[i] = (double)i; // mem[0-10] = 0...10 + for (unsigned int i = 1; i<=5; ++i) mem[i + 10] = -(double)i; // mem[11-15] = -1...-5 + mem[16] = 0.5; + mem[_cimg_mp_slot_t] = 0; // thread_id + mem[18] = (double)imgin._width; // w + mem[19] = (double)imgin._height; // h + mem[20] = (double)imgin._depth; // d + mem[21] = (double)imgin._spectrum; // s + mem[22] = (double)imgin._is_shared; // r + mem[23] = (double)imgin._width*imgin._height; // wh + mem[24] = (double)imgin._width*imgin._height*imgin._depth; // whd + mem[25] = (double)imgin._width*imgin._height*imgin._depth*imgin._spectrum; // whds + mem[26] = (double)listin._width; // l + mem[27] = std::exp(1.); // e + mem[28] = cimg::PI; // pi + mem[_cimg_mp_slot_nan] = cimg::type::nan(); // nan + + // Set value property : + // { -2 = other | -1 = variable | 0 = computation value | + // 1 = compile-time constant | N>1 = constant ptr to vector[N-1] }. + memtype.assign(mem._width,1,1,1,0); + for (unsigned int i = 0; i<_cimg_mp_slot_x; ++i) memtype[i] = 1; + memtype[_cimg_mp_slot_t] = memtype[_cimg_mp_slot_x] = memtype[_cimg_mp_slot_y] = + memtype[_cimg_mp_slot_z] = memtype[_cimg_mp_slot_c] = -2; + mempos = _cimg_mp_slot_c + 1; + variable_pos.assign(8); + + reserved_label.assign(128,1,1,1,~0U); + // reserved_label[0-31] are used to store the memory index of these variables: + // [0] = wh, [1] = whd, [2] = whds, [3] = pi, [4] = im, [5] = iM, [6] = ia, [7] = iv, + // [8] = is, [9] = ip, [10] = ic, [11] = in, [12] = xm, [13] = ym, [14] = zm, [15] = cm, [16] = xM, + // [17] = yM, [18] = zM, [19] = cM, [20] = i0...[29] = i9, [30] = interpolation, [31] = boundary + + // Compile expression into a sequence of opcodes. + s_op = ""; ss_op = expr._data; + const unsigned int ind_result = compile(expr._data,expr._data + expr._width - 1,0,0,false); + if (!_cimg_mp_is_constant(ind_result)) { + if (_cimg_mp_is_vector(ind_result)) + CImg(&mem[ind_result] + 1,_cimg_mp_size(ind_result),1,1,1,true). + fill(cimg::type::nan()); + else if (ind_result!=_cimg_mp_slot_t) mem[ind_result] = cimg::type::nan(); + } + + // Free resources used for compiling expression and prepare evaluation. + result_dim = _cimg_mp_size(ind_result); + if (mem._width>=256 && mem._width - mempos>=mem._width/2) mem.resize(mempos,1,1,1,-1); + result = mem._data + ind_result; + memtype.assign(); + constcache_vals.assign(); + constcache_inds.assign(); + level.assign(); + variable_pos.assign(); + reserved_label.assign(); + expr.assign(); + pexpr.assign(); + opcode.assign(); + opcode._is_shared = true; + + // Execute begin() bloc if any specified. + if (code_begin) { + mem[_cimg_mp_slot_x] = mem[_cimg_mp_slot_y] = mem[_cimg_mp_slot_z] = mem[_cimg_mp_slot_c] = 0; + p_code_end = code_begin.end(); + for (p_code = code_begin; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + } + p_code_end = code.end(); + } + + _cimg_math_parser(): + code(_code),code_begin_t(_code_begin_t),code_end_t(_code_end_t), + p_code_end(0),p_break((CImg*)(cimg_ulong)-2), + imgin(CImg::const_empty()),listin(CImgList::const_empty()), + imgout(CImg::empty()),listout(CImgList::empty()), + img_stats(_img_stats),list_stats(_list_stats),list_median(_list_median),list_norm(_list_norm),debug_indent(0), + result_dim(0),break_type(0),constcache_size(0),is_parallelizable(true),is_fill(false), + need_input_copy(false),rng(0),calling_function(0) { + mem.assign(1 + _cimg_mp_slot_c,1,1,1,0); // Allow to skip 'is_empty?' test in operator()() + result = mem._data; + } + + _cimg_math_parser(const _cimg_math_parser& mp): + mem(mp.mem),code(mp.code),code_begin_t(mp.code_begin_t),code_end_t(mp.code_end_t), + p_code_end(mp.p_code_end),p_break(mp.p_break), + imgin(mp.imgin),listin(mp.listin),imgout(mp.imgout),listout(mp.listout), + img_stats(mp.img_stats),list_stats(mp.list_stats),list_median(mp.list_median),list_norm(mp.list_norm), + debug_indent(0),result_dim(mp.result_dim),break_type(0),constcache_size(0), + is_parallelizable(mp.is_parallelizable),is_fill(mp.is_fill),need_input_copy(mp.need_input_copy), + result(mem._data + (mp.result - mp.mem._data)),rng((cimg::_rand(),cimg::rng())),calling_function(0) { + +#if cimg_use_openmp!=0 + mem[_cimg_mp_slot_t] = omp_get_thread_num(); + rng+=omp_get_thread_num(); +#endif + opcode.assign(); + opcode._is_shared = true; + } + + // Compilation procedure. + unsigned int compile(char *ss, char *se, const unsigned int depth, unsigned int *const p_ref, + const bool is_critical) { + if (depth>256) { + cimg::strellipsize(expr,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Call stack overflow (infinite recursion?), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + (ss - 4)>expr._data?"...":"", + (ss - 4)>expr._data?ss - 4:expr._data, + se<&expr.back()?"...":""); + } + char c1, c2; + + // Simplify expression when possible. + do { + c2 = 0; + if (ssss && (cimg::is_blank(c1 = *(se - 1)) || c1==';')) --se; + } + while (*ss=='(' && *(se - 1)==')' && std::strchr(ss,')')==se - 1) { + ++ss; --se; c2 = 1; + } + } while (c2 && ss::%s: %s%s Missing %s, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + *s_op=='F'?"argument":"item", + (ss_op - 4)>expr._data?"...":"", + (ss_op - 4)>expr._data?ss_op - 4:expr._data, + ss_op + std::strlen(ss_op)<&expr.back()?"...":""); + } + + static const size_t siz_ref = 7*sizeof(unsigned int); + const char *const previous_s_op = s_op, *const previous_ss_op = ss_op; + const unsigned int depth1 = depth + 1; + unsigned int pos, p1, p2, p3, arg1, arg2, arg3, arg4, arg5, arg6; + char + *const se1 = se - 1, *const se2 = se - 2, *const se3 = se - 3, + *const ss1 = ss + 1, *const ss2 = ss + 2, *const ss3 = ss + 3, *const ss4 = ss + 4, + *const ss5 = ss + 5, *const ss6 = ss + 6, *const ss7 = ss + 7, *const ss8 = ss + 8, + *s, *ps, *ns, *s0, *s1, *s2, *s3, sep = 0, end = 0; + double val = 0, val1, val2; + mp_func op; + + // 'p_ref' is a 'unsigned int[7]' used to return a reference to an image or vector value + // linked to the returned memory slot (reference that cannot be determined at compile time). + // p_ref[0] can be { 0 = scalar (unlinked) | 1 = vector value | 2 = image value (offset) | + // 3 = image value (coordinates) | 4 = image value as a vector (offsets) | + // 5 = image value as a vector (coordinates) }. + // Depending on p_ref[0], the remaining p_ref[k] have the following meaning: + // When p_ref[0]==0, p_ref is actually unlinked. + // When p_ref[0]==1, p_ref = [ 1, vector_ind, offset ]. + // When p_ref[0]==2, p_ref = [ 2, image_ind (or ~0U), is_relative, offset ]. + // When p_ref[0]==3, p_ref = [ 3, image_ind (or ~0U), is_relative, x, y, z, c ]. + // When p_ref[0]==4, p_ref = [ 4, image_ind (or ~0U), is_relative, offset ]. + // When p_ref[0]==5, p_ref = [ 5, image_ind (or ~0U), is_relative, x, y, z ]. + if (p_ref) { *p_ref = 0; p_ref[1] = p_ref[2] = p_ref[3] = p_ref[4] = p_ref[5] = p_ref[6] = ~0U; } + + const char saved_char = *se; *se = 0; + const unsigned int clevel = level[ss - expr._data], clevel1 = clevel + 1; + bool is_sth, is_relative; + CImg ref; + CImg variable_name; + CImgList l_opcode; + + // Look for a single value or a pre-defined variable. + int nb = 0; + s = ss + (*ss=='+' || *ss=='-'?1:0); + if (*s=='i' || *s=='I' || *s=='n' || *s=='N') { // Particular cases : +/-NaN and +/-Inf + is_sth = *ss=='-'; + if (!cimg::strcasecmp(s,"inf")) { val = cimg::type::inf(); nb = 1; } + else if (!cimg::strcasecmp(s,"nan")) { val = cimg::type::nan(); nb = 1; } + if (nb==1 && is_sth) val = -val; + } else if (*s=='0' && (s[1]=='x' || s[1]=='X')) { // Hexadecimal number + is_sth = *ss=='-'; + if (cimg_sscanf(s + 2,"%x%c",&arg1,&sep)==1) { + nb = 1; + val = (double)arg1; + if (is_sth) val = -val; + } + } + if (!nb) nb = cimg_sscanf(ss,"%lf%c%c",&val,&(sep=0),&(end=0)); + if (nb==1) _cimg_mp_constant(val); + if (nb==2 && sep=='%') _cimg_mp_constant(val/100); + + if (ss1==se) switch (*ss) { // One-char reserved variable + case 'c' : _cimg_mp_return(reserved_label[(int)'c']!=~0U?reserved_label[(int)'c']:_cimg_mp_slot_c); + case 'd' : _cimg_mp_return(reserved_label[(int)'d']!=~0U?reserved_label[(int)'d']:20); + case 'e' : _cimg_mp_return(reserved_label[(int)'e']!=~0U?reserved_label[(int)'e']:27); + case 'h' : _cimg_mp_return(reserved_label[(int)'h']!=~0U?reserved_label[(int)'h']:19); + case 'k' : + if (reserved_label[(int)'k']!=~0U) _cimg_mp_return(reserved_label[(int)'k']); + pos = get_mem_img_index(); + if (pos!=~0U) _cimg_mp_return(pos); + _cimg_mp_return_nan(); + case 'l' : _cimg_mp_return(reserved_label[(int)'l']!=~0U?reserved_label[(int)'l']:26); + case 'r' : _cimg_mp_return(reserved_label[(int)'r']!=~0U?reserved_label[(int)'r']:22); + case 's' : _cimg_mp_return(reserved_label[(int)'s']!=~0U?reserved_label[(int)'s']:21); + case 't' : _cimg_mp_return(reserved_label[(int)'t']!=~0U?reserved_label[(int)'t']:_cimg_mp_slot_t); + case 'w' : _cimg_mp_return(reserved_label[(int)'w']!=~0U?reserved_label[(int)'w']:18); + case 'x' : _cimg_mp_return(reserved_label[(int)'x']!=~0U?reserved_label[(int)'x']:_cimg_mp_slot_x); + case 'y' : _cimg_mp_return(reserved_label[(int)'y']!=~0U?reserved_label[(int)'y']:_cimg_mp_slot_y); + case 'z' : _cimg_mp_return(reserved_label[(int)'z']!=~0U?reserved_label[(int)'z']:_cimg_mp_slot_z); + case 'u' : + if (reserved_label[(int)'u']!=~0U) _cimg_mp_return(reserved_label[(int)'u']); + _cimg_mp_scalar2(mp_u,0,1); + case 'g' : + if (reserved_label[(int)'g']!=~0U) _cimg_mp_return(reserved_label[(int)'g']); + _cimg_mp_scalar0(mp_g); + case 'i' : + if (reserved_label[(int)'i']!=~0U) _cimg_mp_return(reserved_label[(int)'i']); + _cimg_mp_scalar0(mp_i); + case 'I' : + _cimg_mp_op("Variable 'I'"); + if (reserved_label[(int)'I']!=~0U) _cimg_mp_return(reserved_label[(int)'I']); + if (!imgin._spectrum) _cimg_mp_return(0); + need_input_copy = true; + pos = vector(imgin._spectrum); + CImg::vector((ulongT)mp_Joff,pos,0,0,imgin._spectrum).move_to(code); + _cimg_mp_return(pos); + case 'R' : + if (reserved_label[(int)'R']!=~0U) _cimg_mp_return(reserved_label[(int)'R']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,0,0,0); + case 'G' : + if (reserved_label[(int)'G']!=~0U) _cimg_mp_return(reserved_label[(int)'G']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,1,0,0); + case 'B' : + if (reserved_label[(int)'B']!=~0U) _cimg_mp_return(reserved_label[(int)'B']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,2,0,0); + case 'A' : + if (reserved_label[(int)'A']!=~0U) _cimg_mp_return(reserved_label[(int)'A']); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,3,0,0); + } + else if (ss2==se) { // Two-chars reserved variable + arg1 = arg2 = ~0U; + if (*ss=='w' && *ss1=='h') // wh + _cimg_mp_return(reserved_label[0]!=~0U?reserved_label[0]:23); + if (*ss=='p' && *ss1=='i') // pi + _cimg_mp_return(reserved_label[3]!=~0U?reserved_label[3]:28); + if (*ss=='i') { + if (*ss1>='0' && *ss1<='9') { // i0...i9 + pos = 20 + *ss1 - '0'; + if (reserved_label[pos]!=~0U) _cimg_mp_return(reserved_label[pos]); + need_input_copy = true; + _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,pos - 20,0,0); + } + switch (*ss1) { + case 'm' : arg1 = 4; arg2 = 0; break; // im + case 'M' : arg1 = 5; arg2 = 1; break; // iM + case 'a' : arg1 = 6; arg2 = 2; break; // ia + case 'v' : arg1 = 7; arg2 = 3; break; // iv + case 's' : arg1 = 8; arg2 = 12; break; // is + case 'p' : arg1 = 9; arg2 = 13; break; // ip + case 'c' : // ic + if (reserved_label[10]!=~0U) _cimg_mp_return(reserved_label[10]); + if (mem_img_median==~0U) mem_img_median = imgin?constant(imgin.median()):0; + _cimg_mp_return(mem_img_median); + break; + case 'n' : // in + if (reserved_label[11]!=~0U) _cimg_mp_return(reserved_label[11]); + if (mem_img_norm==~0U) mem_img_norm = imgin?constant(imgin.magnitude()):0; + _cimg_mp_return(mem_img_norm); + } + } + else if (*ss1=='m') switch (*ss) { + case 'x' : arg1 = 12; arg2 = 4; break; // xm + case 'y' : arg1 = 13; arg2 = 5; break; // ym + case 'z' : arg1 = 14; arg2 = 6; break; // zm + case 'c' : arg1 = 15; arg2 = 7; break; // cm + } + else if (*ss1=='M') switch (*ss) { + case 'x' : arg1 = 16; arg2 = 8; break; // xM + case 'y' : arg1 = 17; arg2 = 9; break; // yM + case 'z' : arg1 = 18; arg2 = 10; break; // zM + case 'c' : arg1 = 19; arg2 = 11; break; // cM + } + if (arg1!=~0U) { + if (reserved_label[arg1]!=~0U) _cimg_mp_return(reserved_label[arg1]); + if (!img_stats) { + img_stats.assign(1,14,1,1,0).fill(imgin.get_stats(),false); + mem_img_stats.assign(1,14,1,1,~0U); + } + if (mem_img_stats[arg2]==~0U) mem_img_stats[arg2] = constant(img_stats[arg2]); + _cimg_mp_return(mem_img_stats[arg2]); + } + } else if (ss3==se) { // Three-chars reserved variable + if (*ss=='w' && *ss1=='h' && *ss2=='d') // whd + _cimg_mp_return(reserved_label[1]!=~0U?reserved_label[1]:24); + } else if (ss4==se) { // Four-chars reserved variable + if (*ss=='w' && *ss1=='h' && *ss2=='d' && *ss3=='s') // whds + _cimg_mp_return(reserved_label[2]!=~0U?reserved_label[2]:25); + } + + pos = ~0U; + is_sth = false; + for (s0 = ss, s = ss1; s='i'?1:3,0); + if (_cimg_mp_is_vector(arg2)) { + if (p1!=~0U) { + _cimg_mp_check_constant_index(p1); + p3 = (unsigned int)cimg::mod((int)mem[p1],listin.width()); + p2 = listin[p3]._spectrum; + } else p2 = imgin._spectrum; + if (!p2) _cimg_mp_return(0); + _cimg_mp_check_type(arg2,2,2,p2); + } else p2 = 0; + + if (p_ref) { + *p_ref = _cimg_mp_is_vector(arg2)?4:2; + p_ref[1] = p1; + p_ref[2] = (unsigned int)is_relative; + p_ref[3] = arg1; + if (_cimg_mp_is_vector(arg2)) + set_variable_vector(arg2); // Prevent from being used in further optimization + else if (_cimg_mp_is_comp(arg2)) memtype[arg2] = -2; + if (_cimg_mp_is_comp(arg1)) memtype[arg1] = -2; + } + + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + if (*ss>='i') + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg2,p1,arg1).move_to(code); + else if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_s:mp_list_set_Ioff_s), + arg2,p1,arg1).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg2,p1,arg1,_cimg_mp_size(arg2)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg2); + if (*ss>='i') + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg2,arg1).move_to(code); + else if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_set_Joff_s:mp_set_Ioff_s), + arg2,arg1).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg2,arg1,_cimg_mp_size(arg2)).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ss1=='(' && *ve1==')') { // i/j/I/J(_#ind,_x,_y,_z,_c) = value + if (!is_critical) is_parallelizable = false; + if (*ss2=='#') { // Index specified + s0 = ss3; while (s0='i'?1:3,0); + if (s01) { + arg2 = arg1 + 1; + if (p2>2) { + arg3 = arg2 + 1; + if (p2>3) arg4 = arg3 + 1; + } + } + } else if (s1='i') + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg5,p1,arg1,arg2,arg3,arg4).move_to(code); + else if (_cimg_mp_is_scalar(arg5)) + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_s:mp_list_set_Ixyz_s), + arg5,p1,arg1,arg2,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg5,p1,arg1,arg2,arg3,_cimg_mp_size(arg5)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg5); + if (*ss>='i') + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg5,arg1,arg2,arg3,arg4).move_to(code); + else if (_cimg_mp_is_scalar(arg5)) + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_s:mp_set_Ixyz_s), + arg5,arg1,arg2,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg5,arg1,arg2,arg3,_cimg_mp_size(arg5)).move_to(code); + } + _cimg_mp_return(arg5); + } + } + + // Assign vector value (direct). + if (l_variable_name>3 && *ve1==']' && *ss!='[') { + s0 = ve1; while (s0>ss && (*s0!='[' || level[s0 - expr._data]!=clevel)) --s0; + is_sth = true; // is_valid_variable_name? + if (*ss>='0' && *ss<='9') is_sth = false; + else for (ns = ss; nsss) { + variable_name[s0 - ss] = 0; // Remove brackets in variable name + get_variable_pos(variable_name,arg1,arg2); + arg1 = arg2!=~0U?reserved_label[arg2]:arg1!=~0U?variable_pos[arg1]:~0U; // Vector slot + if (arg1==~0U || _cimg_mp_is_scalar(arg1)) + compile(ss,s0 - 1,depth1,0,is_critical); // Variable does not exist or is not a vector -> error + + arg2 = compile(++s0,ve1,depth1,0,is_critical); // Index + arg3 = compile(s + 1,se,depth1,0,is_critical); // Value to assign + _cimg_mp_check_type(arg3,2,1,0); + + if (_cimg_mp_is_constant(arg2)) { // Constant index -> return corresponding variable slot directly + nb = (int)mem[arg2]; + if (nb>=0 && nb<(int)_cimg_mp_size(arg1)) { + arg1+=nb + 1; + CImg::vector((ulongT)mp_copy,arg1,arg3).move_to(code); + _cimg_mp_return(arg1); + } + compile(ss,s,depth1,0,is_critical); // Out-of-bounds reference -> error + } + + // Case of non-constant index -> return assigned value + linked reference + if (p_ref) { + *p_ref = 1; + p_ref[1] = arg1; + p_ref[2] = arg2; + if (_cimg_mp_is_comp(arg3)) memtype[arg3] = -2; // Prevent from being used in further optimization + if (_cimg_mp_is_comp(arg2)) memtype[arg2] = -2; + } + CImg::vector((ulongT)mp_vector_set_off,arg3,arg1,(ulongT)_cimg_mp_size(arg1),arg2). + move_to(code); + _cimg_mp_return(arg3); + } + } + + // Assign user-defined macro. + if (l_variable_name>2 && *ve1==')' && *ss!='(') { + s0 = ve1; while (s0>ss && *s0!='(') --s0; + is_sth = std::strncmp(variable_name,"debug(",6) && + std::strncmp(variable_name,"print(",6); // is_valid_function_name? + if (*ss>='0' && *ss<='9') is_sth = false; + else for (ns = ss; nsss) { // Looks like a valid function declaration + s0 = variable_name._data + (s0 - ss); + *s0 = 0; + s1 = variable_name._data + l_variable_name - 1; // Pointer to closing parenthesis + CImg(variable_name._data,(unsigned int)(s0 - variable_name._data + 1)).move_to(macro_def,0); + ++s; while (*s && cimg::is_blank(*s)) ++s; + CImg(s,(unsigned int)(se - s + 1)).move_to(macro_body,0); + + p1 = 1; // Index of current parsed argument + for (s = s0 + 1; s<=s1; ++p1, s = ns + 1) { // Parse function arguments + if (p1>24) { + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Too much specified arguments (>24) in macro " + "definition '%s()', in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + while (*s && cimg::is_blank(*s)) ++s; + if (*s==')' && p1==1) break; // Function has no arguments + + s2 = s; // Start of the argument name + is_sth = true; // is_valid_argument_name? + if (*s>='0' && *s<='9') is_sth = false; + else for (ns = s; ns::%s: %s: %s name specified for argument %u when defining " + "macro '%s()', in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + is_sth?"Empty":"Invalid",p1, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (ns==s1 || *ns==',') { // New argument found + *s3 = 0; + p2 = (unsigned int)(s3 - s2); // Argument length + for (ps = std::strstr(macro_body[0],s2); ps; ps = std::strstr(ps,s2)) { // Replace by arg number + if (!((ps>macro_body[0]._data && is_varchar(*(ps - 1))) || + (ps + p2macro_body[0]._data && *(ps - 1)=='#') { // Remove pre-number sign + *(ps - 1) = (char)p1; + if (ps + p26 && !std::strncmp(variable_name,"const ",6); + + s0 = variable_name._data; + if (is_const) { + s0+=6; while (cimg::is_blank(*s0)) ++s0; + variable_name.resize(variable_name.end() - s0,1,1,1,0,0,1); + } + + if (*variable_name>='0' && *variable_name<='9') is_sth = false; + else for (ns = variable_name._data; *ns; ++ns) + if (!is_varchar(*ns)) { is_sth = false; break; } + + // Assign variable (direct). + if (is_sth) { + get_variable_pos(variable_name,arg1,arg2); + arg3 = compile(s + 1,se,depth1,0,is_critical); + if (is_const) _cimg_mp_check_constant(arg3,2,0); + arg1 = arg2!=~0U?reserved_label[arg2]:arg1!=~0U?variable_pos[arg1]:~0U; + + if (arg1==~0U) { // Create new variable + if (_cimg_mp_is_vector(arg3)) { // Vector variable + arg1 = is_comp_vector(arg3)?arg3:vector_copy(arg3); + set_variable_vector(arg1); // Prevent from being used in further optimization + } else { // Scalar variable + if (is_const) arg1 = arg3; + else { + arg1 = _cimg_mp_is_comp(arg3)?arg3:scalar1(mp_copy,arg3); + memtype[arg1] = -1; + } + } + if (arg2!=~0U) reserved_label[arg2] = arg1; + else { + if (variable_def._width>=variable_pos._width) variable_pos.resize(-200,1,1,1,0); + variable_pos[variable_def._width] = arg1; + variable_name.move_to(variable_def); + } + + } else { // Variable already exists -> assign a new value + if (is_const || _cimg_mp_is_constant(arg1)) { + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid assignment of %sconst variable '%s'%s, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"already-defined ":"non-", + variable_name._data, + !_cimg_mp_is_constant(arg1) && is_const?" as a new const variable":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + _cimg_mp_check_type(arg3,2,_cimg_mp_is_vector(arg1)?3:1,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1)) { // Vector + if (_cimg_mp_is_vector(arg3)) // From vector + CImg::vector((ulongT)mp_vector_copy,arg1,arg3,(ulongT)_cimg_mp_size(arg1)). + move_to(code); + else // From scalar + CImg::vector((ulongT)mp_vector_init,arg1,1,(ulongT)_cimg_mp_size(arg1),arg3). + move_to(code); + } else // Scalar + CImg::vector((ulongT)mp_copy,arg1,arg3).move_to(code); + } + _cimg_mp_return(arg1); + } + + // Assign lvalue (variable name was not valid for a direct assignment). + arg1 = ~0U; + is_sth = (bool)std::strchr(variable_name,'?'); // Contains_ternary_operator? + if (is_sth) break; // Do nothing and make ternary operator prioritary over assignment + + if (l_variable_name>2 && (std::strchr(variable_name,'(') || std::strchr(variable_name,'['))) { + ref.assign(7); + arg1 = compile(ss,s,depth1,ref,is_critical); // Lvalue slot + arg2 = compile(s + 1,se,depth1,0,is_critical); // Value to assign + + if (*ref==1) { // Vector value (scalar): V[k] = scalar + _cimg_mp_check_type(arg2,2,1,0); + arg3 = ref[1]; // Vector slot + arg4 = ref[2]; // Index + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)mp_vector_set_off,arg2,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + _cimg_mp_return(arg2); + } + + if (*ref==2) { // Image value (scalar): i/j[_#ind,off] = scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg2,p1,arg3).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg2,arg3).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ref==3) { // Image value (scalar): i/j(_#ind,_x,_y,_z,_c) = scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + arg6 = ref[6]; // C + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg2,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg2); + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg2,arg3,arg4,arg5,arg6).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off] = value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_s:mp_list_set_Ioff_s), + arg2,p1,arg3).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg2,p1,arg3,_cimg_mp_size(arg2)).move_to(code); + } + + } else { + if (!imgout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_set_Joff_s:mp_set_Ioff_s), + arg2,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg2,arg3,_cimg_mp_size(arg2)).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c) = value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_s:mp_list_set_Ixyz_s), + arg2,p1,arg3,arg4,arg5).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg2,p1,arg3,arg4,arg5,_cimg_mp_size(arg2)).move_to(code); + } + + } else { + if (!imgout) _cimg_mp_return(arg2); + if (_cimg_mp_is_scalar(arg2)) + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_s:mp_set_Ixyz_s), + arg2,arg3,arg4,arg5).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg2,arg3,arg4,arg5,_cimg_mp_size(arg2)).move_to(code); + } + _cimg_mp_return(arg2); + } + + if (_cimg_mp_is_vector(arg1)) { // Vector variable: V = value + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg2)) // From vector + CImg::vector((ulongT)mp_vector_copy,arg1,arg2,(ulongT)_cimg_mp_size(arg1)). + move_to(code); + else // From scalar + CImg::vector((ulongT)mp_vector_init,arg1,1,(ulongT)_cimg_mp_size(arg1),arg2). + move_to(code); + _cimg_mp_return(arg1); + } + + if (_cimg_mp_is_variable(arg1)) { // Scalar variable: s = scalar + _cimg_mp_check_type(arg2,2,1,0); + CImg::vector((ulongT)mp_copy,arg1,arg2).move_to(code); + _cimg_mp_return(arg1); + } + } + + // No assignment expressions match -> error + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid %slvalue '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + arg1!=~0U && _cimg_mp_is_constant(arg1)?"const ":"", + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + // Apply unary/binary/ternary operators. The operator precedences should be the same as in C++. + for (s = se2, ps = se3, ns = ps - 1; s>ss1; --s, --ps, --ns) // Here, ns = ps - 1 + if (*s=='=' && (*ps=='*' || *ps=='/' || *ps=='^') && *ns==*ps && + level[s - expr._data]==clevel) { // Self-operators for complex numbers only (**=,//=,^^=) + _cimg_mp_op(*ps=='*'?"Operator '**='":*ps=='/'?"Operator '//='":"Operator '^^='"); + + ref.assign(7); + arg1 = compile(ss,ns,depth1,ref,is_critical); // Vector slot + arg2 = compile(s + 1,se,depth1,0,is_critical); // Right operand + _cimg_mp_check_type(arg1,1,2,2); + _cimg_mp_check_type(arg2,2,3,2); + if (_cimg_mp_is_vector(arg2)) { // Complex **= complex + if (*ps=='*') + CImg::vector((ulongT)mp_complex_mul,arg1,arg1,arg2).move_to(code); + else if (*ps=='/') + CImg::vector((ulongT)mp_complex_div_vv,arg1,arg1,arg2).move_to(code); + else + CImg::vector((ulongT)mp_complex_pow_vv,arg1,arg1,arg2).move_to(code); + } else { // Complex **= scalar + if (*ps=='*') { + if (arg2==1) _cimg_mp_return(arg1); + self_vector_s(arg1,mp_self_mul,arg2); + } else if (*ps=='/') { + if (arg2==1) _cimg_mp_return(arg1); + self_vector_s(arg1,mp_self_div,arg2); + } else { + if (arg2==1) _cimg_mp_return(arg1); + CImg::vector((ulongT)mp_complex_pow_vs,arg1,arg1,arg2).move_to(code); + } + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off] **= value + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + + } else if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c) **= value + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + } + + _cimg_mp_return(arg1); + } + + for (s = se2, ps = se3, ns = ps - 1; s>ss1; --s, --ps, --ns) // Here, ns = ps - 1 + if (*s=='=' && (*ps=='+' || *ps=='-' || *ps=='*' || *ps=='/' || *ps=='%' || + *ps=='&' || *ps=='^' || *ps=='|' || + (*ps=='>' && *ns=='>') || (*ps=='<' && *ns=='<')) && + level[s - expr._data]==clevel) { // Self-operators (+=,-=,*=,/=,%=,>>=,<<=,&=,^=,|=) + switch (*ps) { + case '+' : op = mp_self_add; _cimg_mp_op("Operator '+='"); break; + case '-' : op = mp_self_sub; _cimg_mp_op("Operator '-='"); break; + case '*' : op = mp_self_mul; _cimg_mp_op("Operator '*='"); break; + case '/' : op = mp_self_div; _cimg_mp_op("Operator '/='"); break; + case '%' : op = mp_self_modulo; _cimg_mp_op("Operator '%='"); break; + case '<' : op = mp_self_bitwise_left_shift; _cimg_mp_op("Operator '<<='"); break; + case '>' : op = mp_self_bitwise_right_shift; _cimg_mp_op("Operator '>>='"); break; + case '&' : op = mp_self_bitwise_and; _cimg_mp_op("Operator '&='"); break; + case '|' : op = mp_self_bitwise_or; _cimg_mp_op("Operator '|='"); break; + default : op = mp_self_pow; _cimg_mp_op("Operator '^='"); break; + } + s1 = *ps=='>' || *ps=='<'?ns:ps; + + ref.assign(7); + arg1 = compile(ss,s1,depth1,ref,is_critical); // Variable slot + arg2 = compile(s + 1,se,depth1,0,is_critical); // Value to apply + + // Check for particular case to be simplified. + if ((op==mp_self_add || op==mp_self_sub) && !arg2) _cimg_mp_return(arg1); + if ((op==mp_self_mul || op==mp_self_div) && arg2==1) _cimg_mp_return(arg1); + + // Apply operator on a copy to prevent modifying a constant or a variable. + if (*ref && (_cimg_mp_is_constant(arg1) || _cimg_mp_is_vector(arg1) || _cimg_mp_is_variable(arg1))) { + if (_cimg_mp_is_vector(arg1)) arg1 = vector_copy(arg1); + else arg1 = scalar1(mp_copy,arg1); + } + + if (*ref==1) { // Vector value (scalar): V[k] += scalar + _cimg_mp_check_type(arg2,2,1,0); + arg3 = ref[1]; // Vector slot + arg4 = ref[2]; // Index + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + CImg::vector((ulongT)mp_vector_set_off,arg1,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + _cimg_mp_return(arg1); + } + + if (*ref==2) { // Image value (scalar): i/j[_#ind,off] += scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg1,p1,arg3).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg1,arg3).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (*ref==3) { // Image value (scalar): i/j(_#ind,_x,_y,_z,_c) += scalar + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,1,0); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + arg6 = ref[6]; // C + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg1,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg1,arg3,arg4,arg5,arg6).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off] += value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (_cimg_mp_is_scalar(arg2)) self_vector_s(arg1,op,arg2); else self_vector_v(arg1,op,arg2); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c) += value + if (!is_critical) is_parallelizable = false; + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + if (_cimg_mp_is_scalar(arg2)) self_vector_s(arg1,op,arg2); else self_vector_v(arg1,op,arg2); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(arg1); + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(arg1); + } + + if (_cimg_mp_is_vector(arg1)) { // Vector variable: V += value + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg2)) self_vector_v(arg1,op,arg2); // Vector += vector + else self_vector_s(arg1,op,arg2); // Vector += scalar + _cimg_mp_return(arg1); + } + + if (_cimg_mp_is_variable(arg1)) { // Scalar variable: s += scalar + _cimg_mp_check_type(arg2,2,1,0); + CImg::vector((ulongT)op,arg1,arg2).move_to(code); + _cimg_mp_return(arg1); + } + + variable_name.assign(ss,(unsigned int)(s - ss)).back() = 0; + cimg::strpare(variable_name,false,true); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid %slvalue '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"const ":"", + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + for (s = ss1; s::vector((ulongT)mp_if,pos,arg1,arg2,arg3, + p3 - p2,code._width - p3,arg4).move_to(code,p2); + _cimg_mp_return(pos); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='|' && *ns=='|' && level[s - expr._data]==clevel) { // Logical or ('||') + _cimg_mp_op("Operator '||'"); + arg1 = compile(ss,s,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,1,0); + if (arg1>0 && arg1<=16) _cimg_mp_return(1); + p2 = code._width; + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,1,0); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(mem[arg1] || mem[arg2]); + if (!arg1) _cimg_mp_return(arg2); + pos = scalar(); + CImg::vector((ulongT)mp_logical_or,pos,arg1,arg2,code._width - p2). + move_to(code,p2); + _cimg_mp_return(pos); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='&' && *ns=='&' && level[s - expr._data]==clevel) { // Logical and ('&&') + _cimg_mp_op("Operator '&&'"); + arg1 = compile(ss,s,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,1,0); + if (!arg1) _cimg_mp_return(0); + p2 = code._width; + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,1,0); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(mem[arg1] && mem[arg2]); + if (arg1>0 && arg1<=16) _cimg_mp_return(arg2); + pos = scalar(); + CImg::vector((ulongT)mp_logical_and,pos,arg1,arg2,code._width - p2). + move_to(code,p2); + _cimg_mp_return(pos); + } + + for (s = se2; s>ss; --s) + if (*s=='|' && level[s - expr._data]==clevel) { // Bitwise or ('|') + _cimg_mp_op("Operator '|'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_bitwise_or,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_vector2_vs(mp_bitwise_or,arg1,arg2); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + if (!arg1) _cimg_mp_return(arg2); + _cimg_mp_vector2_sv(mp_bitwise_or,arg1,arg2); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1] | (longT)mem[arg2]); + if (!arg2) _cimg_mp_return(arg1); + if (!arg1) _cimg_mp_return(arg2); + _cimg_mp_scalar2(mp_bitwise_or,arg1,arg2); + } + + for (s = se2; s>ss; --s) + if (*s=='&' && level[s - expr._data]==clevel) { // Bitwise and ('&') + _cimg_mp_op("Operator '&'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_bitwise_and,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_bitwise_and,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_bitwise_and,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1] & (longT)mem[arg2]); + if (!arg1 || !arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_bitwise_and,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='!' && *ns=='=' && level[s - expr._data]==clevel) { // Not equal to ('!=') + _cimg_mp_op("Operator '!='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + if (arg1==arg2) _cimg_mp_return(0); + p1 = _cimg_mp_size(arg1); + p2 = _cimg_mp_size(arg2); + if (p1 || p2) { + if (p1 && p2 && p1!=p2) _cimg_mp_return(1); + pos = scalar(); + CImg::vector((ulongT)mp_vector_neq,pos,arg1,p1,arg2,p2,11,1).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]!=mem[arg2]); + _cimg_mp_scalar2(mp_neq,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='=' && *ns=='=' && level[s - expr._data]==clevel) { // Equal to ('==') + _cimg_mp_op("Operator '=='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + if (arg1==arg2) _cimg_mp_return(1); + p1 = _cimg_mp_size(arg1); + p2 = _cimg_mp_size(arg2); + if (p1 || p2) { + if (p1 && p2 && p1!=p2) _cimg_mp_return(0); + pos = scalar(); + CImg::vector((ulongT)mp_vector_eq,pos,arg1,p1,arg2,p2,11,1).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]==mem[arg2]); + _cimg_mp_scalar2(mp_eq,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='<' && *ns=='=' && level[s - expr._data]==clevel) { // Less or equal than ('<=') + _cimg_mp_op("Operator '<='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_lte,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_lte,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_lte,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]<=mem[arg2]); + if (arg1==arg2) _cimg_mp_return(1); + _cimg_mp_scalar2(mp_lte,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='>' && *ns=='=' && level[s - expr._data]==clevel) { // Greater or equal than ('>=') + _cimg_mp_op("Operator '>='"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_gte,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_gte,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_gte,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]>=mem[arg2]); + if (arg1==arg2) _cimg_mp_return(1); + _cimg_mp_scalar2(mp_gte,arg1,arg2); + } + + for (s = se2, ns = se1, ps = se3; s>ss; --s, --ns, --ps) + if (*s=='<' && *ns!='<' && *ps!='<' && level[s - expr._data]==clevel) { // Less than ('<') + _cimg_mp_op("Operator '<'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_lt,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_lt,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_lt,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]ss; --s, --ns, --ps) + if (*s=='>' && *ns!='>' && *ps!='>' && level[s - expr._data]==clevel) { // Greater than ('>') + _cimg_mp_op("Operator '>'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_gt,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_gt,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_gt,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]>mem[arg2]); + if (arg1==arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_gt,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='<' && *ns=='<' && level[s - expr._data]==clevel) { // Left bit shift ('<<') + _cimg_mp_op("Operator '<<'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_vv(mp_bitwise_left_shift,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_vector2_vs(mp_bitwise_left_shift,arg1,arg2); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_sv(mp_bitwise_left_shift,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1]<<(unsigned int)mem[arg2]); + if (!arg1) _cimg_mp_return(0); + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_scalar2(mp_bitwise_left_shift,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='>' && *ns=='>' && level[s - expr._data]==clevel) { // Right bit shift ('>>') + _cimg_mp_op("Operator '>>'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_vv(mp_bitwise_right_shift,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_vector2_vs(mp_bitwise_right_shift,arg1,arg2); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) + _cimg_mp_vector2_sv(mp_bitwise_right_shift,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant((longT)mem[arg1]>>(unsigned int)mem[arg2]); + if (!arg1) _cimg_mp_return(0); + if (!arg2) _cimg_mp_return(arg1); + _cimg_mp_scalar2(mp_bitwise_right_shift,arg1,arg2); + } + + for (ns = se1, s = se2, ps = pexpr._data + (se3 - expr._data); s>ss; --ns, --s, --ps) + if (*s=='+' && (*ns!='+' || ns!=se1) && *ps!='-' && *ps!='+' && *ps!='*' && *ps!='/' && *ps!='%' && + *ps!='&' && *ps!='|' && *ps!='^' && *ps!='!' && *ps!='~' && *ps!='#' && + (*ps!='e' || !(ps - pexpr._data>ss - expr._data && (*(ps - 1)=='.' || (*(ps - 1)>='0' && + *(ps - 1)<='9')))) && + level[s - expr._data]==clevel) { // Addition ('+') + _cimg_mp_op("Operator '+'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (!arg2) _cimg_mp_return(arg1); + if (!arg1) _cimg_mp_return(arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_add,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_add,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_add,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1] + mem[arg2]); + if (code) { // Try to spot linear case 'a*b + c' + CImg &pop = code.back(); + if (pop[0]==(ulongT)mp_mul && _cimg_mp_is_comp(pop[1]) && (pop[1]==arg1 || pop[1]==arg2)) { + arg3 = (unsigned int)pop[1]; + arg4 = (unsigned int)pop[2]; + arg5 = (unsigned int)pop[3]; + code.remove(); + CImg::vector((ulongT)mp_linear_add,arg3,arg4,arg5,arg3==arg2?arg1:arg2).move_to(code); + _cimg_mp_return(arg3); + } + } + if (arg2==1) _cimg_mp_scalar1(mp_increment,arg1); + if (arg1==1) _cimg_mp_scalar1(mp_increment,arg2); + _cimg_mp_scalar2(mp_add,arg1,arg2); + } + + for (ns = se1, s = se2, ps = pexpr._data + (se3 - expr._data); s>ss; --ns, --s, --ps) + if (*s=='-' && (*ns!='-' || ns!=se1) && *ps!='-' && *ps!='+' && *ps!='*' && *ps!='/' && *ps!='%' && + *ps!='&' && *ps!='|' && *ps!='^' && *ps!='!' && *ps!='~' && *ps!='#' && + (*ps!='e' || !(ps - pexpr._data>ss - expr._data && (*(ps - 1)=='.' || (*(ps - 1)>='0' && + *(ps - 1)<='9')))) && + level[s - expr._data]==clevel) { // Subtraction ('-') + _cimg_mp_op("Operator '-'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (!arg2) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_sub,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_sub,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + if (!arg1) _cimg_mp_vector1_v(mp_minus,arg2); + _cimg_mp_vector2_sv(mp_sub,arg1,arg2); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1] - mem[arg2]); + if (!arg1) _cimg_mp_scalar1(mp_minus,arg2); + if (code) { // Try to spot linear cases 'a*b - c' and 'c - a*b' + CImg &pop = code.back(); + if (pop[0]==(ulongT)mp_mul && _cimg_mp_is_comp(pop[1]) && (pop[1]==arg1 || pop[1]==arg2)) { + arg3 = (unsigned int)pop[1]; + arg4 = (unsigned int)pop[2]; + arg5 = (unsigned int)pop[3]; + code.remove(); + CImg::vector((ulongT)(arg3==arg1?mp_linear_sub_left:mp_linear_sub_right), + arg3,arg4,arg5,arg3==arg1?arg2:arg1).move_to(code); + _cimg_mp_return(arg3); + } + } + if (arg2==1) _cimg_mp_scalar1(mp_decrement,arg1); + _cimg_mp_scalar2(mp_sub,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='*' && *ns=='*' && level[s - expr._data]==clevel) { // Complex multiplication ('**') + _cimg_mp_op("Operator '**'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,3,2); + _cimg_mp_check_type(arg2,2,3,2); + if (arg2==1) _cimg_mp_return(arg1); + if (arg1==1) _cimg_mp_return(arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) { + pos = vector(2); + CImg::vector((ulongT)mp_complex_mul,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_mul,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_mul,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]*mem[arg2]); + if (!arg1 || !arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_mul,arg1,arg2); + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='/' && *ns=='/' && level[s - expr._data]==clevel) { // Complex division ('//') + _cimg_mp_op("Operator '//'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,3,2); + _cimg_mp_check_type(arg2,2,3,2); + if (arg2==1) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) { + pos = vector(2); + CImg::vector((ulongT)mp_complex_div_vv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_div,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + pos = vector(2); + CImg::vector((ulongT)mp_complex_div_sv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]/mem[arg2]); + if (!arg1) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_div,arg1,arg2); + } + + for (s = se2; s>ss; --s) if (*s=='*' && level[s - expr._data]==clevel) { // Multiplication ('*') + _cimg_mp_op("Operator '*'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + p2 = _cimg_mp_size(arg2); + if (p2>0 && (ulongT)_cimg_mp_size(arg1)==(ulongT)p2*p2) { // Particular case of matrix multiplication + pos = vector(p2); + CImg::vector((ulongT)mp_matrix_mul,pos,arg1,arg2,p2,p2,1).move_to(code); + _cimg_mp_return(pos); + } + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (arg2==1) _cimg_mp_return(arg1); + if (arg1==1) _cimg_mp_return(arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_mul,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_mul,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_mul,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]*mem[arg2]); + + if (code) { // Try to spot double multiplication 'a*b*c' + CImg &pop = code.back(); + if (pop[0]==(ulongT)mp_mul && _cimg_mp_is_comp(pop[1]) && (pop[1]==arg1 || pop[1]==arg2)) { + arg3 = (unsigned int)pop[1]; + arg4 = (unsigned int)pop[2]; + arg5 = (unsigned int)pop[3]; + code.remove(); + CImg::vector((ulongT)mp_mul2,arg3,arg4,arg5,arg3==arg2?arg1:arg2).move_to(code); + _cimg_mp_return(arg3); + } + } + if (!arg1 || !arg2) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_mul,arg1,arg2); + } + + for (s = se2; s>ss; --s) if (*s=='/' && level[s - expr._data]==clevel) { // Division ('/') + _cimg_mp_op("Operator '/'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (arg2==1) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_div,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_div,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_div,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) _cimg_mp_constant(mem[arg1]/mem[arg2]); + if (!arg1) _cimg_mp_return(0); + _cimg_mp_scalar2(mp_div,arg1,arg2); + } + + for (s = se2, ns = se1; s>ss; --s, --ns) + if (*s=='%' && *ns!='^' && level[s - expr._data]==clevel) { // Modulo ('%') + _cimg_mp_op("Operator '%'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_modulo,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_modulo,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_modulo,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(cimg::mod(mem[arg1],mem[arg2])); + _cimg_mp_scalar2(mp_modulo,arg1,arg2); + } + + if (se1>ss) { + if (*ss=='+' && (*ss1!='+' || (ss2='0' && *ss2<='9'))) { // Unary plus ('+') + _cimg_mp_op("Operator '+'"); + _cimg_mp_return(compile(ss1,se,depth1,0,is_critical)); + } + + if (*ss=='-' && (*ss1!='-' || (ss2='0' && *ss2<='9'))) { // Unary minus ('-') + _cimg_mp_op("Operator '-'"); + arg1 = compile(ss1,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_minus,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(-mem[arg1]); + _cimg_mp_scalar1(mp_minus,arg1); + } + + if (*ss=='!') { // Logical not ('!') + _cimg_mp_op("Operator '!'"); + if (*ss1=='!') { // '!!expr' optimized as 'bool(expr)' + arg1 = compile(ss2,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bool,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((bool)mem[arg1]); + _cimg_mp_scalar1(mp_bool,arg1); + } + arg1 = compile(ss1,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_logical_not,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(!mem[arg1]); + _cimg_mp_scalar1(mp_logical_not,arg1); + } + + if (*ss=='~') { // Bitwise not ('~') + _cimg_mp_op("Operator '~'"); + arg1 = compile(ss1,se,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bitwise_not,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(~(unsigned int)mem[arg1]); + _cimg_mp_scalar1(mp_bitwise_not,arg1); + } + } + + for (s = se3, ns = se2; s>ss; --s, --ns) + if (*s=='^' && *ns=='^' && level[s - expr._data]==clevel) { // Complex power ('^^') + _cimg_mp_op("Operator '^^'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 2,se,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,3,2); + _cimg_mp_check_type(arg2,2,3,2); + if (arg2==1) _cimg_mp_return(arg1); + pos = vector(2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) { + CImg::vector((ulongT)mp_complex_pow_vv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) { + CImg::vector((ulongT)mp_complex_pow_vs,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) { + CImg::vector((ulongT)mp_complex_pow_sv,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + CImg::vector((ulongT)mp_complex_pow_ss,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + + for (s = se2; s>ss; --s) + if (*s=='^' && level[s - expr._data]==clevel) { // Power ('^') + _cimg_mp_op("Operator '^'"); + arg1 = compile(ss,s,depth1,0,is_critical); + arg2 = compile(s + 1,se,depth1,0,is_critical); + _cimg_mp_check_type(arg2,2,3,_cimg_mp_size(arg1)); + if (arg2==1) _cimg_mp_return(arg1); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_vv(mp_pow,arg1,arg2); + if (_cimg_mp_is_vector(arg1) && _cimg_mp_is_scalar(arg2)) _cimg_mp_vector2_vs(mp_pow,arg1,arg2); + if (_cimg_mp_is_scalar(arg1) && _cimg_mp_is_vector(arg2)) _cimg_mp_vector2_sv(mp_pow,arg1,arg2); + if (_cimg_mp_is_constant(arg1) && _cimg_mp_is_constant(arg2)) + _cimg_mp_constant(std::pow(mem[arg1],mem[arg2])); + switch (arg2) { + case 0 : _cimg_mp_return(1); + case 2 : _cimg_mp_scalar1(mp_sqr,arg1); + case 3 : _cimg_mp_scalar1(mp_pow3,arg1); + case 4 : _cimg_mp_scalar1(mp_pow4,arg1); + default : + if (_cimg_mp_is_constant(arg2)) { + if (mem[arg2]==0.5) { _cimg_mp_scalar1(mp_sqrt,arg1); } + else if (mem[arg2]==0.25) { _cimg_mp_scalar1(mp_pow0_25,arg1); } + } + _cimg_mp_scalar2(mp_pow,arg1,arg2); + } + } + + // Percentage computation. + if (*se1=='%') { + arg1 = compile(ss,se1,depth1,0,is_critical); + arg2 = _cimg_mp_is_constant(arg1)?0:constant(100); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector2_vs(mp_div,arg1,arg2); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(mem[arg1]/100); + _cimg_mp_scalar2(mp_div,arg1,arg2); + } + + is_sth = ss1ss && (*se1=='+' || *se1=='-') && *se2==*se1)) { // Pre/post-decrement and increment + if ((is_sth && *ss=='+') || (!is_sth && *se1=='+')) { + _cimg_mp_op("Operator '++'"); + op = mp_self_increment; + } else { + _cimg_mp_op("Operator '--'"); + op = mp_self_decrement; + } + ref.assign(7); + arg1 = is_sth?compile(ss2,se,depth1,ref,is_critical): + compile(ss,se2,depth1,ref,is_critical); // Variable slot + + // Apply operator on a copy to prevent modifying a constant or a variable. + if (*ref && (_cimg_mp_is_constant(arg1) || _cimg_mp_is_vector(arg1) || _cimg_mp_is_variable(arg1))) { + if (_cimg_mp_is_vector(arg1)) arg1 = vector_copy(arg1); + else arg1 = scalar1(mp_copy,arg1); + } + + if (is_sth) pos = arg1; // Determine return index, depending on pre/post action + else { + if (_cimg_mp_is_vector(arg1)) pos = vector_copy(arg1); + else pos = scalar1(mp_copy,arg1); + } + + if (*ref==1) { // Vector value (scalar): V[k]++ + arg3 = ref[1]; // Vector slot + arg4 = ref[2]; // Index + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + CImg::vector((ulongT)op,arg1,1).move_to(code); + CImg::vector((ulongT)mp_vector_set_off,arg1,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + _cimg_mp_return(pos); + } + + if (*ref==2) { // Image value (scalar): i/j[_#ind,off]++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + CImg::vector((ulongT)op,arg1).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg1,p1,arg3).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg1,arg3).move_to(code); + } + _cimg_mp_return(pos); + } + + if (*ref==3) { // Image value (scalar): i/j(_#ind,_x,_y,_z,_c)++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + arg6 = ref[6]; // C + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + CImg::vector((ulongT)op,arg1).move_to(code); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg1,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg1,arg3,arg4,arg5,arg6).move_to(code); + } + _cimg_mp_return(pos); + } + + if (*ref==4) { // Image value (vector): I/J[_#ind,off]++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // Offset + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + self_vector_s(arg1,op==mp_self_increment?mp_self_add:mp_self_sub,1); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(pos); + } + + if (*ref==5) { // Image value (vector): I/J(_#ind,_x,_y,_z,_c)++ + if (!is_critical) is_parallelizable = false; + p1 = ref[1]; // Index + is_relative = (bool)ref[2]; + arg3 = ref[3]; // X + arg4 = ref[4]; // Y + arg5 = ref[5]; // Z + if (is_sth && p_ref) std::memcpy(p_ref,ref,ref._width*sizeof(unsigned int)); + self_vector_s(arg1,op==mp_self_increment?mp_self_add:mp_self_sub,1); + if (p1!=~0U) { + if (!listout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } else { + if (!imgout) _cimg_mp_return(pos); + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + _cimg_mp_return(pos); + } + + if (_cimg_mp_is_vector(arg1)) { // Vector variable: V++ + self_vector_s(arg1,op==mp_self_increment?mp_self_add:mp_self_sub,1); + _cimg_mp_return(pos); + } + + if (_cimg_mp_is_variable(arg1)) { // Scalar variable: s++ + CImg::vector((ulongT)op,arg1).move_to(code); + _cimg_mp_return(pos); + } + + if (is_sth) variable_name.assign(ss2,(unsigned int)(se - ss1)); + else variable_name.assign(ss,(unsigned int)(se1 - ss)); + variable_name.back() = 0; + cimg::strpare(variable_name,false,true); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid %slvalue '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"const ":"", + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + // Array-like access to vectors and image values 'i/j/I/J[_#ind,offset,_boundary]' and 'vector[offset]'. + if (*se1==']') { + _cimg_mp_op("Value accessor '[]'"); + + // Find opening bracket for the offset. + s0 = se1; while (s0>ss && (*s0!='[' || level[s0 - expr._data]!=clevel)) --s0; + if (s0>ss) { s1 = s0; do { --s1; } while (cimg::is_blank(*s1)); cimg::swap(*s0,*++s1); } + is_sth=s0>ss && *(s0-1)==']'; // Particular case s.a. '..[..][..]' ? + is_relative = *ss=='j' || *ss=='J'; + + if (!is_sth && (*ss=='I' || *ss=='J') && *ss1=='[' && + (reserved_label[(int)*ss]==~0U || + !_cimg_mp_is_vector(reserved_label[(int)*ss]))) { // Image value as a vector + if (*ss2=='#') { // Index specified + s0 = ss3; while (s0::vector((ulongT)(is_relative?mp_list_Joff:mp_list_Ioff), + pos,p1,arg1,arg2==~0U?_cimg_mp_boundary:arg2,p2).move_to(code); + } else { + need_input_copy = true; + CImg::vector((ulongT)(is_relative?mp_Joff:mp_Ioff), + pos,arg1,arg2==~0U?_cimg_mp_boundary:arg2,p2).move_to(code); + } + _cimg_mp_return(pos); + } + + if (!is_sth && (*ss=='i' || *ss=='j') && *ss1=='[' && + (reserved_label[(int)*ss]==~0U || + !_cimg_mp_is_vector(reserved_label[(int)*ss]))) { // Image value as a scalar + if (*ss2=='#') { // Index specified + s0 = ss3; while (s0ss && (*s0!='[' || level[s0 - expr._data]!=clevel)) --s0; + if (s0>ss) { // Vector element + arg1 = compile(ss,s0,depth1,0,is_critical); + if (_cimg_mp_is_scalar(arg1)) { + variable_name.assign(ss,(unsigned int)(s0 - ss + 1)).back() = 0; + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Array brackets used on non-vector variable '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + + } + s1 = s0 + 1; while (s1 sub-vector extraction + p1 = _cimg_mp_size(arg1); + arg2 = compile(++s0,s1,depth1,0,is_critical); // Starting index + s0 = ++s1; while (s0::vector((ulongT)mp_vector_crop,pos,arg1,p1,arg2,arg3,arg4).move_to(code); + _cimg_mp_return(pos); + } + + // One argument -> vector value reference + arg2 = compile(++s0,se1,depth1,0,is_critical); + if (_cimg_mp_is_constant(arg2)) { // Constant index + nb = (int)mem[arg2]; + if (nb>=0 && nb<(int)_cimg_mp_size(arg1)) _cimg_mp_return(arg1 + 1 + nb); + variable_name.assign(ss,(unsigned int)(s0 - ss)).back() = 0; + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Out-of-bounds reference '%s[%d]' " + "(vector '%s' has dimension %u), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + variable_name._data,nb, + variable_name._data,_cimg_mp_size(arg1), + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (p_ref) { + *p_ref = 1; + p_ref[1] = arg1; + p_ref[2] = arg2; + if (_cimg_mp_is_comp(arg2)) memtype[arg2] = -2; // Prevent from being used in further optimization + } + pos = scalar3(mp_vector_off,arg1,_cimg_mp_size(arg1),arg2); + memtype[pos] = -2; // Prevent from being used in further optimization + _cimg_mp_return(pos); + } + } + + // Look for a function call, an access to image value, or a parenthesis. + if (*se1==')') { + if (*ss=='(') _cimg_mp_return(compile(ss1,se1,depth1,p_ref,is_critical)); // Simple parentheses + _cimg_mp_op("Value accessor '()'"); + is_relative = *ss=='j' || *ss=='J'; + s0 = s1 = std::strchr(ss,'('); if (s0) { do { --s1; } while (cimg::is_blank(*s1)); cimg::swap(*s0,*++s1); } + + // I/J(_#ind,_x,_y,_z,_interpolation,_boundary_conditions) + if ((*ss=='I' || *ss=='J') && *ss1=='(') { // Image value as scalar + if (*ss2=='#') { // Index specified + s0 = ss3; while (s01) { + arg2 = arg1 + 1; + if (p2>2) arg3 = arg2 + 1; + } + if (s1::vector((ulongT)(is_relative?mp_list_Jxyz:mp_list_Ixyz), + pos,p1,arg1,arg2,arg3, + arg4==~0U?_cimg_mp_interpolation:arg4, + arg5==~0U?_cimg_mp_boundary:arg5,p2).move_to(code); + else { + need_input_copy = true; + CImg::vector((ulongT)(is_relative?mp_Jxyz:mp_Ixyz), + pos,arg1,arg2,arg3, + arg4==~0U?_cimg_mp_interpolation:arg4, + arg5==~0U?_cimg_mp_boundary:arg5,p2).move_to(code); + } + _cimg_mp_return(pos); + } + + // i/j(_#ind,_x,_y,_z,_c,_interpolation,_boundary_conditions) + if ((*ss=='i' || *ss=='j') && *ss1=='(') { // Image value as scalar + if (*ss2=='#') { // Index specified + s0 = ss3; while (s01) { + arg2 = arg1 + 1; + if (p2>2) { + arg3 = arg2 + 1; + if (p2>3) arg4 = arg3 + 1; + } + } + if (s1::vector((ulongT)(*ss3=='0'?mp_arg0:mp_arg),0,0,p2,arg1,arg2).move_to(l_opcode); + for (s = ++s2; s::vector(arg3).move_to(l_opcode); + ++p3; + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + if (_cimg_mp_is_constant(arg1)) { + p3-=1; // Number of args + if (*ss3=='0') arg1 = (unsigned int)(mem[arg1]<0?mem[arg1] + p3:mem[arg1] + 1); + else arg1 = (unsigned int)(mem[arg1]<0?mem[arg1] + p3:mem[arg1]); + if (arg1::vector((ulongT)mp_break,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"breakpoint(",11)) { // Break point (for abort test) + _cimg_mp_op("Function 'breakpoint()'"); + if (pexpr[se2 - expr._data]=='(') { // no arguments? + CImg::vector((ulongT)mp_breakpoint,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"bool(",5)) { // Boolean cast + _cimg_mp_op("Function 'bool()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_bool,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((bool)mem[arg1]); + _cimg_mp_scalar1(mp_bool,arg1); + } + + if (!std::strncmp(ss,"begin(",6)) { // Begin + _cimg_mp_op("Function 'begin()'"); + code.swap(code_begin); + arg1 = compile(ss6,se1,depth1,p_ref,true); + code.swap(code_begin); + _cimg_mp_return(arg1); + } + + if (!std::strncmp(ss,"begin_t(",8)) { // Begin thread + _cimg_mp_op("Function 'begin_t()'"); + code.swap(code_begin_t); + arg1 = compile(ss8,se1,depth1,p_ref,true); + code.swap(code_begin_t); + _cimg_mp_return(arg1); + } + break; + + case 'c' : + if (!std::strncmp(ss,"cabs(",5)) { // Complex absolute value + _cimg_mp_op("Function 'cabs()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_scalar2(mp_complex_abs,arg1,0); + _cimg_mp_scalar2(mp_complex_abs,arg1 + 1,arg1 + 2); + } + + if (!std::strncmp(ss,"carg(",5)) { // Complex argument + _cimg_mp_op("Function 'carg()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_scalar2(mp_atan2,0,arg1); + _cimg_mp_scalar2(mp_atan2,arg1 + 2,arg1 + 1); + } + + if (!std::strncmp(ss,"cbrt(",5)) { // Cubic root + _cimg_mp_op("Function 'cbrt()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_cbrt,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::cbrt(mem[arg1])); + _cimg_mp_scalar1(mp_cbrt,arg1); + } + + if (!std::strncmp(ss,"cconj(",6)) { // Complex conjugate + _cimg_mp_op("Function 'cconj()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_conj,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_conj,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ceil(",5)) { // Ceil + _cimg_mp_op("Function 'ceil()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_ceil,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::ceil(mem[arg1])); + _cimg_mp_scalar1(mp_ceil,arg1); + } + + if (!std::strncmp(ss,"cexp(",5)) { // Complex exponential + _cimg_mp_op("Function 'cexp()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_exp,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_exp,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"clog(",5)) { // Complex logarithm + _cimg_mp_op("Function 'clog()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_log,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_log,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ccos(",5)) { // Complex cosine + _cimg_mp_op("Function 'ccos()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_cos,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_cos,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"csin(",5)) { // Complex sine + _cimg_mp_op("Function 'csin()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_sin,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_sin,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ctan(",5)) { // Complex tangent + _cimg_mp_op("Function 'ctan()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_tan,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_tan,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ccosh(",6)) { // Complex hyperbolic cosine + _cimg_mp_op("Function 'ccosh()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_cosh,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_cosh,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"csinh(",6)) { // Complex hyperbolic sine + _cimg_mp_op("Function 'csinh()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_sinh,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_sinh,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ctanh(",6)) { // Complex hyperbolic tangent + _cimg_mp_op("Function 'ctanh()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,0,3,2); + pos = vector(2); + if (_cimg_mp_is_scalar(arg1)) CImg::vector((ulongT)mp_complex_tanh,pos,arg1,0).move_to(code); + else CImg::vector((ulongT)mp_complex_tanh,pos,arg1 + 1,arg1 + 2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"continue(",9)) { // Continue loop + if (pexpr[se2 - expr._data]=='(') { // no arguments? + CImg::vector((ulongT)mp_continue,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"copy(",5)) { // Memory copy + _cimg_mp_op("Function 'copy()'"); + ref.assign(14); + s1 = ss5; while (s1=4 && arg4==~0U) arg4 = scalar1(mp_image_whd,ref[1]); + } + if (_cimg_mp_is_vector(arg2)) { + if (arg3==~0U) arg3 = constant(_cimg_mp_size(arg2)); + if (!ref[7]) ++arg2; + if (ref[7]>=4 && arg5==~0U) arg5 = scalar1(mp_image_whd,ref[8]); + } + if (arg3==~0U) arg3 = 1; + if (arg4==~0U) arg4 = 1; + if (arg5==~0U) arg5 = 1; + _cimg_mp_check_type(arg3,3,1,0); + _cimg_mp_check_type(arg4,4,1,0); + _cimg_mp_check_type(arg5,5,1,0); + _cimg_mp_check_type(arg6,5,1,0); + CImg(1,22).move_to(code); + code.back().get_shared_rows(0,7).fill((ulongT)mp_memcopy,p1,arg1,arg2,arg3,arg4,arg5,arg6); + code.back().get_shared_rows(8,21).fill(ref); + _cimg_mp_return(p1); + } + + if (!std::strncmp(ss,"cos(",4)) { // Cosine + _cimg_mp_op("Function 'cos()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_cos,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::cos(mem[arg1])); + _cimg_mp_scalar1(mp_cos,arg1); + } + + if (!std::strncmp(ss,"cosh(",5)) { // Hyperbolic cosine + _cimg_mp_op("Function 'cosh()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_cosh,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::cosh(mem[arg1])); + _cimg_mp_scalar1(mp_cosh,arg1); + } + + if (!std::strncmp(ss,"critical(",9)) { // Critical section (single thread at a time) + _cimg_mp_op("Function 'critical()'"); + p1 = code._width; + arg1 = compile(ss + 9,se1,depth1,p_ref,true); + CImg::vector((ulongT)mp_critical,arg1,code._width - p1).move_to(code,p1); + _cimg_mp_return(arg1); + } + + if (!std::strncmp(ss,"crop(",5)) { // Image crop + _cimg_mp_op("Function 'crop()'"); + if (*ss5=='#') { // Index specified + s0 = ss6; while (s0::sequence(_cimg_mp_size(arg1),arg1 + 1, + arg1 + (ulongT)_cimg_mp_size(arg1)); + opcode.resize(1,std::min(opcode._height,4U),1,1,0).move_to(l_opcode); + is_sth = true; + } else { + _cimg_mp_check_type(arg1,pos + 1,1,0); + CImg::vector(arg1).move_to(l_opcode); + } + s = ns; + } + (l_opcode>'y').move_to(opcode); + + arg1 = 0; arg2 = (p1!=~0U); + switch (opcode._height) { + case 0 : case 1 : + CImg::vector(0,0,0,0,~0U,~0U,~0U,~0U,0).move_to(opcode); + break; + case 2 : + CImg::vector(*opcode,0,0,0,opcode[1],~0U,~0U,~0U,_cimg_mp_boundary).move_to(opcode); + arg1 = arg2 + 2; + break; + case 3 : + CImg::vector(*opcode,0,0,0,opcode[1],~0U,~0U,~0U,opcode[2]).move_to(opcode); + arg1 = arg2 + 2; + break; + case 4 : + CImg::vector(*opcode,opcode[1],0,0,opcode[2],opcode[3],~0U,~0U,_cimg_mp_boundary). + move_to(opcode); + arg1 = arg2 + (is_sth?2:3); + break; + case 5 : + CImg::vector(*opcode,opcode[1],0,0,opcode[2],opcode[3],~0U,~0U,opcode[4]). + move_to(opcode); + arg1 = arg2 + (is_sth?2:3); + break; + case 6 : + CImg::vector(*opcode,opcode[1],opcode[2],0,opcode[3],opcode[4],opcode[5],~0U, + _cimg_mp_boundary).move_to(opcode); + arg1 = arg2 + (is_sth?2:4); + break; + case 7 : + CImg::vector(*opcode,opcode[1],opcode[2],0,opcode[3],opcode[4],opcode[5],~0U, + opcode[6]).move_to(opcode); + arg1 = arg2 + (is_sth?2:4); + break; + case 8 : + CImg::vector(*opcode,opcode[1],opcode[2],opcode[3],opcode[4],opcode[5],opcode[6], + opcode[7],_cimg_mp_boundary).move_to(opcode); + arg1 = arg2 + (is_sth?2:5); + break; + case 9 : + arg1 = arg2 + (is_sth?2:5); + break; + default : // Error -> too much arguments + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Too much arguments specified, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + _cimg_mp_check_type((unsigned int)*opcode,arg2 + 1,1,0); + _cimg_mp_check_type((unsigned int)opcode[1],arg2 + 1 + (is_sth?0:1),1,0); + _cimg_mp_check_type((unsigned int)opcode[2],arg2 + 1 + (is_sth?0:2),1,0); + _cimg_mp_check_type((unsigned int)opcode[3],arg2 + 1 + (is_sth?0:3),1,0); + if (opcode[4]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[4],arg1,3); + opcode[4] = (ulongT)mem[opcode[4]]; + } + if (opcode[5]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[5],arg1 + 1,3); + opcode[5] = (ulongT)mem[opcode[5]]; + } + if (opcode[6]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[6],arg1 + 2,3); + opcode[6] = (ulongT)mem[opcode[6]]; + } + if (opcode[7]!=(ulongT)~0U) { + _cimg_mp_check_constant((unsigned int)opcode[7],arg1 + 3,3); + opcode[7] = (ulongT)mem[opcode[7]]; + } + _cimg_mp_check_type((unsigned int)opcode[8],arg1 + 4,1,0); + + if (opcode[4]==(ulongT)~0U || opcode[5]==(ulongT)~0U || + opcode[6]==(ulongT)~0U || opcode[7]==(ulongT)~0U) { + p2 = 0; + if (p1!=~0U) { + _cimg_mp_check_constant(p1,1,1); + p2 = (unsigned int)cimg::mod((int)mem[p1],listin.width()); + } + const CImg &img = p1!=~0U?listin[p2]:imgin; + if (!img) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Cannot crop empty image when " + "some xyzc-coordinates are unspecified, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (opcode[4]==(ulongT)~0U) opcode[4] = (ulongT)img._width; + if (opcode[5]==(ulongT)~0U) opcode[5] = (ulongT)img._height; + if (opcode[6]==(ulongT)~0U) opcode[6] = (ulongT)img._depth; + if (opcode[7]==(ulongT)~0U) opcode[7] = (ulongT)img._spectrum; + } + + pos = vector((unsigned int)(opcode[4]*opcode[5]*opcode[6]*opcode[7])); + CImg::vector((ulongT)mp_crop, + pos,p1, + *opcode,opcode[1],opcode[2],opcode[3], + opcode[4],opcode[5],opcode[6],opcode[7], + opcode[8]).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"cross(",6)) { // Cross product + _cimg_mp_op("Function 'cross()'"); + s1 = ss6; while (s1::vector((ulongT)mp_cross,pos,arg1,arg2).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"cut(",4)) { // Cut + _cimg_mp_op("Function 'cut()'"); + s1 = ss4; while (s1val2?val2:val); + } + _cimg_mp_scalar3(mp_cut,arg1,arg2,arg3); + } + + if (!std::strncmp(ss,"convolve(",9) || !std::strncmp(ss,"correlate(",10)) { // Convolve & Correlate + is_sth = *ss2=='n'; // is_convolve? + _cimg_mp_op(is_sth?"Function 'convolve()'":"Function 'correlate()'"); + op = is_sth?mp_convolve:mp_correlate; + const ulongT default_params[] = { (ulongT)op,0, // [0]=function, [1]=result vector + 0,0,0,0,0, // [2]=A, [3]=wA, [4]=hA, [5]=dA, [6]=sA + 0,0,0,0,0, // [7]=M, [8]=wM, [9]=hM, [10]=dM, [11]=sM + 1,0,1, // [12]=boundary_conditions, [13]=is_normalized, [14]=chan._mode + 11,11,11, // [15]=xcenter, [16]=ycenter, [17]=zcenter (default value:-1) + 0,0,0, // [18]=xstart, [19]=ystart, [20]=zstart + 11,11,11, // [21]=xend, [22]=yend, [23]=zend (default value: -1) + 1,1,1, // [24]=xstride, [25]=ystride, [26]=zstride + 1,1,1 }; // [27]=xdilation, [28]=ydilation, [29]=zdilation + + l_opcode.assign(); // Don't use 'opcode': it could be modified by further calls to 'compile()'! + CImg(default_params,1,sizeof(default_params)/sizeof(ulongT)).move_to(l_opcode); + + arg1 = 2; + for (s = std::strchr(ss,'(') + 1; s=opcode._height) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: %s arguments provided, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + arg1<12?"Not enough":"Too much", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + _cimg_mp_check_type(opcode[2],1,2,0); // A + _cimg_mp_check_constant(opcode[3],2,3); // wA + _cimg_mp_check_constant(opcode[4],3,3); // hA + _cimg_mp_check_constant(opcode[5],4,3); // dA + _cimg_mp_check_constant(opcode[6],5,3); // sA + _cimg_mp_check_type(opcode[7],6,2,0); // M + _cimg_mp_check_constant(opcode[8],7,3); // wM + _cimg_mp_check_constant(opcode[9],8,3); // hM + _cimg_mp_check_constant(opcode[10],9,3); // dM + _cimg_mp_check_constant(opcode[11],10,3); // sM + _cimg_mp_check_type(opcode[12],11,1,0); // boundary_conditions + _cimg_mp_check_type(opcode[13],12,1,0); // is_normalized + _cimg_mp_check_constant(opcode[14],13,1); // channel_mode + _cimg_mp_check_type(opcode[15],14,1,0); // xcenter + _cimg_mp_check_type(opcode[16],15,1,0); // ycenter + _cimg_mp_check_type(opcode[17],16,1,0); // zcenter + _cimg_mp_check_constant(opcode[18],17,1); // xstart + _cimg_mp_check_constant(opcode[19],18,1); // ystart + _cimg_mp_check_constant(opcode[20],19,1); // zstart + _cimg_mp_check_constant(opcode[21],20,1); // xend + _cimg_mp_check_constant(opcode[22],21,1); // yend + _cimg_mp_check_constant(opcode[23],22,1); // zend + _cimg_mp_check_constant(opcode[24],23,3); // xstride + _cimg_mp_check_constant(opcode[25],24,3); // ystride + _cimg_mp_check_constant(opcode[26],25,3); // zstride + _cimg_mp_check_type(opcode[27],26,1,0); // xdilation + _cimg_mp_check_type(opcode[28],27,1,0); // ydilation + _cimg_mp_check_type(opcode[29],28,1,0); // zdilation + + const unsigned int + wA = (unsigned int)mem[opcode[3]], + hA = (unsigned int)mem[opcode[4]], + dA = (unsigned int)mem[opcode[5]], + sA = (unsigned int)mem[opcode[6]], + wM = (unsigned int)mem[opcode[8]], + hM = (unsigned int)mem[opcode[9]], + dM = (unsigned int)mem[opcode[10]], + sM = (unsigned int)mem[opcode[11]], + channel_mode = (unsigned int)mem[opcode[14]], + xstart = std::min((unsigned int)mem[opcode[18]],wA - 1), + ystart = std::min((unsigned int)mem[opcode[19]],hA - 1), + zstart = std::min((unsigned int)mem[opcode[20]],dA - 1), + xend = std::min((unsigned int)mem[opcode[21]],wA - 1), + yend = std::min((unsigned int)mem[opcode[22]],hA - 1), + zend = std::min((unsigned int)mem[opcode[23]],dA - 1); + + if (xstart>xend || ystart>yend || zstart>zend) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid xyz-start/end arguments " + "(start = (%u,%u,%u), end = (%u,%u,%u)), in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + xstart,ystart,zstart,xend,yend,zend, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + const float + xstride = (float)mem[opcode[24]], + ystride = (float)mem[opcode[25]], + zstride = (float)mem[opcode[26]]; + + if (xstride<=0 || ystride<=0 || zstride<=0) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid stride arguments (%g,%g,%g), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + xstride,ystride,zstride, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + arg2 = 1 + (unsigned int)std::floor((xend - xstart)/xstride); + arg3 = 1 + (unsigned int)std::floor((yend - ystart)/ystride); + arg4 = 1 + (unsigned int)std::floor((zend + zstart)/zstride); + arg5 = channel_mode==0?sM:channel_mode==1?std::max(sA,sM):sA*sM; + + opcode[1] = pos = vector(arg2*arg3*arg4*arg5); + opcode[3] = (ulongT)wA; + opcode[4] = (ulongT)hA; + opcode[5] = (ulongT)dA; + opcode[6] = (ulongT)sA; + opcode[8] = (ulongT)wM; + opcode[9] = (ulongT)hM; + opcode[10] = (ulongT)dM; + opcode[11] = (ulongT)sM; + opcode[14] = (ulongT)channel_mode; + opcode[18] = (ulongT)xstart; + opcode[19] = (ulongT)ystart; + opcode[20] = (ulongT)zstart; + opcode[21] = (ulongT)xend; + opcode[22] = (ulongT)yend; + opcode[23] = (ulongT)zend; + opcode.move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'd' : + if (*ss1=='(') { // Image depth + _cimg_mp_op("Function 'd()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_d,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"date(",5)) { // Current date or file date + _cimg_mp_op("Function 'date()'"); + s1 = ss5; while (s1::vector((ulongT)mp_date,pos,_cimg_mp_size(pos), + arg1,arg1==~0U?~0U:_cimg_mp_size(arg1), + arg2,arg2==~0U?~0U:_cimg_mp_size(arg2)).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"debug(",6)) { // Print debug info + _cimg_mp_op("Function 'debug()'"); + p1 = code._width; + arg1 = compile(ss6,se1,depth1,p_ref,is_critical); + *se1 = 0; + variable_name.assign(CImg::string(ss6,true,true).unroll('y'),true); + cimg::strpare(variable_name,false,true); + ((CImg::vector((ulongT)mp_debug,arg1,0,code._width - p1), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code,p1); + *se1 = ')'; + _cimg_mp_return(arg1); + } + + if (!std::strncmp(ss,"display(",8)) { // Display memory, vector or image + _cimg_mp_op("Function 'display()'"); + if (pexpr[se2 - expr._data]=='(') { // no arguments? + CImg::vector((ulongT)mp_display_memory,_cimg_mp_slot_nan).move_to(code); + _cimg_mp_return_nan(); + } + if (*ss8!='#') { // Vector + s1 = ss8; while (s1::string(ss8,true,true).unroll('y'),true); + cimg::strpare(variable_name,false,true); + if (_cimg_mp_is_vector(arg1)) + ((CImg::vector((ulongT)mp_vector_print,arg1,0,(ulongT)_cimg_mp_size(arg1),0), + variable_name)>'y').move_to(opcode); + else + ((CImg::vector((ulongT)mp_print,arg1,0,0), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + + ((CImg::vector((ulongT)mp_display,arg1,0,(ulongT)_cimg_mp_size(arg1), + arg2,arg3,arg4,arg5), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + *s1 = c1; + _cimg_mp_return(arg1); + + } else { // Image + p1 = compile(ss8 + 1,se1,depth1,0,is_critical); + _cimg_mp_check_list(true); + CImg::vector((ulongT)mp_image_display,_cimg_mp_slot_nan,p1).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"det(",4)) { // Matrix determinant + _cimg_mp_op("Function 'det()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_matrix_square(arg1,1); + p1 = (unsigned int)cimg::round(std::sqrt((float)_cimg_mp_size(arg1))); + _cimg_mp_scalar2(mp_det,arg1,p1); + } + + if (!std::strncmp(ss,"diag(",5)) { // Diagonal matrix + _cimg_mp_op("Function 'diag()'"); + CImg::vector((ulongT)mp_diag,0,0).move_to(l_opcode); + for (s = ss5; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + arg1 = opcode._height - 3; + pos = vector(arg1*arg1); + opcode[1] = pos; + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"dot(",4)) { // Dot product + _cimg_mp_op("Function 'dot()'"); + s1 = ss4; while (s1::vector((ulongT)mp_do,p1,p2,arg2 - arg1,code._width - arg2,_cimg_mp_size(p1), + p1>=arg6 && !_cimg_mp_is_constant(p1), + p2>=arg6 && !_cimg_mp_is_constant(p2)).move_to(code,arg1); + _cimg_mp_return(p1); + } + + if (!std::strncmp(ss,"draw(",5)) { // Draw image + if (!is_critical) is_parallelizable = false; + _cimg_mp_op("Function 'draw()'"); + if (*ss5=='#') { // Index specified + s0 = ss6; while (s01) { + arg3 = arg2 + 1; + if (p2>2) { + arg4 = arg3 + 1; + if (p2>3) arg5 = arg4 + 1; + } + } + ++s0; + is_sth = true; + } else { + if (s0::vector((ulongT)mp_draw,arg1,(ulongT)_cimg_mp_size(arg1),p1,arg2,arg3,arg4,arg5, + 0,0,0,0,1,(ulongT)~0U,0,1).move_to(l_opcode); + + arg2 = arg3 = arg4 = arg5 = ~0U; + p2 = p1!=~0U?0:1; + if (s0::vector((ulongT)mp_echo,_cimg_mp_slot_nan,0).move_to(l_opcode); + for (s = ss5; s::vector(arg1,_cimg_mp_size(arg1)).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"eig(",4)) { // Matrix eigenvalues/eigenvector + _cimg_mp_op("Function 'eig()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_matrix_square(arg1,1); + p1 = (unsigned int)cimg::round(std::sqrt((float)_cimg_mp_size(arg1))); + pos = vector((p1 + 1)*p1); + CImg::vector((ulongT)mp_matrix_eig,pos,arg1,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"ellipse(",8)) { // Ellipse/circle drawing + if (!is_critical) is_parallelizable = false; + _cimg_mp_op("Function 'ellipse()'"); + if (*ss8=='#') { // Index specified + s0 = ss + 9; while (s0::vector((ulongT)mp_ellipse,_cimg_mp_slot_nan,0,p1).move_to(l_opcode); + for (s = s0; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"exp(",4)) { // Exponential + _cimg_mp_op("Function 'exp()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_exp,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::exp(mem[arg1])); + _cimg_mp_scalar1(mp_exp,arg1); + } + + if (!std::strncmp(ss,"expr(",5)) { // Vector from expression + _cimg_mp_op("Function 'expr()'"); + s1 = ss5; while (s1::vector((ulongT)mp_expr,pos,arg1,p1,arg2,arg3,arg4,arg5).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"eye(",4)) { // Identity matrix + _cimg_mp_op("Function 'eye()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_constant(arg1,1,3); + p1 = (unsigned int)mem[arg1]; + pos = vector(p1*p1); + CImg::vector((ulongT)mp_eye,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"end(",4)) { // End + _cimg_mp_op("Function 'end()'"); + code.swap(code_end); + compile(ss4,se1,depth1,p_ref,true); + code.swap(code_end); + is_end_code = true; + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"end_t(",6)) { // End thread + _cimg_mp_op("Function 'end_t()'"); + code.swap(code_end_t); + compile(ss6,se1,depth1,p_ref,true); + code.swap(code_end_t); + is_end_code = true; + _cimg_mp_return_nan(); + } + break; + + case 'f' : + if (!std::strncmp(ss,"f2ui(",5)) { // Special float->uint conversion + _cimg_mp_op("Function 'f2ui()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_f2ui,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((double)cimg::float2uint((float)mem[arg1])); + _cimg_mp_scalar1(mp_f2ui,arg1); + } + + if (!std::strncmp(ss,"fact(",5)) { // Factorial + _cimg_mp_op("Function 'fact()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_factorial,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::factorial((int)mem[arg1])); + _cimg_mp_scalar1(mp_factorial,arg1); + } + + if (!std::strncmp(ss,"fibo(",5)) { // Fibonacci + _cimg_mp_op("Function 'fibo()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_fibonacci,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::fibonacci((int)mem[arg1])); + _cimg_mp_scalar1(mp_fibonacci,arg1); + } + + if (!std::strncmp(ss,"find(",5)) { // Find + _cimg_mp_op("Function 'find()'"); + + // First argument: data to look at. + s0 = ss5; while (s01) + _cimg_mp_scalar5(mp_list_find_seq,p1,arg2,_cimg_mp_size(arg2),arg3,arg4); + _cimg_mp_scalar4(mp_list_find,p1,arg2 + (_cimg_mp_size(arg2)?1:0),arg3,arg4); + } + if (_cimg_mp_size(arg2)>1) + _cimg_mp_scalar6(mp_find_seq,arg1,_cimg_mp_size(arg1),arg2,_cimg_mp_size(arg2),arg3,arg4); + _cimg_mp_scalar5(mp_find,arg1,_cimg_mp_size(arg1),arg2 + (_cimg_mp_size(arg2)?1:0),arg3,arg4); + } + + if (*ss1=='o' && *ss2=='r' && *ss3=='(') { // For loop + _cimg_mp_op("Function 'for()'"); + s1 = ss4; while (s1::vector((ulongT)mp_for,p3,(ulongT)_cimg_mp_size(p3),p2,arg2 - arg1,arg3 - arg2, + arg4 - arg3,code._width - arg4, + p3>=arg6 && !_cimg_mp_is_constant(p3), + p2>=arg6 && !_cimg_mp_is_constant(p2)).move_to(code,arg1); + _cimg_mp_return(p3); + } + + if (!std::strncmp(ss,"floor(",6)) { // Floor + _cimg_mp_op("Function 'floor()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_floor,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::floor(mem[arg1])); + _cimg_mp_scalar1(mp_floor,arg1); + } + + if (!std::strncmp(ss,"fsize(",6)) { // File size + _cimg_mp_op("Function 'fsize()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_type(arg1,1,2,0); + pos = scalar(); + CImg::vector((ulongT)mp_fsize,pos,arg1,(ulongT)_cimg_mp_size(arg1)).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'g' : + if (!std::strncmp(ss,"gauss(",6)) { // Gaussian function + _cimg_mp_op("Function 'gauss()'"); + s1 = ss6; while (s1::vector((ulongT)mp_get,pos,arg1,p1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } +#endif + break; + + case 'h' : + if (*ss1=='(') { // Image height + _cimg_mp_op("Function 'h()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_h,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'i' : + if (*ss1=='c' && *ss2=='(') { // Image median + _cimg_mp_op("Function 'ic()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_median,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='c' && *ss2=='(') { // Image median + _cimg_mp_op("Function 'ic()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_median,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='n' && *ss2=='(') { // Image norm + _cimg_mp_op("Function 'in()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_norm,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='f' && *ss2=='(') { // If..then[..else.] + _cimg_mp_op("Function 'if()'"); + s1 = ss3; while (s1::vector((ulongT)mp_if,pos,arg1,arg2,arg3, + p3 - p2,code._width - p3,arg4).move_to(code,p2); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"inrange(",8)) { // Check value range + _cimg_mp_op("Function 'inrange()'"); + s1 = ss8; while (s1=val1) + is_sth = (mem[arg4]?(val>=val1):(val>val1)) && (mem[arg5]?(val<=val2):(val=val2):(val>val2)) && (mem[arg4]?(val<=val1):(val::vector((ulongT)mp_inrange,pos,arg6,arg1,p1,arg2,p2,arg3,p3,arg4,arg5).move_to(code); + _cimg_mp_return(pos); + } + + + if (!std::strncmp(ss,"int(",4)) { // Integer cast + _cimg_mp_op("Function 'int()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_int,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((longT)mem[arg1]); + _cimg_mp_scalar1(mp_int,arg1); + } + + if (!std::strncmp(ss,"invert(",7)) { // Matrix/scalar inversion + _cimg_mp_op("Function 'invert()'"); + s1 = ss7; while (s1::vector((ulongT)mp_matrix_invert,pos,arg1,p1,arg2).move_to(code); + _cimg_mp_return(pos); + } + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(1/mem[arg1]); + _cimg_mp_scalar2(mp_div,1,arg1); + } + + if (*ss1=='s') { // Family of 'is_?()' functions + + if (!std::strncmp(ss,"isbool(",7)) { // Is boolean? + _cimg_mp_op("Function 'isbool()'"); + if (ss7==se1) _cimg_mp_return(0); + try { arg1 = compile(ss7,se1,depth1,0,is_critical); } + catch(CImgException&) { _cimg_mp_return(0); } + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isbool,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return(mem[arg1]==0. || mem[arg1]==1.); + _cimg_mp_scalar1(mp_isbool,arg1); + } + + if (!std::strncmp(ss,"isdir(",6)) { // Is directory? + _cimg_mp_op("Function 'isdir()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_return(0); + pos = scalar(); + CImg::vector((ulongT)mp_isdir,pos,arg1,(ulongT)_cimg_mp_size(arg1)).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"isfile(",7)) { // Is file? + _cimg_mp_op("Function 'isfile()'"); + arg1 = compile(ss7,se1,depth1,0,is_critical); + if (_cimg_mp_is_scalar(arg1)) _cimg_mp_return(0); + pos = scalar(); + CImg::vector((ulongT)mp_isfile,pos,arg1,(ulongT)_cimg_mp_size(arg1)).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"isin(",5)) { // Is in sequence/vector? + if (ss5>=se1) _cimg_mp_return(0); + _cimg_mp_op("Function 'isin()'"); + pos = scalar(); + CImg::vector((ulongT)mp_isin,pos,0).move_to(l_opcode); + for (s = ss5; s::sequence(_cimg_mp_size(arg1),arg1 + 1, + arg1 + (ulongT)_cimg_mp_size(arg1)). + move_to(l_opcode); + else CImg::vector(arg1).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"isinf(",6)) { // Is infinite? + _cimg_mp_op("Function 'isinf()'"); + if (ss6==se1) _cimg_mp_return(0); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isinf,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return((unsigned int)cimg::type::is_inf(mem[arg1])); + _cimg_mp_scalar1(mp_isinf,arg1); + } + + if (!std::strncmp(ss,"isint(",6)) { // Is integer? + _cimg_mp_op("Function 'isint()'"); + if (ss6==se1) _cimg_mp_return(0); + try { arg1 = compile(ss6,se1,depth1,0,is_critical); } + catch(CImgException&) { _cimg_mp_return(0); } + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isint,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return((unsigned int)((double)(longT)mem[arg1]==mem[arg1])); + _cimg_mp_scalar1(mp_isint,arg1); + } + + if (!std::strncmp(ss,"isnan(",6)) { // Is NaN? + _cimg_mp_op("Function 'isnan()'"); + if (ss6==se1) _cimg_mp_return(0); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_isnan,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_return((unsigned int)cimg::type::is_nan(mem[arg1])); + _cimg_mp_scalar1(mp_isnan,arg1); + } + + if (!std::strncmp(ss,"isnum(",6)) { // Is number? + _cimg_mp_op("Function 'isnum()'"); + val = 0; + if (cimg_sscanf(ss6,"%lf%c%c",&val,&sep,&end)==2 && sep==')') _cimg_mp_return(1); + _cimg_mp_return(0); + } + + if (!std::strncmp(ss,"isexpr(",7)) { // Is valid expression? + _cimg_mp_op("Function 'isexpr()'"); + if (ss7==se1) _cimg_mp_return(0); + try { arg1 = compile(ss7,se1,depth1,0,is_critical); } + catch (CImgException&) { _cimg_mp_return(0); } + _cimg_mp_return(1); + } + } + break; + + case 'l' : + if (*ss1=='(') { // Size of image list + _cimg_mp_op("Function 'l()'"); + if (ss2!=se1) break; + _cimg_mp_scalar0(mp_list_l); + } + + if (!std::strncmp(ss,"lerp(",5)) { // Linear interpolation + _cimg_mp_op("Function 'lerp()'"); + s1 = ss5; while (s1::vector((ulongT)mp_vector_lerp,pos,p1,arg1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"log(",4)) { // Natural logarithm + _cimg_mp_op("Function 'log()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_log,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::log(mem[arg1])); + _cimg_mp_scalar1(mp_log,arg1); + } + + if (!std::strncmp(ss,"log2(",5)) { // Base-2 logarithm + _cimg_mp_op("Function 'log2()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_log2,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::log2(mem[arg1])); + _cimg_mp_scalar1(mp_log2,arg1); + } + + if (!std::strncmp(ss,"log10(",6)) { // Base-10 logarithm + _cimg_mp_op("Function 'log10()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_log10,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::log10(mem[arg1])); + _cimg_mp_scalar1(mp_log10,arg1); + } + + if (!std::strncmp(ss,"lowercase(",10)) { // Lower case + _cimg_mp_op("Function 'lowercase()'"); + arg1 = compile(ss + 10,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_lowercase,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::lowercase(mem[arg1])); + _cimg_mp_scalar1(mp_lowercase,arg1); + } + break; + + case 'm' : + if (!std::strncmp(ss,"mul(",4)) { // Matrix multiplication + _cimg_mp_op("Function 'mul()'"); + s1 = ss4; while (s1::%s: %s: Types of first and second arguments ('%s' and '%s') " + "do not match with third argument 'nb_colsB=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,s_type(arg2)._data,p3, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(arg4*p3); + CImg::vector((ulongT)mp_matrix_mul,pos,arg1,arg2,arg4,arg5,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"mproj(",6)) { // Project matrix onto dictionary + _cimg_mp_op("Function 'mproj()'"); + s1 = ss6; while (s1::%s: %s: Type of first argument ('%s') " + "do not match with second argument 'nb_colsS=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,wS, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (wD*hD!=p2) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Type of third argument ('%s') " + "do not match with fourth argument 'nb_colsD=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg3)._data,wD, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (hS!=hD) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Type of first argument ('%s') " + "do not match with third argument ('%s'), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,s_type(arg3)._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(wS*wD); + CImg::vector((ulongT)mp_mproj,pos,arg1,wS,hS,arg3,wD,arg5,arg6,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"merge(",6)) { // Merge inter-thread variables + _cimg_mp_op("Function 'merge()'"); + s1 = ss6; while (s1::%s: %s: Merge has already been requested before " + "for specified variable " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + if (arg1==~0U) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid specified operator " + "(should be one of '=,+,-,*,/,min,max'), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + memmerge.resize(3,memmerge._height + 1,1,1,0,0); + memmerge(0,memmerge._height - 1) = (int)pos; + memmerge(1,memmerge._height - 1) = (int)_cimg_mp_size(pos); + memmerge(2,memmerge._height - 1) = (int)arg1; + _cimg_mp_return(pos); + } + break; + + case 'n' : +#ifdef cimg_mp_func_name + if (!std::strncmp(ss,"name(",5)) { // Get image name as a string vector + _cimg_mp_op("Function 'name()'"); + if (*ss5=='#') { // Index specified + s0 = ss6; while (s0::vector((ulongT)mp_name,pos,p1,arg1).move_to(code); + _cimg_mp_return(pos); + } +#endif + + if (!std::strncmp(ss,"narg(",5)) { // Number of arguments + _cimg_mp_op("Function 'narg()'"); + if (ss5>=se1) _cimg_mp_return(0); + arg1 = 0; + for (s = ss5; s::vector((ulongT)mp_norm0,pos,0).move_to(l_opcode); break; + case 1 : + CImg::vector((ulongT)mp_norm1,pos,0).move_to(l_opcode); break; + case 2 : + CImg::vector((ulongT)mp_norm2,pos,0).move_to(l_opcode); break; + case ~0U : + CImg::vector((ulongT)mp_norminf,pos,0).move_to(l_opcode); break; + default : + CImg::vector((ulongT)mp_normp,pos,0,(ulongT)(arg1==~0U?-1:(int)arg1)). + move_to(l_opcode); + } + for ( ; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + + (l_opcode>'y').move_to(opcode); + if (arg1>0 && opcode._height==4) // Special case with one argument and p>=1 + _cimg_mp_scalar1(mp_abs,opcode[3]); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'p' : + if (!std::strncmp(ss,"permut(",7)) { // Number of permutations + _cimg_mp_op("Function 'permut()'"); + s1 = ss7; while (s1::vector((ulongT)mp_polygon,_cimg_mp_slot_nan,0,p1).move_to(l_opcode); + for (s = s0; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return_nan(); + } + + if (!std::strncmp(ss,"print(",6) || !std::strncmp(ss,"prints(",7)) { // Print expressions + is_sth = ss[5]=='s'; // is prints() + _cimg_mp_op(is_sth?"Function 'prints()'":"Function 'print()'"); + s0 = is_sth?ss7:ss6; + if (*s0!='#' || is_sth) { // Regular expression + for (s = s0; s::string(s,true,true).unroll('y'),true); + cimg::strpare(variable_name,false,true); + if (_cimg_mp_is_vector(pos)) // Vector + ((CImg::vector((ulongT)mp_vector_print,pos,0,(ulongT)_cimg_mp_size(pos),is_sth?1:0), + variable_name)>'y').move_to(opcode); + else // Scalar + ((CImg::vector((ulongT)mp_print,pos,0,is_sth?1:0), + variable_name)>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + *ns = c1; s = ns; + } + _cimg_mp_return(pos); + } else { // Image + p1 = compile(ss7,se1,depth1,0,is_critical); + _cimg_mp_check_list(true); + CImg::vector((ulongT)mp_image_print,_cimg_mp_slot_nan,p1).move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"pseudoinvert(",13)) { // Matrix/scalar pseudo-inversion + _cimg_mp_op("Function 'pseudoinvert()'"); + s1 = ss + 13; while (s1::%s: %s: Type of first argument ('%s') " + "does not match with second argument 'nb_colsA=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,p2, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(p1); + CImg::vector((ulongT)mp_matrix_pseudoinvert,pos,arg1,p2,p3,arg3).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'r' : + if (!std::strncmp(ss,"ref(",4)) { // Variable declaration + _cimg_mp_op("Function 'ref()'"); + s1 = ss4; while (s1=se1 || !*s1) compile(s1,s1,depth1,0,is_critical); // Will throw missing argument error + arg3 = compile(ss4,s1++,depth1,p_ref,is_critical); + *se1 = 0; + is_sth = true; + if (*s1>='0' && *s1<='9') is_sth = false; + else for (ns = s1; *ns; ++ns) if (!is_varchar(*ns)) { is_sth = false; break; } + if (!is_sth) { + variable_name.assign(s1,(unsigned int)(se1 + 1 - s1)).back() = 0; + cimg::strellipsize(variable_name,64); + *se1 = ')'; + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Invalid specified variable name '%s', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + + } + get_variable_pos(s1,arg1,arg2); + if (arg2!=~0U) reserved_label[arg2] = arg3; + else if (arg1!=~0U) variable_pos[arg1] = arg3; + else { // New variable + if (variable_def._width>=variable_pos._width) variable_pos.resize(-200,1,1,1,0); + variable_pos[variable_def._width] = arg3; + CImg::string(s1).move_to(variable_def); + } + if (_cimg_mp_is_vector(arg3)) + set_variable_vector(arg3); // Prevent from being used in further optimization + else if (_cimg_mp_is_comp(arg3)) memtype[arg3] = -1; + *se1 = ')'; + _cimg_mp_return(arg3); + } + + if (!std::strncmp(ss,"resize(",7)) { // Vector or image resize + _cimg_mp_op("Function 'resize()'"); + if (*ss7!='#') { // Vector + s1 = ss7; while (s1::vector((ulongT)mp_vector_resize,pos,arg2,arg1,(ulongT)_cimg_mp_size(arg1), + arg3,arg4).move_to(code); + _cimg_mp_return(pos); + + } else { // Image + if (!is_critical) is_parallelizable = false; + s0 = ss8; while (s0::vector((ulongT)mp_image_resize,_cimg_mp_slot_nan,p1,~0U,~0U,~0U,~0U,1,0,0,0,0,0). + move_to(l_opcode); + pos = 0; + for (s = s0; s10) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: %s arguments, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + pos<1?"Missing":"Too much", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + l_opcode[0].move_to(code); + _cimg_mp_return_nan(); + } + } + + if (!std::strncmp(ss,"reverse(",8)) { // Vector reverse + _cimg_mp_op("Function 'reverse()'"); + arg1 = compile(ss8,se1,depth1,0,is_critical); + if (!_cimg_mp_is_vector(arg1)) _cimg_mp_return(arg1); + p1 = _cimg_mp_size(arg1); + pos = vector(p1); + CImg::vector((ulongT)mp_vector_reverse,pos,arg1,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"rol(",4) || !std::strncmp(ss,"ror(",4)) { // Bitwise rotation + _cimg_mp_op(ss[2]=='l'?"Function 'rol()'":"Function 'ror()'"); + s1 = ss4; while (s11) { + arg2 = arg1 + 1; + if (p2>2) arg3 = arg2 + 1; + } + arg4 = compile(++s1,se1,depth1,0,is_critical); + } else { + s2 = s1 + 1; while (s2::vector((ulongT)mp_rot3d,pos,arg1,arg2,arg3,arg4).move_to(code); + } else { // 2D rotation + _cimg_mp_check_type(arg1,1,1,0); + pos = vector(4); + CImg::vector((ulongT)mp_rot2d,pos,arg1).move_to(code); + } + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"round(",6)) { // Value rounding + _cimg_mp_op("Function 'round()'"); + s1 = ss6; while (s1::vector((ulongT)mp_run,0,0).move_to(l_opcode); + pos = 1; + for (s = ss4; s::vector(arg1,_cimg_mp_size(arg1)).move_to(l_opcode); + s = ns; + } + (l_opcode>'y').move_to(opcode); + pos = scalar(); + opcode[1] = pos; + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } +#endif + break; + + case 's' : + if (*ss1=='(') { // Image spectrum + _cimg_mp_op("Function 's()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_s,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"same(",5)) { // Test if operands have the same values + _cimg_mp_op("Function 'same()'"); + s1 = ss5; while (s1::vector((ulongT)mp_shift,pos,arg1,p1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"sign(",5)) { // Sign + _cimg_mp_op("Function 'sign()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sign,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::sign(mem[arg1])); + _cimg_mp_scalar1(mp_sign,arg1); + } + + if (!std::strncmp(ss,"sin(",4)) { // Sine + _cimg_mp_op("Function 'sin()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sin,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::sin(mem[arg1])); + _cimg_mp_scalar1(mp_sin,arg1); + } + + if (!std::strncmp(ss,"sinc(",5)) { // Sine cardinal + _cimg_mp_op("Function 'sinc()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sinc,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::sinc(mem[arg1])); + _cimg_mp_scalar1(mp_sinc,arg1); + } + + if (!std::strncmp(ss,"sinh(",5)) { // Hyperbolic sine + _cimg_mp_op("Function 'sinh()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sinh,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::sinh(mem[arg1])); + _cimg_mp_scalar1(mp_sinh,arg1); + } + + if (!std::strncmp(ss,"size(",5)) { // Vector size + _cimg_mp_op("Function 'size()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_constant(_cimg_mp_is_scalar(arg1)?0:_cimg_mp_size(arg1)); + } + + if (!std::strncmp(ss,"solve(",6)) { // Solve square linear system + _cimg_mp_op("Function 'solve()'"); + s1 = ss6; while (s1::%s: %s: Types of first and second arguments ('%s' and '%s') " + "do not match with third argument 'nb_colsB=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,s_type(arg2)._data,p3, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(arg4*p3); + CImg::vector((ulongT)mp_solve,pos,arg1,arg2,arg4,arg5,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"sort(",5)) { // Sort vector + _cimg_mp_op("Function 'sort()'"); + s1 = ss5; while (s1::vector((ulongT)mp_sort,pos,arg1,p1,arg2,arg3,arg4).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"sqr(",4)) { // Square + _cimg_mp_op("Function 'sqr()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sqr,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(cimg::sqr(mem[arg1])); + _cimg_mp_scalar1(mp_sqr,arg1); + } + + if (!std::strncmp(ss,"sqrt(",5)) { // Square root + _cimg_mp_op("Function 'sqrt()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_sqrt,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::sqrt(mem[arg1])); + _cimg_mp_scalar1(mp_sqrt,arg1); + } + + if (!std::strncmp(ss,"srand(",6)) { // Set RNG seed + _cimg_mp_op("Function 'srand()'"); + arg1 = ss6::vector((ulongT)mp_image_stats,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + +#ifdef cimg_mp_func_store + if (!std::strncmp(ss,"store(",6)) { // Store vector to variable + _cimg_mp_op("Function 'store()'"); + s1 = ss6; while (s1p3) { + _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Specified dimensions (%u,%u,%u,%u) " + "are too large for vector size (%u), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + varg3,varg4,varg5,varg6,p3, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + CImg::vector((ulongT)mp_store,_cimg_mp_slot_nan,arg1,p1,arg2,p2, + arg3,arg4,arg5,arg6,pos).move_to(code); + _cimg_mp_return_nan(); + } +#endif + + if (!std::strncmp(ss,"stov(",5)) { // String to double + _cimg_mp_op("Function 'stov()'"); + s1 = ss5; while (s1::vector((ulongT)mp_stov,pos,arg1,p1,arg2,arg3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"string(",7)) { // Construct string from list of arguments + _cimg_mp_op("Function 'string()'"); + CImg::vector((ulongT)mp_string,0,0,0).move_to(l_opcode); + + if (*ss7=='#') { // Output vector size specified, with '#' + s0 = ss8; while (s0::vector(arg2,p2).move_to(l_opcode); + s = ns; + } + if (arg1==~0U) arg1 = p1; + pos = vector(arg1,0); + (l_opcode>'y').move_to(opcode); + opcode[1] = pos; + opcode[2] = arg1; + opcode[3] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"svd(",4)) { // Matrix SVD + _cimg_mp_op("Function 'svd()'"); + s1 = ss4; while (s1::%s: %s: Type of first argument ('%s') " + "does not match with second argument 'nb_colsA=%u', " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,p2, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(p1 + p2 + p2*p2); + CImg::vector((ulongT)mp_matrix_svd,pos,arg1,p2,p3).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"swap(",5)) { // Swap values + _cimg_mp_op("Function 'swap()'"); + s1 = ss5; while (s1::%s: %s: %s argument cannot be a constant, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + _cimg_mp_is_constant(arg1)?"First":"Second", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + CImg::vector((ulongT)mp_swap,arg1,arg2,p1).move_to(code); + + // Write back values of linked arg1 and arg2. + const unsigned int *_ref = ref; + is_sth = true; // Is first argument? + do { + switch (*_ref) { + case 1 : // arg1: V[k] + arg3 = _ref[1]; // Vector slot + arg4 = _ref[2]; // Index + CImg::vector((ulongT)mp_vector_set_off,arg1,arg3,(ulongT)_cimg_mp_size(arg3),arg4). + move_to(code); + break; + case 2 : // arg1: i/j[_#ind,off] + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // Offset + if (p1!=~0U) { + if (listout) + CImg::vector((ulongT)(is_relative?mp_list_set_joff:mp_list_set_ioff), + arg1,p1,arg3).move_to(code); + } else { + if (imgout) + CImg::vector((ulongT)(is_relative?mp_set_joff:mp_set_ioff), + arg1,arg3).move_to(code); + } + break; + case 3 : // arg1: i/j(_#ind,_x,_y,_z,_c) + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // X + arg4 = _ref[4]; // Y + arg5 = _ref[5]; // Z + arg6 = _ref[6]; // C + if (p1!=~0U) { + if (listout) + CImg::vector((ulongT)(is_relative?mp_list_set_jxyzc:mp_list_set_ixyzc), + arg1,p1,arg3,arg4,arg5,arg6).move_to(code); + } else { + if (imgout) + CImg::vector((ulongT)(is_relative?mp_set_jxyzc:mp_set_ixyzc), + arg1,arg3,arg4,arg5,arg6).move_to(code); + } + break; + case 4: // arg1: I/J[_#ind,off] + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // Offset + if (p1!=~0U) { + if (listout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_s:mp_list_set_Ioff_s), + arg1,p1,arg3).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Joff_v:mp_list_set_Ioff_v), + arg1,p1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + } + } else { + if (imgout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_set_Joff_s:mp_set_Ioff_s), + arg1,arg3).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Joff_v:mp_set_Ioff_v), + arg1,arg3,_cimg_mp_size(arg1)).move_to(code); + } + } + break; + case 5 : // arg1: I/J(_#ind,_x,_y,_z,_c) + if (!is_critical) is_parallelizable = false; + p1 = _ref[1]; // Index + is_relative = (bool)_ref[2]; + arg3 = _ref[3]; // X + arg4 = _ref[4]; // Y + arg5 = _ref[5]; // Z + if (p1!=~0U) { + if (listout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_s:mp_list_set_Ixyz_s), + arg1,p1,arg3,arg4,arg5).move_to(code); + else { + _cimg_mp_check_constant_index(p1); + CImg::vector((ulongT)(is_relative?mp_list_set_Jxyz_v:mp_list_set_Ixyz_v), + arg1,p1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + } + } else { + if (imgout) { + if (_cimg_mp_is_scalar(arg1)) + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_s:mp_set_Ixyz_s), + arg1,arg3,arg4,arg5).move_to(code); + else + CImg::vector((ulongT)(is_relative?mp_set_Jxyz_v:mp_set_Ixyz_v), + arg1,arg3,arg4,arg5,_cimg_mp_size(arg1)).move_to(code); + } + } + break; + } + + _ref+=7; + arg1 = arg2; + is_sth = !is_sth; + } while (!is_sth); + + if (p_ref) std::memcpy(p_ref,ref,siz_ref); + _cimg_mp_return(arg1); + } + break; + + case 't' : + if (!std::strncmp(ss,"tan(",4)) { // Tangent + _cimg_mp_op("Function 'tan()'"); + arg1 = compile(ss4,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_tan,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::tan(mem[arg1])); + _cimg_mp_scalar1(mp_tan,arg1); + } + + if (!std::strncmp(ss,"tanh(",5)) { // Hyperbolic tangent + _cimg_mp_op("Function 'tanh()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_tanh,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant(std::tanh(mem[arg1])); + _cimg_mp_scalar1(mp_tanh,arg1); + } + + if (!std::strncmp(ss,"trace(",6)) { // Matrix trace + _cimg_mp_op("Function 'trace()'"); + arg1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_matrix_square(arg1,1); + p1 = (unsigned int)cimg::round(std::sqrt((float)_cimg_mp_size(arg1))); + _cimg_mp_scalar2(mp_trace,arg1,p1); + } + + if (!std::strncmp(ss,"transpose(",10)) { // Matrix transpose + _cimg_mp_op("Function 'transpose()'"); + s1 = ss + 10; while (s1::%s: %s: Size of first argument ('%s') does not match " + "second argument 'nb_cols=%u', in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + s_type(arg1)._data,p2, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(p3*p2); + CImg::vector((ulongT)mp_transpose,pos,arg1,p2,p3).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'u' : + if (*ss1=='(') { // Random value with uniform distribution + _cimg_mp_op("Function 'u()'"); + if (*ss2==')') _cimg_mp_scalar2(mp_u,0,1); + s1 = ss2; while (s1float conversion + _cimg_mp_op("Function 'ui2f()'"); + arg1 = compile(ss5,se1,depth1,0,is_critical); + if (_cimg_mp_is_vector(arg1)) _cimg_mp_vector1_v(mp_ui2f,arg1); + if (_cimg_mp_is_constant(arg1)) _cimg_mp_constant((double)cimg::uint2float((unsigned int)mem[arg1])); + _cimg_mp_scalar1(mp_ui2f,arg1); + } + + if (!std::strncmp(ss,"unref(",6)) { // Un-reference variable + _cimg_mp_op("Function 'unref()'"); + arg1=~0U; + for (s0 = ss6; s0ss6 && *s0==',') ++s0; + s1 = s0; while (s1s0) { + *s1 = 0; + get_variable_pos(s0,arg1,arg2); + if (arg2!=~0U) reserved_label[arg2] = ~0U; + else if (arg1!=~0U) { + variable_def.remove(arg1); + if (arg10) || + !std::strncmp(ss,"vector(",7) || + (!std::strncmp(ss,"vector",6) && ss7::sequence(arg4,arg3 + 1,arg3 + arg4).move_to(l_opcode); + arg2+=arg4; + } else { CImg::vector(arg3).move_to(l_opcode); ++arg2; } + s = ns; + } + if (arg1==~0U) arg1 = arg2; + if (!arg1) _cimg_mp_return(0); + pos = vector(arg1); + l_opcode.insert(CImg::vector((ulongT)mp_vector_init,pos,0,arg1),0); + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"vmax(",5) || !std::strncmp(ss,"vmin(",5) || + !std::strncmp(ss,"vmaxabs(",8) || !std::strncmp(ss,"vminabs(",8) || + !std::strncmp(ss,"vmed(",5) || !std::strncmp(ss,"vkth(",5) || + !std::strncmp(ss,"vsum(",5) || !std::strncmp(ss,"vavg(",5) || + !std::strncmp(ss,"vstd(",5) || !std::strncmp(ss,"vvar(",5) || + !std::strncmp(ss,"vprod(",6) || + !std::strncmp(ss,"vargmin(",8) || !std::strncmp(ss,"vargmax(",8) || + !std::strncmp(ss,"vargminabs(",11) || !std::strncmp(ss,"vargmaxabs(",11) || + !std::strncmp(ss,"vargkth(",8)) { // Multi-argument vector functions + _cimg_mp_op(ss[1]=='a'?(ss[2]=='v'?"Function 'vavg()'": + ss[4]=='k'?"Function 'vargkth()'": + ss[5]=='i' && ss[7]=='('?"Function 'vargmin()'": + ss[5]=='i'?"Function vargminabs()'": + ss[7]=='('?"Function 'vargmax()'": + "Function 'vargmaxabs()'"): + ss[1]=='s'?(ss[2]=='u'?"Function 'vsum()'":"Function 'vstd()'"): + ss[1]=='k'?"Function 'vkth()'": + ss[1]=='p'?"Function 'vprod()'": + ss[1]=='v'?"Function 'vvar()'": + ss[2]=='i'?(ss[4]=='('?"Function 'vmin()'": + "Function 'vminabs()'"): + ss[2]=='a'?(ss[4]=='('?"Function 'vmax()'": + "Function 'vmaxabs()'"): + "Function 'vmed()'"); + op = ss[1]=='a'?(ss[2]=='v'?mp_vavg: + ss[4]=='k'?mp_vargkth: + ss[5]=='i' && ss[7]=='('?mp_vargmin: + ss[5]=='i'?mp_vargminabs: + ss[7]=='('?mp_vargmax:mp_vargmaxabs): + ss[1]=='s'?(ss[2]=='u'?mp_vsum:mp_vstd): + ss[1]=='k'?mp_vkth: + ss[1]=='p'?mp_vprod: + ss[1]=='v'?mp_vvar: + ss[2]=='i'?(ss[4]=='('?mp_vmin:mp_vminabs): + ss[2]=='a'?(ss[4]=='('?mp_vmax:mp_vmaxabs): + mp_vmedian; + CImg::vector((ulongT)op,0,0,0).move_to(l_opcode); + p1 = ~0U; + p3 = 1; + for (s = std::strchr(ss,'(') + 1; s::vector(arg2,p2).move_to(l_opcode); + s = ns; + ++p3; + } + (l_opcode>'y').move_to(opcode); + if (p1==~0U) { pos = scalar(); p1 = 0; } else pos = vector(p1); + opcode[1] = pos; + opcode[2] = p1; + opcode[3] = opcode._height; + opcode.move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"vtos(",5)) { // Double(s) to string + _cimg_mp_op("Function 'vtos()'"); + s1 = ss5; while (s1::vector((ulongT)mp_vtos,pos,p1,arg1,_cimg_mp_size(arg1),arg2).move_to(code); + _cimg_mp_return(pos); + } + break; + + case 'w' : + if (*ss1=='(') { // Image width + _cimg_mp_op("Function 'w()'"); + if (*ss2=='#') { // Index specified + p1 = compile(ss3,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss2!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_w,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='h' && *ss2=='(') { // Image width*height + _cimg_mp_op("Function 'wh()'"); + if (*ss3=='#') { // Index specified + p1 = compile(ss4,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss3!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_wh,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='h' && *ss2=='d' && *ss3=='(') { // Image width*height*depth + _cimg_mp_op("Function 'whd()'"); + if (*ss4=='#') { // Index specified + p1 = compile(ss5,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss4!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_whd,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (*ss1=='h' && *ss2=='d' && *ss3=='s' && *ss4=='(') { // Image width*height*depth*spectrum + _cimg_mp_op("Function 'whds()'"); + if (*ss5=='#') { // Index specified + p1 = compile(ss6,se1,depth1,0,is_critical); + _cimg_mp_check_list(false); + } else { if (ss5!=se1) break; p1 = ~0U; } + pos = scalar(); + CImg::vector((ulongT)mp_image_whds,pos,p1).move_to(code); + _cimg_mp_return(pos); + } + + if (!std::strncmp(ss,"while(",6)) { // While...do + _cimg_mp_op("Function 'while()'"); + s0 = *ss5=='('?ss6:ss8; + s1 = s0; while (s1::vector((ulongT)mp_while,pos,arg1,p2 - p1,code._width - p2,arg2, + pos>=arg6 && !_cimg_mp_is_constant(pos), + arg1>=arg6 && !_cimg_mp_is_constant(arg1)).move_to(code,p1); + _cimg_mp_return(pos); + } + break; + + case 'x' : + if (!std::strncmp(ss,"xor(",4)) { // Xor + _cimg_mp_op("Function 'xor()'"); + s1 = ss4; while (s1::vector((ulongT)op,pos,0).move_to(l_opcode); + for (s = std::strchr(ss,'(') + 1; s::sequence(_cimg_mp_size(arg2),arg2 + 1, + arg2 + (ulongT)_cimg_mp_size(arg2)). + move_to(l_opcode); + else CImg::vector(arg2).move_to(l_opcode); + is_sth&=_cimg_mp_is_constant(arg2); + s = ns; + } + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + if (is_sth) _cimg_mp_constant(op(*this)); + opcode.move_to(code); + _cimg_mp_return(pos); + } + + // No corresponding built-in function -> Look for a user-defined macro call. + s0 = strchr(ss,'('); + if (s0) { + variable_name.assign(ss,(unsigned int)(s0 - ss + 1)).back() = 0; + + // Count number of specified arguments. + p1 = 0; + for (s = s0 + 1; s<=se1; ++p1, s = ns + 1) { + while (*s && cimg::is_blank(*s)) ++s; + if (*s==')' && !p1) break; + ns = s; while (ns _expr = macro_body[l]; // Expression to be substituted + + p1 = 1; // Index of current parsed argument + for (s = s0 + 1; s<=se1; ++p1, s = ns + 1) { // Parse function arguments + while (*s && cimg::is_blank(*s)) ++s; + if (*s==')' && p1==1) break; // Function has no arguments + if (p1>p2) { ++p1; break; } + ns = s; while (ns _pexpr(_expr._width); + ns = _pexpr._data; + for (ps = _expr._data, c1 = ' '; *ps; ++ps) { + if (!cimg::is_blank(*ps)) c1 = *ps; + *(ns++) = c1; + } + *ns = 0; + + CImg _level = get_level(_expr); + expr.swap(_expr); + pexpr.swap(_pexpr); + level.swap(_level); + s0 = user_macro; + user_macro = macro_def[l]; + pos = compile(expr._data,expr._data + expr._width - 1,depth1,p_ref,is_critical); + user_macro = s0; + level.swap(_level); + pexpr.swap(_pexpr); + expr.swap(_expr); + _cimg_mp_return(pos); + } + + if (arg3) { // Macro name matched but number of arguments does not + CImg sig_nargs(arg3); + arg1 = 0; + cimglist_for(macro_def,l) if (!std::strcmp(macro_def[l],variable_name)) + sig_nargs[arg1++] = (unsigned int)macro_def[l].back(); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + if (sig_nargs._width>1) { + sig_nargs.sort(); + arg1 = sig_nargs.back(); + --sig_nargs._width; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Function '%s()': Number of specified arguments (%u) " + "does not match macro declaration (defined for %s or %u arguments), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,variable_name._data, + p1,sig_nargs.value_string()._data,arg1, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } else + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Function '%s()': Number of specified arguments (%u) " + "does not match macro declaration (defined for %u argument%s), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,variable_name._data, + p1,*sig_nargs,*sig_nargs!=1?"s":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + } // if (se1==')') + + // Char / string initializer. + if (*se1=='\'' && + ((se1>ss && *ss=='\'') || + (se1>ss1 && *ss=='_' && *ss1=='\''))) { + if (*ss=='_') { _cimg_mp_op("Char initializer"); s1 = ss2; } + else { _cimg_mp_op("String initializer"); s1 = ss1; } + arg1 = (unsigned int)(se1 - s1); // Original string length + if (arg1) { + CImg(s1,arg1 + 1).move_to(variable_name).back() = 0; + cimg::strunescape(variable_name); + arg1 = (unsigned int)std::strlen(variable_name); + } + if (!arg1) _cimg_mp_return(0); // Empty string -> 0 + if (*ss=='_') { + if (arg1==1) _cimg_mp_constant((unsigned char)*variable_name); + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s: Literal %s contains more than one byte, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op, + ss1, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + pos = vector(arg1); + CImg::vector((ulongT)mp_string_init,pos,arg1).move_to(l_opcode); + CImg(1,arg1/sizeof(ulongT) + (arg1%sizeof(ulongT)?1:0)).move_to(l_opcode); + std::memcpy((char*)l_opcode[1]._data,variable_name,arg1); + (l_opcode>'y').move_to(code); + _cimg_mp_return(pos); + } + + // Vector initializer [ ... ]. + if (*ss=='[' && *se1==']') { + _cimg_mp_op("Vector initializer"); + s1 = ss1; while (s1s1 && cimg::is_blank(*s2)) --s2; + if (s2>s1 && *s1=='\'' && *s2=='\'') { // Vector values provided as a string + arg1 = (unsigned int)(s2 - s1 - 1); // Original string length + if (arg1) { + CImg(s1 + 1,arg1 + 1).move_to(variable_name).back() = 0; + cimg::strunescape(variable_name); + arg1 = (unsigned int)std::strlen(variable_name); + } + if (!arg1) _cimg_mp_return(0); // Empty string -> 0 + pos = vector(arg1); + CImg::vector((ulongT)mp_string_init,pos,arg1).move_to(l_opcode); + CImg(1,arg1/sizeof(ulongT) + (arg1%sizeof(ulongT)?1:0)).move_to(l_opcode); + std::memcpy((char*)l_opcode[1]._data,variable_name,arg1); + (l_opcode>'y').move_to(code); + } else { // Vector values provided as list of items + arg1 = 0; // Number of specified values + if (*ss1!=']') for (s = ss1; s::sequence(arg3,arg2 + 1,arg2 + arg3).move_to(l_opcode); + arg1+=arg3; + } else { CImg::vector(arg2).move_to(l_opcode); ++arg1; } + s = ns; + } + if (!arg1) _cimg_mp_return(0); + pos = vector(arg1); + l_opcode.insert(CImg::vector((ulongT)mp_vector_init,pos,0,arg1),0); + (l_opcode>'y').move_to(opcode); + opcode[2] = opcode._height; + opcode.move_to(code); + } + _cimg_mp_return(pos); + } + + // Variables related to the input list of images. + if (*ss1=='#' && ss2::vector((ulongT)mp_list_Joff,pos,p1,0,0,p2).move_to(code); + _cimg_mp_return(pos); + case 'R' : // R#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,0, + 0,_cimg_mp_boundary); + case 'G' : // G#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,1, + 0,_cimg_mp_boundary); + case 'B' : // B#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,2, + 0,_cimg_mp_boundary); + case 'A' : // A#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,3, + 0,_cimg_mp_boundary); + } + } + + if (*ss1 && *ss2=='#' && ss3='0' && *ss1<='9') { // i0#ind...i9#ind + if (!listin) _cimg_mp_return(0); + _cimg_mp_scalar7(mp_list_ixyzc,arg1,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,*ss1 - '0', + 0,_cimg_mp_boundary); + } + + if (*ss1=='c') { // ic#ind + if (!listin) _cimg_mp_return(0); + if (_cimg_mp_is_constant(arg1)) { + if (!list_median) list_median.assign(listin._width); + if (!list_median[p1]) CImg::vector(listin[p1].median()).move_to(list_median[p1]); + _cimg_mp_constant(*list_median[p1]); + } + _cimg_mp_scalar1(mp_list_median,arg1); + } + + if (*ss1=='n') { // in#ind + if (!listin) _cimg_mp_return(0); + if (_cimg_mp_is_constant(arg1)) { + if (!list_norm) list_norm.assign(listin._width); + if (!list_norm[p1]) CImg::vector(listin[p1].magnitude()).move_to(list_norm[p1]); + _cimg_mp_constant(*list_norm[p1]); + } + _cimg_mp_scalar1(mp_list_norm,arg1); + } + + switch (*ss1) { + case 'm' : arg2 = 0; break; // im#ind + case 'M' : arg2 = 1; break; // iM#ind + case 'a' : arg2 = 2; break; // ia#ind + case 'v' : arg2 = 3; break; // iv#ind + case 's' : arg2 = 12; break; // is#ind + case 'p' : arg2 = 13; break; // ip#ind + } + } else if (*ss1=='m') switch (*ss) { + case 'x' : arg2 = 4; break; // xm#ind + case 'y' : arg2 = 5; break; // ym#ind + case 'z' : arg2 = 6; break; // zm#ind + case 'c' : arg2 = 7; break; // cm#ind + } else if (*ss1=='M') switch (*ss) { + case 'x' : arg2 = 8; break; // xM#ind + case 'y' : arg2 = 9; break; // yM#ind + case 'z' : arg2 = 10; break; // zM#ind + case 'c' : arg2 = 11; break; // cM#ind + } + if (arg2!=~0U) { + if (!listin) _cimg_mp_return(0); + if (_cimg_mp_is_constant(arg1)) { + if (!list_stats) list_stats.assign(listin._width); + if (!list_stats[p1]) list_stats[p1].assign(1,14,1,1,0).fill(listin[p1].get_stats(),false); + _cimg_mp_constant(list_stats(p1,arg2)); + } + _cimg_mp_scalar2(mp_list_stats,arg1,arg2); + } + } + + if (*ss=='w' && *ss1=='h' && *ss2=='d' && *ss3=='#' && ss4='0' && *variable_name<='9') is_sth = false; + else for (ns = variable_name; *ns; ++ns) + if (!is_varchar(*ns)) { is_sth = false; break; } + if (is_sth) { + get_variable_pos(variable_name,arg1,arg2); + arg1 = arg2!=~0U?reserved_label[arg2]:arg1!=~0U?variable_pos[arg1]:~0U; + if (arg1!=~0U) _cimg_mp_return(arg1); + } + + // Reached an unknown item -> error. + c1 = *se1; + _cimg_mp_strerr; + cimg::strellipsize(variable_name,64); + if (is_sth) + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Undefined variable '%s' in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + s1 = std::strchr(ss,'('); + s_op = s1 && c1==')'?"function call":"item"; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Unrecognized %s '%s' in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function, + s_op,variable_name._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + + // Evaluation procedure. + double operator()(const double x, const double y, const double z, const double c) { + mem[_cimg_mp_slot_x] = x; mem[_cimg_mp_slot_y] = y; mem[_cimg_mp_slot_z] = z; mem[_cimg_mp_slot_c] = c; + for (p_code = code; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + return *result; + } + + // Evaluation procedure (return output values in vector 'output'). + template + void operator()(const double x, const double y, const double z, const double c, t *const output) { + mem[_cimg_mp_slot_x] = x; mem[_cimg_mp_slot_y] = y; mem[_cimg_mp_slot_z] = z; mem[_cimg_mp_slot_c] = c; + for (p_code = code; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + if (result_dim) { + const double *ptrs = result + 1; + t *ptrd = output; + for (unsigned int k = 0; k_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + p_code_end = code.end(); + } + + // Evaluation procedure for end_t() bloc. + void end_t() { + if (!code_end_t) return; + if (imgin) { + mem[_cimg_mp_slot_x] = imgin._width - 1.; + mem[_cimg_mp_slot_y] = imgin._height - 1.; + mem[_cimg_mp_slot_z] = imgin._depth - 1.; + mem[_cimg_mp_slot_c] = imgin._spectrum - 1.; + } else mem[_cimg_mp_slot_x] = mem[_cimg_mp_slot_y] = mem[_cimg_mp_slot_z] = mem[_cimg_mp_slot_c] = 0; + p_code_end = code_end_t.end(); + for (p_code = code_end_t; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + } + + // Evaluation procedure the end() bloc. + void end() { + if (!code_end) return; + if (imgin) { + mem[_cimg_mp_slot_x] = imgin._width - 1.; + mem[_cimg_mp_slot_y] = imgin._height - 1.; + mem[_cimg_mp_slot_z] = imgin._depth - 1.; + mem[_cimg_mp_slot_c] = imgin._spectrum - 1.; + } else mem[_cimg_mp_slot_x] = mem[_cimg_mp_slot_y] = mem[_cimg_mp_slot_z] = mem[_cimg_mp_slot_c] = 0; + p_code_end = code_end.end(); + for (p_code = code_end; p_code_data; + const ulongT target = opcode[1]; + mem[target] = _cimg_mp_defunc(*this); + } + } + + // Merge inter-thread variables. + // (argument 'mp' is the master instance). + void merge(_cimg_math_parser& mp) { + if (&mp==this) return; + cimg_rofY(mp.memmerge,k) { + const unsigned int + pos = (unsigned int)mp.memmerge(0,k), + siz = (unsigned int)mp.memmerge(1,k), + iop = (unsigned int)mp.memmerge(2,k); + if (!siz) switch (iop) { // Scalar value + case 0 : mp.mem[pos] = mem[pos]; break; // Assignment + case 1 : mp.mem[pos]+=mem[pos]; break; // Operator+ + case 2 : mp.mem[pos]-=mem[pos]; break; // Operator- + case 3 : mp.mem[pos]*=mem[pos]; break; // Operator* + case 4 : mp.mem[pos]/=mem[pos]; break; // Operator/ + case 5 : mp.mem[pos] = std::min(mp.mem[pos],mem[pos]); break; // Operator 'min' + case 6 : mp.mem[pos] = std::max(mp.mem[pos],mem[pos]); break; // Operator 'max' + } else switch (iop) { // Vector value + case 0 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true) = CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 1 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)+=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 2 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)-=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 3 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)*=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 4 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true)/=CImg(&mem[pos + 1],siz,1,1,1,true); + break; + case 5 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true).min(CImg(&mem[pos + 1],siz,1,1,1,true)); + break; + case 6 : + CImg(&mp.mem[pos + 1],siz,1,1,1,true).max(CImg(&mem[pos + 1],siz,1,1,1,true)); + break; + } + } + } + + // Return specified argument number as a string. + static const char *s_argth(const unsigned int n_arg) { + const char + *_s_arg[] = { "", "First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth","Ninth", + "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", + "20th", "21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "One of the" }; + return _s_arg[n_arg s_calling_function() const { + CImg res; + const unsigned int + l1 = calling_function?(unsigned int)std::strlen(calling_function):0U, + l2 = user_macro?(unsigned int)std::strlen(user_macro):0U; + if (l2) { + res.assign(l1 + l2 + 48); + cimg_snprintf(res,res._width,"%s(): When substituting function '%s()'",calling_function,user_macro); + } else { + res.assign(l1 + l2 + 4); + cimg_snprintf(res,res._width,"%s()",calling_function); + } + return res; + } + + // Return type of a memory element as a string. + CImg s_type(const unsigned int arg) const { + CImg res; + if (_cimg_mp_is_vector(arg)) { // Vector + CImg::string("vectorXXXXXXXXXXXXXXXX").move_to(res); + cimg_sprintf(res._data + 6,"%u",_cimg_mp_size(arg)); + } else CImg::string("scalar").move_to(res); + return res; + } + + // Count parentheses/brackets level of each character of the expression. + CImg get_level(CImg& _expr) const { + bool is_escaped = false, next_is_escaped = false; + unsigned int mode = 0, next_mode = 0; // { 0=normal | 1=char-string | 2=vector-string + CImg res(_expr._width - 1); + unsigned int *pd = res._data; + int _level = 0; + for (const char *ps = _expr._data; *ps && _level>=0; ++ps) { + if (!is_escaped && !next_is_escaped && *ps=='\\') next_is_escaped = true; + if (!is_escaped && *ps=='\'') { // Non-escaped character + if (!mode && ps>_expr._data && *(ps - 1)=='[') next_mode = mode = 2; // Start vector-string + else if (mode==2 && *(ps + 1)==']') next_mode = !mode; // End vector-string + else if (mode<2) next_mode = mode?(mode = 0):1; // Start/end char-string + } + *(pd++) = (unsigned int)(mode>=1 || is_escaped?_level + (mode==1): + *ps=='(' || *ps=='['?_level++: + *ps==')' || *ps==']'?--_level: + _level); + mode = next_mode; + is_escaped = next_is_escaped; + next_is_escaped = false; + } + if (mode) { + cimg::strellipsize(_expr,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Unterminated string literal, in expression '%s'.", + pixel_type(),_cimg_mp_calling_function, + _expr._data); + } + if (_level) { + cimg::strellipsize(_expr,64); + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: Unbalanced parentheses/brackets, in expression '%s'.", + pixel_type(),_cimg_mp_calling_function, + _expr._data); + } + return res; + } + + // Find and return index of current image 'imgin' within image list 'listin'. + unsigned int get_mem_img_index() { + if (mem_img_index==~0U) { + if (&imgout>listout.data() && &imgout='0' && c2<='9') rp = 20 + c2 - '0'; // i0...i9 + else if (c2=='m') rp = 4; // im + else if (c2=='M') rp = 5; // iM + else if (c2=='a') rp = 6; // ia + else if (c2=='v') rp = 7; // iv + else if (c2=='s') rp = 8; // is + else if (c2=='p') rp = 9; // ip + else if (c2=='c') rp = 10; // ic + else if (c2=='n') rp = 11; // in + } else if (c2=='m') { + if (c1=='x') rp = 12; // xm + else if (c1=='y') rp = 13; // ym + else if (c1=='z') rp = 14; // zm + else if (c1=='c') rp = 15; // cm + } else if (c2=='M') { + if (c1=='x') rp = 16; // xM + else if (c1=='y') rp = 17; // yM + else if (c1=='z') rp = 18; // zM + else if (c1=='c') rp = 19; // cM + } + } else if (variable_name[1] && variable_name[2] && !variable_name[3]) { // Three-chars variable + c1 = variable_name[0]; + c2 = variable_name[1]; + c3 = variable_name[2]; + if (c1=='w' && c2=='h' && c3=='d') rp = 1; // whd + } else if (variable_name[1] && variable_name[2] && variable_name[3] && + !variable_name[4]) { // Four-chars variable + c1 = variable_name[0]; + c2 = variable_name[1]; + c3 = variable_name[2]; + c4 = variable_name[3]; + if (c1=='w' && c2=='h' && c3=='d' && c4=='s') rp = 2; // whds + } else if (!std::strcmp(variable_name,"interpolation")) rp = 30; // interpolation + else if (!std::strcmp(variable_name,"boundary")) rp = 31; // boundary + + if (rp!=~0U) { rpos = rp; return; } // One of the reserved labels + + // Multi-char variable name : check for existing variable with same name + cimglist_for(variable_def,i) + if (!std::strcmp(variable_name,variable_def[i])) { pos = i; break; } + } + + // Tell for each character of an expression if it is inside a string or not. + CImg is_inside_string(CImg& _expr) const { + bool is_escaped = false, next_is_escaped = false; + unsigned int mode = 0, next_mode = 0; // { 0=normal | 1=char-string | 2=vector-string + CImg res = CImg::string(_expr); + bool *pd = res._data; + for (const char *ps = _expr._data; *ps; ++ps) { + if (!next_is_escaped && *ps=='\\') next_is_escaped = true; + if (!is_escaped && *ps=='\'') { // Non-escaped character + if (!mode && ps>_expr._data && *(ps - 1)=='[') next_mode = mode = 2; // Start vector-string + else if (mode==2 && *(ps + 1)==']') next_mode = !mode; // End vector-string + else if (mode<2) next_mode = mode?(mode = 0):1; // Start/end char-string + } + *(pd++) = mode>=1 || is_escaped; + mode = next_mode; + is_escaped = next_is_escaped; + next_is_escaped = false; + } + return res; + } + + // Return true if specified argument can be a part of an allowed variable name. + bool is_varchar(const char c) const { + return (c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='_'; + } + + // Return true if all values of a vector are computation values. + bool is_comp_vector(const unsigned int arg) const { + unsigned int siz = _cimg_mp_size(arg); + if (siz>8) return false; + const int *ptr = memtype.data(arg + 1); + bool is_tmp = true; + while (siz-->0) if (*(ptr++)) { is_tmp = false; break; } + return is_tmp; + } + + // Check if a memory slot is a positive integer constant scalar value. + // 'mode' can be: + // { 0=constant | 1=integer constant | 2=positive integer constant | 3=strictly-positive integer constant } + void check_constant(const unsigned int arg, const unsigned int n_arg, + const unsigned int mode, + char *const ss, char *const se, const char saved_char) { + _cimg_mp_check_type(arg,n_arg,1,0); + if (!(_cimg_mp_is_constant(arg) && + (!mode || (double)(int)mem[arg]==mem[arg]) && + (mode<2 || mem[arg]>=(mode==3)))) { + const char *const s_arg = s_argth(n_arg); + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s %s%s (of type '%s') is not a%s constant, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s_arg,*s_arg?" argument":" Argument",s_type(arg)._data, + !mode?"":mode==1?"n integer": + mode==2?" positive integer":" strictly positive integer", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check if an image index is a constant value. + void check_constant_index(const unsigned int arg, + char *const ss, char *const se, const char saved_char) { + if (arg!=~0U && !_cimg_mp_is_constant(arg)) { + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s Specified image index is not a constant, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check a matrix is square. + void check_matrix_square(const unsigned int arg, const unsigned int n_arg, + char *const ss, char *const se, const char saved_char) { + _cimg_mp_check_type(arg,n_arg,2,0); + const unsigned int + siz = _cimg_mp_size(arg), + n = (unsigned int)cimg::round(std::sqrt((float)siz)); + if (n*n!=siz) { + const char *s_arg; + if (*s_op!='F') s_arg = !n_arg?"":n_arg==1?"Left-hand":"Right-hand"; + else s_arg = !n_arg?"":n_arg==1?"First":n_arg==2?"Second":n_arg==3?"Third":"One"; + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s %s%s (of type '%s') " + "cannot be considered as a square matrix, in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s_arg,*s_op=='F'?(*s_arg?" argument":" Argument"):(*s_arg?" operand":" Operand"), + s_type(arg)._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check type compatibility for one argument. + // Bits of 'mode' tells what types are allowed: + // { 1 = scalar | 2 = vectorN }. + // If 'N' is not zero, it also restricts the vectors to be of size N only. + void check_type(const unsigned int arg, const unsigned int n_arg, + const unsigned int mode, const unsigned int N, + char *const ss, char *const se, const char saved_char) { + const bool + is_scalar = _cimg_mp_is_scalar(arg), + is_vector = _cimg_mp_is_vector(arg) && (!N || _cimg_mp_size(arg)==N); + bool cond = false; + if (mode&1) cond|=is_scalar; + if (mode&2) cond|=is_vector; + if (!cond) { + const char *s_arg; + if (*s_op!='F') s_arg = !n_arg?"":n_arg==1?"Left-hand":"Right-hand"; + else s_arg = s_argth(n_arg); + CImg sb_type(32); + if (mode==1) cimg_snprintf(sb_type,sb_type._width,"'scalar'"); + else if (mode==2) { + if (N) cimg_snprintf(sb_type,sb_type._width,"'vector%u'",N); + else cimg_snprintf(sb_type,sb_type._width,"'vector'"); + } else { + if (N) cimg_snprintf(sb_type,sb_type._width,"'scalar' or 'vector%u'",N); + else cimg_snprintf(sb_type,sb_type._width,"'scalar' or 'vector'"); + } + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s %s%s has invalid type '%s' (should be %s), " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s_arg,*s_op=='F'?(*s_arg?" argument":" Argument"):(*s_arg?" operand":" Operand"), + s_type(arg)._data,sb_type._data, + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Check that listin or listout are not empty. + void check_list(const bool is_out, + char *const ss, char *const se, const char saved_char) { + if ((!is_out && !listin) || (is_out && !listout)) { + char *s0; _cimg_mp_strerr; + throw CImgArgumentException("[" cimg_appname "_math_parser] " + "CImg<%s>::%s: %s%s Invalid call with an empty image list, " + "in expression '%s%s%s'.", + pixel_type(),_cimg_mp_calling_function,s_op,*s_op?":":"", + s0>expr._data?"...":"",s0,se<&expr.back()?"...":""); + } + } + + // Insert constant value in memory. + unsigned int constant(const double val) { + + // Search for built-in constant. + if (cimg::type::is_nan(val)) return _cimg_mp_slot_nan; + if (val==(double)(int)val) { + if (val>=0 && val<=10) return (unsigned int)val; + if (val<0 && val>=-5) return (unsigned int)(10 - val); + } + if (val==0.5) return 16; + + // Search for constant already requested before (in const cache). + unsigned int ind = ~0U; + if (constcache_size<1024) { + if (!constcache_size) { + constcache_vals.assign(16,1,1,1,0); + constcache_inds.assign(16,1,1,1,0); + *constcache_vals = val; + constcache_size = 1; + ind = 0; + } else { // Dichotomic search + const double val_beg = *constcache_vals, val_end = constcache_vals[constcache_size - 1]; + if (val_beg>=val) ind = 0; + else if (val_end==val) ind = constcache_size - 1; + else if (val_end=constcache_size || constcache_vals[ind]!=val) { + ++constcache_size; + if (constcache_size>constcache_vals._width) { + constcache_vals.resize(-200,1,1,1,0); + constcache_inds.resize(-200,1,1,1,0); + } + const int l = constcache_size - (int)ind - 1; + if (l>0) { + std::memmove(&constcache_vals[ind + 1],&constcache_vals[ind],l*sizeof(double)); + std::memmove(&constcache_inds[ind + 1],&constcache_inds[ind],l*sizeof(unsigned int)); + } + constcache_vals[ind] = val; + constcache_inds[ind] = 0; + } + } + if (constcache_inds[ind]) return constcache_inds[ind]; + } + + // Insert new constant in memory if necessary. + if (mempos>=mem._width) { mem.resize(-200,1,1,1,0); memtype.resize(-200,1,1,1,0); } + const unsigned int pos = mempos++; + mem[pos] = val; + memtype[pos] = 1; // Set constant property + if (ind!=~0U) constcache_inds[ind] = pos; + return pos; + } + + // Insert new scalar in memory. + unsigned int scalar() { + if (mempos>=mem._width) { mem.resize(-200,1,1,1,0); memtype.resize(mem._width,1,1,1,0); } + return mempos++; + } + + // Insert new vector of specified size in memory. + unsigned int vector(const unsigned int siz) { + if (mempos + siz>=mem._width) { + mem.resize(2*mem._width + siz,1,1,1,0); + memtype.resize(mem._width,1,1,1,0); + } + const unsigned int pos = mempos++; + mem[pos] = cimg::type::nan(); + memtype[pos] = siz + 1; + mempos+=siz; + return pos; + } + + // Insert new initialized vector. + unsigned int vector(const unsigned int siz, const double value) { + const unsigned int pos = vector(siz); + double *ptr = &mem[pos] + 1; + for (unsigned int i = 0; i::vector((ulongT)mp_vector_copy,pos,arg,siz).move_to(code); + return pos; + } + + // Set variable status to all values of a vector. + void set_variable_vector(const unsigned int arg) { + unsigned int siz = _cimg_mp_size(arg); + int *ptr = memtype.data(arg + 1); + while (siz-->0) *(ptr++) = -1; + } + + unsigned int scalar0(const mp_func op) { + const unsigned int pos = scalar(); + CImg::vector((ulongT)op,pos).move_to(code); + return pos; + } + + unsigned int scalar1(const mp_func op, const unsigned int arg1) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1) && op!=mp_copy?arg1:scalar(); + CImg::vector((ulongT)op,pos,arg1).move_to(code); + return pos; + } + + unsigned int scalar2(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2).move_to(code); + return pos; + } + + unsigned int scalar3(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3).move_to(code); + return pos; + } + + unsigned int scalar4(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4).move_to(code); + return pos; + } + + unsigned int scalar5(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4, const unsigned int arg5) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4: + arg5!=~0U && arg5>_cimg_mp_slot_c && _cimg_mp_is_comp(arg5)?arg5:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4,arg5).move_to(code); + return pos; + } + + unsigned int scalar6(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4, const unsigned int arg5, const unsigned int arg6) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4: + arg5!=~0U && arg5>_cimg_mp_slot_c && _cimg_mp_is_comp(arg5)?arg5: + arg6!=~0U && arg6>_cimg_mp_slot_c && _cimg_mp_is_comp(arg6)?arg6:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4,arg5,arg6).move_to(code); + return pos; + } + + unsigned int scalar7(const mp_func op, + const unsigned int arg1, const unsigned int arg2, const unsigned int arg3, + const unsigned int arg4, const unsigned int arg5, const unsigned int arg6, + const unsigned int arg7) { + const unsigned int pos = + arg1!=~0U && arg1>_cimg_mp_slot_c && _cimg_mp_is_comp(arg1)?arg1: + arg2!=~0U && arg2>_cimg_mp_slot_c && _cimg_mp_is_comp(arg2)?arg2: + arg3!=~0U && arg3>_cimg_mp_slot_c && _cimg_mp_is_comp(arg3)?arg3: + arg4!=~0U && arg4>_cimg_mp_slot_c && _cimg_mp_is_comp(arg4)?arg4: + arg5!=~0U && arg5>_cimg_mp_slot_c && _cimg_mp_is_comp(arg5)?arg5: + arg6!=~0U && arg6>_cimg_mp_slot_c && _cimg_mp_is_comp(arg6)?arg6: + arg7!=~0U && arg7>_cimg_mp_slot_c && _cimg_mp_is_comp(arg7)?arg7:scalar(); + CImg::vector((ulongT)op,pos,arg1,arg2,arg3,arg4,arg5,arg6,arg7).move_to(code); + return pos; + } + + void self_vector_s(const unsigned int pos, const mp_func op, const unsigned int arg1) { + const unsigned int siz = _cimg_mp_size(pos); + if (siz>24) CImg::vector((ulongT)mp_self_map_vector_s,pos,siz,(ulongT)op,arg1).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1).move_to(code[code._width - 1 - siz + k]); + } + } + + void self_vector_v(const unsigned int pos, const mp_func op, const unsigned int arg1) { + const unsigned int siz = _cimg_mp_size(pos); + if (siz>24) CImg::vector((ulongT)mp_self_map_vector_v,pos,siz,(ulongT)op,arg1).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k).move_to(code[code._width - 1 - siz + k]); + } + } + + unsigned int vector1_v(const mp_func op, const unsigned int arg1) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_v,pos,siz,(ulongT)op,arg1).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector2_vv(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:is_comp_vector(arg2)?arg2:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_vv,pos,siz,(ulongT)op,arg1,arg2).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k,arg2 + k).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector2_vs(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_vs,pos,siz,(ulongT)op,arg1,arg2).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k,arg2).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector2_sv(const mp_func op, const unsigned int arg1, const unsigned int arg2) { + const unsigned int + siz = _cimg_mp_size(arg2), + pos = is_comp_vector(arg2)?arg2:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_sv,pos,siz,(ulongT)op,arg1,arg2).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1,arg2 + k).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + unsigned int vector3_vss(const mp_func op, const unsigned int arg1, const unsigned int arg2, + const unsigned int arg3) { + const unsigned int + siz = _cimg_mp_size(arg1), + pos = is_comp_vector(arg1)?arg1:vector(siz); + if (siz>24) CImg::vector((ulongT)mp_vector_map_vss,pos,siz,(ulongT)op,arg1,arg2,arg3).move_to(code); + else { + code.insert(siz); + for (unsigned int k = 1; k<=siz; ++k) + CImg::vector((ulongT)op,pos + k,arg1 + k,arg2,arg3).move_to(code[code._width - 1 - siz + k]); + } + return pos; + } + + // Evaluation functions, known by the parser. + // Defining these functions 'static' ensures that sizeof(mp_func)==sizeof(ulongT), + // so we can store pointers to them directly in the opcode vectors. +#ifdef _mp_arg +#undef _mp_arg +#endif +#define _mp_arg(x) mp.mem[mp.opcode[x]] + + static double mp_abs(_cimg_math_parser& mp) { + return cimg::abs(_mp_arg(2)); + } + + static double mp_add(_cimg_math_parser& mp) { + return _mp_arg(2) + _mp_arg(3); + } + + static double mp_acos(_cimg_math_parser& mp) { + return std::acos(_mp_arg(2)); + } + + static double mp_acosh(_cimg_math_parser& mp) { + return cimg::acosh(_mp_arg(2)); + } + + static double mp_asinh(_cimg_math_parser& mp) { + return cimg::asinh(_mp_arg(2)); + } + + static double mp_atanh(_cimg_math_parser& mp) { + return cimg::atanh(_mp_arg(2)); + } + + static double mp_arg(_cimg_math_parser& mp) { + const int _ind = (int)_mp_arg(4); + const unsigned int + nb_args = (unsigned int)mp.opcode[2] - 4, + ind = _ind<0?_ind + nb_args:(unsigned int)_ind, + siz = (unsigned int)mp.opcode[3]; + if (siz>0) { + if (ind>=nb_args) std::memset(&_mp_arg(1) + 1,0,siz*sizeof(double)); + else std::memcpy(&_mp_arg(1) + 1,&_mp_arg(ind + 4) + 1,siz*sizeof(double)); + return cimg::type::nan(); + } + if (ind>=nb_args) return 0; + return _mp_arg(ind + 4); + } + + static double mp_arg0(_cimg_math_parser& mp) { + const int _ind = (int)_mp_arg(4); + const unsigned int + nb_args = (unsigned int)mp.opcode[2] - 4, + ind = _ind<0?_ind + nb_args:_ind + 1U, + siz = (unsigned int)mp.opcode[3]; + if (siz>0) { + if (ind>=nb_args) std::memset(&_mp_arg(1) + 1,0,siz*sizeof(double)); + else std::memcpy(&_mp_arg(1) + 1,&_mp_arg(ind + 4) + 1,siz*sizeof(double)); + return cimg::type::nan(); + } + if (ind>=nb_args) return 0; + return _mp_arg(ind + 4); + } + + static double mp_argkth(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + const double val = mp_kth(mp); + for (unsigned int i = 4; ival) { val = _val; argval = i - 3; } + } + return (double)argval; + } + + static double mp_argmaxabs(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3), absval = cimg::abs(val); + unsigned int argval = 0; + for (unsigned int i = 4; iabsval) { val = _val; absval = _absval; argval = i - 3; } + } + return (double)argval; + } + + static double mp_asin(_cimg_math_parser& mp) { + return std::asin(_mp_arg(2)); + } + + static double mp_atan(_cimg_math_parser& mp) { + return std::atan(_mp_arg(2)); + } + + static double mp_atan2(_cimg_math_parser& mp) { + return std::atan2(_mp_arg(2),_mp_arg(3)); + } + + static double mp_avg(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i>(unsigned int)_mp_arg(3)); + } + + static double mp_bitwise_xor(_cimg_math_parser& mp) { + return (double)((longT)_mp_arg(2) ^ (longT)_mp_arg(3)); + } + + static double mp_bool(_cimg_math_parser& mp) { + return (double)(bool)_mp_arg(2); + } + + static double mp_break(_cimg_math_parser& mp) { + mp.break_type = 1; + mp.p_code = mp.p_break - 1; + return cimg::type::nan(); + } + + static double mp_breakpoint(_cimg_math_parser& mp) { + cimg_abort_init; + cimg_abort_test; + cimg::unused(mp); + return cimg::type::nan(); + } + +#ifdef cimg_mp_func_run + static double mp_run(_cimg_math_parser& mp) { + const unsigned int nb_args = (unsigned int)(mp.opcode[2] - 3)/2; + CImgList _str; + CImg it; + for (unsigned int n = 0; n string + const double *ptr = &_mp_arg(3 + 2*n) + 1; + unsigned int l = 0; + while (l(ptr,l,1,1,1,true).move_to(_str); + } else { // Scalar argument -> number + it.assign(24); + cimg_snprintf(it,it._width,"%.17g",_mp_arg(3 + 2*n)); + CImg::string(it,false,true).move_to(_str); + } + } + CImg(1,1,1,1,0).move_to(_str); + CImg str = _str>'x'; + cimg_mp_func_run(str._data); + return cimg::type::nan(); + } +#endif + + static double mp_cbrt(_cimg_math_parser& mp) { + return cimg::cbrt(_mp_arg(2)); + } + + static double mp_ceil(_cimg_math_parser& mp) { + return std::ceil(_mp_arg(2)); + } + + static double mp_complex_abs(_cimg_math_parser& mp) { + return cimg::_hypot(_mp_arg(2),_mp_arg(3)); + } + + static double mp_complex_conj(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = real; + ptrd[1] = -imag; + return cimg::type::nan(); + } + + static double mp_complex_div_sv(_cimg_math_parser& mp) { + const double + *ptr2 = &_mp_arg(3) + 1, + r1 = _mp_arg(2), + r2 = *(ptr2++), i2 = *ptr2; + double *ptrd = &_mp_arg(1) + 1; + const double denom = r2*r2 + i2*i2; + *(ptrd++) = r1*r2/denom; + *ptrd = -r1*i2/denom; + return cimg::type::nan(); + } + + static double mp_complex_div_vv(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2) + 1, *ptr2 = &_mp_arg(3) + 1, + r1 = *(ptr1++), i1 = *ptr1, + r2 = *(ptr2++), i2 = *ptr2; + double *ptrd = &_mp_arg(1) + 1; + const double denom = r2*r2 + i2*i2; + *(ptrd++) = (r1*r2 + i1*i2)/denom; + *ptrd = (r2*i1 - r1*i2)/denom; + return cimg::type::nan(); + } + + static double mp_complex_exp(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3), exp_real = std::exp(real); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = exp_real*std::cos(imag); + ptrd[1] = exp_real*std::sin(imag); + return cimg::type::nan(); + } + + static double mp_complex_log(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = 0.5*std::log(real*real + imag*imag); + ptrd[1] = std::atan2(imag,real); + return cimg::type::nan(); + } + + static double mp_complex_mul(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2) + 1, *ptr2 = &_mp_arg(3) + 1, + r1 = *(ptr1++), i1 = *ptr1, + r2 = *(ptr2++), i2 = *ptr2; + double *ptrd = &_mp_arg(1) + 1; + *(ptrd++) = r1*r2 - i1*i2; + *(ptrd++) = r1*i2 + r2*i1; + return cimg::type::nan(); + } + + static void _mp_complex_pow(const double r1, const double i1, + const double r2, const double i2, + double *ptrd) { + double ro, io; + if (cimg::abs(i2)<1e-15) { // Exponent is real + if (cimg::abs(r1)<1e-15 && cimg::abs(i1)<1e-15) { + if (cimg::abs(r2)<1e-15) { ro = 1; io = 0; } + else ro = io = 0; + } else { + const double + mod1_2 = r1*r1 + i1*i1, + phi1 = std::atan2(i1,r1), + modo = std::pow(mod1_2,0.5*r2), + phio = r2*phi1; + ro = modo*std::cos(phio); + io = modo*std::sin(phio); + } + } else { // Exponent is complex + if (cimg::abs(r1)<1e-15 && cimg::abs(i1)<1e-15) ro = io = 0; + const double + mod1_2 = r1*r1 + i1*i1, + phi1 = std::atan2(i1,r1), + modo = std::pow(mod1_2,0.5*r2)*std::exp(-i2*phi1), + phio = r2*phi1 + 0.5*i2*std::log(mod1_2); + ro = modo*std::cos(phio); + io = modo*std::sin(phio); + } + *(ptrd++) = ro; + *ptrd = io; + } + + static double mp_complex_pow_ss(_cimg_math_parser& mp) { + const double val1 = _mp_arg(2), val2 = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(val1,0,val2,0,ptrd); + return cimg::type::nan(); + } + + static double mp_complex_pow_sv(_cimg_math_parser& mp) { + const double val1 = _mp_arg(2), *ptr2 = &_mp_arg(3) + 1; + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(val1,0,ptr2[0],ptr2[1],ptrd); + return cimg::type::nan(); + } + + static double mp_complex_pow_vs(_cimg_math_parser& mp) { + const double *ptr1 = &_mp_arg(2) + 1, val2 = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(ptr1[0],ptr1[1],val2,0,ptrd); + return cimg::type::nan(); + } + + static double mp_complex_pow_vv(_cimg_math_parser& mp) { + const double *ptr1 = &_mp_arg(2) + 1, *ptr2 = &_mp_arg(3) + 1; + double *ptrd = &_mp_arg(1) + 1; + _mp_complex_pow(ptr1[0],ptr1[1],ptr2[0],ptr2[1],ptrd); + return cimg::type::nan(); + } + + static double mp_complex_cos(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::cos(real)*std::cosh(imag); + ptrd[1] = -std::sin(real)*std::sinh(imag); + return cimg::type::nan(); + } + + static double mp_complex_sin(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sin(real)*std::cosh(imag); + ptrd[1] = std::cos(real)*std::sinh(imag); + return cimg::type::nan(); + } + + static double mp_complex_tan(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3), denom = std::cos(2*real) + std::cosh(2*imag); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sin(2*real)/denom; + ptrd[1] = std::sinh(2*imag)/denom; + return cimg::type::nan(); + } + + static double mp_complex_cosh(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::cosh(real)*std::cos(imag); + ptrd[1] = std::sinh(real)*std::sin(imag); + return cimg::type::nan(); + } + + static double mp_complex_sinh(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sinh(real)*std::cos(imag); + ptrd[1] = std::cosh(real)*std::sin(imag); + return cimg::type::nan(); + } + + static double mp_complex_tanh(_cimg_math_parser& mp) { + const double real = _mp_arg(2), imag = _mp_arg(3), denom = std::cosh(2*real) + std::cos(2*imag); + double *ptrd = &_mp_arg(1) + 1; + ptrd[0] = std::sinh(2*real)/denom; + ptrd[1] = std::sin(2*imag)/denom; + return cimg::type::nan(); + } + + static double mp_continue(_cimg_math_parser& mp) { + mp.break_type = 2; + mp.p_code = mp.p_break - 1; + return cimg::type::nan(); + } + + static double mp_convolve(_cimg_math_parser &mp) { + return _mp_correlate(mp,true); + } + + static double mp_correlate(_cimg_math_parser &mp) { + return _mp_correlate(mp,false); + } + + static double _mp_correlate(_cimg_math_parser &mp, bool is_convolve) { + double *ptrd = &_mp_arg(1) + 1; + const double *const ptrA = &_mp_arg(2) + 1, *const ptrM = &_mp_arg(7) + 1; + const unsigned int + wA = (unsigned int)mp.opcode[3], + hA = (unsigned int)mp.opcode[4], + dA = (unsigned int)mp.opcode[5], + sA = (unsigned int)mp.opcode[6], + wM = (unsigned int)mp.opcode[8], + hM = (unsigned int)mp.opcode[9], + dM = (unsigned int)mp.opcode[10], + sM = (unsigned int)mp.opcode[11], + boundary_conditions = (unsigned int)_mp_arg(12), + channel_mode = (unsigned int)mp.opcode[14], + xcenter = (unsigned int)_mp_arg(15), + ycenter = (unsigned int)_mp_arg(16), + zcenter = (unsigned int)_mp_arg(17), + xstart = (unsigned int)mp.opcode[18], + ystart = (unsigned int)mp.opcode[19], + zstart = (unsigned int)mp.opcode[20], + xend = (unsigned int)mp.opcode[21], + yend = (unsigned int)mp.opcode[22], + zend = (unsigned int)mp.opcode[23]; + const bool + is_normalized = (bool)_mp_arg(13); + const float + xstride = (float)_mp_arg(24), + ystride = (float)_mp_arg(25), + zstride = (float)_mp_arg(26), + xdilation = (float)_mp_arg(27), + ydilation = (float)_mp_arg(28), + zdilation = (float)_mp_arg(29); + CImg res; + if (is_convolve) res = CImg(ptrA,wA,hA,dA,sA,true). + get_convolve(CImg(ptrM,wM,hM,dM,sM,true), + boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter, + xstart,ystart,zstart, + xend,yend,zend, + xstride,ystride,zstride, + xdilation,ydilation,zdilation); + else res = CImg(ptrA,wA,hA,dA,sA,true). + get_correlate(CImg(ptrM,wM,hM,dM,sM,true), + boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter, + xstart,ystart,zstart, + xend,yend,zend, + xstride,ystride,zstride, + xdilation,ydilation,zdilation); + CImg(ptrd,res._width,res._height,res._depth,res._spectrum,true) = res; + return cimg::type::nan(); + } + + static double mp_cos(_cimg_math_parser& mp) { + return std::cos(_mp_arg(2)); + } + + static double mp_cosh(_cimg_math_parser& mp) { + return std::cosh(_mp_arg(2)); + } + + static double mp_critical(_cimg_math_parser& mp) { + const ulongT g_target = mp.opcode[1]; + cimg_pragma_openmp(critical(mp_critical)) + { + for (const CImg *const p_end = ++mp.p_code + mp.opcode[2]; + mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + } + --mp.p_code; + return mp.mem[g_target]; + } + + static double mp_crop(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const int x = (int)_mp_arg(3), y = (int)_mp_arg(4), z = (int)_mp_arg(5), c = (int)_mp_arg(6); + const unsigned int + dx = (unsigned int)mp.opcode[7], + dy = (unsigned int)mp.opcode[8], + dz = (unsigned int)mp.opcode[9], + dc = (unsigned int)mp.opcode[10]; + const unsigned int boundary_conditions = (unsigned int)_mp_arg(11); + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgin:mp.listin[ind]; + if (!img) std::memset(ptrd,0,dx*dy*dz*dc*sizeof(double)); + else CImg(ptrd,dx,dy,dz,dc,true) = img.get_crop(x,y,z,c, + x + dx - 1,y + dy - 1, + z + dz - 1,c + dc - 1, + boundary_conditions); + return cimg::type::nan(); + } + + static double mp_cross(_cimg_math_parser& mp) { + CImg + vout(&_mp_arg(1) + 1,1,3,1,1,true), + v1(&_mp_arg(2) + 1,1,3,1,1,true), + v2(&_mp_arg(3) + 1,1,3,1,1,true); + (vout = v1).cross(v2); + return cimg::type::nan(); + } + + static double mp_cut(_cimg_math_parser& mp) { + double val = _mp_arg(2), cmin = _mp_arg(3), cmax = _mp_arg(4); + return valcmax?cmax:val; + } + + static double mp_date(_cimg_math_parser& mp) { + const unsigned int + siz_out = (unsigned int)mp.opcode[2], + siz_arg1 = (unsigned int)mp.opcode[4], + siz_arg2 = (unsigned int)mp.opcode[6]; + double *ptr_out = &_mp_arg(1) + (siz_out?1:0); + const double + *ptr_arg1 = siz_arg1==~0U?0:&_mp_arg(3) + (siz_arg1?1:0), + *ptr_arg2 = siz_arg2==~0U?0:&_mp_arg(5) + 1; + + if (!ptr_arg2) { // No filename specified + if (!siz_arg1) return cimg::date((unsigned int)*ptr_arg1); + if (siz_arg1==~0U) for (unsigned int k = 0; k::nan(); + } + + // Filename specified. + CImg ss(siz_arg2 + 1); + cimg_forX(ss,i) ss[i] = (char)ptr_arg2[i]; + ss.back() = 0; + if (!siz_arg1) return cimg::fdate(ss,(unsigned int)*ptr_arg1); + for (unsigned int k = 0; k::nan(); + } + + static double mp_debug(_cimg_math_parser& mp) { + CImg expr(mp.opcode[2] - 4); + { + const ulongT *ptrs = mp.opcode._data + 4; + cimg_for(expr,ptrd,char) *ptrd = (char)*(ptrs++); + } + cimg::strellipsize(expr); + const ulongT g_target = mp.opcode[1]; + +#if cimg_use_openmp==0 + const unsigned int n_thread = 0; +#else + const unsigned int n_thread = omp_get_thread_num(); +#endif + cimg_pragma_openmp(critical(mp_debug)) + { + std::fprintf(cimg::output(), + "\n[" cimg_appname "_math_parser] %p[thread #%u]:%*c" + "Start debugging expression '%s', code length %u -> mem[%u] (memsize: %u)", + (void*)&mp,n_thread,mp.debug_indent,' ', + expr._data,(unsigned int)mp.opcode[3],(unsigned int)g_target,mp.mem._width); + std::fflush(cimg::output()); + mp.debug_indent+=3; + } + const CImg *const p_end = ++mp.p_code + mp.opcode[3]; + CImg _op; + for ( ; mp.p_code &op = *mp.p_code; + mp.opcode._data = op._data; + + _op.assign(1,op._height - 1); + const ulongT *ptrs = op._data + 1; + for (ulongT *ptrd = _op._data, *const ptrde = _op._data + _op._height; ptrd mem[%u] = %.17g", + (void*)&mp,n_thread,mp.debug_indent,' ', + (void*)mp.opcode._data,(void*)*mp.opcode,_op.value_string().data(), + (unsigned int)target,mp.mem[target]); + std::fflush(cimg::output()); + } + } + cimg_pragma_openmp(critical(mp_debug)) + { + mp.debug_indent-=3; + std::fprintf(cimg::output(), + "\n[" cimg_appname "_math_parser] %p[thread #%u]:%*c" + "End debugging expression '%s' -> mem[%u] = %.17g (memsize: %u)", + (void*)&mp,n_thread,mp.debug_indent,' ', + expr._data,(unsigned int)g_target,mp.mem[g_target],mp.mem._width); + std::fflush(cimg::output()); + } + --mp.p_code; + return mp.mem[g_target]; + } + + static double mp_decrement(_cimg_math_parser& mp) { + return _mp_arg(2) - 1; + } + + static double mp_det(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + const unsigned int k = (unsigned int)mp.opcode[3]; + return CImg(ptrs,k,k,1,1,true).det(); + } + + static double mp_diag(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2], siz = mp.opcode[2] - 3; + double *ptrd = &_mp_arg(1) + 1; + std::memset(ptrd,0,siz*siz*sizeof(double)); + for (unsigned int i = 3; i::nan(); + } + + static double mp_display_memory(_cimg_math_parser& mp) { + cimg::unused(mp); + std::fputc('\n',cimg::output()); + CImg title(128); + cimg_snprintf(title,title._width,"%s (%u)","[" cimg_appname "_math_parser] Memory snapshot",mp.mem._width); + mp.mem.display(title); + return cimg::type::nan(); + } + + static double mp_display(_cimg_math_parser& mp) { + const unsigned int + _siz = (unsigned int)mp.opcode[3], + siz = _siz?_siz:1; + const double *const ptr = &_mp_arg(1) + (_siz?1:0); + const int + w = (int)_mp_arg(4), + h = (int)_mp_arg(5), + d = (int)_mp_arg(6), + s = (int)_mp_arg(7); + CImg img; + if (w>0 && h>0 && d>0 && s>0) { + if ((unsigned int)w*h*d*s<=siz) img.assign(ptr,w,h,d,s,true); + else img.assign(ptr,siz).resize(w,h,d,s,-1); + } else img.assign(ptr,1,siz,1,1,true); + + CImg expr(mp.opcode[2] - 8); + const ulongT *ptrs = mp.opcode._data + 8; + cimg_for(expr,ptrd,char) *ptrd = (char)*(ptrs++); + ((CImg::string("[" cimg_appname "_math_parser] ",false,true),expr)>'x').move_to(expr); + cimg::strellipsize(expr); + std::fputc('\n',cimg::output()); + img.display(expr._data); + return cimg::type::nan(); + } + + static double mp_div(_cimg_math_parser& mp) { + return _mp_arg(2)/_mp_arg(3); + } + + static double mp_dot(_cimg_math_parser& mp) { + const unsigned int siz = (unsigned int)mp.opcode[4]; + return CImg(&_mp_arg(2) + 1,1,siz,1,1,true). + dot(CImg(&_mp_arg(3) + 1,1,siz,1,1,true)); + } + + static double mp_do(_cimg_math_parser& mp) { + const ulongT + mem_body = mp.opcode[1], + mem_cond = mp.opcode[2]; + const CImg + *const p_body = ++mp.p_code, + *const p_cond = p_body + mp.opcode[3], + *const p_end = p_cond + mp.opcode[4]; + const unsigned int vsiz = (unsigned int)mp.opcode[5]; + if (mp.opcode[6]) { // Set default value for result and condition if necessary + if (vsiz) CImg(&mp.mem[mem_body] + 1,vsiz,1,1,1,true).fill(cimg::type::nan()); + else mp.mem[mem_body] = cimg::type::nan(); + } + if (mp.opcode[7]) mp.mem[mem_cond] = 0; + + const unsigned int _break_type = mp.break_type; + mp.break_type = 0; + do { + for (mp.p_code = p_body; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + for (mp.p_code = p_cond; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + } while (mp.mem[mem_cond]); + mp.break_type = _break_type; + mp.p_code = p_end - 1; + return mp.mem[mem_body]; + } + + static double mp_draw(_cimg_math_parser& mp) { + const int x = (int)_mp_arg(4), y = (int)_mp_arg(5), z = (int)_mp_arg(6), c = (int)_mp_arg(7); + unsigned int ind = (unsigned int)mp.opcode[3]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(3),mp.listin.width()); + CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + unsigned int + dx = (unsigned int)mp.opcode[8], + dy = (unsigned int)mp.opcode[9], + dz = (unsigned int)mp.opcode[10], + dc = (unsigned int)mp.opcode[11]; + dx = dx==~0U?img._width:(unsigned int)_mp_arg(8); + dy = dy==~0U?img._height:(unsigned int)_mp_arg(9); + dz = dz==~0U?img._depth:(unsigned int)_mp_arg(10); + dc = dc==~0U?img._spectrum:(unsigned int)_mp_arg(11); + + const ulongT sizS = mp.opcode[2]; + if (sizS<(ulongT)dx*dy*dz*dc) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'draw()': " + "Sprite dimension (%lu values) and specified sprite geometry (%u,%u,%u,%u) " + "(%lu values) do not match.", + mp.imgin.pixel_type(),sizS,dx,dy,dz,dc,(ulongT)dx*dy*dz*dc); + CImg S(&_mp_arg(1) + 1,dx,dy,dz,dc,true); + const float opacity = (float)_mp_arg(12); + + if (img._data) { + if (mp.opcode[13]!=~0U) { // Opacity mask specified + const ulongT sizM = mp.opcode[14]; + if (sizM<(ulongT)dx*dy*dz) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'draw()': " + "Mask dimension (%lu values) and specified sprite geometry (%u,%u,%u,%u) " + "(%lu values) do not match.", + mp.imgin.pixel_type(),sizS,dx,dy,dz,dc,(ulongT)dx*dy*dz*dc); + const CImg M(&_mp_arg(13) + 1,dx,dy,dz,(unsigned int)(sizM/(dx*dy*dz)),true); + img.draw_image(x,y,z,c,S,M,opacity,(float)_mp_arg(15)); + } else img.draw_image(x,y,z,c,S,opacity); + } + return cimg::type::nan(); + } + + static double mp_echo(_cimg_math_parser& mp) { + const unsigned int nb_args = (unsigned int)(mp.opcode[2] - 3)/2; + CImgList _str; + CImg it; + for (unsigned int n = 0; n string + const double *ptr = &_mp_arg(3 + 2*n) + 1; + unsigned int l = 0; + while (l(ptr,l,1,1,1,true).move_to(_str); + } else { // Scalar argument -> number + it.assign(24); + cimg_snprintf(it,it._width,"%.17g",_mp_arg(3 + 2*n)); + CImg::string(it,false,true).move_to(_str); + } + } + CImg(1,1,1,1,0).move_to(_str); + const CImg str = _str>'x'; + std::fprintf(cimg::output(),"\n%s",str._data); + return cimg::type::nan(); + } + + static double mp_ellipse(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + unsigned int ind = (unsigned int)mp.opcode[3]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(3),mp.listin.width()); + CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + CImg color(img._spectrum,1,1,1,0); + bool is_invalid_arguments = false, is_outlined = false; + float r1 = 0, r2 = 0, angle = 0, opacity = 1; + unsigned int i = 4, pattern = ~0U; + int x0 = 0, y0 = 0; + if (i>=i_end) is_invalid_arguments = true; + else { + x0 = (int)cimg::round(_mp_arg(i++)); + if (i>=i_end) is_invalid_arguments = true; + else { + y0 = (int)cimg::round(_mp_arg(i++)); + if (i>=i_end) is_invalid_arguments = true; + else { + r1 = (float)_mp_arg(i++); + if (i>=i_end) r2 = r1; + else { + r2 = (float)_mp_arg(i++); + if (i args(i_end - 4); + cimg_forX(args,k) args[k] = _mp_arg(4 + k); + if (ind==~0U) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse()': " + "Invalid arguments '%s'. ", + mp.imgin.pixel_type(),args.value_string()._data); + else + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse()': " + "Invalid arguments '#%u%s%s'. ", + mp.imgin.pixel_type(),ind,args._width?",":"",args.value_string()._data); + } + return cimg::type::nan(); + } + + static double mp_eq(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)==_mp_arg(3)); + } + + static double mp_exp(_cimg_math_parser& mp) { + return std::exp(_mp_arg(2)); + } + + static double mp_expr(_cimg_math_parser& mp) { + const unsigned int + sizs = (unsigned int)mp.opcode[3], + w = (unsigned int)mp.opcode[4], + h = (unsigned int)mp.opcode[5], + d = (unsigned int)mp.opcode[6], + s = (unsigned int)mp.opcode[7], + sizd = w*h*d*s; + const double *ptrs = &_mp_arg(2) + 1; + double *ptrd = &_mp_arg(1); + CImg ss(sizs + 1); + cimg_for_inX(ss,0,ss.width() - 1,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + if (!sizd) return CImg(w,h,d,s,0).eval(ss,0,0,0,0,&mp.listin,&mp.listout); // Scalar result + CImg(++ptrd,w,h,d,s,true) = CImg(w,h,d,s,0).fill(ss,true,true,&mp.listin,&mp.listout); + return cimg::type::nan(); + } + + static double mp_eye(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int k = (unsigned int)mp.opcode[2]; + CImg(ptrd,k,k,1,1,true).identity_matrix(); + return cimg::type::nan(); + } + + static double mp_f2ui(_cimg_math_parser& mp) { + return (double)cimg::float2uint((float)_mp_arg(2)); + } + + static double mp_factorial(_cimg_math_parser& mp) { + return cimg::factorial((int)_mp_arg(2)); + } + + static double mp_fibonacci(_cimg_math_parser& mp) { + return cimg::fibonacci((int)_mp_arg(2)); + } + + static double mp_find(_cimg_math_parser& mp) { + const int _step = (int)_mp_arg(6), step = _step?_step:-1; + const ulongT siz = (ulongT)mp.opcode[3]; + longT ind = (longT)(mp.opcode[5]!=_cimg_mp_slot_nan?_mp_arg(5):step>0?0:siz - 1); + if (ind<0 || ind>=(longT)siz) return -1.; + const double + *const ptrb = &_mp_arg(2) + 1, + *const ptre = ptrb + siz, + val = _mp_arg(4), + *ptr = ptrb + ind; + + // Forward search + if (step>0) { + while (ptr=ptre?-1.:(double)(ptr - ptrb); + } + + // Backward search. + while (ptr>=ptrb && *ptr!=val) ptr+=step; + return ptr0?0:siz1 - 1); + if (ind<0 || ind>=(longT)siz1) return -1.; + const double + *const ptr1b = &_mp_arg(2) + 1, + *const ptr1e = ptr1b + siz1, + *const ptr2b = &_mp_arg(4) + 1, + *const ptr2e = ptr2b + siz2, + *ptr1 = ptr1b + ind, + *p1 = 0, + *p2 = 0; + + // Forward search. + if (step>0) { + do { + while (ptr1=ptr1e) return -1.; + p1 = ptr1 + 1; + p2 = ptr2b + 1; + while (p1=ptr1b && *ptr1!=*ptr2b) ptr1+=step; + if (ptr1=ptr1b); + return p2 + *const p_init = ++mp.p_code, + *const p_cond = p_init + mp.opcode[4], + *const p_body = p_cond + mp.opcode[5], + *const p_post = p_body + mp.opcode[6], + *const p_end = p_post + mp.opcode[7]; + const unsigned int vsiz = (unsigned int)mp.opcode[2]; + bool is_cond = false; + if (mp.opcode[8]) { // Set default value for result and condition if necessary + if (vsiz) CImg(&mp.mem[mem_body] + 1,vsiz,1,1,1,true).fill(cimg::type::nan()); + else mp.mem[mem_body] = cimg::type::nan(); + } + if (mp.opcode[9]) mp.mem[mem_cond] = 0; + const unsigned int _break_type = mp.break_type; + mp.break_type = 0; + + for (mp.p_code = p_init; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + + if (!mp.break_type) do { + for (mp.p_code = p_cond; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; + + is_cond = (bool)mp.mem[mem_cond]; + if (is_cond && !mp.break_type) { + for (mp.p_code = p_body; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + + for (mp.p_code = p_post; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + } + } while (is_cond); + + mp.break_type = _break_type; + mp.p_code = p_end - 1; + return mp.mem[mem_body]; + } + + static double mp_fsize(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + const ulongT siz = (ulongT)mp.opcode[3]; + CImg ss(siz + 1); + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + return (double)cimg::fsize(ss); + } + + static double mp_g(_cimg_math_parser& mp) { + cimg::unused(mp); + return cimg::grand(&mp.rng); + } + + static double mp_gauss(_cimg_math_parser& mp) { + const double x = _mp_arg(2), s = _mp_arg(3); + return std::exp(-x*x/(2*s*s))/(_mp_arg(4)?std::sqrt(2*s*s*cimg::PI):1); + } + +#ifdef cimg_mp_func_get + static double mp_get(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + double *ptrd = &_mp_arg(1); + const unsigned int + sizs = (unsigned int)mp.opcode[3], + sizd = (unsigned int)mp.opcode[4]; + const bool to_string = (bool)mp.opcode[5]; + CImg ss(sizs + 1); + cimg_for_inX(ss,0,ss.width() - 1,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + if (sizd) cimg_mp_func_get(ptrd + 1,sizd,to_string,ss._data); + else cimg_mp_func_get(ptrd,0,to_string,ss._data); + return cimg::type::nan(); + } +#endif + + static double mp_gcd(_cimg_math_parser& mp) { + return cimg::gcd((long)_mp_arg(2),(long)_mp_arg(3)); + } + +#ifdef cimg_mp_func_name + static double mp_name(_cimg_math_parser& mp) { + double *const ptr = &_mp_arg(1) + 1; + const unsigned int siz = (unsigned int)mp.opcode[3]; + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind==~0U) std::memset(ptr,0,siz*sizeof(double)); + else { + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + cimg_mp_func_name(ind,ptr,siz); + } + return cimg::type::nan(); + } +#endif + + static double mp_gt(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)>_mp_arg(3)); + } + + static double mp_gte(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)>=_mp_arg(3)); + } + + static double mp_i(_cimg_math_parser& mp) { + return (double)mp.imgin.atXYZC((int)mp.mem[_cimg_mp_slot_x],(int)mp.mem[_cimg_mp_slot_y], + (int)mp.mem[_cimg_mp_slot_z],(int)mp.mem[_cimg_mp_slot_c],(T)0); + } + + static double mp_if(_cimg_math_parser& mp) { + const bool is_cond = (bool)_mp_arg(2); + const ulongT + mem_left = mp.opcode[3], + mem_right = mp.opcode[4]; + const CImg + *const p_right = ++mp.p_code + mp.opcode[5], + *const p_end = p_right + mp.opcode[6]; + const unsigned int vtarget = (unsigned int)mp.opcode[1], vsiz = (unsigned int)mp.opcode[7]; + if (is_cond) for ( ; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + else for (mp.p_code = p_right; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.p_code==mp.p_break) --mp.p_code; + else mp.p_code = p_end - 1; + if (vsiz) std::memcpy(&mp.mem[vtarget] + 1,&mp.mem[is_cond?mem_left:mem_right] + 1,sizeof(double)*vsiz); + return mp.mem[is_cond?mem_left:mem_right]; + } + + static double mp_image_d(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.depth(); + } + + static double mp_image_display(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + CImg title(256); + std::fputc('\n',cimg::output()); + cimg_snprintf(title,title._width,"[ Image #%u ]",ind); + img.display(title); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_h(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.height(); + } + + static double mp_image_median(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.median(); + } + + static double mp_image_norm(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.magnitude(); + } + + static double mp_image_print(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + CImg title(256); + std::fputc('\n',cimg::output()); + cimg_snprintf(title,title._width,"[ Image #%u ]",ind); + img.print(title); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_resize(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + const double + _w = mp.opcode[3]==~0U?-100:_mp_arg(3), + _h = mp.opcode[4]==~0U?-100:_mp_arg(4), + _d = mp.opcode[5]==~0U?-100:_mp_arg(5), + _s = mp.opcode[6]==~0U?-100:_mp_arg(6); + const unsigned int + w = (unsigned int)(_w>=0?_w:-_w*img.width()/100), + h = (unsigned int)(_h>=0?_h:-_h*img.height()/100), + d = (unsigned int)(_d>=0?_d:-_d*img.depth()/100), + s = (unsigned int)(_s>=0?_s:-_s*img.spectrum()/100), + interp = (int)_mp_arg(7); + if (mp.is_fill && img._data==mp.imgout._data) { + cimg::mutex(6,0); + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'resize()': " + "Cannot both fill and resize image (%u,%u,%u,%u) " + "to new dimensions (%u,%u,%u,%u).", + img.pixel_type(),img._width,img._height,img._depth,img._spectrum,w,h,d,s); + } + const unsigned int + boundary = (int)_mp_arg(8); + const float + cx = (float)_mp_arg(9), + cy = (float)_mp_arg(10), + cz = (float)_mp_arg(11), + cc = (float)_mp_arg(12); + img.resize(w,h,d,s,interp,boundary,cx,cy,cz,cc); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_s(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.spectrum(); + } + + static double mp_image_sort(_cimg_math_parser& mp) { + const bool is_increasing = (bool)_mp_arg(3); + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listout.width()), + axis = (unsigned int)_mp_arg(4); + cimg::mutex(6); + CImg &img = mp.listout[ind]; + img.sort(is_increasing, + axis==0 || axis=='x'?'x': + axis==1 || axis=='y'?'y': + axis==2 || axis=='z'?'z': + axis==3 || axis=='c'?'c':0); + cimg::mutex(6,0); + return cimg::type::nan(); + } + + static double mp_image_stats(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind==~0U) CImg(ptrd,14,1,1,1,true) = mp.imgout.get_stats(); + else { + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg(ptrd,14,1,1,1,true) = mp.listout[ind].get_stats(); + } + return cimg::type::nan(); + } + + static double mp_image_w(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width(); + } + + static double mp_image_wh(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width()*img.height(); + } + + static double mp_image_whd(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width()*img.height()*img.depth(); + } + + static double mp_image_whds(_cimg_math_parser& mp) { + unsigned int ind = (unsigned int)mp.opcode[2]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + const CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + return (double)img.width()*img.height()*img.depth()*img.spectrum(); + } + + static double mp_increment(_cimg_math_parser& mp) { + return _mp_arg(2) + 1; + } + + static double mp_inrange(_cimg_math_parser& mp) { + const unsigned int sizd = (unsigned int)mp.opcode[2]; + const bool + include_m = (bool)_mp_arg(9), + include_M = (bool)_mp_arg(10); + if (!sizd) { // Scalar result + const double val = _mp_arg(3); + const double m = _mp_arg(5), M = _mp_arg(7); + if (M>=m) return (double)((include_m?(val>=m):(val>m)) && (include_M?(val<=M):(val=M):(val>M)) && (include_m?(val<=m):(val=m) + ptrd[k] = (double)((include_m?(val>=m):(val>m)) && (include_M?(val<=M):(val=M):(val>M)) && (include_m?(val<=m):(val::nan(); + } + + static double mp_int(_cimg_math_parser& mp) { + return (double)(longT)_mp_arg(2); + } + + static double mp_ioff(_cimg_math_parser& mp) { + const unsigned int + boundary_conditions = (unsigned int)_mp_arg(3); + const CImg &img = mp.imgin; + const longT + off = (longT)_mp_arg(2), + whds = (longT)img.size(); + if (off>=0 && off ss(siz + 1); + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + return (double)cimg::is_directory(ss); + } + + static double mp_isin(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + const double val = _mp_arg(3); + for (unsigned int i = 4; i::is_inf(_mp_arg(2)); + } + + static double mp_isint(_cimg_math_parser& mp) { + return (double)((double)(longT)_mp_arg(2)==_mp_arg(2)); + } + + static double mp_isfile(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2) + 1; + const ulongT siz = (ulongT)mp.opcode[3]; + CImg ss(siz + 1); + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + return (double)cimg::is_file(ss); + } + + static double mp_isnan(_cimg_math_parser& mp) { + return (double)cimg::type::is_nan(_mp_arg(2)); + } + + static double mp_ixyzc(_cimg_math_parser& mp) { + const unsigned int + interpolation = (unsigned int)_mp_arg(6), + boundary_conditions = (unsigned int)_mp_arg(7); + const CImg &img = mp.imgin; + const double + x = _mp_arg(2), y = _mp_arg(3), + z = _mp_arg(4), c = _mp_arg(5); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx &img = mp.imgin; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whds = (longT)img.size(); + if (off>=0 && off &img = mp.imgin; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c], + x = ox + _mp_arg(2), y = oy + _mp_arg(3), + z = oz + _mp_arg(4), c = oc + _mp_arg(5); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx vals(i_end - 4); + double *p = vals.data(); + for (unsigned int i = 4; i &img = mp.listin[indi]; + const int _step = (int)_mp_arg(5), step = _step?_step:-1; + const ulongT siz = (ulongT)img.size(); + longT ind = (longT)(mp.opcode[4]!=_cimg_mp_slot_nan?_mp_arg(4):step>0?0:siz - 1); + if (ind<0 || ind>=(longT)siz) return -1.; + const T + *const ptrb = img.data(), + *const ptre = img.end(), + *ptr = ptrb + ind; + const double val = _mp_arg(3); + + // Forward search + if (step>0) { + while (ptr=ptre?-1.:(double)(ptr - ptrb); + } + + // Backward search. + while (ptr>=ptrb && (double)*ptr!=val) ptr+=step; + return ptr &img = mp.listin[indi]; + const int _step = (bool)_mp_arg(6), step = _step?_step:-1; + const ulongT + siz1 = (ulongT)img.size(), + siz2 = (ulongT)mp.opcode[4]; + longT ind = (longT)(mp.opcode[5]!=_cimg_mp_slot_nan?_mp_arg(5):step>0?0:siz1 - 1); + if (ind<0 || ind>=(longT)siz1) return -1.; + const T + *const ptr1b = img.data(), + *const ptr1e = ptr1b + siz1, + *ptr1 = ptr1b + ind, + *p1 = 0; + const double + *const ptr2b = &_mp_arg(3) + 1, + *const ptr2e = ptr2b + siz2, + *p2 = 0; + + // Forward search. + if (step>0) { + do { + while (ptr1=ptr1e) return -1.; + p1 = ptr1 + 1; + p2 = ptr2b + 1; + while (p1=ptr1b && *ptr1!=*ptr2b) ptr1+=step; + if (ptr1=ptr1b); + return p2 &img = mp.listin[ind]; + const longT + off = (longT)_mp_arg(3), + whds = (longT)img.size(); + if (off>=0 && off &img = mp.listin[ind]; + const double + x = _mp_arg(3), y = _mp_arg(4), + z = _mp_arg(5), c = _mp_arg(6); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx &img = mp.listin[ind]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whds = (longT)img.size(); + if (off>=0 && off &img = mp.listin[ind]; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c], + x = ox + _mp_arg(3), y = oy + _mp_arg(4), + z = oz + _mp_arg(5), c = oc + _mp_arg(6); + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._cubic_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.cubic_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + case 1 : // Linear interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), s2 = 2.f*img.spectrum(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), + mz = cimg::mod((float)z,d2), mc = cimg::mod((float)c,s2); + return (double)img._linear_atXYZ(mx=img._spectrum?img._spectrum - 1:c)); + default : // Dirichlet + if (c<0 || c>=img._spectrum) return (T)0; + return (double)img.linear_atXYZ((float)x,(float)y,(float)z,(int)c,(T)0); + } + default : // Nearest neighbor interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const int + w2 = 2*img.width(), h2 = 2*img.height(), d2 = 2*img.depth(), s2 = 2*img.spectrum(), + mx = cimg::mod((int)x,w2), my = cimg::mod((int)y,h2), + mz = cimg::mod((int)z,d2), mc = cimg::mod((int)c,s2); + return (double)img(mx::vector(mp.listin[ind].median()).move_to(mp.list_median[ind]); + return *mp.list_median[ind]; + } + + static double mp_list_norm(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + if (!mp.list_norm) mp.list_norm.assign(mp.listin._width); + if (!mp.list_norm[ind]) CImg::vector(mp.listin[ind].magnitude()).move_to(mp.list_norm[ind]); + return *mp.list_norm[ind]; + } + + static double mp_list_set_ioff(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const longT + off = (longT)_mp_arg(3), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const int + x = (int)_mp_arg(3), y = (int)_mp_arg(4), + z = (int)_mp_arg(5), c = (int)_mp_arg(6); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.listout[ind]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c]; + const int + x = (int)(ox + _mp_arg(3)), y = (int)(oy + _mp_arg(4)), + z = (int)(oz + _mp_arg(5)), c = (int)(oc + _mp_arg(6)); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.listout[ind]; + const longT + off = (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const longT + off = (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_list_set_Ixyz_s(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const int + x = (int)_mp_arg(3), + y = (int)_mp_arg(4), + z = (int)_mp_arg(5); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.listout[ind]; + const int + x = (int)_mp_arg(3), + y = (int)_mp_arg(4), + z = (int)_mp_arg(5); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_list_set_Joff_s(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.listout[ind]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_list_set_Jxyz_s(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + CImg &img = mp.listout[ind]; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(3)), + y = (int)(oy + _mp_arg(4)), + z = (int)(oz + _mp_arg(5)); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.listout[ind]; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(3)), + y = (int)(oy + _mp_arg(4)), + z = (int)(oz + _mp_arg(5)); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_list_spectrum(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._spectrum; + } + + static double mp_list_stats(_cimg_math_parser& mp) { + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + k = (unsigned int)mp.opcode[3]; + if (!mp.list_stats) mp.list_stats.assign(mp.listin._width); + if (!mp.list_stats[ind]) mp.list_stats[ind].assign(1,14,1,1,0).fill(mp.listin[ind].get_stats(),false); + return mp.list_stats(ind,k); + } + + static double mp_list_wh(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width*mp.listin[ind]._height; + } + + static double mp_list_whd(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width*mp.listin[ind]._height*mp.listin[ind]._depth; + } + + static double mp_list_whds(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width*mp.listin[ind]._height*mp.listin[ind]._depth*mp.listin[ind]._spectrum; + } + + static double mp_list_width(_cimg_math_parser& mp) { + const unsigned int ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()); + return (double)mp.listin[ind]._width; + } + + static double mp_list_Ioff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + boundary_conditions = (unsigned int)_mp_arg(4), + vsiz = (unsigned int)mp.opcode[5]; + const CImg &img = mp.listin[ind]; + const longT + off = (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_list_Ixyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + interpolation = (unsigned int)_mp_arg(6), + boundary_conditions = (unsigned int)_mp_arg(7), + vsiz = (unsigned int)mp.opcode[8]; + const CImg &img = mp.listin[ind]; + const double x = _mp_arg(3), y = _mp_arg(4), z = _mp_arg(5); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + + static double mp_list_Joff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + boundary_conditions = (unsigned int)_mp_arg(4), + vsiz = (unsigned int)mp.opcode[5]; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], oz = (int)mp.mem[_cimg_mp_slot_z]; + const CImg &img = mp.listin[ind]; + const longT + off = img.offset(ox,oy,oz) + (longT)_mp_arg(3), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_list_Jxyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + ind = (unsigned int)cimg::mod((int)_mp_arg(2),mp.listin.width()), + interpolation = (unsigned int)_mp_arg(6), + boundary_conditions = (unsigned int)_mp_arg(7), + vsiz = (unsigned int)mp.opcode[8]; + const CImg &img = mp.listin[ind]; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z], + x = ox + _mp_arg(3), y = oy + _mp_arg(4), z = oz + _mp_arg(5); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + + static double mp_log(_cimg_math_parser& mp) { + return std::log(_mp_arg(2)); + } + + static double mp_log10(_cimg_math_parser& mp) { + return std::log10(_mp_arg(2)); + } + + static double mp_log2(_cimg_math_parser& mp) { + return cimg::log2(_mp_arg(2)); + } + + static double mp_logical_and(_cimg_math_parser& mp) { + const bool val_left = (bool)_mp_arg(2); + const CImg *const p_end = ++mp.p_code + mp.opcode[4]; + if (!val_left) { mp.p_code = p_end - 1; return 0; } + const ulongT mem_right = mp.opcode[3]; + for ( ; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + --mp.p_code; + return (double)(bool)mp.mem[mem_right]; + } + + static double mp_logical_not(_cimg_math_parser& mp) { + return (double)!_mp_arg(2); + } + + static double mp_logical_or(_cimg_math_parser& mp) { + const bool val_left = (bool)_mp_arg(2); + const CImg *const p_end = ++mp.p_code + mp.opcode[4]; + if (val_left) { mp.p_code = p_end - 1; return 1; } + const ulongT mem_right = mp.opcode[3]; + for ( ; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + --mp.p_code; + return (double)(bool)mp.mem[mem_right]; + } + + static double mp_lowercase(_cimg_math_parser& mp) { + return cimg::lowercase(_mp_arg(2)); + } + + static double mp_lt(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)<_mp_arg(3)); + } + + static double mp_lte(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)<=_mp_arg(3)); + } + + static double mp_matrix_eig(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptr1 = &_mp_arg(2) + 1; + const unsigned int k = (unsigned int)mp.opcode[3]; + CImg val, vec; + CImg(ptr1,k,k,1,1,true).symmetric_eigen(val,vec); + CImg(ptrd,1,k,1,1,true) = val; + CImg(ptrd + k,k,k,1,1,true) = vec.get_transpose(); + return cimg::type::nan(); + } + + static double mp_matrix_invert(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptr1 = &_mp_arg(2) + 1; + const unsigned int k = (unsigned int)mp.opcode[3]; + const bool use_LU = (bool)_mp_arg(4); + CImg(ptrd,k,k,1,1,true) = CImg(ptr1,k,k,1,1,true).get_invert(use_LU); + return cimg::type::nan(); + } + + static double mp_matrix_mul(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double + *ptr1 = &_mp_arg(2) + 1, + *ptr2 = &_mp_arg(3) + 1; + const unsigned int + k = (unsigned int)mp.opcode[4], + l = (unsigned int)mp.opcode[5], + m = (unsigned int)mp.opcode[6]; + CImg(ptrd,m,k,1,1,true) = CImg(ptr1,l,k,1,1,true)*CImg(ptr2,m,l,1,1,true); + return cimg::type::nan(); + } + + static double mp_matrix_pseudoinvert(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptr1 = &_mp_arg(2) + 1; + const unsigned int + k = (unsigned int)mp.opcode[3], + l = (unsigned int)mp.opcode[4]; + const bool use_LU = (bool)_mp_arg(5); + CImg(ptrd,l,k,1,1,true) = CImg(ptr1,k,l,1,1,true).get_pseudoinvert(use_LU); + return cimg::type::nan(); + } + + static double mp_matrix_svd(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptr1 = &_mp_arg(2) + 1; + const unsigned int + k = (unsigned int)mp.opcode[3], + l = (unsigned int)mp.opcode[4]; + CImg U, S, V; + CImg(ptr1,k,l,1,1,true).SVD(U,S,V); + CImg(ptrd,k,l,1,1,true) = U; + CImg(ptrd + k*l,1,k,1,1,true) = S; + CImg(ptrd + k*l + k,k,k,1,1,true) = V; + return cimg::type::nan(); + } + + static double mp_max(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; iabsval) { val = _val; absval = _absval; } + } + return val; + } + + static double* _mp_memcopy_double(_cimg_math_parser& mp, const unsigned int ind, const ulongT *const p_ref, + const longT siz, const long inc) { + const longT + off = *p_ref?p_ref[1] + (longT)mp.mem[(longT)p_ref[2]] + 1:ind, + eoff = off + (siz - 1)*inc; + if (off<0 || eoff>=mp.mem.width()) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'copy()': " + "Out-of-bounds variable pointer " + "(length: %ld, increment: %ld, offset start: %ld, " + "offset end: %ld, offset max: %u).", + mp.imgin.pixel_type(),siz,inc,off,eoff,mp.mem._width - 1); + return &mp.mem[off]; + } + + static float* _mp_memcopy_float(_cimg_math_parser& mp, const ulongT *const p_ref, + const longT siz, const long inc, const bool is_out) { + const unsigned ind = (unsigned int)p_ref[1]; + const CImg &img = is_out? + (ind==~0U?mp.imgout:mp.listout[cimg::mod((int)mp.mem[ind],mp.listout.width())]): + (ind==~0U?mp.imgin:mp.listin[cimg::mod((int)mp.mem[ind],mp.listin.width())]); + const bool is_relative = (bool)p_ref[2]; + int ox, oy, oz, oc; + longT off = 0; + if (is_relative) { + ox = (int)mp.mem[_cimg_mp_slot_x]; + oy = (int)mp.mem[_cimg_mp_slot_y]; + oz = (int)mp.mem[_cimg_mp_slot_z]; + oc = (int)mp.mem[_cimg_mp_slot_c]; + off = img.offset(ox,oy,oz,oc); + } + if ((*p_ref)%2) { + const int + x = (int)mp.mem[p_ref[3]], + y = (int)mp.mem[p_ref[4]], + z = (int)mp.mem[p_ref[5]], + c = *p_ref==5?0:(int)mp.mem[p_ref[6]]; + off+=img.offset(x,y,z,c); + } else off+=(longT)mp.mem[p_ref[3]]; + const longT eoff = off + (siz - 1)*inc; + if (off<0 || eoff>=(longT)img.size()) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'copy()': " + "Out-of-bounds image pointer " + "(length: %ld, increment: %ld, offset start: %ld, " + "offset end: %ld, offset max: %lu).", + mp.imgin.pixel_type(),siz,inc,off,eoff,img.size() - 1); + return (float*)&img[off]; + } + + static double mp_memcopy(_cimg_math_parser& mp) { + longT siz = (longT)_mp_arg(4); + const longT inc_d = (longT)_mp_arg(5), inc_s = (longT)_mp_arg(6); + const float + _opacity = (float)_mp_arg(7), + opacity = (float)cimg::abs(_opacity), + omopacity = 1 - std::max(_opacity,0.f); + if (siz>0) { + const bool + is_doubled = mp.opcode[8]<=1, + is_doubles = mp.opcode[15]<=1; + if (is_doubled && is_doubles) { // (double*) <- (double*) + double *ptrd = _mp_memcopy_double(mp,(unsigned int)mp.opcode[2],&mp.opcode[8],siz,inc_d); + const double *ptrs = _mp_memcopy_double(mp,(unsigned int)mp.opcode[3],&mp.opcode[15],siz,inc_s); + if (inc_d==1 && inc_s==1 && _opacity>=1) { + if (ptrs + siz - 1ptrd + siz - 1) std::memcpy(ptrd,ptrs,siz*sizeof(double)); + else std::memmove(ptrd,ptrs,siz*sizeof(double)); + } else { + if (ptrs + (siz - 1)*inc_sptrd + (siz - 1)*inc_d) { + if (_opacity>=1) while (siz-->0) { *ptrd = *ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**ptrs; ptrd+=inc_d; ptrs+=inc_s; } + } else { // Overlapping buffers + CImg buf((unsigned int)siz); + cimg_for(buf,ptr,double) { *ptr = *ptrs; ptrs+=inc_s; } + ptrs = buf; + if (_opacity>=1) while (siz-->0) { *ptrd = *(ptrs++); ptrd+=inc_d; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**(ptrs++); ptrd+=inc_d; } + } + } + } else if (is_doubled && !is_doubles) { // (double*) <- (float*) + double *ptrd = _mp_memcopy_double(mp,(unsigned int)mp.opcode[2],&mp.opcode[8],siz,inc_d); + const float *ptrs = _mp_memcopy_float(mp,&mp.opcode[15],siz,inc_s,false); + if (_opacity>=1) while (siz-->0) { *ptrd = *ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = omopacity**ptrd + _opacity**ptrs; ptrd+=inc_d; ptrs+=inc_s; } + } else if (!is_doubled && is_doubles) { // (float*) <- (double*) + float *ptrd = _mp_memcopy_float(mp,&mp.opcode[8],siz,inc_d,true); + const double *ptrs = _mp_memcopy_double(mp,(unsigned int)mp.opcode[3],&mp.opcode[15],siz,inc_s); + if (_opacity>=1) while (siz-->0) { *ptrd = (float)*ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = (float)(omopacity**ptrd + opacity**ptrs); ptrd+=inc_d; ptrs+=inc_s; } + } else { // (float*) <- (float*) + float *ptrd = _mp_memcopy_float(mp,&mp.opcode[8],siz,inc_d,true); + const float *ptrs = _mp_memcopy_float(mp,&mp.opcode[15],siz,inc_s,false); + if (inc_d==1 && inc_s==1 && _opacity>=1) { + if (ptrs + siz - 1ptrd + siz - 1) std::memcpy(ptrd,ptrs,siz*sizeof(float)); + else std::memmove(ptrd,ptrs,siz*sizeof(float)); + } else { + if (ptrs + (siz - 1)*inc_sptrd + (siz - 1)*inc_d) { + if (_opacity>=1) while (siz-->0) { *ptrd = *ptrs; ptrd+=inc_d; ptrs+=inc_s; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**ptrs; ptrd+=inc_d; ptrs+=inc_s; } + } else { // Overlapping buffers + CImg buf((unsigned int)siz); + cimg_for(buf,ptr,float) { *ptr = *ptrs; ptrs+=inc_s; } + ptrs = buf; + if (_opacity>=1) while (siz-->0) { *ptrd = *(ptrs++); ptrd+=inc_d; } + else while (siz-->0) { *ptrd = omopacity**ptrd + opacity**(ptrs++); ptrd+=inc_d; } + } + } + } + } + return _mp_arg(1); + } + + static double mp_min(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i vals(i_end - 3); + double *p = vals.data(); + for (unsigned int i = 3; i(ptrd,wS,wD,1,1,true) = CImg(ptrS,wS,hS,1,1,false). + project_matrix(CImg(ptrD,wD,hS,1,1,true),method,max_iter,max_residual); + return cimg::type::nan(); + } + + static double mp_mul(_cimg_math_parser& mp) { + return _mp_arg(2)*_mp_arg(3); + } + + static double mp_mul2(_cimg_math_parser& mp) { + return _mp_arg(2)*_mp_arg(3)*_mp_arg(4); + } + + static double mp_neq(_cimg_math_parser& mp) { + return (double)(_mp_arg(2)!=_mp_arg(3)); + } + + static double mp_norm0(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + switch (i_end - 3) { + case 1 : return _mp_arg(3)!=0; + case 2 : return (_mp_arg(3)!=0) + (_mp_arg(4)!=0); + } + double res = 0; + for (unsigned int i = 3; ires) res = val; + } + return res; + } + + static double mp_normp(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + if (i_end==4) return cimg::abs(_mp_arg(3)); + const double p = (double)mp.opcode[3]; + double res = 0; + for (unsigned int i = 4; i0?res:0.; + } + + static double mp_permutations(_cimg_math_parser& mp) { + return cimg::permutations((int)_mp_arg(2),(int)_mp_arg(3),(bool)_mp_arg(4)); + } + + static double mp_polygon(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + unsigned int ind = (unsigned int)mp.opcode[3]; + if (ind!=~0U) ind = (unsigned int)cimg::mod((int)_mp_arg(3),mp.listin.width()); + CImg &img = ind==~0U?mp.imgout:mp.listout[ind]; + bool is_invalid_arguments = i_end<=4, is_outlined = false; + if (!is_invalid_arguments) { + int nbv = (int)_mp_arg(4); + if (!nbv) is_invalid_arguments = true; + else { + if (nbv<0) { nbv = -nbv; is_outlined = true; } + CImg points(nbv,2,1,1,0); + CImg color(img._spectrum,1,1,1,0); + float opacity = 1; + unsigned int i = 5, pattern=~0U; + cimg_foroff(points,k) if (i args(i_end - 4); + cimg_forX(args,k) args[k] = _mp_arg(4 + k); + if (ind==~0U) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'polygon()': " + "Invalid arguments '%s'. ", + mp.imgin.pixel_type(),args.value_string()._data); + else + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'polygon()': " + "Invalid arguments '#%u%s%s'. ", + mp.imgin.pixel_type(),ind,args._width?",":"",args.value_string()._data); + } + return cimg::type::nan(); + } + + static double mp_pow(_cimg_math_parser& mp) { + const double v = _mp_arg(2), p = _mp_arg(3); + return std::pow(v,p); + } + + static double mp_pow0_25(_cimg_math_parser& mp) { + const double val = _mp_arg(2); + return std::sqrt(std::sqrt(val)); + } + + static double mp_pow3(_cimg_math_parser& mp) { + const double val = _mp_arg(2); + return val*val*val; + } + + static double mp_pow4(_cimg_math_parser& mp) { + const double val = _mp_arg(2); + return val*val*val*val; + } + + static double mp_print(_cimg_math_parser& mp) { + const double val = _mp_arg(1); + const bool print_char = (bool)mp.opcode[3]; + cimg_pragma_openmp(critical(mp_print)) + { + CImg _expr(mp.opcode[2] - 4); + const ulongT *ptrs = mp.opcode._data + 4; + cimg_for(_expr,ptrd,char) *ptrd = (char)*(ptrs++); + cimg::strellipsize(_expr); + cimg::mutex(6); + if (print_char) + std::fprintf(cimg::output(),"\n[" cimg_appname "_math_parser] %s = %.17g = '%c'", + _expr._data,val,(int)val); + else + std::fprintf(cimg::output(),"\n[" cimg_appname "_math_parser] %s = %.17g", + _expr._data,val); + std::fflush(cimg::output()); + cimg::mutex(6,0); + } + return val; + } + + static double mp_prod(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i::nan(); + } + + static double mp_rot3d(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const float x = (float)_mp_arg(2), y = (float)_mp_arg(3), z = (float)_mp_arg(4), theta = (float)_mp_arg(5); + CImg(ptrd,3,3,1,1,true) = CImg::rotation_matrix(x,y,z,theta); + return cimg::type::nan(); + } + + static double mp_round(_cimg_math_parser& mp) { + return cimg::round(_mp_arg(2),_mp_arg(3),(int)_mp_arg(4)); + } + + static double mp_self_add(_cimg_math_parser& mp) { + return _mp_arg(1)+=_mp_arg(2); + } + + static double mp_self_bitwise_and(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val & (longT)_mp_arg(2)); + } + + static double mp_self_bitwise_left_shift(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val<<(unsigned int)_mp_arg(2)); + } + + static double mp_self_bitwise_or(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val | (longT)_mp_arg(2)); + } + + static double mp_self_bitwise_right_shift(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = (double)((longT)val>>(unsigned int)_mp_arg(2)); + } + + static double mp_self_decrement(_cimg_math_parser& mp) { + return --_mp_arg(1); + } + + static double mp_self_increment(_cimg_math_parser& mp) { + return ++_mp_arg(1); + } + + static double mp_self_map_vector_s(_cimg_math_parser& mp) { // Vector += scalar + unsigned int + ptrd = (unsigned int)mp.opcode[1] + 1, + siz = (unsigned int)mp.opcode[2]; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,3); + l_opcode[2] = mp.opcode[4]; // Scalar argument + l_opcode.swap(mp.opcode); + ulongT &target = mp.opcode[1]; + while (siz-->0) { target = ptrd++; (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_self_map_vector_v(_cimg_math_parser& mp) { // Vector += vector + unsigned int + ptrd = (unsigned int)mp.opcode[1] + 1, + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,4); + l_opcode.swap(mp.opcode); + ulongT &target = mp.opcode[1], &argument = mp.opcode[2]; + while (siz-->0) { target = ptrd++; argument = ptrs++; (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_self_mul(_cimg_math_parser& mp) { + return _mp_arg(1)*=_mp_arg(2); + } + + static double mp_self_div(_cimg_math_parser& mp) { + return _mp_arg(1)/=_mp_arg(2); + } + + static double mp_self_modulo(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = cimg::mod(val,_mp_arg(2)); + } + + static double mp_self_pow(_cimg_math_parser& mp) { + double &val = _mp_arg(1); + return val = std::pow(val,_mp_arg(2)); + } + + static double mp_self_sub(_cimg_math_parser& mp) { + return _mp_arg(1)-=_mp_arg(2); + } + + static double mp_set_ioff(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const longT + off = (longT)_mp_arg(2), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const int + x = (int)_mp_arg(2), y = (int)_mp_arg(3), + z = (int)_mp_arg(4), c = (int)_mp_arg(5); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.imgout; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whds = (longT)img.size(); + const double val = _mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], + oz = mp.mem[_cimg_mp_slot_z], oc = mp.mem[_cimg_mp_slot_c]; + const int + x = (int)(ox + _mp_arg(2)), y = (int)(oy + _mp_arg(3)), + z = (int)(oz + _mp_arg(4)), c = (int)(oc + _mp_arg(5)); + const double val = _mp_arg(1); + if (x>=0 && x=0 && y=0 && z=0 && c &img = mp.imgout; + const longT + off = (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const longT + off = (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_set_Ixyz_s(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const int + x = (int)_mp_arg(2), + y = (int)_mp_arg(3), + z = (int)_mp_arg(4); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.imgout; + const int + x = (int)_mp_arg(2), + y = (int)_mp_arg(3), + z = (int)_mp_arg(4); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_set_Joff_s(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T val = (T)_mp_arg(1); + if (off>=0 && off &img = mp.imgout; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z], oc = (int)mp.mem[_cimg_mp_slot_c]; + const longT + off = img.offset(ox,oy,oz,oc) + (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const double *ptrs = &_mp_arg(1) + 1; + if (off>=0 && off::nan(); + } + + static double mp_set_Jxyz_s(_cimg_math_parser& mp) { + CImg &img = mp.imgout; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(2)), + y = (int)(oy + _mp_arg(3)), + z = (int)(oz + _mp_arg(4)); + const T val = (T)_mp_arg(1); + if (x>=0 && x=0 && y=0 && z &img = mp.imgout; + const double ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z]; + const int + x = (int)(ox + _mp_arg(2)), + y = (int)(oy + _mp_arg(3)), + z = (int)(oz + _mp_arg(4)); + const double *ptrs = &_mp_arg(1) + 1; + if (x>=0 && x=0 && y=0 && z::nan(); + } + + static double mp_shift(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptrs = &_mp_arg(2) + 1; + const unsigned int siz = (unsigned int)mp.opcode[3]; + const int + shift = (int)_mp_arg(4), + boundary_conditions = (int)_mp_arg(5); + CImg(ptrd,siz,1,1,1,true) = CImg(ptrs,siz,1,1,1,true).shift(shift,0,0,0,boundary_conditions); + return cimg::type::nan(); + } + + static double mp_sign(_cimg_math_parser& mp) { + return cimg::sign(_mp_arg(2)); + } + + static double mp_sin(_cimg_math_parser& mp) { + return std::sin(_mp_arg(2)); + } + + static double mp_sinc(_cimg_math_parser& mp) { + return cimg::sinc(_mp_arg(2)); + } + + static double mp_sinh(_cimg_math_parser& mp) { + return std::sinh(_mp_arg(2)); + } + + static double mp_solve(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double + *ptr1 = &_mp_arg(2) + 1, + *ptr2 = &_mp_arg(3) + 1; + const unsigned int + k = (unsigned int)mp.opcode[4], + l = (unsigned int)mp.opcode[5], + m = (unsigned int)mp.opcode[6]; + CImg(ptrd,m,k,1,1,true) = CImg(ptr2,m,l,1,1,false).solve(CImg(ptr1,k,l,1,1,true)); + return cimg::type::nan(); + } + + static double mp_sort(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptrs = &_mp_arg(2) + 1; + const bool is_increasing = (bool)_mp_arg(4); + const unsigned int + siz = (unsigned int)mp.opcode[3], + nb_elts = mp.opcode[5]==~0U?siz:(unsigned int)_mp_arg(5), + siz_elt = (unsigned int)_mp_arg(6); + const ulongT sn = siz_elt*nb_elts; + if (sn>siz || siz_elt<1) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'sort()': " + "Arguments 'nb_elts=%g' and 'siz_elt=%g' are invalid " + "for sorting a vector of size %u.", + mp.imgin.pixel_type(),_mp_arg(5),_mp_arg(6),siz); + CImg(ptrd,siz_elt,nb_elts,1,1,true) = CImg(ptrs,siz_elt,nb_elts,1,1,true). + get_sort(is_increasing,siz_elt>1?'y':0); + if (sn(ptrd + sn,siz - sn,1,1,1,true) = CImg(ptrs + sn,siz - sn,1,1,1,true); + return cimg::type::nan(); + } + + static double mp_sqr(_cimg_math_parser& mp) { + return cimg::sqr(_mp_arg(2)); + } + + static double mp_sqrt(_cimg_math_parser& mp) { + return std::sqrt(_mp_arg(2)); + } + + static double mp_srand(_cimg_math_parser& mp) { + mp.rng = (cimg_uint64)_mp_arg(2); + return cimg::type::nan(); + } + + static double mp_srand0(_cimg_math_parser& mp) { + cimg::srand(&mp.rng); + +#if cimg_use_openmp!=0 + mp.rng+=omp_get_thread_num(); +#endif + return cimg::type::nan(); + } + + static double mp_std(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + CImg vals(i_end - 3); + double *p = vals.data(); + for (unsigned int i = 3; i0) mp.mem[ptrd++] = (double)*(ptrs++); + return cimg::type::nan(); + } + +#ifdef cimg_mp_func_store + static double mp_store(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2), + *ptr2 = &_mp_arg(4) + 1; + const unsigned int + siz1 = (unsigned int)mp.opcode[3], + siz2 = (unsigned int)mp.opcode[5], + sizM = std::max(siz1,1U); + const int + w = (int)_mp_arg(6), + h = (int)_mp_arg(7), + d = (int)_mp_arg(8), + s = (int)_mp_arg(9); + + const bool is_compressed = (bool)_mp_arg(10); + if (w<0 || h<0 || d<0 || s<0) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'store()': " + "Specified image dimensions (%d,%d,%d,%d) are invalid.", + pixel_type(),w,h,d,s); + if ((unsigned int)w*h*d*s>sizM) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'store()': " + "Specified image dimensions (%d,%d,%d,%d) are too large for vector size (%u).", + pixel_type(),w,h,d,s,sizM); + CImg ss(siz2 + 1); + cimg_for_inX(ss,0,ss.width() - 1,i) ss[i] = (char)ptr2[i]; + ss.back() = 0; + if (siz1) cimg_mp_func_store(ptr1 + 1, + (unsigned int)w,(unsigned int)h,(unsigned int)d,(unsigned int)s, + is_compressed,ss._data); + else cimg_mp_func_store(ptr1,1,1,1,1,is_compressed,ss._data); + return cimg::type::nan(); + } +#endif + + static double mp_stov(_cimg_math_parser& mp) { + const double *ptrs = &_mp_arg(2); + const ulongT siz = (ulongT)mp.opcode[3]; + longT ind = (longT)_mp_arg(4); + const bool is_strict = (bool)_mp_arg(5); + double val = cimg::type::nan(); + if (ind<0 || ind>=(longT)siz) return val; + if (!siz) return *ptrs>='0' && *ptrs<='9'?*ptrs - '0':val; + + CImg ss(siz + 1 - ind); + ptrs+=1 + ind; + cimg_forX(ss,i) ss[i] = (char)ptrs[i]; + ss.back() = 0; + + const char *s = ss._data; + while (*s && *s<=32) ++s; + const bool is_negative = *s=='-'; + if (is_negative || *s=='+') ++s; + int err = 0; + char sep; + + if (*s=='0' && (s[1]=='x' || s[1]=='X') && s[2]>32) { // Hexadecimal number + unsigned int ival; + err = cimg_sscanf(s + 2,"%x%c",&ival,&sep); + if (err>0) val = (double)ival; + } else if (*s>32) { // Decimal number + err = cimg_sscanf(s,"%lf%c",&val,&sep); +#if cimg_OS==2 + // Check for +/-NaN and +/-inf as Microsoft's sscanf() version is not able + // to read those particular values. + if (!err && (*s=='i' || *s=='I' || *s=='n' || *s=='N')) { + if (!cimg::strncasecmp(s,"inf",3)) { val = cimg::type::inf(); err = 1 + (s[3]!=0); } + else if (!cimg::strncasecmp(s,"nan",3)) { val = cimg::type::nan(); err = 1 + (s[3]!=0); } + } +#endif + } + if (err<=0 || (is_strict && err!=1)) return cimg::type::nan(); + if (is_negative) val = -val; + return val; + } + + static double mp_string(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const unsigned int nb_args = (unsigned int)(mp.opcode[3] - 3)/2; + CImgList _str; + CImg it; + for (unsigned int n = 0; n string + const double *ptr = &_mp_arg(4 + 2*n) + 1; + unsigned int l = 0; + while (l(ptr,l,1,1,1,true).move_to(_str); + } else { // Scalar argument -> number + it.assign(24); + cimg_snprintf(it,it._width,"%.17g",_mp_arg(4 + 2*n)); + CImg::string(it,false,true).move_to(_str); + } + } + const CImg str = _str>'x'; + const unsigned int sizd = std::min(str._width,(unsigned int)mp.opcode[2]); + std::memset(ptrd,0,mp.opcode[2]*sizeof(double)); + for (unsigned int k = 0; k::nan(); + } + + static double mp_sub(_cimg_math_parser& mp) { + return _mp_arg(2) - _mp_arg(3); + } + + static double mp_sum(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + double val = _mp_arg(3); + for (unsigned int i = 4; i(ptrs,k,k,1,1,true).trace(); + } + + static double mp_transpose(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptrs = &_mp_arg(2) + 1; + const unsigned int + k = (unsigned int)mp.opcode[3], + l = (unsigned int)mp.opcode[4]; + CImg(ptrd,l,k,1,1,true) = CImg(ptrs,k,l,1,1,true).get_transpose(); + return cimg::type::nan(); + } + + static double mp_u(_cimg_math_parser& mp) { + return cimg::rand(_mp_arg(2),_mp_arg(3),&mp.rng); + } + + static double mp_ui2f(_cimg_math_parser& mp) { + return (double)cimg::uint2float((unsigned int)_mp_arg(2)); + } + + static double mp_uppercase(_cimg_math_parser& mp) { + return cimg::uppercase(_mp_arg(2)); + } + + static double mp_var(_cimg_math_parser& mp) { + const unsigned int i_end = (unsigned int)mp.opcode[2]; + CImg vals(i_end - 3); + double *p = vals.data(); + for (unsigned int i = 3; i::nan(); + } + + static double mp_vector_crop(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const double *ptrs = &_mp_arg(2) + 1; + const longT + length = (longT)mp.opcode[3], + start = (longT)_mp_arg(4), + sublength = (longT)mp.opcode[5], + step = (longT)_mp_arg(6); + if (start<0 || start + step*(sublength-1)>=length) + throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Value accessor '[]': " + "Out-of-bounds sub-vector request " + "(length: %ld, start: %ld, sub-length: %ld, step: %ld).", + mp.imgin.pixel_type(),length,start,sublength,step); + ptrs+=start; + if (step==1) std::memcpy(ptrd,ptrs,sublength*sizeof(double)); + else for (longT k = 0; k::nan(); + } + + static double mp_vector_init(_cimg_math_parser& mp) { + unsigned int + ptrs = 4U, + ptrd = (unsigned int)mp.opcode[1] + 1, + siz = (unsigned int)mp.opcode[3]; + switch (mp.opcode[2] - 4) { + case 0 : std::memset(mp.mem._data + ptrd,0,siz*sizeof(double)); break; // 0 values given + case 1 : { const double val = _mp_arg(ptrs); while (siz-->0) mp.mem[ptrd++] = val; } break; + default : while (siz-->0) { mp.mem[ptrd++] = _mp_arg(ptrs++); if (ptrs>=mp.opcode[2]) ptrs = 4U; } + } + return cimg::type::nan(); + } + + static double mp_vector_eq(_cimg_math_parser& mp) { + const double + *ptr1 = &_mp_arg(2) + 1, + *ptr2 = &_mp_arg(4) + 1; + unsigned int p1 = (unsigned int)mp.opcode[3], p2 = (unsigned int)mp.opcode[5], n; + const int N = (int)_mp_arg(6); + const bool case_sensitive = (bool)_mp_arg(7); + bool still_equal = true; + double value; + if (!N) return true; + + // Compare all values. + if (N<0) { + if (p1>0 && p2>0) { // Vector == vector + if (p1!=p2) return false; + if (case_sensitive) + while (still_equal && p1--) still_equal = *(ptr1++)==*(ptr2++); + else + while (still_equal && p1--) + still_equal = cimg::lowercase(*(ptr1++))==cimg::lowercase(*(ptr2++)); + return still_equal; + } else if (p1>0 && !p2) { // Vector == scalar + value = _mp_arg(4); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && p1--) still_equal = *(ptr1++)==value; + return still_equal; + } else if (!p1 && p2>0) { // Scalar == vector + value = _mp_arg(2); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && p2--) still_equal = *(ptr2++)==value; + return still_equal; + } else { // Scalar == scalar + if (case_sensitive) return _mp_arg(2)==_mp_arg(4); + else return cimg::lowercase(_mp_arg(2))==cimg::lowercase(_mp_arg(4)); + } + } + + // Compare only first N values. + if (p1>0 && p2>0) { // Vector == vector + n = cimg::min((unsigned int)N,p1,p2); + if (case_sensitive) + while (still_equal && n--) still_equal = *(ptr1++)==(*ptr2++); + else + while (still_equal && n--) still_equal = cimg::lowercase(*(ptr1++))==cimg::lowercase(*(ptr2++)); + return still_equal; + } else if (p1>0 && !p2) { // Vector == scalar + n = std::min((unsigned int)N,p1); + value = _mp_arg(4); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && n--) still_equal = *(ptr1++)==value; + return still_equal; + } else if (!p1 && p2>0) { // Scalar == vector + n = std::min((unsigned int)N,p2); + value = _mp_arg(2); + if (!case_sensitive) value = cimg::lowercase(value); + while (still_equal && n--) still_equal = *(ptr2++)==value; + return still_equal; + } // Scalar == scalar + if (case_sensitive) return _mp_arg(2)==_mp_arg(4); + return cimg::lowercase(_mp_arg(2))==cimg::lowercase(_mp_arg(4)); + } + + static double mp_vector_lerp(_cimg_math_parser& mp) { + unsigned int siz = (unsigned int)mp.opcode[2]; + double *ptrd = &_mp_arg(1) + 1; + const double + *ptrs1 = &_mp_arg(3) + 1, + *ptrs2 = &_mp_arg(4) + 1, + t = _mp_arg(5); + for (unsigned int k = 0; k::nan(); + } + + static double mp_vector_off(_cimg_math_parser& mp) { + const unsigned int + ptr = (unsigned int)mp.opcode[2] + 1, + siz = (unsigned int)mp.opcode[3]; + const int off = (int)_mp_arg(4); + return off>=0 && off<(int)siz?mp.mem[ptr + off]:cimg::type::nan(); + } + + static double mp_vector_map_sv(_cimg_math_parser& mp) { // Operator(scalar,vector) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[5] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(4); + l_opcode[2] = mp.opcode[4]; // Scalar argument1 + l_opcode.swap(mp.opcode); + ulongT &argument2 = mp.opcode[3]; + while (siz-->0) { argument2 = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_v(_cimg_math_parser& mp) { // Operator(vector) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,3); + l_opcode.swap(mp.opcode); + ulongT &argument = mp.opcode[2]; + while (siz-->0) { argument = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_vs(_cimg_math_parser& mp) { // Operator(vector,scalar) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,4); + l_opcode[3] = mp.opcode[5]; // Scalar argument2 + l_opcode.swap(mp.opcode); + ulongT &argument1 = mp.opcode[2]; + while (siz-->0) { argument1 = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_vss(_cimg_math_parser& mp) { // Operator(vector,scalar,scalar) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs = (unsigned int)mp.opcode[4] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,5); + l_opcode[3] = mp.opcode[5]; // Scalar argument2 + l_opcode[4] = mp.opcode[6]; // Scalar argument3 + l_opcode.swap(mp.opcode); + ulongT &argument1 = mp.opcode[2]; + while (siz-->0) { argument1 = ptrs++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_map_vv(_cimg_math_parser& mp) { // Operator(vector,vector) + unsigned int + siz = (unsigned int)mp.opcode[2], + ptrs1 = (unsigned int)mp.opcode[4] + 1, + ptrs2 = (unsigned int)mp.opcode[5] + 1; + double *ptrd = &_mp_arg(1) + 1; + mp_func op = (mp_func)mp.opcode[3]; + CImg l_opcode(1,4); + l_opcode.swap(mp.opcode); + ulongT &argument1 = mp.opcode[2], &argument2 = mp.opcode[3]; + while (siz-->0) { argument1 = ptrs1++; argument2 = ptrs2++; *(ptrd++) = (*op)(mp); } + l_opcode.swap(mp.opcode); + return cimg::type::nan(); + } + + static double mp_vector_neq(_cimg_math_parser& mp) { + return !mp_vector_eq(mp); + } + + static double mp_vector_print(_cimg_math_parser& mp) { + const bool print_string = (bool)mp.opcode[4]; + cimg_pragma_openmp(critical(mp_vector_print)) + { + CImg _expr(mp.opcode[2] - 5); + const ulongT *ptrs = mp.opcode._data + 5; + cimg_for(_expr,ptrd,char) *ptrd = (char)*(ptrs++); + cimg::strellipsize(_expr); + unsigned int + ptr = (unsigned int)mp.opcode[1] + 1, + siz0 = (unsigned int)mp.opcode[3], + siz = siz0; + cimg::mutex(6); + std::fprintf(cimg::output(),"\n[" cimg_appname "_math_parser] %s = [ ",_expr._data); + unsigned int count = 0; + while (siz-->0) { + if (count>=64 && siz>=64) { + std::fprintf(cimg::output(),"...,"); + ptr = (unsigned int)mp.opcode[1] + 1 + siz0 - 64; + siz = 64; + } else std::fprintf(cimg::output(),"%.17g%s",mp.mem[ptr++],siz?",":""); + ++count; + } + if (print_string) { + CImg str(siz0 + 1); + ptr = (unsigned int)mp.opcode[1] + 1; + for (unsigned int k = 0; k::nan(); + } + + static double mp_vector_resize(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const unsigned int p1 = (unsigned int)mp.opcode[2], p2 = (unsigned int)mp.opcode[4]; + const int + interpolation = (int)_mp_arg(5), + boundary_conditions = (int)_mp_arg(6); + if (p2) { // Resize vector + const double *const ptrs = &_mp_arg(3) + 1; + CImg(ptrd,p1,1,1,1,true) = CImg(ptrs,p2,1,1,1,true). + get_resize(p1,1,1,1,interpolation,boundary_conditions); + } else { // Resize scalar + const double value = _mp_arg(3); + CImg(ptrd,p1,1,1,1,true) = CImg(1,1,1,1,value).resize(p1,1,1,1,interpolation, + boundary_conditions); + } + return cimg::type::nan(); + } + + static double mp_vector_reverse(_cimg_math_parser& mp) { + double *const ptrd = &_mp_arg(1) + 1; + const double *const ptrs = &_mp_arg(2) + 1; + const unsigned int p1 = (unsigned int)mp.opcode[3]; + CImg(ptrd,p1,1,1,1,true) = CImg(ptrs,p1,1,1,1,true).get_mirror('x'); + return cimg::type::nan(); + } + + static double mp_vector_set_off(_cimg_math_parser& mp) { + const unsigned int + ptr = (unsigned int)mp.opcode[2] + 1, + siz = (unsigned int)mp.opcode[3]; + const int off = (int)_mp_arg(4); + if (off>=0 && off<(int)siz) mp.mem[ptr + off] = _mp_arg(1); + return _mp_arg(1); + } + +#define _cimg_mp_vfunc(func) \ + const longT sizd = (longT)mp.opcode[2];\ + const unsigned int nbargs = (unsigned int)(mp.opcode[3] - 4)/2; \ + double *const ptrd = &_mp_arg(1) + (sizd?1:0); \ + cimg_pragma_openmp(parallel cimg_openmp_if_size(sizd,256)) \ + { CImg vec(nbargs); double res; \ + cimg_pragma_openmp(for) for (longT k = sizd?sizd - 1:0; k>=0; --k) { \ + cimg_forX(vec,n) vec[n] = *(&_mp_arg(4 + 2*n) + (k+1)*(mp.opcode[4 + 2*n + 1]?1:0)); \ + func; ptrd[k] = res; \ + }} \ + return sizd?cimg::type::nan():*ptrd; + + static double _mp_vargkth(CImg& vec) { + const double val = (+vec).get_shared_points(1,vec.width() - 1). + kth_smallest((ulongT)cimg::cut((longT)*vec - 1,(longT)0,(longT)vec.width() - 2)); + cimg_for_inX(vec,1,vec.width()-1,ind) if (vec[ind]==val) return ind - 1.; + return 1.; + } + + static double mp_vargkth(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = _mp_vargkth(vec)); + } + + static double mp_vargmax(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.max() - vec.data())); + } + + static double mp_vargmaxabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.maxabs() - vec.data())); + } + + static double mp_vargmin(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.min() - vec.data())); + } + + static double mp_vargminabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = (double)(&vec.minabs() - vec.data())); + } + + static double mp_vavg(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.mean()); + } + + static double mp_vkth(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.get_shared_points(1,vec.width() - 1). + kth_smallest((ulongT)cimg::cut((longT)*vec - 1,(longT)0,(longT)vec.width() - 2))); + } + + static double mp_vmax(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.max()); + } + + static double mp_vmaxabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.maxabs()); + } + + static double mp_vmedian(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.median()); + } + + static double mp_vmin(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.min()); + } + + static double mp_vminabs(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.minabs()); + } + + static double mp_vprod(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.product()); + } + + static double mp_vstd(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = std::sqrt(vec.get_stats()[3])); + } + + static double mp_vsum(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.sum()); + } + + static double mp_vvar(_cimg_math_parser& mp) { + _cimg_mp_vfunc(res = vec.get_stats()[3]); + } + + static double mp_vtos(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + sizd = (unsigned int)mp.opcode[2], + sizs = (unsigned int)mp.opcode[4]; + std::memset(ptrd,0,sizd*sizeof(double)); + const int nb_digits = (int)_mp_arg(5); + CImg format(8); + switch (nb_digits) { + case -1 : std::strcpy(format,"%g"); break; + case 0 : std::strcpy(format,"%.17g"); break; + default : cimg_snprintf(format,format._width,"%%.%dg",nb_digits); + } + CImg str; + if (sizs) { // Vector expression + const double *ptrs = &_mp_arg(3) + 1; + CImg(ptrs,sizs,1,1,1,true).value_string(',',sizd + 1,format).move_to(str); + } else { // Scalar expression + str.assign(sizd + 1); + cimg_snprintf(str,sizd + 1,format,_mp_arg(3)); + } + const unsigned int l = std::min(sizd,(unsigned int)std::strlen(str) + 1); + CImg(ptrd,l,1,1,1,true) = str.get_shared_points(0,l - 1); + return cimg::type::nan(); + } + + static double mp_while(_cimg_math_parser& mp) { + const ulongT + mem_body = mp.opcode[1], + mem_cond = mp.opcode[2]; + const CImg + *const p_cond = ++mp.p_code, + *const p_body = p_cond + mp.opcode[3], + *const p_end = p_body + mp.opcode[4]; + const unsigned int vsiz = (unsigned int)mp.opcode[5]; + bool is_cond = false; + if (mp.opcode[6]) { // Set default value for result and condition if necessary + if (vsiz) CImg(&mp.mem[mem_body] + 1,vsiz,1,1,1,true).fill(cimg::type::nan()); + else mp.mem[mem_body] = cimg::type::nan(); + } + if (mp.opcode[7]) mp.mem[mem_cond] = 0; + const unsigned int _break_type = mp.break_type; + mp.break_type = 0; + do { + for (mp.p_code = p_cond; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; + is_cond = (bool)mp.mem[mem_cond]; + if (is_cond && !mp.break_type) // Evaluate body + for (mp.p_code = p_body; mp.p_code_data; + const ulongT target = mp.opcode[1]; + mp.mem[target] = _cimg_mp_defunc(mp); + } + if (mp.break_type==1) break; else if (mp.break_type==2) mp.break_type = 0; + } while (is_cond); + + mp.break_type = _break_type; + mp.p_code = p_end - 1; + return mp.mem[mem_body]; + } + + static double mp_Ioff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + boundary_conditions = (unsigned int)_mp_arg(3), + vsiz = (unsigned int)mp.opcode[4]; + const CImg &img = mp.imgin; + const longT + off = (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_Ixyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + interpolation = (unsigned int)_mp_arg(5), + boundary_conditions = (unsigned int)_mp_arg(6), + vsiz = (unsigned int)mp.opcode[7]; + const CImg &img = mp.imgin; + const double x = _mp_arg(2), y = _mp_arg(3), z = _mp_arg(4); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + + static double mp_Joff(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + boundary_conditions = (unsigned int)_mp_arg(3), + vsiz = (unsigned int)mp.opcode[4]; + const CImg &img = mp.imgin; + const int + ox = (int)mp.mem[_cimg_mp_slot_x], + oy = (int)mp.mem[_cimg_mp_slot_y], + oz = (int)mp.mem[_cimg_mp_slot_z]; + const longT + off = img.offset(ox,oy,oz) + (longT)_mp_arg(2), + whd = (longT)img.width()*img.height()*img.depth(); + const T *ptrs; + if (off>=0 && off::nan(); + } + if (img._data) switch (boundary_conditions) { + case 3 : { // Mirror + const longT whd2 = 2*whd, moff = cimg::mod(off,whd2); + ptrs = &img[moff::nan(); + } + case 2 : // Periodic + ptrs = &img[cimg::mod(off,whd)]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + case 1 : // Neumann + ptrs = off<0?&img[0]:&img[whd - 1]; + cimg_for_inC(img,0,vsiz - 1,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return cimg::type::nan(); + default : // Dirichlet + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + std::memset(ptrd,0,vsiz*sizeof(double)); + return cimg::type::nan(); + } + + static double mp_Jxyz(_cimg_math_parser& mp) { + double *ptrd = &_mp_arg(1) + 1; + const unsigned int + interpolation = (unsigned int)_mp_arg(5), + boundary_conditions = (unsigned int)_mp_arg(6), + vsiz = (unsigned int)mp.opcode[7]; + const CImg &img = mp.imgin; + const double + ox = mp.mem[_cimg_mp_slot_x], oy = mp.mem[_cimg_mp_slot_y], oz = mp.mem[_cimg_mp_slot_z], + x = ox + _mp_arg(2), y = oy + _mp_arg(3), z = oz + _mp_arg(4); + const ulongT whd = (ulongT)img._width*img._height*img._depth; + const T *ptrs; + switch (interpolation) { + case 2 : // Cubic interpolation + switch (boundary_conditions) { + case 3 : { // Mirror + const float + w2 = 2.f*img.width(), h2 = 2.f*img.height(), d2 = 2.f*img.depth(), + mx = cimg::mod((float)x,w2), my = cimg::mod((float)y,h2), mz = cimg::mod((float)z,d2), + cx = mx::nan(); + } + +#undef _mp_arg + + }; // struct _cimg_math_parser {} + +#define _cimg_create_pointwise_functions(name,func,min_size) \ + CImg& name() { \ + if (is_empty()) return *this; \ + cimg_openmp_for(*this,func((double)*ptr),min_size); \ + return *this; \ + } \ + CImg get_##name() const { \ + return CImg(*this,false).name(); \ + } + + //! Compute the square value of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its square value \f$I_{(x,y,z,c)}^2\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg img("reference.jpg"); + (img,img.get_sqr().normalize(0,255)).display(); + \endcode + \image html ref_sqr.jpg + **/ + _cimg_create_pointwise_functions(sqr,cimg::sqr,524288) + + //! Compute the square root of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its square root \f$\sqrt{I_{(x,y,z,c)}}\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg img("reference.jpg"); + (img,img.get_sqrt().normalize(0,255)).display(); + \endcode + \image html ref_sqrt.jpg + **/ + _cimg_create_pointwise_functions(sqrt,std::sqrt,8192) + + //! Compute the exponential of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its exponential \f$e^{I_{(x,y,z,c)}}\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(exp,std::exp,4096) + + //! Compute the logarithm of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its logarithm + \f$\mathrm{log}_{e}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(log,std::log,262144) + + //! Compute the base-2 logarithm of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its base-2 logarithm + \f$\mathrm{log}_{2}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(log2,cimg::log2,4096) + + //! Compute the base-10 logarithm of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its base-10 logarithm + \f$\mathrm{log}_{10}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(log10,std::log10,4096) + + //! Compute the absolute value of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its absolute value \f$|I_{(x,y,z,c)}|\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(abs,cimg::abs,524288) + + //! Compute the sign of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its sign + \f$\mathrm{sign}(I_{(x,y,z,c)})\f$. + \note + - The sign is set to: + - \c 1 if pixel value is strictly positive. + - \c -1 if pixel value is strictly negative. + - \c 0 if pixel value is equal to \c 0. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sign,cimg::sign,32768) + + //! Compute the cosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its cosine \f$\cos(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being in \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(cos,std::cos,8192) + + //! Compute the sine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its sine \f$\sin(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being in \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sin,std::sin,8192) + + //! Compute the sinc of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its sinc + \f$\mathrm{sinc}(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being exin \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sinc,cimg::sinc,2048) + + //! Compute the tangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its tangent \f$\tan(I_{(x,y,z,c)})\f$. + \note + - Pixel values are regarded as being exin \e radian. + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(tan,std::tan,2048) + + //! Compute the hyperbolic cosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic cosine + \f$\mathrm{cosh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(cosh,std::cosh,2048) + + //! Compute the hyperbolic sine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic sine + \f$\mathrm{sinh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(sinh,std::sinh,2048) + + //! Compute the hyperbolic tangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic tangent + \f$\mathrm{tanh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(tanh,std::tanh,2048) + + //! Compute the arccosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arccosine + \f$\mathrm{acos}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(acos,std::acos,8192) + + //! Compute the arcsine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arcsine + \f$\mathrm{asin}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(asin,std::asin,8192) + + //! Compute the arctangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arctangent + \f$\mathrm{atan}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(atan,std::atan,8192) + + //! Compute the arctangent2 of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arctangent2 + \f$\mathrm{atan2}(I_{(x,y,z,c)})\f$. + \param img Image whose pixel values specify the second argument of the \c atan2() function. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg + img_x(100,100,1,1,"x-w/2",false), // Define an horizontal centered gradient, from '-width/2' to 'width/2' + img_y(100,100,1,1,"y-h/2",false), // Define a vertical centered gradient, from '-height/2' to 'height/2' + img_atan2 = img_y.get_atan2(img_x); // Compute atan2(y,x) for each pixel value + (img_x,img_y,img_atan2).display(); + \endcode + **/ + template + CImg& atan2(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return atan2(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_atan2(const CImg& img) const { + return CImg(*this,false).atan2(img); + } + + //! Compute the hyperbolic arccosine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its arccosineh + \f$\mathrm{acosh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(acosh,cimg::acosh,8192) + + //! Compute the hyperbolic arcsine of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic arcsine + \f$\mathrm{asinh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(asinh,cimg::asinh,8192) + + //! Compute the hyperbolic arctangent of each pixel value. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its hyperbolic arctangent + \f$\mathrm{atanh}(I_{(x,y,z,c)})\f$. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + **/ + _cimg_create_pointwise_functions(atanh,cimg::atanh,8192) + + //! In-place pointwise multiplication. + /** + Compute the pointwise multiplication between the image instance and the specified input image \c img. + \param img Input image, as the second operand of the multiplication. + \note + - Similar to operator+=(const CImg&), except that it performs a pointwise multiplication + instead of an addition. + - It does \e not perform a \e matrix multiplication. For this purpose, use operator*=(const CImg&) instead. + \par Example + \code + CImg + img("reference.jpg"), + shade(img.width,img.height(),1,1,"-(x-w/2)^2-(y-h/2)^2",false); + shade.normalize(0,1); + (img,shade,img.get_mul(shade)).display(); + \endcode + **/ + template + CImg& mul(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return mul(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_mul(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).mul(img); + } + + //! In-place pointwise division. + /** + Similar to mul(const CImg&), except that it performs a pointwise division instead of a multiplication. + **/ + template + CImg& div(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return div(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_div(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).div(img); + } + + //! Raise each pixel value to a specified power. + /** + Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by its power \f$I_{(x,y,z,c)}^p\f$. + \param p Exponent value. + \note + - The \inplace of this method statically casts the computed values to the pixel type \c T. + - The \newinstance returns a \c CImg image, if the pixel type \c T is \e not float-valued. + \par Example + \code + const CImg + img0("reference.jpg"), // Load reference color image + img1 = (img0/255).pow(1.8)*=255, // Compute gamma correction, with gamma = 1.8 + img2 = (img0/255).pow(0.5)*=255; // Compute gamma correction, with gamma = 0.5 + (img0,img1,img2).display(); + \endcode + **/ + CImg& pow(const double p) { + if (is_empty()) return *this; + if (p==-4) { cimg_openmp_for(*this,1/(Tfloat)cimg::pow4(*ptr),32768); return *this; } + if (p==-3) { cimg_openmp_for(*this,1/(Tfloat)cimg::pow3(*ptr),32768); return *this; } + if (p==-2) { cimg_openmp_for(*this,1/(Tfloat)cimg::sqr(*ptr),32768); return *this; } + if (p==-1) { cimg_openmp_for(*this,1/(Tfloat)*ptr,32768); return *this; } + if (p==-0.5) { cimg_openmp_for(*this,1/std::sqrt((Tfloat)*ptr),8192); return *this; } + if (p==0) return fill((T)1); + if (p==0.5) return sqrt(); + if (p==1) return *this; + if (p==2) return sqr(); + if (p==3) { cimg_openmp_for(*this,cimg::pow3(*ptr),262144); return *this; } + if (p==4) { cimg_openmp_for(*this,cimg::pow4(*ptr),131072); return *this; } + cimg_openmp_for(*this,std::pow((Tfloat)*ptr,(Tfloat)p),1024); + return *this; + } + + //! Raise each pixel value to a specified power \newinstance. + CImg get_pow(const double p) const { + return CImg(*this,false).pow(p); + } + + //! Raise each pixel value to a power, specified from an expression. + /** + Similar to operator+=(const char*), except it performs a pointwise exponentiation instead of an addition. + **/ + CImg& pow(const char *const expression) { + return pow((+*this)._fill(expression,true,1,0,0,"pow",this)); + } + + //! Raise each pixel value to a power, specified from an expression \newinstance. + CImg get_pow(const char *const expression) const { + return CImg(*this,false).pow(expression); + } + + //! Raise each pixel value to a power, pointwisely specified from another image. + /** + Similar to operator+=(const CImg& img), except that it performs an exponentiation instead of an addition. + **/ + template + CImg& pow(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return pow(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_pow(const CImg& img) const { + return CImg(*this,false).pow(img); + } + + //! Compute the bitwise left rotation of each pixel value. + /** + Similar to operator<<=(unsigned int), except that it performs a left rotation instead of a left shift. + **/ + CImg& rol(const unsigned int n=1) { + if (is_empty()) return *this; + cimg_openmp_for(*this,cimg::rol(*ptr,n),32768); + return *this; + } + + //! Compute the bitwise left rotation of each pixel value \newinstance. + CImg get_rol(const unsigned int n=1) const { + return (+*this).rol(n); + } + + //! Compute the bitwise left rotation of each pixel value. + /** + Similar to operator<<=(const char*), except that it performs a left rotation instead of a left shift. + **/ + CImg& rol(const char *const expression) { + return rol((+*this)._fill(expression,true,1,0,0,"rol",this)); + } + + //! Compute the bitwise left rotation of each pixel value \newinstance. + CImg get_rol(const char *const expression) const { + return (+*this).rol(expression); + } + + //! Compute the bitwise left rotation of each pixel value. + /** + Similar to operator<<=(const CImg&), except that it performs a left rotation instead of a left shift. + **/ + template + CImg& rol(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return rol(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_rol(const CImg& img) const { + return (+*this).rol(img); + } + + //! Compute the bitwise right rotation of each pixel value. + /** + Similar to operator>>=(unsigned int), except that it performs a right rotation instead of a right shift. + **/ + CImg& ror(const unsigned int n=1) { + if (is_empty()) return *this; + cimg_openmp_for(*this,cimg::ror(*ptr,n),32768); + return *this; + } + + //! Compute the bitwise right rotation of each pixel value \newinstance. + CImg get_ror(const unsigned int n=1) const { + return (+*this).ror(n); + } + + //! Compute the bitwise right rotation of each pixel value. + /** + Similar to operator>>=(const char*), except that it performs a right rotation instead of a right shift. + **/ + CImg& ror(const char *const expression) { + return ror((+*this)._fill(expression,true,1,0,0,"ror",this)); + } + + //! Compute the bitwise right rotation of each pixel value \newinstance. + CImg get_ror(const char *const expression) const { + return (+*this).ror(expression); + } + + //! Compute the bitwise right rotation of each pixel value. + /** + Similar to operator>>=(const CImg&), except that it performs a right rotation instead of a right shift. + **/ + template + CImg& ror(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return ror(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg get_ror(const CImg& img) const { + return (+*this).ror(img); + } + + //! Pointwise min operator between instance image and a value. + /** + \param val Value used as the reference argument of the min operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{min}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& min(const T& value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,std::min(*ptr,value),65536); + return *this; + } + + //! Pointwise min operator between instance image and a value \newinstance. + CImg get_min(const T& value) const { + return (+*this).min(value); + } + + //! Pointwise min operator between two images. + /** + \param img Image used as the reference argument of the min operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{min}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& min(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return min(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_min(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).min(img); + } + + //! Pointwise min operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{min}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& min(const char *const expression) { + return min((+*this)._fill(expression,true,1,0,0,"min",this)); + } + + //! Pointwise min operator between an image and an expression \newinstance. + CImg get_min(const char *const expression) const { + return CImg(*this,false).min(expression); + } + + //! Pointwise max operator between instance image and a value. + /** + \param val Value used as the reference argument of the max operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{max}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& max(const T& value) { + if (is_empty()) return *this; + cimg_openmp_for(*this,std::max(*ptr,value),65536); + return *this; + } + + //! Pointwise max operator between instance image and a value \newinstance. + CImg get_max(const T& value) const { + return (+*this).max(value); + } + + //! Pointwise max operator between two images. + /** + \param img Image used as the reference argument of the max operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{max}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& max(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return max(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_max(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).max(img); + } + + //! Pointwise max operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{max}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& max(const char *const expression) { + return max((+*this)._fill(expression,true,1,0,0,"max",this)); + } + + //! Pointwise max operator between an image and an expression \newinstance. + CImg get_max(const char *const expression) const { + return CImg(*this,false).max(expression); + } + + //! Pointwise minabs operator between instance image and a value. + /** + \param val Value used as the reference argument of the minabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{minabs}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& minabs(const T& value) { + if (is_empty()) return *this; + const T absvalue = cimg::abs(value); + cimg_openmp_for(*this,cimg::minabs(*ptr,value,absvalue),65536); + return *this; + } + + //! Pointwise minabs operator between instance image and a value \newinstance. + CImg get_minabs(const T& value) const { + return (+*this).minabs(value); + } + + //! Pointwise minabs operator between two images. + /** + \param img Image used as the reference argument of the minabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{minabs}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& minabs(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return minabs(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_minabs(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).minabs(img); + } + + //! Pointwise minabs operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{minabs}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& minabs(const char *const expression) { + return minabs((+*this)._fill(expression,true,1,0,0,"minabs",this)); + } + + //! Pointwise minabs operator between an image and an expression \newinstance. + CImg get_minabs(const char *const expression) const { + return CImg(*this,false).minabs(expression); + } + + //! Pointwise maxabs operator between instance image and a value. + /** + \param val Value used as the reference argument of the maxabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{maxabs}(I_{(x,y,z,c)},\mathrm{val})\f$. + **/ + CImg& maxabs(const T& value) { + if (is_empty()) return *this; + const T absvalue = cimg::abs(value); + cimg_openmp_for(*this,cimg::maxabs(*ptr,value,absvalue),65536); + return *this; + } + + //! Pointwise maxabs operator between instance image and a value \newinstance. + CImg get_maxabs(const T& value) const { + return (+*this).maxabs(value); + } + + //! Pointwise maxabs operator between two images. + /** + \param img Image used as the reference argument of the maxabs operator. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{maxabs}(I_{(x,y,z,c)},\mathrm{img}_{(x,y,z,c)})\f$. + **/ + template + CImg& maxabs(const CImg& img) { + const ulongT siz = size(), isiz = img.size(); + if (siz && isiz) { + if (is_overlapped(img)) return maxabs(+img); + T *ptrd = _data, *const ptre = _data + siz; + if (siz>isiz) for (ulongT n = siz/isiz; n; --n) + for (const t *ptrs = img._data, *ptrs_end = ptrs + isiz; ptrs + CImg<_cimg_Tt> get_maxabs(const CImg& img) const { + return CImg<_cimg_Tt>(*this,false).maxabs(img); + } + + //! Pointwise maxabs operator between an image and an expression. + /** + \param expression Math formula as a C-string. + \note Replace each pixel value \f$I_{(x,y,z,c)}\f$ of the image instance by + \f$\mathrm{maxabs}(I_{(x,y,z,c)},\mathrm{expr}_{(x,y,z,c)})\f$. + **/ + CImg& maxabs(const char *const expression) { + return maxabs((+*this)._fill(expression,true,1,0,0,"maxabs",this)); + } + + //! Pointwise maxabs operator between an image and an expression \newinstance. + CImg get_maxabs(const char *const expression) const { + return CImg(*this,false).maxabs(expression); + } + + //! Return a reference to the minimum pixel value. + /** + **/ + T& min() { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "min(): Empty instance.", + cimg_instance); + T *ptr_min = _data; + T min_value = *ptr_min; + cimg_for(*this,ptrs,T) if (*ptrsmax_value) max_value = *(ptr_max=ptrs); + return *ptr_max; + } + + //! Return a reference to the maximum pixel value \const. + const T& max() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "max(): Empty instance.", + cimg_instance); + const T *ptr_max = _data; + T max_value = *ptr_max; + cimg_for(*this,ptrs,T) if (*ptrs>max_value) max_value = *(ptr_max=ptrs); + return *ptr_max; + } + + //! Return a reference to the maximum pixel value in absolute value. + /** + **/ + T& maxabs() { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "maxabs(): Empty instance.", + cimg_instance); + T *ptr_maxabs = _data; + T maxabs_value = *ptr_maxabs; + cimg_for(*this,ptrs,T) { + const T ma = cimg::abs(*ptrs); + if (ma>maxabs_value) { maxabs_value = ma; ptr_maxabs = ptrs; } + } + return *ptr_maxabs; + } + + //! Return a reference to the maximum pixel value in absolute value \const. + const T& maxabs() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "maxabs(): Empty instance.", + cimg_instance); + const T *ptr_maxabs = _data; + T maxabs_value = *ptr_maxabs; + cimg_for(*this,ptrs,T) { + const T ma = cimg::abs(*ptrs); + if (ma>maxabs_value) { maxabs_value = ma; ptr_maxabs = ptrs; } + } + return *ptr_maxabs; + } + + //! Return a reference to the minimum pixel value as well as the maximum pixel value. + /** + \param[out] max_val Maximum pixel value. + **/ + template + T& min_max(t& max_val) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "min_max(): Empty instance.", + cimg_instance); + T *ptr_min = _data; + T min_value = *ptr_min, max_value = min_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the minimum pixel value as well as the maximum pixel value \const. + template + const T& min_max(t& max_val) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "min_max(): Empty instance.", + cimg_instance); + const T *ptr_min = _data; + T min_value = *ptr_min, max_value = min_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the maximum pixel value as well as the minimum pixel value. + /** + \param[out] min_val Minimum pixel value. + **/ + template + T& max_min(t& min_val) { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "max_min(): Empty instance.", + cimg_instance); + T *ptr_max = _data; + T max_value = *ptr_max, min_value = max_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val + const T& max_min(t& min_val) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "max_min(): Empty instance.", + cimg_instance); + const T *ptr_max = _data; + T max_value = *ptr_max, min_value = max_value; + cimg_for(*this,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val=size()) return max(); + CImg arr(*this,false); + ulongT l = 0, ir = size() - 1; + for ( ; ; ) { + if (ir<=l + 1) { + if (ir==l + 1 && arr[ir]>1; + cimg::swap(arr[mid],arr[l + 1]); + if (arr[l]>arr[ir]) cimg::swap(arr[l],arr[ir]); + if (arr[l + 1]>arr[ir]) cimg::swap(arr[l + 1],arr[ir]); + if (arr[l]>arr[l + 1]) cimg::swap(arr[l],arr[l + 1]); + ulongT i = l + 1, j = ir; + const T pivot = arr[l + 1]; + for ( ; ; ) { + do ++i; while (arr[i]pivot); + if (j=k) ir = j - 1; + if (j<=k) l = i; + } + } + } + + //! Return the median pixel value. + /** + **/ + T median() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "median(): Empty instance.", + cimg_instance); + const ulongT s = size(); + switch (s) { + case 1 : return _data[0]; + case 2 : return cimg::median(_data[0],_data[1]); + case 3 : return cimg::median(_data[0],_data[1],_data[2]); + case 5 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4]); + case 7 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4],_data[5],_data[6]); + case 9 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4],_data[5],_data[6],_data[7],_data[8]); + case 13 : return cimg::median(_data[0],_data[1],_data[2],_data[3],_data[4],_data[5],_data[6],_data[7],_data[8], + _data[9],_data[10],_data[11],_data[12]); + } + const T res = kth_smallest(s>>1); + return (s%2)?res:(T)((res + kth_smallest((s>>1) - 1))/2); + } + + //! Return the product of all the pixel values. + /** + **/ + double product() const { + if (is_empty()) return 0; + double res = 1; + cimg_for(*this,ptrs,T) res*=(double)*ptrs; + return res; + } + + //! Return the sum of all the pixel values. + /** + **/ + double sum() const { + double res = 0; + cimg_for(*this,ptrs,T) res+=(double)*ptrs; + return res; + } + + //! Return the average pixel value. + /** + **/ + double mean() const { + double res = 0; + cimg_for(*this,ptrs,T) res+=(double)*ptrs; + return res/size(); + } + + //! Return the variance of the pixel values. + /** + \param variance_method Method used to estimate the variance. Can be: + - \c 0: Second moment, computed as + \f$1/N \sum\limits_{k=1}^{N} (x_k - \bar x)^2 = + 1/N \left( \sum\limits_{k=1}^N x_k^2 - \left( \sum\limits_{k=1}^N x_k \right)^2 / N \right)\f$ + with \f$ \bar x = 1/N \sum\limits_{k=1}^N x_k \f$. + - \c 1: Best unbiased estimator, computed as \f$\frac{1}{N - 1} \sum\limits_{k=1}^{N} (x_k - \bar x)^2 \f$. + - \c 2: Least median of squares. + - \c 3: Least trimmed of squares. + **/ + double variance(const unsigned int variance_method=1) const { + double foo; + return variance_mean(variance_method,foo); + } + + //! Return the variance as well as the average of the pixel values. + /** + \param variance_method Method used to estimate the variance (see variance(const unsigned int) const). + \param[out] mean Average pixel value. + **/ + template + double variance_mean(const unsigned int variance_method, t& mean) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "variance_mean(): Empty instance.", + cimg_instance); + + double variance = 0, average = 0; + const ulongT siz = size(); + switch (variance_method) { + case 0 : { // Least mean square (standard definition) + double S = 0, S2 = 0; + cimg_for(*this,ptrs,T) { const double val = (double)*ptrs; S+=val; S2+=val*val; } + variance = (S2 - S*S/siz)/siz; + average = S; + } break; + case 1 : { // Least mean square (robust definition) + double S = 0, S2 = 0; + cimg_for(*this,ptrs,T) { const double val = (double)*ptrs; S+=val; S2+=val*val; } + variance = siz>1?(S2 - S*S/siz)/(siz - 1):0; + average = S; + } break; + case 2 : { // Least Median of Squares (MAD) + CImg buf(*this,false); + buf.sort(); + const ulongT siz2 = siz>>1; + const double med_i = (double)buf[siz2]; + cimg_for(buf,ptrs,Tfloat) { + const double val = (double)*ptrs; *ptrs = (Tfloat)cimg::abs(val - med_i); average+=val; + } + buf.sort(); + const double sig = (double)(1.4828*buf[siz2]); + variance = sig*sig; + } break; + default : { // Least trimmed of Squares + CImg buf(*this,false); + const ulongT siz2 = siz>>1; + cimg_for(buf,ptrs,Tfloat) { + const double val = (double)*ptrs; (*ptrs)=(Tfloat)((*ptrs)*val); average+=val; + } + buf.sort(); + double a = 0; + const Tfloat *ptrs = buf._data; + for (ulongT j = 0; j0?variance:0; + } + + //! Return estimated variance of the noise. + /** + \param variance_method Method used to compute the variance (see variance(const unsigned int) const). + \note Because of structures such as edges in images it is + recommended to use a robust variance estimation. The variance of the + noise is estimated by computing the variance of the Laplacian \f$(\Delta + I)^2 \f$ scaled by a factor \f$c\f$ insuring \f$ c E[(\Delta I)^2]= + \sigma^2\f$ where \f$\sigma\f$ is the noise variance. + **/ + double variance_noise(const unsigned int variance_method=2) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "variance_noise(): Empty instance.", + cimg_instance); + + const ulongT siz = size(); + if (!siz || !_data) return 0; + if (variance_method>1) { // Compute a scaled version of the Laplacian + CImg tmp(*this,false); + if (_depth==1) { + const double cste = 1./std::sqrt(20.); // Depends on how the Laplacian is computed + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*262144 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3(I,T); + cimg_for3x3(*this,x,y,0,c,I,T) { + tmp(x,y,c) = cste*((double)Inc + (double)Ipc + (double)Icn + + (double)Icp - 4*(double)Icc); + } + } + } else { + const double cste = 1./std::sqrt(42.); // Depends on how the Laplacian is computed + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*262144 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3x3(I,T); + cimg_for3x3x3(*this,x,y,z,c,I,T) { + tmp(x,y,z,c) = cste*( + (double)Incc + (double)Ipcc + (double)Icnc + (double)Icpc + + (double)Iccn + (double)Iccp - 6*(double)Iccc); + } + } + } + return tmp.variance(variance_method); + } + + // Version that doesn't need intermediate images. + double variance = 0, S = 0, S2 = 0; + if (_depth==1) { + const double cste = 1./std::sqrt(20.); + CImg_3x3(I,T); + cimg_forC(*this,c) cimg_for3x3(*this,x,y,0,c,I,T) { + const double val = cste*((double)Inc + (double)Ipc + + (double)Icn + (double)Icp - 4*(double)Icc); + S+=val; S2+=val*val; + } + } else { + const double cste = 1./std::sqrt(42.); + CImg_3x3x3(I,T); + cimg_forC(*this,c) cimg_for3x3x3(*this,x,y,z,c,I,T) { + const double val = cste * + ((double)Incc + (double)Ipcc + (double)Icnc + + (double)Icpc + + (double)Iccn + (double)Iccp - 6*(double)Iccc); + S+=val; S2+=val*val; + } + } + if (variance_method) variance = siz>1?(S2 - S*S/siz)/(siz - 1):0; + else variance = (S2 - S*S/siz)/siz; + return variance>0?variance:0; + } + + //! Compute the MSE (Mean-Squared Error) between two images. + /** + \param img Image used as the second argument of the MSE operator. + **/ + template + double MSE(const CImg& img) const { + if (img.size()!=size()) + throw CImgArgumentException(_cimg_instance + "MSE(): Instance and specified image (%u,%u,%u,%u,%p) have different dimensions.", + cimg_instance, + img._width,img._height,img._depth,img._spectrum,img._data); + double vMSE = 0; + const t* ptr2 = img._data; + cimg_for(*this,ptr1,T) { + const double diff = (double)*ptr1 - (double)*(ptr2++); + vMSE+=diff*diff; + } + const ulongT siz = img.size(); + if (siz) vMSE/=siz; + return vMSE; + } + + //! Compute the PSNR (Peak Signal-to-Noise Ratio) between two images. + /** + \param img Image used as the second argument of the PSNR operator. + \param max_value Maximum theoretical value of the signal. + **/ + template + double PSNR(const CImg& img, const double max_value=255) const { + const double vMSE = (double)std::sqrt(MSE(img)); + return (vMSE!=0)?(double)(20*std::log10(max_value/vMSE)):(double)(cimg::type::max()); + } + + //! Evaluate math formula. + /** + \param expression Math formula, as a C-string. + \param x Value of the pre-defined variable \c x. + \param y Value of the pre-defined variable \c y. + \param z Value of the pre-defined variable \c z. + \param c Value of the pre-defined variable \c c. + \param list_inputs A list of input images attached to the specified math formula. + \param[out] list_outputs A pointer to a list of output images attached to the specified math formula. + **/ + double eval(const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + return _eval(this,expression,x,y,z,c,list_inputs,list_outputs); + } + + //! Evaluate math formula \const. + double eval(const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + return _eval(0,expression,x,y,z,c,list_inputs,list_outputs); + } + + // Fast function to pre-evaluate common expressions. + // (return 'true' in case of success, and set value of 'res'). + template + bool __eval(const char *const expression, t &res) const { + if (!expression || !*expression) { res = (t)0; return true; } + const char c = *expression; + bool is_success = false; + char c1, end; + double val; + if (c>='0' && c<='9') { // Possible value + if (!expression[1]) { // Single digit + res = (t)(c - '0'); + is_success = true; + } else if (std::sscanf(expression,"%lf%c",&val,&end)==1) { // Single value + res = (t)val; + is_success = true; + } + } else if ((c=='+' || c=='-' || c=='!') && // +Value, -Value or !Value + (c1=expression[1])>='0' && c1<='0') { + if (!expression[2]) { // [+-!] + Single digit + const int ival = c1 - '0'; + res = (t)(c=='+'?ival:c=='-'?-ival:!ival); + is_success = true; + } else if (std::sscanf(expression + 1,"%lf%c",&val,&end)==1) { // [+-!] Single value + res = (t)(c=='+'?val:c=='-'?-val:(double)!val); + is_success = true; + } + } else if (!expression[1]) switch (*expression) { // Other common single-char expressions + case 'w' : res = (t)_width; is_success = true; break; + case 'h' : res = (t)_height; is_success = true; break; + case 'd' : res = (t)_depth; is_success = true; break; + case 's' : res = (t)_spectrum; is_success = true; break; + case 'r' : res = (t)_is_shared; is_success = true; break; + } + return is_success; + } + + double _eval(CImg *const img_output, const char *const expression, + const double x, const double y, const double z, const double c, + const CImgList *const list_inputs, CImgList *const list_outputs) const { + if (!expression || !*expression) return 0; + double _val = 0; + if (__eval(expression,_val)) return _val; + _cimg_math_parser mp(expression + (*expression=='>' || *expression=='<' || + *expression=='*' || *expression==':'),"eval", + *this,img_output,list_inputs,list_outputs,false); + mp.begin_t(); + const double val = mp(x,y,z,c); + mp.end_t(); + mp.end(); + return val; + } + + //! Evaluate math formula. + /** + \param[out] output Contains values of output vector returned by the evaluated expression + (or is empty if the returned type is scalar). + \param expression Math formula, as a C-string. + \param x Value of the pre-defined variable \c x. + \param y Value of the pre-defined variable \c y. + \param z Value of the pre-defined variable \c z. + \param c Value of the pre-defined variable \c c. + \param list_inputs A list of input images attached to the specified math formula. + \param[out] list_outputs A pointer to a list of output images attached to the specified math formula. + **/ + template + void eval(CImg &output, const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + _eval(output,this,expression,x,y,z,c,list_inputs,list_outputs); + } + + //! Evaluate math formula \const. + template + void eval(CImg& output, const char *const expression, + const double x=0, const double y=0, const double z=0, const double c=0, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + _eval(output,0,expression,x,y,z,c,list_inputs,list_outputs); + } + + template + void _eval(CImg& output, CImg *const img_output, const char *const expression, + const double x, const double y, const double z, const double c, + const CImgList *const list_inputs, CImgList *const list_outputs) const { + if (!expression || !*expression) { output.assign(1); *output = 0; return; } + double _val = 0; + if (__eval(expression,_val)) { output.assign(1); *output = _val; return; } + _cimg_math_parser mp(expression + (*expression=='>' || *expression=='<' || + *expression=='*' || *expression==':'),"eval", + *this,img_output,list_inputs,list_outputs,false); + output.assign(1,std::max(1U,mp.result_dim)); + mp.begin_t(); + mp(x,y,z,c,output._data); + mp.end_t(); + mp.end(); + } + + //! Evaluate math formula on a set of variables. + /** + \param expression Math formula, as a C-string. + \param xyzc Set of values (x,y,z,c) used for the evaluation. + \param list_inputs A list of input images attached to the specified math formula. + \param[out] list_outputs A pointer to a list of output images attached to the specified math formula. + **/ + template + CImg eval(const char *const expression, const CImg& xyzc, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + return _eval(this,expression,xyzc,list_inputs,list_outputs); + } + + //! Evaluate math formula on a set of variables \const. + template + CImg eval(const char *const expression, const CImg& xyzc, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + return _eval(0,expression,xyzc,list_inputs,list_outputs); + } + + template + CImg _eval(CImg *const output, const char *const expression, const CImg& xyzc, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + CImg res(1,xyzc.size()/4); + if (!expression || !*expression) return res.fill(0); + _cimg_math_parser mp(expression,"eval",*this,output,list_inputs,list_outputs,false); + +#if cimg_use_openmp!=0 + unsigned int tid = 0; + cimg_pragma_openmp(parallel if (res._height>=512)) + { + _cimg_math_parser *_mp = 0; + cimg_pragma_openmp(critical(_eval)) { _mp = !tid?&mp:new _cimg_math_parser(mp); ++tid; } + _cimg_math_parser &lmp = *_mp; + cimg_pragma_openmp(barrier) + lmp.begin_t(); + cimg_pragma_openmp(for) + for (int i = 0; i[min, max, mean, variance, xmin, ymin, zmin, cmin, xmax, ymax, zmax, cmax, sum, product]. + **/ + CImg get_stats(const unsigned int variance_method=1) const { + if (is_empty()) return CImg(); + const ulongT siz = size(); + const longT off_end = (longT)siz; + double S = 0, S2 = 0, P = 1; + longT offm = 0, offM = 0; + T m = *_data, M = m; + + cimg_pragma_openmp(parallel reduction(+:S,S2) reduction(*:P) cimg_openmp_if_size(siz,131072)) { + longT loffm = 0, loffM = 0; + T lm = *_data, lM = lm; + cimg_pragma_openmp(for) + for (longT off = 0; offlM) { lM = val; loffM = off; } + S+=_val; + S2+=_val*_val; + P*=_val; + } + cimg_pragma_openmp(critical(get_stats)) { + if (lmM || (lM==M && loffM1?(S2 - S*S/siz)/(siz - 1):0): + variance(variance_method)), + variance_value = _variance_value>0?_variance_value:0; + int + xm = 0, ym = 0, zm = 0, cm = 0, + xM = 0, yM = 0, zM = 0, cM = 0; + contains(_data[offm],xm,ym,zm,cm); + contains(_data[offM],xM,yM,zM,cM); + return CImg(1,14).fill((double)m,(double)M,mean_value,variance_value, + (double)xm,(double)ym,(double)zm,(double)cm, + (double)xM,(double)yM,(double)zM,(double)cM, + S,P); + } + + //! Compute statistics vector from the pixel values \inplace. + CImg& stats(const unsigned int variance_method=1) { + return get_stats(variance_method).move_to(*this); + } + + //@} + //------------------------------------- + // + //! \name Vector / Matrix Operations + //@{ + //------------------------------------- + + //! Compute norm of the image, viewed as a matrix. + /** + \param magnitude_type Norm type. Can be: + - \c -1: Linf-norm + - \c 0: L0-norm + - \c 1: L1-norm + - \c 2: L2-norm + **/ + double magnitude(const int magnitude_type=2) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "magnitude(): Empty instance.", + cimg_instance); + const ulongT siz = size(); + double res = 0; + switch (magnitude_type) { + case -1 : { + cimg_for(*this,ptrs,T) { const double val = (double)cimg::abs(*ptrs); if (val>res) res = val; } + } break; + case 1 : { + cimg_pragma_openmp(parallel for reduction(+:res) cimg_openmp_if_size(size(),8192)) + for (longT off = 0; off<(longT)siz; ++off) res+=(double)cimg::abs(_data[off]); + } break; + default : { + cimg_pragma_openmp(parallel for reduction(+:res) cimg_openmp_if_size(size(),8192)) + for (longT off = 0; off<(longT)siz; ++off) res+=(double)cimg::sqr(_data[off]); + res = (double)std::sqrt(res); + } + } + return res; + } + + //! Compute the trace of the image, viewed as a matrix. + /** + **/ + double trace() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "trace(): Empty instance.", + cimg_instance); + double res = 0; + cimg_forX(*this,k) res+=(double)(*this)(k,k); + return res; + } + + //! Compute the determinant of the image, viewed as a matrix. + /** + **/ + double det() const { + if (is_empty() || _width!=_height || _depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "det(): Instance is not a square matrix.", + cimg_instance); + + switch (_width) { + case 1 : return (double)((*this)(0,0)); + case 2 : return (double)((*this)(0,0))*(double)((*this)(1,1)) - (double)((*this)(0,1))*(double)((*this)(1,0)); + case 3 : { + const double + a = (double)_data[0], d = (double)_data[1], g = (double)_data[2], + b = (double)_data[3], e = (double)_data[4], h = (double)_data[5], + c = (double)_data[6], f = (double)_data[7], i = (double)_data[8]; + return i*a*e - a*h*f - i*b*d + b*g*f + c*d*h - c*g*e; + } + default : { + CImg lu(*this,false); + CImg indx; + bool d; + lu._LU(indx,d); + double res = d?(double)1:(double)-1; + cimg_forX(lu,i) res*=lu(i,i); + return res; + } + } + } + + //! Compute the dot product between instance and argument, viewed as matrices. + /** + \param img Image used as a second argument of the dot product. + **/ + template + double dot(const CImg& img) const { + const ulongT nb = std::min(size(),img.size()); + double res = 0; + cimg_pragma_openmp(parallel for reduction(+:res) cimg_openmp_if_size(nb,8192)) + for (longT off = 0; off<(longT)nb; ++off) res+=(double)_data[off]*(double)img[off]; + return res; + } + + //! Get vector-valued pixel located at specified position. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + CImg get_vector_at(const unsigned int x, const unsigned int y=0, const unsigned int z=0) const { + CImg res; + if (res._height!=_spectrum) res.assign(1,_spectrum); + const ulongT whd = (ulongT)_width*_height*_depth; + const T *ptrs = data(x,y,z); + T *ptrd = res._data; + cimg_forC(*this,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return res; + } + + //! Get (square) matrix-valued pixel located at specified position. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \note - The spectrum() of the image must be a square. + **/ + CImg get_matrix_at(const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) const { + const int n = (int)cimg::round(std::sqrt((double)_spectrum)); + const T *ptrs = data(x,y,z,0); + const ulongT whd = (ulongT)_width*_height*_depth; + CImg res(n,n); + T *ptrd = res._data; + cimg_forC(*this,c) { *(ptrd++) = *ptrs; ptrs+=whd; } + return res; + } + + //! Get tensor-valued pixel located at specified position. + /** + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + CImg get_tensor_at(const unsigned int x, const unsigned int y=0, const unsigned int z=0) const { + const T *ptrs = data(x,y,z,0); + const ulongT whd = (ulongT)_width*_height*_depth; + if (_spectrum==6) + return tensor(*ptrs,*(ptrs + whd),*(ptrs + 2*whd),*(ptrs + 3*whd),*(ptrs + 4*whd),*(ptrs + 5*whd)); + if (_spectrum==3) + return tensor(*ptrs,*(ptrs + whd),*(ptrs + 2*whd)); + return tensor(*ptrs); + } + + //! Set vector-valued pixel at specified position. + /** + \param vec Vector to put on the instance image. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + template + CImg& set_vector_at(const CImg& vec, const unsigned int x, const unsigned int y=0, const unsigned int z=0) { + if (x<_width && y<_height && z<_depth) { + const t *ptrs = vec._data; + const ulongT whd = (ulongT)_width*_height*_depth; + T *ptrd = data(x,y,z); + for (unsigned int k = std::min((unsigned int)vec.size(),_spectrum); k; --k) { + *ptrd = (T)*(ptrs++); ptrd+=whd; + } + } + return *this; + } + + //! Set (square) matrix-valued pixel at specified position. + /** + \param mat Matrix to put on the instance image. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + template + CImg& set_matrix_at(const CImg& mat, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) { + return set_vector_at(mat,x,y,z); + } + + //! Set tensor-valued pixel at specified position. + /** + \param ten Tensor to put on the instance image. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + **/ + template + CImg& set_tensor_at(const CImg& ten, const unsigned int x=0, const unsigned int y=0, const unsigned int z=0) { + T *ptrd = data(x,y,z,0); + const ulongT siz = (ulongT)_width*_height*_depth; + if (ten._height==2) { + *ptrd = (T)ten[0]; ptrd+=siz; + *ptrd = (T)ten[1]; ptrd+=siz; + *ptrd = (T)ten[3]; + } + else { + *ptrd = (T)ten[0]; ptrd+=siz; + *ptrd = (T)ten[1]; ptrd+=siz; + *ptrd = (T)ten[2]; ptrd+=siz; + *ptrd = (T)ten[4]; ptrd+=siz; + *ptrd = (T)ten[5]; ptrd+=siz; + *ptrd = (T)ten[8]; + } + return *this; + } + + //! Resize image to become a diagonal matrix. + /** + \note Transform the image as a diagonal matrix so that each of its initial value becomes a diagonal coefficient. + **/ + CImg& diagonal() { + return get_diagonal().move_to(*this); + } + + //! Resize image to become a diagonal matrix \newinstance. + CImg get_diagonal() const { + if (is_empty()) return *this; + const unsigned int siz = (unsigned int)size(); + CImg res(siz,siz,1,1,0); + cimg_foroff(*this,off) res((unsigned int)off,(unsigned int)off) = (*this)[off]; + return res; + } + + //! Replace the image by an identity matrix. + /** + \note If the instance image is not square, it is resized to a square matrix using its maximum + dimension as a reference. + **/ + CImg& identity_matrix() { + return identity_matrix(std::max(_width,_height)).move_to(*this); + } + + //! Replace the image by an identity matrix \newinstance. + CImg get_identity_matrix() const { + return identity_matrix(std::max(_width,_height)); + } + + //! Fill image with a linear sequence of values. + /** + \param a0 Starting value of the sequence. + \param a1 Ending value of the sequence. + **/ + CImg& sequence(const T& a0, const T& a1) { + if (is_empty()) return *this; + const ulongT siz = size() - 1; + T* ptr = _data; + if (siz) { + const double delta = (double)a1 - (double)a0; + cimg_foroff(*this,l) *(ptr++) = (T)(a0 + delta*l/siz); + } else *ptr = a0; + return *this; + } + + //! Fill image with a linear sequence of values \newinstance. + CImg get_sequence(const T& a0, const T& a1) const { + return (+*this).sequence(a0,a1); + } + + //! Transpose the image, viewed as a matrix. + /** + \note Equivalent to \code permute_axes("yxzc"); \endcode. + **/ + CImg& transpose() { + if (_width==1) { _width = _height; _height = 1; return *this; } + if (_height==1) { _height = _width; _width = 1; return *this; } + if (_width==_height) { + cimg_forYZC(*this,y,z,c) for (int x = y; x get_transpose() const { + return get_permute_axes("yxzc"); + } + + //! Compute the cross product between two \c 1x3 images, viewed as 3D vectors. + /** + \param img Image used as the second argument of the cross product. + \note The first argument of the cross product is \c *this. + **/ + template + CImg& cross(const CImg& img) { + if (_width!=1 || _height<3 || img._width!=1 || img._height<3) + throw CImgInstanceException(_cimg_instance + "cross(): Instance and/or specified image (%u,%u,%u,%u,%p) are not 3D vectors.", + cimg_instance, + img._width,img._height,img._depth,img._spectrum,img._data); + + const T x = (*this)[0], y = (*this)[1], z = (*this)[2]; + (*this)[0] = (T)(y*img[2] - z*img[1]); + (*this)[1] = (T)(z*img[0] - x*img[2]); + (*this)[2] = (T)(x*img[1] - y*img[0]); + return *this; + } + + //! Compute the cross product between two \c 1x3 images, viewed as 3D vectors \newinstance. + template + CImg<_cimg_Tt> get_cross(const CImg& img) const { + return CImg<_cimg_Tt>(*this).cross(img); + } + + //! Invert the instance image, viewed as a matrix. + /** + \param use_LU Choose the inverting algorithm. Can be: + - \c true: LU-based matrix inversion. + - \c false: SVD-based matrix inversion. + **/ + CImg& invert(const bool use_LU=true) { + if (_width!=_height || _depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "invert(): Instance is not a square matrix.", + cimg_instance); + const double dete = _width>3?-1.:det(); + if (dete!=0. && _width==2) { + const double + a = _data[0], c = _data[1], + b = _data[2], d = _data[3]; + _data[0] = (T)(d/dete); _data[1] = (T)(-c/dete); + _data[2] = (T)(-b/dete); _data[3] = (T)(a/dete); + } else if (dete!=0. && _width==3) { + const double + a = _data[0], d = _data[1], g = _data[2], + b = _data[3], e = _data[4], h = _data[5], + c = _data[6], f = _data[7], i = _data[8]; + _data[0] = (T)((i*e - f*h)/dete), _data[1] = (T)((g*f - i*d)/dete), _data[2] = (T)((d*h - g*e)/dete); + _data[3] = (T)((h*c - i*b)/dete), _data[4] = (T)((i*a - c*g)/dete), _data[5] = (T)((g*b - a*h)/dete); + _data[6] = (T)((b*f - e*c)/dete), _data[7] = (T)((d*c - a*f)/dete), _data[8] = (T)((a*e - d*b)/dete); + } else { + +#ifdef cimg_use_lapack + int INFO = (int)use_LU, N = _width, LWORK = 4*N, *const IPIV = new int[N]; + Tfloat + *const lapA = new Tfloat[N*N], + *const WORK = new Tfloat[LWORK]; + cimg_forXY(*this,k,l) lapA[k*N + l] = (Tfloat)((*this)(k,l)); + cimg::getrf(N,lapA,IPIV,INFO); + if (INFO) + cimg::warn(_cimg_instance + "invert(): LAPACK function dgetrf_() returned error code %d.", + cimg_instance, + INFO); + else { + cimg::getri(N,lapA,IPIV,WORK,LWORK,INFO); + if (INFO) + cimg::warn(_cimg_instance + "invert(): LAPACK function dgetri_() returned error code %d.", + cimg_instance, + INFO); + } + if (!INFO) cimg_forXY(*this,k,l) (*this)(k,l) = (T)(lapA[k*N + l]); else fill(0); + delete[] IPIV; delete[] lapA; delete[] WORK; +#else + if (use_LU) { // LU-based + CImg A(*this,false), indx; + bool d; + A._LU(indx,d); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width*_height,16*16)) + cimg_forX(*this,j) { + CImg col(1,_width,1,1,0); + col(j) = 1; + col._solve(A,indx); + cimg_forX(*this,i) (*this)(j,i) = (T)col(i); + } + } else pseudoinvert(false); // SVD-based +#endif + } + return *this; + } + + //! Invert the instance image, viewed as a matrix \newinstance. + CImg get_invert(const bool use_LU=true) const { + return CImg(*this,false).invert(use_LU); + } + + //! Compute the Moore-Penrose pseudo-inverse of the instance image, viewed as a matrix. + /** + **/ + CImg& pseudoinvert(const bool use_LU=false) { + return get_pseudoinvert(use_LU).move_to(*this); + } + + //! Compute the Moore-Penrose pseudo-inverse of the instance image, viewed as a matrix \newinstance. + CImg get_pseudoinvert(const bool use_LU=false) const { + + // LU-based method. + if (use_LU) { + CImg AtA(width(),width()); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width*_height,128*128)) + cimg_forY(AtA,i) + for (int j = 0; j<=i; ++j) { + double res = 0; + cimg_forY(*this,k) res+=(*this)(i,k)*(*this)(j,k); + AtA(j,i) = AtA(i,j) = (Tfloat)res; + } + AtA.invert(true); + return AtA*get_transpose(); + } + + // SVD-based method. + CImg U, S, V; + SVD(U,S,V,false); + const Tfloat epsilon = (sizeof(Tfloat)<=4?5.96e-8f:1.11e-16f)*std::max(_width,_height)*S.max(); + cimg_forX(V,x) { + const Tfloat s = S(x), invs = s>epsilon?1/s:0; + cimg_forY(V,y) V(x,y)*=invs; + } + return V*U.transpose(); + } + + //! Solve a system of linear equations. + /** + \param A Matrix of the linear system. + \param use_LU In case of non square system (least-square solution), + choose between SVD-based (\c false) or LU-based (\c true) method. + LU method is faster for large matrices, but numerically less stable. + \note Solve \c AX = B where \c B=*this. + **/ + template + CImg& solve(const CImg& A, const bool use_LU=false) { + if (_depth!=1 || _spectrum!=1 || _height!=A._height || A._depth!=1 || A._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "solve(): Instance and specified matrix (%u,%u,%u,%u,%p) have " + "incompatible dimensions.", + cimg_instance, + A._width,A._height,A._depth,A._spectrum,A._data); + typedef _cimg_Ttfloat Ttfloat; + + if (A.size()==1) return (*this)/=A[0]; + if (A._width==2 && A._height==2 && _height==2) { // 2x2 linear system + const double a = (double)A[0], b = (double)A[1], c = (double)A[2], d = (double)A[3], + fa = std::fabs(a), fb = std::fabs(b), fc = std::fabs(c), fd = std::fabs(d), + det = a*d - b*c, fM = cimg::max(fa,fb,fc,fd); + if (fM==fa) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), y = (a*v - c*u)/det; + (*this)(k,0) = (T)((u - b*y)/a); (*this)(k,1) = (T)y; + } else if (fM==fc) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), y = (a*v - c*u)/det; + (*this)(k,0) = (T)((v - d*y)/c); (*this)(k,1) = (T)y; + } else if (fM==fb) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), x = (d*u - b*v)/det; + (*this)(k,0) = (T)x; (*this)(k,1) = (T)((u - a*x)/b); + } else + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=256)) + cimg_forX(*this,k) { + const double u = (double)(*this)(k,0), v = (double)(*this)(k,1), x = (d*u - b*v)/det; + (*this)(k,0) = (T)x; (*this)(k,1) = (T)((v - c*x)/d); + } + return *this; + } + + if (A._width==A._height) { // Square linear system +#ifdef cimg_use_lapack + char TRANS = 'N'; + int INFO, N = _height, LWORK = 4*N, *const IPIV = new int[N]; + Ttfloat + *const lapA = new Ttfloat[N*N], + *const lapB = new Ttfloat[N], + *const WORK = new Ttfloat[LWORK]; + cimg_forXY(A,k,l) lapA[k*N + l] = (Ttfloat)(A(k,l)); + cimg_forX(*this,i) { + cimg_forY(*this,j) lapB[j] = (Ttfloat)((*this)(i,j)); + cimg::getrf(N,lapA,IPIV,INFO); + if (INFO) + cimg::warn(_cimg_instance + "solve(): LAPACK library function dgetrf_() returned error code %d.", + cimg_instance, + INFO); + else { + cimg::getrs(TRANS,N,lapA,IPIV,lapB,INFO); + if (INFO) + cimg::warn(_cimg_instance + "solve(): LAPACK library function dgetrs_() returned error code %d.", + cimg_instance, + INFO); + } + if (!INFO) cimg_forY(*this,j) (*this)(i,j) = (T)(lapB[j]); else cimg_forY(*this,j) (*this)(i,j) = (T)0; + } + delete[] IPIV; delete[] lapA; delete[] lapB; delete[] WORK; +#else + CImg lu(A,false); + CImg indx; + bool d; + lu._LU(indx,d); + CImg res(_width,A._width); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width*_height,16)) + cimg_forX(*this,i) res.draw_image(i,get_column(i)._solve(lu,indx)); + res.move_to(*this); +#endif + } else { // Least-square solution for non-square systems + +#ifdef cimg_use_lapack + char TRANS = 'N'; + int INFO, N = A._width, M = A._height, LWORK = -1, LDA = M, LDB = M, NRHS = _width; + Ttfloat WORK_QUERY; + Ttfloat + * const lapA = new Ttfloat[M*N], + * const lapB = new Ttfloat[M*NRHS]; + cimg::sgels(TRANS, M, N, NRHS, lapA, LDA, lapB, LDB, &WORK_QUERY, LWORK, INFO); + LWORK = (int) WORK_QUERY; + Ttfloat *const WORK = new Ttfloat[LWORK]; + cimg_forXY(A,k,l) lapA[k*M + l] = (Ttfloat)(A(k,l)); + cimg_forXY(*this,k,l) lapB[k*M + l] = (Ttfloat)((*this)(k,l)); + cimg::sgels(TRANS, M, N, NRHS, lapA, LDA, lapB, LDB, WORK, LWORK, INFO); + if (INFO != 0) + cimg::warn(_cimg_instance + "solve(): LAPACK library function sgels() returned error code %d.", + cimg_instance, + INFO); + assign(NRHS, N); + if (!INFO) cimg_forXY(*this,k,l) (*this)(k,l) = (T)lapB[k*M + l]; + else (A.get_pseudoinvert(use_LU)*(*this)).move_to(*this); + delete[] lapA; delete[] lapB; delete[] WORK; +#else + (A.get_pseudoinvert(use_LU)*(*this)).move_to(*this); +#endif + } + return *this; + } + + //! Solve a system of linear equations \newinstance. + template + CImg<_cimg_Ttfloat> get_solve(const CImg& A, const bool use_LU=false) const { + typedef _cimg_Ttfloat Ttfloat; + return CImg(*this,false).solve(A,use_LU); + } + + template + CImg& _solve(const CImg& A, const CImg& indx) { + typedef _cimg_Ttfloat Ttfloat; + const int N = height(); + int ii = -1; + Ttfloat sum; + for (int i = 0; i=0) for (int j = ii; j<=i - 1; ++j) sum-=A(j,i)*(*this)(j); + else if (sum!=0) ii = i; + (*this)(i) = (T)sum; + } + for (int i = N - 1; i>=0; --i) { + sum = (*this)(i); + for (int j = i + 1; j + CImg& solve_tridiagonal(const CImg& A) { + const unsigned int siz = (unsigned int)size(); + if (A._width!=3 || A._height!=siz) + throw CImgArgumentException(_cimg_instance + "solve_tridiagonal(): Instance and tridiagonal matrix " + "(%u,%u,%u,%u,%p) have incompatible dimensions.", + cimg_instance, + A._width,A._height,A._depth,A._spectrum,A._data); + typedef _cimg_Ttfloat Ttfloat; + const Ttfloat epsilon = 1e-4f; + CImg B = A.get_column(1), V(*this,false); + for (int i = 1; i<(int)siz; ++i) { + const Ttfloat m = A(0,i)/(B[i - 1]?B[i - 1]:epsilon); + B[i] -= m*A(2,i - 1); + V[i] -= m*V[i - 1]; + } + (*this)[siz - 1] = (T)(V[siz - 1]/(B[siz - 1]?B[siz - 1]:epsilon)); + for (int i = (int)siz - 2; i>=0; --i) (*this)[i] = (T)((V[i] - A(2,i)*(*this)[i + 1])/(B[i]?B[i]:epsilon)); + return *this; + } + + //! Solve a tridiagonal system of linear equations \newinstance. + template + CImg<_cimg_Ttfloat> get_solve_tridiagonal(const CImg& A) const { + return CImg<_cimg_Ttfloat>(*this,false).solve_tridiagonal(A); + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix. + /** + \param[out] val Vector of the estimated eigenvalues, in decreasing order. + \param[out] vec Matrix of the estimated eigenvectors, sorted by columns. + **/ + template + const CImg& eigen(CImg& val, CImg &vec) const { + if (is_empty()) { val.assign(); vec.assign(); } + else { + if (_width!=_height || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "eigen(): Instance is not a square matrix.", + cimg_instance); + + if (val.size()<(ulongT)_width) val.assign(1,_width); + if (vec.size()<(ulongT)_width*_width) vec.assign(_width,_width); + switch (_width) { + case 1 : { val[0] = (t)(*this)[0]; vec[0] = (t)1; } break; + case 2 : { + const double a = (*this)[0], b = (*this)[1], c = (*this)[2], d = (*this)[3], e = a + d; + double f = e*e - 4*(a*d - b*c); + if (f<0) cimg::warn(_cimg_instance + "eigen(): Complex eigenvalues found.", + cimg_instance); + f = std::sqrt(f); + const double + l1 = 0.5*(e - f), + l2 = 0.5*(e + f), + b2 = b*b, + norm1 = std::sqrt(cimg::sqr(l2 - a) + b2), + norm2 = std::sqrt(cimg::sqr(l1 - a) + b2); + val[0] = (t)l2; + val[1] = (t)l1; + if (norm1>0) { vec(0,0) = (t)(b/norm1); vec(0,1) = (t)((l2 - a)/norm1); } else { vec(0,0) = 1; vec(0,1) = 0; } + if (norm2>0) { vec(1,0) = (t)(b/norm2); vec(1,1) = (t)((l1 - a)/norm2); } else { vec(1,0) = 1; vec(1,1) = 0; } + } break; + default : + throw CImgInstanceException(_cimg_instance + "eigen(): Eigenvalues computation of general matrices is limited " + "to 2x2 matrices.", + cimg_instance); + } + } + return *this; + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a matrix. + /** + \return A list of two images [val; vec], whose meaning is similar as in eigen(CImg&,CImg&) const. + **/ + CImgList get_eigen() const { + CImgList res(2); + eigen(res[0],res[1]); + return res; + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix. + /** + \param[out] val Vector of the estimated eigenvalues, in decreasing order. + \param[out] vec Matrix of the estimated eigenvectors, sorted by columns. + **/ + template + const CImg& symmetric_eigen(CImg& val, CImg& vec) const { + if (is_empty()) { val.assign(); vec.assign(); return *this; } + if (_width!=_height || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "eigen(): Instance is not a square matrix.", + cimg_instance); + val.assign(1,_width); + vec.assign(_width,_width); + + if (_width==1) { val[0] = cimg::abs((*this)[0]); vec[0] = 1; return *this; } + if (_width==2) { + const double + a = (*this)[0], b = (*this)[1], c = (*this)[2], d = (*this)[3], + e = a + d, f = std::sqrt(std::max(e*e - 4*(a*d - b*c),0.0)), + l1 = 0.5*(e - f), l2 = 0.5*(e + f), + n = std::sqrt(cimg::sqr(l2 - a) + b*b); + val[0] = (t)l2; + val[1] = (t)l1; + if (n>0) { vec[0] = (t)(b/n); vec[2] = (t)((l2 - a)/n); } else { vec[0] = 1; vec[2] = 0; } + vec[1] = -vec[2]; + vec[3] = vec[0]; + return *this; + } + +#ifdef cimg_use_lapack + char JOB = 'V', UPLO = 'U'; + int N = _width, LWORK = 4*N, INFO; + Tfloat + *const lapA = new Tfloat[N*N], + *const lapW = new Tfloat[N], + *const WORK = new Tfloat[LWORK]; + cimg_forXY(*this,k,l) lapA[k*N + l] = (Tfloat)((*this)(k,l)); + cimg::syev(JOB,UPLO,N,lapA,lapW,WORK,LWORK,INFO); + if (INFO) + cimg::warn(_cimg_instance + "symmetric_eigen(): LAPACK library function dsyev_() returned error code %d.", + cimg_instance, + INFO); + if (!INFO) { + cimg_forY(val,i) val(i) = (T)lapW[N - 1 -i]; + cimg_forXY(vec,k,l) vec(k,l) = (T)(lapA[(N - 1 - k)*N + l]); + } else { val.fill(0); vec.fill(0); } + delete[] lapA; delete[] lapW; delete[] WORK; + +#else + CImg V(_width,_width); + Tfloat M = 0, m = (Tfloat)min_max(M), maxabs = cimg::max((Tfloat)1,cimg::abs(m),cimg::abs(M)); + (CImg(*this,false)/=maxabs).SVD(vec,val,V,false); + if (maxabs!=1) val*=maxabs; + + bool is_ambiguous = false; + float eig = 0; + cimg_forY(val,p) { // Check for ambiguous cases + if (val[p]>eig) eig = (float)val[p]; + t scal = 0; + cimg_forY(vec,y) scal+=vec(p,y)*V(p,y); + if (cimg::abs(scal)<0.9f) is_ambiguous = true; + if (scal<0) val[p] = -val[p]; + } + if (is_ambiguous) { + ++(eig*=2); + SVD(vec,val,V,false,40,eig); + val-=eig; + } + + CImg permutations; // Sort eigenvalues in decreasing order + CImg tmp(_width); + val.sort(permutations,false); + cimg_forY(vec,k) { + cimg_forY(permutations,y) tmp(y) = vec(permutations(y),k); + std::memcpy(vec.data(0,k),tmp._data,sizeof(t)*_width); + } +#endif + return *this; + } + + //! Compute eigenvalues and eigenvectors of the instance image, viewed as a symmetric matrix. + /** + \return A list of two images [val; vec], whose meaning are similar as in + symmetric_eigen(CImg&,CImg&) const. + **/ + CImgList get_symmetric_eigen() const { + CImgList res(2); + symmetric_eigen(res[0],res[1]); + return res; + } + + //! Sort pixel values and get sorting permutations. + /** + \param[out] permutations Permutation map used for the sorting. + \param is_increasing Tells if pixel values are sorted in an increasing (\c true) or decreasing (\c false) way. + **/ + template + CImg& sort(CImg& permutations, const bool is_increasing=true) { + permutations.assign(_width,_height,_depth,_spectrum); + if (is_empty()) return *this; + cimg_foroff(permutations,off) permutations[off] = (t)off; + return _quicksort(0,size() - 1,permutations,is_increasing,true); + } + + //! Sort pixel values and get sorting permutations \newinstance. + template + CImg get_sort(CImg& permutations, const bool is_increasing=true) const { + return (+*this).sort(permutations,is_increasing); + } + + //! Sort pixel values. + /** + \param is_increasing Tells if pixel values are sorted in an increasing (\c true) or decreasing (\c false) way. + \param axis Tells if the value sorting must be done along a specific axis. Can be: + - \c 0: All pixel values are sorted, independently on their initial position. + - \c 'x': Image columns are sorted, according to the first value in each column. + - \c 'y': Image rows are sorted, according to the first value in each row. + - \c 'z': Image slices are sorted, according to the first value in each slice. + - \c 'c': Image channels are sorted, according to the first value in each channel. + **/ + CImg& sort(const bool is_increasing=true, const char axis=0) { + if (is_empty()) return *this; + CImg perm; + switch (cimg::lowercase(axis)) { + case 0 : + _quicksort(0,size() - 1,perm,is_increasing,false); + break; + case 'x' : { + perm.assign(_width); + get_crop(0,0,0,0,_width - 1,0,0,0).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(perm[x],y,z,c); + } break; + case 'y' : { + perm.assign(_height); + get_crop(0,0,0,0,0,_height - 1,0,0).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(x,perm[y],z,c); + } break; + case 'z' : { + perm.assign(_depth); + get_crop(0,0,0,0,0,0,_depth - 1,0).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(x,y,perm[z],c); + } break; + case 'c' : { + perm.assign(_spectrum); + get_crop(0,0,0,0,0,0,0,_spectrum - 1).sort(perm,is_increasing); + CImg img(*this,false); + cimg_forXYZC(*this,x,y,z,c) (*this)(x,y,z,c) = img(x,y,z,perm[c]); + } break; + default : + throw CImgArgumentException(_cimg_instance + "sort(): Invalid specified axis '%c' " + "(should be { x | y | z | c }).", + cimg_instance,axis); + } + return *this; + } + + //! Sort pixel values \newinstance. + CImg get_sort(const bool is_increasing=true, const char axis=0) const { + return (+*this).sort(is_increasing,axis); + } + + template + CImg& _quicksort(const long indm, const long indM, CImg& permutations, + const bool is_increasing, const bool is_permutations) { + if (indm(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + if ((*this)[mid]>(*this)[indM]) { + cimg::swap((*this)[indM],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indM],permutations[mid]); + } + if ((*this)[indm]>(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + } else { + if ((*this)[indm]<(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + if ((*this)[mid]<(*this)[indM]) { + cimg::swap((*this)[indM],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indM],permutations[mid]); + } + if ((*this)[indm]<(*this)[mid]) { + cimg::swap((*this)[indm],(*this)[mid]); + if (is_permutations) cimg::swap(permutations[indm],permutations[mid]); + } + } + if (indM - indm>=3) { + const T pivot = (*this)[mid]; + long i = indm, j = indM; + if (is_increasing) { + do { + while ((*this)[i]pivot) --j; + if (i<=j) { + if (is_permutations) cimg::swap(permutations[i],permutations[j]); + cimg::swap((*this)[i++],(*this)[j--]); + } + } while (i<=j); + } else { + do { + while ((*this)[i]>pivot) ++i; + while ((*this)[j] A; // Input matrix (assumed to contain some values) + CImg<> U,S,V; + A.SVD(U,S,V) + \endcode + **/ + template + const CImg& SVD(CImg& U, CImg& S, CImg& V, const bool sorting=true, + const unsigned int max_iteration=40, const float lambda=0) const { + typedef _cimg_Ttfloat Ttfloat; + const Ttfloat epsilon = (Ttfloat)1e-25; + + if (is_empty()) { U.assign(); S.assign(); V.assign(); } + else if (_depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "SVD(): Instance has invalid dimensions (depth or channels different from 1).", + cimg_instance); + else { + U = *this; + if (lambda!=0) { + const unsigned int delta = std::min(U._width,U._height); + for (unsigned int i = 0; i rv1(_width); + Ttfloat anorm = 0, c, f, g = 0, h, s, scale = 0; + int l = 0; + + cimg_forX(U,i) { + l = i + 1; + rv1[i] = scale*g; + g = s = scale = 0; + if (i=0?-1:1)*std::sqrt(s)); + h = f*g - s; + U(i,i) = f - g; + for (int j = l; j=0?-1:1)*std::sqrt(s)); + h = f*g - s; + U(l,i) = f - g; + for (int k = l; k=0; --i) { + if (i=0; --i) { + l = i + 1; + g = S[i]; + for (int j = l; j=0; --k) { + int nm = 0; + for (unsigned int its = 0; its=1; --l) { + nm = l - 1; + if ((cimg::abs(rv1[l]) + anorm)==anorm) { flag = false; break; } + if ((cimg::abs(S[nm]) + anorm)==anorm) break; + } + if (flag) { + c = 0; + s = 1; + for (int i = l; i<=k; ++i) { + f = s*rv1[i]; + rv1[i] = c*rv1[i]; + if ((cimg::abs(f) + anorm)==anorm) break; + g = S[i]; + h = cimg::_hypot(f,g); + S[i] = h; + h = 1/h; + c = g*h; + s = -f*h; + cimg_forY(U,j) { + const t y = U(nm,j), z = U(i,j); + U(nm,j) = y*c + z*s; + U(i,j) = z*c - y*s; + } + } + } + + const t z = S[k]; + if (l==k) { if (z<0) { S[k] = -z; cimg_forX(U,j) V(k,j) = -V(k,j); } break; } + nm = k - 1; + t x = S[l], y = S[nm]; + g = rv1[nm]; + h = rv1[k]; + f = ((y - z)*(y + z) + (g - h)*(g + h))/std::max(epsilon,(Ttfloat)2*h*y); + g = cimg::_hypot(f,(Ttfloat)1); + f = ((x - z)*(x + z) + h*((y/(f + (f>=0?g:-g))) - h))/std::max(epsilon,(Ttfloat)x); + c = s = 1; + for (int j = l; j<=nm; ++j) { + const int i = j + 1; + g = rv1[i]; + h = s*g; + g = c*g; + t y1 = S[i], z1 = cimg::_hypot(f,h); + rv1[j] = z1; + c = f/std::max(epsilon,(Ttfloat)z1); + s = h/std::max(epsilon,(Ttfloat)z1); + f = x*c + g*s; + g = g*c - x*s; + h = y1*s; + y1*=c; + cimg_forX(U,jj) { + const t x2 = V(j,jj), z2 = V(i,jj); + V(j,jj) = x2*c + z2*s; + V(i,jj) = z2*c - x2*s; + } + z1 = cimg::_hypot(f,h); + S[j] = z1; + if (z1) { + z1 = 1/std::max(epsilon,(Ttfloat)z1); + c = f*z1; + s = h*z1; + } + f = c*g + s*y1; + x = c*y1 - s*g; + cimg_forY(U,jj) { + const t y2 = U(j,jj), z2 = U(i,jj); + U(j,jj) = y2*c + z2*s; + U(i,jj) = z2*c - y2*s; + } + } + rv1[l] = 0; + rv1[k] = f; + S[k] = x; + } + } + + if (sorting) { + CImg permutations; + CImg tmp(_width); + S.sort(permutations,false); + cimg_forY(U,k) { + cimg_forY(permutations,y) tmp(y) = U(permutations(y),k); + std::memcpy(U.data(0,k),tmp._data,sizeof(t)*_width); + } + cimg_forY(V,k) { + cimg_forY(permutations,y) tmp(y) = V(permutations(y),k); + std::memcpy(V.data(0,k),tmp._data,sizeof(t)*_width); + } + } + } + return *this; + } + + //! Compute the SVD of the instance image, viewed as a general matrix. + /** + \return A list of three images [U; S; V], whose meaning is similar as in + SVD(CImg&,CImg&,CImg&,bool,unsigned int,float) const. + **/ + CImgList get_SVD(const bool sorting=true, + const unsigned int max_iteration=40, const float lambda=0) const { + CImgList res(3); + SVD(res[0],res[1],res[2],sorting,max_iteration,lambda); + return res; + } + + // [internal] Compute the LU decomposition of a permuted matrix. + template + CImg& _LU(CImg& indx, bool& d) { + const int N = width(); + int imax = 0; + CImg vv(N); + indx.assign(N); + d = true; + + bool return0 = false; + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=512)) + cimg_forX(*this,i) { + Tfloat vmax = 0; + cimg_forX(*this,j) { + const Tfloat tmp = cimg::abs((*this)(j,i)); + if (tmp>vmax) vmax = tmp; + } + if (vmax==0) return0 = true; else vv[i] = 1/vmax; + } + if (return0) { indx.fill(0); return fill(0); } + + cimg_forX(*this,j) { + for (int i = 0; i=vmax) { vmax = tmp; imax = i; } + } + if (j!=imax) { + cimg_forX(*this,k) cimg::swap((*this)(k,imax),(*this)(k,j)); + d = !d; + vv[imax] = vv[j]; + } + indx[j] = (t)imax; + if ((*this)(j,j)==0) (*this)(j,j) = (T)1e-20; + if (j=3 = orthogonal matching pursuit where an orthogonal projection step is performed + every 'method-2' iterations. + \param max_iter Sets the max number of iterations processed for each signal. + If set to '0' (default), 'max_iter' is set to the number of dictionary columns. + (only meaningful for matching pursuit and its variants). + \param max_residual Gives a stopping criterion on signal reconstruction accuracy. + (only meaningful for matching pursuit and its variants). + \return A matrix W whose columns correspond to the sparse weights of associated to each input matrix column. + Thus, the matrix product D*W is an approximation of the input matrix. + **/ + template + CImg& project_matrix(const CImg& dictionary, const unsigned int method=0, + const unsigned int max_iter=0, const double max_residual=1e-6) { + return get_project_matrix(dictionary,method,max_iter,max_residual).move_to(*this); + } + + template + CImg get_project_matrix(const CImg& dictionary, const unsigned int method=0, + const unsigned int max_iter=0, const double max_residual=1e-6) const { + if (_depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "project_matrix(): Instance image is not a matrix.", + cimg_instance); + if (dictionary._height!=_height || dictionary._depth!=1 || dictionary._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "project_matrix(): Specified dictionary (%u,%u,%u,%u) has an invalid size.", + cimg_instance, + dictionary._width,dictionary._height,dictionary._depth,dictionary._spectrum); + + if (!method) return get_solve(dictionary,true); + CImg W(_width,dictionary._width,1,1,0); + + // Compute dictionary norm and normalize it. + CImg D(dictionary,false), Dnorm(D._width); + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=2 && _width*_height>=32)) + cimg_forX(Dnorm,d) { + Tfloat norm = 0; + cimg_forY(D,y) norm+=cimg::sqr(D(d,y)); + Dnorm[d] = std::max((Tfloat)1e-8,std::sqrt(norm)); + } + cimg_forXY(D,d,y) D(d,y)/=Dnorm[d]; + + // Matching pursuit. + const unsigned int proj_step = method<3?1:method - 2; + bool is_orthoproj = false; + + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=2 && _width*_height>=32)) + cimg_forX(*this,x) { + CImg S = get_column(x); + const CImg S0 = method<2?CImg():S; + Tfloat residual = S.magnitude()/S._height; + const unsigned int nmax = max_iter?max_iter:D._width; + + for (unsigned int n = 0; nmax_residual; ++n) { + + // Find best matching column in D. + int dmax = 0; + Tfloat absdotmax = 0, dotmax = 0; + cimg_pragma_openmp(parallel for cimg_openmp_if(D._width>=2 && D._width*D._height>=32)) + cimg_forX(D,d) { + Tfloat _dot = 0; + cimg_forY(D,y) _dot+=S[y]*D(d,y); + Tfloat absdot = cimg::abs(_dot); + cimg_pragma_openmp(critical(get_project_matrix)) { + if (absdot>absdotmax) { + absdotmax = absdot; + dotmax = _dot; + dmax = d; + } + } + } + + if (!n || method<3 || n%proj_step) { + // Matching Pursuit: Subtract component to signal. + W(x,dmax)+=dotmax; + residual = 0; + cimg_forY(S,y) { + S[y]-=dotmax*D(dmax,y); + residual+=cimg::sqr(S[y]); + } + residual = std::sqrt(residual)/S._height; + is_orthoproj = false; + + } else { + // Orthogonal Matching Pursuit: Orthogonal projection step. + W(x,dmax) = 1; // Used as a marker only. + unsigned int nbW = 0; + cimg_forY(W,d) if (W(x,d)) ++nbW; + CImg sD(nbW,D._height); + CImg inds(nbW); + int sd = 0; + cimg_forY(W,d) if (W(x,d)) { + cimg_forY(sD,y) sD(sd,y) = D(d,y); + inds[sd++] = d; + } + S0.get_solve(sD,true).move_to(sD); // sD is now a one-column vector of weights + + // Recompute residual signal. + S = S0; + cimg_forY(sD,k) { + const Tfloat weight = sD[k]; + const unsigned int ind = inds[k]; + W(x,ind) = weight; + cimg_forY(S,y) S[y]-=weight*D(ind,y); + } + residual = S.magnitude()/S._height; + is_orthoproj = true; + } + } + + // Perform last orthoprojection step if needed. + if (method>=2 && !is_orthoproj) { + unsigned int nbW = 0; + cimg_forY(W,d) if (W(x,d)) ++nbW; + if (nbW) { // Avoid degenerated case where 0 coefs are used + CImg sD(nbW,D._height); + CImg inds(nbW); + int sd = 0; + cimg_forY(W,d) if (W(x,d)) { + cimg_forY(sD,y) sD(sd,y) = D(d,y); + inds[sd++] = d; + } + S0.get_solve(sD,true).move_to(sD); + cimg_forY(sD,k) W(x,inds[k]) = sD[k]; + } + } + } + + // Normalize resulting coefficients according to initial (non-normalized) dictionary. + cimg_forXY(W,x,y) W(x,y)/=Dnorm[y]; + return W; + } + + //! Compute minimal path in a graph, using the Dijkstra algorithm. + /** + \param distance An object having operator()(unsigned int i, unsigned int j) which returns distance + between two nodes (i,j). + \param nb_nodes Number of graph nodes. + \param starting_node Index of the starting node. + \param ending_node Index of the ending node (set to ~0U to ignore ending node). + \param previous_node Array that gives the previous node index in the path to the starting node + (optional parameter). + \return Array of distances of each node to the starting node. + **/ + template + static CImg dijkstra(const tf& distance, const unsigned int nb_nodes, + const unsigned int starting_node, const unsigned int ending_node, + CImg& previous_node) { + if (starting_node>=nb_nodes) + throw CImgArgumentException("CImg<%s>::dijkstra(): Specified index of starting node %u is higher " + "than number of nodes %u.", + pixel_type(),starting_node,nb_nodes); + CImg dist(1,nb_nodes,1,1,cimg::type::max()); + dist(starting_node) = 0; + previous_node.assign(1,nb_nodes,1,1,(t)-1); + previous_node(starting_node) = (t)starting_node; + CImg Q(nb_nodes); + cimg_forX(Q,u) Q(u) = (unsigned int)u; + cimg::swap(Q(starting_node),Q(0)); + unsigned int sizeQ = nb_nodes; + while (sizeQ) { + // Update neighbors from minimal vertex + const unsigned int umin = Q(0); + if (umin==ending_node) sizeQ = 0; + else { + const T dmin = dist(umin); + const T infty = cimg::type::max(); + for (unsigned int q = 1; qdist(Q(left))) || + (rightdist(Q(right)));) { + if (right + static CImg dijkstra(const tf& distance, const unsigned int nb_nodes, + const unsigned int starting_node, const unsigned int ending_node=~0U) { + CImg foo; + return dijkstra(distance,nb_nodes,starting_node,ending_node,foo); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm. + /** + \param starting_node Index of the starting node. + \param ending_node Index of the ending node. + \param previous_node Array that gives the previous node index in the path to the starting node + (optional parameter). + \return Array of distances of each node to the starting node. + \note image instance corresponds to the adjacency matrix of the graph. + **/ + template + CImg& dijkstra(const unsigned int starting_node, const unsigned int ending_node, + CImg& previous_node) { + return get_dijkstra(starting_node,ending_node,previous_node).move_to(*this); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm \newinstance. + template + CImg get_dijkstra(const unsigned int starting_node, const unsigned int ending_node, + CImg& previous_node) const { + if (_width!=_height || _depth!=1 || _spectrum!=1) + throw CImgInstanceException(_cimg_instance + "dijkstra(): Instance is not a graph adjacency matrix.", + cimg_instance); + + return dijkstra(*this,_width,starting_node,ending_node,previous_node); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm. + CImg& dijkstra(const unsigned int starting_node, const unsigned int ending_node=~0U) { + return get_dijkstra(starting_node,ending_node).move_to(*this); + } + + //! Return minimal path in a graph, using the Dijkstra algorithm \newinstance. + CImg get_dijkstra(const unsigned int starting_node, const unsigned int ending_node=~0U) const { + CImg foo; + return get_dijkstra(starting_node,ending_node,foo); + } + + //! Return an image containing the character codes of specified string. + /** + \param str input C-string to encode as an image. + \param is_last_zero Tells if the ending \c '0' character appear in the resulting image. + \param is_shared Return result that shares its buffer with \p str. + **/ + static CImg string(const char *const str, const bool is_last_zero=true, const bool is_shared=false) { + if (!str) return CImg(); + return CImg(str,(unsigned int)std::strlen(str) + (is_last_zero?1:0),1,1,1,is_shared); + } + + //! Return a \c 1x1 image containing specified value. + /** + \param a0 First vector value. + **/ + static CImg row_vector(const T& a0) { + return vector(a0); + } + + //! Return a \c 2x1 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + **/ + static CImg row_vector(const T& a0, const T& a1) { + CImg r(2,1); + r[0] = a0; r[1] = a1; + return r; + } + + //! Return a \c 3x1 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + **/ + static CImg row_vector(const T& a0, const T& a1, const T& a2) { + CImg r(3,1); + r[0] = a0; r[1] = a1; r[2] = a2; + return r; + } + + //! Return a \c 4x1 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + \param a3 Fourth vector value. + **/ + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3) { + CImg r(4,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; + return r; + } + + //! Return a \c 5x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4) { + CImg r(5,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; + return r; + } + + //! Return a \c 6x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, const T& a5) { + CImg r(6,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; + return r; + } + + //! Return a \c 7x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6) { + CImg r(7,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; + return r; + } + + //! Return a \c 8x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7) { + CImg r(8,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; + return r; + } + + //! Return a \c 9x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8) { + CImg r(9,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; + return r; + } + + //! Return a \c 10x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9) { + CImg r(10,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + return r; + } + + //! Return a \c 11x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10) { + CImg r(11,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; + return r; + } + + //! Return a \c 12x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11) { + CImg r(12,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; + return r; + } + + //! Return a \c 13x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12) { + CImg r(13,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; + return r; + } + + //! Return a \c 14x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13) { + CImg r(14,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; + return r; + } + + //! Return a \c 15x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14) { + CImg r(15,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; + return r; + } + + //! Return a \c 16x1 image containing specified values. + static CImg row_vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14, const T& a15) { + CImg r(16,1); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; r[15] = a15; + return r; + } + + //! Return a \c 1x1 image containing specified value. + /** + \param a0 First vector value. + **/ + static CImg vector(const T& a0) { + CImg r(1,1); + r[0] = a0; + return r; + } + + //! Return a \c 1x2 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + **/ + static CImg vector(const T& a0, const T& a1) { + CImg r(1,2); + r[0] = a0; r[1] = a1; + return r; + } + + //! Return a \c 1x3 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + **/ + static CImg vector(const T& a0, const T& a1, const T& a2) { + CImg r(1,3); + r[0] = a0; r[1] = a1; r[2] = a2; + return r; + } + + //! Return a \c 1x4 image containing specified values. + /** + \param a0 First vector value. + \param a1 Second vector value. + \param a2 Third vector value. + \param a3 Fourth vector value. + **/ + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3) { + CImg r(1,4); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; + return r; + } + + //! Return a \c 1x5 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4) { + CImg r(1,5); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; + return r; + } + + //! Return a \c 1x6 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, const T& a5) { + CImg r(1,6); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; + return r; + } + + //! Return a \c 1x7 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6) { + CImg r(1,7); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; + return r; + } + + //! Return a \c 1x8 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7) { + CImg r(1,8); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; + return r; + } + + //! Return a \c 1x9 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8) { + CImg r(1,9); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; + return r; + } + + //! Return a \c 1x10 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9) { + CImg r(1,10); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + return r; + } + + //! Return a \c 1x11 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10) { + CImg r(1,11); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; + return r; + } + + //! Return a \c 1x12 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11) { + CImg r(1,12); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; + return r; + } + + //! Return a \c 1x13 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12) { + CImg r(1,13); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; + return r; + } + + //! Return a \c 1x14 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13) { + CImg r(1,14); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; + return r; + } + + //! Return a \c 1x15 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14) { + CImg r(1,15); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; + return r; + } + + //! Return a \c 1x16 image containing specified values. + static CImg vector(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14, const T& a15) { + CImg r(1,16); + r[0] = a0; r[1] = a1; r[2] = a2; r[3] = a3; r[4] = a4; r[5] = a5; r[6] = a6; r[7] = a7; r[8] = a8; r[9] = a9; + r[10] = a10; r[11] = a11; r[12] = a12; r[13] = a13; r[14] = a14; r[15] = a15; + return r; + } + + //! Return a 1x1 matrix containing specified coefficients. + /** + \param a0 First matrix value. + \note Equivalent to vector(const T&). + **/ + static CImg matrix(const T& a0) { + return vector(a0); + } + + //! Return a 2x2 matrix containing specified coefficients. + /** + \param a0 First matrix value. + \param a1 Second matrix value. + \param a2 Third matrix value. + \param a3 Fourth matrix value. + **/ + static CImg matrix(const T& a0, const T& a1, + const T& a2, const T& a3) { + CImg r(2,2); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; + *(ptr++) = a2; *(ptr++) = a3; + return r; + } + + //! Return a 3x3 matrix containing specified coefficients. + /** + \param a0 First matrix value. + \param a1 Second matrix value. + \param a2 Third matrix value. + \param a3 Fourth matrix value. + \param a4 Fifth matrix value. + \param a5 Sixth matrix value. + \param a6 Seventh matrix value. + \param a7 Eighth matrix value. + \param a8 Ninth matrix value. + **/ + static CImg matrix(const T& a0, const T& a1, const T& a2, + const T& a3, const T& a4, const T& a5, + const T& a6, const T& a7, const T& a8) { + CImg r(3,3); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; *(ptr++) = a2; + *(ptr++) = a3; *(ptr++) = a4; *(ptr++) = a5; + *(ptr++) = a6; *(ptr++) = a7; *(ptr++) = a8; + return r; + } + + //! Return a 4x4 matrix containing specified coefficients. + static CImg matrix(const T& a0, const T& a1, const T& a2, const T& a3, + const T& a4, const T& a5, const T& a6, const T& a7, + const T& a8, const T& a9, const T& a10, const T& a11, + const T& a12, const T& a13, const T& a14, const T& a15) { + CImg r(4,4); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; *(ptr++) = a2; *(ptr++) = a3; + *(ptr++) = a4; *(ptr++) = a5; *(ptr++) = a6; *(ptr++) = a7; + *(ptr++) = a8; *(ptr++) = a9; *(ptr++) = a10; *(ptr++) = a11; + *(ptr++) = a12; *(ptr++) = a13; *(ptr++) = a14; *(ptr++) = a15; + return r; + } + + //! Return a 5x5 matrix containing specified coefficients. + static CImg matrix(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, + const T& a5, const T& a6, const T& a7, const T& a8, const T& a9, + const T& a10, const T& a11, const T& a12, const T& a13, const T& a14, + const T& a15, const T& a16, const T& a17, const T& a18, const T& a19, + const T& a20, const T& a21, const T& a22, const T& a23, const T& a24) { + CImg r(5,5); T *ptr = r._data; + *(ptr++) = a0; *(ptr++) = a1; *(ptr++) = a2; *(ptr++) = a3; *(ptr++) = a4; + *(ptr++) = a5; *(ptr++) = a6; *(ptr++) = a7; *(ptr++) = a8; *(ptr++) = a9; + *(ptr++) = a10; *(ptr++) = a11; *(ptr++) = a12; *(ptr++) = a13; *(ptr++) = a14; + *(ptr++) = a15; *(ptr++) = a16; *(ptr++) = a17; *(ptr++) = a18; *(ptr++) = a19; + *(ptr++) = a20; *(ptr++) = a21; *(ptr++) = a22; *(ptr++) = a23; *(ptr++) = a24; + return r; + } + + //! Return a 1x1 symmetric matrix containing specified coefficients. + /** + \param a0 First matrix value. + \note Equivalent to vector(const T&). + **/ + static CImg tensor(const T& a0) { + return matrix(a0); + } + + //! Return a 2x2 symmetric matrix tensor containing specified coefficients. + static CImg tensor(const T& a0, const T& a1, const T& a2) { + return matrix(a0,a1,a1,a2); + } + + //! Return a 3x3 symmetric matrix containing specified coefficients. + static CImg tensor(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4, const T& a5) { + return matrix(a0,a1,a2,a1,a3,a4,a2,a4,a5); + } + + //! Return a 1x1 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0) { + return matrix(a0); + } + + //! Return a 2x2 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1) { + return matrix(a0,0,0,a1); + } + + //! Return a 3x3 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1, const T& a2) { + return matrix(a0,0,0,0,a1,0,0,0,a2); + } + + //! Return a 4x4 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1, const T& a2, const T& a3) { + return matrix(a0,0,0,0,0,a1,0,0,0,0,a2,0,0,0,0,a3); + } + + //! Return a 5x5 diagonal matrix containing specified coefficients. + static CImg diagonal(const T& a0, const T& a1, const T& a2, const T& a3, const T& a4) { + return matrix(a0,0,0,0,0,0,a1,0,0,0,0,0,a2,0,0,0,0,0,a3,0,0,0,0,0,a4); + } + + //! Return a NxN identity matrix. + /** + \param N Dimension of the matrix. + **/ + static CImg identity_matrix(const unsigned int N) { + CImg res(N,N,1,1,0); + cimg_forX(res,x) res(x,x) = 1; + return res; + } + + //! Return a N-numbered sequence vector from \p a0 to \p a1. + /** + \param N Size of the resulting vector. + \param a0 Starting value of the sequence. + \param a1 Ending value of the sequence. + **/ + static CImg sequence(const unsigned int N, const T& a0, const T& a1) { + if (N) return CImg(1,N).sequence(a0,a1); + return CImg(); + } + + //! Return a 3x3 rotation matrix from an { axis + angle } or a quaternion. + /** + \param x X-coordinate of the rotation axis, or first quaternion coordinate. + \param y Y-coordinate of the rotation axis, or second quaternion coordinate. + \param z Z-coordinate of the rotation axis, or third quaternion coordinate. + \param w Angle of the rotation axis (in degree), or fourth quaternion coordinate. + \param is_quaternion Tell is the four arguments denotes a set { axis + angle } or a quaternion (x,y,z,w). + **/ + static CImg rotation_matrix(const float x, const float y, const float z, const float w, + const bool is_quaternion=false) { + double X, Y, Z, W, N; + if (is_quaternion) { + N = std::sqrt((double)x*x + (double)y*y + (double)z*z + (double)w*w); + if (N>0) { X = x/N; Y = y/N; Z = z/N; W = w/N; } + else { X = Y = Z = 0; W = 1; } + return CImg::matrix((T)(X*X + Y*Y - Z*Z - W*W),(T)(2*Y*Z - 2*X*W),(T)(2*X*Z + 2*Y*W), + (T)(2*X*W + 2*Y*Z),(T)(X*X - Y*Y + Z*Z - W*W),(T)(2*Z*W - 2*X*Y), + (T)(2*Y*W - 2*X*Z),(T)(2*X*Y + 2*Z*W),(T)(X*X - Y*Y - Z*Z + W*W)); + } + N = cimg::hypot((double)x,(double)y,(double)z); + if (N>0) { X = x/N; Y = y/N; Z = z/N; } + else { X = Y = 0; Z = 1; } + const double ang = w*cimg::PI/180, c = std::cos(ang), omc = 1 - c, s = std::sin(ang); + return CImg::matrix((T)(X*X*omc + c),(T)(X*Y*omc - Z*s),(T)(X*Z*omc + Y*s), + (T)(X*Y*omc + Z*s),(T)(Y*Y*omc + c),(T)(Y*Z*omc - X*s), + (T)(X*Z*omc - Y*s),(T)(Y*Z*omc + X*s),(T)(Z*Z*omc + c)); + } + + //@} + //----------------------------------- + // + //! \name Value Manipulation + //@{ + //----------------------------------- + + //! Fill all pixel values with specified value. + /** + \param val Fill value. + **/ + CImg& fill(const T& val) { + if (is_empty()) return *this; + if (val && sizeof(T)!=1) cimg_for(*this,ptrd,T) *ptrd = val; + else std::memset(_data,(int)(ulongT)val,sizeof(T)*size()); // Double cast to allow val to be (void*) + return *this; + } + + //! Fill all pixel values with specified value \newinstance. + CImg get_fill(const T& val) const { + return CImg(_width,_height,_depth,_spectrum).fill(val); + } + + //! Fill sequentially all pixel values with specified values. + /** + \param val0 First fill value. + \param val1 Second fill value. + **/ + CImg& fill(const T& val0, const T& val1) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 1; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 2; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 3; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 4; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 5; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 6; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 7; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 8; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 9; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 10; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 11; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 12; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 13; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12,val13); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 14; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12,val13,val14); + } + + //! Fill sequentially all pixel values with specified values \overloading. + CImg& fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14, const T& val15) { + if (is_empty()) return *this; + T *ptrd, *ptre = end() - 15; + for (ptrd = _data; ptrd get_fill(const T& val0, const T& val1, const T& val2, const T& val3, const T& val4, const T& val5, + const T& val6, const T& val7, const T& val8, const T& val9, const T& val10, const T& val11, + const T& val12, const T& val13, const T& val14, const T& val15) const { + return CImg(_width,_height,_depth,_spectrum).fill(val0,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10, + val11,val12,val13,val14,val15); + } + + //! Fill sequentially pixel values according to a given expression. + /** + \param expression C-string describing a math formula, or a sequence of values. + \param repeat_values In case a list of values is provided, tells if this list must be repeated for the filling. + \param allow_formula Tells that mathematical formulas are authorized for the filling. + \param list_inputs In case of a mathematical expression, attach a list of images to the specified expression. + \param[out] list_outputs In case of a math expression, list of images atatched to the specified expression. + **/ + CImg& fill(const char *const expression, const bool repeat_values, const bool allow_formula=true, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) { + return _fill(expression,repeat_values,allow_formula?1:0,list_inputs,list_outputs,"fill",0); + } + + // 'formula_mode' = { 0 = does not allow formula | 1 = allow formula | + // 2 = allow formula and do not fill image values }. + CImg& _fill(const char *const expression, const bool repeat_values, const unsigned int formula_mode, + const CImgList *const list_inputs, CImgList *const list_outputs, + const char *const calling_function, const CImg *provides_copy) { + if (is_empty() || !expression || !*expression) return *this; + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + CImg is_error; + bool is_value_sequence = false; + cimg_abort_init; + + if (formula_mode) { + + // Try to pre-detect regular value sequence to avoid exception thrown by _cimg_math_parser. + double value; + char sep; + const int err = cimg_sscanf(expression,"%lf %c",&value,&sep); + if (err==1 || (err==2 && sep==',')) { + if (err==1) { if (formula_mode==2) return *this; return fill((T)value); } + else is_value_sequence = true; + } + + // Try to fill values according to a formula. + _cimg_abort_init_openmp; + if (!is_value_sequence) try { + CImg base = provides_copy?provides_copy->get_shared():get_shared(); + _cimg_math_parser mp(expression + (*expression=='>' || *expression=='<' || + *expression=='*' || *expression==':'), + calling_function,base,this,list_inputs,list_outputs,true); + if (!provides_copy && expression && *expression!='>' && *expression!='<' && *expression!=':' && + mp.need_input_copy) + base.assign().assign(*this,false); // Needs input copy + + // Determine 2nd largest image dimension (used as axis for inner loop in parallelized evaluation). + unsigned int M; + if (mp.result_dim) { + M = cimg::max(_width,_height,_depth); + M = M==_width?std::max(_height,_depth):M==_height?std::max(_width,_depth):std::max(_width,_height); + } else { + M = cimg::max(_width,_height,_depth,_spectrum); + M = M==_width?cimg::max(_height,_depth,_spectrum): + M==_height?cimg::max(_width,_depth,_spectrum): + M==_depth?cimg::max(_width,_height,_spectrum):cimg::max(_width,_height,_depth); + } + + bool do_in_parallel = false; +#if cimg_use_openmp!=0 + cimg_openmp_if(*expression=='*' || *expression==':' || + (mp.is_parallelizable && M>=(cimg_openmp_sizefactor)*320 && size()/M>=2)) + do_in_parallel = true; +#endif + if (mp.result_dim) { // Vector-valued expression + const unsigned int N = std::min(mp.result_dim,_spectrum); + const ulongT whd = (ulongT)_width*_height*_depth; + T *ptrd = *expression=='<'?_data + _width*_height*_depth - 1:_data; + if (*expression=='<') { + CImg res(1,mp.result_dim); + mp.begin_t(); + cimg_rofYZ(*this,y,z) { + cimg_abort_test; + if (formula_mode==2) cimg_rofX(*this,x) mp(x,y,z,0); + else cimg_rofX(*this,x) { + mp(x,y,z,0,res._data); + const double *ptrs = res._data; + T *_ptrd = ptrd--; for (unsigned int n = N; n>0; --n) { *_ptrd = (T)(*ptrs++); _ptrd+=whd; } + } + } + mp.end_t(); + + } else if (*expression=='>' || !do_in_parallel) { + CImg res(1,mp.result_dim); + mp.begin_t(); + cimg_forYZ(*this,y,z) { + cimg_abort_test; + if (formula_mode==2) cimg_forX(*this,x) mp(x,y,z,0); + else cimg_forX(*this,x) { + mp(x,y,z,0,res._data); + const double *ptrs = res._data; + T *_ptrd = ptrd++; for (unsigned int n = N; n>0; --n) { *_ptrd = (T)(*ptrs++); _ptrd+=whd; } + } + } + mp.end_t(); + + } else { + +#if cimg_use_openmp!=0 + unsigned int tid = 0; + cimg_pragma_openmp(parallel) + { + _cimg_math_parser *_mp = 0; + cimg_pragma_openmp(critical(_fill)) { _mp = !tid?&mp:new _cimg_math_parser(mp); ++tid; } + _cimg_math_parser &lmp = *_mp; + lmp.is_fill = true; + cimg_pragma_openmp(barrier) + lmp.begin_t(); + +#define _cimg_fill_openmp_vector(_YZ,_y,_z,_X,_x,_sx,_sy,_sz,_off) \ + cimg_pragma_openmp(for cimg_openmp_collapse(2)) \ + cimg_for##_YZ(*this,_y,_z) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + if (formula_mode==2) cimg_for##_X(*this,_x) lmp(x,y,z,0); \ + else { \ + CImg res(1,lmp.result_dim); \ + T *__ptrd = data(_sx,_sy,_sz,0); \ + const ulongT off = (ulongT)_off; \ + cimg_for##_X(*this,_x) { \ + lmp(x,y,z,0,res._data); \ + const double *ptrs = res._data; \ + T *_ptrd = __ptrd; \ + for (unsigned int n = N; n>0; --n) { *_ptrd = (T)(*ptrs++); _ptrd+=whd; } \ + __ptrd+=off; \ + } \ + } \ + } _cimg_abort_catch_openmp _cimg_abort_catch_fill_openmp + + if (M==_width) { _cimg_fill_openmp_vector(YZ,y,z,X,x,0,y,z,1) } + else if (M==_height) { _cimg_fill_openmp_vector(XZ,x,z,Y,y,x,0,z,_width) } + else { _cimg_fill_openmp_vector(XY,x,y,Z,z,x,y,0,_width*_height) } + + lmp.end_t(); + cimg_pragma_openmp(barrier) cimg_pragma_openmp(critical) { lmp.merge(mp); } + if (&lmp!=&mp) delete &lmp; + } +#endif + } + + } else { // Scalar-valued expression + T *ptrd = *expression=='<'?end() - 1:_data; + if (*expression=='<') { + mp.begin_t(); + if (formula_mode==2) cimg_rofYZC(*this,y,z,c) { cimg_abort_test; cimg_rofX(*this,x) mp(x,y,z,c); } + else cimg_rofYZC(*this,y,z,c) { cimg_abort_test; cimg_rofX(*this,x) *(ptrd--) = (T)mp(x,y,z,c); } + mp.end_t(); + + } else if (*expression=='>' || !do_in_parallel) { + mp.begin_t(); + if (formula_mode==2) cimg_forYZC(*this,y,z,c) { cimg_abort_test; cimg_forX(*this,x) mp(x,y,z,c); } + else cimg_forYZC(*this,y,z,c) { cimg_abort_test; cimg_forX(*this,x) *(ptrd++) = (T)mp(x,y,z,c); } + mp.end_t(); + + } else { + +#if cimg_use_openmp!=0 + unsigned int tid = 0; + cimg_pragma_openmp(parallel) + { + _cimg_math_parser *_mp = 0; + cimg_pragma_openmp(critical(_fill)) { _mp = !tid?&mp:new _cimg_math_parser(mp); ++tid; } + _cimg_math_parser &lmp = *_mp; + lmp.is_fill = true; + cimg_pragma_openmp(barrier) + lmp.begin_t(); + +#define _cimg_fill_openmp_scalar(_YZC,_y,_z,_c,_X,_x,_sx,_sy,_sz,_sc,_off) \ + cimg_pragma_openmp(for cimg_openmp_collapse(3)) \ + cimg_for##_YZC(*this,_y,_z,_c) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + if (formula_mode==2) cimg_for##_X(*this,_x) lmp(x,y,z,c); \ + else { \ + T *_ptrd = data(_sx,_sy,_sz,_sc); \ + const ulongT off = (ulongT)_off; \ + cimg_for##_X(*this,_x) { *_ptrd = (T)lmp(x,y,z,c); _ptrd+=off; } \ + } \ + } _cimg_abort_catch_openmp _cimg_abort_catch_fill_openmp + + if (M==_width) { _cimg_fill_openmp_scalar(YZC,y,z,c,X,x,0,y,z,c,1) } + else if (M==_height) { _cimg_fill_openmp_scalar(XZC,x,z,c,Y,y,x,0,z,c,_width) } + else if (M==_depth) { _cimg_fill_openmp_scalar(XYC,x,y,c,Z,z,x,y,0,c,_width*_height) } + else { _cimg_fill_openmp_scalar(XYZ,x,y,z,C,c,x,y,z,0,_width*_height*_depth) } + + lmp.end_t(); + cimg_pragma_openmp(barrier) cimg_pragma_openmp(critical) { lmp.merge(mp); } + if (&lmp!=&mp) delete &lmp; + } +#endif + } + } + mp.end(); + } catch (CImgException& e) { CImg::string(e._message).move_to(is_error); } + } + + // Try to fill values according to a value sequence. + if (!formula_mode || is_value_sequence || is_error) { + CImg item(256); + char sep = 0; + const char *nexpression = expression; + ulongT nb = 0; + const ulongT siz = size(); + T *ptrd = _data; + for (double val = 0; *nexpression && nb0 && cimg_sscanf(item,"%lf",&val)==1 && (sep==',' || sep==';' || err==1)) { + nexpression+=std::strlen(item) + (err>1); + *(ptrd++) = (T)val; + } else break; + } + cimg::exception_mode(omode); + if (nb get_fill(const char *const expression, const bool repeat_values, const bool allow_formula=true, + const CImgList *const list_inputs=0, CImgList *const list_outputs=0) const { + return (+*this).fill(expression,repeat_values,allow_formula?1:0,list_inputs,list_outputs); + } + + //! Fill sequentially pixel values according to the values found in another image. + /** + \param values Image containing the values used for the filling. + \param repeat_values In case there are less values than necessary in \c values, tells if these values must be + repeated for the filling. + **/ + template + CImg& fill(const CImg& values, const bool repeat_values=true) { + if (is_empty() || !values) return *this; + T *ptrd = _data, *ptre = ptrd + size(); + for (t *ptrs = values._data, *ptrs_end = ptrs + values.size(); ptrs + CImg get_fill(const CImg& values, const bool repeat_values=true) const { + return repeat_values?CImg(_width,_height,_depth,_spectrum).fill(values,repeat_values): + (+*this).fill(values,repeat_values); + } + + //! Fill pixel values along the X-axis at a specified pixel position. + /** + \param y Y-coordinate of the filled column. + \param z Z-coordinate of the filled column. + \param c C-coordinate of the filled column. + \param a0 First fill value. + **/ + CImg& fillX(const unsigned int y, const unsigned int z, const unsigned int c, const int a0, ...) { +#define _cimg_fill1(x,y,z,c,off,siz,t) { \ + va_list ap; va_start(ap,a0); T *ptrd = data(x,y,z,c); *ptrd = (T)a0; \ + for (unsigned int k = 1; k& fillX(const unsigned int y, const unsigned int z, const unsigned int c, const double a0, ...) { + if (y<_height && z<_depth && c<_spectrum) _cimg_fill1(0,y,z,c,1,_width,double); + return *this; + } + + //! Fill pixel values along the Y-axis at a specified pixel position. + /** + \param x X-coordinate of the filled row. + \param z Z-coordinate of the filled row. + \param c C-coordinate of the filled row. + \param a0 First fill value. + **/ + CImg& fillY(const unsigned int x, const unsigned int z, const unsigned int c, const int a0, ...) { + if (x<_width && z<_depth && c<_spectrum) _cimg_fill1(x,0,z,c,_width,_height,int); + return *this; + } + + //! Fill pixel values along the Y-axis at a specified pixel position \overloading. + CImg& fillY(const unsigned int x, const unsigned int z, const unsigned int c, const double a0, ...) { + if (x<_width && z<_depth && c<_spectrum) _cimg_fill1(x,0,z,c,_width,_height,double); + return *this; + } + + //! Fill pixel values along the Z-axis at a specified pixel position. + /** + \param x X-coordinate of the filled slice. + \param y Y-coordinate of the filled slice. + \param c C-coordinate of the filled slice. + \param a0 First fill value. + **/ + CImg& fillZ(const unsigned int x, const unsigned int y, const unsigned int c, const int a0, ...) { + const ulongT wh = (ulongT)_width*_height; + if (x<_width && y<_height && c<_spectrum) _cimg_fill1(x,y,0,c,wh,_depth,int); + return *this; + } + + //! Fill pixel values along the Z-axis at a specified pixel position \overloading. + CImg& fillZ(const unsigned int x, const unsigned int y, const unsigned int c, const double a0, ...) { + const ulongT wh = (ulongT)_width*_height; + if (x<_width && y<_height && c<_spectrum) _cimg_fill1(x,y,0,c,wh,_depth,double); + return *this; + } + + //! Fill pixel values along the C-axis at a specified pixel position. + /** + \param x X-coordinate of the filled channel. + \param y Y-coordinate of the filled channel. + \param z Z-coordinate of the filled channel. + \param a0 First filling value. + **/ + CImg& fillC(const unsigned int x, const unsigned int y, const unsigned int z, const int a0, ...) { + const ulongT whd = (ulongT)_width*_height*_depth; + if (x<_width && y<_height && z<_depth) _cimg_fill1(x,y,z,0,whd,_spectrum,int); + return *this; + } + + //! Fill pixel values along the C-axis at a specified pixel position \overloading. + CImg& fillC(const unsigned int x, const unsigned int y, const unsigned int z, const double a0, ...) { + const ulongT whd = (ulongT)_width*_height*_depth; + if (x<_width && y<_height && z<_depth) _cimg_fill1(x,y,z,0,whd,_spectrum,double); + return *this; + } + + //! Discard specified sequence of values in the image buffer, along a specific axis. + /** + \param values Sequence of values to discard. + \param axis Axis along which the values are discarded. If set to \c 0 (default value) + the method does it for all the buffer values and returns a one-column vector. + \note Discarded values will change the image geometry, so the resulting image + is returned as a one-column vector. + **/ + template + CImg& discard(const CImg& values, const char axis=0) { + if (is_empty() || !values) return *this; + return get_discard(values,axis).move_to(*this); + } + + template + CImg get_discard(const CImg& values, const char axis=0) const { + if (!values) return +*this; + CImg res; + if (is_empty()) return res; + const ulongT vsiz = values.size(); + const char _axis = cimg::lowercase(axis); + ulongT j = 0; + unsigned int k = 0; + int i0 = 0; + res.assign(width(),height(),depth(),spectrum()); + switch (_axis) { + case 'x' : { + cimg_forX(*this,i) { + if ((*this)(i)!=(T)values[j]) { + if (j) --i; + res.draw_image(k,get_columns(i0,i)); + k+=i - i0 + 1; i0 = i + 1; j = 0; + } else { ++j; if (j>=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = i + 1; } } + } + if (i0=vsiz) { j = 0; i0 = (int)i + 1; }} + } + if ((ulongT)i0& discard(const char axis=0) { + return get_discard(axis).move_to(*this); + } + + //! Discard neighboring duplicates in the image buffer, along the specified axis \newinstance. + CImg get_discard(const char axis=0) const { + CImg res; + if (is_empty()) return res; + const char _axis = cimg::lowercase(axis); + T current = *_data?(T)0:(T)1; + int j = 0; + res.assign(width(),height(),depth(),spectrum()); + switch (_axis) { + case 'x' : { + cimg_forX(*this,i) + if ((*this)(i)!=current) { res.draw_image(j++,get_column(i)); current = (*this)(i); } + res.resize(j,-100,-100,-100,0); + } break; + case 'y' : { + cimg_forY(*this,i) + if ((*this)(0,i)!=current) { res.draw_image(0,j++,get_row(i)); current = (*this)(0,i); } + res.resize(-100,j,-100,-100,0); + } break; + case 'z' : { + cimg_forZ(*this,i) + if ((*this)(0,0,i)!=current) { res.draw_image(0,0,j++,get_slice(i)); current = (*this)(0,0,i); } + res.resize(-100,-100,j,-100,0); + } break; + case 'c' : { + cimg_forC(*this,i) + if ((*this)(0,0,0,i)!=current) { res.draw_image(0,0,0,j++,get_channel(i)); current = (*this)(0,0,0,i); } + res.resize(-100,-100,-100,j,0); + } break; + default : { + res.unroll('y'); + cimg_foroff(*this,i) { + const T val = (*this)[i]; + if (val!=current) res[j++] = current = val; + } + res.resize(-100,j,-100,-100,0); + } + } + return res; + } + + //! Invert endianness of all pixel values. + /** + **/ + CImg& invert_endianness() { + cimg::invert_endianness(_data,size()); + return *this; + } + + //! Invert endianness of all pixel values \newinstance. + CImg get_invert_endianness() const { + return (+*this).invert_endianness(); + } + + //! Fill image with random values in specified range. + /** + \param val_min Minimal authorized random value. + \param val_max Maximal authorized random value. + \note Random variables are uniformly distributed in [val_min,val_max]. + **/ + CImg& rand(const T& val_min, const T& val_max) { + const float delta = (float)val_max - (float)val_min + (cimg::type::is_float()?0:1); + if (cimg::type::is_float()) cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),524288)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) _data[off] = (T)(val_min + delta*cimg::rand(1,&rng)); + cimg::srand(rng); + } else cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),524288)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) _data[off] = std::min(val_max,(T)(val_min + delta*cimg::rand(1,&rng))); + cimg::srand(rng); + } + return *this; + } + + //! Fill image with random values in specified range \newinstance. + CImg get_rand(const T& val_min, const T& val_max) const { + return (+*this).rand(val_min,val_max); + } + + //! Round pixel values. + /** + \param y Rounding precision. + \param rounding_type Rounding type. Can be: + - \c -1: Backward. + - \c 0: Nearest. + - \c 1: Forward. + **/ + CImg& round(const double y=1, const int rounding_type=0) { + if (y>0) cimg_openmp_for(*this,cimg::round(*ptr,y,rounding_type),8192); + return *this; + } + + //! Round pixel values \newinstance. + CImg get_round(const double y=1, const unsigned int rounding_type=0) const { + return (+*this).round(y,rounding_type); + } + + //! Add random noise to pixel values. + /** + \param sigma Amplitude of the random additive noise. If \p sigma<0, it stands for a percentage of the + global value range. + \param noise_type Type of additive noise (can be \p 0=gaussian, \p 1=uniform, \p 2=Salt and Pepper, + \p 3=Poisson or \p 4=Rician). + \return A reference to the modified image instance. + \note + - For Poisson noise (\p noise_type=3), parameter \p sigma is ignored, as Poisson noise only depends on + the image value itself. + - Function \p CImg::get_noise() is also defined. It returns a non-shared modified copy of the image instance. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_noise(40); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_noise.jpg + **/ + CImg& noise(const double sigma, const unsigned int noise_type=0) { + if (is_empty()) return *this; + const Tfloat vmin = (Tfloat)cimg::type::min(), vmax = (Tfloat)cimg::type::max(); + Tfloat nsigma = (Tfloat)sigma, m = 0, M = 0; + if (nsigma==0 && noise_type!=3) return *this; + if (nsigma<0 || noise_type==2) m = (Tfloat)min_max(M); + if (nsigma<0) nsigma = (Tfloat)(-nsigma*(M-m)/100.); + switch (noise_type) { + case 0 : { // Gaussian noise + cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),131072)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) { + Tfloat val = (Tfloat)(_data[off] + nsigma*cimg::grand(&rng)); + if (val>vmax) val = vmax; + if (valvmax) val = vmax; + if (val::is_float()) { --m; ++M; } + else { m = (Tfloat)cimg::type::min(); M = (Tfloat)cimg::type::max(); } + } + cimg_pragma_openmp(parallel cimg_openmp_if_size(size(),131072)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_rofoff(*this,off) if (cimg::rand(100,&rng)vmax) val = vmax; + if (val get_noise(const double sigma, const unsigned int noise_type=0) const { + return (+*this).noise(sigma,noise_type); + } + + //! Linearly normalize pixel values. + /** + \param min_value Minimum desired value of the resulting image. + \param max_value Maximum desired value of the resulting image. + \param constant_case_ratio In case of instance image having a constant value, tell what ratio + of [min_value,max_value] is used to fill the normalized image + (=0 for min_value, =1 for max_value, =0.5 for (min_value + max_value)/2). + \par Example + \code + const CImg img("reference.jpg"), res = img.get_normalize(160,220); + (img,res).display(); + \endcode + \image html ref_normalize2.jpg + **/ + CImg& normalize(const T& min_value, const T& max_value, + const float constant_case_ratio=0) { + if (is_empty()) return *this; + const T a = min_value get_normalize(const T& min_value, const T& max_value, + const float ratio_if_constant_image=0) const { + return CImg(*this,false).normalize((Tfloat)min_value,(Tfloat)max_value,ratio_if_constant_image); + } + + //! Normalize multi-valued pixels of the image instance, with respect to their L2-norm. + /** + \par Example + \code + const CImg img("reference.jpg"), res = img.get_normalize(); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_normalize.jpg + **/ + CImg& normalize() { + const ulongT whd = (ulongT)_width*_height*_depth; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + T *ptrd = data(0,y,z,0); + cimg_forX(*this,x) { + const T *ptrs = ptrd; + float n = 0; + cimg_forC(*this,c) { n+=cimg::sqr((float)*ptrs); ptrs+=whd; } + n = (float)std::sqrt(n); + T *_ptrd = ptrd++; + if (n>0) cimg_forC(*this,c) { *_ptrd = (T)(*_ptrd/n); _ptrd+=whd; } + else cimg_forC(*this,c) { *_ptrd = (T)0; _ptrd+=whd; } + } + } + return *this; + } + + //! Normalize multi-valued pixels of the image instance, with respect to their L2-norm \newinstance. + CImg get_normalize() const { + return CImg(*this,false).normalize(); + } + + //! Compute Lp-norm of each multi-valued pixel of the image instance. + /** + \param norm_type Type of computed vector norm (can be \p -1=Linf, or \p greater or equal than 0). + \par Example + \code + const CImg img("reference.jpg"), res = img.get_norm(); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_norm.jpg + **/ + CImg& norm(const int norm_type=2) { + if (_spectrum==1 && norm_type) return abs(); + return get_norm(norm_type).move_to(*this); + } + + //! Compute L2-norm of each multi-valued pixel of the image instance \newinstance. + CImg get_norm(const int norm_type=2) const { + if (is_empty()) return *this; + if (_spectrum==1 && norm_type) return get_abs(); + const ulongT whd = (ulongT)_width*_height*_depth; + CImg res(_width,_height,_depth); + switch (norm_type) { + case -1 : { // Linf-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { const Tfloat val = (Tfloat)cimg::abs(*_ptrs); if (val>n) n = val; _ptrs+=whd; } + *(ptrd++) = n; + } + } + } break; + case 0 : { // L0-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + unsigned int n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=*_ptrs==0?0:1; _ptrs+=whd; } + *(ptrd++) = (Tfloat)n; + } + } + } break; + case 1 : { // L1-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=cimg::abs(*_ptrs); _ptrs+=whd; } + *(ptrd++) = n; + } + } + } break; + case 2 : { // L2-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=cimg::sqr((Tfloat)*_ptrs); _ptrs+=whd; } + *(ptrd++) = (Tfloat)std::sqrt((Tfloat)n); + } + } + } break; + default : { // Linf-norm + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16)) + cimg_forYZ(*this,y,z) { + const ulongT off = (ulongT)offset(0,y,z); + const T *ptrs = _data + off; + Tfloat *ptrd = res._data + off; + cimg_forX(*this,x) { + Tfloat n = 0; + const T *_ptrs = ptrs++; + cimg_forC(*this,c) { n+=std::pow(cimg::abs((Tfloat)*_ptrs),(Tfloat)norm_type); _ptrs+=whd; } + *(ptrd++) = (Tfloat)std::pow((Tfloat)n,1/(Tfloat)norm_type); + } + } + } + } + return res; + } + + //! Cut pixel values in specified range. + /** + \param min_value Minimum desired value of the resulting image. + \param max_value Maximum desired value of the resulting image. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_cut(160,220); + (img,res).display(); + \endcode + \image html ref_cut.jpg + **/ + CImg& cut(const T& min_value, const T& max_value) { + if (is_empty()) return *this; + const T a = min_value get_cut(const T& min_value, const T& max_value) const { + return (+*this).cut(min_value,max_value); + } + + //! Uniformly quantize pixel values. + /** + \param nb_levels Number of quantization levels. + \param keep_range Tells if resulting values keep the same range as the original ones. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_quantize(4); + (img,res).display(); + \endcode + \image html ref_quantize.jpg + **/ + CImg& quantize(const unsigned int nb_levels, const bool keep_range=true) { + if (!nb_levels) + throw CImgArgumentException(_cimg_instance + "quantize(): Invalid quantization request with 0 values.", + cimg_instance); + + if (is_empty()) return *this; + Tfloat m, M = (Tfloat)max_min(m), range = M - m; + if (range>0) { + if (keep_range) + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const unsigned int val = (unsigned int)((_data[off] - m)*nb_levels/range); + _data[off] = (T)(m + std::min(val,nb_levels - 1)*range/nb_levels); + } else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const unsigned int val = (unsigned int)((_data[off] - m)*nb_levels/range); + _data[off] = (T)std::min(val,nb_levels - 1); + } + } + return *this; + } + + //! Uniformly quantize pixel values \newinstance. + CImg get_quantize(const unsigned int n, const bool keep_range=true) const { + return (+*this).quantize(n,keep_range); + } + + //! Threshold pixel values. + /** + \param value Threshold value + \param soft_threshold Tells if soft thresholding must be applied (instead of hard one). + \param strict_threshold Tells if threshold value is strict. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_threshold(128); + (img,res.normalize(0,255)).display(); + \endcode + \image html ref_threshold.jpg + **/ + CImg& threshold(const T& value, const bool soft_threshold=false, const bool strict_threshold=false) { + if (is_empty()) return *this; + if (strict_threshold) { + if (soft_threshold) + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const T v = _data[off]; + _data[off] = v>value?(T)(v-value):v<-(float)value?(T)(v + value):(T)0; + } + else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),65536)) + cimg_rofoff(*this,off) _data[off] = _data[off]>value?(T)1:(T)0; + } else { + if (soft_threshold) + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32768)) + cimg_rofoff(*this,off) { + const T v = _data[off]; + _data[off] = v>=value?(T)(v-value):v<=-(float)value?(T)(v + value):(T)0; + } + else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),65536)) + cimg_rofoff(*this,off) _data[off] = _data[off]>=value?(T)1:(T)0; + } + return *this; + } + + //! Threshold pixel values \newinstance. + CImg get_threshold(const T& value, const bool soft_threshold=false, const bool strict_threshold=false) const { + return (+*this).threshold(value,soft_threshold,strict_threshold); + } + + //! Compute the histogram of pixel values. + /** + \param nb_levels Number of desired histogram levels. + \param min_value Minimum pixel value considered for the histogram computation. + All pixel values lower than \p min_value will not be counted. + \param max_value Maximum pixel value considered for the histogram computation. + All pixel values higher than \p max_value will not be counted. + \note + - The histogram H of an image I is the 1D function where H(x) counts the number of occurrences of the value x + in the image I. + - The resulting histogram is always defined in 1D. Histograms of multi-valued images are not multi-dimensional. + \par Example + \code + const CImg img = CImg("reference.jpg").histogram(256); + img.display_graph(0,3); + \endcode + \image html ref_histogram.jpg + **/ + CImg& histogram(const unsigned int nb_levels, const T& min_value, const T& max_value) { + return get_histogram(nb_levels,min_value,max_value).move_to(*this); + } + + //! Compute the histogram of pixel values \overloading. + CImg& histogram(const unsigned int nb_levels) { + return get_histogram(nb_levels).move_to(*this); + } + + //! Compute the histogram of pixel values \newinstance. + CImg get_histogram(const unsigned int nb_levels, const T& min_value, const T& max_value) const { + if (!nb_levels || is_empty()) return CImg(); + const double + vmin = (double)(min_value res(nb_levels,1,1,1,0); + cimg_rof(*this,ptrs,T) { + const T val = *ptrs; + if (val>=vmin && val<=vmax) ++res[val==vmax?nb_levels - 1:(unsigned int)((val - vmin)*nb_levels/(vmax - vmin))]; + } + return res; + } + + //! Compute the histogram of pixel values \newinstance. + CImg get_histogram(const unsigned int nb_levels) const { + if (!nb_levels || is_empty()) return CImg(); + T vmax = 0, vmin = min_max(vmax); + return get_histogram(nb_levels,vmin,vmax); + } + + //! Equalize histogram of pixel values. + /** + \param nb_levels Number of histogram levels used for the equalization. + \param min_value Minimum pixel value considered for the histogram computation. + All pixel values lower than \p min_value will not be counted. + \param max_value Maximum pixel value considered for the histogram computation. + All pixel values higher than \p max_value will not be counted. + \par Example + \code + const CImg img("reference.jpg"), res = img.get_equalize(256); + (img,res).display(); + \endcode + \image html ref_equalize.jpg + **/ + CImg& equalize(const unsigned int nb_levels, const T& min_value, const T& max_value) { + if (!nb_levels || is_empty()) return *this; + const T + vmin = min_value hist = get_histogram(nb_levels,vmin,vmax); + ulongT cumul = 0; + cimg_forX(hist,pos) { cumul+=hist[pos]; hist[pos] = cumul; } + if (!cumul) cumul = 1; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),1048576)) + cimg_rofoff(*this,off) { + const int pos = (int)((_data[off] - vmin)*(nb_levels - 1.)/(vmax - vmin)); + if (pos>=0 && pos<(int)nb_levels) _data[off] = (T)(vmin + (vmax - vmin)*hist[pos]/cumul); + } + return *this; + } + + //! Equalize histogram of pixel values \overloading. + CImg& equalize(const unsigned int nb_levels) { + if (!nb_levels || is_empty()) return *this; + T vmax = 0, vmin = min_max(vmax); + return equalize(nb_levels,vmin,vmax); + } + + //! Equalize histogram of pixel values \newinstance. + CImg get_equalize(const unsigned int nblevels, const T& val_min, const T& val_max) const { + return (+*this).equalize(nblevels,val_min,val_max); + } + + //! Equalize histogram of pixel values \newinstance. + CImg get_equalize(const unsigned int nblevels) const { + return (+*this).equalize(nblevels); + } + + //! Index multi-valued pixels regarding to a specified colormap. + /** + \param colormap Multi-valued colormap used as the basis for multi-valued pixel indexing. + \param dithering Level of dithering (0=disable, 1=standard level). + \param map_indexes Tell if the values of the resulting image are the colormap indices or the colormap vectors. + \note + - \p img.index(colormap,dithering,1) is equivalent to img.index(colormap,dithering,0).map(colormap). + \par Example + \code + const CImg img("reference.jpg"), colormap(3,1,1,3, 0,128,255, 0,128,255, 0,128,255); + const CImg res = img.get_index(colormap,1,true); + (img,res).display(); + \endcode + \image html ref_index.jpg + **/ + template + CImg& index(const CImg& colormap, const float dithering=1, const bool map_indexes=false) { + return get_index(colormap,dithering,map_indexes).move_to(*this); + } + + //! Index multi-valued pixels regarding to a specified colormap \newinstance. + template + CImg::Tuint> + get_index(const CImg& colormap, const float dithering=1, const bool map_indexes=true) const { + if (colormap._spectrum!=_spectrum) + throw CImgArgumentException(_cimg_instance + "index(): Instance and specified colormap (%u,%u,%u,%u,%p) " + "have incompatible dimensions.", + cimg_instance, + colormap._width,colormap._height,colormap._depth,colormap._spectrum,colormap._data); + + typedef typename CImg::Tuint tuint; + if (is_empty()) return CImg(); + const ulongT + whd = (ulongT)_width*_height*_depth, + pwhd = (ulongT)colormap._width*colormap._height*colormap._depth; + CImg res(_width,_height,_depth,map_indexes?_spectrum:1); + if (dithering>0) { // Dithered versions + tuint *ptrd = res._data; + const float ndithering = cimg::cut(dithering,0,1)/16; + Tfloat valm = 0, valM = (Tfloat)max_min(valm); + if (valm==valM && valm>=0 && valM<=255) { valm = 0; valM = 255; } + CImg cache = get_crop(-1,0,0,0,_width,1,0,_spectrum - 1); + Tfloat *cache_current = cache.data(1,0,0,0), *cache_next = cache.data(1,1,0,0); + const ulongT cwhd = (ulongT)cache._width*cache._height*cache._depth; + switch (_spectrum) { + case 1 : { // Optimized for scalars + cimg_forYZ(*this,y,z) { + if (yvalM?valM:_val0; + Tfloat distmin = cimg::type::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp_end = ptrp0 + pwhd; ptrp0valM?valM:_val0, + _val1 = (Tfloat)*ptrs1, val1 = _val1valM?valM:_val1; + Tfloat distmin = cimg::type::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp_end = ptrp1; ptrp0valM?valM:_val0, + _val1 = (Tfloat)*ptrs1, val1 = _val1valM?valM:_val1, + _val2 = (Tfloat)*ptrs2, val2 = _val2valM?valM:_val2; + Tfloat distmin = cimg::type::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp2 = ptrp1 + pwhd, + *ptrp_end = ptrp1; ptrp0::max(); const t *ptrmin = colormap._data; + for (const t *ptrp = colormap._data, *ptrp_end = ptrp + pwhd; ptrpvalM?valM:_val; + dist+=cimg::sqr((*_ptrs=val) - (Tfloat)*_ptrp); _ptrs+=cwhd; _ptrp+=pwhd; + } + if (dist=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z); + for (const T *ptrs0 = data(0,y,z), *ptrs_end = ptrs0 + _width; ptrs0::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp_end = ptrp0 + pwhd; ptrp0=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z), *ptrd1 = ptrd + whd; + for (const T *ptrs0 = data(0,y,z), *ptrs1 = ptrs0 + whd, *ptrs_end = ptrs0 + _width; ptrs0::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp_end = ptrp1; ptrp0=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z), *ptrd1 = ptrd + whd, *ptrd2 = ptrd1 + whd; + for (const T *ptrs0 = data(0,y,z), *ptrs1 = ptrs0 + whd, *ptrs2 = ptrs1 + whd, + *ptrs_end = ptrs0 + _width; ptrs0::max(); const t *ptrmin0 = colormap._data; + for (const t *ptrp0 = colormap._data, *ptrp1 = ptrp0 + pwhd, *ptrp2 = ptrp1 + pwhd, + *ptrp_end = ptrp1; ptrp0=(cimg_openmp_sizefactor)*64 && + _height*_depth>=16 && pwhd>=16)) + cimg_forYZ(*this,y,z) { + tuint *ptrd = res.data(0,y,z); + for (const T *ptrs = data(0,y,z), *ptrs_end = ptrs + _width; ptrs::max(); const t *ptrmin = colormap._data; + for (const t *ptrp = colormap._data, *ptrp_end = ptrp + pwhd; ptrp img("reference.jpg"), + colormap1(3,1,1,3, 0,128,255, 0,128,255, 0,128,255), + colormap2(3,1,1,3, 255,0,0, 0,255,0, 0,0,255), + res = img.get_index(colormap1,0).map(colormap2); + (img,res).display(); + \endcode + \image html ref_map.jpg + **/ + template + CImg& map(const CImg& colormap, const unsigned int boundary_conditions=0) { + return get_map(colormap,boundary_conditions).move_to(*this); + } + + //! Map predefined colormap on the scalar (indexed) image instance \newinstance. + template + CImg get_map(const CImg& colormap, const unsigned int boundary_conditions=0) const { + const ulongT + whd = (ulongT)_width*_height*_depth, siz = size(), + cwhd = (ulongT)colormap._width*colormap._height*colormap._depth, + cwhd2 = 2*cwhd; + CImg res(_width,_height,_depth,_spectrum*colormap._spectrum); + switch (colormap._spectrum) { + + case 1 : { // Optimized for scalars + switch (boundary_conditions) { + case 3 : // Mirror + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),256)) + for (longT off = 0; off<(longT)siz; ++off) { + const ulongT ind = ((ulongT)_data[off])%cwhd2; + res[off] = colormap[ind& label(const bool is_high_connectivity=false, const Tfloat tolerance=0, + const bool is_L2_norm=true) { + if (is_empty()) return *this; + return get_label(is_high_connectivity,tolerance,is_L2_norm).move_to(*this); + } + + //! Label connected components \newinstance. + CImg get_label(const bool is_high_connectivity=false, const Tfloat tolerance=0, + const bool is_L2_norm=true) const { + if (is_empty()) return CImg(); + + // Create neighborhood tables. + int dx[13], dy[13], dz[13], nb = 0; + dx[nb] = 1; dy[nb] = 0; dz[nb++] = 0; + dx[nb] = 0; dy[nb] = 1; dz[nb++] = 0; + if (is_high_connectivity) { + dx[nb] = 1; dy[nb] = 1; dz[nb++] = 0; + dx[nb] = 1; dy[nb] = -1; dz[nb++] = 0; + } + if (_depth>1) { // 3D version + dx[nb] = 0; dy[nb] = 0; dz[nb++]=1; + if (is_high_connectivity) { + dx[nb] = 1; dy[nb] = 1; dz[nb++] = -1; + dx[nb] = 1; dy[nb] = 0; dz[nb++] = -1; + dx[nb] = 1; dy[nb] = -1; dz[nb++] = -1; + dx[nb] = 0; dy[nb] = 1; dz[nb++] = -1; + + dx[nb] = 0; dy[nb] = 1; dz[nb++] = 1; + dx[nb] = 1; dy[nb] = -1; dz[nb++] = 1; + dx[nb] = 1; dy[nb] = 0; dz[nb++] = 1; + dx[nb] = 1; dy[nb] = 1; dz[nb++] = 1; + } + } + return _label(nb,dx,dy,dz,tolerance,is_L2_norm); + } + + //! Label connected components \overloading. + /** + \param connectivity_mask Mask of the neighboring pixels. + \param tolerance Tolerance used to determine if two neighboring pixels belong to the same region. + \param is_L2_norm If true, tolerance is compared against L2 difference, otherwise L1 is used. + **/ + template + CImg& label(const CImg& connectivity_mask, const Tfloat tolerance=0, + const bool is_L2_norm=true) { + if (is_empty()) return *this; + return get_label(connectivity_mask,tolerance,is_L2_norm).move_to(*this); + } + + //! Label connected components \newinstance. + template + CImg get_label(const CImg& connectivity_mask, const Tfloat tolerance=0, + const bool is_L2_norm=true) const { + if (is_empty()) return CImg(); + int nb = 0; + cimg_for(connectivity_mask,ptr,t) if (*ptr) ++nb; + CImg dx(nb,1,1,1,0), dy(nb,1,1,1,0), dz(nb,1,1,1,0); + nb = 0; + cimg_forXYZ(connectivity_mask,x,y,z) if ((x || y || z) && + connectivity_mask(x,y,z)) { + dx[nb] = x; dy[nb] = y; dz[nb++] = z; + } + return _label(nb,dx,dy,dz,tolerance,is_L2_norm); + } + + CImg _label(const unsigned int nb, const int *const dx, + const int *const dy, const int *const dz, + const Tfloat tolerance, const bool is_L2_norm) const { + CImg res(_width,_height,_depth); + const Tfloat _tolerance = _spectrum>1 && is_L2_norm?cimg::sqr(tolerance):tolerance; + + // Init label numbers. + ulongT *ptr = res.data(); + cimg_foroff(res,p) *(ptr++) = p; + + // For each neighbour-direction, label. + for (unsigned int n = 0; n& _system_strescape() { +#define cimg_system_strescape(c,s) case c : if (p!=ptrs) CImg(ptrs,(unsigned int)(p-ptrs),1,1,1,false).\ + move_to(list); \ + CImg(s,(unsigned int)std::strlen(s),1,1,1,false).move_to(list); ptrs = p + 1; break + CImgList list; + const T *ptrs = _data; + cimg_for(*this,p,T) switch ((int)*p) { + cimg_system_strescape('\\',"\\\\"); + cimg_system_strescape('\"',"\\\""); + cimg_system_strescape('!',"\"\\!\""); + cimg_system_strescape('`',"\\`"); + cimg_system_strescape('$',"\\$"); + } + if (ptrs(ptrs,(unsigned int)(end()-ptrs),1,1,1,false).move_to(list); + return (list>'x').move_to(*this); + } + + //@} + //--------------------------------- + // + //! \name Color Base Management + //@{ + //--------------------------------- + + //! Return colormap \e "default", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_default.jpg + **/ + static const CImg& default_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,256,1,3); + for (unsigned int index = 0, r = 16; r<256; r+=32) + for (unsigned int g = 16; g<256; g+=32) + for (unsigned int b = 32; b<256; b+=64) { + colormap(0,index,0) = (Tuchar)r; + colormap(0,index,1) = (Tuchar)g; + colormap(0,index++,2) = (Tuchar)b; + } + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "HSV", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_hsv.jpg + **/ + static const CImg& HSV_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + CImg tmp(1,256,1,3,1); + tmp.get_shared_channel(0).sequence(0,359); + colormap = tmp.HSVtoRGB(); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "lines", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_lines.jpg + **/ + static const CImg& lines_LUT256() { + static const unsigned char pal[] = { + 0,255,255,0,0,28,125,125,235,210,186,182,36,0,125,255, + 53,32,255,210,89,186,65,45,125,210,210,97,130,194,0,125, + 206,53,190,89,255,146,20,190,154,73,255,36,130,215,0,138, + 101,210,61,194,206,0,77,45,255,154,174,0,190,239,89,125, + 16,36,158,223,117,0,97,69,223,255,40,239,0,0,255,0, + 97,170,93,255,138,40,117,210,0,170,53,158,186,255,0,121, + 227,121,186,40,20,190,89,255,77,57,130,142,255,73,186,85, + 210,8,32,166,243,130,210,40,255,45,61,142,223,49,121,255, + 20,162,158,73,89,255,53,138,210,190,57,235,36,73,255,49, + 210,0,210,85,57,97,255,121,85,174,40,255,162,178,0,121, + 166,125,53,146,166,255,97,121,65,89,235,231,12,170,36,190, + 85,255,166,97,198,77,20,146,109,166,255,28,40,202,121,81, + 247,0,210,255,49,0,65,255,36,166,93,77,255,85,251,0, + 170,178,0,182,255,0,162,16,154,142,162,223,223,0,0,81, + 215,4,215,162,215,125,77,206,121,36,125,231,101,16,255,121, + 0,57,190,215,65,125,89,142,255,101,73,53,146,223,125,125, + 0,255,0,255,0,206,93,138,49,255,0,202,154,85,45,219, + 251,53,0,255,40,130,219,158,16,117,186,130,202,49,65,239, + 89,202,49,28,247,134,150,0,255,117,202,4,215,81,186,57, + 202,89,73,210,40,93,45,251,206,28,223,142,40,134,162,125, + 32,247,97,170,0,255,57,134,73,247,162,0,251,40,142,142, + 8,166,206,81,154,194,93,89,125,243,28,109,227,0,190,65, + 194,186,0,255,53,45,109,186,186,0,255,130,49,170,69,210, + 154,0,109,227,45,255,125,105,81,81,255,0,219,134,170,85, + 146,28,170,89,223,97,8,210,255,158,49,40,125,174,174,125, + 0,227,166,28,219,130,0,93,239,0,85,255,81,178,125,49, + 89,255,53,206,73,113,146,255,0,150,36,219,162,0,210,125, + 69,134,255,85,40,89,235,49,215,121,0,206,36,223,174,69, + 40,182,178,130,69,45,255,210,85,77,215,0,231,146,0,194, + 125,174,0,255,40,89,121,206,57,0,206,170,231,150,81,0, + 125,255,4,174,4,190,121,255,4,166,109,130,49,239,170,93, + 16,174,210,0,255,16,105,158,93,255,0,125,0,255,158,85, + 0,255,0,0,255,170,166,61,121,28,198,215,45,243,61,97, + 255,53,81,130,109,255,8,117,235,121,40,178,174,0,182,49, + 162,121,255,69,206,0,219,125,0,101,255,239,121,32,210,130, + 36,231,32,125,81,142,215,158,4,178,255,0,40,251,125,125, + 219,89,130,0,166,255,24,65,194,125,255,125,77,125,93,125, + 202,24,138,174,178,32,255,85,194,40,85,36,174,174,125,210, + 85,255,53,16,93,206,40,130,170,202,93,255,0,24,117,255, + 97,113,105,81,255,186,194,57,69,206,57,53,223,190,4,255, + 85,97,130,255,85,0,125,223,85,219,0,215,146,77,40,239, + 89,36,142,154,227,0,255,85,162,0,162,0,235,178,45,166, + 0,247,255,20,69,210,89,142,53,255,40,146,166,255,69,0, + 174,154,142,130,162,0,215,255,0,89,40,255,166,61,146,69, + 162,40,255,32,121,255,117,178,0,186,206,0,57,215,215,81, + 158,77,166,210,77,89,210,0,24,202,150,186,0,255,20,97, + 57,170,235,251,16,73,142,251,93,0,202,0,255,121,219,4, + 73,219,8,162,206,16,219,93,117,0,255,8,130,174,223,45 }; + static const CImg colormap(pal,1,256,1,3,false); + return colormap; + } + + //! Return colormap \e "hot", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_hot.jpg + **/ + static const CImg& hot_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,4,1,3,(T)0); + colormap[1] = colormap[2] = colormap[3] = colormap[6] = colormap[7] = colormap[11] = 255; + colormap.resize(1,256,1,3,3); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "cool", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_cool.jpg + **/ + static const CImg& cool_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) colormap.assign(1,2,1,3).fill((T)0,(T)255,(T)255,(T)0,(T)255,(T)255).resize(1,256,1,3,3); + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "jet", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_jet.jpg + **/ + static const CImg& jet_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,4,1,3,(T)0); + colormap[2] = colormap[3] = colormap[5] = colormap[6] = colormap[8] = colormap[9] = 255; + colormap.resize(1,256,1,3,3); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "flag", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_flag.jpg + **/ + static const CImg& flag_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,4,1,3,(T)0); + colormap[0] = colormap[1] = colormap[5] = colormap[9] = colormap[10] = 255; + colormap.resize(1,256,1,3,0,2); + } + cimg::mutex(8,0); + return colormap; + } + + //! Return colormap \e "cube", containing 256 colors entries in RGB. + /** + \return The following \c 256x1x1x3 colormap is returned: + \image html ref_colormap_cube.jpg + **/ + static const CImg& cube_LUT256() { + static CImg colormap; + cimg::mutex(8); + if (!colormap) { + colormap.assign(1,8,1,3,(T)0); + colormap[1] = colormap[3] = colormap[5] = colormap[7] = + colormap[10] = colormap[11] = colormap[12] = colormap[13] = + colormap[20] = colormap[21] = colormap[22] = colormap[23] = 255; + colormap.resize(1,256,1,3,3); + } + cimg::mutex(8,0); + return colormap; + } + + //! Convert pixel values from sRGB to RGB color spaces. + CImg& sRGBtoRGB() { + if (is_empty()) return *this; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32)) + cimg_rofoff(*this,off) { + const Tfloat + sval = (Tfloat)_data[off]/255, + val = (Tfloat)(sval<=0.04045f?sval/12.92f:std::pow((sval + 0.055f)/(1.055f),2.4f)); + _data[off] = (T)cimg::cut(val*255,0,255); + } + return *this; + } + + //! Convert pixel values from sRGB to RGB color spaces \newinstance. + CImg get_sRGBtoRGB() const { + return CImg(*this,false).sRGBtoRGB(); + } + + //! Convert pixel values from RGB to sRGB color spaces. + CImg& RGBtosRGB() { + if (is_empty()) return *this; + cimg_pragma_openmp(parallel for cimg_openmp_if_size(size(),32)) + cimg_rofoff(*this,off) { + const Tfloat + val = (Tfloat)_data[off]/255, + sval = (Tfloat)(val<=0.0031308f?val*12.92f:1.055f*std::pow(val,0.416667f) - 0.055f); + _data[off] = (T)cimg::cut(sval*255,0,255); + } + return *this; + } + + //! Convert pixel values from RGB to sRGB color spaces \newinstance. + CImg get_RGBtosRGB() const { + return CImg(*this,false).RGBtosRGB(); + } + + //! Convert pixel values from RGB to HSI color spaces. + CImg& RGBtoHSI() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoHSI(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_RGBtoHSI() const { + return CImg(*this,false).RGBtoHSI(); + } + + //! Convert pixel values from HSI to RGB color spaces. + CImg& HSItoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "HSItoRGB(): Instance is not a HSI image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_HSItoRGB() const { + return CImg< Tuchar>(*this,false).HSItoRGB(); + } + + //! Convert pixel values from RGB to HSL color spaces. + CImg& RGBtoHSL() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoHSL(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_RGBtoHSL() const { + return CImg(*this,false).RGBtoHSL(); + } + + //! Convert pixel values from HSL to RGB color spaces. + CImg& HSLtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "HSLtoRGB(): Instance is not a HSL image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_HSLtoRGB() const { + return CImg(*this,false).HSLtoRGB(); + } + + //! Convert pixel values from RGB to HSV color spaces. + CImg& RGBtoHSV() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoHSV(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_RGBtoHSV() const { + return CImg(*this,false).RGBtoHSV(); + } + + //! Convert pixel values from HSV to RGB color spaces. + CImg& HSVtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "HSVtoRGB(): Instance is not a HSV image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,256)) + for (longT N = 0; N get_HSVtoRGB() const { + return CImg(*this,false).HSVtoRGB(); + } + + //! Convert pixel values from RGB to YCbCr color spaces. + CImg& RGBtoYCbCr() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoYCbCr(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,512)) + for (longT N = 0; N get_RGBtoYCbCr() const { + return CImg(*this,false).RGBtoYCbCr(); + } + + //! Convert pixel values from RGB to YCbCr color spaces. + CImg& YCbCrtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "YCbCrtoRGB(): Instance is not a YCbCr image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,512)) + for (longT N = 0; N get_YCbCrtoRGB() const { + return CImg(*this,false).YCbCrtoRGB(); + } + + //! Convert pixel values from RGB to YUV color spaces. + CImg& RGBtoYUV() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoYUV(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,16384)) + for (longT N = 0; N get_RGBtoYUV() const { + return CImg(*this,false).RGBtoYUV(); + } + + //! Convert pixel values from YUV to RGB color spaces. + CImg& YUVtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "YUVtoRGB(): Instance is not a YUV image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,16384)) + for (longT N = 0; N get_YUVtoRGB() const { + return CImg< Tuchar>(*this,false).YUVtoRGB(); + } + + //! Convert pixel values from RGB to CMY color spaces. + CImg& RGBtoCMY() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoCMY(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_RGBtoCMY() const { + return CImg(*this,false).RGBtoCMY(); + } + + //! Convert pixel values from CMY to RGB color spaces. + CImg& CMYtoRGB() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "CMYtoRGB(): Instance is not a CMY image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_CMYtoRGB() const { + return CImg(*this,false).CMYtoRGB(); + } + + //! Convert pixel values from CMY to CMYK color spaces. + CImg& CMYtoCMYK() { + return get_CMYtoCMYK().move_to(*this); + } + + //! Convert pixel values from CMY to CMYK color spaces \newinstance. + CImg get_CMYtoCMYK() const { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "CMYtoCMYK(): Instance is not a CMY image.", + cimg_instance); + + CImg res(_width,_height,_depth,4); + const T *ps1 = data(0,0,0,0), *ps2 = data(0,0,0,1), *ps3 = data(0,0,0,2); + Tfloat *pd1 = res.data(0,0,0,0), *pd2 = res.data(0,0,0,1), *pd3 = res.data(0,0,0,2), *pd4 = res.data(0,0,0,3); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,1024)) + for (longT N = 0; N=255) C = M = Y = 0; + else { const Tfloat K1 = 255 - K; C = 255*(C - K)/K1; M = 255*(M - K)/K1; Y = 255*(Y - K)/K1; } + pd1[N] = (Tfloat)cimg::cut(C,0,255), + pd2[N] = (Tfloat)cimg::cut(M,0,255), + pd3[N] = (Tfloat)cimg::cut(Y,0,255), + pd4[N] = (Tfloat)cimg::cut(K,0,255); + } + return res; + } + + //! Convert pixel values from CMYK to CMY color spaces. + CImg& CMYKtoCMY() { + return get_CMYKtoCMY().move_to(*this); + } + + //! Convert pixel values from CMYK to CMY color spaces \newinstance. + CImg get_CMYKtoCMY() const { + if (_spectrum!=4) + throw CImgInstanceException(_cimg_instance + "CMYKtoCMY(): Instance is not a CMYK image.", + cimg_instance); + + CImg res(_width,_height,_depth,3); + const T *ps1 = data(0,0,0,0), *ps2 = data(0,0,0,1), *ps3 = data(0,0,0,2), *ps4 = data(0,0,0,3); + Tfloat *pd1 = res.data(0,0,0,0), *pd2 = res.data(0,0,0,1), *pd3 = res.data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,1024)) + for (longT N = 0; N& RGBtoXYZ(const bool use_D65=true) { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "RGBtoXYZ(): Instance is not a RGB image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_RGBtoXYZ(const bool use_D65=true) const { + return CImg(*this,false).RGBtoXYZ(use_D65); + } + + //! Convert pixel values from XYZ to RGB color spaces. + /** + \param use_D65 Tell to use the D65 illuminant (D50 otherwise). + **/ + CImg& XYZtoRGB(const bool use_D65=true) { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "XYZtoRGB(): Instance is not a XYZ image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,2048)) + for (longT N = 0; N get_XYZtoRGB(const bool use_D65=true) const { + return CImg(*this,false).XYZtoRGB(use_D65); + } + + //! Convert pixel values from XYZ to Lab color spaces. + CImg& XYZtoLab(const bool use_D65=true) { +#define _cimg_Labf(x) (24389*(x)>216?cimg::cbrt(x):(24389*(x)/27 + 16)/116) + + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "XYZtoLab(): Instance is not a XYZ image.", + cimg_instance); + const CImg white = CImg(1,1,1,3,255).RGBtoXYZ(use_D65); + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,128)) + for (longT N = 0; N get_XYZtoLab(const bool use_D65=true) const { + return CImg(*this,false).XYZtoLab(use_D65); + } + + //! Convert pixel values from Lab to XYZ color spaces. + CImg& LabtoXYZ(const bool use_D65=true) { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "LabtoXYZ(): Instance is not a Lab image.", + cimg_instance); + const CImg white = CImg(1,1,1,3,255).RGBtoXYZ(use_D65); + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,128)) + for (longT N = 0; N216?cX*cX*cX:(116*cX - 16)*27/24389), + Y = (Tfloat)(27*L>216?cY*cY*cY:27*L/24389), + Z = (Tfloat)(24389*cZ>216?cZ*cZ*cZ:(116*cZ - 16)*27/24389); + p1[N] = (T)(X*white[0]); + p2[N] = (T)(Y*white[1]); + p3[N] = (T)(Z*white[2]); + } + return *this; + } + + //! Convert pixel values from Lab to XYZ color spaces \newinstance. + CImg get_LabtoXYZ(const bool use_D65=true) const { + return CImg(*this,false).LabtoXYZ(use_D65); + } + + //! Convert pixel values from XYZ to xyY color spaces. + CImg& XYZtoxyY() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "XYZtoxyY(): Instance is not a XYZ image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,4096)) + for (longT N = 0; N0?sum:1; + p1[N] = (T)(X/nsum); + p2[N] = (T)(Y/nsum); + p3[N] = (T)Y; + } + return *this; + } + + //! Convert pixel values from XYZ to xyY color spaces \newinstance. + CImg get_XYZtoxyY() const { + return CImg(*this,false).XYZtoxyY(); + } + + //! Convert pixel values from xyY pixels to XYZ color spaces. + CImg& xyYtoXYZ() { + if (_spectrum!=3) + throw CImgInstanceException(_cimg_instance + "xyYtoXYZ(): Instance is not a xyY image.", + cimg_instance); + + T *p1 = data(0,0,0,0), *p2 = data(0,0,0,1), *p3 = data(0,0,0,2); + const longT whd = (longT)width()*height()*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(whd,4096)) + for (longT N = 0; N0?py:1; + p1[N] = (T)(px*Y/ny); + p2[N] = (T)Y; + p3[N] = (T)((1 - px - py)*Y/ny); + } + return *this; + } + + //! Convert pixel values from xyY pixels to XYZ color spaces \newinstance. + CImg get_xyYtoXYZ() const { + return CImg(*this,false).xyYtoXYZ(); + } + + //! Convert pixel values from RGB to Lab color spaces. + CImg& RGBtoLab(const bool use_D65=true) { + return RGBtoXYZ(use_D65).XYZtoLab(use_D65); + } + + //! Convert pixel values from RGB to Lab color spaces \newinstance. + CImg get_RGBtoLab(const bool use_D65=true) const { + return CImg(*this,false).RGBtoLab(use_D65); + } + + //! Convert pixel values from Lab to RGB color spaces. + CImg& LabtoRGB(const bool use_D65=true) { + return LabtoXYZ().XYZtoRGB(use_D65); + } + + //! Convert pixel values from Lab to RGB color spaces \newinstance. + CImg get_LabtoRGB(const bool use_D65=true) const { + return CImg(*this,false).LabtoRGB(use_D65); + } + + //! Convert pixel values from RGB to xyY color spaces. + CImg& RGBtoxyY(const bool use_D65=true) { + return RGBtoXYZ(use_D65).XYZtoxyY(); + } + + //! Convert pixel values from RGB to xyY color spaces \newinstance. + CImg get_RGBtoxyY(const bool use_D65=true) const { + return CImg(*this,false).RGBtoxyY(use_D65); + } + + //! Convert pixel values from xyY to RGB color spaces. + CImg& xyYtoRGB(const bool use_D65=true) { + return xyYtoXYZ().XYZtoRGB(use_D65); + } + + //! Convert pixel values from xyY to RGB color spaces \newinstance. + CImg get_xyYtoRGB(const bool use_D65=true) const { + return CImg(*this,false).xyYtoRGB(use_D65); + } + + //! Convert pixel values from RGB to CMYK color spaces. + CImg& RGBtoCMYK() { + return RGBtoCMY().CMYtoCMYK(); + } + + //! Convert pixel values from RGB to CMYK color spaces \newinstance. + CImg get_RGBtoCMYK() const { + return CImg(*this,false).RGBtoCMYK(); + } + + //! Convert pixel values from CMYK to RGB color spaces. + CImg& CMYKtoRGB() { + return CMYKtoCMY().CMYtoRGB(); + } + + //! Convert pixel values from CMYK to RGB color spaces \newinstance. + CImg get_CMYKtoRGB() const { + return CImg(*this,false).CMYKtoRGB(); + } + + //@} + //------------------------------------------ + // + //! \name Geometric / Spatial Manipulation + //@{ + //------------------------------------------ + + static float _cimg_lanczos(const float x) { + if (x<=-2 || x>=2) return 0; + const float a = (float)cimg::PI*x, b = 0.5f*a; + return (float)(x?std::sin(a)*std::sin(b)/(a*b):1); + } + + //! Resize image to new dimensions. + /** + \param size_x Number of columns (new size along the X-axis). + \param size_y Number of rows (new size along the Y-axis). + \param size_z Number of slices (new size along the Z-axis). + \param size_c Number of vector-channels (new size along the C-axis). + \param interpolation_type Method of interpolation: + - -1 = no interpolation: raw memory resizing. + - 0 = no interpolation: additional space is filled according to \p boundary_conditions. + - 1 = nearest-neighbor interpolation. + - 2 = moving average interpolation. + - 3 = linear interpolation. + - 4 = grid interpolation. + - 5 = cubic interpolation. + - 6 = lanczos interpolation. + \param boundary_conditions Type of boundary conditions used if necessary. + \param centering_x Set centering type (only if \p interpolation_type=0). + \param centering_y Set centering type (only if \p interpolation_type=0). + \param centering_z Set centering type (only if \p interpolation_type=0). + \param centering_c Set centering type (only if \p interpolation_type=0). + \note If pd[x,y,z,v]<0, it corresponds to a percentage of the original size (the default value is -100). + **/ + CImg& resize(const int size_x, const int size_y=-100, + const int size_z=-100, const int size_c=-100, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) { + if (!size_x || !size_y || !size_z || !size_c) return assign(); + const unsigned int + _sx = (unsigned int)(size_x<0?-size_x*width()/100:size_x), + _sy = (unsigned int)(size_y<0?-size_y*height()/100:size_y), + _sz = (unsigned int)(size_z<0?-size_z*depth()/100:size_z), + _sc = (unsigned int)(size_c<0?-size_c*spectrum()/100:size_c), + sx = _sx?_sx:1, sy = _sy?_sy:1, sz = _sz?_sz:1, sc = _sc?_sc:1; + if (sx==_width && sy==_height && sz==_depth && sc==_spectrum) return *this; + if (is_empty()) return assign(sx,sy,sz,sc,(T)0); + if (interpolation_type==-1 && sx*sy*sz*sc==size()) { + _width = sx; _height = sy; _depth = sz; _spectrum = sc; + return *this; + } + return get_resize(sx,sy,sz,sc,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c).move_to(*this); + } + + //! Resize image to new dimensions \newinstance. + CImg get_resize(const int size_x, const int size_y = -100, + const int size_z = -100, const int size_c = -100, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) const { + if (centering_x<0 || centering_x>1 || centering_y<0 || centering_y>1 || + centering_z<0 || centering_z>1 || centering_c<0 || centering_c>1) + throw CImgArgumentException(_cimg_instance + "resize(): Specified centering arguments (%g,%g,%g,%g) are outside range [0,1].", + cimg_instance, + centering_x,centering_y,centering_z,centering_c); + + if (!size_x || !size_y || !size_z || !size_c) return CImg(); + const unsigned int + sx = std::max(1U,(unsigned int)(size_x>=0?size_x:-size_x*width()/100)), + sy = std::max(1U,(unsigned int)(size_y>=0?size_y:-size_y*height()/100)), + sz = std::max(1U,(unsigned int)(size_z>=0?size_z:-size_z*depth()/100)), + sc = std::max(1U,(unsigned int)(size_c>=0?size_c:-size_c*spectrum()/100)); + if (sx==_width && sy==_height && sz==_depth && sc==_spectrum) return +*this; + if (is_empty()) return CImg(sx,sy,sz,sc,(T)0); + CImg res; + switch (interpolation_type) { + + // Raw resizing. + // + case -1 : + std::memcpy(res.assign(sx,sy,sz,sc,(T)0)._data,_data,sizeof(T)*std::min(size(),(ulongT)sx*sy*sz*sc)); + break; + + // No interpolation. + // + case 0 : { + const int + xc = (int)(centering_x*((int)sx - width())), + yc = (int)(centering_y*((int)sy - height())), + zc = (int)(centering_z*((int)sz - depth())), + cc = (int)(centering_c*((int)sc - spectrum())); + + switch (boundary_conditions) { + case 3 : { // Mirror + res.assign(sx,sy,sz,sc); + const int w2 = 2*width(), h2 = 2*height(), d2 = 2*depth(), s2 = 2*spectrum(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),65536)) + cimg_forXYZC(res,x,y,z,c) { + const int + mx = cimg::mod(x - xc,w2), my = cimg::mod(y - yc,h2), + mz = cimg::mod(z - zc,d2), mc = cimg::mod(c - cc,s2); + res(x,y,z,c) = (*this)(mx sprite; + if (xc>0) { // X-backward + res.get_crop(xc,yc,zc,cc,xc,yc + height() - 1,zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int x = xc - 1; x>=0; --x) res.draw_image(x,yc,zc,cc,sprite); + } + if (xc + width()<(int)sx) { // X-forward + res.get_crop(xc + width() - 1,yc,zc,cc,xc + width() - 1,yc + height() - 1, + zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int x = xc + width(); x<(int)sx; ++x) res.draw_image(x,yc,zc,cc,sprite); + } + if (yc>0) { // Y-backward + res.get_crop(0,yc,zc,cc,sx - 1,yc,zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int y = yc - 1; y>=0; --y) res.draw_image(0,y,zc,cc,sprite); + } + if (yc + height()<(int)sy) { // Y-forward + res.get_crop(0,yc + height() - 1,zc,cc,sx - 1,yc + height() - 1, + zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int y = yc + height(); y<(int)sy; ++y) res.draw_image(0,y,zc,cc,sprite); + } + if (zc>0) { // Z-backward + res.get_crop(0,0,zc,cc,sx - 1,sy - 1,zc,cc + spectrum() - 1).move_to(sprite); + for (int z = zc - 1; z>=0; --z) res.draw_image(0,0,z,cc,sprite); + } + if (zc + depth()<(int)sz) { // Z-forward + res.get_crop(0,0,zc +depth() - 1,cc,sx - 1,sy - 1,zc + depth() - 1,cc + spectrum() - 1).move_to(sprite); + for (int z = zc + depth(); z<(int)sz; ++z) res.draw_image(0,0,z,cc,sprite); + } + if (cc>0) { // C-backward + res.get_crop(0,0,0,cc,sx - 1,sy - 1,sz - 1,cc).move_to(sprite); + for (int c = cc - 1; c>=0; --c) res.draw_image(0,0,0,c,sprite); + } + if (cc + spectrum()<(int)sc) { // C-forward + res.get_crop(0,0,0,cc + spectrum() - 1,sx - 1,sy - 1,sz - 1,cc + spectrum() - 1).move_to(sprite); + for (int c = cc + spectrum(); c<(int)sc; ++c) res.draw_image(0,0,0,c,sprite); + } + } break; + default : // Dirichlet + res.assign(sx,sy,sz,sc,(T)0).draw_image(xc,yc,zc,cc,*this); + } + break; + } break; + + // Nearest neighbor interpolation. + // + case 1 : { + res.assign(sx,sy,sz,sc); + CImg off_x(sx), off_y(sy + 1), off_z(sz + 1), off_c(sc + 1); + const ulongT + wh = (ulongT)_width*_height, + whd = (ulongT)_width*_height*_depth, + sxy = (ulongT)sx*sy, + sxyz = (ulongT)sx*sy*sz, + one = (ulongT)1; + if (sx==_width) off_x.fill(1); + else { + ulongT *poff_x = off_x._data, curr = 0; + cimg_forX(res,x) { + const ulongT old = curr; + curr = (x + one)*_width/sx; + *(poff_x++) = curr - old; + } + } + if (sy==_height) off_y.fill(_width); + else { + ulongT *poff_y = off_y._data, curr = 0; + cimg_forY(res,y) { + const ulongT old = curr; + curr = (y + one)*_height/sy; + *(poff_y++) = _width*(curr - old); + } + *poff_y = 0; + } + if (sz==_depth) off_z.fill(wh); + else { + ulongT *poff_z = off_z._data, curr = 0; + cimg_forZ(res,z) { + const ulongT old = curr; + curr = (z + one)*_depth/sz; + *(poff_z++) = wh*(curr - old); + } + *poff_z = 0; + } + if (sc==_spectrum) off_c.fill(whd); + else { + ulongT *poff_c = off_c._data, curr = 0; + cimg_forC(res,c) { + const ulongT old = curr; + curr = (c + one)*_spectrum/sc; + *(poff_c++) = whd*(curr - old); + } + *poff_c = 0; + } + + T *ptrd = res._data; + const T* ptrc = _data; + const ulongT *poff_c = off_c._data; + for (unsigned int c = 0; c tmp(sx,_height,_depth,_spectrum,0); + for (unsigned int a = _width*sx, b = _width, c = sx, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + cimg_forYZC(tmp,y,z,v) tmp(t,y,z,v)+=(Tfloat)(*this)(s,y,z,v)*d; + if (!b) { + cimg_forYZC(tmp,y,z,v) tmp(t,y,z,v)/=_width; + ++t; + b = _width; + } + if (!c) { ++s; c = sx; } + } + tmp.move_to(res); + instance_first = false; + } + if (sy!=_height) { + CImg tmp(sx,sy,_depth,_spectrum,0); + for (unsigned int a = _height*sy, b = _height, c = sy, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + if (instance_first) + cimg_forXZC(tmp,x,z,v) tmp(x,t,z,v)+=(Tfloat)(*this)(x,s,z,v)*d; + else + cimg_forXZC(tmp,x,z,v) tmp(x,t,z,v)+=(Tfloat)res(x,s,z,v)*d; + if (!b) { + cimg_forXZC(tmp,x,z,v) tmp(x,t,z,v)/=_height; + ++t; + b = _height; + } + if (!c) { ++s; c = sy; } + } + tmp.move_to(res); + instance_first = false; + } + if (sz!=_depth) { + CImg tmp(sx,sy,sz,_spectrum,0); + for (unsigned int a = _depth*sz, b = _depth, c = sz, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + if (instance_first) + cimg_forXYC(tmp,x,y,v) tmp(x,y,t,v)+=(Tfloat)(*this)(x,y,s,v)*d; + else + cimg_forXYC(tmp,x,y,v) tmp(x,y,t,v)+=(Tfloat)res(x,y,s,v)*d; + if (!b) { + cimg_forXYC(tmp,x,y,v) tmp(x,y,t,v)/=_depth; + ++t; + b = _depth; + } + if (!c) { ++s; c = sz; } + } + tmp.move_to(res); + instance_first = false; + } + if (sc!=_spectrum) { + CImg tmp(sx,sy,sz,sc,0); + for (unsigned int a = _spectrum*sc, b = _spectrum, c = sc, s = 0, t = 0; a; ) { + const unsigned int d = std::min(b,c); + a-=d; b-=d; c-=d; + if (instance_first) + cimg_forXYZ(tmp,x,y,z) tmp(x,y,z,t)+=(Tfloat)(*this)(x,y,z,s)*d; + else + cimg_forXYZ(tmp,x,y,z) tmp(x,y,z,t)+=(Tfloat)res(x,y,z,s)*d; + if (!b) { + cimg_forXYZ(tmp,x,y,z) tmp(x,y,z,t)/=_spectrum; + ++t; + b = _spectrum; + } + if (!c) { ++s; c = sc; } + } + tmp.move_to(res); + instance_first = false; + } + } break; + + // Linear interpolation. + // + case 3 : { + CImg off(cimg::max(sx,sy,sz,sc)); + CImg foff(off._width); + CImg resx, resy, resz, resc; + double curr, old; + + if (sx!=_width) { + if (_width==1) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else if (_width>sx) get_resize(sx,_height,_depth,_spectrum,2).move_to(resx); + else { + const double fx = (!boundary_conditions && sx>_width)?(sx>1?(_width - 1.)/(sx - 1):0): + (double)_width/sx; + resx.assign(sx,_height,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forX(resx,x) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(width() - 1.,curr + fx); + *(poff++) = (unsigned int)curr - (unsigned int)old; + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resx.size(),65536)) + cimg_forYZC(resx,y,z,c) { + const T *ptrs = data(0,y,z,c), *const ptrsmax = ptrs + _width - 1; + T *ptrd = resx.data(0,y,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forX(resx,x) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrssy) resx.get_resize(sx,sy,_depth,_spectrum,2).move_to(resy); + else { + const double fy = (!boundary_conditions && sy>_height)?(sy>1?(_height - 1.)/(sy - 1):0): + (double)_height/sy; + resy.assign(sx,sy,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forY(resy,y) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(height() - 1.,curr + fy); + *(poff++) = sx*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resy.size(),65536)) + cimg_forXZC(resy,x,z,c) { + const T *ptrs = resx.data(x,0,z,c), *const ptrsmax = ptrs + (_height - 1)*sx; + T *ptrd = resy.data(x,0,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forY(resy,y) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrssz) resy.get_resize(sx,sy,sz,_spectrum,2).move_to(resz); + else { + const double fz = (!boundary_conditions && sz>_depth)?(sz>1?(_depth - 1.)/(sz - 1):0): + (double)_depth/sz; + const unsigned int sxy = sx*sy; + resz.assign(sx,sy,sz,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forZ(resz,z) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(depth() - 1.,curr + fz); + *(poff++) = sxy*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resz.size(),65536)) + cimg_forXYC(resz,x,y,c) { + const T *ptrs = resy.data(x,y,0,c), *const ptrsmax = ptrs + (_depth - 1)*sxy; + T *ptrd = resz.data(x,y,0,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forZ(resz,z) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrssc) resz.get_resize(sx,sy,sz,sc,2).move_to(resc); + else { + const double fc = (!boundary_conditions && sc>_spectrum)?(sc>1?(_spectrum - 1.)/(sc - 1):0): + (double)_spectrum/sc; + const unsigned int sxyz = sx*sy*sz; + resc.assign(sx,sy,sz,sc); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forC(resc,c) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(spectrum() - 1.,curr + fc); + *(poff++) = sxyz*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resc.size(),65536)) + cimg_forXYZ(resc,x,y,z) { + const T *ptrs = resz.data(x,y,z,0), *const ptrsmax = ptrs + (_spectrum - 1)*sxyz; + T *ptrd = resc.data(x,y,z,0); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forC(resc,c) { + const double alpha = *(pfoff++); + const T val1 = *ptrs, val2 = ptrs resx, resy, resz, resc; + if (sx!=_width) { + if (sx<_width) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else { + resx.assign(sx,_height,_depth,_spectrum,(T)0); + const int dx = (int)(2*sx), dy = 2*width(); + int err = (int)(dy + centering_x*(sx*dy/width() - dy)), xs = 0; + cimg_forX(resx,x) if ((err-=dy)<=0) { + cimg_forYZC(resx,y,z,c) resx(x,y,z,c) = (*this)(xs,y,z,c); + ++xs; + err+=dx; + } + } + } else resx.assign(*this,true); + + if (sy!=_height) { + if (sy<_height) resx.get_resize(sx,sy,_depth,_spectrum,1).move_to(resy); + else { + resy.assign(sx,sy,_depth,_spectrum,(T)0); + const int dx = (int)(2*sy), dy = 2*height(); + int err = (int)(dy + centering_y*(sy*dy/height() - dy)), ys = 0; + cimg_forY(resy,y) if ((err-=dy)<=0) { + cimg_forXZC(resy,x,z,c) resy(x,y,z,c) = resx(x,ys,z,c); + ++ys; + err+=dx; + } + } + resx.assign(); + } else resy.assign(resx,true); + + if (sz!=_depth) { + if (sz<_depth) resy.get_resize(sx,sy,sz,_spectrum,1).move_to(resz); + else { + resz.assign(sx,sy,sz,_spectrum,(T)0); + const int dx = (int)(2*sz), dy = 2*depth(); + int err = (int)(dy + centering_z*(sz*dy/depth() - dy)), zs = 0; + cimg_forZ(resz,z) if ((err-=dy)<=0) { + cimg_forXYC(resz,x,y,c) resz(x,y,z,c) = resy(x,y,zs,c); + ++zs; + err+=dx; + } + } + resy.assign(); + } else resz.assign(resy,true); + + if (sc!=_spectrum) { + if (sc<_spectrum) resz.get_resize(sx,sy,sz,sc,1).move_to(resc); + else { + resc.assign(sx,sy,sz,sc,(T)0); + const int dx = (int)(2*sc), dy = 2*spectrum(); + int err = (int)(dy + centering_c*(sc*dy/spectrum() - dy)), cs = 0; + cimg_forC(resc,c) if ((err-=dy)<=0) { + cimg_forXYZ(resc,x,y,z) resc(x,y,z,c) = resz(x,y,z,cs); + ++cs; + err+=dx; + } + } + resz.assign(); + } else resc.assign(resz,true); + + return resc._is_shared?(resz._is_shared?(resy._is_shared?(resx._is_shared?(+(*this)):resx):resy):resz):resc; + } break; + + // Cubic interpolation. + // + case 5 : { + const Tfloat vmin = (Tfloat)cimg::type::min(), vmax = (Tfloat)cimg::type::max(); + CImg off(cimg::max(sx,sy,sz,sc)); + CImg foff(off._width); + CImg resx, resy, resz, resc; + double curr, old; + + if (sx!=_width) { + if (_width==1) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else { + if (_width>sx) get_resize(sx,_height,_depth,_spectrum,2).move_to(resx); + else { + const double fx = (!boundary_conditions && sx>_width)?(sx>1?(_width - 1.)/(sx - 1):0): + (double)_width/sx; + resx.assign(sx,_height,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forX(resx,x) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(width() - 1.,curr + fx); + *(poff++) = (unsigned int)curr - (unsigned int)old; + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resx.size(),65536)) + cimg_forYZC(resx,y,z,c) { + const T *const ptrs0 = data(0,y,z,c), *ptrs = ptrs0, *const ptrsmax = ptrs + (_width - 2); + T *ptrd = resx.data(0,y,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forX(resx,x) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - 1):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + 1):val1, + val3 = ptrsvmax?vmax:val); + ptrs+=*(poff++); + } + } + } + } + } else resx.assign(*this,true); + + if (sy!=_height) { + if (_height==1) resx.get_resize(sx,sy,_depth,_spectrum,1).move_to(resy); + else { + if (_height>sy) resx.get_resize(sx,sy,_depth,_spectrum,2).move_to(resy); + else { + const double fy = (!boundary_conditions && sy>_height)?(sy>1?(_height - 1.)/(sy - 1):0): + (double)_height/sy; + resy.assign(sx,sy,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forY(resy,y) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(height() - 1.,curr + fy); + *(poff++) = sx*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resy.size(),65536)) + cimg_forXZC(resy,x,z,c) { + const T *const ptrs0 = resx.data(x,0,z,c), *ptrs = ptrs0, *const ptrsmax = ptrs + (_height - 2)*sx; + T *ptrd = resy.data(x,0,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forY(resy,y) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - sx):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + sx):val1, + val3 = ptrsvmax?vmax:val); + ptrd+=sx; + ptrs+=*(poff++); + } + } + } + } + resx.assign(); + } else resy.assign(resx,true); + + if (sz!=_depth) { + if (_depth==1) resy.get_resize(sx,sy,sz,_spectrum,1).move_to(resz); + else { + if (_depth>sz) resy.get_resize(sx,sy,sz,_spectrum,2).move_to(resz); + else { + const double fz = (!boundary_conditions && sz>_depth)?(sz>1?(_depth - 1.)/(sz - 1):0): + (double)_depth/sz; + const unsigned int sxy = sx*sy; + resz.assign(sx,sy,sz,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forZ(resz,z) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(depth() - 1.,curr + fz); + *(poff++) = sxy*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resz.size(),65536)) + cimg_forXYC(resz,x,y,c) { + const T *const ptrs0 = resy.data(x,y,0,c), *ptrs = ptrs0, *const ptrsmax = ptrs + (_depth - 2)*sxy; + T *ptrd = resz.data(x,y,0,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forZ(resz,z) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - sxy):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + sxy):val1, + val3 = ptrsvmax?vmax:val); + ptrd+=sxy; + ptrs+=*(poff++); + } + } + } + } + resy.assign(); + } else resz.assign(resy,true); + + if (sc!=_spectrum) { + if (_spectrum==1) resz.get_resize(sx,sy,sz,sc,1).move_to(resc); + else { + if (_spectrum>sc) resz.get_resize(sx,sy,sz,sc,2).move_to(resc); + else { + const double fc = (!boundary_conditions && sc>_spectrum)?(sc>1?(_spectrum - 1.)/(sc - 1):0): + (double)_spectrum/sc; + const unsigned int sxyz = sx*sy*sz; + resc.assign(sx,sy,sz,sc); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forC(resc,c) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(spectrum() - 1.,curr + fc); + *(poff++) = sxyz*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resc.size(),65536)) + cimg_forXYZ(resc,x,y,z) { + const T *const ptrs0 = resz.data(x,y,z,0), *ptrs = ptrs0, *const ptrsmax = ptrs + (_spectrum - 2)*sxyz; + T *ptrd = resc.data(x,y,z,0); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forC(resc,c) { + const double + t = *(pfoff++), + val1 = (double)*ptrs, + val0 = ptrs>ptrs0?(double)*(ptrs - sxyz):val1, + val2 = ptrs<=ptrsmax?(double)*(ptrs + sxyz):val1, + val3 = ptrsvmax?vmax:val); + ptrd+=sxyz; + ptrs+=*(poff++); + } + } + } + } + resz.assign(); + } else resc.assign(resz,true); + + return resc._is_shared?(resz._is_shared?(resy._is_shared?(resx._is_shared?(+(*this)):resx):resy):resz):resc; + } break; + + // Lanczos interpolation. + // + case 6 : { + const double vmin = (double)cimg::type::min(), vmax = (double)cimg::type::max(); + CImg off(cimg::max(sx,sy,sz,sc)); + CImg foff(off._width); + CImg resx, resy, resz, resc; + double curr, old; + + if (sx!=_width) { + if (_width==1) get_resize(sx,_height,_depth,_spectrum,1).move_to(resx); + else { + if (_width>sx) get_resize(sx,_height,_depth,_spectrum,2).move_to(resx); + else { + const double fx = (!boundary_conditions && sx>_width)?(sx>1?(_width - 1.)/(sx - 1):0): + (double)_width/sx; + resx.assign(sx,_height,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forX(resx,x) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(width() - 1.,curr + fx); + *(poff++) = (unsigned int)curr - (unsigned int)old; + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resx.size(),65536)) + cimg_forYZC(resx,y,z,c) { + const T *const ptrs0 = data(0,y,z,c), *ptrs = ptrs0, *const ptrsmin = ptrs0 + 1, + *const ptrsmax = ptrs0 + (_width - 2); + T *ptrd = resx.data(0,y,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forX(resx,x) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - 1):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + 1):val2, + val4 = ptrsvmax?vmax:val); + ptrs+=*(poff++); + } + } + } + } + } else resx.assign(*this,true); + + if (sy!=_height) { + if (_height==1) resx.get_resize(sx,sy,_depth,_spectrum,1).move_to(resy); + else { + if (_height>sy) resx.get_resize(sx,sy,_depth,_spectrum,2).move_to(resy); + else { + const double fy = (!boundary_conditions && sy>_height)?(sy>1?(_height - 1.)/(sy - 1):0): + (double)_height/sy; + resy.assign(sx,sy,_depth,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forY(resy,y) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(height() - 1.,curr + fy); + *(poff++) = sx*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resy.size(),65536)) + cimg_forXZC(resy,x,z,c) { + const T *const ptrs0 = resx.data(x,0,z,c), *ptrs = ptrs0, *const ptrsmin = ptrs0 + sx, + *const ptrsmax = ptrs0 + (_height - 2)*sx; + T *ptrd = resy.data(x,0,z,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forY(resy,y) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - sx):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2*sx):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + sx):val2, + val4 = ptrsvmax?vmax:val); + ptrd+=sx; + ptrs+=*(poff++); + } + } + } + } + resx.assign(); + } else resy.assign(resx,true); + + if (sz!=_depth) { + if (_depth==1) resy.get_resize(sx,sy,sz,_spectrum,1).move_to(resz); + else { + if (_depth>sz) resy.get_resize(sx,sy,sz,_spectrum,2).move_to(resz); + else { + const double fz = (!boundary_conditions && sz>_depth)?(sz>1?(_depth - 1.)/(sz - 1):0): + (double)_depth/sz; + const unsigned int sxy = sx*sy; + resz.assign(sx,sy,sz,_spectrum); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forZ(resz,z) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(depth() - 1.,curr + fz); + *(poff++) = sxy*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resz.size(),65536)) + cimg_forXYC(resz,x,y,c) { + const T *const ptrs0 = resy.data(x,y,0,c), *ptrs = ptrs0, *const ptrsmin = ptrs0 + sxy, + *const ptrsmax = ptrs0 + (_depth - 2)*sxy; + T *ptrd = resz.data(x,y,0,c); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forZ(resz,z) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - sxy):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2*sxy):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + sxy):val2, + val4 = ptrsvmax?vmax:val); + ptrd+=sxy; + ptrs+=*(poff++); + } + } + } + } + resy.assign(); + } else resz.assign(resy,true); + + if (sc!=_spectrum) { + if (_spectrum==1) resz.get_resize(sx,sy,sz,sc,1).move_to(resc); + else { + if (_spectrum>sc) resz.get_resize(sx,sy,sz,sc,2).move_to(resc); + else { + const double fc = (!boundary_conditions && sc>_spectrum)?(sc>1?(_spectrum - 1.)/(sc - 1):0): + (double)_spectrum/sc; + const unsigned int sxyz = sx*sy*sz; + resc.assign(sx,sy,sz,sc); + curr = old = 0; + { + unsigned int *poff = off._data; + double *pfoff = foff._data; + cimg_forC(resc,c) { + *(pfoff++) = curr - (unsigned int)curr; + old = curr; + curr = std::min(spectrum() - 1.,curr + fc); + *(poff++) = sxyz*((unsigned int)curr - (unsigned int)old); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(resc.size(),65536)) + cimg_forXYZ(resc,x,y,z) { + const T *const ptrs0 = resz.data(x,y,z,0), *ptrs = ptrs0, *const ptrsmin = ptrs0 + sxyz, + *const ptrsmax = ptrs + (_spectrum - 2)*sxyz; + T *ptrd = resc.data(x,y,z,0); + const unsigned int *poff = off._data; + const double *pfoff = foff._data; + cimg_forC(resc,c) { + const double + t = *(pfoff++), + w0 = _cimg_lanczos(t + 2), + w1 = _cimg_lanczos(t + 1), + w2 = _cimg_lanczos(t), + w3 = _cimg_lanczos(t - 1), + w4 = _cimg_lanczos(t - 2), + val2 = (double)*ptrs, + val1 = ptrs>=ptrsmin?(double)*(ptrs - sxyz):val2, + val0 = ptrs>ptrsmin?(double)*(ptrs - 2*sxyz):val1, + val3 = ptrs<=ptrsmax?(double)*(ptrs + sxyz):val2, + val4 = ptrsvmax?vmax:val); + ptrd+=sxyz; + ptrs+=*(poff++); + } + } + } + } + resz.assign(); + } else resc.assign(resz,true); + + return resc._is_shared?(resz._is_shared?(resy._is_shared?(resx._is_shared?(+(*this)):resx):resy):resz):resc; + } break; + + // Unknown interpolation. + // + default : + throw CImgArgumentException(_cimg_instance + "resize(): Invalid specified interpolation %d " + "(should be { -1=raw | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | " + "5=cubic | 6=lanczos }).", + cimg_instance, + interpolation_type); + } + return res; + } + + //! Resize image to dimensions of another image. + /** + \param src Reference image used for dimensions. + \param interpolation_type Interpolation method. + \param boundary_conditions Boundary conditions. + \param centering_x Set centering type (only if \p interpolation_type=0). + \param centering_y Set centering type (only if \p interpolation_type=0). + \param centering_z Set centering type (only if \p interpolation_type=0). + \param centering_c Set centering type (only if \p interpolation_type=0). + **/ + template + CImg& resize(const CImg& src, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) { + return resize(src._width,src._height,src._depth,src._spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to dimensions of another image \newinstance. + template + CImg get_resize(const CImg& src, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) const { + return get_resize(src._width,src._height,src._depth,src._spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to dimensions of a display window. + /** + \param disp Reference display window used for dimensions. + \param interpolation_type Interpolation method. + \param boundary_conditions Boundary conditions. + \param centering_x Set centering type (only if \p interpolation_type=0). + \param centering_y Set centering type (only if \p interpolation_type=0). + \param centering_z Set centering type (only if \p interpolation_type=0). + \param centering_c Set centering type (only if \p interpolation_type=0). + **/ + CImg& resize(const CImgDisplay& disp, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) { + return resize(disp.width(),disp.height(),_depth,_spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to dimensions of a display window \newinstance. + CImg get_resize(const CImgDisplay& disp, + const int interpolation_type=1, const unsigned int boundary_conditions=0, + const float centering_x = 0, const float centering_y = 0, + const float centering_z = 0, const float centering_c = 0) const { + return get_resize(disp.width(),disp.height(),_depth,_spectrum,interpolation_type,boundary_conditions, + centering_x,centering_y,centering_z,centering_c); + } + + //! Resize image to half-size along XY axes, using an optimized filter. + CImg& resize_halfXY() { + return get_resize_halfXY().move_to(*this); + } + + //! Resize image to half-size along XY axes, using an optimized filter \newinstance. + CImg get_resize_halfXY() const { + if (is_empty()) return *this; + static const Tfloat kernel[9] = { 0.07842776544f, 0.1231940459f, 0.07842776544f, + 0.1231940459f, 0.1935127547f, 0.1231940459f, + 0.07842776544f, 0.1231940459f, 0.07842776544f }; + CImg I(9), res(_width/2,_height/2,_depth,_spectrum); + T *ptrd = res._data; + cimg_forZC(*this,z,c) cimg_for3x3(*this,x,y,z,c,I,T) + if (x%2 && y%2) *(ptrd++) = (T) + (I[0]*kernel[0] + I[1]*kernel[1] + I[2]*kernel[2] + + I[3]*kernel[3] + I[4]*kernel[4] + I[5]*kernel[5] + + I[6]*kernel[6] + I[7]*kernel[7] + I[8]*kernel[8]); + return res; + } + + //! Resize image to double-size, using the Scale2X algorithm. + /** + \note Use anisotropic upscaling algorithm + described here. + **/ + CImg& resize_doubleXY() { + return get_resize_doubleXY().move_to(*this); + } + + //! Resize image to double-size, using the Scale2X algorithm \newinstance. + CImg get_resize_doubleXY() const { +#define _cimg_gs2x_for3(bound,i) \ + for (int i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + _p1##i = i++, ++_n1##i, ptrd1+=(res)._width, ptrd2+=(res)._width) + +#define _cimg_gs2x_for3x3(img,x,y,z,c,I,T) \ + _cimg_gs2x_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,z,c)), \ + (I[7] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + + if (is_empty()) return *this; + CImg res(_width<<1,_height<<1,_depth,_spectrum); + CImg_3x3(I,T); + cimg_forZC(*this,z,c) { + T + *ptrd1 = res.data(0,0,z,c), + *ptrd2 = ptrd1 + res._width; + _cimg_gs2x_for3x3(*this,x,y,z,c,I,T) { + if (Icp!=Icn && Ipc!=Inc) { + *(ptrd1++) = Ipc==Icp?Ipc:Icc; + *(ptrd1++) = Icp==Inc?Inc:Icc; + *(ptrd2++) = Ipc==Icn?Ipc:Icc; + *(ptrd2++) = Icn==Inc?Inc:Icc; + } else { *(ptrd1++) = Icc; *(ptrd1++) = Icc; *(ptrd2++) = Icc; *(ptrd2++) = Icc; } + } + } + return res; + } + + //! Resize image to triple-size, using the Scale3X algorithm. + /** + \note Use anisotropic upscaling algorithm + described here. + **/ + CImg& resize_tripleXY() { + return get_resize_tripleXY().move_to(*this); + } + + //! Resize image to triple-size, using the Scale3X algorithm \newinstance. + CImg get_resize_tripleXY() const { +#define _cimg_gs3x_for3(bound,i) \ + for (int i = 0, _p1##i = 0, \ + _n1##i = 1>=(bound)?(int)(bound) - 1:1; \ + _n1##i<(int)(bound) || i==--_n1##i; \ + _p1##i = i++, ++_n1##i, ptrd1+=2*(res)._width, ptrd2+=2*(res)._width, ptrd3+=2*(res)._width) + +#define _cimg_gs3x_for3x3(img,x,y,z,c,I,T) \ + _cimg_gs3x_for3((img)._height,y) for (int x = 0, \ + _p1##x = 0, \ + _n1##x = (int)( \ + (I[0] = I[1] = (T)(img)(_p1##x,_p1##y,z,c)), \ + (I[3] = I[4] = (T)(img)(0,y,z,c)), \ + (I[6] = I[7] = (T)(img)(0,_n1##y,z,c)), \ + 1>=(img)._width?(img).width() - 1:1); \ + (_n1##x<(img).width() && ( \ + (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \ + (I[5] = (T)(img)(_n1##x,y,z,c)), \ + (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \ + x==--_n1##x; \ + I[0] = I[1], I[1] = I[2], \ + I[3] = I[4], I[4] = I[5], \ + I[6] = I[7], I[7] = I[8], \ + _p1##x = x++, ++_n1##x) + + if (is_empty()) return *this; + CImg res(3*_width,3*_height,_depth,_spectrum); + CImg_3x3(I,T); + cimg_forZC(*this,z,c) { + T + *ptrd1 = res.data(0,0,z,c), + *ptrd2 = ptrd1 + res._width, + *ptrd3 = ptrd2 + res._width; + _cimg_gs3x_for3x3(*this,x,y,z,c,I,T) { + if (Icp != Icn && Ipc != Inc) { + *(ptrd1++) = Ipc==Icp?Ipc:Icc; + *(ptrd1++) = (Ipc==Icp && Icc!=Inp) || (Icp==Inc && Icc!=Ipp)?Icp:Icc; + *(ptrd1++) = Icp==Inc?Inc:Icc; + *(ptrd2++) = (Ipc==Icp && Icc!=Ipn) || (Ipc==Icn && Icc!=Ipp)?Ipc:Icc; + *(ptrd2++) = Icc; + *(ptrd2++) = (Icp==Inc && Icc!=Inn) || (Icn==Inc && Icc!=Inp)?Inc:Icc; + *(ptrd3++) = Ipc==Icn?Ipc:Icc; + *(ptrd3++) = (Ipc==Icn && Icc!=Inn) || (Icn==Inc && Icc!=Ipn)?Icn:Icc; + *(ptrd3++) = Icn==Inc?Inc:Icc; + } else { + *(ptrd1++) = Icc; *(ptrd1++) = Icc; *(ptrd1++) = Icc; + *(ptrd2++) = Icc; *(ptrd2++) = Icc; *(ptrd2++) = Icc; + *(ptrd3++) = Icc; *(ptrd3++) = Icc; *(ptrd3++) = Icc; + } + } + } + return res; + } + + //! Mirror image content along specified axis. + /** + \param axis Mirror axis + **/ + CImg& mirror(const char axis) { + if (is_empty()) return *this; + T *pf, *pb, *buf = 0; + switch (cimg::lowercase(axis)) { + case 'x' : { + pf = _data; pb = data(_width - 1); + const unsigned int width2 = _width/2; + for (unsigned int yzv = 0; yzv<_height*_depth*_spectrum; ++yzv) { + for (unsigned int x = 0; x get_mirror(const char axis) const { + return (+*this).mirror(axis); + } + + //! Mirror image content along specified axes. + /** + \param axes Mirror axes, as a C-string. + \note \c axes may contains multiple characters, e.g. \c "xyz" + **/ + CImg& mirror(const char *const axes) { + for (const char *s = axes; *s; ++s) mirror(*s); + return *this; + } + + //! Mirror image content along specified axes \newinstance. + CImg get_mirror(const char *const axes) const { + return (+*this).mirror(axes); + } + + //! Shift image content. + /** + \param delta_x Amount of displacement along the X-axis. + \param delta_y Amount of displacement along the Y-axis. + \param delta_z Amount of displacement along the Z-axis. + \param delta_c Amount of displacement along the C-axis. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + CImg& shift(const int delta_x, const int delta_y=0, const int delta_z=0, const int delta_c=0, + const unsigned int boundary_conditions=0) { + if (is_empty()) return *this; + if (boundary_conditions==3) + return get_crop(-delta_x,-delta_y,-delta_z,-delta_c, + width() - delta_x - 1, + height() - delta_y - 1, + depth() - delta_z - 1, + spectrum() - delta_c - 1,3).move_to(*this); + if (delta_x) // Shift along X-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_x,width()), ndelta_x = (ml<=width()/2)?ml:(ml-width()); + if (!ndelta_x) return *this; + CImg buf(cimg::abs(ndelta_x)); + if (ndelta_x>0) cimg_forYZC(*this,y,z,c) { + std::memcpy(buf,data(0,y,z,c),ndelta_x*sizeof(T)); + std::memmove(data(0,y,z,c),data(ndelta_x,y,z,c),(_width-ndelta_x)*sizeof(T)); + std::memcpy(data(_width-ndelta_x,y,z,c),buf,ndelta_x*sizeof(T)); + } else cimg_forYZC(*this,y,z,c) { + std::memcpy(buf,data(_width + ndelta_x,y,z,c),-ndelta_x*sizeof(T)); + std::memmove(data(-ndelta_x,y,z,c),data(0,y,z,c),(_width + ndelta_x)*sizeof(T)); + std::memcpy(data(0,y,z,c),buf,-ndelta_x*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_x<0) { + const int ndelta_x = (-delta_x>=width())?width() - 1:-delta_x; + if (!ndelta_x) return *this; + cimg_forYZC(*this,y,z,c) { + std::memmove(data(0,y,z,c),data(ndelta_x,y,z,c),(_width-ndelta_x)*sizeof(T)); + T *ptrd = data(_width - 1,y,z,c); + const T val = *ptrd; + for (int l = 0; l=width())?width() - 1:delta_x; + if (!ndelta_x) return *this; + cimg_forYZC(*this,y,z,c) { + std::memmove(data(ndelta_x,y,z,c),data(0,y,z,c),(_width-ndelta_x)*sizeof(T)); + T *ptrd = data(0,y,z,c); + const T val = *ptrd; + for (int l = 0; l=width()) return fill((T)0); + if (delta_x<0) cimg_forYZC(*this,y,z,c) { + std::memmove(data(0,y,z,c),data(-delta_x,y,z,c),(_width + delta_x)*sizeof(T)); + std::memset(data(_width + delta_x,y,z,c),0,-delta_x*sizeof(T)); + } else cimg_forYZC(*this,y,z,c) { + std::memmove(data(delta_x,y,z,c),data(0,y,z,c),(_width-delta_x)*sizeof(T)); + std::memset(data(0,y,z,c),0,delta_x*sizeof(T)); + } + } + + if (delta_y) // Shift along Y-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_y,height()), ndelta_y = (ml<=height()/2)?ml:(ml-height()); + if (!ndelta_y) return *this; + CImg buf(width(),cimg::abs(ndelta_y)); + if (ndelta_y>0) cimg_forZC(*this,z,c) { + std::memcpy(buf,data(0,0,z,c),_width*ndelta_y*sizeof(T)); + std::memmove(data(0,0,z,c),data(0,ndelta_y,z,c),_width*(_height-ndelta_y)*sizeof(T)); + std::memcpy(data(0,_height-ndelta_y,z,c),buf,_width*ndelta_y*sizeof(T)); + } else cimg_forZC(*this,z,c) { + std::memcpy(buf,data(0,_height + ndelta_y,z,c),-ndelta_y*_width*sizeof(T)); + std::memmove(data(0,-ndelta_y,z,c),data(0,0,z,c),_width*(_height + ndelta_y)*sizeof(T)); + std::memcpy(data(0,0,z,c),buf,-ndelta_y*_width*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_y<0) { + const int ndelta_y = (-delta_y>=height())?height() - 1:-delta_y; + if (!ndelta_y) return *this; + cimg_forZC(*this,z,c) { + std::memmove(data(0,0,z,c),data(0,ndelta_y,z,c),_width*(_height-ndelta_y)*sizeof(T)); + T *ptrd = data(0,_height-ndelta_y,z,c), *ptrs = data(0,_height - 1,z,c); + for (int l = 0; l=height())?height() - 1:delta_y; + if (!ndelta_y) return *this; + cimg_forZC(*this,z,c) { + std::memmove(data(0,ndelta_y,z,c),data(0,0,z,c),_width*(_height-ndelta_y)*sizeof(T)); + T *ptrd = data(0,1,z,c), *ptrs = data(0,0,z,c); + for (int l = 0; l=height()) return fill((T)0); + if (delta_y<0) cimg_forZC(*this,z,c) { + std::memmove(data(0,0,z,c),data(0,-delta_y,z,c),_width*(_height + delta_y)*sizeof(T)); + std::memset(data(0,_height + delta_y,z,c),0,-delta_y*_width*sizeof(T)); + } else cimg_forZC(*this,z,c) { + std::memmove(data(0,delta_y,z,c),data(0,0,z,c),_width*(_height-delta_y)*sizeof(T)); + std::memset(data(0,0,z,c),0,delta_y*_width*sizeof(T)); + } + } + + if (delta_z) // Shift along Z-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_z,depth()), ndelta_z = (ml<=depth()/2)?ml:(ml-depth()); + if (!ndelta_z) return *this; + CImg buf(width(),height(),cimg::abs(ndelta_z)); + if (ndelta_z>0) cimg_forC(*this,c) { + std::memcpy(buf,data(0,0,0,c),_width*_height*ndelta_z*sizeof(T)); + std::memmove(data(0,0,0,c),data(0,0,ndelta_z,c),_width*_height*(_depth-ndelta_z)*sizeof(T)); + std::memcpy(data(0,0,_depth-ndelta_z,c),buf,_width*_height*ndelta_z*sizeof(T)); + } else cimg_forC(*this,c) { + std::memcpy(buf,data(0,0,_depth + ndelta_z,c),-ndelta_z*_width*_height*sizeof(T)); + std::memmove(data(0,0,-ndelta_z,c),data(0,0,0,c),_width*_height*(_depth + ndelta_z)*sizeof(T)); + std::memcpy(data(0,0,0,c),buf,-ndelta_z*_width*_height*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_z<0) { + const int ndelta_z = (-delta_z>=depth())?depth() - 1:-delta_z; + if (!ndelta_z) return *this; + cimg_forC(*this,c) { + std::memmove(data(0,0,0,c),data(0,0,ndelta_z,c),_width*_height*(_depth-ndelta_z)*sizeof(T)); + T *ptrd = data(0,0,_depth-ndelta_z,c), *ptrs = data(0,0,_depth - 1,c); + for (int l = 0; l=depth())?depth() - 1:delta_z; + if (!ndelta_z) return *this; + cimg_forC(*this,c) { + std::memmove(data(0,0,ndelta_z,c),data(0,0,0,c),_width*_height*(_depth-ndelta_z)*sizeof(T)); + T *ptrd = data(0,0,1,c), *ptrs = data(0,0,0,c); + for (int l = 0; l=depth()) return fill((T)0); + if (delta_z<0) cimg_forC(*this,c) { + std::memmove(data(0,0,0,c),data(0,0,-delta_z,c),_width*_height*(_depth + delta_z)*sizeof(T)); + std::memset(data(0,0,_depth + delta_z,c),0,_width*_height*(-delta_z)*sizeof(T)); + } else cimg_forC(*this,c) { + std::memmove(data(0,0,delta_z,c),data(0,0,0,c),_width*_height*(_depth-delta_z)*sizeof(T)); + std::memset(data(0,0,0,c),0,delta_z*_width*_height*sizeof(T)); + } + } + + if (delta_c) // Shift along C-axis + switch (boundary_conditions) { + case 2 : { // Periodic + const int ml = cimg::mod(-delta_c,spectrum()), ndelta_c = (ml<=spectrum()/2)?ml:(ml-spectrum()); + if (!ndelta_c) return *this; + CImg buf(width(),height(),depth(),cimg::abs(ndelta_c)); + if (ndelta_c>0) { + std::memcpy(buf,_data,_width*_height*_depth*ndelta_c*sizeof(T)); + std::memmove(_data,data(0,0,0,ndelta_c),_width*_height*_depth*(_spectrum-ndelta_c)*sizeof(T)); + std::memcpy(data(0,0,0,_spectrum-ndelta_c),buf,_width*_height*_depth*ndelta_c*sizeof(T)); + } else { + std::memcpy(buf,data(0,0,0,_spectrum + ndelta_c),-ndelta_c*_width*_height*_depth*sizeof(T)); + std::memmove(data(0,0,0,-ndelta_c),_data,_width*_height*_depth*(_spectrum + ndelta_c)*sizeof(T)); + std::memcpy(_data,buf,-ndelta_c*_width*_height*_depth*sizeof(T)); + } + } break; + case 1 : // Neumann + if (delta_c<0) { + const int ndelta_c = (-delta_c>=spectrum())?spectrum() - 1:-delta_c; + if (!ndelta_c) return *this; + std::memmove(_data,data(0,0,0,ndelta_c),_width*_height*_depth*(_spectrum-ndelta_c)*sizeof(T)); + T *ptrd = data(0,0,0,_spectrum-ndelta_c), *ptrs = data(0,0,0,_spectrum - 1); + for (int l = 0; l=spectrum())?spectrum() - 1:delta_c; + if (!ndelta_c) return *this; + std::memmove(data(0,0,0,ndelta_c),_data,_width*_height*_depth*(_spectrum-ndelta_c)*sizeof(T)); + T *ptrd = data(0,0,0,1); + for (int l = 0; l=spectrum()) return fill((T)0); + if (delta_c<0) { + std::memmove(_data,data(0,0,0,-delta_c),_width*_height*_depth*(_spectrum + delta_c)*sizeof(T)); + std::memset(data(0,0,0,_spectrum + delta_c),0,_width*_height*_depth*(-delta_c)*sizeof(T)); + } else { + std::memmove(data(0,0,0,delta_c),_data,_width*_height*_depth*(_spectrum-delta_c)*sizeof(T)); + std::memset(_data,0,delta_c*_width*_height*_depth*sizeof(T)); + } + } + return *this; + } + + //! Shift image content \newinstance. + CImg get_shift(const int delta_x, const int delta_y=0, const int delta_z=0, const int delta_c=0, + const unsigned int boundary_conditions=0) const { + return (+*this).shift(delta_x,delta_y,delta_z,delta_c,boundary_conditions); + } + + //! Permute axes order. + /** + \param axes_order Axes permutations, as a C-string of 4 characters. + This function permutes image content regarding the specified axes permutation. + **/ + CImg& permute_axes(const char *const axes_order) { + return get_permute_axes(axes_order).move_to(*this); + } + + //! Permute axes order \newinstance. + CImg get_permute_axes(const char *const axes_order) const { + const T foo = (T)0; + return _permute_axes(axes_order,foo); + } + + template + CImg _permute_axes(const char *const axes_order, const t&) const { + if (is_empty() || !axes_order) return CImg(*this,false); + CImg res; + const T* ptrs = _data; + unsigned char s_code[4] = { 0,1,2,3 }, n_code[4] = { 0 }; + for (unsigned int l = 0; axes_order[l]; ++l) { + int c = cimg::lowercase(axes_order[l]); + if (l>=4 || (c!='x' && c!='y' && c!='z' && c!='c')) { *s_code = 4; break; } + else { ++n_code[c%=4]; s_code[l] = c; } + } + if (*axes_order && *s_code<4 && *n_code<=1 && n_code[1]<=1 && n_code[2]<=1 && n_code[3]<=1) { + const unsigned int code = (s_code[0]<<12) | (s_code[1]<<8) | (s_code[2]<<4) | (s_code[3]); + ulongT wh, whd; + switch (code) { + case 0x0123 : // xyzc + return +*this; + case 0x0132 : // xycz + res.assign(_width,_height,_spectrum,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,y,c,z,wh,whd) = (t)*(ptrs++); + break; + case 0x0213 : // xzyc + res.assign(_width,_depth,_height,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,z,y,c,wh,whd) = (t)*(ptrs++); + break; + case 0x0231 : // xzcy + res.assign(_width,_depth,_spectrum,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,z,c,y,wh,whd) = (t)*(ptrs++); + break; + case 0x0312 : // xcyz + res.assign(_width,_spectrum,_height,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,c,y,z,wh,whd) = (t)*(ptrs++); + break; + case 0x0321 : // xczy + res.assign(_width,_spectrum,_depth,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(x,c,z,y,wh,whd) = (t)*(ptrs++); + break; + case 0x1023 : // yxzc + res.assign(_height,_width,_depth,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,x,z,c,wh,whd) = (t)*(ptrs++); + break; + case 0x1032 : // yxcz + res.assign(_height,_width,_spectrum,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,x,c,z,wh,whd) = (t)*(ptrs++); + break; + case 0x1203 : // yzxc + res.assign(_height,_depth,_width,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,z,x,c,wh,whd) = (t)*(ptrs++); + break; + case 0x1230 : // yzcx + res.assign(_height,_depth,_spectrum,_width); + switch (_width) { + case 1 : { + t *ptr_r = res.data(0,0,0,0); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)*(ptrs++); + } + } break; + case 2 : { + t *ptr_r = res.data(0,0,0,0), *ptr_g = res.data(0,0,0,1); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)ptrs[0]; + *(ptr_g++) = (t)ptrs[1]; + ptrs+=2; + } + } break; + case 3 : { // Optimization for the classical conversion from interleaved RGB to planar RGB + t *ptr_r = res.data(0,0,0,0), *ptr_g = res.data(0,0,0,1), *ptr_b = res.data(0,0,0,2); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)ptrs[0]; + *(ptr_g++) = (t)ptrs[1]; + *(ptr_b++) = (t)ptrs[2]; + ptrs+=3; + } + } break; + case 4 : { // Optimization for the classical conversion from interleaved RGBA to planar RGBA + t + *ptr_r = res.data(0,0,0,0), *ptr_g = res.data(0,0,0,1), + *ptr_b = res.data(0,0,0,2), *ptr_a = res.data(0,0,0,3); + for (unsigned int siz = _height*_depth*_spectrum; siz; --siz) { + *(ptr_r++) = (t)ptrs[0]; + *(ptr_g++) = (t)ptrs[1]; + *(ptr_b++) = (t)ptrs[2]; + *(ptr_a++) = (t)ptrs[3]; + ptrs+=4; + } + } break; + default : { + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,z,c,x,wh,whd) = *(ptrs++); + return res; + } + } + break; + case 0x1302 : // ycxz + res.assign(_height,_spectrum,_width,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,c,x,z,wh,whd) = (t)*(ptrs++); + break; + case 0x1320 : // yczx + res.assign(_height,_spectrum,_depth,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(y,c,z,x,wh,whd) = (t)*(ptrs++); + break; + case 0x2013 : // zxyc + res.assign(_depth,_width,_height,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,x,y,c,wh,whd) = (t)*(ptrs++); + break; + case 0x2031 : // zxcy + res.assign(_depth,_width,_spectrum,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,x,c,y,wh,whd) = (t)*(ptrs++); + break; + case 0x2103 : // zyxc + res.assign(_depth,_height,_width,_spectrum); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,y,x,c,wh,whd) = (t)*(ptrs++); + break; + case 0x2130 : // zycx + res.assign(_depth,_height,_spectrum,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,y,c,x,wh,whd) = (t)*(ptrs++); + break; + case 0x2301 : // zcxy + res.assign(_depth,_spectrum,_width,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,c,x,y,wh,whd) = (t)*(ptrs++); + break; + case 0x2310 : // zcyx + res.assign(_depth,_spectrum,_height,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(z,c,y,x,wh,whd) = (t)*(ptrs++); + break; + case 0x3012 : // cxyz + res.assign(_spectrum,_width,_height,_depth); + switch (_spectrum) { + case 1 : { + const T *ptr_r = data(0,0,0,0); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) *(ptrd++) = (t)*(ptr_r++); + } break; + case 2 : { + const T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) { + ptrd[0] = (t)*(ptr_r++); + ptrd[1] = (t)*(ptr_g++); + ptrd+=2; + } + } break; + case 3 : { // Optimization for the classical conversion from planar RGB to interleaved RGB + const T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) { + ptrd[0] = (t)*(ptr_r++); + ptrd[1] = (t)*(ptr_g++); + ptrd[2] = (t)*(ptr_b++); + ptrd+=3; + } + } break; + case 4 : { // Optimization for the classical conversion from planar RGBA to interleaved RGBA + const T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = data(0,0,0,3); + t *ptrd = res._data; + for (ulongT siz = (ulongT)_width*_height*_depth; siz; --siz) { + ptrd[0] = (t)*(ptr_r++); + ptrd[1] = (t)*(ptr_g++); + ptrd[2] = (t)*(ptr_b++); + ptrd[3] = (t)*(ptr_a++); + ptrd+=4; + } + } break; + default : { + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,x,y,z,wh,whd) = (t)*(ptrs++); + } + } + break; + case 0x3021 : // cxzy + res.assign(_spectrum,_width,_depth,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,x,z,y,wh,whd) = (t)*(ptrs++); + break; + case 0x3102 : // cyxz + res.assign(_spectrum,_height,_width,_depth); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,y,x,z,wh,whd) = (t)*(ptrs++); + break; + case 0x3120 : // cyzx + res.assign(_spectrum,_height,_depth,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,y,z,x,wh,whd) = (t)*(ptrs++); + break; + case 0x3201 : // czxy + res.assign(_spectrum,_depth,_width,_height); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,z,x,y,wh,whd) = (t)*(ptrs++); + break; + case 0x3210 : // czyx + res.assign(_spectrum,_depth,_height,_width); + wh = (ulongT)res._width*res._height; whd = wh*res._depth; + cimg_forXYZC(*this,x,y,z,c) res(c,z,y,x,wh,whd) = (t)*(ptrs++); + break; + } + } + if (!res) + throw CImgArgumentException(_cimg_instance + "permute_axes(): Invalid specified axes order '%s'.", + cimg_instance, + axes_order); + return res; + } + + //! Unroll pixel values along specified axis. + /** + \param axis Unroll axis (can be \c 'x', \c 'y', \c 'z' or c 'c'). + **/ + CImg& unroll(const char axis) { + const unsigned int siz = (unsigned int)size(); + if (siz) switch (cimg::lowercase(axis)) { + case 'x' : _width = siz; _height = _depth = _spectrum = 1; break; + case 'y' : _height = siz; _width = _depth = _spectrum = 1; break; + case 'z' : _depth = siz; _width = _height = _spectrum = 1; break; + case 'c' : _spectrum = siz; _width = _height = _depth = 1; break; + } + return *this; + } + + //! Unroll pixel values along specified axis \newinstance. + CImg get_unroll(const char axis) const { + return (+*this).unroll(axis); + } + + //! Rotate image with arbitrary angle. + /** + \param angle Rotation angle, in degrees. + \param interpolation Type of interpolation. Can be { 0=nearest | 1=linear | 2=cubic }. + \param boundary_conditions Boundary conditions. + Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + \note The size of the image is modified. + **/ + CImg& rotate(const float angle, const unsigned int interpolation=1, + const unsigned int boundary_conditions=0) { + const float nangle = cimg::mod(angle,360.f); + if (nangle==0.f) return *this; + return get_rotate(nangle,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate image with arbitrary angle \newinstance. + CImg get_rotate(const float angle, const unsigned int interpolation=1, + const unsigned int boundary_conditions=0) const { + if (is_empty()) return *this; + CImg res; + const float nangle = cimg::mod(angle,360.f); + if (boundary_conditions!=1 && cimg::mod(nangle,90.f)==0) { // Optimized version for orthogonal angles + const int wm1 = width() - 1, hm1 = height() - 1; + const int iangle = (int)nangle/90; + switch (iangle) { + case 1 : { // 90 deg + res.assign(_height,_width,_depth,_spectrum); + T *ptrd = res._data; + cimg_forXYZC(res,x,y,z,c) *(ptrd++) = (*this)(y,hm1 - x,z,c); + } break; + case 2 : { // 180 deg + res.assign(_width,_height,_depth,_spectrum); + T *ptrd = res._data; + cimg_forXYZC(res,x,y,z,c) *(ptrd++) = (*this)(wm1 - x,hm1 - y,z,c); + } break; + case 3 : { // 270 deg + res.assign(_height,_width,_depth,_spectrum); + T *ptrd = res._data; + cimg_forXYZC(res,x,y,z,c) *(ptrd++) = (*this)(wm1 - y,x,z,c); + } break; + default : // 0 deg + return *this; + } + } else { // Generic angle + const float + rad = (float)(nangle*cimg::PI/180.), + ca = (float)std::cos(rad), sa = (float)std::sin(rad), + ux = cimg::abs((_width - 1)*ca), uy = cimg::abs((_width - 1)*sa), + vx = cimg::abs((_height - 1)*sa), vy = cimg::abs((_height - 1)*ca), + w2 = 0.5f*(_width - 1), h2 = 0.5f*(_height - 1); + res.assign((int)cimg::round(1 + ux + vx),(int)cimg::round(1 + uy + vy),_depth,_spectrum); + const float rw2 = 0.5f*(res._width - 1), rh2 = 0.5f*(res._height - 1); + _rotate(res,nangle,interpolation,boundary_conditions,w2,h2,rw2,rh2); + } + return res; + } + + //! Rotate image with arbitrary angle, around a center point. + /** + \param angle Rotation angle, in degrees. + \param cx X-coordinate of the rotation center. + \param cy Y-coordinate of the rotation center. + \param interpolation Type of interpolation, { 0=nearest | 1=linear | 2=cubic | 3=mirror }. + \param boundary_conditions Boundary conditions, { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + CImg& rotate(const float angle, const float cx, const float cy, + const unsigned int interpolation, const unsigned int boundary_conditions=0) { + return get_rotate(angle,cx,cy,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate image with arbitrary angle, around a center point \newinstance. + CImg get_rotate(const float angle, const float cx, const float cy, + const unsigned int interpolation, const unsigned int boundary_conditions=0) const { + if (is_empty()) return *this; + CImg res(_width,_height,_depth,_spectrum); + _rotate(res,angle,interpolation,boundary_conditions,cx,cy,cx,cy); + return res; + } + + // [internal] Perform 2D rotation with arbitrary angle. + void _rotate(CImg& res, const float angle, + const unsigned int interpolation, const unsigned int boundary_conditions, + const float w2, const float h2, + const float rw2, const float rh2) const { + const float + rad = (float)(angle*cimg::PI/180.), + ca = (float)std::cos(rad), sa = (float)std::sin(rad); + + switch (boundary_conditions) { + case 3 : { // Mirror + + switch (interpolation) { + case 2 : { // Cubic interpolation + const float ww = 2.f*width(), hh = 2.f*height(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),2048)) + cimg_forXYZC(res,x,y,z,c) { + const float xc = x - rw2, yc = y - rh2, + mx = cimg::mod(w2 + xc*ca + yc*sa,ww), + my = cimg::mod(h2 - xc*sa + yc*ca,hh); + res(x,y,z,c) = _cubic_atXY_c(mx{ 0=nearest | 1=linear | 2=cubic }. + \param boundary_conditions Boundary conditions. + Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + \note Most of the time, size of the image is modified. + **/ + CImg rotate(const float u, const float v, const float w, const float angle, + const unsigned int interpolation, const unsigned int boundary_conditions) { + const float nangle = cimg::mod(angle,360.f); + if (nangle==0.f) return *this; + return get_rotate(u,v,w,nangle,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate volumetric image with arbitrary angle and axis \newinstance. + CImg get_rotate(const float u, const float v, const float w, const float angle, + const unsigned int interpolation, const unsigned int boundary_conditions) const { + if (is_empty()) return *this; + CImg res; + const float + w1 = _width - 1, h1 = _height - 1, d1 = _depth -1, + w2 = 0.5f*w1, h2 = 0.5f*h1, d2 = 0.5f*d1; + CImg R = CImg::rotation_matrix(u,v,w,angle); + const CImg + X = R*CImg(8,3,1,1, + 0.f,w1,w1,0.f,0.f,w1,w1,0.f, + 0.f,0.f,h1,h1,0.f,0.f,h1,h1, + 0.f,0.f,0.f,0.f,d1,d1,d1,d1); + float + xm, xM = X.get_shared_row(0).max_min(xm), + ym, yM = X.get_shared_row(1).max_min(ym), + zm, zM = X.get_shared_row(2).max_min(zm); + const int + dx = (int)cimg::round(xM - xm), + dy = (int)cimg::round(yM - ym), + dz = (int)cimg::round(zM - zm); + R.transpose(); + res.assign(1 + dx,1 + dy,1 + dz,_spectrum); + const float rw2 = 0.5f*dx, rh2 = 0.5f*dy, rd2 = 0.5f*dz; + _rotate(res,R,interpolation,boundary_conditions,w2,h2,d2,rw2,rh2,rd2); + return res; + } + + //! Rotate volumetric image with arbitrary angle and axis, around a center point. + /** + \param u X-coordinate of the 3D rotation axis. + \param v Y-coordinate of the 3D rotation axis. + \param w Z-coordinate of the 3D rotation axis. + \param angle Rotation angle, in degrees. + \param cx X-coordinate of the rotation center. + \param cy Y-coordinate of the rotation center. + \param cz Z-coordinate of the rotation center. + \param interpolation Type of interpolation. Can be { 0=nearest | 1=linear | 2=cubic | 3=mirror }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann | 2=periodic }. + \note Most of the time, size of the image is modified. + **/ + CImg rotate(const float u, const float v, const float w, const float angle, + const float cx, const float cy, const float cz, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) { + const float nangle = cimg::mod(angle,360.f); + if (nangle==0.f) return *this; + return get_rotate(u,v,w,nangle,cx,cy,cz,interpolation,boundary_conditions).move_to(*this); + } + + //! Rotate volumetric image with arbitrary angle and axis, around a center point \newinstance. + CImg get_rotate(const float u, const float v, const float w, const float angle, + const float cx, const float cy, const float cz, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) const { + if (is_empty()) return *this; + CImg res(_width,_height,_depth,_spectrum); + CImg R = CImg::rotation_matrix(u,v,w,-angle); + _rotate(res,R,interpolation,boundary_conditions,cx,cy,cz,cx,cy,cz); + return res; + } + + // [internal] Perform 3D rotation with arbitrary axis and angle. + void _rotate(CImg& res, const CImg& R, + const unsigned int interpolation, const unsigned int boundary_conditions, + const float w2, const float h2, const float d2, + const float rw2, const float rh2, const float rd2) const { + switch (boundary_conditions) { + case 3 : // Mirror + switch (interpolation) { + case 2 : { // Cubic interpolation + const float ww = 2.f*width(), hh = 2.f*height(), dd = 2.f*depth(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if_size(res.size(),2048)) + cimg_forXYZ(res,x,y,z) { + const float + xc = x - rw2, yc = y - rh2, zc = z - rd2, + X = cimg::mod((float)(w2 + R(0,0)*xc + R(1,0)*yc + R(2,0)*zc),ww), + Y = cimg::mod((float)(h2 + R(0,1)*xc + R(1,1)*yc + R(2,1)*zc),hh), + Z = cimg::mod((float)(d2 + R(0,2)*xc + R(1,2)*yc + R(2,2)*zc),dd); + cimg_forC(res,c) res(x,y,z,c) = _cubic_atXYZ_c(X{ 0=nearest | 1=linear | 2=cubic }. + \param boundary_conditions Boundary conditions { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + template + CImg& warp(const CImg& p_warp, const unsigned int mode=0, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) { + return get_warp(p_warp,mode,interpolation,boundary_conditions).move_to(*this); + } + + //! Warp image content by a warping field \newinstance + template + CImg get_warp(const CImg& p_warp, const unsigned int mode=0, + const unsigned int interpolation=1, const unsigned int boundary_conditions=0) const { + if (is_empty() || !p_warp) return *this; + if (mode && !is_sameXYZ(p_warp)) + throw CImgArgumentException(_cimg_instance + "warp(): Instance and specified relative warping field (%u,%u,%u,%u,%p) " + "have different XYZ dimensions.", + cimg_instance, + p_warp._width,p_warp._height,p_warp._depth,p_warp._spectrum,p_warp._data); + + CImg res(p_warp._width,p_warp._height,p_warp._depth,_spectrum); + + if (p_warp._spectrum==1) { // 1D warping + if (mode>=3) { // Forward-relative warp + res.fill((T)0); + if (interpolation>=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atX(*(ptrs++),x + (float)*(ptrs0++),y,z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = x + (int)cimg::round(*(ptrs0++)); + if (X>=0 && X=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atX(*(ptrs++),(float)*(ptrs0++),y,z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = (int)cimg::round(*(ptrs0++)); + if (X>=0 && X=3) { // Forward-relative warp + res.fill((T)0); + if (interpolation>=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXY(*(ptrs++),x + (float)*(ptrs0++),y + (float)*(ptrs1++),z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = x + (int)cimg::round(*(ptrs0++)), Y = y + (int)cimg::round(*(ptrs1++)); + if (X>=0 && X=0 && Y=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXY(*(ptrs++),(float)*(ptrs0++),(float)*(ptrs1++),z,c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1); const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int X = (int)cimg::round(*(ptrs0++)), Y = (int)cimg::round(*(ptrs1++)); + if (X>=0 && X=0 && Y=3) { // Forward-relative warp + res.fill((T)0); + if (interpolation>=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXYZ(*(ptrs++),x + (float)*(ptrs0++),y + (float)*(ptrs1++), + z + (float)*(ptrs2++),c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int + X = x + (int)cimg::round(*(ptrs0++)), + Y = y + (int)cimg::round(*(ptrs1++)), + Z = z + (int)cimg::round(*(ptrs2++)); + if (X>=0 && X=0 && Y=0 && Z=1) // Linear interpolation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(res.size(),4096)) + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) res.set_linear_atXYZ(*(ptrs++),(float)*(ptrs0++),(float)*(ptrs1++),(float)*(ptrs2++),c); + } + else // Nearest-neighbor interpolation + cimg_forYZC(res,y,z,c) { + const t *ptrs0 = p_warp.data(0,y,z,0), *ptrs1 = p_warp.data(0,y,z,1), *ptrs2 = p_warp.data(0,y,z,2); + const T *ptrs = data(0,y,z,c); + cimg_forX(res,x) { + const int + X = (int)cimg::round(*(ptrs0++)), + Y = (int)cimg::round(*(ptrs1++)), + Z = (int)cimg::round(*(ptrs2++)); + if (X>=0 && X=0 && Y=0 && Z get_projections2d(const unsigned int x0, const unsigned int y0, const unsigned int z0) const { + if (is_empty() || _depth<2) return +*this; + const unsigned int + _x0 = (x0>=_width)?_width - 1:x0, + _y0 = (y0>=_height)?_height - 1:y0, + _z0 = (z0>=_depth)?_depth - 1:z0; + const CImg + img_xy = get_crop(0,0,_z0,0,_width - 1,_height - 1,_z0,_spectrum - 1), + img_zy = get_crop(_x0,0,0,0,_x0,_height - 1,_depth - 1,_spectrum - 1).permute_axes("xzyc"). + resize(_depth,_height,1,-100,-1), + img_xz = get_crop(0,_y0,0,0,_width - 1,_y0,_depth - 1,_spectrum - 1).resize(_width,_depth,1,-100,-1); + return CImg(_width + _depth,_height + _depth,1,_spectrum,cimg::min(img_xy.min(),img_zy.min(),img_xz.min())). + draw_image(0,0,img_xy).draw_image(img_xy._width,0,img_zy). + draw_image(0,img_xy._height,img_xz); + } + + //! Construct a 2D representation of a 3D image, with XY,XZ and YZ views \inplace. + CImg& projections2d(const unsigned int x0, const unsigned int y0, const unsigned int z0) { + if (_depth<2) return *this; + return get_projections2d(x0,y0,z0).move_to(*this); + } + + //! Crop image region. + /** + \param x0 = X-coordinate of the upper-left crop rectangle corner. + \param y0 = Y-coordinate of the upper-left crop rectangle corner. + \param z0 = Z-coordinate of the upper-left crop rectangle corner. + \param c0 = C-coordinate of the upper-left crop rectangle corner. + \param x1 = X-coordinate of the lower-right crop rectangle corner. + \param y1 = Y-coordinate of the lower-right crop rectangle corner. + \param z1 = Z-coordinate of the lower-right crop rectangle corner. + \param c1 = C-coordinate of the lower-right crop rectangle corner. + \param boundary_conditions = Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + **/ + CImg& crop(const int x0, const int y0, const int z0, const int c0, + const int x1, const int y1, const int z1, const int c1, + const unsigned int boundary_conditions=0) { + return get_crop(x0,y0,z0,c0,x1,y1,z1,c1,boundary_conditions).move_to(*this); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int y0, const int z0, const int c0, + const int x1, const int y1, const int z1, const int c1, + const unsigned int boundary_conditions=0) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "crop(): Empty instance.", + cimg_instance); + const int + nx0 = x0=0 && nx1=0 && ny1=0 && nz1=0 && nc1 res(1U + nx1 - nx0,1U + ny1 - ny0,1U + nz1 - nz0,1U + nc1 - nc0); + if (nx0<0 || nx1>=width() || ny0<0 || ny1>=height() || nz0<0 || nz1>=depth() || nc0<0 || nc1>=spectrum()) + switch (_boundary_conditions) { + case 3 : { // Mirror + const int w2 = 2*width(), h2 = 2*height(), d2 = 2*depth(), s2 = 2*spectrum(); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(res,x,y,z,c) { + const int + mx = cimg::mod(nx0 + x,w2), + my = cimg::mod(ny0 + y,h2), + mz = cimg::mod(nz0 + z,d2), + mc = cimg::mod(nc0 + c,s2); + res(x,y,z,c) = (*this)(mx=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(res,x,y,z,c) { + res(x,y,z,c) = (*this)(cimg::mod(nx0 + x,width()),cimg::mod(ny0 + y,height()), + cimg::mod(nz0 + z,depth()),cimg::mod(nc0 + c,spectrum())); + } + } break; + case 1 : // Neumann + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(res,x,y,z,c) res(x,y,z,c) = _atXYZC(nx0 + x,ny0 + y,nz0 + z,nc0 + c); + break; + default : // Dirichlet + res.fill((T)0).draw_image(-nx0,-ny0,-nz0,-nc0,*this); + } + else res.draw_image(-nx0,-ny0,-nz0,-nc0,*this); + return res; + } + + //! Crop image region \overloading. + CImg& crop(const int x0, const int y0, const int z0, + const int x1, const int y1, const int z1, + const unsigned int boundary_conditions=0) { + return crop(x0,y0,z0,0,x1,y1,z1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int y0, const int z0, + const int x1, const int y1, const int z1, + const unsigned int boundary_conditions=0) const { + return get_crop(x0,y0,z0,0,x1,y1,z1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \overloading. + CImg& crop(const int x0, const int y0, + const int x1, const int y1, + const unsigned int boundary_conditions=0) { + return crop(x0,y0,0,0,x1,y1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int y0, + const int x1, const int y1, + const unsigned int boundary_conditions=0) const { + return get_crop(x0,y0,0,0,x1,y1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \overloading. + CImg& crop(const int x0, const int x1, const unsigned int boundary_conditions=0) { + return crop(x0,0,0,0,x1,_height - 1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Crop image region \newinstance. + CImg get_crop(const int x0, const int x1, const unsigned int boundary_conditions=0) const { + return get_crop(x0,0,0,0,x1,_height - 1,_depth - 1,_spectrum - 1,boundary_conditions); + } + + //! Autocrop image region, regarding the specified background value. + CImg& autocrop(const T& value, const char *const axes="czyx") { + if (is_empty()) return *this; + for (const char *s = axes; *s; ++s) { + const char axis = cimg::lowercase(*s); + const CImg coords = _autocrop(value,axis); + if (coords[0]==-1 && coords[1]==-1) return assign(); // Image has only 'value' pixels + else switch (axis) { + case 'x' : { + const int x0 = coords[0], x1 = coords[1]; + if (x0>=0 && x1>=0) crop(x0,x1); + } break; + case 'y' : { + const int y0 = coords[0], y1 = coords[1]; + if (y0>=0 && y1>=0) crop(0,y0,_width - 1,y1); + } break; + case 'z' : { + const int z0 = coords[0], z1 = coords[1]; + if (z0>=0 && z1>=0) crop(0,0,z0,_width - 1,_height - 1,z1); + } break; + default : { + const int c0 = coords[0], c1 = coords[1]; + if (c0>=0 && c1>=0) crop(0,0,0,c0,_width - 1,_height - 1,_depth - 1,c1); + } + } + } + return *this; + } + + //! Autocrop image region, regarding the specified background value \newinstance. + CImg get_autocrop(const T& value, const char *const axes="czyx") const { + return (+*this).autocrop(value,axes); + } + + //! Autocrop image region, regarding the specified background color. + /** + \param color Color used for the crop. If \c 0, color is guessed. + \param axes Axes used for the crop. + **/ + CImg& autocrop(const T *const color=0, const char *const axes="zyx") { + if (is_empty()) return *this; + if (!color) { // Guess color + const CImg col1 = get_vector_at(0,0,0); + const unsigned int w = _width, h = _height, d = _depth, s = _spectrum; + autocrop(col1,axes); + if (_width==w && _height==h && _depth==d && _spectrum==s) { + const CImg col2 = get_vector_at(w - 1,h - 1,d - 1); + autocrop(col2,axes); + } + return *this; + } + for (const char *s = axes; *s; ++s) { + const char axis = cimg::lowercase(*s); + switch (axis) { + case 'x' : { + int x0 = width(), x1 = -1; + cimg_forC(*this,c) { + const CImg coords = get_shared_channel(c)._autocrop(color[c],'x'); + const int nx0 = coords[0], nx1 = coords[1]; + if (nx0>=0 && nx1>=0) { x0 = std::min(x0,nx0); x1 = std::max(x1,nx1); } + } + if (x0==width() && x1==-1) return assign(); else crop(x0,x1); + } break; + case 'y' : { + int y0 = height(), y1 = -1; + cimg_forC(*this,c) { + const CImg coords = get_shared_channel(c)._autocrop(color[c],'y'); + const int ny0 = coords[0], ny1 = coords[1]; + if (ny0>=0 && ny1>=0) { y0 = std::min(y0,ny0); y1 = std::max(y1,ny1); } + } + if (y0==height() && y1==-1) return assign(); else crop(0,y0,_width - 1,y1); + } break; + default : { + int z0 = depth(), z1 = -1; + cimg_forC(*this,c) { + const CImg coords = get_shared_channel(c)._autocrop(color[c],'z'); + const int nz0 = coords[0], nz1 = coords[1]; + if (nz0>=0 && nz1>=0) { z0 = std::min(z0,nz0); z1 = std::max(z1,nz1); } + } + if (z0==depth() && z1==-1) return assign(); else crop(0,0,z0,_width - 1,_height - 1,z1); + } + } + } + return *this; + } + + //! Autocrop image region, regarding the specified background color \newinstance. + CImg get_autocrop(const T *const color=0, const char *const axes="zyx") const { + return (+*this).autocrop(color,axes); + } + + CImg _autocrop(const T& value, const char axis) const { + CImg res; + switch (cimg::lowercase(axis)) { + case 'x' : { + int x0 = -1, x1 = -1; + cimg_forX(*this,x) cimg_forYZC(*this,y,z,c) + if ((*this)(x,y,z,c)!=value) { x0 = x; x = width(); y = height(); z = depth(); c = spectrum(); } + if (x0>=0) { + for (int x = width() - 1; x>=0; --x) cimg_forYZC(*this,y,z,c) + if ((*this)(x,y,z,c)!=value) { x1 = x; x = 0; y = height(); z = depth(); c = spectrum(); } + } + res = CImg::vector(x0,x1); + } break; + case 'y' : { + int y0 = -1, y1 = -1; + cimg_forY(*this,y) cimg_forXZC(*this,x,z,c) + if ((*this)(x,y,z,c)!=value) { y0 = y; x = width(); y = height(); z = depth(); c = spectrum(); } + if (y0>=0) { + for (int y = height() - 1; y>=0; --y) cimg_forXZC(*this,x,z,c) + if ((*this)(x,y,z,c)!=value) { y1 = y; x = width(); y = 0; z = depth(); c = spectrum(); } + } + res = CImg::vector(y0,y1); + } break; + case 'z' : { + int z0 = -1, z1 = -1; + cimg_forZ(*this,z) cimg_forXYC(*this,x,y,c) + if ((*this)(x,y,z,c)!=value) { z0 = z; x = width(); y = height(); z = depth(); c = spectrum(); } + if (z0>=0) { + for (int z = depth() - 1; z>=0; --z) cimg_forXYC(*this,x,y,c) + if ((*this)(x,y,z,c)!=value) { z1 = z; x = width(); y = height(); z = 0; c = spectrum(); } + } + res = CImg::vector(z0,z1); + } break; + default : { + int c0 = -1, c1 = -1; + cimg_forC(*this,c) cimg_forXYZ(*this,x,y,z) + if ((*this)(x,y,z,c)!=value) { c0 = c; x = width(); y = height(); z = depth(); c = spectrum(); } + if (c0>=0) { + for (int c = spectrum() - 1; c>=0; --c) cimg_forXYZ(*this,x,y,z) + if ((*this)(x,y,z,c)!=value) { c1 = c; x = width(); y = height(); z = depth(); c = 0; } + } + res = CImg::vector(c0,c1); + } + } + return res; + } + + //! Return specified image column. + /** + \param x0 Image column. + **/ + CImg get_column(const int x0) const { + return get_columns(x0,x0); + } + + //! Return specified image column \inplace. + CImg& column(const int x0) { + return columns(x0,x0); + } + + //! Return specified range of image columns. + /** + \param x0 Starting image column. + \param x1 Ending image column. + **/ + CImg& columns(const int x0, const int x1) { + return get_columns(x0,x1).move_to(*this); + } + + //! Return specified range of image columns \inplace. + CImg get_columns(const int x0, const int x1) const { + return get_crop(x0,0,0,0,x1,height() - 1,depth() - 1,spectrum() - 1); + } + + //! Return specified image row. + CImg get_row(const int y0) const { + return get_rows(y0,y0); + } + + //! Return specified image row \inplace. + /** + \param y0 Image row. + **/ + CImg& row(const int y0) { + return rows(y0,y0); + } + + //! Return specified range of image rows. + /** + \param y0 Starting image row. + \param y1 Ending image row. + **/ + CImg get_rows(const int y0, const int y1) const { + return get_crop(0,y0,0,0,width() - 1,y1,depth() - 1,spectrum() - 1); + } + + //! Return specified range of image rows \inplace. + CImg& rows(const int y0, const int y1) { + return get_rows(y0,y1).move_to(*this); + } + + //! Return specified image slice. + /** + \param z0 Image slice. + **/ + CImg get_slice(const int z0) const { + return get_slices(z0,z0); + } + + //! Return specified image slice \inplace. + CImg& slice(const int z0) { + return slices(z0,z0); + } + + //! Return specified range of image slices. + /** + \param z0 Starting image slice. + \param z1 Ending image slice. + **/ + CImg get_slices(const int z0, const int z1) const { + return get_crop(0,0,z0,0,width() - 1,height() - 1,z1,spectrum() - 1); + } + + //! Return specified range of image slices \inplace. + CImg& slices(const int z0, const int z1) { + return get_slices(z0,z1).move_to(*this); + } + + //! Return specified image channel. + /** + \param c0 Image channel. + **/ + CImg get_channel(const int c0) const { + return get_channels(c0,c0); + } + + //! Return specified image channel \inplace. + CImg& channel(const int c0) { + return channels(c0,c0); + } + + //! Return specified range of image channels. + /** + \param c0 Starting image channel. + \param c1 Ending image channel. + **/ + CImg get_channels(const int c0, const int c1) const { + return get_crop(0,0,0,c0,width() - 1,height() - 1,depth() - 1,c1); + } + + //! Return specified range of image channels \inplace. + CImg& channels(const int c0, const int c1) { + return get_channels(c0,c1).move_to(*this); + } + + //! Return stream line of a 2D or 3D vector field. + CImg get_streamline(const float x, const float y, const float z, + const float L=256, const float dl=0.1f, + const unsigned int interpolation_type=2, const bool is_backward_tracking=false, + const bool is_oriented_only=false) const { + if (_spectrum!=2 && _spectrum!=3) + throw CImgInstanceException(_cimg_instance + "streamline(): Instance is not a 2D or 3D vector field.", + cimg_instance); + if (_spectrum==2) { + if (is_oriented_only) { + typename CImg::_functor4d_streamline2d_oriented func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,true, + 0,0,0,_width - 1.f,_height - 1.f,0.f); + } else { + typename CImg::_functor4d_streamline2d_directed func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,false, + 0,0,0,_width - 1.f,_height - 1.f,0.f); + } + } + if (is_oriented_only) { + typename CImg::_functor4d_streamline3d_oriented func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,true, + 0,0,0,_width - 1.f,_height - 1.f,_depth - 1.f); + } + typename CImg::_functor4d_streamline3d_directed func(*this); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,false, + 0,0,0,_width - 1.f,_height - 1.f,_depth - 1.f); + } + + //! Return stream line of a 3D vector field. + /** + \param func Vector field function. + \param x X-coordinate of the starting point of the streamline. + \param y Y-coordinate of the starting point of the streamline. + \param z Z-coordinate of the starting point of the streamline. + \param L Streamline length. + \param dl Streamline length increment. + \param interpolation_type Type of interpolation. + Can be { 0=nearest int | 1=linear | 2=2nd-order RK | 3=4th-order RK. }. + \param is_backward_tracking Tells if the streamline is estimated forward or backward. + \param is_oriented_only Tells if the direction of the vectors must be ignored. + \param x0 X-coordinate of the first bounding-box vertex. + \param y0 Y-coordinate of the first bounding-box vertex. + \param z0 Z-coordinate of the first bounding-box vertex. + \param x1 X-coordinate of the second bounding-box vertex. + \param y1 Y-coordinate of the second bounding-box vertex. + \param z1 Z-coordinate of the second bounding-box vertex. + **/ + template + static CImg streamline(const tfunc& func, + const float x, const float y, const float z, + const float L=256, const float dl=0.1f, + const unsigned int interpolation_type=2, const bool is_backward_tracking=false, + const bool is_oriented_only=false, + const float x0=0, const float y0=0, const float z0=0, + const float x1=0, const float y1=0, const float z1=0) { + if (dl<=0) + throw CImgArgumentException("CImg<%s>::streamline(): Invalid specified integration length %g " + "(should be >0).", + pixel_type(), + dl); + + const bool is_bounded = (x0!=x1 || y0!=y1 || z0!=z1); + if (L<=0 || (is_bounded && (xx1 || yy1 || zz1))) return CImg(); + const unsigned int size_L = (unsigned int)cimg::round(L/dl + 1); + CImg coordinates(size_L,3); + const float dl2 = dl/2; + float + *ptr_x = coordinates.data(0,0), + *ptr_y = coordinates.data(0,1), + *ptr_z = coordinates.data(0,2), + pu = (float)(dl*func(x,y,z,0)), + pv = (float)(dl*func(x,y,z,1)), + pw = (float)(dl*func(x,y,z,2)), + X = x, Y = y, Z = z; + + switch (interpolation_type) { + case 0 : { // Nearest integer interpolation + cimg_forX(coordinates,l) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + const int + xi = (int)(X>0?X + 0.5f:X - 0.5f), + yi = (int)(Y>0?Y + 0.5f:Y - 0.5f), + zi = (int)(Z>0?Z + 0.5f:Z - 0.5f); + float + u = (float)(dl*func((float)xi,(float)yi,(float)zi,0)), + v = (float)(dl*func((float)xi,(float)yi,(float)zi,1)), + w = (float)(dl*func((float)xi,(float)yi,(float)zi,2)); + if (is_oriented_only && u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } break; + case 1 : { // First-order interpolation + cimg_forX(coordinates,l) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + float + u = (float)(dl*func(X,Y,Z,0)), + v = (float)(dl*func(X,Y,Z,1)), + w = (float)(dl*func(X,Y,Z,2)); + if (is_oriented_only && u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } break; + case 2 : { // Second order interpolation + cimg_forX(coordinates,l) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + float + u0 = (float)(dl2*func(X,Y,Z,0)), + v0 = (float)(dl2*func(X,Y,Z,1)), + w0 = (float)(dl2*func(X,Y,Z,2)); + if (is_oriented_only && u0*pu + v0*pv + w0*pw<0) { u0 = -u0; v0 = -v0; w0 = -w0; } + float + u = (float)(dl*func(X + u0,Y + v0,Z + w0,0)), + v = (float)(dl*func(X + u0,Y + v0,Z + w0,1)), + w = (float)(dl*func(X + u0,Y + v0,Z + w0,2)); + if (is_oriented_only && u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } break; + default : { // Fourth order interpolation + cimg_forX(coordinates,k) { + *(ptr_x++) = X; *(ptr_y++) = Y; *(ptr_z++) = Z; + float + u0 = (float)(dl2*func(X,Y,Z,0)), + v0 = (float)(dl2*func(X,Y,Z,1)), + w0 = (float)(dl2*func(X,Y,Z,2)); + if (is_oriented_only && u0*pu + v0*pv + w0*pw<0) { u0 = -u0; v0 = -v0; w0 = -w0; } + float + u1 = (float)(dl2*func(X + u0,Y + v0,Z + w0,0)), + v1 = (float)(dl2*func(X + u0,Y + v0,Z + w0,1)), + w1 = (float)(dl2*func(X + u0,Y + v0,Z + w0,2)); + if (is_oriented_only && u1*pu + v1*pv + w1*pw<0) { u1 = -u1; v1 = -v1; w1 = -w1; } + float + u2 = (float)(dl2*func(X + u1,Y + v1,Z + w1,0)), + v2 = (float)(dl2*func(X + u1,Y + v1,Z + w1,1)), + w2 = (float)(dl2*func(X + u1,Y + v1,Z + w1,2)); + if (is_oriented_only && u2*pu + v2*pv + w2*pw<0) { u2 = -u2; v2 = -v2; w2 = -w2; } + float + u3 = (float)(dl2*func(X + u2,Y + v2,Z + w2,0)), + v3 = (float)(dl2*func(X + u2,Y + v2,Z + w2,1)), + w3 = (float)(dl2*func(X + u2,Y + v2,Z + w2,2)); + if (is_oriented_only && u2*pu + v2*pv + w2*pw<0) { u3 = -u3; v3 = -v3; w3 = -w3; } + const float + u = (u0 + u3)/3 + (u1 + u2)/1.5f, + v = (v0 + v3)/3 + (v1 + v2)/1.5f, + w = (w0 + w3)/3 + (w1 + w2)/1.5f; + if (is_backward_tracking) { X-=(pu=u); Y-=(pv=v); Z-=(pw=w); } else { X+=(pu=u); Y+=(pv=v); Z+=(pw=w); } + if (is_bounded && (Xx1 || Yy1 || Zz1)) break; + } + } + } + if (ptr_x!=coordinates.data(0,1)) coordinates.resize((int)(ptr_x-coordinates.data()),3,1,1,0); + return coordinates; + } + + //! Return stream line of a 3D vector field \overloading. + static CImg streamline(const char *const expression, + const float x, const float y, const float z, + const float L=256, const float dl=0.1f, + const unsigned int interpolation_type=2, const bool is_backward_tracking=true, + const bool is_oriented_only=false, + const float x0=0, const float y0=0, const float z0=0, + const float x1=0, const float y1=0, const float z1=0) { + _functor4d_streamline_expr func(expression); + return streamline(func,x,y,z,L,dl,interpolation_type,is_backward_tracking,is_oriented_only,x0,y0,z0,x1,y1,z1); + } + + struct _functor4d_streamline2d_directed { + const CImg& ref; + _functor4d_streamline2d_directed(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return c<2?(float)ref._linear_atXY(x,y,(int)z,c):0; + } + }; + + struct _functor4d_streamline3d_directed { + const CImg& ref; + _functor4d_streamline3d_directed(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return (float)ref._linear_atXYZ(x,y,z,c); + } + }; + + struct _functor4d_streamline2d_oriented { + const CImg& ref; + CImg *pI; + _functor4d_streamline2d_oriented(const CImg& pref):ref(pref),pI(0) { pI = new CImg(2,2,1,2); } + ~_functor4d_streamline2d_oriented() { delete pI; } + float operator()(const float x, const float y, const float z, const unsigned int c) const { +#define _cimg_vecalign2d(i,j) \ + if (I(i,j,0)*I(0,0,0) + I(i,j,1)*I(0,0,1)<0) { I(i,j,0) = -I(i,j,0); I(i,j,1) = -I(i,j,1); } + int + xi = (int)x - (x>=0?0:1), nxi = xi + 1, + yi = (int)y - (y>=0?0:1), nyi = yi + 1, + zi = (int)z; + const float + dx = x - xi, + dy = y - yi; + if (c==0) { + CImg& I = *pI; + if (xi<0) xi = 0; + if (nxi<0) nxi = 0; + if (xi>=ref.width()) xi = ref.width() - 1; + if (nxi>=ref.width()) nxi = ref.width() - 1; + if (yi<0) yi = 0; + if (nyi<0) nyi = 0; + if (yi>=ref.height()) yi = ref.height() - 1; + if (nyi>=ref.height()) nyi = ref.height() - 1; + I(0,0,0) = (float)ref(xi,yi,zi,0); I(0,0,1) = (float)ref(xi,yi,zi,1); + I(1,0,0) = (float)ref(nxi,yi,zi,0); I(1,0,1) = (float)ref(nxi,yi,zi,1); + I(1,1,0) = (float)ref(nxi,nyi,zi,0); I(1,1,1) = (float)ref(nxi,nyi,zi,1); + I(0,1,0) = (float)ref(xi,nyi,zi,0); I(0,1,1) = (float)ref(xi,nyi,zi,1); + _cimg_vecalign2d(1,0); _cimg_vecalign2d(1,1); _cimg_vecalign2d(0,1); + } + return c<2?(float)pI->_linear_atXY(dx,dy,0,c):0; + } + }; + + struct _functor4d_streamline3d_oriented { + const CImg& ref; + CImg *pI; + _functor4d_streamline3d_oriented(const CImg& pref):ref(pref),pI(0) { pI = new CImg(2,2,2,3); } + ~_functor4d_streamline3d_oriented() { delete pI; } + float operator()(const float x, const float y, const float z, const unsigned int c) const { +#define _cimg_vecalign3d(i,j,k) if (I(i,j,k,0)*I(0,0,0,0) + I(i,j,k,1)*I(0,0,0,1) + I(i,j,k,2)*I(0,0,0,2)<0) { \ + I(i,j,k,0) = -I(i,j,k,0); I(i,j,k,1) = -I(i,j,k,1); I(i,j,k,2) = -I(i,j,k,2); } + int + xi = (int)x - (x>=0?0:1), nxi = xi + 1, + yi = (int)y - (y>=0?0:1), nyi = yi + 1, + zi = (int)z - (z>=0?0:1), nzi = zi + 1; + const float + dx = x - xi, + dy = y - yi, + dz = z - zi; + if (c==0) { + CImg& I = *pI; + if (xi<0) xi = 0; + if (nxi<0) nxi = 0; + if (xi>=ref.width()) xi = ref.width() - 1; + if (nxi>=ref.width()) nxi = ref.width() - 1; + if (yi<0) yi = 0; + if (nyi<0) nyi = 0; + if (yi>=ref.height()) yi = ref.height() - 1; + if (nyi>=ref.height()) nyi = ref.height() - 1; + if (zi<0) zi = 0; + if (nzi<0) nzi = 0; + if (zi>=ref.depth()) zi = ref.depth() - 1; + if (nzi>=ref.depth()) nzi = ref.depth() - 1; + I(0,0,0,0) = (float)ref(xi,yi,zi,0); I(0,0,0,1) = (float)ref(xi,yi,zi,1); + I(0,0,0,2) = (float)ref(xi,yi,zi,2); I(1,0,0,0) = (float)ref(nxi,yi,zi,0); + I(1,0,0,1) = (float)ref(nxi,yi,zi,1); I(1,0,0,2) = (float)ref(nxi,yi,zi,2); + I(1,1,0,0) = (float)ref(nxi,nyi,zi,0); I(1,1,0,1) = (float)ref(nxi,nyi,zi,1); + I(1,1,0,2) = (float)ref(nxi,nyi,zi,2); I(0,1,0,0) = (float)ref(xi,nyi,zi,0); + I(0,1,0,1) = (float)ref(xi,nyi,zi,1); I(0,1,0,2) = (float)ref(xi,nyi,zi,2); + I(0,0,1,0) = (float)ref(xi,yi,nzi,0); I(0,0,1,1) = (float)ref(xi,yi,nzi,1); + I(0,0,1,2) = (float)ref(xi,yi,nzi,2); I(1,0,1,0) = (float)ref(nxi,yi,nzi,0); + I(1,0,1,1) = (float)ref(nxi,yi,nzi,1); I(1,0,1,2) = (float)ref(nxi,yi,nzi,2); + I(1,1,1,0) = (float)ref(nxi,nyi,nzi,0); I(1,1,1,1) = (float)ref(nxi,nyi,nzi,1); + I(1,1,1,2) = (float)ref(nxi,nyi,nzi,2); I(0,1,1,0) = (float)ref(xi,nyi,nzi,0); + I(0,1,1,1) = (float)ref(xi,nyi,nzi,1); I(0,1,1,2) = (float)ref(xi,nyi,nzi,2); + _cimg_vecalign3d(1,0,0); _cimg_vecalign3d(1,1,0); _cimg_vecalign3d(0,1,0); + _cimg_vecalign3d(0,0,1); _cimg_vecalign3d(1,0,1); _cimg_vecalign3d(1,1,1); _cimg_vecalign3d(0,1,1); + } + return (float)pI->_linear_atXYZ(dx,dy,dz,c); + } + }; + + struct _functor4d_streamline_expr { + _cimg_math_parser *mp; + ~_functor4d_streamline_expr() { mp->end(); delete mp; } + _functor4d_streamline_expr(const char *const expr):mp(0) { + mp = new _cimg_math_parser(expr,"streamline",CImg::const_empty(),0); + } + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return (float)(*mp)(x,y,z,c); + } + }; + + //! Return a shared-memory image referencing a range of pixels of the image instance. + /** + \param x0 X-coordinate of the starting pixel. + \param x1 X-coordinate of the ending pixel. + \param y0 Y-coordinate. + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_points(const unsigned int x0, const unsigned int x1, + const unsigned int y0=0, const unsigned int z0=0, const unsigned int c0=0) { + const ulongT + beg = (ulongT)offset(x0,y0,z0,c0), + end = (ulongT)offset(x1,y0,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_points(): Invalid request of a shared-memory subset (%u->%u,%u,%u,%u).", + cimg_instance, + x0,x1,y0,z0,c0); + return CImg(_data + beg,x1 - x0 + 1,1,1,1,true); + } + + //! Return a shared-memory image referencing a range of pixels of the image instance \const. + const CImg get_shared_points(const unsigned int x0, const unsigned int x1, + const unsigned int y0=0, const unsigned int z0=0, const unsigned int c0=0) const { + const ulongT + beg = (ulongT)offset(x0,y0,z0,c0), + end = (ulongT)offset(x1,y0,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_points(): Invalid request of a shared-memory subset (%u->%u,%u,%u,%u).", + cimg_instance, + x0,x1,y0,z0,c0); + return CImg(_data + beg,x1 - x0 + 1,1,1,1,true); + } + + //! Return a shared-memory image referencing a range of rows of the image instance. + /** + \param y0 Y-coordinate of the starting row. + \param y1 Y-coordinate of the ending row. + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_rows(const unsigned int y0, const unsigned int y1, + const unsigned int z0=0, const unsigned int c0=0) { + const ulongT + beg = (ulongT)offset(0,y0,z0,c0), + end = (ulongT)offset(0,y1,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_rows(): Invalid request of a shared-memory subset " + "(0->%u,%u->%u,%u,%u).", + cimg_instance, + _width - 1,y0,y1,z0,c0); + return CImg(_data + beg,_width,y1 - y0 + 1,1,1,true); + } + + //! Return a shared-memory image referencing a range of rows of the image instance \const. + const CImg get_shared_rows(const unsigned int y0, const unsigned int y1, + const unsigned int z0=0, const unsigned int c0=0) const { + const ulongT + beg = (ulongT)offset(0,y0,z0,c0), + end = (ulongT)offset(0,y1,z0,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_rows(): Invalid request of a shared-memory subset " + "(0->%u,%u->%u,%u,%u).", + cimg_instance, + _width - 1,y0,y1,z0,c0); + return CImg(_data + beg,_width,y1 - y0 + 1,1,1,true); + } + + //! Return a shared-memory image referencing one row of the image instance. + /** + \param y0 Y-coordinate. + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_row(const unsigned int y0, const unsigned int z0=0, const unsigned int c0=0) { + return get_shared_rows(y0,y0,z0,c0); + } + + //! Return a shared-memory image referencing one row of the image instance \const. + const CImg get_shared_row(const unsigned int y0, const unsigned int z0=0, const unsigned int c0=0) const { + return get_shared_rows(y0,y0,z0,c0); + } + + //! Return a shared memory image referencing a range of slices of the image instance. + /** + \param z0 Z-coordinate of the starting slice. + \param z1 Z-coordinate of the ending slice. + \param c0 C-coordinate. + **/ + CImg get_shared_slices(const unsigned int z0, const unsigned int z1, const unsigned int c0=0) { + const ulongT + beg = (ulongT)offset(0,0,z0,c0), + end = (ulongT)offset(0,0,z1,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_slices(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,%u->%u,%u).", + cimg_instance, + _width - 1,_height - 1,z0,z1,c0); + return CImg(_data + beg,_width,_height,z1 - z0 + 1,1,true); + } + + //! Return a shared memory image referencing a range of slices of the image instance \const. + const CImg get_shared_slices(const unsigned int z0, const unsigned int z1, const unsigned int c0=0) const { + const ulongT + beg = (ulongT)offset(0,0,z0,c0), + end = (ulongT)offset(0,0,z1,c0); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_slices(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,%u->%u,%u).", + cimg_instance, + _width - 1,_height - 1,z0,z1,c0); + return CImg(_data + beg,_width,_height,z1 - z0 + 1,1,true); + } + + //! Return a shared-memory image referencing one slice of the image instance. + /** + \param z0 Z-coordinate. + \param c0 C-coordinate. + **/ + CImg get_shared_slice(const unsigned int z0, const unsigned int c0=0) { + return get_shared_slices(z0,z0,c0); + } + + //! Return a shared-memory image referencing one slice of the image instance \const. + const CImg get_shared_slice(const unsigned int z0, const unsigned int c0=0) const { + return get_shared_slices(z0,z0,c0); + } + + //! Return a shared-memory image referencing a range of channels of the image instance. + /** + \param c0 C-coordinate of the starting channel. + \param c1 C-coordinate of the ending channel. + **/ + CImg get_shared_channels(const unsigned int c0, const unsigned int c1) { + const ulongT + beg = (ulongT)offset(0,0,0,c0), + end = (ulongT)offset(0,0,0,c1); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_channels(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,0->%u,%u->%u).", + cimg_instance, + _width - 1,_height - 1,_depth - 1,c0,c1); + return CImg(_data + beg,_width,_height,_depth,c1 - c0 + 1,true); + } + + //! Return a shared-memory image referencing a range of channels of the image instance \const. + const CImg get_shared_channels(const unsigned int c0, const unsigned int c1) const { + const ulongT + beg = (ulongT)offset(0,0,0,c0), + end = (ulongT)offset(0,0,0,c1); + if (beg>end || beg>=size() || end>=size()) + throw CImgArgumentException(_cimg_instance + "get_shared_channels(): Invalid request of a shared-memory subset " + "(0->%u,0->%u,0->%u,%u->%u).", + cimg_instance, + _width - 1,_height - 1,_depth - 1,c0,c1); + return CImg(_data + beg,_width,_height,_depth,c1 - c0 + 1,true); + } + + //! Return a shared-memory image referencing one channel of the image instance. + /** + \param c0 C-coordinate. + **/ + CImg get_shared_channel(const unsigned int c0) { + return get_shared_channels(c0,c0); + } + + //! Return a shared-memory image referencing one channel of the image instance \const. + const CImg get_shared_channel(const unsigned int c0) const { + return get_shared_channels(c0,c0); + } + + //! Return a shared-memory version of the image instance. + CImg get_shared() { + return CImg(_data,_width,_height,_depth,_spectrum,true); + } + + //! Return a shared-memory version of the image instance \const. + const CImg get_shared() const { + return CImg(_data,_width,_height,_depth,_spectrum,true); + } + + //! Split image into a list along specified axis. + /** + \param axis Splitting axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param nb Number of split parts. + \note + - If \c nb==0, instance image is split into blocs of egal values along the specified axis. + - If \c nb<=0, instance image is split into blocs of -\c nb pixel wide. + - If \c nb>0, instance image is split into \c nb blocs. + **/ + CImgList get_split(const char axis, const int nb=-1) const { + CImgList res; + if (is_empty()) return res; + const char _axis = cimg::lowercase(axis); + + if (nb<0) { // Split by bloc size + const unsigned int dp = (unsigned int)(nb?-nb:1); + switch (_axis) { + case 'x': { + if (_width>dp) { + res.assign(_width/dp + (_width%dp?1:0),1,1); + const unsigned int pe = _width - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _height*_depth*_spectrum>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(p,0,0,0,p + dp - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res[p/dp]); + get_crop((res._width - 1)*dp,0,0,0,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } break; + case 'y': { + if (_height>dp) { + res.assign(_height/dp + (_height%dp?1:0),1,1); + const unsigned int pe = _height - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _width*_depth*_spectrum>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(0,p,0,0,_width - 1,p + dp - 1,_depth - 1,_spectrum - 1).move_to(res[p/dp]); + get_crop(0,(res._width - 1)*dp,0,0,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } break; + case 'z': { + if (_depth>dp) { + res.assign(_depth/dp + (_depth%dp?1:0),1,1); + const unsigned int pe = _depth - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _width*_height*_spectrum>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(0,0,p,0,_width - 1,_height - 1,p + dp - 1,_spectrum - 1).move_to(res[p/dp]); + get_crop(0,0,(res._width - 1)*dp,0,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } break; + case 'c' : { + if (_spectrum>dp) { + res.assign(_spectrum/dp + (_spectrum%dp?1:0),1,1); + const unsigned int pe = _spectrum - dp; + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*128 && + _width*_height*_depth>=128)) + for (int p = 0; p<(int)pe; p+=dp) + get_crop(0,0,0,p,_width - 1,_height - 1,_depth - 1,p + dp - 1).move_to(res[p/dp]); + get_crop(0,0,0,(res._width - 1)*dp,_width - 1,_height - 1,_depth - 1,_spectrum - 1).move_to(res.back()); + } else res.assign(*this); + } + } + } else if (nb>0) { // Split by number of (non-homogeneous) blocs + const unsigned int siz = _axis=='x'?_width:_axis=='y'?_height:_axis=='z'?_depth:_axis=='c'?_spectrum:0; + if ((unsigned int)nb>siz) + throw CImgArgumentException(_cimg_instance + "get_split(): Instance cannot be split along %c-axis into %u blocs.", + cimg_instance, + axis,nb); + if (nb==1) res.assign(*this); + else { + int err = (int)siz; + unsigned int _p = 0; + switch (_axis) { + case 'x' : { + cimg_forX(*this,p) if ((err-=nb)<=0) { + get_crop(_p,0,0,0,p,_height - 1,_depth - 1,_spectrum - 1).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } break; + case 'y' : { + cimg_forY(*this,p) if ((err-=nb)<=0) { + get_crop(0,_p,0,0,_width - 1,p,_depth - 1,_spectrum - 1).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } break; + case 'z' : { + cimg_forZ(*this,p) if ((err-=nb)<=0) { + get_crop(0,0,_p,0,_width - 1,_height - 1,p,_spectrum - 1).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } break; + case 'c' : { + cimg_forC(*this,p) if ((err-=nb)<=0) { + get_crop(0,0,0,_p,_width - 1,_height - 1,_depth - 1,p).move_to(res); + err+=(int)siz; + _p = p + 1U; + } + } + } + } + } else { // Split by egal values according to specified axis + T current = *_data; + switch (_axis) { + case 'x' : { + int i0 = 0; + cimg_forX(*this,i) + if ((*this)(i)!=current) { get_columns(i0,i - 1).move_to(res); i0 = i; current = (*this)(i); } + get_columns(i0,width() - 1).move_to(res); + } break; + case 'y' : { + int i0 = 0; + cimg_forY(*this,i) + if ((*this)(0,i)!=current) { get_rows(i0,i - 1).move_to(res); i0 = i; current = (*this)(0,i); } + get_rows(i0,height() - 1).move_to(res); + } break; + case 'z' : { + int i0 = 0; + cimg_forZ(*this,i) + if ((*this)(0,0,i)!=current) { get_slices(i0,i - 1).move_to(res); i0 = i; current = (*this)(0,0,i); } + get_slices(i0,depth() - 1).move_to(res); + } break; + case 'c' : { + int i0 = 0; + cimg_forC(*this,i) + if ((*this)(0,0,0,i)!=current) { get_channels(i0,i - 1).move_to(res); i0 = i; current = (*this)(0,0,0,i); } + get_channels(i0,spectrum() - 1).move_to(res); + } break; + default : { + longT i0 = 0; + cimg_foroff(*this,i) + if ((*this)[i]!=current) { + CImg(_data + i0,1,(unsigned int)(i - i0)).move_to(res); + i0 = (longT)i; current = (*this)[i]; + } + CImg(_data + i0,1,(unsigned int)(size() - i0)).move_to(res); + } + } + } + return res; + } + + //! Split image into a list of sub-images, according to a specified splitting value sequence and optionally axis. + /** + \param values Splitting value sequence. + \param axis Axis along which the splitting is performed. Can be '0' to ignore axis. + \param keep_values Tells if the splitting sequence must be kept in the split blocs. + **/ + template + CImgList get_split(const CImg& values, const char axis=0, const bool keep_values=true) const { + typedef _cimg_Tt Tt; + + CImgList res; + if (is_empty()) return res; + const ulongT vsiz = values.size(); + const char _axis = cimg::lowercase(axis); + if (!vsiz) return CImgList(*this); + if (vsiz==1) { // Split according to a single value + const T value = (T)*values; + switch (_axis) { + case 'x' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_width && (*this)(i)==value) ++i; + if (i>i0) { if (keep_values) get_columns(i0,i - 1).move_to(res); i0 = i; } + while (i<_width && (*this)(i)!=value) ++i; + if (i>i0) { get_columns(i0,i - 1).move_to(res); i0 = i; } + } while (i<_width); + } break; + case 'y' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_height && (*this)(0,i)==value) ++i; + if (i>i0) { if (keep_values) get_rows(i0,i - 1).move_to(res); i0 = i; } + while (i<_height && (*this)(0,i)!=value) ++i; + if (i>i0) { get_rows(i0,i - 1).move_to(res); i0 = i; } + } while (i<_height); + } break; + case 'z' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_depth && (*this)(0,0,i)==value) ++i; + if (i>i0) { if (keep_values) get_slices(i0,i - 1).move_to(res); i0 = i; } + while (i<_depth && (*this)(0,0,i)!=value) ++i; + if (i>i0) { get_slices(i0,i - 1).move_to(res); i0 = i; } + } while (i<_depth); + } break; + case 'c' : { + unsigned int i0 = 0, i = 0; + do { + while (i<_spectrum && (*this)(0,0,0,i)==value) ++i; + if (i>i0) { if (keep_values) get_channels(i0,i - 1).move_to(res); i0 = i; } + while (i<_spectrum && (*this)(0,0,0,i)!=value) ++i; + if (i>i0) { get_channels(i0,i - 1).move_to(res); i0 = i; } + } while (i<_spectrum); + } break; + default : { + const ulongT siz = size(); + ulongT i0 = 0, i = 0; + do { + while (ii0) { + if (keep_values) CImg(_data + i0,1,(unsigned int)(i - i0)).move_to(res); + i0 = i; + } + while (ii0) { CImg(_data + i0,1,(unsigned int)(i - i0)).move_to(res); i0 = i; } + } while (i=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_columns(i0,i1 - 1).move_to(res); + if (keep_values) get_columns(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_width); + if (i0<_width) get_columns(i0,width() - 1).move_to(res); + } break; + case 'y' : { + unsigned int i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)(0,i)==(Tt)*values) { + i1 = i; j = 0; + while (i<_height && (Tt)(*this)(0,i)==(Tt)values[j]) { ++i; if (++j>=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_rows(i0,i1 - 1).move_to(res); + if (keep_values) get_rows(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_height); + if (i0<_height) get_rows(i0,height() - 1).move_to(res); + } break; + case 'z' : { + unsigned int i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)(0,0,i)==(Tt)*values) { + i1 = i; j = 0; + while (i<_depth && (Tt)(*this)(0,0,i)==(Tt)values[j]) { ++i; if (++j>=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_slices(i0,i1 - 1).move_to(res); + if (keep_values) get_slices(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_depth); + if (i0<_depth) get_slices(i0,depth() - 1).move_to(res); + } break; + case 'c' : { + unsigned int i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)(0,0,0,i)==(Tt)*values) { + i1 = i; j = 0; + while (i<_spectrum && (Tt)(*this)(0,0,0,i)==(Tt)values[j]) { ++i; if (++j>=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) get_channels(i0,i1 - 1).move_to(res); + if (keep_values) get_channels(i1,i - 1).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i<_spectrum); + if (i0<_spectrum) get_channels(i0,spectrum() - 1).move_to(res); + } break; + default : { + const ulongT siz = size(); + ulongT i0 = 0, i1 = 0, i = 0; + do { + if ((Tt)(*this)[i]==(Tt)*values) { + i1 = i; j = 0; + while (i=vsiz) j = 0; } + i-=j; + if (i>i1) { + if (i1>i0) CImg(_data + i0,1,(unsigned int)(i1 - i0)).move_to(res); + if (keep_values) CImg(_data + i1,1,(unsigned int)(i - i1)).move_to(res); + i0 = i; + } else ++i; + } else ++i; + } while (i(_data + i0,1,(unsigned int)(siz - i0)).move_to(res); + } break; + } + } + return res; + } + + //! Append two images along specified axis. + /** + \param img Image to append with instance image. + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Append alignment in \c [0,1]. + **/ + template + CImg& append(const CImg& img, const char axis='x', const float align=0) { + if (is_empty()) return assign(img,false); + if (!img) return *this; + return CImgList(*this,true).insert(img).get_append(axis,align).move_to(*this); + } + + //! Append two images along specified axis \specialization. + CImg& append(const CImg& img, const char axis='x', const float align=0) { + if (is_empty()) return assign(img,false); + if (!img) return *this; + return CImgList(*this,img,true).get_append(axis,align).move_to(*this); + } + + //! Append two images along specified axis \const. + template + CImg<_cimg_Tt> get_append(const CImg& img, const char axis='x', const float align=0) const { + if (is_empty()) return +img; + if (!img) return +*this; + return CImgList<_cimg_Tt>(*this,true).insert(img).get_append(axis,align); + } + + //! Append two images along specified axis \specialization. + CImg get_append(const CImg& img, const char axis='x', const float align=0) const { + if (is_empty()) return +img; + if (!img) return +*this; + return CImgList(*this,img,true).get_append(axis,align); + } + + //@} + //--------------------------------------- + // + //! \name Filtering / Transforms + //@{ + //--------------------------------------- + + //! Correlate image by a kernel. + /** + \param kernel = the correlation kernel. + \param boundary_conditions Boundary condition. Can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. + \param is_normalized = enable local normalization. + \param channel mode Channel processing mode. Can be { 0=sum inputs | 1=one-for-one | 2=expand } + \param xcenter X-coordinate of the kernel center (~0U means 'centered'). + \param xstart Starting X-coordinate of the instance image. + \param xend Ending X-coordinate of the instance image. + \param xstride Stride along the X-axis. + \param xdilation Dilation along the X-axis. + \param ycenter Y-coordinate of the kernel center (~0U means 'centered'). + \param ystart Starting Y-coordinate of the instance image. + \param yend Ending Y-coordinate of the instance image. + \param ystride Stride along the Y-axis. + \param ydilation Dilation along the Y-axis. + \param zcenter Z-coordinate of the kernel center (~0U means 'centered'). + \param zstart Starting Z-coordinate of the instance image. + \param zend Ending Z-coordinate of the instance image. + \param zstride Stride along the Z-axis. + \param zdilation Dilation along the Z-axis. + \note + - The correlation of the image instance \p *this by the kernel \p kernel is defined to be: + res(x,y,z) = sum_{i,j,k} (*this)(\alpha_x\;x + \beta_x\;(i - c_x),\alpha_y\;y + \beta_y\;(j - + c_y),\alpha_z\;z + \beta_z\;(k - c_z))*kernel(i,j,k). + **/ + template + CImg& correlate(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) { + if (is_empty() || !kernel) return *this; + return get_correlate(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation).move_to(*this); + } + + template + CImg<_cimg_Ttfloat> get_correlate(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, + const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, + const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) const { + return _correlate(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation,false); + } + + //! Correlate image by a kernel \newinstance. + template + CImg<_cimg_Ttfloat> _correlate(const CImg& kernel, const unsigned int boundary_conditions, + const bool is_normalized, const unsigned int channel_mode, + const unsigned int xcenter, const unsigned int ycenter, const unsigned int zcenter, + const unsigned int xstart, const unsigned int ystart, const unsigned zstart, + const unsigned int xend, const unsigned int yend, const unsigned int zend, + const float xstride, const float ystride, const float zstride, + const float xdilation, const float ydilation, const float zdilation, + const bool is_convolve) const { + if (is_empty() || !kernel) return *this; + typedef _cimg_Ttfloat Ttfloat; + CImg res; + _cimg_abort_init_openmp; + cimg_abort_init; + + if (xstart>xend || ystart>yend || zstart>zend) + throw CImgArgumentException(_cimg_instance + "%s(): Invalid xyz-start/end arguments (start = (%u,%u,%u), end = (%u,%u,%u)).", + cimg_instance, + is_convolve?"convolve":"correlate", + xstart,ystart,zstart,xend,yend,zend); + if (xstride<=0 || ystride<=0 || zstride<=0) + throw CImgArgumentException(_cimg_instance + "%s(): Invalid stride arguments (%g,%g,%g).", + cimg_instance, + is_convolve?"convolve":"correlate", + xstride,ystride,zstride); + const int + _xstart = (int)std::min(xstart,_width - 1), + _ystart = (int)std::min(ystart,_height - 1), + _zstart = (int)std::min(zstart,_depth - 1), + _xend = (int)std::min(xend,_width - 1), + _yend = (int)std::min(yend,_height - 1), + _zend = (int)std::min(zend,_depth - 1), + nwidth = 1 + (int)std::floor((_xend - _xstart)/xstride), + nheight = 1 + (int)std::floor((_yend - _ystart)/ystride), + ndepth = 1 + (int)std::floor((_zend + _zstart)/zstride), + _xstride = (int)cimg::round(xstride), + _ystride = (int)cimg::round(ystride), + _zstride = (int)cimg::round(zstride); + + const ulongT + res_whd = (ulongT)nwidth*nheight*ndepth, + res_size = res_whd*res._spectrum; + const bool + is_inner_parallel = res_whd>=(cimg_openmp_sizefactor)*32768, + is_outer_parallel = res_size>=(cimg_openmp_sizefactor)*32768; + cimg::unused(is_inner_parallel,is_outer_parallel); + + int + _xcenter = xcenter==~0U?kernel.width()/2 - 1 + (kernel.width()%2):(int)std::min(xcenter,kernel._width - 1), + _ycenter = ycenter==~0U?kernel.height()/2 - 1 + (kernel.height()%2):(int)std::min(ycenter,kernel._height - 1), + _zcenter = zcenter==~0U?kernel.depth()/2 - 1 + (kernel.depth()%2):(int)std::min(zcenter,kernel._depth - 1), + _xdilation = (int)cimg::round(xdilation), + _ydilation = (int)cimg::round(ydilation), + _zdilation = (int)cimg::round(zdilation); + + const bool is_int_stride_dilation = + xstride==_xstride && ystride==_ystride && zstride==_zstride && + xdilation==_xdilation && ydilation==_ydilation && zdilation==_zdilation; + + CImg _kernel; + if (is_convolve) { // If convolution, go back to correlation + _kernel = CImg(kernel._data,kernel.size()/kernel._spectrum,1,1,kernel._spectrum,true). + get_mirror('x').resize(kernel,-1); + _xcenter = kernel.width() - 1 - _xcenter; + _ycenter = kernel.height() - 1 - _ycenter; + _zcenter = kernel.depth() - 1 - _zcenter; + } else _kernel = kernel.get_shared(); + + if (_kernel._width==_kernel._height && _kernel._width>1 && _kernel._height>1 && + ((_kernel._depth==1 && _kernel._width<=5) || (_kernel._depth==_kernel._width && _kernel._width<=3)) && + boundary_conditions<=1 && channel_mode && + _xcenter==_kernel.width()/2 - 1 + (_kernel.width()%2) && + _ycenter==_kernel.height()/2 - 1 + (_kernel.height()%2) && + _zcenter==_kernel.depth()/2 - 1 + (_kernel.depth()%2) && + is_int_stride_dilation && _xdilation>=0 && _ydilation>=0 && _zdilation>=0) { + + // Optimized versions for centered 2x2, 3x3, 4x4, 5x5, 2x2x2 and 3x3x3 kernels. + const int dw = 1 - (_kernel.width()%2), dh = 1 - (_kernel.height()%2), dd = 1 - (_kernel.depth()%2); + if (dw || dh || dd) // Force kernel size to be odd + _kernel.get_resize(_kernel.width() + dw,_kernel.height() + dh,_kernel.depth() + dd,_kernel.spectrum(), + 0,0,1,1,1).move_to(_kernel.assign()); + + if (!boundary_conditions) { // Dirichlet -> Add a 1px zero border, then use _correlate() with Neumann + const int + dx = _kernel._width==1?0:1, + dy = _kernel._height==1?0:1, + dz = _kernel._depth==1?0:1; + return get_crop(-dx,-dy,-dz,width() - 1 + dx,height() - 1 + dy,depth() - 1 + dz). + _correlate(_kernel,true,is_normalized,channel_mode,_xcenter,_ycenter,_zcenter, + _xstart + dx,_ystart + dy,_zstart + dz,_xend + dx,_yend + dy,_zend + dz, + xstride,ystride,zstride,xdilation,ydilation,zdilation,false); + + } else { // Neumann boundaries + res.assign(nwidth,nheight,ndepth,std::max(_spectrum,_kernel._spectrum)); + + switch (_kernel._depth) { + case 3 : { // 3x3x3 centered kernel + cimg_forC(res,c) { + cimg_abort_test; + const CImg I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(c%kernel._spectrum); + const int w1 = I.width() - 1, h1 = I.height() - 1, d1 = I.depth() - 1; + CImg _res = res.get_shared_channel(c); + if (is_normalized) { + const Ttfloat M = (Ttfloat)K.magnitude(2), M2 = M*M; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(_res.size(),16384)) + cimg_forXYZ(res,X,Y,Z) { + const int + x = _xstart + _xstride*X, y = _ystart + _ystride*Y, z = _zstart + _zstride*Z, + px = x - _xdilation>0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation0?z - _zdilation:0, nz = z + _zdilation0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation0?z - _zdilation:0, nz = z + _zdilation I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(c%kernel._spectrum); + const int w1 = I.width() - 1, h1 = I.height() - 1; + CImg _res = res.get_shared_channel(c); + if (is_normalized) { + const Ttfloat M = (Ttfloat)K.magnitude(2), M2 = M*M; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(_res.size(),16384)) + cimg_forXYZ(res,X,Y,z) { + const int + x = _xstart + _xstride*X, y = _ystart + _ystride*Y, + px = x - _xdilation>0?x - _xdilation:0, bx = px - _xdilation>0?px - _xdilation:0, + nx = x + _xdilation0?y - _ydilation:0, by = py - _ydilation>0?py - _ydilation:0, + ny = y + _ydilation0?x - _xdilation:0, bx = px - _xdilation>0?px - _xdilation:0, + nx = x + _xdilation0?y - _ydilation:0, by = py - _ydilation>0?py - _ydilation:0, + ny = y + _ydilation I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(c%kernel._spectrum); + CImg _res = res.get_shared_channel(c); + const int w1 = I.width() - 1, h1 = I.height() - 1; + if (is_normalized) { + const Ttfloat M = (Ttfloat)K.magnitude(2), M2 = M*M; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(_res.size(),16384)) + cimg_forXYZ(res,X,Y,z) { + const int + x = _xstart + _xstride*X, y = _ystart + _ystride*Y, + px = x - _xdilation>0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation0?x - _xdilation:0, nx = x + _xdilation0?y - _ydilation:0, ny = y + _ydilation res0 = res.get_shared_channel(0); + for (int c = 1; c K = _kernel.get_shared_channel(kc%_kernel._spectrum); + int w2 = 0, h2 = 0, d2 = 0; + Ttfloat M = 0, M2 = 0; + if (is_normalized) { M = (Ttfloat)K.magnitude(2); M2 = M*M; } + if (boundary_conditions>=3) { w2 = 2*width(); h2 = 2*height(); d2 = 2*depth(); } + res.fill(0); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + cimg_forXYZC(res,x,y,z,c) { + Ttfloat _val, val = 0, N = 0; + + if (is_int_stride_dilation) + cimg_forXYZ(_kernel,p,q,r) { + const int + ix = (int)xstart + _xstride*x + _xdilation*(p - _xcenter), + iy = (int)ystart + _ystride*y + _ydilation*(q - _ycenter), + iz = (int)zstart + _zstride*z + _zdilation*(r - _zcenter); + switch (boundary_conditions) { + case 0 : _val = atXYZ(ix,iy,iz,c,0); break; // Dirichlet + case 1 : _val = _atXYZ(ix,iy,iz,c); break; // Neumann + case 2 : _val = (*this)(cimg::mod(ix,width()),cimg::mod(iy,height()), // Periodic + cimg::mod(iz,depth()),c); break; + default : { // Mirror + const int mx = cimg::mod(ix,w2), my = cimg::mod(iy,h2), mz = cimg::mod(iz,d2); + _val = (*this)(mx I = get_shared_channel(c%_spectrum); + const CImg K = _kernel.get_shared_channel(channel_mode==1?c%_kernel._spectrum:c/_spectrum); + int w2 = 0, h2 = 0, d2 = 0; + Ttfloat M = 0, M2 = 0; + if (is_normalized) { M = (Ttfloat)K.magnitude(2); M2 = M*M; } + if (boundary_conditions>=3) { w2 = 2*I.width(); h2 = 2*I.height(); d2 = 2*I.depth(); } + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + cimg_forXYZ(res,x,y,z) { + Ttfloat _val, val = 0, N = 0; + + if (is_int_stride_dilation) + cimg_forXYZ(_kernel,p,q,r) { + const int + ix = (int)xstart + _xstride*x + _xdilation*(p - _xcenter), + iy = (int)ystart + _ystride*y + _ydilation*(q - _ycenter), + iz = (int)zstart + _zstride*z + _zdilation*(r - _zcenter); + switch (boundary_conditions) { + case 0 : _val = I.atXYZ(ix,iy,iz,0,0); break; // Dirichlet + case 1 : _val = I._atXYZ(ix,iy,iz); break; // Neumann + case 2 : _val = I(cimg::mod(ix,I.width()),cimg::mod(iy,I.height()), // Periodic + cimg::mod(iz,I.depth())); break; + default : { // Mirror + const int mx = cimg::mod(ix,w2), my = cimg::mod(iy,h2), mz = cimg::mod(iz,d2); + _val = I(mx + CImg& convolve(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) { + if (is_empty() || !kernel) return *this; + return get_convolve(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation).move_to(*this); + } + + //! Convolve image by a kernel \newinstance. + template + CImg<_cimg_Ttfloat> get_convolve(const CImg& kernel, const unsigned int boundary_conditions=1, + const bool is_normalized=false, const unsigned int channel_mode=1, + const unsigned int xcenter=~0U, const unsigned int ycenter=~0U, + const unsigned int zcenter=~0U, + const unsigned int xstart=0, const unsigned int ystart=0, const unsigned zstart=0, + const unsigned int xend=~0U, const unsigned int yend=~0U, + const unsigned int zend=~0U, + const float xstride=1, const float ystride=1, const float zstride=1, + const float xdilation=1, const float ydilation=1, const float zdilation=1) const { + return _correlate(kernel,boundary_conditions,is_normalized,channel_mode, + xcenter,ycenter,zcenter,xstart,ystart,zstart,xend,yend,zend, + xstride,ystride,zstride,xdilation,ydilation,zdilation,true); + } + + //! Cumulate image values, optionally along specified axis. + /** + \param axis Cumulation axis. Set it to 0 to cumulate all values globally without taking axes into account. + **/ + CImg& cumulate(const char axis=0) { + switch (cimg::lowercase(axis)) { + case 'x' : + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) { + T *ptrd = data(0,y,z,c); + Tlong cumul = (Tlong)0; + cimg_forX(*this,x) { cumul+=(Tlong)*ptrd; *(ptrd++) = (T)cumul; } + } + break; + case 'y' : { + const ulongT w = (ulongT)_width; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*512 && + _width*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) { + T *ptrd = data(x,0,z,c); + Tlong cumul = (Tlong)0; + cimg_forY(*this,y) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; ptrd+=w; } + } + } break; + case 'z' : { + const ulongT wh = (ulongT)_width*_height; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_depth>=(cimg_openmp_sizefactor)*512 && + _width*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) { + T *ptrd = data(x,y,0,c); + Tlong cumul = (Tlong)0; + cimg_forZ(*this,z) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; ptrd+=wh; } + } + } break; + case 'c' : { + const ulongT whd = (ulongT)_width*_height*_depth; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) + cimg_openmp_if(_spectrum>=(cimg_openmp_sizefactor)*512 && _width*_height*_depth>=16)) + cimg_forXYZ(*this,x,y,z) { + T *ptrd = data(x,y,z,0); + Tlong cumul = (Tlong)0; + cimg_forC(*this,c) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; ptrd+=whd; } + } + } break; + default : { // Global cumulation + Tlong cumul = (Tlong)0; + cimg_for(*this,ptrd,T) { cumul+=(Tlong)*ptrd; *ptrd = (T)cumul; } + } + } + return *this; + } + + //! Cumulate image values, optionally along specified axis \newinstance. + CImg get_cumulate(const char axis=0) const { + return CImg(*this,false).cumulate(axis); + } + + //! Cumulate image values, along specified axes. + /** + \param axes Cumulation axes, as a C-string. + \note \c axes may contains multiple characters, e.g. \c "xyz" + **/ + CImg& cumulate(const char *const axes) { + for (const char *s = axes; *s; ++s) cumulate(*s); + return *this; + } + + //! Cumulate image values, along specified axes \newinstance. + CImg get_cumulate(const char *const axes) const { + return CImg(*this,false).cumulate(axes); + } + + //! Erode image by a structuring element. + /** + \param kernel Structuring element. + \param boundary_conditions Boundary conditions. + \param is_real Do the erosion in real (a.k.a 'non-flat') mode (\c true) rather than binary mode (\c false). + **/ + template + CImg& erode(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) { + if (is_empty() || !kernel) return *this; + return get_erode(kernel,boundary_conditions,is_real).move_to(*this); + } + + //! Erode image by a structuring element \newinstance. + template + CImg<_cimg_Tt> get_erode(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) const { + if (is_empty() || !kernel) return *this; + if (!is_real && kernel==0) return CImg(width(),height(),depth(),spectrum(),0); + typedef _cimg_Tt Tt; + CImg res(_width,_height,_depth,std::max(_spectrum,kernel._spectrum)); + const int + mx2 = kernel.width()/2, my2 = kernel.height()/2, mz2 = kernel.depth()/2, + mx1 = kernel.width() - mx2 - 1, my1 = kernel.height() - my2 - 1, mz1 = kernel.depth() - mz2 - 1, + mxe = width() - mx2, mye = height() - my2, mze = depth() - mz2; + const bool + is_inner_parallel = _width*_height*_depth>=(cimg_openmp_sizefactor)*32768, + is_outer_parallel = res.size()>=(cimg_openmp_sizefactor)*32768; + cimg::unused(is_inner_parallel,is_outer_parallel); + _cimg_abort_init_openmp; + cimg_abort_init; + cimg_pragma_openmp(parallel for cimg_openmp_if(!is_inner_parallel && is_outer_parallel)) + cimg_forC(res,c) _cimg_abort_try_openmp { + cimg_abort_test; + const CImg img = get_shared_channel(c%_spectrum); + const CImg K = kernel.get_shared_channel(c%kernel._spectrum); + if (is_real) { // Real erosion + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + for (int z = mz1; z::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx1 + xm,my1 + ym,mz1 + zm); + const Tt cval = (Tt)(img(x + xm,y + ym,z + zm) - mval); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx1 + xm,my1 + ym,mz1 + zm); + const Tt cval = (Tt)(img._atXYZ(x + xm,y + ym,z + zm) - mval); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx1 + xm,my1 + ym,mz1 + zm); + const Tt cval = (Tt)(img.atXYZ(x + xm,y + ym,z + zm,0,(T)0) - mval); + if (cval::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx1 + xm,my1 + ym,mz1 + zm)) { + const Tt cval = (Tt)img(x + xm,y + ym,z + zm); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx1 + xm,my1 + ym,mz1 + zm)) { + const Tt cval = (Tt)img._atXYZ(x + xm,y + ym,z + zm); + if (cval=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt min_val = cimg::type::max(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx1 + xm,my1 + ym,mz1 + zm)) { + const Tt cval = (Tt)img.atXYZ(x + xm,y + ym,z + zm,0,(T)0); + if (cval& erode(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) { + if (is_empty() || (sx==1 && sy==1 && sz==1)) return *this; + if (sx>1 && _width>1) { // Along X-axis + const int L = width(), off = 1, s = (int)sx, _s2 = s/2 + 1, _s1 = s - _s2, s1 = _s1>L?L:_s1, s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forYZC(*this,y,z,c) { + T *const ptrdb = buf._data, *ptrd = buf._data, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(0,y,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val<=cur) { cur = val; is_first = false; }} + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(0,y,z,c); cur = std::min(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val1 && _height>1) { // Along Y-axis + const int L = height(), off = width(), s = (int)sy, _s2 = s/2 + 1, _s1 = s - _s2, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXZC(*this,x,z,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,0,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val<=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,0,z,c); cur = std::min(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val1 && _depth>1) { // Along Z-axis + const int L = depth(), off = width()*height(), s = (int)sz, _s2 = s/2 + 1, _s1 = s - _s2, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXYC(*this,x,y,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,y,0,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val<=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,y,0,c); cur = std::min(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val get_erode(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) const { + return (+*this).erode(sx,sy,sz); + } + + //! Erode the image by a square structuring element of specified size. + /** + \param s Size of the structuring element. + **/ + CImg& erode(const unsigned int s) { + return erode(s,s,s); + } + + //! Erode the image by a square structuring element of specified size \newinstance. + CImg get_erode(const unsigned int s) const { + return (+*this).erode(s); + } + + //! Dilate image by a structuring element. + /** + \param kernel Structuring element. + \param boundary_conditions Boundary conditions. + \param is_real Do the dilation in real (a.k.a 'non-flat') mode (\c true) rather than binary mode (\c false). + **/ + template + CImg& dilate(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) { + if (is_empty() || !kernel) return *this; + return get_dilate(kernel,boundary_conditions,is_real).move_to(*this); + } + + //! Dilate image by a structuring element \newinstance. + template + CImg<_cimg_Tt> get_dilate(const CImg& kernel, const bool boundary_conditions=true, + const bool is_real=false) const { + if (is_empty() || !kernel || (!is_real && kernel==0)) return *this; + typedef _cimg_Tt Tt; + CImg res(_width,_height,_depth,std::max(_spectrum,kernel._spectrum)); + const int + mx1 = kernel.width()/2, my1 = kernel.height()/2, mz1 = kernel.depth()/2, + mx2 = kernel.width() - mx1 - 1, my2 = kernel.height() - my1 - 1, mz2 = kernel.depth() - mz1 - 1, + mxe = width() - mx2, mye = height() - my2, mze = depth() - mz2; + const bool + is_inner_parallel = _width*_height*_depth>=(cimg_openmp_sizefactor)*32768, + is_outer_parallel = res.size()>=(cimg_openmp_sizefactor)*32768; + cimg::unused(is_inner_parallel,is_outer_parallel); + _cimg_abort_init_openmp; + cimg_abort_init; + cimg_pragma_openmp(parallel for cimg_openmp_if(!is_inner_parallel && is_outer_parallel)) + cimg_forC(res,c) _cimg_abort_try_openmp { + cimg_abort_test; + const CImg img = get_shared_channel(c%_spectrum); + const CImg K = kernel.get_shared_channel(c%kernel._spectrum); + if (is_real) { // Real dilation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + for (int z = mz1; z::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx2 - xm,my2 - ym,mz2 - zm); + const Tt cval = (Tt)(img(x + xm,y + ym,z + zm) + mval); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } _cimg_abort_catch_openmp2 + if (boundary_conditions) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(res,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx2 - xm,my2 - ym,mz2 - zm); + const Tt cval = (Tt)(img._atXYZ(x + xm,y + ym,z + zm) + mval); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + else + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(*this,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) { + const t mval = K(mx2 - xm,my2 - ym,mz2 - zm); + const Tt cval = (Tt)(img.atXYZ(x + xm,y + ym,z + zm,0,(T)0) + mval); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + } else { // Binary dilation + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(is_inner_parallel)) + for (int z = mz1; z::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx2 - xm,my2 - ym,mz2 - zm)) { + const Tt cval = (Tt)img(x + xm,y + ym,z + zm); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } _cimg_abort_catch_openmp2 + if (boundary_conditions) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(res,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx2 - xm,my2 - ym,mz2 - zm)) { + const Tt cval = (Tt)img._atXYZ(x + xm,y + ym,z + zm); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + else + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(is_inner_parallel)) + cimg_forYZ(res,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + for (int x = 0; x=mye || z=mze)?++x:((x=mxe)?++x:(x=mxe))) { + Tt max_val = cimg::type::min(); + for (int zm = -mz1; zm<=mz2; ++zm) + for (int ym = -my1; ym<=my2; ++ym) + for (int xm = -mx1; xm<=mx2; ++xm) + if (K(mx2 - xm,my2 - ym,mz2 - zm)) { + const Tt cval = (Tt)img.atXYZ(x + xm,y + ym,z + zm,0,(T)0); + if (cval>max_val) max_val = cval; + } + res(x,y,z,c) = max_val; + } + } _cimg_abort_catch_openmp2 + } + } _cimg_abort_catch_openmp + cimg_abort_test; + return res; + } + + //! Dilate image by a rectangular structuring element of specified size. + /** + \param sx Width of the structuring element. + \param sy Height of the structuring element. + \param sz Depth of the structuring element. + **/ + CImg& dilate(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) { + if (is_empty() || (sx==1 && sy==1 && sz==1)) return *this; + if (sx>1 && _width>1) { // Along X-axis + const int L = width(), off = 1, s = (int)sx, _s1 = s/2, _s2 = s - _s1, s1 = _s1>L?L:_s1, s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forYZC(*this,y,z,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(0,y,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val>=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(0,y,z,c); cur = std::max(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs=cur) { cur = val; is_first = false; } + *(ptrd++) = cur; + } + for (int p = L - s - 1; p>0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval>cur) cur = nval; } + nptrs-=off; const T nval = *nptrs; if (nval>cur) { cur = nval; is_first = true; } else is_first = false; + } else { if (val>=cur) cur = val; else if (cur==*(ptrs-s*off)) is_first = true; } + *(ptrd++) = cur; + } + ptrd = ptrde; ptrs = ptrse; cur = *ptrs; ptrs-=off; + for (int p = s1; p>0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val>cur) cur = val; + } + *(ptrd--) = cur; + for (int p = s2 - 1; p>0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val>cur) cur = val; *(ptrd--) = cur; + } + T *pd = data(0,y,z,c); cimg_for(buf,ps,T) { *pd = *ps; pd+=off; } + } + } + } + + if (sy>1 && _height>1) { // Along Y-axis + const int L = height(), off = width(), s = (int)sy, _s1 = s/2, _s2 = s - _s1, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXZC(*this,x,z,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,0,z,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val>=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,0,z,c); cur = std::max(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs=cur) { cur = val; is_first = false; } + *(ptrd++) = cur; + } + for (int p = L - s - 1; p>0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval>cur) cur = nval; } + nptrs-=off; const T nval = *nptrs; if (nval>cur) { cur = nval; is_first = true; } else is_first = false; + } else { if (val>=cur) cur = val; else if (cur==*(ptrs-s*off)) is_first = true; } + *(ptrd++) = cur; + } + ptrd = ptrde; ptrs = ptrse; cur = *ptrs; ptrs-=off; + for (int p = s1; p>0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val>cur) cur = val; + } + *(ptrd--) = cur; + for (int p = s2 - 1; p>0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val>cur) cur = val; *(ptrd--) = cur; + } + T *pd = data(x,0,z,c); cimg_for(buf,ps,T) { *pd = *ps; pd+=off; } + } + } + } + + if (sz>1 && _depth>1) { // Along Z-axis + const int L = depth(), off = width()*height(), s = (int)sz, _s1 = s/2, _s2 = s - _s1, s1 = _s1>L?L:_s1, + s2 = _s2>L?L:_s2; + CImg buf(L); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) firstprivate(buf) if (size()>524288)) + cimg_forXYC(*this,x,y,c) { + T *const ptrdb = buf._data, *ptrd = ptrdb, *const ptrde = buf._data + L - 1; + const T *const ptrsb = data(x,y,0,c), *ptrs = ptrsb, *const ptrse = ptrs + L*off - off; + T cur = *ptrs; ptrs+=off; bool is_first = true; + for (int p = s2 - 1; p>0 && ptrs<=ptrse; --p) { + const T val = *ptrs; ptrs+=off; if (val>=cur) { cur = val; is_first = false; } + } + *(ptrd++) = cur; + if (ptrs>=ptrse) { + T *pd = data(x,y,0,c); cur = std::max(cur,*ptrse); cimg_forX(buf,k) { *pd = cur; pd+=off; } + } else { + for (int p = s1; p>0 && ptrd<=ptrde; --p) { + const T val = *ptrs; if (ptrs=cur) { cur = val; is_first = false; } + *(ptrd++) = cur; + } + for (int p = L - s - 1; p>0; --p) { + const T val = *ptrs; ptrs+=off; + if (is_first) { + const T *nptrs = ptrs - off; cur = val; + for (int q = s - 2; q>0; --q) { nptrs-=off; const T nval = *nptrs; if (nval>cur) cur = nval; } + nptrs-=off; const T nval = *nptrs; if (nval>cur) { cur = nval; is_first = true; } else is_first = false; + } else { if (val>=cur) cur = val; else if (cur==*(ptrs-s*off)) is_first = true; } + *(ptrd++) = cur; + } + ptrd = ptrde; ptrs = ptrse; cur = *ptrs; ptrs-=off; + for (int p = s1; p>0 && ptrs>=ptrsb; --p) { + const T val = *ptrs; ptrs-=off; if (val>cur) cur = val; + } + *(ptrd--) = cur; + for (int p = s2 - 1; p>0 && ptrd>=ptrdb; --p) { + const T val = *ptrs; if (ptrs>ptrsb) ptrs-=off; if (val>cur) cur = val; *(ptrd--) = cur; + } + T *pd = data(x,y,0,c); cimg_for(buf,ps,T) { *pd = *ps; pd+=off; } + } + } + } + return *this; + } + + //! Dilate image by a rectangular structuring element of specified size \newinstance. + CImg get_dilate(const unsigned int sx, const unsigned int sy, const unsigned int sz=1) const { + return (+*this).dilate(sx,sy,sz); + } + + //! Dilate image by a square structuring element of specified size. + /** + \param s Size of the structuring element. + **/ + CImg& dilate(const unsigned int s) { + return dilate(s,s,s); + } + + //! Dilate image by a square structuring element of specified size \newinstance. + CImg get_dilate(const unsigned int s) const { + return (+*this).dilate(s); + } + + //! Compute watershed transform. + /** + \param priority Priority map. + \param is_high_connectivity Boolean that choose between 4(false)- or 8(true)-connectivity + in 2D case, and between 6(false)- or 26(true)-connectivity in 3D case. + \note Non-zero values of the instance instance are propagated to zero-valued ones according to + specified the priority map. + **/ + template + CImg& watershed(const CImg& priority, const bool is_high_connectivity=false) { +#define _cimg_watershed_init(cond,X,Y,Z) \ + if (cond && !(*this)(X,Y,Z)) Q._priority_queue_insert(labels,sizeQ,priority(X,Y,Z),X,Y,Z,nb_seeds) + +#define _cimg_watershed_propagate(cond,X,Y,Z) \ + if (cond) { \ + if ((*this)(X,Y,Z)) { \ + ns = labels(X,Y,Z) - 1; xs = seeds(ns,0); ys = seeds(ns,1); zs = seeds(ns,2); \ + d = cimg::sqr((float)x - xs) + cimg::sqr((float)y - ys) + cimg::sqr((float)z - zs); \ + if (d labels(_width,_height,_depth,1,0), seeds(64,3); + CImg::type> Q; + unsigned int sizeQ = 0; + int px, nx, py, ny, pz, nz; + bool is_px, is_nx, is_py, is_ny, is_pz, is_nz; + const bool is_3d = _depth>1; + + // Find seed points and insert them in priority queue. + unsigned int nb_seeds = 0; + const T *ptrs = _data; + cimg_forXYZ(*this,x,y,z) if (*(ptrs++)) { // 3D version + if (nb_seeds>=seeds._width) seeds.resize(2*seeds._width,3,1,1,0); + seeds(nb_seeds,0) = x; seeds(nb_seeds,1) = y; seeds(nb_seeds++,2) = z; + px = x - 1; nx = x + 1; + py = y - 1; ny = y + 1; + pz = z - 1; nz = z + 1; + is_px = px>=0; is_nx = nx=0; is_ny = ny=0; is_nz = nz=0; is_nx = nx=0; is_ny = ny=0; is_nz = nz::inf(); + T nlabel = (T)0; + _cimg_watershed_propagate(is_px,px,y,z); + _cimg_watershed_propagate(is_nx,nx,y,z); + _cimg_watershed_propagate(is_py,x,py,z); + _cimg_watershed_propagate(is_ny,x,ny,z); + if (is_3d) { + _cimg_watershed_propagate(is_pz,x,y,pz); + _cimg_watershed_propagate(is_nz,x,y,nz); + } + if (is_high_connectivity) { + _cimg_watershed_propagate(is_px && is_py,px,py,z); + _cimg_watershed_propagate(is_nx && is_py,nx,py,z); + _cimg_watershed_propagate(is_px && is_ny,px,ny,z); + _cimg_watershed_propagate(is_nx && is_ny,nx,ny,z); + if (is_3d) { + _cimg_watershed_propagate(is_px && is_pz,px,y,pz); + _cimg_watershed_propagate(is_nx && is_pz,nx,y,pz); + _cimg_watershed_propagate(is_px && is_nz,px,y,nz); + _cimg_watershed_propagate(is_nx && is_nz,nx,y,nz); + _cimg_watershed_propagate(is_py && is_pz,x,py,pz); + _cimg_watershed_propagate(is_ny && is_pz,x,ny,pz); + _cimg_watershed_propagate(is_py && is_nz,x,py,nz); + _cimg_watershed_propagate(is_ny && is_nz,x,ny,nz); + _cimg_watershed_propagate(is_px && is_py && is_pz,px,py,pz); + _cimg_watershed_propagate(is_nx && is_py && is_pz,nx,py,pz); + _cimg_watershed_propagate(is_px && is_ny && is_pz,px,ny,pz); + _cimg_watershed_propagate(is_nx && is_ny && is_pz,nx,ny,pz); + _cimg_watershed_propagate(is_px && is_py && is_nz,px,py,nz); + _cimg_watershed_propagate(is_nx && is_py && is_nz,nx,py,nz); + _cimg_watershed_propagate(is_px && is_ny && is_nz,px,ny,nz); + _cimg_watershed_propagate(is_nx && is_ny && is_nz,nx,ny,nz); + } + } + (*this)(x,y,z) = nlabel; + labels(x,y,z) = ++nmin; + } + return *this; + } + + //! Compute watershed transform \newinstance. + template + CImg get_watershed(const CImg& priority, const bool is_high_connectivity=false) const { + return (+*this).watershed(priority,is_high_connectivity); + } + + // [internal] Insert/Remove items in priority queue, for watershed/distance transforms. + template + bool _priority_queue_insert(CImg& is_queued, unsigned int& siz, const tv value, + const unsigned int x, const unsigned int y, const unsigned int z, + const unsigned int n=1) { + if (is_queued(x,y,z)) return false; + is_queued(x,y,z) = (tq)n; + if (++siz>=_width) { if (!is_empty()) resize(_width*2,4,1,1,0); else assign(64,4); } + (*this)(siz - 1,0) = (T)value; + (*this)(siz - 1,1) = (T)x; + (*this)(siz - 1,2) = (T)y; + (*this)(siz - 1,3) = (T)z; + for (unsigned int pos = siz - 1, par = 0; pos && value>(tv)(*this)(par=(pos + 1)/2 - 1,0); pos = par) { + cimg::swap((*this)(pos,0),(*this)(par,0)); + cimg::swap((*this)(pos,1),(*this)(par,1)); + cimg::swap((*this)(pos,2),(*this)(par,2)); + cimg::swap((*this)(pos,3),(*this)(par,3)); + } + return true; + } + + CImg& _priority_queue_remove(unsigned int& siz) { + (*this)(0,0) = (*this)(--siz,0); + (*this)(0,1) = (*this)(siz,1); + (*this)(0,2) = (*this)(siz,2); + (*this)(0,3) = (*this)(siz,3); + const float value = (*this)(0,0); + unsigned int pos = 0, swap = 0; + do { + const unsigned int left = 2*pos + 1, right = left + 1; + if (right(*this)(right,0)?left:right; + else if (left{ 0=smooth-filter | 1=1st-derivative | 2=2nd-derivative }. + \param axis Axis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + **/ + CImg& deriche(const float sigma, const unsigned int order=0, const char axis='x', + const bool boundary_conditions=true) { +#define _cimg_deriche_apply \ + CImg Y(N); \ + double *ptrY = Y._data, yb = 0, yp = 0; \ + T xp = (T)0; \ + if (boundary_conditions) { xp = *ptrX; yb = yp = (double)(coefp*xp); } \ + for (int m = 0; m=0; --n) { \ + const T xc = *(ptrX-=off); \ + const double yc = (double)(a2*xn + a3*xa - b1*yn - b2*ya); \ + xa = xn; xn = xc; ya = yn; yn = yc; \ + *ptrX = (T)(*(--ptrY)+yc); \ + } + const char naxis = cimg::lowercase(axis); + const double nsigma = sigma>=0?sigma:-sigma*(naxis=='x'?_width: + naxis=='y'?_height: + naxis=='z'?_depth:_spectrum)/100; + if (is_empty() || (nsigma<0.1f && !order)) return *this; + const double + nnsigma = nsigma<0.1f?0.1f:nsigma, + alpha = 1.695f/nnsigma, + ema = std::exp(-alpha), + ema2 = std::exp(-2*alpha), + b1 = -2*ema, + b2 = ema2; + double a0 = 0, a1 = 0, a2 = 0, a3 = 0, coefp = 0, coefn = 0; + switch (order) { + case 0 : { + const double k = (1-ema)*(1-ema)/(1 + 2*alpha*ema-ema2); + a0 = k; + a1 = k*(alpha - 1)*ema; + a2 = k*(alpha + 1)*ema; + a3 = -k*ema2; + } break; + case 1 : { + const double k = -(1-ema)*(1-ema)*(1-ema)/(2*(ema + 1)*ema); + a0 = a3 = 0; + a1 = k*ema; + a2 = -a1; + } break; + case 2 : { + const double + ea = std::exp(-alpha), + k = -(ema2 - 1)/(2*alpha*ema), + kn = (-2*(-1 + 3*ea - 3*ea*ea + ea*ea*ea)/(3*ea + 1 + 3*ea*ea + ea*ea*ea)); + a0 = kn; + a1 = -kn*(1 + k*alpha)*ema; + a2 = kn*(1 - k*alpha)*ema; + a3 = -kn*ema2; + } break; + default : + throw CImgArgumentException(_cimg_instance + "deriche(): Invalid specified filter order %u " + "(should be { 0=smoothing | 1=1st-derivative | 2=2nd-derivative }).", + cimg_instance, + order); + } + coefp = (a0 + a1)/(1 + b1 + b2); + coefn = (a2 + a3)/(1 + b1 + b2); + switch (naxis) { + case 'x' : { + const int N = width(); + const ulongT off = 1U; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) { T *ptrX = data(0,y,z,c); _cimg_deriche_apply; } + } break; + case 'y' : { + const int N = height(); + const ulongT off = (ulongT)_width; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) { T *ptrX = data(x,0,z,c); _cimg_deriche_apply; } + } break; + case 'z' : { + const int N = depth(); + const ulongT off = (ulongT)_width*_height; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) { T *ptrX = data(x,y,0,c); _cimg_deriche_apply; } + } break; + default : { + const int N = spectrum(); + const ulongT off = (ulongT)_width*_height*_depth; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYZ(*this,x,y,z) { T *ptrX = data(x,y,z,0); _cimg_deriche_apply; } + } + } + return *this; + } + + //! Apply recursive Deriche filter \newinstance. + CImg get_deriche(const float sigma, const unsigned int order=0, const char axis='x', + const bool boundary_conditions=true) const { + return CImg(*this,false).deriche(sigma,order,axis,boundary_conditions); + } + + // [internal] Apply a recursive filter (used by CImg::vanvliet()). + /* + \param ptr the pointer of the data + \param filter the coefficient of the filter in the following order [n,n - 1,n - 2,n - 3]. + \param N size of the data + \param off the offset between two data point + \param order the order of the filter 0 (smoothing), 1st derivative, 2nd derivative, 3rd derivative + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + \note Boundary condition using B. Triggs method (IEEE trans on Sig Proc 2005). + */ + static void _cimg_recursive_apply(T *data, const double filter[], const int N, const ulongT off, + const unsigned int order, const bool boundary_conditions) { + double val[4] = { 0 }; // res[n,n - 1,n - 2,n - 3,..] or res[n,n + 1,n + 2,n + 3,..] + const double + sumsq = filter[0], sum = sumsq * sumsq, + a1 = filter[1], a2 = filter[2], a3 = filter[3], + scaleM = 1. / ( (1. + a1 - a2 + a3) * (1. - a1 - a2 - a3) * (1. + a2 + (a1 - a3) * a3) ); + double M[9]; // Triggs matrix + M[0] = scaleM * (-a3 * a1 + 1. - a3 * a3 - a2); + M[1] = scaleM * (a3 + a1) * (a2 + a3 * a1); + M[2] = scaleM * a3 * (a1 + a3 * a2); + M[3] = scaleM * (a1 + a3 * a2); + M[4] = -scaleM * (a2 - 1.) * (a2 + a3 * a1); + M[5] = -scaleM * a3 * (a3 * a1 + a3 * a3 + a2 - 1.); + M[6] = scaleM * (a3 * a1 + a2 + a1 * a1 - a2 * a2); + M[7] = scaleM * (a1 * a2 + a3 * a2 * a2 - a1 * a3 * a3 - a3 * a3 * a3 - a3 * a2 + a3); + M[8] = scaleM * a3 * (a1 + a3 * a2); + switch (order) { + case 0 : { + const double iplus = (boundary_conditions?data[(N - 1)*off]:(T)0); + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 1; k<4; ++k) val[k] = (boundary_conditions?*data/sumsq:0); + } else { + // Apply Triggs boundary conditions + const double + uplus = iplus/(1. - a1 - a2 - a3), vplus = uplus/(1. - a1 - a2 - a3), + unp = val[1] - uplus, unp1 = val[2] - uplus, unp2 = val[3] - uplus; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2 + vplus) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2 + vplus) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2 + vplus) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) val[k] = val[k - 1]; + } + if (!pass) data -= off; + } + } break; + case 1 : { + double x[3]; // [front,center,back] + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 0; k<3; ++k) x[k] = (boundary_conditions?*data:(T)0); + for (int k = 0; k<4; ++k) val[k] = 0; + } else { + // Apply Triggs boundary conditions + const double + unp = val[1], unp1 = val[2], unp2 = val[3]; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) x[k] = x[k - 1]; + } else { data-=off;} + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + *data = (T)0; + } + } break; + case 2: { + double x[3]; // [front,center,back] + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 0; k<3; ++k) x[k] = (boundary_conditions?*data:(T)0); + for (int k = 0; k<4; ++k) val[k] = 0; + } else { + // Apply Triggs boundary conditions + const double + unp = val[1], unp1 = val[2], unp2 = val[3]; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) x[k] = x[k - 1]; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + *data = (T)0; + } + } break; + case 3: { + double x[3]; // [front,center,back] + for (int pass = 0; pass<2; ++pass) { + if (!pass) { + for (int k = 0; k<3; ++k) x[k] = (boundary_conditions?*data:(T)0); + for (int k = 0; k<4; ++k) val[k] = 0; + } else { + // Apply Triggs boundary conditions + const double + unp = val[1], unp1 = val[2], unp2 = val[3]; + val[0] = (M[0] * unp + M[1] * unp1 + M[2] * unp2) * sum; + val[1] = (M[3] * unp + M[4] * unp1 + M[5] * unp2) * sum; + val[2] = (M[6] * unp + M[7] * unp1 + M[8] * unp2) * sum; + *data = (T)val[0]; + data -= off; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + for (int n = pass; n0; --k) x[k] = x[k - 1]; + for (int k = 3; k>0; --k) val[k] = val[k - 1]; + } + *data = (T)0; + } + } break; + } + } + + //! Van Vliet recursive Gaussian filter. + /** + \param sigma standard deviation of the Gaussian filter + \param order the order of the filter 0,1,2,3 + \param axis Axis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + \note dirichlet boundary condition has a strange behavior + + I.T. Young, L.J. van Vliet, M. van Ginkel, Recursive Gabor filtering. + IEEE Trans. Sig. Proc., vol. 50, pp. 2799-2805, 2002. + + (this is an improvement over Young-Van Vliet, Sig. Proc. 44, 1995) + + Boundary conditions (only for order 0) using Triggs matrix, from + B. Triggs and M. Sdika. Boundary conditions for Young-van Vliet + recursive filtering. IEEE Trans. Signal Processing, + vol. 54, pp. 2365-2367, 2006. + **/ + CImg& vanvliet(const float sigma, const unsigned int order, const char axis='x', + const bool boundary_conditions=true) { + if (is_empty()) return *this; + if (!cimg::type::is_float()) + return CImg(*this,false).vanvliet(sigma,order,axis,boundary_conditions).move_to(*this); + const char naxis = cimg::lowercase(axis); + const float nsigma = sigma>=0?sigma:-sigma*(naxis=='x'?_width:naxis=='y'?_height:naxis=='z'?_depth:_spectrum)/100; + if (is_empty() || (nsigma<0.5f && !order)) return *this; + const double + nnsigma = nsigma<0.5f?0.5f:nsigma, + m0 = 1.16680, m1 = 1.10783, m2 = 1.40586, + m1sq = m1 * m1, m2sq = m2 * m2, + q = (nnsigma<3.556?-0.2568 + 0.5784*nnsigma + 0.0561*nnsigma*nnsigma:2.5091 + 0.9804*(nnsigma - 3.556)), + qsq = q * q, + scale = (m0 + q) * (m1sq + m2sq + 2 * m1 * q + qsq), + b1 = -q * (2 * m0 * m1 + m1sq + m2sq + (2 * m0 + 4 * m1) * q + 3 * qsq) / scale, + b2 = qsq * (m0 + 2 * m1 + 3 * q) / scale, + b3 = -qsq * q / scale, + B = ( m0 * (m1sq + m2sq) ) / scale; + double filter[4]; + filter[0] = B; filter[1] = -b1; filter[2] = -b2; filter[3] = -b3; + switch (naxis) { + case 'x' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) + _cimg_recursive_apply(data(0,y,z,c),filter,_width,1U,order,boundary_conditions); + } break; + case 'y' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) + _cimg_recursive_apply(data(x,0,z,c),filter,_height,(ulongT)_width,order,boundary_conditions); + } break; + case 'z' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) + _cimg_recursive_apply(data(x,y,0,c),filter,_depth,(ulongT)_width*_height, + order,boundary_conditions); + } break; + default : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYZ(*this,x,y,z) + _cimg_recursive_apply(data(x,y,z,0),filter,_spectrum,(ulongT)_width*_height*_depth, + order,boundary_conditions); + } + } + return *this; + } + + //! Blur image using Van Vliet recursive Gaussian filter. \newinstance. + CImg get_vanvliet(const float sigma, const unsigned int order, const char axis='x', + const bool boundary_conditions=true) const { + return CImg(*this,false).vanvliet(sigma,order,axis,boundary_conditions); + } + + //! Blur image. + /** + \param sigma_x Standard deviation of the blur, along the X-axis. + \param sigma_y Standard deviation of the blur, along the Y-axis. + \param sigma_z Standard deviation of the blur, along the Z-axis. + \param boundary_conditions Boundary conditions. Can be { false=dirichlet | true=neumann }. + \param is_gaussian Tells if the blur uses a gaussian (\c true) or quasi-gaussian (\c false) kernel. + \note + - The blur is computed as a 0-order Vanvliet (gaussian) or Deriche filter (quasi-gaussian). + - This is a recursive algorithm, not depending on the values of the standard deviations. + \see deriche(), vanvliet(). + **/ + CImg& blur(const float sigma_x, const float sigma_y, const float sigma_z, + const bool boundary_conditions=true, const bool is_gaussian=true) { + if (is_empty()) return *this; + if (is_gaussian) { + if (_width>1) vanvliet(sigma_x,0,'x',boundary_conditions); + if (_height>1) vanvliet(sigma_y,0,'y',boundary_conditions); + if (_depth>1) vanvliet(sigma_z,0,'z',boundary_conditions); + } else { + if (_width>1) deriche(sigma_x,0,'x',boundary_conditions); + if (_height>1) deriche(sigma_y,0,'y',boundary_conditions); + if (_depth>1) deriche(sigma_z,0,'z',boundary_conditions); + } + return *this; + } + + //! Blur image \newinstance. + CImg get_blur(const float sigma_x, const float sigma_y, const float sigma_z, + const bool boundary_conditions=true, const bool is_gaussian=true) const { + return CImg(*this,false).blur(sigma_x,sigma_y,sigma_z,boundary_conditions,is_gaussian); + } + + //! Blur image isotropically. + /** + \param sigma Standard deviation of the blur. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }.a + \param is_gaussian Use a gaussian kernel (VanVliet) is set, a quasi-gaussian (Deriche) otherwise. + \see deriche(), vanvliet(). + **/ + CImg& blur(const float sigma, const bool boundary_conditions=true, const bool is_gaussian=true) { + const float nsigma = sigma>=0?sigma:-sigma*cimg::max(_width,_height,_depth)/100; + return blur(nsigma,nsigma,nsigma,boundary_conditions,is_gaussian); + } + + //! Blur image isotropically \newinstance. + CImg get_blur(const float sigma, const bool boundary_conditions=true, const bool is_gaussian=true) const { + return CImg(*this,false).blur(sigma,boundary_conditions,is_gaussian); + } + + //! Blur image anisotropically, directed by a field of diffusion tensors. + /** + \param G Field of square roots of diffusion tensors/vectors used to drive the smoothing. + \param amplitude Amplitude of the smoothing. + \param dl Spatial discretization. + \param da Angular discretization. + \param gauss_prec Precision of the diffusion process. + \param interpolation_type Interpolation scheme. + Can be { 0=nearest-neighbor | 1=linear | 2=Runge-Kutta }. + \param is_fast_approx Tells if a fast approximation of the gaussian function is used or not. + **/ + template + CImg& blur_anisotropic(const CImg& G, + const float amplitude=60, const float dl=0.8f, const float da=30, + const float gauss_prec=2, const unsigned int interpolation_type=0, + const bool is_fast_approx=1) { + + // Check arguments and init variables + if (!is_sameXYZ(G) || (G._spectrum!=3 && G._spectrum!=6)) + throw CImgArgumentException(_cimg_instance + "blur_anisotropic(): Invalid specified diffusion tensor field (%u,%u,%u,%u,%p).", + cimg_instance, + G._width,G._height,G._depth,G._spectrum,G._data); + if (is_empty() || dl<0) return *this; + const float namplitude = amplitude>=0?amplitude:-amplitude*cimg::max(_width,_height,_depth)/100; + unsigned int iamplitude = cimg::round(namplitude); + const bool is_3d = (G._spectrum==6); + T val_min, val_max = max_min(val_min); + _cimg_abort_init_openmp; + cimg_abort_init; + + if (da<=0) { // Iterated oriented Laplacians + CImg velocity(_width,_height,_depth,_spectrum); + for (unsigned int iteration = 0; iterationveloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + } + else // 2D version + cimg_forZC(*this,z,c) { + cimg_abort_test; + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + ixx = Inc + Ipc - 2*Icc, + ixy = (Inn + Ipp - Inp - Ipn)/4, + iyy = Icn + Icp - 2*Icc, + veloc = (Tfloat)(G(x,y,0,0)*ixx + 2*G(x,y,0,1)*ixy + G(x,y,0,2)*iyy); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + } + if (veloc_max>0) *this+=(velocity*=dl/veloc_max); + } + } else { // LIC-based smoothing + const ulongT whd = (ulongT)_width*_height*_depth; + const float sqrt2amplitude = (float)std::sqrt(2*namplitude); + const int dx1 = width() - 1, dy1 = height() - 1, dz1 = depth() - 1; + CImg res(_width,_height,_depth,_spectrum,0), W(_width,_height,_depth,is_3d?4:3), val(_spectrum,1,1,1,0); + int N = 0; + if (is_3d) { // 3D version + for (float phi = cimg::mod(180.f,da)/2.f; phi<=180; phi+=da) { + const float phir = (float)(phi*cimg::PI/180), datmp = (float)(da/std::cos(phir)), + da2 = datmp<1?360.f:datmp; + for (float theta = 0; theta<360; (theta+=da2),++N) { + const float + thetar = (float)(theta*cimg::PI/180), + vx = (float)(std::cos(thetar)*std::cos(phir)), + vy = (float)(std::sin(thetar)*std::cos(phir)), + vz = (float)std::sin(phir); + const t + *pa = G.data(0,0,0,0), *pb = G.data(0,0,0,1), *pc = G.data(0,0,0,2), + *pd = G.data(0,0,0,3), *pe = G.data(0,0,0,4), *pf = G.data(0,0,0,5); + Tfloat *pd0 = W.data(0,0,0,0), *pd1 = W.data(0,0,0,1), *pd2 = W.data(0,0,0,2), *pd3 = W.data(0,0,0,3); + cimg_forXYZ(G,xg,yg,zg) { + const t a = *(pa++), b = *(pb++), c = *(pc++), d = *(pd++), e = *(pe++), f = *(pf++); + const float + u = (float)(a*vx + b*vy + c*vz), + v = (float)(b*vx + d*vy + e*vz), + w = (float)(c*vx + e*vy + f*vz), + n = 1e-5f + cimg::hypot(u,v,w), + dln = dl/n; + *(pd0++) = (Tfloat)(u*dln); + *(pd1++) = (Tfloat)(v*dln); + *(pd2++) = (Tfloat)(w*dln); + *(pd3++) = (Tfloat)n; + } + + cimg_abort_test; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && _height*_depth>=2) + firstprivate(val)) + cimg_forYZ(*this,y,z) _cimg_abort_try_openmp2 { + cimg_abort_test2; + cimg_forX(*this,x) { + val.fill(0); + const float + n = (float)W(x,y,z,3), + fsigma = (float)(n*sqrt2amplitude), + fsigma2 = 2*fsigma*fsigma, + length = gauss_prec*fsigma; + float + S = 0, + X = (float)x, + Y = (float)y, + Z = (float)z; + switch (interpolation_type) { + case 0 : { // Nearest neighbor + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1 && Z>=0 && Z<=dz1; l+=dl) { + const int + cx = (int)(X + 0.5f), + cy = (int)(Y + 0.5f), + cz = (int)(Z + 0.5f); + const float + u = (float)W(cx,cy,cz,0), + v = (float)W(cx,cy,cz,1), + w = (float)W(cx,cy,cz,2); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)(*this)(cx,cy,cz,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*(*this)(cx,cy,cz,c)); + S+=coef; + } + X+=u; Y+=v; Z+=w; + } + } break; + case 1 : { // Linear interpolation + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1 && Z>=0 && Z<=dz1; l+=dl) { + const float + u = (float)(W._linear_atXYZ(X,Y,Z,0)), + v = (float)(W._linear_atXYZ(X,Y,Z,1)), + w = (float)(W._linear_atXYZ(X,Y,Z,2)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXYZ(X,Y,Z,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXYZ(X,Y,Z,c)); + S+=coef; + } + X+=u; Y+=v; Z+=w; + } + } break; + default : { // 2nd order Runge Kutta + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1 && Z>=0 && Z<=dz1; l+=dl) { + const float + u0 = (float)(0.5f*W._linear_atXYZ(X,Y,Z,0)), + v0 = (float)(0.5f*W._linear_atXYZ(X,Y,Z,1)), + w0 = (float)(0.5f*W._linear_atXYZ(X,Y,Z,2)), + u = (float)(W._linear_atXYZ(X + u0,Y + v0,Z + w0,0)), + v = (float)(W._linear_atXYZ(X + u0,Y + v0,Z + w0,1)), + w = (float)(W._linear_atXYZ(X + u0,Y + v0,Z + w0,2)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXYZ(X,Y,Z,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXYZ(X,Y,Z,c)); + S+=coef; + } + X+=u; Y+=v; Z+=w; + } + } break; + } + Tfloat *ptrd = res.data(x,y,z); + if (S>0) cimg_forC(res,c) { *ptrd+=val[c]/S; ptrd+=whd; } + else cimg_forC(res,c) { *ptrd+=(Tfloat)((*this)(x,y,z,c)); ptrd+=whd; } + } + } _cimg_abort_catch_openmp2 + } + } + } else { // 2D LIC algorithm + for (float theta = cimg::mod(360.f,da)/2.f; theta<360; (theta+=da),++N) { + const float thetar = (float)(theta*cimg::PI/180), + vx = (float)(std::cos(thetar)), vy = (float)(std::sin(thetar)); + const t *pa = G.data(0,0,0,0), *pb = G.data(0,0,0,1), *pc = G.data(0,0,0,2); + Tfloat *pd0 = W.data(0,0,0,0), *pd1 = W.data(0,0,0,1), *pd2 = W.data(0,0,0,2); + cimg_forXY(G,xg,yg) { + const t a = *(pa++), b = *(pb++), c = *(pc++); + const float + u = (float)(a*vx + b*vy), + v = (float)(b*vx + c*vy), + n = std::max(1e-5f,cimg::hypot(u,v)), + dln = dl/n; + *(pd0++) = (Tfloat)(u*dln); + *(pd1++) = (Tfloat)(v*dln); + *(pd2++) = (Tfloat)n; + } + + cimg_abort_test; + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && _height>=2) + firstprivate(val)) + cimg_forY(*this,y) _cimg_abort_try_openmp2 { + cimg_abort_test2; + cimg_forX(*this,x) { + val.fill(0); + const float + n = (float)W(x,y,0,2), + fsigma = (float)(n*sqrt2amplitude), + fsigma2 = 2*fsigma*fsigma, + length = gauss_prec*fsigma; + float + S = 0, + X = (float)x, + Y = (float)y; + switch (interpolation_type) { + case 0 : { // Nearest-neighbor + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1; l+=dl) { + const int + cx = (int)(X + 0.5f), + cy = (int)(Y + 0.5f); + const float + u = (float)W(cx,cy,0,0), + v = (float)W(cx,cy,0,1); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)(*this)(cx,cy,0,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*(*this)(cx,cy,0,c)); + S+=coef; + } + X+=u; Y+=v; + } + } break; + case 1 : { // Linear interpolation + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1; l+=dl) { + const float + u = (float)(W._linear_atXY(X,Y,0,0)), + v = (float)(W._linear_atXY(X,Y,0,1)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXY(X,Y,0,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXY(X,Y,0,c)); + S+=coef; + } + X+=u; Y+=v; + } + } break; + default : { // 2nd-order Runge-kutta interpolation + for (float l = 0; l=0 && X<=dx1 && Y>=0 && Y<=dy1; l+=dl) { + const float + u0 = (float)(0.5f*W._linear_atXY(X,Y,0,0)), + v0 = (float)(0.5f*W._linear_atXY(X,Y,0,1)), + u = (float)(W._linear_atXY(X + u0,Y + v0,0,0)), + v = (float)(W._linear_atXY(X + u0,Y + v0,0,1)); + if (is_fast_approx) { cimg_forC(*this,c) val[c]+=(Tfloat)_linear_atXY(X,Y,0,c); ++S; } + else { + const float coef = (float)std::exp(-l*l/fsigma2); + cimg_forC(*this,c) val[c]+=(Tfloat)(coef*_linear_atXY(X,Y,0,c)); + S+=coef; + } + X+=u; Y+=v; + } + } + } + Tfloat *ptrd = res.data(x,y); + if (S>0) cimg_forC(res,c) { *ptrd+=val[c]/S; ptrd+=whd; } + else cimg_forC(res,c) { *ptrd+=(Tfloat)((*this)(x,y,0,c)); ptrd+=whd; } + } + } _cimg_abort_catch_openmp2 + } + } + const Tfloat *ptrs = res._data; + cimg_for(*this,ptrd,T) { + const Tfloat _val = *(ptrs++)/N; + *ptrd = _valval_max?val_max:(T)_val); + } + } + cimg_abort_test; + return *this; + } + + //! Blur image anisotropically, directed by a field of diffusion tensors \newinstance. + template + CImg get_blur_anisotropic(const CImg& G, + const float amplitude=60, const float dl=0.8f, const float da=30, + const float gauss_prec=2, const unsigned int interpolation_type=0, + const bool is_fast_approx=true) const { + return CImg(*this,false).blur_anisotropic(G,amplitude,dl,da,gauss_prec,interpolation_type,is_fast_approx); + } + + //! Blur image anisotropically, in an edge-preserving way. + /** + \param amplitude Amplitude of the smoothing. + \param sharpness Sharpness. + \param anisotropy Anisotropy. + \param alpha Standard deviation of the gradient blur. + \param sigma Standard deviation of the structure tensor blur. + \param dl Spatial discretization. + \param da Angular discretization. + \param gauss_prec Precision of the diffusion process. + \param interpolation_type Interpolation scheme. + Can be { 0=nearest-neighbor | 1=linear | 2=Runge-Kutta }. + \param is_fast_approx Tells if a fast approximation of the gaussian function is used or not. + **/ + CImg& blur_anisotropic(const float amplitude, const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const float dl=0.8f, const float da=30, + const float gauss_prec=2, const unsigned int interpolation_type=0, + const bool is_fast_approx=true) { + const float nalpha = alpha>=0?alpha:-alpha*cimg::max(_width,_height,_depth)/100; + const float nsigma = sigma>=0?sigma:-sigma*cimg::max(_width,_height,_depth)/100; + return blur_anisotropic(get_diffusion_tensors(sharpness,anisotropy,nalpha,nsigma,interpolation_type!=3), + amplitude,dl,da,gauss_prec,interpolation_type,is_fast_approx); + } + + //! Blur image anisotropically, in an edge-preserving way \newinstance. + CImg get_blur_anisotropic(const float amplitude, const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const float dl=0.8f, + const float da=30, const float gauss_prec=2, + const unsigned int interpolation_type=0, + const bool is_fast_approx=true) const { + return CImg(*this,false).blur_anisotropic(amplitude,sharpness,anisotropy,alpha,sigma,dl,da,gauss_prec, + interpolation_type,is_fast_approx); + } + + //! Blur image, with the joint bilateral filter. + /** + \param guide Image used to model the smoothing weights. + \param sigma_x Amount of blur along the X-axis. + \param sigma_y Amount of blur along the Y-axis. + \param sigma_z Amount of blur along the Z-axis. + \param sigma_r Amount of blur along the value axis. + \param sampling_x Amount of downsampling along the X-axis used for the approximation. + Defaults (0) to sigma_x. + \param sampling_y Amount of downsampling along the Y-axis used for the approximation. + Defaults (0) to sigma_y. + \param sampling_z Amount of downsampling along the Z-axis used for the approximation. + Defaults (0) to sigma_z. + \param sampling_r Amount of downsampling along the value axis used for the approximation. + Defaults (0) to sigma_r. + \note This algorithm uses the optimisation technique proposed by S. Paris and F. Durand, in ECCV'2006 + (extended for 3D volumetric images). + It is based on the reference implementation http://people.csail.mit.edu/jiawen/software/bilateralFilter.m + **/ + template + CImg& blur_bilateral(const CImg& guide, + const float sigma_x, const float sigma_y, + const float sigma_z, const float sigma_r, + const float sampling_x, const float sampling_y, + const float sampling_z, const float sampling_r) { + if (!is_sameXYZ(guide)) + throw CImgArgumentException(_cimg_instance + "blur_bilateral(): Invalid size for specified guide image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data); + if (is_empty() || (!sigma_x && !sigma_y && !sigma_z)) return *this; + T edge_min, edge_max = guide.max_min(edge_min); + if (edge_min==edge_max) return blur(sigma_x,sigma_y,sigma_z); + const float + edge_delta = (float)(edge_max - edge_min), + _sigma_x = sigma_x>=0?sigma_x:-sigma_x*_width/100, + _sigma_y = sigma_y>=0?sigma_y:-sigma_y*_height/100, + _sigma_z = sigma_z>=0?sigma_z:-sigma_z*_depth/100, + _sigma_r = sigma_r>=0?sigma_r:-sigma_r*edge_delta/100, + _sampling_x = sampling_x?sampling_x:std::max(_sigma_x,1.f), + _sampling_y = sampling_y?sampling_y:std::max(_sigma_y,1.f), + _sampling_z = sampling_z?sampling_z:std::max(_sigma_z,1.f), + _sampling_r = sampling_r?sampling_r:std::max(_sigma_r,edge_delta/256), + derived_sigma_x = _sigma_x / _sampling_x, + derived_sigma_y = _sigma_y / _sampling_y, + derived_sigma_z = _sigma_z / _sampling_z, + derived_sigma_r = _sigma_r / _sampling_r; + const int + padding_x = (int)(2*derived_sigma_x) + 1, + padding_y = (int)(2*derived_sigma_y) + 1, + padding_z = (int)(2*derived_sigma_z) + 1, + padding_r = (int)(2*derived_sigma_r) + 1; + const unsigned int + bx = (unsigned int)((_width - 1)/_sampling_x + 1 + 2*padding_x), + by = (unsigned int)((_height - 1)/_sampling_y + 1 + 2*padding_y), + bz = (unsigned int)((_depth - 1)/_sampling_z + 1 + 2*padding_z), + br = (unsigned int)(edge_delta/_sampling_r + 1 + 2*padding_r); + if (bx>0 || by>0 || bz>0 || br>0) { + const bool is_3d = (_depth>1); + if (is_3d) { // 3D version of the algorithm + CImg bgrid(bx,by,bz,br), bgridw(bx,by,bz,br); + cimg_forC(*this,c) { + const CImg _guide = guide.get_shared_channel(c%guide._spectrum); + bgrid.fill(0); bgridw.fill(0); + cimg_forXYZ(*this,x,y,z) { + const T val = (*this)(x,y,z,c); + const float edge = (float)_guide(x,y,z); + const int + X = (int)cimg::round(x/_sampling_x) + padding_x, + Y = (int)cimg::round(y/_sampling_y) + padding_y, + Z = (int)cimg::round(z/_sampling_z) + padding_z, + R = (int)cimg::round((edge - edge_min)/_sampling_r) + padding_r; + bgrid(X,Y,Z,R)+=(float)val; + bgridw(X,Y,Z,R)+=1; + } + bgrid.blur(derived_sigma_x,derived_sigma_y,derived_sigma_z,true).deriche(derived_sigma_r,0,'c',false); + bgridw.blur(derived_sigma_x,derived_sigma_y,derived_sigma_z,true).deriche(derived_sigma_r,0,'c',false); + + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),4096)) + cimg_forXYZ(*this,x,y,z) { + const float edge = (float)_guide(x,y,z); + const float + X = x/_sampling_x + padding_x, + Y = y/_sampling_y + padding_y, + Z = z/_sampling_z + padding_z, + R = (edge - edge_min)/_sampling_r + padding_r; + const float bval0 = bgrid._linear_atXYZC(X,Y,Z,R), bval1 = bgridw._linear_atXYZC(X,Y,Z,R); + (*this)(x,y,z,c) = (T)(bval0/bval1); + } + } + } else { // 2D version of the algorithm + CImg bgrid(bx,by,br,2); + cimg_forC(*this,c) { + const CImg _guide = guide.get_shared_channel(c%guide._spectrum); + bgrid.fill(0); + cimg_forXY(*this,x,y) { + const T val = (*this)(x,y,c); + const float edge = (float)_guide(x,y); + const int + X = (int)cimg::round(x/_sampling_x) + padding_x, + Y = (int)cimg::round(y/_sampling_y) + padding_y, + R = (int)cimg::round((edge - edge_min)/_sampling_r) + padding_r; + bgrid(X,Y,R,0)+=(float)val; + bgrid(X,Y,R,1)+=1; + } + bgrid.blur(derived_sigma_x,derived_sigma_y,0,true).blur(0,0,derived_sigma_r,false); + + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if_size(size(),4096)) + cimg_forXY(*this,x,y) { + const float edge = (float)_guide(x,y); + const float + X = x/_sampling_x + padding_x, + Y = y/_sampling_y + padding_y, + R = (edge - edge_min)/_sampling_r + padding_r; + const float bval0 = bgrid._linear_atXYZ(X,Y,R,0), bval1 = bgrid._linear_atXYZ(X,Y,R,1); + (*this)(x,y,c) = (T)(bval0/bval1); + } + } + } + } + return *this; + } + + //! Blur image, with the joint bilateral filter \newinstance. + template + CImg get_blur_bilateral(const CImg& guide, + const float sigma_x, const float sigma_y, + const float sigma_z, const float sigma_r, + const float sampling_x, const float sampling_y, + const float sampling_z, const float sampling_r) const { + return CImg(*this,false).blur_bilateral(guide,sigma_x,sigma_y,sigma_z,sigma_r, + sampling_x,sampling_y,sampling_z,sampling_r); + } + + //! Blur image using the joint bilateral filter. + /** + \param guide Image used to model the smoothing weights. + \param sigma_s Amount of blur along the XYZ-axes. + \param sigma_r Amount of blur along the value axis. + \param sampling_s Amount of downsampling along the XYZ-axes used for the approximation. Defaults to sigma_s. + \param sampling_r Amount of downsampling along the value axis used for the approximation. Defaults to sigma_r. + **/ + template + CImg& blur_bilateral(const CImg& guide, + const float sigma_s, const float sigma_r, + const float sampling_s=0, const float sampling_r=0) { + const float _sigma_s = sigma_s>=0?sigma_s:-sigma_s*cimg::max(_width,_height,_depth)/100; + return blur_bilateral(guide,_sigma_s,_sigma_s,_sigma_s,sigma_r,sampling_s,sampling_s,sampling_s,sampling_r); + } + + //! Blur image using the bilateral filter \newinstance. + template + CImg get_blur_bilateral(const CImg& guide, + const float sigma_s, const float sigma_r, + const float sampling_s=0, const float sampling_r=0) const { + return CImg(*this,false).blur_bilateral(guide,sigma_s,sigma_r,sampling_s,sampling_r); + } + + // [internal] Apply a box filter (used by CImg::boxfilter() and CImg::blur_box()). + /* + \param ptr the pointer of the data + \param N size of the data + \param boxsize Size of the box filter (can be subpixel). + \param off the offset between two data point + \param order the order of the filter 0 (smoothing), 1st derivative and 2nd derivative. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + */ + static void _cimg_blur_box_apply(T *ptr, const float boxsize, const int N, const ulongT off, + const int order, const bool boundary_conditions, + const unsigned int nb_iter) { + // Smooth. + if (boxsize>1 && nb_iter) { + const int w2 = (int)(boxsize - 1)/2; + const unsigned int winsize = 2*w2 + 1U; + const double frac = (boxsize - winsize)/2.; + CImg win(winsize); + for (unsigned int iter = 0; iter=N) return boundary_conditions?ptr[(N - 1)*off]:T(); + return ptr[x*off]; + } + + // Apply box filter of order 0,1,2. + /** + \param boxsize Size of the box window (can be subpixel) + \param order the order of the filter 0,1 or 2. + \param axis Axis along which the filter is computed. Can be { 'x' | 'y' | 'z' | 'c' }. + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }. + \param nb_iter Number of filter iterations. + **/ + CImg& boxfilter(const float boxsize, const int order, const char axis='x', + const bool boundary_conditions=true, + const unsigned int nb_iter=1) { + if (is_empty() || !boxsize || (boxsize<=1 && !order)) return *this; + const char naxis = cimg::lowercase(axis); + const float nboxsize = boxsize>=0?boxsize:-boxsize* + (naxis=='x'?_width:naxis=='y'?_height:naxis=='z'?_depth:_spectrum)/100; + switch (naxis) { + case 'x' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forYZC(*this,y,z,c) + _cimg_blur_box_apply(data(0,y,z,c),nboxsize,_width,1U,order,boundary_conditions,nb_iter); + } break; + case 'y' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXZC(*this,x,z,c) + _cimg_blur_box_apply(data(x,0,z,c),nboxsize,_height,(ulongT)_width,order,boundary_conditions,nb_iter); + } break; + case 'z' : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYC(*this,x,y,c) + _cimg_blur_box_apply(data(x,y,0,c),nboxsize,_depth,(ulongT)_width*_height,order,boundary_conditions,nb_iter); + } break; + default : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth*_spectrum>=16)) + cimg_forXYZ(*this,x,y,z) + _cimg_blur_box_apply(data(x,y,z,0),nboxsize,_spectrum,(ulongT)_width*_height*_depth, + order,boundary_conditions,nb_iter); + } + } + return *this; + } + + // Apply box filter of order 0,1 or 2 \newinstance. + CImg get_boxfilter(const float boxsize, const int order, const char axis='x', + const bool boundary_conditions=true, + const unsigned int nb_iter=1) const { + return CImg(*this,false).boxfilter(boxsize,order,axis,boundary_conditions,nb_iter); + } + + //! Blur image with a box filter. + /** + \param boxsize_x Size of the box window, along the X-axis (can be subpixel). + \param boxsize_y Size of the box window, along the Y-axis (can be subpixel). + \param boxsize_z Size of the box window, along the Z-axis (can be subpixel). + \param boundary_conditions Boundary conditions. Can be { false=dirichlet | true=neumann }. + \param nb_iter Number of filter iterations. + \note + - This is a recursive algorithm, not depending on the values of the box kernel size. + \see blur(). + **/ + CImg& blur_box(const float boxsize_x, const float boxsize_y, const float boxsize_z, + const bool boundary_conditions=true, + const unsigned int nb_iter=1) { + if (is_empty()) return *this; + if (_width>1) boxfilter(boxsize_x,0,'x',boundary_conditions,nb_iter); + if (_height>1) boxfilter(boxsize_y,0,'y',boundary_conditions,nb_iter); + if (_depth>1) boxfilter(boxsize_z,0,'z',boundary_conditions,nb_iter); + return *this; + } + + //! Blur image with a box filter \newinstance. + CImg get_blur_box(const float boxsize_x, const float boxsize_y, const float boxsize_z, + const bool boundary_conditions=true) const { + return CImg(*this,false).blur_box(boxsize_x,boxsize_y,boxsize_z,boundary_conditions); + } + + //! Blur image with a box filter. + /** + \param boxsize Size of the box window (can be subpixel). + \param boundary_conditions Boundary conditions. Can be { 0=dirichlet | 1=neumann }.a + \see deriche(), vanvliet(). + **/ + CImg& blur_box(const float boxsize, const bool boundary_conditions=true) { + const float nboxsize = boxsize>=0?boxsize:-boxsize*cimg::max(_width,_height,_depth)/100; + return blur_box(nboxsize,nboxsize,nboxsize,boundary_conditions); + } + + //! Blur image with a box filter \newinstance. + CImg get_blur_box(const float boxsize, const bool boundary_conditions=true) const { + return CImg(*this,false).blur_box(boxsize,boundary_conditions); + } + + //! Blur image, with the image guided filter. + /** + \param guide Image used to guide the smoothing process. + \param radius Spatial radius. If negative, it is expressed as a percentage of the largest image size. + \param regularization Regularization parameter. + If negative, it is expressed as a percentage of the guide value range. + \note This method implements the filtering algorithm described in: + He, Kaiming; Sun, Jian; Tang, Xiaoou, "Guided Image Filtering," Pattern Analysis and Machine Intelligence, + IEEE Transactions on , vol.35, no.6, pp.1397,1409, June 2013 + **/ + template + CImg& blur_guided(const CImg& guide, const float radius, const float regularization) { + return get_blur_guided(guide,radius,regularization).move_to(*this); + } + + //! Blur image, with the image guided filter \newinstance. + template + CImg get_blur_guided(const CImg& guide, const float radius, const float regularization) const { + if (!is_sameXYZ(guide)) + throw CImgArgumentException(_cimg_instance + "blur_guided(): Invalid size for specified guide image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data); + if (is_empty() || !radius) return *this; + const int _radius = radius>=0?(int)radius:(int)(-radius*cimg::max(_width,_height,_depth)/100); + float _regularization = regularization; + if (regularization<0) { + T edge_min, edge_max = guide.max_min(edge_min); + if (edge_min==edge_max) return *this; + _regularization = -regularization*(edge_max - edge_min)/100; + } + _regularization = std::max(_regularization,0.01f); + const unsigned int psize = (unsigned int)(1 + 2*_radius); + CImg + mean_p = get_blur_box(psize,true), + mean_I = guide.get_blur_box(psize,true).resize(mean_p), + cov_Ip = get_mul(guide).blur_box(psize,true)-=mean_p.get_mul(mean_I), + var_I = guide.get_sqr().blur_box(psize,true)-=mean_I.get_sqr(), + &a = cov_Ip.div(var_I+=_regularization), + &b = mean_p-=a.get_mul(mean_I); + a.blur_box(psize,true); + b.blur_box(psize,true); + return a.mul(guide)+=b; + } + + //! Blur image using patch-based space. + /** + \param guide Image used to model the smoothing weights. + \param sigma_s Amount of blur along the XYZ-axes. + \param sigma_r Amount of blur along the value axis. + \param patch_size Size of the patches. + \param lookup_size Size of the window to search similar patches. + \param smoothness Smoothness for the patch comparison. + \param is_fast_approx Tells if a fast approximation of the gaussian function is used or not. + **/ + template + CImg& blur_patch(const CImg& guide, + const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, const bool is_fast_approx=true) { + if (is_empty() || !patch_size || !lookup_size) return *this; + return get_blur_patch(guide,sigma_s,sigma_r,patch_size,lookup_size,smoothness,is_fast_approx).move_to(*this); + } + + //! Blur image using patch-based space \newinstance. + template + CImg get_blur_patch(const CImg& guide, + const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, + const bool is_fast_approx=true) const { + +#define _cimg_blur_patch3d_fast(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) \ + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) \ + firstprivate(P,Q)) \ + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N##x##N(res,x,y,z); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N##x##N(_guide,x,y,z,c,pP,tfloat); pP+=N3; } \ + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, \ + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; \ + tfloat sum_weights = 0; \ + cimg_for_in##N##XYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) \ + if (cimg::abs(_guide(x,y,z,0) - _guide(p,q,r,0))3?0:1; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); \ + } \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); \ + } _cimg_abort_catch_openmp } + +#define _cimg_blur_patch3d(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) \ + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) \ + firstprivate(P,Q)) \ + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N##x##N(res,x,y,z); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N##x##N(_guide,x,y,z,c,pP,tfloat); pP+=N3; } \ + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, \ + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; \ + tfloat sum_weights = 0, weight_max = 0; \ + cimg_for_in##N##XYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) if (p!=x || q!=y || r!=z) { \ + tfloat *pQ = Q._data; cimg_forC(_guide,c) { cimg_get##N##x##N##x##N(_guide,p,q,r,c,pQ,tfloat); pQ+=N3; } \ + tfloat distance2 = 0; \ + pQ = Q._data; cimg_for(P,_pP,tfloat) { const tfloat dI = *_pP - *(pQ++); distance2+=dI*dI; } \ + distance2/=Pnorm; \ + const tfloat dx = (tfloat)p - x, dy = (tfloat)q - y, dz = (tfloat)r - z, \ + alldist = distance2 + (dx*dx + dy*dy + dz*dz)/sigma_s2, weight = std::exp(-alldist); \ + if (weight>weight_max) weight_max = weight; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); \ + } \ + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight_max*(*this)(x,y,z,c); \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); \ + } _cimg_abort_catch_openmp } + +#define _cimg_blur_patch2d_fast(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) \ + firstprivate(P,Q)) \ + cimg_forXY(res,x,y) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N(res,x,y); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N(_guide,x,y,0,c,pP,tfloat); pP+=N2; } \ + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; \ + tfloat sum_weights = 0; \ + cimg_for_in##N##XY(res,x0,y0,x1,y1,p,q) \ + if (cimg::abs(_guide(x,y,0,0) - _guide(p,q,0,0))3?0:1; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); \ + } \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); \ + } _cimg_abort_catch_openmp } + +#define _cimg_blur_patch2d(N) { \ + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) \ + firstprivate(P,Q)) \ + cimg_forXY(res,x,y) _cimg_abort_try_openmp { \ + cimg_abort_test; \ + cimg_def##N##x##N(res,x,y); \ + tfloat *pP = P._data; cimg_forC(_guide,c) { cimg_get##N##x##N(_guide,x,y,0,c,pP,tfloat); pP+=N2; } \ + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; \ + tfloat sum_weights = 0, weight_max = 0; \ + cimg_for_in##N##XY(res,x0,y0,x1,y1,p,q) if (p!=x || q!=y) { \ + tfloat *pQ = Q._data; cimg_forC(_guide,c) { cimg_get##N##x##N(_guide,p,q,0,c,pQ,tfloat); pQ+=N2; } \ + tfloat distance2 = 0; \ + pQ = Q._data; cimg_for(P,_pP,tfloat) { const tfloat dI = *_pP - *(pQ++); distance2+=dI*dI; } \ + distance2/=Pnorm; \ + const tfloat dx = (tfloat)p - x, dy = (tfloat)q - y, \ + alldist = distance2 + (dx*dx+dy*dy)/sigma_s2, weight = std::exp(-alldist); \ + if (weight>weight_max) weight_max = weight; \ + sum_weights+=weight; \ + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); \ + } \ + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight_max*(*this)(x,y,c); \ + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; \ + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); \ + } _cimg_abort_catch_openmp } + + typedef _cimg_tfloat tfloat; + if (!is_sameXYZ(guide)) + throw CImgArgumentException(_cimg_instance + "blur_patch(): Invalid size for specified guide image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data); + if (is_empty() || !patch_size || !lookup_size) return +*this; + Tfloat val_min, val_max = (Tfloat)max_min(val_min); + _cimg_abort_init_openmp; + cimg_abort_init; + + CImg res(_width,_height,_depth,_spectrum,0); + const CImg + __guide = guide?CImg(guide,guide.pixel_type()==cimg::type::string()): + CImg(*this,pixel_type()==cimg::type::string()), + _guide = smoothness>0?__guide.get_blur(smoothness):__guide.get_shared(); + CImg P(_guide._spectrum*patch_size*patch_size*(_depth>1?patch_size:1)), Q(P); + + t guide_min = (t)0, guide_max = (t)0; + if (sigma_r<0) guide_max = guide.max_min(guide_min); + const float + guide_delta = (float)(guide_max - guide_min), + _sigma_s = sigma_s>=0?sigma_s:-sigma_s*cimg::max(_width,_height,_depth)/100, + _sigma_r = sigma_r>=0?sigma_r:-sigma_r*guide_delta/100, + sigma_s2 = _sigma_s*_sigma_s, + sigma_r2 = _sigma_r*_sigma_r, + sigma_r3 = 3*_sigma_r, + Pnorm = P.size()*sigma_r2; + const int rsize2 = (int)lookup_size/2, rsize1 = (int)lookup_size - rsize2 - 1; + const unsigned int N2 = patch_size*patch_size, N3 = N2*patch_size; + cimg::unused(N2,N3); + if (_depth>1) switch (patch_size) { // 3D + case 2 : if (is_fast_approx) _cimg_blur_patch3d_fast(2) else _cimg_blur_patch3d(2) break; + case 3 : if (is_fast_approx) _cimg_blur_patch3d_fast(3) else _cimg_blur_patch3d(3) break; + default : { + const int psize2 = (int)patch_size/2, psize1 = (int)patch_size - psize2 - 1; + if (is_fast_approx) { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) + firstprivate(P,Q)) + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { // Fast + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,z - psize1,x + psize2,y + psize2,z + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; + tfloat sum_weights = 0; + cimg_for_inXYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) + if (cimg::abs(_guide(x,y,z,0) - _guide(p,q,r,0))3?0:1; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); + } + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); + } _cimg_abort_catch_openmp + } else { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height*res._depth>=4) + firstprivate(P,Q)) + cimg_forXYZ(res,x,y,z) _cimg_abort_try_openmp { // Exact + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,z - psize1,x + psize2,y + psize2,z + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, z0 = z - rsize1, + x1 = x + rsize2, y1 = y + rsize2, z1 = z + rsize2; + tfloat sum_weights = 0, weight_max = 0; + cimg_for_inXYZ(res,x0,y0,z0,x1,y1,z1,p,q,r) if (p!=x || q!=y || r!=z) { + (Q = _guide.get_crop(p - psize1,q - psize1,r - psize1,p + psize2,q + psize2,r + psize2,true))-=P; + const tfloat + dx = (tfloat)x - p, dy = (tfloat)y - q, dz = (tfloat)z - r, + distance2 = (tfloat)(Q.pow(2).sum()/Pnorm + (dx*dx + dy*dy + dz*dz)/sigma_s2), + weight = std::exp(-distance2); + if (weight>weight_max) weight_max = weight; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight*(*this)(p,q,r,c); + } + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,z,c)+=(Tfloat)weight_max*(*this)(x,y,z,c); + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,z,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,z,c) = (Tfloat)((*this)(x,y,z,c)); + } _cimg_abort_catch_openmp + } + } + } else switch (patch_size) { // 2D + case 2 : if (is_fast_approx) _cimg_blur_patch2d_fast(2) else _cimg_blur_patch2d(2) break; + case 3 : if (is_fast_approx) _cimg_blur_patch2d_fast(3) else _cimg_blur_patch2d(3) break; + case 4 : if (is_fast_approx) _cimg_blur_patch2d_fast(4) else _cimg_blur_patch2d(4) break; + case 5 : if (is_fast_approx) _cimg_blur_patch2d_fast(5) else _cimg_blur_patch2d(5) break; + case 6 : if (is_fast_approx) _cimg_blur_patch2d_fast(6) else _cimg_blur_patch2d(6) break; + case 7 : if (is_fast_approx) _cimg_blur_patch2d_fast(7) else _cimg_blur_patch2d(7) break; + case 8 : if (is_fast_approx) _cimg_blur_patch2d_fast(8) else _cimg_blur_patch2d(8) break; + case 9 : if (is_fast_approx) _cimg_blur_patch2d_fast(9) else _cimg_blur_patch2d(9) break; + default : { // Fast + const int psize2 = (int)patch_size/2, psize1 = (int)patch_size - psize2 - 1; + if (is_fast_approx) { + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) + firstprivate(P,Q)) + cimg_forXY(res,x,y) _cimg_abort_try_openmp { // Fast + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,x + psize2,y + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; + tfloat sum_weights = 0; + cimg_for_inXY(res,x0,y0,x1,y1,p,q) + if (cimg::abs(_guide(x,y,0) - _guide(p,q,0))3?0:1; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); + } + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); + } _cimg_abort_catch_openmp + } else { + cimg_pragma_openmp(parallel for cimg_openmp_if(res._width>=(cimg_openmp_sizefactor)*32 && res._height>=4) + firstprivate(P,Q)) + cimg_forXY(res,x,y) _cimg_abort_try_openmp { // Exact + cimg_abort_test; + P = _guide.get_crop(x - psize1,y - psize1,x + psize2,y + psize2,true); + const int x0 = x - rsize1, y0 = y - rsize1, x1 = x + rsize2, y1 = y + rsize2; + tfloat sum_weights = 0, weight_max = 0; + cimg_for_inXY(res,x0,y0,x1,y1,p,q) if (p!=x || q!=y) { + (Q = _guide.get_crop(p - psize1,q - psize1,p + psize2,q + psize2,true))-=P; + const tfloat + dx = (tfloat)x - p, dy = (tfloat)y - q, + distance2 = (tfloat)(Q.pow(2).sum()/Pnorm + (dx*dx + dy*dy)/sigma_s2), + weight = std::exp(-distance2); + if (weight>weight_max) weight_max = weight; + sum_weights+=weight; + cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight*(*this)(p,q,c); + } + sum_weights+=weight_max; cimg_forC(res,c) res(x,y,c)+=(Tfloat)weight_max*(*this)(x,y,c); + if (sum_weights>1e-10) cimg_forC(res,c) res(x,y,c)/=(Tfloat)sum_weights; + else cimg_forC(res,c) res(x,y,c) = (Tfloat)((*this)(x,y,c)); + } _cimg_abort_catch_openmp + } + } + } + return res.cut(val_min,val_max); + } + + //! Blur image using patch-based space \simplification. + CImg& blur_patch(const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, const bool is_fast_approx=true) { + return blur_patch(*this,sigma_s,sigma_r,patch_size,lookup_size,smoothness,is_fast_approx); + } + + //! Blur image using patch-based space \simplification \newinstance. + CImg get_blur_patch(const float sigma_s, const float sigma_r, const unsigned int patch_size=3, + const unsigned int lookup_size=4, const float smoothness=0, + const bool is_fast_approx=true) const { + return get_blur_patch(*this,sigma_s,sigma_r,patch_size,lookup_size,smoothness,is_fast_approx); + } + + //! Blur image with the median filter. + /** + \param n Size of the median filter. + \param threshold Threshold used to discard pixels too far from the current pixel value in the median computation. + **/ + CImg& blur_median(const unsigned int n, const float threshold=0) { + if (!n) return *this; + return get_blur_median(n,threshold).move_to(*this); + } + + //! Blur image with the median filter \newinstance. + CImg get_blur_median(const unsigned int n, const float threshold=0) const { + if (is_empty() || n<=1) return +*this; + CImg res(_width,_height,_depth,_spectrum); + T *ptrd = res._data; + cimg::unused(ptrd); + const int hr = (int)n/2, hl = n - hr - 1; + if (res._depth!=1) { // 3D + if (threshold>0) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(*this,x,y,z,c) { // With threshold + const int + x0 = x - hl, y0 = y - hl, z0 = z - hl, x1 = x + hr, y1 = y + hr, z1 = z + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, nz0 = z0<0?0:z0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1, nz1 = z1>=depth()?depth() - 1:z1; + const Tfloat val0 = (Tfloat)(*this)(x,y,z,c); + CImg values(n*n*n); + unsigned int nb_values = 0; + T *_ptrd = values.data(); + cimg_for_inXYZ(*this,nx0,ny0,nz0,nx1,ny1,nz1,p,q,r) + if (cimg::abs((*this)(p,q,r,c) - val0)<=threshold) { *(_ptrd++) = (*this)(p,q,r,c); ++nb_values; } + res(x,y,z,c) = nb_values?values.get_shared_points(0,nb_values - 1).median():(*this)(x,y,z,c); + } + else + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_depth*_spectrum>=4)) + cimg_forXYZC(*this,x,y,z,c) { // Without threshold + const int + x0 = x - hl, y0 = y - hl, z0 = z - hl, x1 = x + hr, y1 = y + hr, z1 = z + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, nz0 = z0<0?0:z0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1, nz1 = z1>=depth()?depth() - 1:z1; + res(x,y,z,c) = get_crop(nx0,ny0,nz0,c,nx1,ny1,nz1,c).median(); + } + } else { + if (threshold>0) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && + _height*_spectrum>=4)) + cimg_forXYC(*this,x,y,c) { // With threshold + const int + x0 = x - hl, y0 = y - hl, x1 = x + hr, y1 = y + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1; + const Tfloat val0 = (Tfloat)(*this)(x,y,c); + CImg values(n*n); + unsigned int nb_values = 0; + T *_ptrd = values.data(); + cimg_for_inXY(*this,nx0,ny0,nx1,ny1,p,q) + if (cimg::abs((*this)(p,q,c) - val0)<=threshold) { *(_ptrd++) = (*this)(p,q,c); ++nb_values; } + res(x,y,c) = nb_values?values.get_shared_points(0,nb_values - 1).median():(*this)(x,y,c); + } + else { + const int + w1 = width() - 1, h1 = height() - 1, + w2 = width() - 2, h2 = height() - 2, + w3 = width() - 3, h3 = height() - 3, + w4 = width() - 4, h4 = height() - 4; + switch (n) { // Without threshold + case 3 : { + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg I(9); + cimg_for_in3x3(*this,1,1,w2,h2,x,y,0,c,I,T) + res(x,y,c) = cimg::median(I[0],I[1],I[2],I[3],I[4],I[5],I[6],I[7],I[8]); + cimg_for_borderXY(*this,x,y,1) + res(x,y,c) = get_crop(std::max(0,x - 1),std::max(0,y - 1),0,c, + std::min(w1,x + 1),std::min(h1,y + 1),0,c).median(); + } + } break; + case 5 : { + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg I(25); + cimg_for_in5x5(*this,2,2,w3,h3,x,y,0,c,I,T) + res(x,y,c) = cimg::median(I[0],I[1],I[2],I[3],I[4], + I[5],I[6],I[7],I[8],I[9], + I[10],I[11],I[12],I[13],I[14], + I[15],I[16],I[17],I[18],I[19], + I[20],I[21],I[22],I[23],I[24]); + cimg_for_borderXY(*this,x,y,2) + res(x,y,c) = get_crop(std::max(0,x - 2),std::max(0,y - 2),0,c, + std::min(w1,x + 2),std::min(h1,y + 2),0,c).median(); + } + } break; + case 7 : { + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg I(49); + cimg_for_in7x7(*this,3,3,w4,h4,x,y,0,c,I,T) + res(x,y,c) = cimg::median(I[0],I[1],I[2],I[3],I[4],I[5],I[6], + I[7],I[8],I[9],I[10],I[11],I[12],I[13], + I[14],I[15],I[16],I[17],I[18],I[19],I[20], + I[21],I[22],I[23],I[24],I[25],I[26],I[27], + I[28],I[29],I[30],I[31],I[32],I[33],I[34], + I[35],I[36],I[37],I[38],I[39],I[40],I[41], + I[42],I[43],I[44],I[45],I[46],I[47],I[48]); + cimg_for_borderXY(*this,x,y,3) + res(x,y,c) = get_crop(std::max(0,x - 3),std::max(0,y - 3),0,c, + std::min(w1,x + 3),std::min(h1,y + 3),0,c).median(); + } + } break; + default : { + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*16 && _height*_spectrum>=4)) + cimg_forXYC(*this,x,y,c) { + const int + x0 = x - hl, y0 = y - hl, x1 = x + hr, y1 = y + hr, + nx0 = x0<0?0:x0, ny0 = y0<0?0:y0, + nx1 = x1>=width()?width() - 1:x1, ny1 = y1>=height()?height() - 1:y1; + res(x,y,c) = get_crop(nx0,ny0,0,c,nx1,ny1,0,c).median(); + } + } + } + } + } + return res; + } + + //! Sharpen image. + /** + \param amplitude Sharpening amplitude + \param sharpen_type Select sharpening method. Can be { false=inverse diffusion | true=shock filters }. + \param edge Edge threshold (shock filters only). + \param alpha Gradient smoothness (shock filters only). + \param sigma Tensor smoothness (shock filters only). + **/ + CImg& sharpen(const float amplitude, const bool sharpen_type=false, const float edge=1, + const float alpha=0, const float sigma=0) { + if (is_empty()) return *this; + T val_min, val_max = max_min(val_min); + const float nedge = edge/2; + CImg velocity(_width,_height,_depth,_spectrum), _veloc_max(_spectrum); + + if (_depth>1) { // 3D + if (sharpen_type) { // Shock filters + CImg G = (alpha>0?get_blur(alpha).get_structure_tensors():get_structure_tensors()); + if (sigma>0) G.blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*32 && + _height*_depth>=16)) + cimg_forYZ(G,y,z) { + Tfloat *ptrG0 = G.data(0,y,z,0), *ptrG1 = G.data(0,y,z,1), + *ptrG2 = G.data(0,y,z,2), *ptrG3 = G.data(0,y,z,3); + CImg val, vec; + cimg_forX(G,x) { + G.get_tensor_at(x,y,z).symmetric_eigen(val,vec); + if (val[0]<0) val[0] = 0; + if (val[1]<0) val[1] = 0; + if (val[2]<0) val[2] = 0; + *(ptrG0++) = vec(0,0); + *(ptrG1++) = vec(0,1); + *(ptrG2++) = vec(0,2); + *(ptrG3++) = 1 - (Tfloat)std::pow(1 + val[0] + val[1] + val[2],-(Tfloat)nedge); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + u = G(x,y,z,0), + v = G(x,y,z,1), + w = G(x,y,z,2), + amp = G(x,y,z,3), + ixx = Incc + Ipcc - 2*Iccc, + ixy = (Innc + Ippc - Inpc - Ipnc)/4, + ixz = (Incn + Ipcp - Incp - Ipcn)/4, + iyy = Icnc + Icpc - 2*Iccc, + iyz = (Icnn + Icpp - Icnp - Icpn)/4, + izz = Iccn + Iccp - 2*Iccc, + ixf = Incc - Iccc, + ixb = Iccc - Ipcc, + iyf = Icnc - Iccc, + iyb = Iccc - Icpc, + izf = Iccn - Iccc, + izb = Iccc - Iccp, + itt = u*u*ixx + v*v*iyy + w*w*izz + 2*u*v*ixy + 2*u*w*ixz + 2*v*w*iyz, + it = u*cimg::minmod(ixf,ixb) + v*cimg::minmod(iyf,iyb) + w*cimg::minmod(izf,izb), + veloc = -amp*cimg::sign(itt)*cimg::abs(it); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } else // Inverse diffusion + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat veloc = -Ipcc - Incc - Icpc - Icnc - Iccp - Iccn + 6*Iccc; + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } else { // 2D + if (sharpen_type) { // Shock filters + CImg G = (alpha>0?get_blur(alpha).get_structure_tensors():get_structure_tensors()); + if (sigma>0) G.blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*32 && + _height>=(cimg_openmp_sizefactor)*16)) + cimg_forY(G,y) { + CImg val, vec; + Tfloat *ptrG0 = G.data(0,y,0,0), *ptrG1 = G.data(0,y,0,1), *ptrG2 = G.data(0,y,0,2); + cimg_forX(G,x) { + G.get_tensor_at(x,y).symmetric_eigen(val,vec); + if (val[0]<0) val[0] = 0; + if (val[1]<0) val[1] = 0; + *(ptrG0++) = vec(0,0); + *(ptrG1++) = vec(0,1); + *(ptrG2++) = 1 - (Tfloat)std::pow(1 + val[0] + val[1],-(Tfloat)nedge); + } + } + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat + u = G(x,y,0), + v = G(x,y,1), + amp = G(x,y,2), + ixx = Inc + Ipc - 2*Icc, + ixy = (Inn + Ipp - Inp - Ipn)/4, + iyy = Icn + Icp - 2*Icc, + ixf = Inc - Icc, + ixb = Icc - Ipc, + iyf = Icn - Icc, + iyb = Icc - Icp, + itt = u*u*ixx + v*v*iyy + 2*u*v*ixy, + it = u*cimg::minmod(ixf,ixb) + v*cimg::minmod(iyf,iyb), + veloc = -amp*cimg::sign(itt)*cimg::abs(it); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } else // Inverse diffusion + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*512 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = velocity.data(0,0,0,c), veloc_max = 0; + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat veloc = -Ipc - Inc - Icp - Icn + 4*Icc; + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } + _veloc_max[c] = veloc_max; + } + } + const Tfloat veloc_max = _veloc_max.max(); + if (veloc_max<=0) return *this; + return ((velocity*=amplitude/veloc_max)+=*this).cut(val_min,val_max).move_to(*this); + } + + //! Sharpen image \newinstance. + CImg get_sharpen(const float amplitude, const bool sharpen_type=false, const float edge=1, + const float alpha=0, const float sigma=0) const { + return (+*this).sharpen(amplitude,sharpen_type,edge,alpha,sigma); + } + + //! Return image gradient. + /** + \param axes Axes considered for the gradient computation, as a C-string (e.g "xy"). + \param scheme = Numerical scheme used for the gradient computation: + - -1 = Backward finite differences + - 0 = Centered finite differences (default) + - 1 = Forward finite differences + - 2 = Using Sobel kernels + - 3 = Using rotation invariant kernels + - 4 = Using Deriche recursive filter. + - 5 = Using Van Vliet recursive filter. + **/ + CImgList get_gradient(const char *const axes=0, const int scheme=0) const { + CImgList res; + char __axes[4] = { 0 }; + const char *_axes = axes?axes:__axes; + if (!axes) { + unsigned int k = 0; + if (_width>1) __axes[k++] = 'x'; + if (_height>1) __axes[k++] = 'y'; + if (_depth>1) __axes[k++] = 'z'; + } + + CImg grad; + while (*_axes) { + const char axis = cimg::lowercase(*(_axes++)); + if (axis!='x' && axis!='y' && axis!='z') + throw CImgArgumentException(_cimg_instance + "get_gradient(): Invalid specified axes '%s'.", + cimg_instance, + axes); + const longT off = axis=='x'?1:axis=='y'?_width:_width*_height; + if ((axis=='x' && _width==1) || (axis=='y' && _height==1) || (axis=='z' && _depth==1)) { + grad.assign(_width,_height,_depth,_spectrum,0).move_to(res); + continue; + } + + const int _scheme = axis=='z' && (scheme==2 || scheme==3)?0:scheme; + switch (_scheme) { + case -1 : { // Backward finite differences + grad.assign(_width,_height,_depth,_spectrum); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),16384)) + cimg_forXYZC(*this,x,y,z,c) { + const ulongT pos = offset(x,y,z,c); + if ((axis=='x' && !x) || (axis=='y' && !y) || (axis=='z' && !z)) + grad[pos] = 0; + else + grad[pos] = (Tfloat)_data[pos] - _data[pos - off]; + } + grad.move_to(res); + } break; + case 1 : { // Forward finite differences + grad.assign(_width,_height,_depth,_spectrum); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),16384)) + cimg_forXYZC(*this,x,y,z,c) { + const ulongT pos = offset(x,y,z,c); + if ((axis=='x' && x==width() - 1) || (axis=='y' && y==height() - 1) || (axis=='z' && z==depth() - 1)) + grad[pos] = 0; + else + grad[pos] = (Tfloat)_data[pos + off] - _data[pos]; + } + grad.move_to(res); + } break; + case 2 : { // Sobel scheme + grad.assign(_width,_height,_depth,_spectrum); + if (axis=='x') // X-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = - Ipp + Inp - 2*Ipc + 2*Inc - Ipn + Inn; + } + else // Y-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = - Ipp - 2*Icp - Inp + Ipn + 2*Icn + Inn; + } + grad.move_to(res); + } break; + case 3 : { // Rotation invariant scheme + const Tfloat a = (Tfloat)(0.25f*(2 - std::sqrt(2.f))), b = (Tfloat)(0.5f*(std::sqrt(2.f) - 1)); + grad.assign(_width,_height,_depth,_spectrum); + if (axis=='x') // X-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = -a*Ipp - b*Ipc - a*Ipn + a*Inp + b*Inc + a*Inn; + } + else // Y-axis + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) grad(x,y,z,c) = -a*Ipp - b*Icp - a*Inp + a*Ipn + b*Icn + a*Inn; + } + grad.move_to(res); + } break; + case 4 : // Deriche filter + get_deriche(0,1,axis).move_to(res); + break; + case 5 : // Van Vliet filter + get_vanvliet(0,1,axis).move_to(res); + break; + default : { // Central finite differences + grad.assign(_width,_height,_depth,_spectrum); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) cimg_openmp_if_size(size(),16384)) + cimg_forXYZC(*this,x,y,z,c) { + const ulongT pos = offset(x,y,z,c); + if ((axis=='x' && !x) || (axis=='y' && !y) || (axis=='z' && !z)) + grad[pos] = ((Tfloat)_data[pos + off] - _data[pos])/2; + else if ((axis=='x' && x==width() - 1) || (axis=='y' && y==height() - 1) || (axis=='z' && z==depth() - 1)) + grad[pos] = ((Tfloat)_data[pos] - _data[pos - off])/2; + else + grad[pos] = ((Tfloat)_data[pos + off] - _data[pos - off])/2; + } + grad.move_to(res); + } break; + } + } + return res; + } + + //! Return image hessian. + /** + \param axes Axes considered for the hessian computation, as a C-string (e.g "xy"). + **/ + CImgList get_hessian(const char *const axes=0) const { + CImgList res; + char __axes[12] = { 0 }; + const char *_axes = axes?axes:__axes; + if (!axes) { + unsigned int k = 0; + if (_width>1) { __axes[k++] = 'x'; __axes[k++] = 'x'; } + if (_width>1 && _height>1) { __axes[k++] = 'x'; __axes[k++] = 'y'; } + if (_width>1 && _depth>1) { __axes[k++] = 'x'; __axes[k++] = 'z'; } + if (_height>1) { __axes[k++] = 'y'; __axes[k++] = 'y'; } + if (_height>1 && _depth>1) { __axes[k++] = 'y'; __axes[k++] = 'z'; } + if (_depth>1) { __axes[k++] = 'z'; __axes[k++] = 'z'; } + } + const unsigned int len = (unsigned int)std::strlen(_axes); + if (len%2) + throw CImgArgumentException(_cimg_instance + "get_hessian(): Invalid specified axes '%s'.", + cimg_instance, + axes); + CImg hess; + for (unsigned int k = 0; k=(cimg_openmp_sizefactor)*16384 && + _depth*_spectrum>=2)) + cimg_forZC(*this,z,c) { + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,z,c,I,Tfloat) hess(x,y,z,c) = (Inn + Ipp - Inp - Ipn)/4; + } + else if (axis1=='x' && axis2=='z') // Ixz + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*16384 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) hess(x,y,z,c) = (Incn + Ipcp - Incp - Ipcn)/4; + } + else // Iyz + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*16384 && + _spectrum>=2)) + cimg_forC(*this,c) { + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) hess(x,y,z,c) = (Icnn + Icpp - Icnp - Icpn)/4; + } + hess.move_to(res); + } + return res; + } + + //! Compute image Laplacian. + CImg& laplacian() { + return get_laplacian().move_to(*this); + } + + //! Compute image Laplacian \newinstance. + CImg get_laplacian() const { + if (is_empty()) return CImg(); + CImg res(_width,_height,_depth,_spectrum); + if (_depth>1) { // 3D + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1048576 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = res.data(0,0,0,c); + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) *(ptrd++) = Incc + Ipcc + Icnc + Icpc + Iccn + Iccp - 6*Iccc; + } + } else if (_height>1) { // 2D + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*1048576 && + _depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = res.data(0,0,0,c); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) *(ptrd++) = Inc + Ipc + Icn + Icp - 4*Icc; + } + } else { // 1D + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*1048576 && + _height*_depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd = res.data(0,0,0,c); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) *(ptrd++) = Inc + Ipc - 2*Icc; + } + } + return res; + } + + //! Compute the structure tensor field of an image. + /** + \param is_fwbw_scheme scheme. Can be { false=centered | true=forward-backward } + **/ + CImg& structure_tensors(const bool is_fwbw_scheme=false) { + return get_structure_tensors(is_fwbw_scheme).move_to(*this); + } + + //! Compute the structure tensor field of an image \newinstance. + CImg get_structure_tensors(const bool is_fwbw_scheme=false) const { + if (is_empty()) return *this; + CImg res; + if (_depth>1) { // 3D + res.assign(_width,_height,_depth,6,0); + if (!is_fwbw_scheme) { // Classical central finite differences + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1048576 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat + *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2), + *ptrd3 = res.data(0,0,0,3), *ptrd4 = res.data(0,0,0,4), *ptrd5 = res.data(0,0,0,5); + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + ix = (Incc - Ipcc)/2, + iy = (Icnc - Icpc)/2, + iz = (Iccn - Iccp)/2; + *(ptrd0++)+=ix*ix; + *(ptrd1++)+=ix*iy; + *(ptrd2++)+=ix*iz; + *(ptrd3++)+=iy*iy; + *(ptrd4++)+=iy*iz; + *(ptrd5++)+=iz*iz; + } + } + } else { // Forward/backward finite differences + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1048576 && + _spectrum>=2)) + cimg_forC(*this,c) { + Tfloat + *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2), + *ptrd3 = res.data(0,0,0,3), *ptrd4 = res.data(0,0,0,4), *ptrd5 = res.data(0,0,0,5); + CImg_3x3x3(I,Tfloat); + cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) { + const Tfloat + ixf = Incc - Iccc, ixb = Iccc - Ipcc, + iyf = Icnc - Iccc, iyb = Iccc - Icpc, + izf = Iccn - Iccc, izb = Iccc - Iccp; + *(ptrd0++)+=(ixf*ixf + ixb*ixb)/2; + *(ptrd1++)+=(ixf*iyf + ixf*iyb + ixb*iyf + ixb*iyb)/4; + *(ptrd2++)+=(ixf*izf + ixf*izb + ixb*izf + ixb*izb)/4; + *(ptrd3++)+=(iyf*iyf + iyb*iyb)/2; + *(ptrd4++)+=(iyf*izf + iyf*izb + iyb*izf + iyb*izb)/4; + *(ptrd5++)+=(izf*izf + izb*izb)/2; + } + } + } + } else { // 2D + res.assign(_width,_height,_depth,3,0); + if (!is_fwbw_scheme) { // Classical central finite differences + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*1048576 && + _depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat + ix = (Inc - Ipc)/2, + iy = (Icn - Icp)/2; + *(ptrd0++)+=ix*ix; + *(ptrd1++)+=ix*iy; + *(ptrd2++)+=iy*iy; + } + } + } else { // Forward/backward finite differences (version 2) + cimg_pragma_openmp(parallel for cimg_openmp_if(_width*_height>=(cimg_openmp_sizefactor)*1048576 && + _depth*_spectrum>=2)) + cimg_forC(*this,c) { + Tfloat *ptrd0 = res.data(0,0,0,0), *ptrd1 = res.data(0,0,0,1), *ptrd2 = res.data(0,0,0,2); + CImg_3x3(I,Tfloat); + cimg_for3x3(*this,x,y,0,c,I,Tfloat) { + const Tfloat + ixf = Inc - Icc, ixb = Icc - Ipc, + iyf = Icn - Icc, iyb = Icc - Icp; + *(ptrd0++)+=(ixf*ixf + ixb*ixb)/2; + *(ptrd1++)+=(ixf*iyf + ixf*iyb + ixb*iyf + ixb*iyb)/4; + *(ptrd2++)+=(iyf*iyf + iyb*iyb)/2; + } + } + } + } + return res; + } + + //! Compute field of diffusion tensors for edge-preserving smoothing. + /** + \param sharpness Sharpness + \param anisotropy Anisotropy + \param alpha Standard deviation of the gradient blur. + \param sigma Standard deviation of the structure tensor blur. + \param is_sqrt Tells if the square root of the tensor field is computed instead. + **/ + CImg& diffusion_tensors(const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const bool is_sqrt=false) { + CImg res; + const float + nsharpness = std::max(sharpness,1e-5f), + power1 = (is_sqrt?0.5f:1)*nsharpness, + power2 = power1/(1e-7f + 1 - anisotropy); + blur(alpha).normalize(0,(T)255); + + if (_depth>1) { // 3D + get_structure_tensors().move_to(res).blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height*_depth>=(cimg_openmp_sizefactor)*256)) + cimg_forYZ(*this,y,z) { + Tfloat + *ptrd0 = res.data(0,y,z,0), *ptrd1 = res.data(0,y,z,1), *ptrd2 = res.data(0,y,z,2), + *ptrd3 = res.data(0,y,z,3), *ptrd4 = res.data(0,y,z,4), *ptrd5 = res.data(0,y,z,5); + CImg val(3), vec(3,3); + cimg_forX(*this,x) { + res.get_tensor_at(x,y,z).symmetric_eigen(val,vec); + const float + _l1 = val[2], _l2 = val[1], _l3 = val[0], + l1 = _l1>0?_l1:0, l2 = _l2>0?_l2:0, l3 = _l3>0?_l3:0, + ux = vec(0,0), uy = vec(0,1), uz = vec(0,2), + vx = vec(1,0), vy = vec(1,1), vz = vec(1,2), + wx = vec(2,0), wy = vec(2,1), wz = vec(2,2), + n1 = (float)std::pow(1 + l1 + l2 + l3,-power1), + n2 = (float)std::pow(1 + l1 + l2 + l3,-power2); + *(ptrd0++) = n1*(ux*ux + vx*vx) + n2*wx*wx; + *(ptrd1++) = n1*(ux*uy + vx*vy) + n2*wx*wy; + *(ptrd2++) = n1*(ux*uz + vx*vz) + n2*wx*wz; + *(ptrd3++) = n1*(uy*uy + vy*vy) + n2*wy*wy; + *(ptrd4++) = n1*(uy*uz + vy*vz) + n2*wy*wz; + *(ptrd5++) = n1*(uz*uz + vz*vz) + n2*wz*wz; + } + } + } else { // for 2D images + get_structure_tensors().move_to(res).blur(sigma); + cimg_pragma_openmp(parallel for cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*256 && + _height>=(cimg_openmp_sizefactor)*256)) + cimg_forY(*this,y) { + Tfloat *ptrd0 = res.data(0,y,0,0), *ptrd1 = res.data(0,y,0,1), *ptrd2 = res.data(0,y,0,2); + CImg val(2), vec(2,2); + cimg_forX(*this,x) { + res.get_tensor_at(x,y).symmetric_eigen(val,vec); + const float + _l1 = val[1], _l2 = val[0], + l1 = _l1>0?_l1:0, l2 = _l2>0?_l2:0, + ux = vec(1,0), uy = vec(1,1), + vx = vec(0,0), vy = vec(0,1), + n1 = (float)std::pow(1 + l1 + l2,-power1), + n2 = (float)std::pow(1 + l1 + l2,-power2); + *(ptrd0++) = n1*ux*ux + n2*vx*vx; + *(ptrd1++) = n1*ux*uy + n2*vx*vy; + *(ptrd2++) = n1*uy*uy + n2*vy*vy; + } + } + } + return res.move_to(*this); + } + + //! Compute field of diffusion tensors for edge-preserving smoothing \newinstance. + CImg get_diffusion_tensors(const float sharpness=0.7f, const float anisotropy=0.6f, + const float alpha=0.6f, const float sigma=1.1f, const bool is_sqrt=false) const { + return CImg(*this,false).diffusion_tensors(sharpness,anisotropy,alpha,sigma,is_sqrt); + } + + //! Estimate displacement field between two images. + /** + \param source Reference image. + \param smoothness Smoothness of estimated displacement field. + \param precision Precision required for algorithm convergence. + \param nb_scales Number of scales used to estimate the displacement field. + \param iteration_max Maximum number of iterations allowed for one scale. + \param is_backward If false, match I2(X + U(X)) = I1(X), else match I2(X) = I1(X - U(X)). + \param guide Image used as the initial correspondence estimate for the algorithm. + 'guide' may have a last channel with boolean values (0=false | other=true) that + tells for each pixel if its correspondence vector is constrained to its initial value (constraint mask). + **/ + CImg& displacement(const CImg& source, const float smoothness=0.1f, const float precision=5.f, + const unsigned int nb_scales=0, const unsigned int iteration_max=10000, + const bool is_backward=false, + const CImg& guide=CImg::const_empty()) { + return get_displacement(source,smoothness,precision,nb_scales,iteration_max,is_backward,guide). + move_to(*this); + } + + //! Estimate displacement field between two images \newinstance. + CImg get_displacement(const CImg& source, + const float smoothness=0.1f, const float precision=5.f, + const unsigned int nb_scales=0, const unsigned int iteration_max=10000, + const bool is_backward=false, + const CImg& guide=CImg::const_empty()) const { + if (is_empty() || !source) return +*this; + if (!is_sameXYZC(source)) + throw CImgArgumentException(_cimg_instance + "displacement(): Instance and source image (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + source._width,source._height,source._depth,source._spectrum,source._data); + if (precision<0) + throw CImgArgumentException(_cimg_instance + "displacement(): Invalid specified precision %g " + "(should be >=0)", + cimg_instance, + precision); + + const bool is_3d = source._depth>1; + const unsigned int constraint = is_3d?3:2; + + if (guide && + (guide._width!=_width || guide._height!=_height || guide._depth!=_depth || guide._spectrum0?nb_scales: + (unsigned int)cimg::round(std::log(mins/8.)/std::log(1.5),1,1); + + const float _precision = (float)std::pow(10.,-(double)precision); + float sm, sM = source.max_min(sm), tm, tM = max_min(tm); + const float sdelta = sm==sM?1:(sM - sm), tdelta = tm==tM?1:(tM - tm); + + CImg U, V; + floatT bound = 0; + for (int scale = (int)_nb_scales - 1; scale>=0; --scale) { + const float factor = (float)std::pow(1.5,(double)scale); + const unsigned int + _sw = (unsigned int)(_width/factor), sw = _sw?_sw:1, + _sh = (unsigned int)(_height/factor), sh = _sh?_sh:1, + _sd = (unsigned int)(_depth/factor), sd = _sd?_sd:1; + if (sw<5 && sh<5 && (!is_3d || sd<5)) continue; // Skip too small scales + const CImg + I1 = (source.get_resize(sw,sh,sd,-100,2)-=sm)/=sdelta, + I2 = (get_resize(I1,2)-=tm)/=tdelta; + if (guide._spectrum>constraint) guide.get_resize(I2._width,I2._height,I2._depth,-100,1).move_to(V); + if (U) (U*=1.5f).resize(I2._width,I2._height,I2._depth,-100,3); + else { + if (guide) + guide.get_shared_channels(0,is_3d?2:1).get_resize(I2._width,I2._height,I2._depth,-100,2).move_to(U); + else U.assign(I2._width,I2._height,I2._depth,is_3d?3:2,0); + } + + float dt = 2, energy = cimg::type::max(); + const CImgList dI = is_backward?I1.get_gradient():I2.get_gradient(); + cimg_abort_init; + + for (unsigned int iteration = 0; iteration=0) // Isotropic regularization + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_height*_depth>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) + reduction(+:_energy)) + cimg_forYZ(U,y,z) { + const int + _p1y = y?y - 1:0, _n1y = yx) U(x,y,z,0) = (float)x; + if (U(x,y,z,1)>y) U(x,y,z,1) = (float)y; + if (U(x,y,z,2)>z) U(x,y,z,2) = (float)z; + bound = (float)x - _width; if (U(x,y,z,0)<=bound) U(x,y,z,0) = bound; + bound = (float)y - _height; if (U(x,y,z,1)<=bound) U(x,y,z,1) = bound; + bound = (float)z - _depth; if (U(x,y,z,2)<=bound) U(x,y,z,2) = bound; + } else { + if (U(x,y,z,0)<-x) U(x,y,z,0) = -(float)x; + if (U(x,y,z,1)<-y) U(x,y,z,1) = -(float)y; + if (U(x,y,z,2)<-z) U(x,y,z,2) = -(float)z; + bound = (float)_width - x; if (U(x,y,z,0)>=bound) U(x,y,z,0) = bound; + bound = (float)_height - y; if (U(x,y,z,1)>=bound) U(x,y,z,1) = bound; + bound = (float)_depth - z; if (U(x,y,z,2)>=bound) U(x,y,z,2) = bound; + } + _energy+=delta_I*delta_I + smoothness*_energy_regul; + } + if (V) cimg_forXYZ(V,_x,_y,_z) if (V(_x,_y,_z,3)) { // Apply constraints + U(_x,_y,_z,0) = V(_x,_y,_z,0)/factor; + U(_x,_y,_z,1) = V(_x,_y,_z,1)/factor; + U(_x,_y,_z,2) = V(_x,_y,_z,2)/factor; + } + } else { // Anisotropic regularization + const float nsmoothness = -smoothness; + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_height*_depth>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) + reduction(+:_energy)) + cimg_forYZ(U,y,z) { + const int + _p1y = y?y - 1:0, _n1y = yx) U(x,y,z,0) = (float)x; + if (U(x,y,z,1)>y) U(x,y,z,1) = (float)y; + if (U(x,y,z,2)>z) U(x,y,z,2) = (float)z; + bound = (float)x - _width; if (U(x,y,z,0)<=bound) U(x,y,z,0) = bound; + bound = (float)y - _height; if (U(x,y,z,1)<=bound) U(x,y,z,1) = bound; + bound = (float)z - _depth; if (U(x,y,z,2)<=bound) U(x,y,z,2) = bound; + } else { + if (U(x,y,z,0)<-x) U(x,y,z,0) = -(float)x; + if (U(x,y,z,1)<-y) U(x,y,z,1) = -(float)y; + if (U(x,y,z,2)<-z) U(x,y,z,2) = -(float)z; + bound = (float)_width - x; if (U(x,y,z,0)>=bound) U(x,y,z,0) = bound; + bound = (float)_height - y; if (U(x,y,z,1)>=bound) U(x,y,z,1) = bound; + bound = (float)_depth - z; if (U(x,y,z,2)>=bound) U(x,y,z,2) = bound; + } + _energy+=delta_I*delta_I + nsmoothness*_energy_regul; + } + if (V) cimg_forXYZ(V,_x,_y,_z) if (V(_x,_y,_z,3)) { // Apply constraints + U(_x,_y,_z,0) = V(_x,_y,_z,0)/factor; + U(_x,_y,_z,1) = V(_x,_y,_z,1)/factor; + U(_x,_y,_z,2) = V(_x,_y,_z,2)/factor; + } + } + } + } else { // 2D version + if (smoothness>=0) // Isotropic regularization + cimg_pragma_openmp(parallel for cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) reduction(+:_energy)) + cimg_forY(U,y) { + const int _p1y = y?y - 1:0, _n1y = yx) U(x,y,0) = (float)x; + if (U(x,y,1)>y) U(x,y,1) = (float)y; + bound = (float)x - _width; if (U(x,y,0)<=bound) U(x,y,0) = bound; + bound = (float)y - _height; if (U(x,y,1)<=bound) U(x,y,1) = bound; + } else { + if (U(x,y,0)<-x) U(x,y,0) = -(float)x; + if (U(x,y,1)<-y) U(x,y,1) = -(float)y; + bound = (float)_width - x; if (U(x,y,0)>=bound) U(x,y,0) = bound; + bound = (float)_height - y; if (U(x,y,1)>=bound) U(x,y,1) = bound; + } + _energy+=delta_I*delta_I + smoothness*_energy_regul; + } + if (V) cimg_forXY(V,_x,_y) if (V(_x,_y,2)) { // Apply constraints + U(_x,_y,0) = V(_x,_y,0)/factor; + U(_x,_y,1) = V(_x,_y,1)/factor; + } + } else { // Anisotropic regularization + const float nsmoothness = -smoothness; + cimg_pragma_openmp(parallel for cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*8 && + _width>=(cimg_openmp_sizefactor)*16) reduction(+:_energy)) + cimg_forY(U,y) { + const int _p1y = y?y - 1:0, _n1y = yx) U(x,y,0) = (float)x; + if (U(x,y,1)>y) U(x,y,1) = (float)y; + bound = (float)x - _width; if (U(x,y,0)<=bound) U(x,y,0) = bound; + bound = (float)y - _height; if (U(x,y,1)<=bound) U(x,y,1) = bound; + } else { + if (U(x,y,0)<-x) U(x,y,0) = -(float)x; + if (U(x,y,1)<-y) U(x,y,1) = -(float)y; + bound = (float)_width - x; if (U(x,y,0)>=bound) U(x,y,0) = bound; + bound = (float)_height - y; if (U(x,y,1)>=bound) U(x,y,1) = bound; + } + _energy+=delta_I*delta_I + nsmoothness*_energy_regul; + } + if (V) cimg_forXY(V,_x,_y) if (V(_x,_y,2)) { // Apply constraints + U(_x,_y,0) = V(_x,_y,0)/factor; + U(_x,_y,1) = V(_x,_y,1)/factor; + } + } + } + } + const float d_energy = (_energy - energy)/(sw*sh*sd); + if (d_energy<=0 && -d_energy<_precision) break; + if (d_energy>0) dt*=0.5f; + energy = _energy; + } + } + return U; + } + + //! Compute correspondence map between two images, using a patch-matching algorithm. + /** + \param patch_image The image containing the reference patches to match with the instance image. + \param patch_width Width of the patch used for matching. + \param patch_height Height of the patch used for matching. + \param patch_depth Depth of the patch used for matching. + \param nb_iterations Number of patch-match iterations. + \param nb_randoms Number of randomization attempts (per pixel). + \param patch_penalization Penalization factor in score related patch occurrences. + if negative, also tells that identity result is not avoided. + \param guide Image used as the initial correspondence estimate for the algorithm. + 'guide' may have a last channel with boolean values (0=false | other=true) that + tells for each pixel if its correspondence vector is constrained to its initial value (constraint mask). + \param[out] matching_score Returned as the image of matching scores. + **/ + template + CImg& matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations, + const unsigned int nb_randoms, + const float patch_penalization, + const CImg &guide, + CImg &matching_score) { + return get_matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization,guide,matching_score).move_to(*this); + } + + //! Compute correspondence map between two images, using the patch-match algorithm \newinstance. + template + CImg get_matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations, + const unsigned int nb_randoms, + const float patch_penalization, + const CImg &guide, + CImg &matching_score) const { + return _matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization, + guide,true,matching_score); + } + + //! Compute correspondence map between two images, using the patch-match algorithm \overloading. + template + CImg& matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations=5, + const unsigned int nb_randoms=5, + const float patch_penalization=0, + const CImg &guide=CImg::const_empty()) { + return get_matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization,guide).move_to(*this); + } + + //! Compute correspondence map between two images, using the patch-match algorithm \overloading. + template + CImg get_matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations=5, + const unsigned int nb_randoms=5, + const float patch_penalization=0, + const CImg &guide=CImg::const_empty()) const { + CImg matching_score; + return _matchpatch(patch_image,patch_width,patch_height,patch_depth, + nb_iterations,nb_randoms,patch_penalization,guide,false,matching_score); + } + + template + CImg _matchpatch(const CImg& patch_image, + const unsigned int patch_width, + const unsigned int patch_height, + const unsigned int patch_depth, + const unsigned int nb_iterations, + const unsigned int nb_randoms, + const float patch_penalization, + const CImg &guide, + const bool is_matching_score, + CImg &matching_score) const { + if (is_empty()) return CImg::const_empty(); + if (patch_image._spectrum!=_spectrum) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Instance image and specified patch image (%u,%u,%u,%u,%p) " + "have different spectrums.", + cimg_instance, + patch_image._width,patch_image._height,patch_image._depth,patch_image._spectrum, + patch_image._data); + if (patch_width>_width || patch_height>_height || patch_depth>_depth) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Specified patch size %ux%ux%u is bigger than the dimensions " + "of the instance image.", + cimg_instance,patch_width,patch_height,patch_depth); + if (patch_width>patch_image._width || patch_height>patch_image._height || patch_depth>patch_image._depth) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Specified patch size %ux%ux%u is bigger than the dimensions " + "of the patch image image (%u,%u,%u,%u,%p).", + cimg_instance,patch_width,patch_height,patch_depth, + patch_image._width,patch_image._height,patch_image._depth,patch_image._spectrum, + patch_image._data); + const unsigned int + _constraint = patch_image._depth>1?3:2, + constraint = guide._spectrum>_constraint?_constraint:0; + + if (guide && + (guide._width!=_width || guide._height!=_height || guide._depth!=_depth || guide._spectrum<_constraint)) + throw CImgArgumentException(_cimg_instance + "matchpatch(): Specified guide (%u,%u,%u,%u,%p) has invalid dimensions " + "considering instance and patch image (%u,%u,%u,%u,%p).", + cimg_instance, + guide._width,guide._height,guide._depth,guide._spectrum,guide._data, + patch_image._width,patch_image._height,patch_image._depth,patch_image._spectrum, + patch_image._data); + + CImg a_map(_width,_height,_depth,patch_image._depth>1?3:2); + CImg is_updated(_width,_height,_depth,1,3); + CImg score(_width,_height,_depth); + CImg occ; + const float _patch_penalization = cimg::abs(patch_penalization); + const bool allow_identity = patch_penalization>=0; + if (_patch_penalization!=0) occ.assign(patch_image._width,patch_image._height,patch_image._depth,1,0); + const int + psizew = (int)patch_width, psizew1 = psizew/2, psizew2 = psizew - psizew1 - 1, + psizeh = (int)patch_height, psizeh1 = psizeh/2, psizeh2 = psizeh - psizeh1 - 1, + psized = (int)patch_depth, psized1 = psized/2, psized2 = psized - psized1 - 1; + + // Interleave image buffers to speed up patch comparison (cache-friendly). + CImg in_this = get_permute_axes("cxyz"); + in_this._width = _width*_spectrum; + in_this._height = _height; + in_this._depth = _depth; + in_this._spectrum = 1; + CImg in_patch = patch_image.get_permute_axes("cxyz"); + in_patch._width = patch_image._width*patch_image._spectrum; + in_patch._height = patch_image._height; + in_patch._depth = patch_image._depth; + in_patch._spectrum = 1; + + if (_depth>1 || patch_image._depth>1) { // 3D version + + // Initialize correspondence map. + if (guide) + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if_size(_width,64)) + cimg_forXYZ(*this,x,y,z) { // User-defined initialization + const int + cx1 = x<=psizew1?x:(x::inf()); + } else cimg_pragma_openmp(parallel cimg_openmp_if_size(_width,64)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for cimg_openmp_collapse(2)) + cimg_forXYZ(*this,x,y,z) { // Random initialization + const int + cx1 = x<=psizew1?x:(x::inf()); + } + cimg::srand(rng); + } + + // Start iteration loop. + cimg_abort_init; + for (unsigned int iter = 0; iter=(cimg_openmp_sizefactor)*64 && + iter0 && (is_updated(x - 1,y,z)&cmask)) { // Compare with left neighbor + u = a_map(x - 1,y,z,0); + v = a_map(x - 1,y,z,1); + w = a_map(x - 1,y,z,2); + if (u>=cx1 - 1 && u=cy1 && v=cz1 && w0 && (is_updated(x,y - 1,z)&cmask)) { // Compare with up neighbor + u = a_map(x,y - 1,z,0); + v = a_map(x,y - 1,z,1); + w = a_map(x,y - 1,z,2); + if (u>=cx1 && u=cy1 - 1 && v=cz1 && w0 && (is_updated(x,y,z - 1)&cmask)) { // Compare with backward neighbor + u = a_map(x,y,z - 1,0); + v = a_map(x,y,z - 1,1); + w = a_map(x,y,z - 1,2); + if (u>=cx1 && u=cy1 && v=cz1 - 1 && w=cx1 + 1 && u=cy1 && v=cz1 && w=cx1 && u=cy1 + 1 && v=cz1 && w=cx1 && u=cy1 && v=cz1 + 1 && w::inf()); + } else cimg_pragma_openmp(parallel cimg_openmp_if_size(_width,64)) { + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + +#if cimg_use_openmp!=0 + rng+=omp_get_thread_num(); +#endif + cimg_pragma_openmp(for) + cimg_forXY(*this,x,y) { // Random initialization + const int + cx1 = x<=psizew1?x:(x::inf()); + } + cimg::srand(rng); + } + + // Start iteration loop. + cimg_abort_init; + for (unsigned int iter = 0; iter=(cimg_openmp_sizefactor)*64 && + iter0 && (is_updated(x - 1,y)&cmask)) { // Compare with left neighbor + u = a_map(x - 1,y,0); + v = a_map(x - 1,y,1); + if (u>=cx1 - 1 && u=cy1 && v0 && (is_updated(x,y - 1)&cmask)) { // Compare with up neighbor + u = a_map(x,y - 1,0); + v = a_map(x,y - 1,1); + if (u>=cx1 && u=cy1 - 1 && v=cx1 + 1 && u=cy1 && v=cx1 && u=cy1 + 1 && v& img1, const CImg& img2, const CImg& occ, + const unsigned int psizew, const unsigned int psizeh, + const unsigned int psized, const unsigned int psizec, + const int x1, const int y1, const int z1, + const int x2, const int y2, const int z2, + const int xc, const int yc, const int zc, + const float patch_penalization, + const bool allow_identity, + const float max_score) { // 3D version + if (!allow_identity && cimg::hypot((float)x1-x2,(float)y1-y2,(float)z1-z2)::inf(); + const T *p1 = img1.data(x1*psizec,y1,z1), *p2 = img2.data(x2*psizec,y2,z2); + const unsigned int psizewc = psizew*psizec; + const ulongT + offx1 = (ulongT)img1._width - psizewc, + offx2 = (ulongT)img2._width - psizewc, + offy1 = (ulongT)img1._width*img1._height - (ulongT)psizeh*img1._width, + offy2 = (ulongT)img2._width*img2._height - (ulongT)psizeh*img2._width; + float ssd = 0; + for (unsigned int k = 0; kmax_score) return max_score; + p1+=offx1; p2+=offx2; + } + p1+=offy1; p2+=offy2; + } + return patch_penalization==0?ssd:cimg::sqr(std::sqrt(ssd) + + patch_penalization*psizewc*psizeh*psized*occ(xc,yc,zc)/100); + } + + static float _matchpatch(const CImg& img1, const CImg& img2, const CImg& occ, + const unsigned int psizew, const unsigned int psizeh, const unsigned int psizec, + const int x1, const int y1, + const int x2, const int y2, + const int xc, const int yc, + const float patch_penalization, + const bool allow_identity, + const float max_score) { // 2D version + if (!allow_identity && cimg::hypot((float)x1-x2,(float)y1-y2)::inf(); + const T *p1 = img1.data(x1*psizec,y1), *p2 = img2.data(x2*psizec,y2); + const unsigned int psizewc = psizew*psizec; + const ulongT + offx1 = (ulongT)img1._width - psizewc, + offx2 = (ulongT)img2._width - psizewc; + float ssd = 0; + for (unsigned int j = 0; jmax_score) return max_score; + p1+=offx1; p2+=offx2; + } + return patch_penalization==0?ssd:cimg::sqr(std::sqrt(ssd) + + patch_penalization*psizewc*psizeh*occ(xc,yc)/100); + } + + //! Compute Euclidean distance function to a specified value. + /** + \param value Reference value. + \param metric Type of metric. Can be { 0=Chebyshev | 1=Manhattan | 2=Euclidean | 3=Squared-euclidean }. + \note + The distance transform implementation has been submitted by A. Meijster, and implements + the article 'W.H. Hesselink, A. Meijster, J.B.T.M. Roerdink, + "A general algorithm for computing distance transforms in linear time.", + In: Mathematical Morphology and its Applications to Image and Signal Processing, + J. Goutsias, L. Vincent, and D.S. Bloomberg (eds.), Kluwer, 2000, pp. 331-340.' + The submitted code has then been modified to fit CImg coding style and constraints. + **/ + CImg& distance(const T& value, const unsigned int metric=2) { + if (is_empty()) return *this; + if (cimg::type::string()!=pixel_type()) // For datatype < int + return CImg(*this,false).distance((Tint)value,metric). + cut((Tint)cimg::type::min(),(Tint)cimg::type::max()).move_to(*this); + bool is_value = false; + cimg_for(*this,ptr,T) *ptr = *ptr==value?is_value=true,(T)0:(T)std::max(0,99999999); // (avoid VC++ warning) + if (!is_value) return fill(cimg::type::max()); + switch (metric) { + case 0 : return _distance_core(_distance_sep_cdt,_distance_dist_cdt); // Chebyshev + case 1 : return _distance_core(_distance_sep_mdt,_distance_dist_mdt); // Manhattan + case 3 : return _distance_core(_distance_sep_edt,_distance_dist_edt); // Squared Euclidean + default : return _distance_core(_distance_sep_edt,_distance_dist_edt).sqrt(); // Euclidean + } + return *this; + } + + //! Compute distance to a specified value \newinstance. + CImg get_distance(const T& value, const unsigned int metric=2) const { + return CImg(*this,false).distance((Tfloat)value,metric); + } + + static longT _distance_sep_edt(const longT i, const longT u, const longT *const g) { + return (u*u - i*i + g[u] - g[i])/(2*(u - i)); + } + + static longT _distance_dist_edt(const longT x, const longT i, const longT *const g) { + return (x - i)*(x - i) + g[i]; + } + + static longT _distance_sep_mdt(const longT i, const longT u, const longT *const g) { + return (u - i<=g[u] - g[i]?999999999:(g[u] - g[i] + u + i)/2); + } + + static longT _distance_dist_mdt(const longT x, const longT i, const longT *const g) { + return (x=0) && f(t[q],s[q],g)>f(t[q],u,g)) { --q; } + if (q<0) { q = 0; s[0] = u; } + else { const longT w = 1 + sep(s[q], u, g); if (w<(longT)len) { ++q; s[q] = u; t[q] = w; }} + } + for (int u = (int)len - 1; u>=0; --u) { dt[u] = f(u,s[q],g); if (u==t[q]) --q; } // Backward scan + } + + CImg& _distance_core(longT (*const sep)(const longT, const longT, const longT *const), + longT (*const f)(const longT, const longT, const longT *const)) { + // Check for g++ 4.9.X, as OpenMP seems to crash for this particular function. I have no clues why. +#define cimg_is_gcc49x (__GNUC__==4 && __GNUC_MINOR__==9) + + const ulongT wh = (ulongT)_width*_height; +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) +#endif + cimg_forC(*this,c) { + CImg g(_width), dt(_width), s(_width), t(_width); + CImg img = get_shared_channel(c); +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) cimg_openmp_if(_width>=(cimg_openmp_sizefactor)*512 && + _height*_depth>=16) + firstprivate(g,dt,s,t)) +#endif + cimg_forYZ(*this,y,z) { // Over X-direction + cimg_forX(*this,x) g[x] = (longT)img(x,y,z,0,wh); + _distance_scan(_width,g,sep,f,s,t,dt); + cimg_forX(*this,x) img(x,y,z,0,wh) = (T)dt[x]; + } + if (_height>1) { + g.assign(_height); dt.assign(_height); s.assign(_height); t.assign(_height); +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_height>=(cimg_openmp_sizefactor)*512 && _width*_depth>=16) + firstprivate(g,dt,s,t)) +#endif + cimg_forXZ(*this,x,z) { // Over Y-direction + cimg_forY(*this,y) g[y] = (longT)img(x,y,z,0,wh); + _distance_scan(_height,g,sep,f,s,t,dt); + cimg_forY(*this,y) img(x,y,z,0,wh) = (T)dt[y]; + } + } + if (_depth>1) { + g.assign(_depth); dt.assign(_depth); s.assign(_depth); t.assign(_depth); +#if cimg_use_openmp!=0 && !cimg_is_gcc49x + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if(_depth>=(cimg_openmp_sizefactor)*512 && _width*_height>=16) + firstprivate(g,dt,s,t)) +#endif + cimg_forXY(*this,x,y) { // Over Z-direction + cimg_forZ(*this,z) g[z] = (longT)img(x,y,z,0,wh); + _distance_scan(_depth,g,sep,f,s,t,dt); + cimg_forZ(*this,z) img(x,y,z,0,wh) = (T)dt[z]; + } + } + } + return *this; + } + + //! Compute chamfer distance to a specified value, with a custom metric. + /** + \param value Reference value. + \param metric_mask Metric mask. + \note The algorithm code has been initially proposed by A. Meijster, and modified by D. Tschumperlé. + **/ + template + CImg& distance(const T& value, const CImg& metric_mask) { + if (is_empty()) return *this; + bool is_value = false; + cimg_for(*this,ptr,T) *ptr = *ptr==value?is_value=true,0:(T)999999999; + if (!is_value) return fill(cimg::type::max()); + const ulongT wh = (ulongT)_width*_height; + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2)) + cimg_forC(*this,c) { + CImg img = get_shared_channel(c); + cimg_pragma_openmp(parallel for cimg_openmp_collapse(3) + cimg_openmp_if(_width*_height*_depth>=(cimg_openmp_sizefactor)*1024)) + cimg_forXYZ(metric_mask,dx,dy,dz) { + const t weight = metric_mask(dx,dy,dz); + if (weight) { + for (int z = dz, nz = 0; z=0; --z,--nz) { // Backward scan + for (int y = height() - 1 - dy, ny = height() - 1; y>=0; --y,--ny) { + for (int x = width() - 1 - dx, nx = width() - 1; x>=0; --x,--nx) { + const T dd = img(nx,ny,nz,0,wh) + weight; + if (dd + CImg get_distance(const T& value, const CImg& metric_mask) const { + return CImg(*this,false).distance(value,metric_mask); + } + + //! Compute distance to a specified value, according to a custom metric (use dijkstra algorithm). + /** + \param value Reference value. + \param metric Field of distance potentials. + \param is_high_connectivity Tells if the algorithm uses low or high connectivity. + \param[out] return_path An image containing the nodes of the minimal path. + **/ + template + CImg& distance_dijkstra(const T& value, const CImg& metric, const bool is_high_connectivity, + CImg& return_path) { + return get_distance_dijkstra(value,metric,is_high_connectivity,return_path).move_to(*this); + } + + //! Compute distance map to a specified value, according to a custom metric (use dijkstra algorithm) \newinstance. + template + CImg::type> + get_distance_dijkstra(const T& value, const CImg& metric, const bool is_high_connectivity, + CImg& return_path) const { + if (is_empty()) return return_path.assign(); + if (!is_sameXYZ(metric)) + throw CImgArgumentException(_cimg_instance + "distance_dijkstra(): image instance and metric map (%u,%u,%u,%u) " + "have incompatible dimensions.", + cimg_instance, + metric._width,metric._height,metric._depth,metric._spectrum); + typedef typename cimg::superset::type td; // Type used for computing cumulative distances + CImg result(_width,_height,_depth,_spectrum), Q; + CImg is_queued(_width,_height,_depth,1); + if (return_path) return_path.assign(_width,_height,_depth,_spectrum); + + cimg_forC(*this,c) { + const CImg img = get_shared_channel(c); + const CImg met = metric.get_shared_channel(c%metric._spectrum); + CImg res = result.get_shared_channel(c); + CImg path = return_path?return_path.get_shared_channel(c):CImg(); + unsigned int sizeQ = 0; + + // Detect initial seeds. + is_queued.fill(0); + cimg_forXYZ(img,x,y,z) if (img(x,y,z)==value) { + Q._priority_queue_insert(is_queued,sizeQ,0,x,y,z); + res(x,y,z) = 0; + if (path) path(x,y,z) = (to)0; + } + + // Start distance propagation. + while (sizeQ) { + + // Get and remove point with minimal potential from the queue. + const int x = (int)Q(0,1), y = (int)Q(0,2), z = (int)Q(0,3); + const td P = (td)-Q(0,0); + Q._priority_queue_remove(sizeQ); + + // Update neighbors. + td npot = 0; + if (x - 1>=0 && Q._priority_queue_insert(is_queued,sizeQ,-(npot=met(x - 1,y,z) + P),x - 1,y,z)) { + res(x - 1,y,z) = npot; if (path) path(x - 1,y,z) = (to)2; + } + if (x + 1=0 && Q._priority_queue_insert(is_queued,sizeQ,-(npot=met(x,y - 1,z) + P),x,y - 1,z)) { + res(x,y - 1,z) = npot; if (path) path(x,y - 1,z) = (to)8; + } + if (y + 1=0 && Q._priority_queue_insert(is_queued,sizeQ,-(npot=met(x,y,z - 1) + P),x,y,z - 1)) { + res(x,y,z - 1) = npot; if (path) path(x,y,z - 1) = (to)32; + } + if (z + 1=0 && y - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x - 1,y - 1,z) + P)),x - 1,y - 1,z)) { + res(x - 1,y - 1,z) = npot; if (path) path(x - 1,y - 1,z) = (to)10; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x + 1,y - 1,z) + P)),x + 1,y - 1,z)) { + res(x + 1,y - 1,z) = npot; if (path) path(x + 1,y - 1,z) = (to)9; + } + if (x - 1>=0 && y + 1=0) { // Diagonal neighbors on slice z - 1 + if (x - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x - 1,y,z - 1) + P)),x - 1,y,z - 1)) { + res(x - 1,y,z - 1) = npot; if (path) path(x - 1,y,z - 1) = (to)34; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x,y - 1,z - 1) + P)),x,y - 1,z - 1)) { + res(x,y - 1,z - 1) = npot; if (path) path(x,y - 1,z - 1) = (to)40; + } + if (y + 1=0 && y - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x - 1,y - 1,z - 1) + P)), + x - 1,y - 1,z - 1)) { + res(x - 1,y - 1,z - 1) = npot; if (path) path(x - 1,y - 1,z - 1) = (to)42; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x + 1,y - 1,z - 1) + P)), + x + 1,y - 1,z - 1)) { + res(x + 1,y - 1,z - 1) = npot; if (path) path(x + 1,y - 1,z - 1) = (to)41; + } + if (x - 1>=0 && y + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x - 1,y,z + 1) + P)),x - 1,y,z + 1)) { + res(x - 1,y,z + 1) = npot; if (path) path(x - 1,y,z + 1) = (to)18; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt2*met(x,y - 1,z + 1) + P)),x,y - 1,z + 1)) { + res(x,y - 1,z + 1) = npot; if (path) path(x,y - 1,z + 1) = (to)24; + } + if (y + 1=0 && y - 1>=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x - 1,y - 1,z + 1) + P)), + x - 1,y - 1,z + 1)) { + res(x - 1,y - 1,z + 1) = npot; if (path) path(x - 1,y - 1,z + 1) = (to)26; + } + if (x + 1=0 && + Q._priority_queue_insert(is_queued,sizeQ,-(npot=(td)(sqrt3*met(x + 1,y - 1,z + 1) + P)), + x + 1,y - 1,z + 1)) { + res(x + 1,y - 1,z + 1) = npot; if (path) path(x + 1,y - 1,z + 1) = (to)25; + } + if (x - 1>=0 && y + 1 + CImg& distance_dijkstra(const T& value, const CImg& metric, + const bool is_high_connectivity=false) { + return get_distance_dijkstra(value,metric,is_high_connectivity).move_to(*this); + } + + //! Compute distance map to a specified value, according to a custom metric (use dijkstra algorithm). \newinstance. + template + CImg get_distance_dijkstra(const T& value, const CImg& metric, + const bool is_high_connectivity=false) const { + CImg return_path; + return get_distance_dijkstra(value,metric,is_high_connectivity,return_path); + } + + //! Compute distance map to one source point, according to a custom metric (use fast marching algorithm). + /** + \param value Reference value. + \param metric Field of distance potentials. + **/ + template + CImg& distance_eikonal(const T& value, const CImg& metric) { + return get_distance_eikonal(value,metric).move_to(*this); + } + + //! Compute distance map to one source point, according to a custom metric (use fast marching algorithm). + template + CImg get_distance_eikonal(const T& value, const CImg& metric) const { + if (is_empty()) return *this; + if (!is_sameXYZ(metric)) + throw CImgArgumentException(_cimg_instance + "distance_eikonal(): image instance and metric map (%u,%u,%u,%u) have " + "incompatible dimensions.", + cimg_instance, + metric._width,metric._height,metric._depth,metric._spectrum); + CImg result(_width,_height,_depth,_spectrum,cimg::type::max()), Q; + CImg state(_width,_height,_depth); // -1=far away, 0=narrow, 1=frozen + + cimg_pragma_openmp(parallel for cimg_openmp_if(_spectrum>=2) firstprivate(Q,state)) + cimg_forC(*this,c) { + const CImg img = get_shared_channel(c); + const CImg met = metric.get_shared_channel(c%metric._spectrum); + CImg res = result.get_shared_channel(c); + unsigned int sizeQ = 0; + state.fill(-1); + + // Detect initial seeds. + Tfloat *ptr1 = res._data; char *ptr2 = state._data; + cimg_for(img,ptr0,T) { if (*ptr0==value) { *ptr1 = 0; *ptr2 = 1; } ++ptr1; ++ptr2; } + + // Initialize seeds neighbors. + ptr2 = state._data; + cimg_forXYZ(img,x,y,z) if (*(ptr2++)==1) { + if (x - 1>=0 && state(x - 1,y,z)==-1) { + const Tfloat dist = res(x - 1,y,z) = __distance_eikonal(res,met(x - 1,y,z),x - 1,y,z); + Q._eik_priority_queue_insert(state,sizeQ,-dist,x - 1,y,z); + } + if (x + 1=0 && state(x,y - 1,z)==-1) { + const Tfloat dist = res(x,y - 1,z) = __distance_eikonal(res,met(x,y - 1,z),x,y - 1,z); + Q._eik_priority_queue_insert(state,sizeQ,-dist,x,y - 1,z); + } + if (y + 1=0 && state(x,y,z - 1)==-1) { + const Tfloat dist = res(x,y,z - 1) = __distance_eikonal(res,met(x,y,z - 1),x,y,z - 1); + Q._eik_priority_queue_insert(state,sizeQ,-dist,x,y,z - 1); + } + if (z + 1=0) { + if (x - 1>=0 && state(x - 1,y,z)!=1) { + const Tfloat dist = __distance_eikonal(res,met(x - 1,y,z),x - 1,y,z); + if (dist=0 && state(x,y - 1,z)!=1) { + const Tfloat dist = __distance_eikonal(res,met(x,y - 1,z),x,y - 1,z); + if (dist=0 && state(x,y,z - 1)!=1) { + const Tfloat dist = __distance_eikonal(res,met(x,y,z - 1),x,y,z - 1); + if (dist& res, const Tfloat P, + const int x=0, const int y=0, const int z=0) const { + const Tfloat M = (Tfloat)cimg::type::max(); + T T1 = (T)std::min(x - 1>=0?res(x - 1,y,z):M,x + 11) { // 3D + T + T2 = (T)std::min(y - 1>=0?res(x,y - 1,z):M,y + 1=0?res(x,y,z - 1):M,z + 1T2) cimg::swap(T1,T2); + if (T2>T3) cimg::swap(T2,T3); + if (T1>T2) cimg::swap(T1,T2); + if (P<=0) return (Tfloat)T1; + if (T31) { // 2D + T T2 = (T)std::min(y - 1>=0?res(x,y - 1,z):M,y + 1T2) cimg::swap(T1,T2); + if (P<=0) return (Tfloat)T1; + if (T2 + void _eik_priority_queue_insert(CImg& state, unsigned int& siz, const t value, + const unsigned int x, const unsigned int y, const unsigned int z) { + if (state(x,y,z)>0) return; + state(x,y,z) = 0; + if (++siz>=_width) { if (!is_empty()) resize(_width*2,4,1,1,0); else assign(64,4); } + (*this)(siz - 1,0) = (T)value; (*this)(siz - 1,1) = (T)x; (*this)(siz - 1,2) = (T)y; (*this)(siz - 1,3) = (T)z; + for (unsigned int pos = siz - 1, par = 0; pos && value>(t)(*this)(par=(pos + 1)/2 - 1,0); pos = par) { + cimg::swap((*this)(pos,0),(*this)(par,0)); cimg::swap((*this)(pos,1),(*this)(par,1)); + cimg::swap((*this)(pos,2),(*this)(par,2)); cimg::swap((*this)(pos,3),(*this)(par,3)); + } + } + + //! Compute distance function to 0-valued isophotes, using the Eikonal PDE. + /** + \param nb_iterations Number of PDE iterations. + \param band_size Size of the narrow band. + \param time_step Time step of the PDE iterations. + **/ + CImg& distance_eikonal(const unsigned int nb_iterations, const float band_size=0, const float time_step=0.5f) { + if (is_empty()) return *this; + CImg velocity(*this,false); + for (unsigned int iteration = 0; iteration1) { // 3D + CImg_3x3x3(I,Tfloat); + cimg_forC(*this,c) cimg_for3x3x3(*this,x,y,z,c,I,Tfloat) if (band_size<=0 || cimg::abs(Iccc)0?(Incc - Iccc):(Iccc - Ipcc), + iy = gy*sgn>0?(Icnc - Iccc):(Iccc - Icpc), + iz = gz*sgn>0?(Iccn - Iccc):(Iccc - Iccp), + ng = 1e-5f + cimg::hypot(gx,gy,gz), + ngx = gx/ng, + ngy = gy/ng, + ngz = gz/ng, + veloc = sgn*(ngx*ix + ngy*iy + ngz*iz - 1); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } else *(ptrd++) = 0; + } else { // 2D version + CImg_3x3(I,Tfloat); + cimg_forC(*this,c) cimg_for3x3(*this,x,y,0,c,I,Tfloat) if (band_size<=0 || cimg::abs(Icc)0?(Inc - Icc):(Icc - Ipc), + iy = gy*sgn>0?(Icn - Icc):(Icc - Icp), + ng = std::max((Tfloat)1e-5,cimg::hypot(gx,gy)), + ngx = gx/ng, + ngy = gy/ng, + veloc = sgn*(ngx*ix + ngy*iy - 1); + *(ptrd++) = veloc; + if (veloc>veloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } else *(ptrd++) = 0; + } + if (veloc_max>0) *this+=(velocity*=time_step/veloc_max); + } + return *this; + } + + //! Compute distance function to 0-valued isophotes, using the Eikonal PDE \newinstance. + CImg get_distance_eikonal(const unsigned int nb_iterations, const float band_size=0, + const float time_step=0.5f) const { + return CImg(*this,false).distance_eikonal(nb_iterations,band_size,time_step); + } + + //! Compute Haar multiscale wavelet transform. + /** + \param axis Axis considered for the transform. + \param invert Set inverse of direct transform. + \param nb_scales Number of scales used for the transform. + **/ + CImg& haar(const char axis, const bool invert=false, const unsigned int nb_scales=1) { + return get_haar(axis,invert,nb_scales).move_to(*this); + } + + //! Compute Haar multiscale wavelet transform \newinstance. + CImg get_haar(const char axis, const bool invert=false, const unsigned int nb_scales=1) const { + if (is_empty() || !nb_scales) return +*this; + CImg res; + const Tfloat sqrt2 = std::sqrt(2.f); + if (nb_scales==1) { + switch (cimg::lowercase(axis)) { // Single scale transform + case 'x' : { + const unsigned int w = _width/2; + if (w) { + if ((w%2) && w!=1) + throw CImgInstanceException(_cimg_instance + "haar(): Sub-image width %u is not even.", + cimg_instance, + w); + + res.assign(_width,_height,_depth,_spectrum); + if (invert) cimg_forYZC(*this,y,z,c) { // Inverse transform along X + for (unsigned int x = 0, xw = w, x2 = 0; x& haar(const bool invert=false, const unsigned int nb_scales=1) { + return get_haar(invert,nb_scales).move_to(*this); + } + + //! Compute Haar multiscale wavelet transform \newinstance. + CImg get_haar(const bool invert=false, const unsigned int nb_scales=1) const { + CImg res; + if (nb_scales==1) { // Single scale transform + if (_width>1) get_haar('x',invert,1).move_to(res); + if (_height>1) { if (res) res.haar('y',invert,1); else get_haar('y',invert,1).move_to(res); } + if (_depth>1) { if (res) res.haar('z',invert,1); else get_haar('z',invert,1).move_to(res); } + if (res) return res; + } else { // Multi-scale transform + if (invert) { // Inverse transform + res.assign(*this,false); + if (_width>1) { + if (_height>1) { + if (_depth>1) { + unsigned int w = _width, h = _height, d = _depth; + for (unsigned int s = 1; w && h && d && s1) { + unsigned int w = _width, d = _depth; + for (unsigned int s = 1; w && d && s1) { + if (_depth>1) { + unsigned int h = _height, d = _depth; + for (unsigned int s = 1; h && d && s1) { + unsigned int d = _depth; + for (unsigned int s = 1; d && s1) { + if (_height>1) { + if (_depth>1) + for (unsigned int s = 1, w = _width/2, h = _height/2, d = _depth/2; w && h && d && s1) for (unsigned int s = 1, w = _width/2, d = _depth/2; w && d && s1) { + if (_depth>1) + for (unsigned int s = 1, h = _height/2, d = _depth/2; h && d && s1) for (unsigned int s = 1, d = _depth/2; d && s get_FFT(const char axis, const bool is_inverse=false) const { + CImgList res(*this,CImg()); + CImg::FFT(res[0],res[1],axis,is_inverse); + return res; + } + + //! Compute n-D Fast Fourier Transform. + /* + \param is_inverse Tells if the forward (\c false) or inverse (\c true) FFT is computed. + **/ + CImgList get_FFT(const bool is_inverse=false) const { + CImgList res(*this,CImg()); + CImg::FFT(res[0],res[1],is_inverse); + return res; + } + + //! Compute 1D Fast Fourier Transform, along a specified axis. + /** + \param[in,out] real Real part of the pixel values. + \param[in,out] imag Imaginary part of the pixel values. + \param axis Axis along which the FFT is computed. + \param is_inverse Tells if the forward (\c false) or inverse (\c true) FFT is computed. + **/ + static void FFT(CImg& real, CImg& imag, const char axis, const bool is_inverse=false, + const unsigned int nb_threads=0) { + if (!real) + throw CImgInstanceException("CImg<%s>::FFT(): Specified real part is empty.", + pixel_type()); + if (!imag) imag.assign(real._width,real._height,real._depth,real._spectrum,(T)0); + if (!real.is_sameXYZC(imag)) + throw CImgInstanceException("CImg<%s>::FFT(): Specified real part (%u,%u,%u,%u,%p) and " + "imaginary part (%u,%u,%u,%u,%p) have different dimensions.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum,real._data, + imag._width,imag._height,imag._depth,imag._spectrum,imag._data); + const char _axis = cimg::lowercase(axis); + if (_axis!='x' && _axis!='y' && _axis!='z') + throw CImgArgumentException("CImgList<%s>::FFT(): Invalid specified axis '%c' for real and imaginary parts " + "(%u,%u,%u,%u) " + "(should be { x | y | z }).", + pixel_type(),axis, + real._width,real._height,real._depth,real._spectrum); + cimg::unused(nb_threads); +#ifdef cimg_use_fftw3 + cimg::mutex(12); +#ifndef cimg_use_fftw3_singlethread + fftw_plan_with_nthreads(nb_threads?nb_threads:cimg::nb_cpus()); +#endif + fftw_complex *data_in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*real._width*real._height*real._depth); + if (!data_in) + throw CImgInstanceException("CImgList<%s>::FFT(): Failed to allocate memory (%s) " + "for computing FFT of image (%u,%u,%u,%u) along the X-axis.", + pixel_type(), + cimg::strbuffersize(sizeof(fftw_complex)*real._width*real._height*real._depth), + real._width,real._height,real._depth,real._spectrum); + double *const ptrf = (double*)data_in; + fftw_plan data_plan = + _axis=='x'?fftw_plan_many_dft(1,(int*)&real._width,real.height()*real.depth(), + data_in,0,1,real.width(), + data_in,0,1,real.width(), + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + _axis=='y'?fftw_plan_many_dft(1,(int*)&real._height,real.width()*real.depth(), + data_in,0,1,real.height(), + data_in,0,1,real.height(), + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + fftw_plan_many_dft(1,(int*)&real._depth,real.width()*real.height(), + data_in,0,1,real.depth(), + data_in,0,1,real.depth(), + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE); + cimg_forC(real,c) { + CImg realc = real.get_shared_channel(c), imagc = imag.get_shared_channel(c); + switch (_axis) { + case 'x' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = realc.offset(x,y,z), + j = 2*(x + (ulongT)y*realc._width + (ulongT)z*realc._width*realc._height); + ptrf[j] = (double)realc[i]; + ptrf[j + 1] = (double)imagc[i]; + } + break; + case 'y' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = realc.offset(x,y,z), + j = 2*(y + (ulongT)x*realc._height + (ulongT)z*realc._width*realc._height); + ptrf[j] = (double)realc[i]; + ptrf[j + 1] = (double)imagc[i]; + } + break; + default : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = realc.offset(x,y,z), + j = 2*(z + (ulongT)x*realc._depth + (ulongT)y*realc._width*realc._depth); + ptrf[j] = (double)realc[i]; + ptrf[j + 1] = (double)imagc[i]; + } + } + + fftw_execute(data_plan); + + const double a = is_inverse?1.0/(_axis=='x'?real.width():_axis=='y'?real.height():real.depth()):1.0; + switch (_axis) { + case 'x' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = 2*(x + (ulongT)y*realc._width + (ulongT)z*realc._width*realc._height), + j = realc.offset(x,y,z); + realc[j] = (T)(a*ptrf[i]); + imagc[j] = (T)(a*ptrf[i + 1]); + } + break; + case 'y' : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = 2*(y + (ulongT)x*realc._height + (ulongT)z*realc._width*realc._height), + j = realc.offset(x,y,z); + realc[j] = (T)(a*ptrf[i]); + imagc[j] = (T)(a*ptrf[i + 1]); + } + break; + default : + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_forXYZ(realc,x,y,z) { + const ulongT + i = 2*(z + (ulongT)x*realc._depth + (ulongT)y*realc._width*realc._depth), + j = realc.offset(x,y,z); + realc[j] = (T)(a*ptrf[i]); + imagc[j] = (T)(a*ptrf[i + 1]); + } + } + } + + fftw_destroy_plan(data_plan); + fftw_free(data_in); +#ifndef cimg_use_fftw3_singlethread + fftw_cleanup_threads(); +#endif + cimg::mutex(12,0); +#else + switch (_axis) { + case 'x' : { // Fourier along X, using built-in functions + const unsigned int N = real._width, N2 = N>>1; + if (((N - 1)&N) && N!=1) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real and imaginary parts (%u,%u,%u,%u) " + "have non 2^N dimension along the X-axis.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum); + + for (unsigned int i = 0, j = 0; ii) cimg_forYZC(real,y,z,c) { + cimg::swap(real(i,y,z,c),real(j,y,z,c)); + cimg::swap(imag(i,y,z,c),imag(j,y,z,c)); + if (j=m; j-=m, m = n, n>>=1) {} + } + for (unsigned int delta = 2; delta<=N; delta<<=1) { + const unsigned int delta2 = delta>>1; + for (unsigned int i = 0; i>1; + if (((N - 1)&N) && N!=1) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real and imaginary parts (%u,%u,%u,%u) " + "have non 2^N dimension along the Y-axis.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum); + + for (unsigned int i = 0, j = 0; ii) cimg_forXZC(real,x,z,c) { + cimg::swap(real(x,i,z,c),real(x,j,z,c)); + cimg::swap(imag(x,i,z,c),imag(x,j,z,c)); + if (j=m; j-=m, m = n, n>>=1) {} + } + for (unsigned int delta = 2; delta<=N; delta<<=1) { + const unsigned int delta2 = (delta>>1); + for (unsigned int i = 0; i>1; + if (((N - 1)&N) && N!=1) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real and imaginary parts (%u,%u,%u,%u) " + "have non 2^N dimension along the Z-axis.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum); + + for (unsigned int i = 0, j = 0; ii) cimg_forXYC(real,x,y,c) { + cimg::swap(real(x,y,i,c),real(x,y,j,c)); + cimg::swap(imag(x,y,i,c),imag(x,y,j,c)); + if (j=m; j-=m, m = n, n>>=1) {} + } + for (unsigned int delta = 2; delta<=N; delta<<=1) { + const unsigned int delta2 = (delta>>1); + for (unsigned int i = 0; i& real, CImg& imag, const bool is_inverse=false, + const unsigned int nb_threads=0) { + if (!real) + throw CImgInstanceException("CImgList<%s>::FFT(): Empty specified real part.", + pixel_type()); + if (!imag) imag.assign(real._width,real._height,real._depth,real._spectrum,(T)0); + if (!real.is_sameXYZC(imag)) + throw CImgInstanceException("CImgList<%s>::FFT(): Specified real part (%u,%u,%u,%u,%p) and " + "imaginary part (%u,%u,%u,%u,%p) have different dimensions.", + pixel_type(), + real._width,real._height,real._depth,real._spectrum,real._data, + imag._width,imag._height,imag._depth,imag._spectrum,imag._data); + cimg::unused(nb_threads); +#ifdef cimg_use_fftw3 + cimg::mutex(12); +#ifndef cimg_use_fftw3_singlethread + fftw_plan_with_nthreads(nb_threads?nb_threads:cimg::nb_cpus()); +#endif + fftw_complex *data_in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*real._width*real._height*real._depth); + if (!data_in) + throw CImgInstanceException("CImgList<%s>::FFT(): Failed to allocate memory (%s) " + "for computing FFT of image (%u,%u,%u,%u).", + pixel_type(), + cimg::strbuffersize(sizeof(fftw_complex)*real._width* + real._height*real._depth*real._spectrum), + real._width,real._height,real._depth,real._spectrum); + double *const ptrf = (double*)data_in; + fftw_plan data_plan = + real._depth>1?fftw_plan_dft_3d(real._depth,real._height,real._width,data_in,data_in, + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + real._height>1?fftw_plan_dft_2d(real._height,real._width,data_in,data_in, + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE): + fftw_plan_dft_1d(real._width,data_in,data_in, + is_inverse?FFTW_BACKWARD:FFTW_FORWARD,FFTW_ESTIMATE); + cimg_forC(real,c) { + CImg realc = real.get_shared_channel(c), imagc = imag.get_shared_channel(c); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_rofoff(realc,i) { const ulongT i2 = 2*i; ptrf[i2] = (double)realc[i]; ptrf[i2 + 1] = (double)imagc[i]; } + fftw_execute(data_plan); + if (is_inverse) { + const double a = 1.0/(real.width()*real.height()*real.depth()); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_rofoff(realc,i) { const ulongT i2 = 2*i; realc[i] = (T)(a*ptrf[i2]); imagc[i] = (T)(a*ptrf[i2 + 1]); } + } else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(real.width()*real.height()*real.depth(),125000)) + cimg_rofoff(realc,i) { const ulongT i2 = 2*i; realc[i] = (T)ptrf[i2]; imagc[i] = (T)ptrf[i2 + 1]; } + } + fftw_destroy_plan(data_plan); + fftw_free(data_in); +#ifndef cimg_use_fftw3_singlethread + fftw_cleanup_threads(); +#endif + cimg::mutex(12,0); +#else + if (real._depth>1) FFT(real,imag,'z',is_inverse); + if (real._height>1) FFT(real,imag,'y',is_inverse); + if (real._width>1) FFT(real,imag,'x',is_inverse); +#endif + } + + //@} + //------------------------------------- + // + //! \name 3D Objects Management + //@{ + //------------------------------------- + + //! Rotate 3D object's vertices. + /** + \param x X-coordinate of the rotation axis, or first quaternion coordinate. + \param y Y-coordinate of the rotation axis, or second quaternion coordinate. + \param z Z-coordinate of the rotation axis, or second quaternion coordinate. + \param w Angle of the rotation axis (in degree), or fourth quaternion coordinate. + \param is_quaternion Tell is the four arguments denotes a set { axis + angle } or a quaternion (x,y,z,w). + **/ + CImg& rotate_object3d(const float x, const float y, const float z, const float w, + const bool is_quaternion=false) { + return get_rotate_object3d(x,y,z,w,is_quaternion).move_to(*this); + } + + CImg get_rotate_object3d(const float x, const float y, const float z, const float w, + const bool is_quaternion=false) const { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "rotate_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + return CImg::rotation_matrix(x,y,z,w,is_quaternion)**this; + } + + //! Shift 3D object's vertices. + /** + \param tx X-coordinate of the 3D displacement vector. + \param ty Y-coordinate of the 3D displacement vector. + \param tz Z-coordinate of the 3D displacement vector. + **/ + CImg& shift_object3d(const float tx, const float ty=0, const float tz=0) { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "shift_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + get_shared_row(0)+=tx; get_shared_row(1)+=ty; get_shared_row(2)+=tz; + return *this; + } + + //! Shift 3D object's vertices \newinstance. + CImg get_shift_object3d(const float tx, const float ty=0, const float tz=0) const { + return CImg(*this,false).shift_object3d(tx,ty,tz); + } + + //! Shift 3D object's vertices, so that it becomes centered. + /** + \note The object center is computed as its barycenter. + **/ + CImg& shift_object3d() { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "shift_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + CImg xcoords = get_shared_row(0), ycoords = get_shared_row(1), zcoords = get_shared_row(2); + float + xm, xM = (float)xcoords.max_min(xm), + ym, yM = (float)ycoords.max_min(ym), + zm, zM = (float)zcoords.max_min(zm); + xcoords-=(xm + xM)/2; ycoords-=(ym + yM)/2; zcoords-=(zm + zM)/2; + return *this; + } + + //! Shift 3D object's vertices, so that it becomes centered \newinstance. + CImg get_shift_object3d() const { + return CImg(*this,false).shift_object3d(); + } + + //! Resize 3D object. + /** + \param sx Width of the 3D object's bounding box. + \param sy Height of the 3D object's bounding box. + \param sz Depth of the 3D object's bounding box. + **/ + CImg& resize_object3d(const float sx, const float sy=-100, const float sz=-100) { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "resize_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + CImg xcoords = get_shared_row(0), ycoords = get_shared_row(1), zcoords = get_shared_row(2); + float + xm, xM = (float)xcoords.max_min(xm), + ym, yM = (float)ycoords.max_min(ym), + zm, zM = (float)zcoords.max_min(zm); + if (xm0) xcoords*=sx/(xM-xm); else xcoords*=-sx/100; } + if (ym0) ycoords*=sy/(yM-ym); else ycoords*=-sy/100; } + if (zm0) zcoords*=sz/(zM-zm); else zcoords*=-sz/100; } + return *this; + } + + //! Resize 3D object \newinstance. + CImg get_resize_object3d(const float sx, const float sy=-100, const float sz=-100) const { + return CImg(*this,false).resize_object3d(sx,sy,sz); + } + + //! Resize 3D object to unit size. + CImg resize_object3d() { + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "resize_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + CImg xcoords = get_shared_row(0), ycoords = get_shared_row(1), zcoords = get_shared_row(2); + float + xm, xM = (float)xcoords.max_min(xm), + ym, yM = (float)ycoords.max_min(ym), + zm, zM = (float)zcoords.max_min(zm); + const float dx = xM - xm, dy = yM - ym, dz = zM - zm, dmax = cimg::max(dx,dy,dz); + if (dmax>0) { xcoords/=dmax; ycoords/=dmax; zcoords/=dmax; } + return *this; + } + + //! Resize 3D object to unit size \newinstance. + CImg get_resize_object3d() const { + return CImg(*this,false).resize_object3d(); + } + + //! Merge two 3D objects together. + /** + \param[in,out] primitives Primitives data of the current 3D object. + \param obj_vertices Vertices data of the additional 3D object. + \param obj_primitives Primitives data of the additional 3D object. + **/ + template + CImg& append_object3d(CImgList& primitives, const CImg& obj_vertices, + const CImgList& obj_primitives) { + if (!obj_vertices || !obj_primitives) return *this; + if (obj_vertices._height!=3 || obj_vertices._depth>1 || obj_vertices._spectrum>1) + throw CImgInstanceException(_cimg_instance + "append_object3d(): Specified vertice image (%u,%u,%u,%u,%p) is not a " + "set of 3D vertices.", + cimg_instance, + obj_vertices._width,obj_vertices._height, + obj_vertices._depth,obj_vertices._spectrum,obj_vertices._data); + + if (is_empty()) { primitives.assign(obj_primitives); return assign(obj_vertices); } + if (_height!=3 || _depth>1 || _spectrum>1) + throw CImgInstanceException(_cimg_instance + "append_object3d(): Instance is not a set of 3D vertices.", + cimg_instance); + + const unsigned int P = _width; + append(obj_vertices,'x'); + const unsigned int N = primitives._width; + primitives.insert(obj_primitives); + for (unsigned int i = N; i &p = primitives[i]; + switch (p.size()) { + case 1 : p[0]+=P; break; // Point + case 5 : p[0]+=P; p[1]+=P; break; // Sphere + case 2 : case 6 : p[0]+=P; p[1]+=P; break; // Segment + case 3 : case 9 : p[0]+=P; p[1]+=P; p[2]+=P; break; // Triangle + case 4 : case 12 : p[0]+=P; p[1]+=P; p[2]+=P; p[3]+=P; break; // Rectangle + } + } + return *this; + } + + //! Texturize primitives of a 3D object. + /** + \param[in,out] primitives Primitives data of the 3D object. + \param[in,out] colors Colors data of the 3D object. + \param texture Texture image to map to 3D object. + \param coords Texture-mapping coordinates. + **/ + template + const CImg& texturize_object3d(CImgList& primitives, CImgList& colors, + const CImg& texture, const CImg& coords=CImg::const_empty()) const { + if (is_empty()) return *this; + if (_height!=3) + throw CImgInstanceException(_cimg_instance + "texturize_object3d(): image instance is not a set of 3D points.", + cimg_instance); + if (coords && (coords._width!=_width || coords._height!=2)) + throw CImgArgumentException(_cimg_instance + "texturize_object3d(): Invalid specified texture coordinates (%u,%u,%u,%u,%p).", + cimg_instance, + coords._width,coords._height,coords._depth,coords._spectrum,coords._data); + CImg _coords; + if (!coords) { // If no texture coordinates specified, do a default XY-projection + _coords.assign(_width,2); + float + xmin, xmax = (float)get_shared_row(0).max_min(xmin), + ymin, ymax = (float)get_shared_row(1).max_min(ymin), + dx = xmax>xmin?xmax-xmin:1, + dy = ymax>ymin?ymax-ymin:1; + cimg_forX(*this,p) { + _coords(p,0) = (int)(((*this)(p,0) - xmin)*texture._width/dx); + _coords(p,1) = (int)(((*this)(p,1) - ymin)*texture._height/dy); + } + } else _coords = coords; + + int texture_ind = -1; + cimglist_for(primitives,l) { + CImg &p = primitives[l]; + const unsigned int siz = p.size(); + switch (siz) { + case 1 : { // Point + const unsigned int i0 = (unsigned int)p[0]; + const int x0 = _coords(i0,0), y0 = _coords(i0,1); + texture.get_vector_at(x0<=0?0:x0>=texture.width()?texture.width() - 1:x0, + y0<=0?0:y0>=texture.height()?texture.height() - 1:y0).move_to(colors[l]); + } break; + case 2 : case 6 : { // Line + const unsigned int i0 = (unsigned int)p[0], i1 = (unsigned int)p[1]; + const int + x0 = _coords(i0,0), y0 = _coords(i0,1), + x1 = _coords(i1,0), y1 = _coords(i1,1); + if (texture_ind<0) colors[texture_ind=l].assign(texture,false); + else colors[l].assign(colors[texture_ind],true); + CImg::vector(i0,i1,x0,y0,x1,y1).move_to(p); + } break; + case 3 : case 9 : { // Triangle + const unsigned int i0 = (unsigned int)p[0], i1 = (unsigned int)p[1], i2 = (unsigned int)p[2]; + const int + x0 = _coords(i0,0), y0 = _coords(i0,1), + x1 = _coords(i1,0), y1 = _coords(i1,1), + x2 = _coords(i2,0), y2 = _coords(i2,1); + if (texture_ind<0) colors[texture_ind=l].assign(texture,false); + else colors[l].assign(colors[texture_ind],true); + CImg::vector(i0,i1,i2,x0,y0,x1,y1,x2,y2).move_to(p); + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = (unsigned int)p[0], i1 = (unsigned int)p[1], i2 = (unsigned int)p[2], i3 = (unsigned int)p[3]; + const int + x0 = _coords(i0,0), y0 = _coords(i0,1), + x1 = _coords(i1,0), y1 = _coords(i1,1), + x2 = _coords(i2,0), y2 = _coords(i2,1), + x3 = _coords(i3,0), y3 = _coords(i3,1); + if (texture_ind<0) colors[texture_ind=l].assign(texture,false); + else colors[l].assign(colors[texture_ind],true); + CImg::vector(i0,i1,i2,i3,x0,y0,x1,y1,x2,y2,x3,y3).move_to(p); + } break; + } + } + return *this; + } + + //! Generate a 3D elevation of the image instance. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param[out] colors The returned list of the 3D object colors. + \param elevation The input elevation map. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + const CImg img("reference.jpg"); + CImgList faces3d; + CImgList colors3d; + const CImg points3d = img.get_elevation3d(faces3d,colors3d,img.get_norm()*0.2); + CImg().display_object3d("Elevation3d",points3d,faces3d,colors3d); + \endcode + \image html ref_elevation3d.jpg + **/ + template + CImg get_elevation3d(CImgList& primitives, CImgList& colors, const CImg& elevation) const { + if (!is_sameXY(elevation) || elevation._depth>1 || elevation._spectrum>1) + throw CImgArgumentException(_cimg_instance + "get_elevation3d(): Instance and specified elevation (%u,%u,%u,%u,%p) " + "have incompatible dimensions.", + cimg_instance, + elevation._width,elevation._height,elevation._depth, + elevation._spectrum,elevation._data); + if (is_empty()) return *this; + float m, M = (float)max_min(m); + if (M==m) ++M; + colors.assign(); + const unsigned int size_x1 = _width - 1, size_y1 = _height - 1; + for (unsigned int y = 0; y1?((*this)(x,y,1) - m)*255/(M-m):r), + b = (unsigned char)(_spectrum>2?((*this)(x,y,2) - m)*255/(M-m):_spectrum>1?0:r); + CImg::vector((tc)r,(tc)g,(tc)b).move_to(colors); + } + const typename CImg::_functor2d_int func(elevation); + return elevation3d(primitives,func,0,0,_width - 1.f,_height - 1.f,_width,_height); + } + + //! Generate the 3D projection planes of the image instance. + /** + \param[out] primitives Primitives data of the returned 3D object. + \param[out] colors Colors data of the returned 3D object. + \param x0 X-coordinate of the projection point. + \param y0 Y-coordinate of the projection point. + \param z0 Z-coordinate of the projection point. + \param normalize_colors Tells if the created textures have normalized colors. + **/ + template + CImg get_projections3d(CImgList& primitives, CImgList& colors, + const unsigned int x0, const unsigned int y0, const unsigned int z0, + const bool normalize_colors=false) const { + float m = 0, M = 0, delta = 1; + if (normalize_colors) { m = (float)min_max(M); delta = 255/(m==M?1:M-m); } + const unsigned int + _x0 = (x0>=_width)?_width - 1:x0, + _y0 = (y0>=_height)?_height - 1:y0, + _z0 = (z0>=_depth)?_depth - 1:z0; + CImg img_xy, img_xz, img_yz; + if (normalize_colors) { + ((get_crop(0,0,_z0,0,_width - 1,_height - 1,_z0,_spectrum - 1)-=m)*=delta).move_to(img_xy); + ((get_crop(0,_y0,0,0,_width - 1,_y0,_depth - 1,_spectrum - 1)-=m)*=delta).resize(_width,_depth,1,-100,-1). + move_to(img_xz); + ((get_crop(_x0,0,0,0,_x0,_height - 1,_depth - 1,_spectrum - 1)-=m)*=delta).resize(_height,_depth,1,-100,-1). + move_to(img_yz); + } else { + get_crop(0,0,_z0,0,_width - 1,_height - 1,_z0,_spectrum - 1).move_to(img_xy); + get_crop(0,_y0,0,0,_width - 1,_y0,_depth - 1,_spectrum - 1).resize(_width,_depth,1,-100,-1).move_to(img_xz); + get_crop(_x0,0,0,0,_x0,_height - 1,_depth - 1,_spectrum - 1).resize(_height,_depth,1,-100,-1).move_to(img_yz); + } + CImg points(12,3,1,1, + 0,_width - 1,_width - 1,0, 0,_width - 1,_width - 1,0, _x0,_x0,_x0,_x0, + 0,0,_height - 1,_height - 1, _y0,_y0,_y0,_y0, 0,_height - 1,_height - 1,0, + _z0,_z0,_z0,_z0, 0,0,_depth - 1,_depth - 1, 0,0,_depth - 1,_depth - 1); + primitives.assign(); + CImg::vector(0,1,2,3,0,0,img_xy._width - 1,0,img_xy._width - 1,img_xy._height - 1,0,img_xy._height - 1). + move_to(primitives); + CImg::vector(4,5,6,7,0,0,img_xz._width - 1,0,img_xz._width - 1,img_xz._height - 1,0,img_xz._height - 1). + move_to(primitives); + CImg::vector(8,9,10,11,0,0,img_yz._width - 1,0,img_yz._width - 1,img_yz._height - 1,0,img_yz._height - 1). + move_to(primitives); + colors.assign(); + img_xy.move_to(colors); + img_xz.move_to(colors); + img_yz.move_to(colors); + return points; + } + + //! Generate a isoline of the image instance as a 3D object. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param isovalue The returned list of the 3D object colors. + \param size_x The number of subdivisions along the X-axis. + \param size_y The number of subdisivions along the Y-axis. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + const CImg img("reference.jpg"); + CImgList faces3d; + const CImg points3d = img.get_isoline3d(faces3d,100); + CImg().display_object3d("Isoline3d",points3d,faces3d,colors3d); + \endcode + \image html ref_isoline3d.jpg + **/ + template + CImg get_isoline3d(CImgList& primitives, const float isovalue, + const int size_x=-100, const int size_y=-100) const { + if (_spectrum>1) + throw CImgInstanceException(_cimg_instance + "get_isoline3d(): Instance is not a scalar image.", + cimg_instance); + if (_depth>1) + throw CImgInstanceException(_cimg_instance + "get_isoline3d(): Instance is not a 2D image.", + cimg_instance); + primitives.assign(); + if (is_empty()) return *this; + CImg vertices; + if ((size_x==-100 && size_y==-100) || (size_x==width() && size_y==height())) { + const _functor2d_int func(*this); + vertices = isoline3d(primitives,func,isovalue,0,0,width() - 1.f,height() - 1.f,width(),height()); + } else { + const _functor2d_float func(*this); + vertices = isoline3d(primitives,func,isovalue,0,0,width() - 1.f,height() - 1.f,size_x,size_y); + } + return vertices; + } + + //! Compute isolines of a function, as a 3D object. + /** + \param[out] primitives Primitives data of the resulting 3D object. + \param func Elevation functor. Must have operator()(x,y) defined. + \param isovalue Isovalue to extract from function. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param size_x Resolution of the function along the X-axis. + \param size_y Resolution of the function along the Y-axis. + \note Use the marching squares algorithm for extracting the isolines. + **/ + template + static CImg isoline3d(CImgList& primitives, const tfunc& func, const float isovalue, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + CImgList vertices; + primitives.assign(); + typename CImg::_functor_isoline3d add_vertex(vertices); + typename CImg::_functor_isoline3d add_segment(primitives); + isoline3d(add_vertex,add_segment,func,isovalue,x0,y0,x1,y1,size_x,size_y); + return vertices>'x'; + } + + //! Compute isolines of a function, as a 3D object. + /** + \param[out] add_vertex : Functor with operator()(x,y,z) defined for adding new vertex. + \param[out] add_segment : Functor with operator()(i,j) defined for adding new segment. + \param func Elevation function. Is of type float (*func)(const float x,const float y). + \param isovalue Isovalue to extract from function. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param size_x Resolution of the function along the X-axis. + \param size_y Resolution of the function along the Y-axis. + \note Use the marching squares algorithm for extracting the isolines. + **/ + template + static void isoline3d(tv& add_vertex, tf& add_segment, const tfunc& func, const float isovalue, + const float x0, const float y0, const float x1, const float y1, + const int size_x, const int size_y) { + static const unsigned int edges[16] = { 0x0, 0x9, 0x3, 0xa, 0x6, 0xf, 0x5, 0xc, 0xc, + 0x5, 0xf, 0x6, 0xa, 0x3, 0x9, 0x0 }; + static const int segments[16][4] = { { -1,-1,-1,-1 }, { 0,3,-1,-1 }, { 0,1,-1,-1 }, { 1,3,-1,-1 }, + { 1,2,-1,-1 }, { 0,1,2,3 }, { 0,2,-1,-1 }, { 2,3,-1,-1 }, + { 2,3,-1,-1 }, { 0,2,-1,-1}, { 0,3,1,2 }, { 1,2,-1,-1 }, + { 1,3,-1,-1 }, { 0,1,-1,-1}, { 0,3,-1,-1}, { -1,-1,-1,-1 } }; + const unsigned int + _nx = (unsigned int)(size_x>=0?size_x:cimg::round((x1-x0)*-size_x/100 + 1)), + _ny = (unsigned int)(size_y>=0?size_y:cimg::round((y1-y0)*-size_y/100 + 1)), + nx = _nx?_nx:1, + ny = _ny?_ny:1, + nxm1 = nx - 1, + nym1 = ny - 1; + + if (!nxm1 || !nym1) return; + const float dx = (x1 - x0)/nxm1, dy = (y1 - y0)/nym1; + CImg indices1(nx,1,1,2,-1), indices2(nx,1,1,2); + CImg values1(nx), values2(nx); + float X = x0, Y = y0, nX = X + dx, nY = Y + dy; + int nb_vertices = 0; + + // Fill first line with values + cimg_forX(values1,x) { values1(x) = (float)func(X,Y); X+=dx; } + + // Run the marching squares algorithm + for (unsigned int yi = 0, nyi = 1; yi + static CImg isoline3d(CImgList& primitives, const char *const expression, const float isovalue, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + const _functor2d_expr func(expression); + return isoline3d(primitives,func,isovalue,x0,y0,x1,y1,size_x,size_y); + } + + template + static int _isoline3d_index(const unsigned int edge, const CImg& indices1, const CImg& indices2, + const unsigned int x, const unsigned int nx) { + switch (edge) { + case 0 : return (int)indices1(x,0); + case 1 : return (int)indices1(nx,1); + case 2 : return (int)indices2(x,0); + case 3 : return (int)indices1(x,1); + } + return 0; + } + + //! Generate an isosurface of the image instance as a 3D object. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param isovalue The returned list of the 3D object colors. + \param size_x Number of subdivisions along the X-axis. + \param size_y Number of subdisivions along the Y-axis. + \param size_z Number of subdisivions along the Z-axis. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + const CImg img = CImg("reference.jpg").resize(-100,-100,20); + CImgList faces3d; + const CImg points3d = img.get_isosurface3d(faces3d,100); + CImg().display_object3d("Isosurface3d",points3d,faces3d,colors3d); + \endcode + \image html ref_isosurface3d.jpg + **/ + template + CImg get_isosurface3d(CImgList& primitives, const float isovalue, + const int size_x=-100, const int size_y=-100, const int size_z=-100) const { + if (_spectrum>1) + throw CImgInstanceException(_cimg_instance + "get_isosurface3d(): Instance is not a scalar image.", + cimg_instance); + primitives.assign(); + if (is_empty()) return *this; + CImg vertices; + if ((size_x==-100 && size_y==-100 && size_z==-100) || (size_x==width() && size_y==height() && size_z==depth())) { + const _functor3d_int func(*this); + vertices = isosurface3d(primitives,func,isovalue,0,0,0,width() - 1.f,height() - 1.f,depth() - 1.f, + width(),height(),depth()); + } else { + const _functor3d_float func(*this); + vertices = isosurface3d(primitives,func,isovalue,0,0,0,width() - 1.f,height() - 1.f,depth() - 1.f, + size_x,size_y,size_z); + } + return vertices; + } + + //! Compute isosurface of a function, as a 3D object. + /** + \param[out] primitives Primitives data of the resulting 3D object. + \param func Implicit function. Is of type float (*func)(const float x, const float y, const float z). + \param isovalue Isovalue to extract. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param size_x Resolution of the elevation function along the X-axis. + \param size_y Resolution of the elevation function along the Y-axis. + \param size_z Resolution of the elevation function along the Z-axis. + \note Use the marching cubes algorithm for extracting the isosurface. + **/ + template + static CImg isosurface3d(CImgList& primitives, const tfunc& func, const float isovalue, + const float x0, const float y0, const float z0, + const float x1, const float y1, const float z1, + const int size_x=32, const int size_y=32, const int size_z=32) { + CImgList vertices; + primitives.assign(); + typename CImg::_functor_isosurface3d add_vertex(vertices); + typename CImg::_functor_isosurface3d add_triangle(primitives); + isosurface3d(add_vertex,add_triangle,func,isovalue,x0,y0,z0,x1,y1,z1,size_x,size_y,size_z); + return vertices>'x'; + } + + //! Compute isosurface of a function, as a 3D object. + /** + \param[out] add_vertex : Functor with operator()(x,y,z) defined for adding new vertex. + \param[out] add_triangle : Functor with operator()(i,j) defined for adding new segment. + \param func Implicit function. Is of type float (*func)(const float x, const float y, const float z). + \param isovalue Isovalue to extract. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param size_x Resolution of the elevation function along the X-axis. + \param size_y Resolution of the elevation function along the Y-axis. + \param size_z Resolution of the elevation function along the Z-axis. + \note Use the marching cubes algorithm for extracting the isosurface. + **/ + template + static void isosurface3d(tv& add_vertex, tf& add_triangle, const tfunc& func, const float isovalue, + const float x0, const float y0, const float z0, + const float x1, const float y1, const float z1, + const int size_x, const int size_y, const int size_z) { + static const unsigned int edges[256] = { + 0x000, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, 0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00, + 0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, 0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, + 0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c, 0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30, + 0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac, 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0, + 0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c, 0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60, + 0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc, 0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, + 0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c, 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950, + 0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc , 0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, + 0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc, 0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0, + 0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, 0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650, + 0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, 0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0, + 0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, 0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460, + 0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, 0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0, + 0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, 0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230, + 0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c, 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190, + 0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, 0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x000 + }; + + static const int triangles[256][16] = { + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, + { 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1 }, + { 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1 }, + { 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, + { 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1 }, + { 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1 }, + { 10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1 }, + { 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, + { 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1 }, + { 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1 }, + { 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, + { 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1 }, + { 11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1 }, + { 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1 }, + { 11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1 }, + { 11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1 }, + { 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1 }, + { 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, + { 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1 }, + { 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, + { 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1 }, + { 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1 }, + { 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1 }, + { 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, + { 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1 }, + { 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1 }, + { 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, + { 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1 }, + { 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1 }, + { 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1 }, + { 10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, + { 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1 }, + { 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1 }, + { 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, + { 6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1 }, + { 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1 }, + { 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1 }, + { 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1 }, + { 10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1 }, + { 10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, + { 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1 }, + { 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, + { 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1 }, + { 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1 }, + { 11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1 }, + { 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1 }, + { 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1 }, + { 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1 }, + { 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1 }, + { 10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1 }, + { 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1 }, + { 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1 }, + { 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1 }, + { 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1 }, + { 10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1 }, + { 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1 }, + { 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1 }, + { 10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1 }, + { 10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1 }, + { 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1 }, + { 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1 }, + { 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1 }, + { 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1 }, + { 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1 }, + { 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1 }, + { 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1 }, + { 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1 }, + { 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1 }, + { 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1 }, + { 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1 }, + { 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1 }, + { 6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1 }, + { 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1 }, + { 11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1 }, + { 6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1 }, + { 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1 }, + { 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1 }, + { 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1 }, + { 10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1 }, + { 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1 }, + { 11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1 }, + { 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1 }, + { 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1 }, + { 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1 }, + { 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1 }, + { 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1 }, + { 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1 }, + { 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1 }, + { 10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1 }, + { 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1 }, + { 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1 }, + { 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1 }, + { 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1 }, + { 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1 }, + { 5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1 }, + { 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1 }, + { 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1 }, + { 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1 }, + { 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1 }, + { 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1 }, + { 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1 }, + { 11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, + { 11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1 }, + { 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1 }, + { 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1 }, + { 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1 }, + { 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1 }, + { 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1 }, + { 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, + { 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1 }, + { 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, + { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 } + }; + + const unsigned int + _nx = (unsigned int)(size_x>=0?size_x:cimg::round((x1-x0)*-size_x/100 + 1)), + _ny = (unsigned int)(size_y>=0?size_y:cimg::round((y1-y0)*-size_y/100 + 1)), + _nz = (unsigned int)(size_z>=0?size_z:cimg::round((z1-z0)*-size_z/100 + 1)), + nx = _nx?_nx:1, + ny = _ny?_ny:1, + nz = _nz?_nz:1, + nxm1 = nx - 1, + nym1 = ny - 1, + nzm1 = nz - 1; + if (!nxm1 || !nym1 || !nzm1) return; + const float dx = (x1 - x0)/nxm1, dy = (y1 - y0)/nym1, dz = (z1 - z0)/nzm1; + CImg indices1(nx,ny,1,3,-1), indices2(indices1); + CImg values1(nx,ny), values2(nx,ny); + float X = 0, Y = 0, Z = 0, nX = 0, nY = 0, nZ = 0; + int nb_vertices = 0; + + // Fill the first plane with function values + Y = y0; + cimg_forY(values1,y) { + X = x0; + cimg_forX(values1,x) { values1(x,y) = (float)func(X,Y,z0); X+=dx; } + Y+=dy; + } + + // Run Marching Cubes algorithm + Z = z0; nZ = Z + dz; + for (unsigned int zi = 0; zi + static CImg isosurface3d(CImgList& primitives, const char *const expression, const float isovalue, + const float x0, const float y0, const float z0, + const float x1, const float y1, const float z1, + const int dx=32, const int dy=32, const int dz=32) { + const _functor3d_expr func(expression); + return isosurface3d(primitives,func,isovalue,x0,y0,z0,x1,y1,z1,dx,dy,dz); + } + + template + static int _isosurface3d_index(const unsigned int edge, const CImg& indices1, const CImg& indices2, + const unsigned int x, const unsigned int y, + const unsigned int nx, const unsigned int ny) { + switch (edge) { + case 0 : return indices1(x,y,0); + case 1 : return indices1(nx,y,1); + case 2 : return indices1(x,ny,0); + case 3 : return indices1(x,y,1); + case 4 : return indices2(x,y,0); + case 5 : return indices2(nx,y,1); + case 6 : return indices2(x,ny,0); + case 7 : return indices2(x,y,1); + case 8 : return indices1(x,y,2); + case 9 : return indices1(nx,y,2); + case 10 : return indices1(nx,ny,2); + case 11 : return indices1(x,ny,2); + } + return 0; + } + + // Define functors for accessing image values (used in previous functions). + struct _functor2d_int { + const CImg& ref; + _functor2d_int(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y) const { + return (float)ref((int)x,(int)y); + } + }; + + struct _functor2d_float { + const CImg& ref; + _functor2d_float(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y) const { + return (float)ref._linear_atXY(x,y); + } + }; + + struct _functor2d_expr { + _cimg_math_parser *mp; + ~_functor2d_expr() { mp->end(); delete mp; } + _functor2d_expr(const char *const expr):mp(0) { + mp = new _cimg_math_parser(expr,0,CImg::const_empty(),0); + } + float operator()(const float x, const float y) const { + return (float)(*mp)(x,y,0,0); + } + }; + + struct _functor3d_int { + const CImg& ref; + _functor3d_int(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z) const { + return (float)ref((int)x,(int)y,(int)z); + } + }; + + struct _functor3d_float { + const CImg& ref; + _functor3d_float(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z) const { + return (float)ref._linear_atXYZ(x,y,z); + } + }; + + struct _functor3d_expr { + _cimg_math_parser *mp; + ~_functor3d_expr() { mp->end(); delete mp; } + _functor3d_expr(const char *const expr):mp(0) { + mp = new _cimg_math_parser(expr,0,CImg::const_empty(),0); + } + float operator()(const float x, const float y, const float z) const { + return (float)(*mp)(x,y,z,0); + } + }; + + struct _functor4d_int { + const CImg& ref; + _functor4d_int(const CImg& pref):ref(pref) {} + float operator()(const float x, const float y, const float z, const unsigned int c) const { + return (float)ref((int)x,(int)y,(int)z,c); + } + }; + + struct _functor_isoline3d { + CImgList& list; + _functor_isoline3d(CImgList& _list):list(_list) {} + template + void operator()(const t x, const t y, const t z) { CImg::vector((T)x,(T)y,(T)z).move_to(list); } + template + void operator()(const t i, const t j) { CImg::vector((T)i,(T)j).move_to(list); } + }; + + struct _functor_isosurface3d { + CImgList& list; + _functor_isosurface3d(CImgList& _list):list(_list) {} + template + void operator()(const t x, const t y, const t z) { CImg::vector((T)x,(T)y,(T)z).move_to(list); } + }; + + //! Compute 3D elevation of a function as a 3D object. + /** + \param[out] primitives Primitives data of the resulting 3D object. + \param func Elevation function. Is of type float (*func)(const float x,const float y). + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param size_x Resolution of the function along the X-axis. + \param size_y Resolution of the function along the Y-axis. + **/ + template + static CImg elevation3d(CImgList& primitives, const tfunc& func, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + const float + nx0 = x0=0?size_x:(nx1-nx0)*-size_x/100), + nsize_x = _nsize_x?_nsize_x:1, nsize_x1 = nsize_x - 1, + _nsize_y = (unsigned int)(size_y>=0?size_y:(ny1-ny0)*-size_y/100), + nsize_y = _nsize_y?_nsize_y:1, nsize_y1 = nsize_y - 1; + if (nsize_x<2 || nsize_y<2) + throw CImgArgumentException("CImg<%s>::elevation3d(): Invalid specified size (%d,%d).", + pixel_type(), + nsize_x,nsize_y); + + CImg vertices(nsize_x*nsize_y,3); + floatT *ptr_x = vertices.data(0,0), *ptr_y = vertices.data(0,1), *ptr_z = vertices.data(0,2); + for (unsigned int y = 0; y + static CImg elevation3d(CImgList& primitives, const char *const expression, + const float x0, const float y0, const float x1, const float y1, + const int size_x=256, const int size_y=256) { + const _functor2d_expr func(expression); + return elevation3d(primitives,func,x0,y0,x1,y1,size_x,size_y); + } + + //! Generate a 3D box object. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param size_x The width of the box (dimension along the X-axis). + \param size_y The height of the box (dimension along the Y-axis). + \param size_z The depth of the box (dimension along the Z-axis). + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::box3d(faces3d,10,20,30); + CImg().display_object3d("Box3d",points3d,faces3d); + \endcode + \image html ref_box3d.jpg + **/ + template + static CImg box3d(CImgList& primitives, + const float size_x=200, const float size_y=100, const float size_z=100) { + primitives.assign(6,1,4,1,1, 0,3,2,1, 4,5,6,7, 0,1,5,4, 3,7,6,2, 0,4,7,3, 1,2,6,5); + return CImg(8,3,1,1, + 0.,size_x,size_x, 0., 0.,size_x,size_x, 0., + 0., 0.,size_y,size_y, 0., 0.,size_y,size_y, + 0., 0., 0., 0.,size_z,size_z,size_z,size_z); + } + + //! Generate a 3D cone. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius The radius of the cone basis. + \param size_z The cone's height. + \param subdivisions The number of basis angular subdivisions. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::cone3d(faces3d,50); + CImg().display_object3d("Cone3d",points3d,faces3d); + \endcode + \image html ref_cone3d.jpg + **/ + template + static CImg cone3d(CImgList& primitives, + const float radius=50, const float size_z=100, const unsigned int subdivisions=24) { + primitives.assign(); + if (!subdivisions) return CImg(); + CImgList vertices(2,1,3,1,1, + 0.,0.,size_z, + 0.,0.,0.); + for (float delta = 360.f/subdivisions, angle = 0; angle<360; angle+=delta) { + const float a = (float)(angle*cimg::PI/180); + CImg::vector((float)(radius*std::cos(a)),(float)(radius*std::sin(a)),0).move_to(vertices); + } + const unsigned int nbr = vertices._width - 2; + for (unsigned int p = 0; p::vector(1,next,curr).move_to(primitives); + CImg::vector(0,curr,next).move_to(primitives); + } + return vertices>'x'; + } + + //! Generate a 3D cylinder. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius The radius of the cylinder basis. + \param size_z The cylinder's height. + \param subdivisions The number of basis angular subdivisions. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::cylinder3d(faces3d,50); + CImg().display_object3d("Cylinder3d",points3d,faces3d); + \endcode + \image html ref_cylinder3d.jpg + **/ + template + static CImg cylinder3d(CImgList& primitives, + const float radius=50, const float size_z=100, const unsigned int subdivisions=24) { + primitives.assign(); + if (!subdivisions) return CImg(); + CImgList vertices(2,1,3,1,1, + 0.,0.,0., + 0.,0.,size_z); + for (float delta = 360.f/subdivisions, angle = 0; angle<360; angle+=delta) { + const float a = (float)(angle*cimg::PI/180); + CImg::vector((float)(radius*std::cos(a)),(float)(radius*std::sin(a)),0.f).move_to(vertices); + CImg::vector((float)(radius*std::cos(a)),(float)(radius*std::sin(a)),size_z).move_to(vertices); + } + const unsigned int nbr = (vertices._width - 2)/2; + for (unsigned int p = 0; p::vector(0,next,curr).move_to(primitives); + CImg::vector(1,curr + 1,next + 1).move_to(primitives); + CImg::vector(curr,next,next + 1,curr + 1).move_to(primitives); + } + return vertices>'x'; + } + + //! Generate a 3D torus. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius1 The large radius. + \param radius2 The small radius. + \param subdivisions1 The number of angular subdivisions for the large radius. + \param subdivisions2 The number of angular subdivisions for the small radius. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::torus3d(faces3d,20,4); + CImg().display_object3d("Torus3d",points3d,faces3d); + \endcode + \image html ref_torus3d.jpg + **/ + template + static CImg torus3d(CImgList& primitives, + const float radius1=100, const float radius2=30, + const unsigned int subdivisions1=24, const unsigned int subdivisions2=12) { + primitives.assign(); + if (!subdivisions1 || !subdivisions2) return CImg(); + CImgList vertices; + for (unsigned int v = 0; v::vector(x,y,z).move_to(vertices); + } + } + for (unsigned int vv = 0; vv::vector(svv + nu,svv + uu,snv + uu,snv + nu).move_to(primitives); + } + } + return vertices>'x'; + } + + //! Generate a 3D XY-plane. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param size_x The width of the plane (dimension along the X-axis). + \param size_y The height of the plane (dimensions along the Y-axis). + \param subdivisions_x The number of planar subdivisions along the X-axis. + \param subdivisions_y The number of planar subdivisions along the Y-axis. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::plane3d(faces3d,100,50); + CImg().display_object3d("Plane3d",points3d,faces3d); + \endcode + \image html ref_plane3d.jpg + **/ + template + static CImg plane3d(CImgList& primitives, + const float size_x=100, const float size_y=100, + const unsigned int subdivisions_x=10, const unsigned int subdivisions_y=10) { + primitives.assign(); + if (!subdivisions_x || !subdivisions_y) return CImg(); + CImgList vertices; + const unsigned int w = subdivisions_x + 1, h = subdivisions_y + 1; + const float fx = (float)size_x/w, fy = (float)size_y/h; + for (unsigned int y = 0; y::vector(fx*x,fy*y,0).move_to(vertices); + for (unsigned int y = 0; y::vector(off1,off4,off3,off2).move_to(primitives); + } + return vertices>'x'; + } + + //! Generate a 3D sphere. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param radius The radius of the sphere (dimension along the X-axis). + \param subdivisions The number of recursive subdivisions from an initial icosahedron. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg points3d = CImg::sphere3d(faces3d,100,4); + CImg().display_object3d("Sphere3d",points3d,faces3d); + \endcode + \image html ref_sphere3d.jpg + **/ + template + static CImg sphere3d(CImgList& primitives, + const float radius=50, const unsigned int subdivisions=3) { + + // Create initial icosahedron + primitives.assign(); + const double tmp = (1 + std::sqrt(5.f))/2, a = 1./std::sqrt(1 + tmp*tmp), b = tmp*a; + CImgList vertices(12,1,3,1,1, b,a,0., -b,a,0., -b,-a,0., b,-a,0., a,0.,b, a,0.,-b, + -a,0.,-b, -a,0.,b, 0.,b,a, 0.,-b,a, 0.,-b,-a, 0.,b,-a); + primitives.assign(20,1,3,1,1, 4,8,7, 4,7,9, 5,6,11, 5,10,6, 0,4,3, 0,3,5, 2,7,1, 2,1,6, + 8,0,11, 8,11,1, 9,10,3, 9,2,10, 8,4,0, 11,0,5, 4,9,3, + 5,3,10, 7,8,1, 6,1,11, 7,2,9, 6,10,2); + // edge - length/2 + float he = (float)a; + + // Recurse subdivisions + for (unsigned int i = 0; i::vector(nx0,ny0,nz0).move_to(vertices); i0 = vertices.width() - 1; } + if (i1<0) { CImg::vector(nx1,ny1,nz1).move_to(vertices); i1 = vertices.width() - 1; } + if (i2<0) { CImg::vector(nx2,ny2,nz2).move_to(vertices); i2 = vertices.width() - 1; } + primitives.remove(0); + CImg::vector(p0,i0,i1).move_to(primitives); + CImg::vector((tf)i0,(tf)p1,(tf)i2).move_to(primitives); + CImg::vector((tf)i1,(tf)i2,(tf)p2).move_to(primitives); + CImg::vector((tf)i1,(tf)i0,(tf)i2).move_to(primitives); + } + } + return (vertices>'x')*=radius; + } + + //! Generate a 3D ellipsoid. + /** + \param[out] primitives The returned list of the 3D object primitives + (template type \e tf should be at least \e unsigned \e int). + \param tensor The tensor which gives the shape and size of the ellipsoid. + \param subdivisions The number of recursive subdivisions from an initial stretched icosahedron. + \return The N vertices (xi,yi,zi) of the 3D object as a Nx3 CImg image (0<=i<=N - 1). + \par Example + \code + CImgList faces3d; + const CImg tensor = CImg::diagonal(10,7,3), + points3d = CImg::ellipsoid3d(faces3d,tensor,4); + CImg().display_object3d("Ellipsoid3d",points3d,faces3d); + \endcode + \image html ref_ellipsoid3d.jpg + **/ + template + static CImg ellipsoid3d(CImgList& primitives, + const CImg& tensor, const unsigned int subdivisions=3) { + primitives.assign(); + if (!subdivisions) return CImg(); + CImg S, V; + tensor.symmetric_eigen(S,V); + const float orient = + (V(0,1)*V(1,2) - V(0,2)*V(1,1))*V(2,0) + + (V(0,2)*V(1,0) - V(0,0)*V(1,2))*V(2,1) + + (V(0,0)*V(1,1) - V(0,1)*V(1,0))*V(2,2); + if (orient<0) { V(2,0) = -V(2,0); V(2,1) = -V(2,1); V(2,2) = -V(2,2); } + const float l0 = S[0], l1 = S[1], l2 = S[2]; + CImg vertices = sphere3d(primitives,1.,subdivisions); + vertices.get_shared_row(0)*=l0; + vertices.get_shared_row(1)*=l1; + vertices.get_shared_row(2)*=l2; + return V*vertices; + } + + //! Convert 3D object into a CImg3d representation. + /** + \param primitives Primitives data of the 3D object. + \param colors Colors data of the 3D object. + \param opacities Opacities data of the 3D object. + \param full_check Tells if full checking of the 3D object must be performed. + **/ + template + CImg& object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool full_check=true) { + return get_object3dtoCImg3d(primitives,colors,opacities,full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \overloading. + template + CImg& object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const bool full_check=true) { + return get_object3dtoCImg3d(primitives,colors,full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \overloading. + template + CImg& object3dtoCImg3d(const CImgList& primitives, + const bool full_check=true) { + return get_object3dtoCImg3d(primitives,full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \overloading. + CImg& object3dtoCImg3d(const bool full_check=true) { + return get_object3dtoCImg3d(full_check).move_to(*this); + } + + //! Convert 3D object into a CImg3d representation \newinstance. + template + CImg get_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool full_check=true) const { + CImg error_message(1024); + if (!is_object3d(primitives,colors,opacities,full_check,error_message)) + throw CImgInstanceException(_cimg_instance + "object3dtoCImg3d(): Invalid specified 3D object (%u,%u) (%s).", + cimg_instance,_width,primitives._width,error_message.data()); + CImg res(1,_size_object3dtoCImg3d(primitives,colors,opacities)); + float *ptrd = res._data; + + // Put magick number. + *(ptrd++) = 'C' + 0.5f; *(ptrd++) = 'I' + 0.5f; *(ptrd++) = 'm' + 0.5f; + *(ptrd++) = 'g' + 0.5f; *(ptrd++) = '3' + 0.5f; *(ptrd++) = 'd' + 0.5f; + + // Put number of vertices and primitives. + *(ptrd++) = cimg::uint2float(_width); + *(ptrd++) = cimg::uint2float(primitives._width); + + // Put vertex data. + if (is_empty() || !primitives) return res; + const T *ptrx = data(0,0), *ptry = data(0,1), *ptrz = data(0,2); + cimg_forX(*this,p) { + *(ptrd++) = (float)*(ptrx++); + *(ptrd++) = (float)*(ptry++); + *(ptrd++) = (float)*(ptrz++); + } + + // Put primitive data. + cimglist_for(primitives,p) { + *(ptrd++) = (float)primitives[p].size(); + const tp *ptrp = primitives[p]._data; + cimg_foroff(primitives[p],i) *(ptrd++) = cimg::uint2float((unsigned int)*(ptrp++)); + } + + // Put color/texture data. + const unsigned int csiz = std::min(colors._width,primitives._width); + for (int c = 0; c<(int)csiz; ++c) { + const CImg& color = colors[c]; + const tc *ptrc = color._data; + if (color.size()==3) { *(ptrd++) = (float)*(ptrc++); *(ptrd++) = (float)*(ptrc++); *(ptrd++) = (float)*ptrc; } + else { + *(ptrd++) = -128.f; + int shared_ind = -1; + if (color.is_shared()) for (int i = 0; i + float* _object3dtoCImg3d(const CImgList& opacities, float *ptrd) const { + cimglist_for(opacities,o) { + const CImg& opacity = opacities[o]; + const to *ptro = opacity._data; + if (opacity.size()==1) *(ptrd++) = (float)*ptro; + else { + *(ptrd++) = -128.f; + int shared_ind = -1; + if (opacity.is_shared()) for (int i = 0; i + float* _object3dtoCImg3d(const CImg& opacities, float *ptrd) const { + const to *ptro = opacities._data; + cimg_foroff(opacities,o) *(ptrd++) = (float)*(ptro++); + return ptrd; + } + + template + unsigned int _size_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const CImgList& opacities) const { + unsigned int siz = 8U + 3*_width; + cimglist_for(primitives,p) siz+=primitives[p].size() + 1; + for (int c = std::min(primitives.width(),colors.width()) - 1; c>=0; --c) { + if (colors[c].is_shared()) siz+=4; + else { const unsigned int csiz = colors[c].size(); siz+=(csiz!=3)?4 + csiz:3; } + } + if (colors._width + unsigned int _size_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const CImg& opacities) const { + unsigned int siz = 8U + 3*_width; + cimglist_for(primitives,p) siz+=primitives[p].size() + 1; + for (int c = std::min(primitives.width(),colors.width()) - 1; c>=0; --c) { + const unsigned int csiz = colors[c].size(); siz+=(csiz!=3)?4 + csiz:3; + } + if (colors._width + CImg get_object3dtoCImg3d(const CImgList& primitives, + const CImgList& colors, + const bool full_check=true) const { + CImgList opacities; + return get_object3dtoCImg3d(primitives,colors,opacities,full_check); + } + + //! Convert 3D object into a CImg3d representation \overloading. + template + CImg get_object3dtoCImg3d(const CImgList& primitives, + const bool full_check=true) const { + CImgList colors, opacities; + return get_object3dtoCImg3d(primitives,colors,opacities,full_check); + } + + //! Convert 3D object into a CImg3d representation \overloading. + CImg get_object3dtoCImg3d(const bool full_check=true) const { + CImgList opacities, colors; + CImgList primitives(width(),1,1,1,1); + cimglist_for(primitives,p) primitives(p,0) = p; + return get_object3dtoCImg3d(primitives,colors,opacities,full_check); + } + + //! Convert CImg3d representation into a 3D object. + /** + \param[out] primitives Primitives data of the 3D object. + \param[out] colors Colors data of the 3D object. + \param[out] opacities Opacities data of the 3D object. + \param full_check Tells if full checking of the 3D object must be performed. + **/ + template + CImg& CImg3dtoobject3d(CImgList& primitives, + CImgList& colors, + CImgList& opacities, + const bool full_check=true) { + return get_CImg3dtoobject3d(primitives,colors,opacities,full_check).move_to(*this); + } + + //! Convert CImg3d representation into a 3D object \newinstance. + template + CImg get_CImg3dtoobject3d(CImgList& primitives, + CImgList& colors, + CImgList& opacities, + const bool full_check=true) const { + CImg error_message(1024); + if (!is_CImg3d(full_check,error_message)) + throw CImgInstanceException(_cimg_instance + "CImg3dtoobject3d(): image instance is not a CImg3d (%s).", + cimg_instance,error_message.data()); + const T *ptrs = _data + 6; + const unsigned int + nb_points = cimg::float2uint((float)*(ptrs++)), + nb_primitives = cimg::float2uint((float)*(ptrs++)); + const CImg points = CImg(ptrs,3,nb_points,1,1,true).get_transpose(); + ptrs+=3*nb_points; + primitives.assign(nb_primitives); + cimglist_for(primitives,p) { + const unsigned int nb_inds = (unsigned int)*(ptrs++); + primitives[p].assign(1,nb_inds); + tp *ptrp = primitives[p]._data; + for (unsigned int i = 0; i::max(),(T)cimg::type::max()); \ + const float _sc_nopacity = cimg::abs((float)opacity), _sc_copacity = 1 - std::max((float)opacity,0.f); \ + const ulongT _sc_whd = (ulongT)_width*_height*_depth; \ + cimg::unused(_sc_maxval); + +#define cimg_draw_scanline(x0,x1,y,color,opacity,brightness) \ + _draw_scanline(x0,x1,y,color,opacity,brightness,_sc_nopacity,_sc_copacity,_sc_whd,_sc_maxval) + + // [internal] The following _draw_scanline() routines are *non user-friendly functions*, + // used only for internal purpose. + // Pre-requisites: x0<=x1, y-coordinate is valid, col is valid. + template + CImg& _draw_scanline(const int x0, const int x1, const int y, + const tc *const color, const float opacity, + const float brightness, + const float nopacity, const float copacity, const ulongT whd, const T _sc_maxval) { + const int nx0 = x0>0?x0:0, nx1 = x1=0) { + const tc *col = color; + const ulongT off = whd - dx - 1; + T *ptrd = data(nx0,y); + if (opacity>=1) { // ** Opaque drawing ** + if (brightness==1) { // Brightness==1 + if (sizeof(T)!=1) cimg_forC(*this,c) { + const T val = (T)*(col++); + for (int x = dx; x>=0; --x) *(ptrd++) = val; + ptrd+=off; + } else cimg_forC(*this,c) { + const T val = (T)*(col++); + std::memset(ptrd,(int)val,dx + 1); + ptrd+=whd; + } + } else if (brightness<1) { // Brightness<1 + if (sizeof(T)!=1) cimg_forC(*this,c) { + const T val = (T)(*(col++)*brightness); + for (int x = dx; x>=0; --x) *(ptrd++) = val; + ptrd+=off; + } else cimg_forC(*this,c) { + const T val = (T)(*(col++)*brightness); + std::memset(ptrd,(int)val,dx + 1); + ptrd+=whd; + } + } else { // Brightness>1 + if (sizeof(T)!=1) cimg_forC(*this,c) { + const T val = (T)((2-brightness)**(col++) + (brightness - 1)*_sc_maxval); + for (int x = dx; x>=0; --x) *(ptrd++) = val; + ptrd+=off; + } else cimg_forC(*this,c) { + const T val = (T)((2-brightness)**(col++) + (brightness - 1)*_sc_maxval); + std::memset(ptrd,(int)val,dx + 1); + ptrd+=whd; + } + } + } else { // ** Transparent drawing ** + if (brightness==1) { // Brightness==1 + cimg_forC(*this,c) { + const Tfloat val = *(col++)*nopacity; + for (int x = dx; x>=0; --x) { *ptrd = (T)(val + *ptrd*copacity); ++ptrd; } + ptrd+=off; + } + } else if (brightness<=1) { // Brightness<1 + cimg_forC(*this,c) { + const Tfloat val = *(col++)*brightness*nopacity; + for (int x = dx; x>=0; --x) { *ptrd = (T)(val + *ptrd*copacity); ++ptrd; } + ptrd+=off; + } + } else { // Brightness>1 + cimg_forC(*this,c) { + const Tfloat val = ((2-brightness)**(col++) + (brightness - 1)*_sc_maxval)*nopacity; + for (int x = dx; x>=0; --x) { *ptrd = (T)(val + *ptrd*copacity); ++ptrd; } + ptrd+=off; + } + } + } + } + return *this; + } + + //! Draw a 3D point. + /** + \param x0 X-coordinate of the point. + \param y0 Y-coordinate of the point. + \param z0 Z-coordinate of the point. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \note + - To set pixel values without clipping needs, you should use the faster CImg::operator()() function. + \par Example: + \code + CImg img(100,100,1,3,0); + const unsigned char color[] = { 255,128,64 }; + img.draw_point(50,50,color); + \endcode + **/ + template + CImg& draw_point(const int x0, const int y0, const int z0, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_point(): Specified color is (null).", + cimg_instance); + if (x0>=0 && y0>=0 && z0>=0 && x0=1) cimg_forC(*this,c) { *ptrd = (T)*(col++); ptrd+=whd; } + else cimg_forC(*this,c) { *ptrd = (T)(*(col++)*nopacity + *ptrd*copacity); ptrd+=whd; } + } + return *this; + } + + //! Draw a 2D point \simplification. + template + CImg& draw_point(const int x0, const int y0, + const tc *const color, const float opacity=1) { + return draw_point(x0,y0,0,color,opacity); + } + + // Draw a points cloud. + /** + \param points Image of vertices coordinates. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_point(const CImg& points, + const tc *const color, const float opacity=1) { + if (is_empty() || !points) return *this; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_point(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + case 2 : { + cimg_forX(points,i) draw_point((int)points(i,0),(int)points(i,1),color,opacity); + } break; + default : { + cimg_forX(points,i) draw_point((int)points(i,0),(int)points(i,1),(int)points(i,2),color,opacity); + } + } + return *this; + } + + //! Draw a 2D line. + /** + \param x0 X-coordinate of the starting line point. + \param y0 Y-coordinate of the starting line point. + \param x1 X-coordinate of the ending line point. + \param y1 Y-coordinate of the ending line point. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if a reinitialization of the hash state must be done. + \note + - Line routine uses Bresenham's algorithm. + - Set \p init_hatch = false to draw consecutive hatched segments without breaking the line pattern. + \par Example: + \code + CImg img(100,100,1,3,0); + const unsigned char color[] = { 255,128,64 }; + img.draw_line(40,40,80,70,color); + \endcode + **/ + template + CImg& draw_line(int x0, int y0, + int x1, int y1, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !opacity || !pattern || + std::min(y0,y1)>=height() || std::max(y0,y1)<0 || + std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1); + dx01*=-1; dy01*=-1; + } + + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + const int + step = y0<=y1?1:-1,hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + if (x>=0 && x<=w1 && pattern&hatch) { + T *const ptrd = is_horizontal?data(y,x):data(x,y); + cimg_forC(*this,c) { + const T val = color[c]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a 2D line, with z-buffering. + /** + \param zbuffer Zbuffer image. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if a reinitialization of the hash state must be done. + **/ + template + CImg& draw_line(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || z0<=0 || z1<=0 || !opacity || !pattern) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_line(): Specified color is (null).", + cimg_instance); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_line(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + float iz0 = 1/z0, iz1 = 1/z1; + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + float diz01 = iz1 - iz0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,iz0,iz1); + dx01*=-1; dy01*=-1; diz01*=-1; + } + + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + const float iz = iz0 + diz01*yy0/dy01; + tz *const ptrz = is_horizontal?zbuffer.data(y,x):zbuffer.data(x,y); + + if (x>=0 && x<=w1 && pattern&hatch && iz>=*ptrz) { + *ptrz = (tz)iz; + T *const ptrd = is_horizontal?data(y,x):data(x,y); + cimg_forC(*this,c) { + const T val = color[c]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a textured 2D line. + /** + \param x0 X-coordinate of the starting line point. + \param y0 Y-coordinate of the starting line point. + \param x1 X-coordinate of the ending line point. + \param y1 Y-coordinate of the ending line point. + \param texture Texture image defining the pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if the hash variable must be reinitialized. + \note + - Line routine uses the well known Bresenham's algorithm. + \par Example: + \code + CImg img(100,100,1,3,0), texture("texture256x256.ppm"); + const unsigned char color[] = { 255,128,64 }; + img.draw_line(40,40,80,70,texture,0,0,255,255); + \endcode + **/ + template + CImg& draw_line(int x0, int y0, + int x1, int y1, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + + if (is_empty() || !opacity || !pattern) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) return draw_line(x0,y0,x1,y1,+texture,tx0,ty0,tx1,ty1,opacity,pattern,init_hatch); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + int + dtx01 = tx1 - tx0, dty01 = ty1 - ty0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1); + dx01*=-1; dy01*=-1; dtx01*=-1; dty01*=-1; + } + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy01ty = dy01*cimg::sign(dty01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01, + tx = tx0 + (dtx01*yy0 + hdy01tx)/dy01, + ty = ty0 + (dty01*yy0 + hdy01ty)/dy01; + if (x>=0 && x<=w1 && pattern&hatch) { + T *const ptrd = is_horizontal?data(y,x):data(x,y); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const T val = color[c*twhd]; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a textured 2D line, with perspective correction. + /** + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param texture Texture image defining the pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if the hash variable must be reinitialized. + **/ + template + CImg& draw_line(int x0, int y0, const float z0, + int x1, int y1, const float z1, + const CImg& texture, + const int tx0, const int ty0, + const int tx1, const int ty1, + const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || z0<=0 || z1<=0 || !opacity || !pattern) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_line(x0,y0,z0,x1,y1,z1,+texture,tx0,ty0,tx1,ty1,opacity,pattern,init_hatch); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + float iz0 = 1/z0, iz1 = 1/z1; + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + float + diz01 = iz1 - iz0, + txz0 = tx0*iz0, txz1 = tx1*iz1, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, + dtxz01 = txz1 - txz0, dtyz01 = tyz1 - tyz0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,iz0,iz1,txz0,txz1,tyz0,tyz1); + dx01*=-1; dy01*=-1; diz01*=-1; dtxz01*=-1; dtyz01*=-1; + } + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + const float + iz = iz0 + diz01*yy0/dy01, + txz = txz0 + dtxz01*yy0/dy01, + tyz = tyz0 + dtyz01*yy0/dy01; + if (x>=0 && x<=w1 && pattern&hatch) { + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + T *const ptrd = is_horizontal?data(y,x):data(x,y); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const T val = color[c*twhd]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a textured 2D line, with perspective correction and z-buffering. + /** + \param zbuffer Z-buffer image. + \param x0 X-coordinate of the starting point. + \param y0 Y-coordinate of the starting point. + \param z0 Z-coordinate of the starting point + \param x1 X-coordinate of the ending point. + \param y1 Y-coordinate of the ending point. + \param z1 Z-coordinate of the ending point. + \param texture Texture image defining the pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch Tells if the hash variable must be reinitialized. + **/ + template + CImg& draw_line(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + const CImg& texture, + const int tx0, const int ty0, + const int tx1, const int ty1, + const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || z0<=0 || z1<=0 || !opacity || !pattern) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_line(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_line(zbuffer,x0,y0,z0,x1,y1,z1,+texture,tx0,ty0,tx1,ty1,opacity,pattern,init_hatch); + + if (std::min(y0,y1)>=height() || std::max(y0,y1)<0 || std::min(x0,x1)>=width() || std::max(x0,x1)<0) return *this; + + float iz0 = 1/z0, iz1 = 1/z1; + int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dy01 = y1 - y0; + float + diz01 = iz1 - iz0, + txz0 = tx0*iz0, txz1 = tx1*iz1, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, + dtxz01 = txz1 - txz0, dtyz01 = tyz1 - tyz0; + + const bool is_horizontal = cimg::abs(dx01)>cimg::abs(dy01); + if (is_horizontal) cimg::swap(x0,y0,x1,y1,w1,h1,dx01,dy01); + if (pattern==~0U && y0>y1) { + cimg::swap(x0,x1,y0,y1,iz0,iz1,txz0,txz1,tyz0,tyz1); + dx01*=-1; dy01*=-1; diz01*=-1; dtxz01*=-1; dtyz01*=-1; + } + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + static unsigned int hatch = ~0U - (~0U>>1); + if (init_hatch) hatch = ~0U - (~0U>>1); + cimg_init_scanline(opacity); + + const int + step = y0<=y1?1:-1, hdy01 = dy01*cimg::sign(dx01)/2, + cy0 = cimg::cut(y0,0,h1), cy1 = cimg::cut(y1,0,h1) + step; + dy01+=dy01?0:1; + + for (int y = cy0; y!=cy1; y+=step) { + const int + yy0 = y - y0, + x = x0 + (dx01*yy0 + hdy01)/dy01; + const float + iz = iz0 + diz01*yy0/dy01, + txz = txz0 + dtxz01*yy0/dy01, + tyz = tyz0 + dtyz01*yy0/dy01; + tz *const ptrz = is_horizontal?zbuffer.data(y,x):zbuffer.data(x,y); + + if (x>=0 && x<=w1 && pattern&hatch && iz>=*ptrz) { + *ptrz = (tz)iz; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + T *const ptrd = is_horizontal?data(y,x):data(x,y); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const T val = color[c*twhd]; + ptrd[c*_sc_whd] = opacity>=1?val:(T)(val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + if (!(hatch>>=1)) hatch = ~0U - (~0U>>1); + } + return *this; + } + + //! Draw a set of consecutive lines. + /** + \param points Coordinates of vertices, stored as a list of vectors. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch If set to true, init hatch motif. + \note + - This function uses several call to the single CImg::draw_line() procedure, + depending on the vectors size in \p points. + **/ + template + CImg& draw_line(const CImg& points, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !points || points._width<2) return *this; + bool ninit_hatch = init_hatch; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_line(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + + default : { + const int x0 = (int)points(0,0), y0 = (int)points(0,1); + int ox = x0, oy = y0; + for (unsigned int i = 1; i + CImg& draw_arrow(const int x0, const int y0, + const int x1, const int y1, + const tc *const color, const float opacity=1, + const float angle=30, const float length=-10, + const unsigned int pattern=~0U) { + if (is_empty()) return *this; + const float u = (float)(x0 - x1), v = (float)(y0 - y1), sq = u*u + v*v, + deg = (float)(angle*cimg::PI/180), ang = (sq>0)?(float)std::atan2(v,u):0.f, + l = (length>=0)?length:-length*(float)std::sqrt(sq)/100; + if (sq>0) { + const float + cl = (float)std::cos(ang - deg), sl = (float)std::sin(ang - deg), + cr = (float)std::cos(ang + deg), sr = (float)std::sin(ang + deg); + const int + xl = x1 + (int)(l*cl), yl = y1 + (int)(l*sl), + xr = x1 + (int)(l*cr), yr = y1 + (int)(l*sr), + xc = x1 + (int)((l + 1)*(cl + cr))/2, yc = y1 + (int)((l + 1)*(sl + sr))/2; + draw_line(x0,y0,xc,yc,color,opacity,pattern).draw_triangle(x1,y1,xl,yl,xr,yr,color,opacity); + } else draw_point(x0,y0,color,opacity); + return *this; + } + + //! Draw a 2D spline. + /** + \param x0 X-coordinate of the starting curve point + \param y0 Y-coordinate of the starting curve point + \param u0 X-coordinate of the starting velocity + \param v0 Y-coordinate of the starting velocity + \param x1 X-coordinate of the ending curve point + \param y1 Y-coordinate of the ending curve point + \param u1 X-coordinate of the ending velocity + \param v1 Y-coordinate of the ending velocity + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param precision Curve drawing precision. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch If \c true, init hatch motif. + \note + - The curve is a 2D cubic Bezier spline, from the set of specified starting/ending points + and corresponding velocity vectors. + - The spline is drawn as a sequence of connected segments. The \p precision parameter sets the + average number of pixels in each drawn segment. + - A cubic Bezier curve is sometimes defined by a set of 4 points { (\p x0,\p y0), (\p xa,\p ya), + (\p xb,\p yb), (\p x1,\p y1) } where (\p x0,\p y0) is the starting point, (\p x1,\p y1) is the ending point + and (\p xa,\p ya), (\p xb,\p yb) are two + \e control points. + The starting and ending velocities (\p u0,\p v0) and (\p u1,\p v1) can be deduced easily from + the control points as + \p u0 = (\p xa - \p x0), \p v0 = (\p ya - \p y0), \p u1 = (\p x1 - \p xb) and \p v1 = (\p y1 - \p yb). + \par Example: + \code + CImg img(100,100,1,3,0); + const unsigned char color[] = { 255,255,255 }; + img.draw_spline(30,30,0,100,90,40,0,-100,color); + \endcode + **/ + template + CImg& draw_spline(const int x0, const int y0, const float u0, const float v0, + const int x1, const int y1, const float u1, const float v1, + const tc *const color, const float opacity=1, + const float precision=0.25, const unsigned int pattern=~0U, + const bool init_hatch=true) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_spline(): Specified color is (null).", + cimg_instance); + if (x0==x1 && y0==y1) return draw_point(x0,y0,color,opacity); + bool ninit_hatch = init_hatch; + const float + ax = u0 + u1 + 2*(x0 - x1), + bx = 3*(x1 - x0) - 2*u0 - u1, + ay = v0 + v1 + 2*(y0 - y1), + by = 3*(y1 - y0) - 2*v0 - v1, + _precision = 1/(cimg::hypot((float)x0 - x1,(float)y0 - y1)*(precision>0?precision:1)); + int ox = x0, oy = y0; + for (float t = 0; t<1; t+=_precision) { + const float t2 = t*t, t3 = t2*t; + const int + nx = (int)(ax*t3 + bx*t2 + u0*t + x0), + ny = (int)(ay*t3 + by*t2 + v0*t + y0); + draw_line(ox,oy,nx,ny,color,opacity,pattern,ninit_hatch); + ninit_hatch = false; + ox = nx; oy = ny; + } + return draw_line(ox,oy,x1,y1,color,opacity,pattern,false); + } + + //! Draw a textured 2D spline. + /** + \param x0 X-coordinate of the starting curve point + \param y0 Y-coordinate of the starting curve point + \param u0 X-coordinate of the starting velocity + \param v0 Y-coordinate of the starting velocity + \param x1 X-coordinate of the ending curve point + \param y1 Y-coordinate of the ending curve point + \param u1 X-coordinate of the ending velocity + \param v1 Y-coordinate of the ending velocity + \param texture Texture image defining line pixel colors. + \param tx0 X-coordinate of the starting texture point. + \param ty0 Y-coordinate of the starting texture point. + \param tx1 X-coordinate of the ending texture point. + \param ty1 Y-coordinate of the ending texture point. + \param precision Curve drawing precision. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch if \c true, reinit hatch motif. + **/ + template + CImg& draw_spline(const int x0, const int y0, const float u0, const float v0, + const int x1, const int y1, const float u1, const float v1, + const CImg& texture, + const int tx0, const int ty0, const int tx1, const int ty1, + const float opacity=1, + const float precision=4, const unsigned int pattern=~0U, + const bool init_hatch=true) { + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_spline(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_empty()) return *this; + if (is_overlapped(texture)) + return draw_spline(x0,y0,u0,v0,x1,y1,u1,v1,+texture,tx0,ty0,tx1,ty1,precision,opacity,pattern,init_hatch); + if (x0==x1 && y0==y1) + return draw_point(x0,y0,texture.get_vector_at(x0<=0?0:x0>=texture.width()?texture.width() - 1:x0, + y0<=0?0:y0>=texture.height()?texture.height() - 1:y0).data(), + opacity); + bool ninit_hatch = init_hatch; + const float + ax = u0 + u1 + 2*(x0 - x1), + bx = 3*(x1 - x0) - 2*u0 - u1, + ay = v0 + v1 + 2*(y0 - y1), + by = 3*(y1 - y0) - 2*v0 - v1, + _precision = 1/(cimg::hypot((float)x0 - x1,(float)y0 - y1)*(precision>0?precision:1)); + int ox = x0, oy = y0, otx = tx0, oty = ty0; + for (float t1 = 0; t1<1; t1+=_precision) { + const float t2 = t1*t1, t3 = t2*t1; + const int + nx = (int)(ax*t3 + bx*t2 + u0*t1 + x0), + ny = (int)(ay*t3 + by*t2 + v0*t1 + y0), + ntx = tx0 + (int)((tx1 - tx0)*t1), + nty = ty0 + (int)((ty1 - ty0)*t1); + draw_line(ox,oy,nx,ny,texture,otx,oty,ntx,nty,opacity,pattern,ninit_hatch); + ninit_hatch = false; + ox = nx; oy = ny; otx = ntx; oty = nty; + } + return draw_line(ox,oy,x1,y1,texture,otx,oty,tx1,ty1,opacity,pattern,false); + } + + //! Draw a set of consecutive splines. + /** + \param points Vertices data. + \param tangents Tangents data. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param is_closed_set Tells if the drawn spline set is closed. + \param precision Precision of the drawing. + \param pattern An integer whose bits describe the line pattern. + \param init_hatch If \c true, init hatch motif. + **/ + template + CImg& draw_spline(const CImg& points, const CImg& tangents, + const tc *const color, const float opacity=1, + const bool is_closed_set=false, const float precision=4, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !points || !tangents || points._width<2 || tangents._width<2) return *this; + bool ninit_hatch = init_hatch; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_spline(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + + default : { + const int x0 = (int)points(0,0), y0 = (int)points(0,1); + const float u0 = (float)tangents(0,0), v0 = (float)tangents(0,1); + int ox = x0, oy = y0; + float ou = u0, ov = v0; + for (unsigned int i = 1; i + CImg& draw_spline(const CImg& points, + const tc *const color, const float opacity=1, + const bool is_closed_set=false, const float precision=4, + const unsigned int pattern=~0U, const bool init_hatch=true) { + if (is_empty() || !points || points._width<2) return *this; + CImg tangents; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_spline(): Invalid specified point set (%u,%u,%u,%u,%p).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum,points._data); + case 2 : { + tangents.assign(points._width,points._height); + cimg_forX(points,p) { + const unsigned int + p0 = is_closed_set?(p + points.width() - 1)%points.width():(p?p - 1:0), + p1 = is_closed_set?(p + 1)%points.width():(p + 1 + CImg& _draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const tc *const color, const float opacity, + const float brightness) { + if (y0>y1) cimg::swap(x0,x1,y0,y1); + if (y0>y2) cimg::swap(x0,x2,y0,y2); + if (y1>y2) cimg::swap(x1,x2,y1,y2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM); + cimg_draw_scanline(xm,xM,y,color,opacity,cbs); + } + return *this; + } + + //! Draw a filled 2D triangle. + /** + \param x0 X-coordinate of the first vertex. + \param y0 Y-coordinate of the first vertex. + \param x1 X-coordinate of the second vertex. + \param y1 Y-coordinate of the second vertex. + \param x2 X-coordinate of the third vertex. + \param y2 Y-coordinate of the third vertex. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(const int x0, const int y0, + const int x1, const int y1, + const int x2, const int y2, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + _draw_triangle(x0,y0,x1,y1,x2,y2,color,opacity,1); + return *this; + } + + //! Draw a outlined 2D triangle. + /** + \param x0 X-coordinate of the first vertex. + \param y0 Y-coordinate of the first vertex. + \param x1 X-coordinate of the second vertex. + \param y1 Y-coordinate of the second vertex. + \param x2 X-coordinate of the third vertex. + \param y2 Y-coordinate of the third vertex. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the outline pattern. + **/ + template + CImg& draw_triangle(const int x0, const int y0, + const int x1, const int y1, + const int x2, const int y2, + const tc *const color, const float opacity, + const unsigned int pattern) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + draw_line(x0,y0,x1,y1,color,opacity,pattern,true). + draw_line(x1,y1,x2,y2,color,opacity,pattern,false). + draw_line(x2,y2,x0,y0,color,opacity,pattern,false); + return *this; + } + + //! Draw a filled 2D triangle, with z-buffering. + /** + \param zbuffer Z-buffer image. + \param x0 X-coordinate of the first vertex. + \param y0 Y-coordinate of the first vertex. + \param z0 Z-coordinate of the first vertex. + \param x1 X-coordinate of the second vertex. + \param y1 Y-coordinate of the second vertex. + \param z1 Z-coordinate of the second vertex. + \param x2 X-coordinate of the third vertex. + \param y2 Y-coordinate of the third vertex. + \param z2 Z-coordinate of the third vertex. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + \param brightness Brightness factor. + **/ + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const tc *const color, const float opacity=1, + const float brightness=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1; + + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c]*cbs:(2 - cbs)*color[c] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a Gouraud-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param bs0 Brightness factor of the first vertex (in [0,2]). + \param bs1 brightness factor of the second vertex (in [0,2]). + \param bs2 brightness factor of the third vertex (in [0,2]). + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const tc *const color, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c]*cbs:(2 - cbs)*color[c] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a Gouraud-shaded 2D triangle, with z-buffering \overloading. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const tc *const color, + float bs0, + float bs1, + float bs2, + float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c]*cbs:(2 - cbs)*color[c] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a color-interpolated 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param color1 Pointer to \c spectrum() consecutive values of type \c T, defining the color of the first vertex. + \param color2 Pointer to \c spectrum() consecutive values of type \c T, defining the color of the second vertex. + \param color3 Pointer to \c spectrum() consecutive values of type \c T, defining the color of the third vertex. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(const int x0, const int y0, + const int x1, const int y1, + const int x2, const int y2, + const tc1 *const color1, + const tc2 *const color2, + const tc3 *const color3, + const float opacity=1) { + const unsigned char one = 1; + cimg_forC(*this,c) + get_shared_channel(c).draw_triangle(x0,y0,x1,y1,x2,y2,&one,color1[c],color2[c],color3[c],opacity); + return *this; + } + + //! Draw a textured 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param texture Texture image used to fill the triangle. + \param tx0 X-coordinate of the first vertex in the texture image. + \param ty0 Y-coordinate of the first vertex in the texture image. + \param tx1 X-coordinate of the second vertex in the texture image. + \param ty1 Y-coordinate of the second vertex in the texture image. + \param tx2 X-coordinate of the third vertex in the texture image. + \param ty2 Y-coordinate of the third vertex in the texture image. + \param opacity Drawing opacity. + \param brightness Brightness factor of the drawing (in [0,2]). + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const float opacity=1, + const float brightness=1) { + if (is_empty()) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,x1,y1,x2,y2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,opacity,brightness); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,tx0,tx2,ty0,ty2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,tx1,ty1,tx2,ty2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dtx01 = tx1 - tx0, dtx02 = tx2 - tx0, dtx12 = tx2 - tx1, + dty01 = ty1 - ty0, dty02 = ty2 - ty0, dty12 = ty2 - ty1, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy02tx = dy02*cimg::sign(dtx02)/2, hdy12tx = dy12*cimg::sign(dtx12)/2, + hdy01ty = dy01*cimg::sign(dty01)/2, hdy02ty = dy02*cimg::sign(dty02)/2, hdy12ty = dy12*cimg::sign(dty12)/2; + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txm,txM,tym,tyM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dtxmM = txM - txm, dtymM = tyM - tym; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + tx = (txm*dxmM + dtxmM*xxm + hdxmM)/dxmM, + ty = (tym*dxmM + dtymM*xxm + hdxmM)/dxmM; + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c*twhd]*cbs:(2 - cbs)*color[c*twhd] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a 2D textured triangle, with perspective correction. + template + CImg& draw_triangle(int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const float opacity=1, + const float brightness=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,opacity,brightness); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float + iz = izm + dizmM*xxm/dxmM, + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c*twhd]*cbs:(2 - cbs)*color[c*twhd] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured 2D triangle, with perspective correction and z-buffering. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const float opacity=1, + const float brightness=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,opacity,brightness); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + const float cbs = cimg::cut(brightness,0,2); + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const Tfloat val = cbs<=1?color[c*twhd]*cbs:(2 - cbs)*color[c*twhd] + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a Phong-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param light Light image. + \param lx0 X-coordinate of the first vertex in the light image. + \param ly0 Y-coordinate of the first vertex in the light image. + \param lx1 X-coordinate of the second vertex in the light image. + \param ly1 Y-coordinate of the second vertex in the light image. + \param lx2 X-coordinate of the third vertex in the light image. + \param ly2 Y-coordinate of the third vertex in the light image. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const tc *const color, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dlx01 = lx1 - lx0, dlx02 = lx2 - lx0, dlx12 = lx2 - lx1, + dly01 = ly1 - ly0, dly02 = ly2 - ly0, dly12 = ly2 - ly1, + hdy01lx = dy01*cimg::sign(dlx01)/2, hdy02lx = dy02*cimg::sign(dlx02)/2, hdy12lx = dy12*cimg::sign(dlx12)/2, + hdy01ly = dy01*cimg::sign(dly01)/2, hdy02ly = dy02*cimg::sign(dly02)/2, hdy12ly = dy12*cimg::sign(dly12)/2; + + const ulongT lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,lxm,lxM,lym,lyM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dlxmM = lxM - lxm, dlymM = lyM - lym; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + lx = (lxm*dxmM + dlxmM*xxm + hdxmM)/dxmM, + ly = (lym*dxmM + dlymM*xxm + hdxmM)/dxmM; + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a Phong-shaded 2D triangle, with z-buffering. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const tc *const color, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Specified color is (null).", + cimg_instance); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (is_overlapped(light)) return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color, + +light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dlx01 = lx1 - lx0, dlx02 = lx2 - lx0, dlx12 = lx2 - lx1, + dly01 = ly1 - ly0, dly02 = ly2 - ly0, dly12 = ly2 - ly1, + hdy01lx = dy01*cimg::sign(dlx01)/2, hdy02lx = dy02*cimg::sign(dlx02)/2, hdy12lx = dy12*cimg::sign(dlx12)/2, + hdy01ly = dy01*cimg::sign(dly01)/2, hdy02ly = dy02*cimg::sign(dly02)/2, hdy12ly = dy12*cimg::sign(dly12)/2; + const float diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1; + + const ulongT lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,lxm,lxM,lym,lyM,izm,izM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dlxmM = lxM - lxm, dlymM = lyM - lym; + const float dizmM = izM - izm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const int + lx = (lxm*dxmM + dlxmM*xxm + hdxmM)/dxmM, + ly = (lym*dxmM + dlymM*xxm + hdxmM)/dxmM; + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const tc col = color[c]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a textured Gouraud-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param texture Texture image used to fill the triangle. + \param tx0 X-coordinate of the first vertex in the texture image. + \param ty0 Y-coordinate of the first vertex in the texture image. + \param tx1 X-coordinate of the second vertex in the texture image. + \param ty1 Y-coordinate of the second vertex in the texture image. + \param tx2 X-coordinate of the third vertex in the texture image. + \param ty2 Y-coordinate of the third vertex in the texture image. + \param bs0 Brightness factor of the first vertex. + \param bs1 Brightness factor of the second vertex. + \param bs2 Brightness factor of the third vertex. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty()) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,x1,y1,x2,y2,+texture,tx0,ty0,tx1,ty1,tx2,ty2, + bs0,bs1,bs2,opacity); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,tx0,tx2,ty0,ty2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,tx1,tx2,ty1,ty2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dtx01 = tx1 - tx0, dtx02 = tx2 - tx0, dtx12 = tx2 - tx1, + dty01 = ty1 - ty0, dty02 = ty2 - ty0, dty12 = ty2 - ty1, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy02tx = dy02*cimg::sign(dtx02)/2, hdy12tx = dy12*cimg::sign(dtx12)/2, + hdy01ty = dy01*cimg::sign(dty01)/2, hdy02ty = dy02*cimg::sign(dty02)/2, hdy12ty = dy12*cimg::sign(dty12)/2; + const float dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txm,txM,tym,tyM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dtxmM = txM - txm, dtymM = tyM - tym; + const float dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + tx = (txm*dxmM + dtxmM*xxm + hdxmM)/dxmM, + ty = (tym*dxmM + dtymM*xxm + hdxmM)/dxmM; + const float cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Gouraud-shaded 2D triangle, with perspective correction \overloading. + template + CImg& draw_triangle(int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2, + bs0,bs1,bs2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float + iz = izm + dizmM*xxm/dxmM, + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Gouraud-shaded 2D triangle, with perspective correction and z-buffering \overloading. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + float bs0, + float bs1, + float bs2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (is_overlapped(texture)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,bs0,bs1,bs2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,bs0,bs1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,bs0,bs2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,bs1,bs2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + dbs01 = bs1 - bs0, dbs02 = bs2 - bs0, dbs12 = bs2 - bs1; + + const ulongT twhd = (ulongT)texture._width*texture._height*texture._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txzm,txzM,tyzm,tyzM,izm,izM,bsm,bsM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float dizmM = izM - izm, dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, dbsmM = bsM - bsm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + cbs = cimg::cut(bsm + dbsmM*xxm/dxmM,0,2); + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz); + const tc *const color = &texture._atXY(tx,ty); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a textured Phong-shaded 2D triangle. + /** + \param x0 X-coordinate of the first vertex in the image instance. + \param y0 Y-coordinate of the first vertex in the image instance. + \param x1 X-coordinate of the second vertex in the image instance. + \param y1 Y-coordinate of the second vertex in the image instance. + \param x2 X-coordinate of the third vertex in the image instance. + \param y2 Y-coordinate of the third vertex in the image instance. + \param texture Texture image used to fill the triangle. + \param tx0 X-coordinate of the first vertex in the texture image. + \param ty0 Y-coordinate of the first vertex in the texture image. + \param tx1 X-coordinate of the second vertex in the texture image. + \param ty1 Y-coordinate of the second vertex in the texture image. + \param tx2 X-coordinate of the third vertex in the texture image. + \param ty2 Y-coordinate of the third vertex in the texture image. + \param light Light image. + \param lx0 X-coordinate of the first vertex in the light image. + \param ly0 Y-coordinate of the first vertex in the light image. + \param lx1 X-coordinate of the second vertex in the light image. + \param ly1 Y-coordinate of the second vertex in the light image. + \param lx2 X-coordinate of the third vertex in the light image. + \param ly2 Y-coordinate of the third vertex in the light image. + \param opacity Drawing opacity. + **/ + template + CImg& draw_triangle(int x0, int y0, + int x1, int y1, + int x2, int y2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty()) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,x1,y1,x2,y2,+texture,tx0,ty0,tx1,ty1,tx2,ty2,light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + if (is_overlapped(light)) + return draw_triangle(x0,y0,x1,y1,x2,y2,texture,tx0,ty0,tx1,ty1,tx2,ty2,+light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + if (y0>y1) cimg::swap(x0,x1,y0,y1,tx0,tx1,ty0,ty1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,tx0,tx2,ty0,ty2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,tx1,tx2,ty1,ty2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2, + dtx01 = tx1 - tx0, dtx02 = tx2 - tx0, dtx12 = tx2 - tx1, + dty01 = ty1 - ty0, dty02 = ty2 - ty0, dty12 = ty2 - ty1, + hdy01tx = dy01*cimg::sign(dtx01)/2, hdy02tx = dy02*cimg::sign(dtx02)/2, hdy12tx = dy12*cimg::sign(dtx12)/2, + hdy01ty = dy01*cimg::sign(dty01)/2, hdy02ty = dy02*cimg::sign(dty02)/2, hdy12ty = dy12*cimg::sign(dty12)/2, + dlx01 = lx1 - lx0, dlx02 = lx2 - lx0, dlx12 = lx2 - lx1, + dly01 = ly1 - ly0, dly02 = ly2 - ly0, dly12 = ly2 - ly1, + hdy01lx = dy01*cimg::sign(dlx01)/2, hdy02lx = dy02*cimg::sign(dlx02)/2, hdy12lx = dy12*cimg::sign(dlx12)/2, + hdy01ly = dy01*cimg::sign(dly01)/2, hdy02ly = dy02*cimg::sign(dly02)/2, hdy12ly = dy12*cimg::sign(dly12)/2; + + const ulongT + twhd = (ulongT)texture._width*texture._height*texture._depth, + lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,txm,txM,tym,tyM,lxm,lxM,lym,lyM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int + dxmM = std::max(1,xM - xm), hdxmM = dxmM/2, + dtxmM = txM - txm, dtymM = tyM - tym, + dlxmM = lxM - lxm, dlymM = lyM - lym; + + for (int x = cxm; x<=cxM; ++x) { + const int + xxm = x - xm, + tx = (txm*dxmM + dtxmM*xxm + hdxmM)/dxmM, + ty = (tym*dxmM + dtymM*xxm + hdxmM)/dxmM, + lx = (lxm*dxmM + dlxmM*xxm + hdxmM)/dxmM, + ly = (lym*dxmM + dlymM*xxm + hdxmM)/dxmM; + const tc *const color = &texture._atXY(tx,ty); + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Phong-shaded 2D triangle, with perspective correction. + template + CImg& draw_triangle(int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (is_overlapped(texture)) + return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,+texture,tx0,ty0,tx1,ty1,tx2,ty2, + light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + if (is_overlapped(light)) + return draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,texture,tx0,ty0,tx1,ty1,tx2,ty2, + +light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + lxz0 = lx0*iz0, lxz1 = lx1*iz1, lxz2 = lx2*iz2, + lyz0 = ly0*iz0, lyz1 = ly1*iz1, lyz2 = ly2*iz2, + dlxz01 = lxz1 - lxz0, dlxz02 = lxz2 - lxz0, dlxz12 = lxz2 - lxz1, + dlyz01 = lyz1 - lyz0, dlyz02 = lyz2 - lyz0, dlyz12 = lyz2 - lyz1; + + const ulongT + twhd = (ulongT)texture._width*texture._height*texture._depth, + lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM,txzm,txzM,tyzm,tyzM,lxzm,lxzM,lyzm,lyzM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float + dizmM = izM - izm, + dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, + dlxzmM = lxzM - lxzm, dlyzmM = lyzM - lyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float + iz = izm + dizmM*xxm/dxmM, + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + lxz = lxzm + dlxzmM*xxm/dxmM, + lyz = lyzm + dlyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz), + lx = (int)cimg::round(lxz/iz), + ly = (int)cimg::round(lyz/iz); + const tc *const color = &texture._atXY(tx,ty); + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + ++ptrd; + } + } + } + return *this; + } + + //! Draw a textured Phong-shaded 2D triangle, with perspective correction and z-buffering. + template + CImg& draw_triangle(CImg& zbuffer, + int x0, int y0, const float z0, + int x1, int y1, const float z1, + int x2, int y2, const float z2, + const CImg& texture, + int tx0, int ty0, + int tx1, int ty1, + int tx2, int ty2, + const CImg& light, + int lx0, int ly0, + int lx1, int ly1, + int lx2, int ly2, + const float opacity=1) { + if (is_empty() || z0<=0 || z1<=0 || z2<=0) return *this; + if (!is_sameXY(zbuffer)) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Instance and specified Z-buffer (%u,%u,%u,%u,%p) have " + "different dimensions.", + cimg_instance, + zbuffer._width,zbuffer._height,zbuffer._depth,zbuffer._spectrum,zbuffer._data); + if (texture._depth>1 || texture._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified texture (%u,%u,%u,%u,%p).", + cimg_instance, + texture._width,texture._height,texture._depth,texture._spectrum,texture._data); + if (light._depth>1 || light._spectrum<_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_triangle(): Invalid specified light texture (%u,%u,%u,%u,%p).", + cimg_instance,light._width,light._height,light._depth,light._spectrum,light._data); + if (is_overlapped(texture)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2, + +texture,tx0,ty0,tx1,ty1,tx2,ty2,light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + if (is_overlapped(light)) + return draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2, + texture,tx0,ty0,tx1,ty1,tx2,ty2,+light,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + + float iz0 = 1/z0, iz1 = 1/z1, iz2 = 1/z2; + if (y0>y1) cimg::swap(x0,x1,y0,y1,iz0,iz1,tx0,tx1,ty0,ty1,lx0,lx1,ly0,ly1); + if (y0>y2) cimg::swap(x0,x2,y0,y2,iz0,iz2,tx0,tx2,ty0,ty2,lx0,lx2,ly0,ly2); + if (y1>y2) cimg::swap(x1,x2,y1,y2,iz1,iz2,tx1,tx2,ty1,ty2,lx1,lx2,ly1,ly2); + if (y2<0 || y0>=height() || cimg::min(x0,x1,x2)>=width() || cimg::max(x0,x1,x2)<0 || !opacity) return *this; + + const int + w1 = width() - 1, h1 = height() - 1, + dx01 = x1 - x0, dx02 = x2 - x0, dx12 = x2 - x1, + dy01 = std::max(1,y1 - y0), dy02 = std::max(1,y2 - y0), dy12 = std::max(1,y2 - y1), + cy0 = cimg::cut(y0,0,h1), cy2 = cimg::cut(y2,0,h1), + hdy01 = dy01*cimg::sign(dx01)/2, hdy02 = dy02*cimg::sign(dx02)/2, hdy12 = dy12*cimg::sign(dx12)/2; + const float + diz01 = iz1 - iz0, diz02 = iz2 - iz0, diz12 = iz2 - iz1, + txz0 = tx0*iz0, txz1 = tx1*iz1, txz2 = tx2*iz2, + tyz0 = ty0*iz0, tyz1 = ty1*iz1, tyz2 = ty2*iz2, + dtxz01 = txz1 - txz0, dtxz02 = txz2 - txz0, dtxz12 = txz2 - txz1, + dtyz01 = tyz1 - tyz0, dtyz02 = tyz2 - tyz0, dtyz12 = tyz2 - tyz1, + lxz0 = lx0*iz0, lxz1 = lx1*iz1, lxz2 = lx2*iz2, + lyz0 = ly0*iz0, lyz1 = ly1*iz1, lyz2 = ly2*iz2, + dlxz01 = lxz1 - lxz0, dlxz02 = lxz2 - lxz0, dlxz12 = lxz2 - lxz1, + dlyz01 = lyz1 - lyz0, dlyz02 = lyz2 - lyz0, dlyz12 = lyz2 - lyz1; + + const ulongT + twhd = (ulongT)texture._width*texture._height*texture._depth, + lwhd = (ulongT)light._width*light._height*light._depth; + cimg_init_scanline(opacity); + + for (int y = cy0; y<=cy2; ++y) { + const int yy0 = y - y0, yy1 = y - y1; + int + xm = yxM) cimg::swap(xm,xM,izm,izM,txzm,txzM,tyzm,tyzM,lxzm,lxzM,lyzm,lyzM); + if (xM>=0 && xm<=w1) { + const int + cxm = cimg::cut(xm,0,w1), + cxM = cimg::cut(xM,0,w1); + T *ptrd = data(cxm,y); + tz *ptrz = zbuffer.data(cxm,y); + const int dxmM = std::max(1,xM - xm); + const float + dizmM = izM - izm, + dtxzmM = txzM - txzm, dtyzmM = tyzM - tyzm, + dlxzmM = lxzM - lxzm, dlyzmM = lyzM - lyzm; + + for (int x = cxm; x<=cxM; ++x) { + const int xxm = x - xm; + const float iz = izm + dizmM*xxm/dxmM; + if (iz>=*ptrz) { + *ptrz = (tz)iz; + const float + txz = txzm + dtxzmM*xxm/dxmM, + tyz = tyzm + dtyzmM*xxm/dxmM, + lxz = lxzm + dlxzmM*xxm/dxmM, + lyz = lyzm + dlyzmM*xxm/dxmM; + const int + tx = (int)cimg::round(txz/iz), + ty = (int)cimg::round(tyz/iz), + lx = (int)cimg::round(lxz/iz), + ly = (int)cimg::round(lyz/iz); + const tc *const color = &texture._atXY(tx,ty); + const tl *const lig = &light._atXY(lx,ly); + cimg_forC(*this,c) { + const tc col = color[c*twhd]; + const float cbs = cimg::cut((float)lig[c*lwhd],0,2); + const Tfloat val = cbs<=1?cbs*col:(2 - cbs)*col + (cbs - 1)*_sc_maxval; + ptrd[c*_sc_whd] = (T)(opacity>=1?val:val*_sc_nopacity + ptrd[c*_sc_whd]*_sc_copacity); + } + } + ++ptrd; ++ptrz; + } + } + } + return *this; + } + + //! Draw a filled 4D rectangle. + /** + \param x0 X-coordinate of the upper-left rectangle corner. + \param y0 Y-coordinate of the upper-left rectangle corner. + \param z0 Z-coordinate of the upper-left rectangle corner. + \param c0 C-coordinate of the upper-left rectangle corner. + \param x1 X-coordinate of the lower-right rectangle corner. + \param y1 Y-coordinate of the lower-right rectangle corner. + \param z1 Z-coordinate of the lower-right rectangle corner. + \param c1 C-coordinate of the lower-right rectangle corner. + \param val Scalar value used to fill the rectangle area. + \param opacity Drawing opacity. + **/ + CImg& draw_rectangle(const int x0, const int y0, const int z0, const int c0, + const int x1, const int y1, const int z1, const int c1, + const T val, const float opacity=1) { + if (is_empty()) return *this; + const int + nx0 = x0=width()?width() - 1 - nx1:0) + (nx0<0?nx0:0), + ly = (1 + ny1 - ny0) + (ny1>=height()?height() - 1 - ny1:0) + (ny0<0?ny0:0), + lz = (1 + nz1 - nz0) + (nz1>=depth()?depth() - 1 - nz1:0) + (nz0<0?nz0:0), + lc = (1 + nc1 - nc0) + (nc1>=spectrum()?spectrum() - 1 - nc1:0) + (nc0<0?nc0:0); + const ulongT + offX = (ulongT)_width - lx, + offY = (ulongT)_width*(_height - ly), + offZ = (ulongT)_width*_height*(_depth - lz); + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + T *ptrd = data(nx0<0?0:nx0,ny0<0?0:ny0,nz0<0?0:nz0,nc0<0?0:nc0); + if (lx>0 && ly>0 && lz>0 && lc>0) + for (int v = 0; v=1) { + if (sizeof(T)!=1) { for (int x = 0; x + CImg& draw_rectangle(const int x0, const int y0, const int z0, + const int x1, const int y1, const int z1, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_rectangle(): Specified color is (null).", + cimg_instance); + cimg_forC(*this,c) draw_rectangle(x0,y0,z0,c,x1,y1,z1,c,(T)color[c],opacity); + return *this; + } + + //! Draw a filled 2D rectangle. + /** + \param x0 X-coordinate of the upper-left rectangle corner. + \param y0 Y-coordinate of the upper-left rectangle corner. + \param x1 X-coordinate of the lower-right rectangle corner. + \param y1 Y-coordinate of the lower-right rectangle corner. + \param color Pointer to \c spectrum() consecutive values of type \c T, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_rectangle(const int x0, const int y0, + const int x1, const int y1, + const tc *const color, const float opacity=1) { + return draw_rectangle(x0,y0,0,x1,y1,_depth - 1,color,opacity); + } + + //! Draw a outlined 2D rectangle \overloading. + template + CImg& draw_rectangle(const int x0, const int y0, + const int x1, const int y1, + const tc *const color, const float opacity, + const unsigned int pattern) { + if (is_empty()) return *this; + if (y0==y1) return draw_line(x0,y0,x1,y0,color,opacity,pattern,true); + if (x0==x1) return draw_line(x0,y0,x0,y1,color,opacity,pattern,true); + const int + nx0 = x0 + CImg& draw_polygon(const CImg& points, + const tc *const color, const float opacity=1) { + if (is_empty() || !points) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Specified color is (null).", + cimg_instance); + if (points.height()!=2) + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Invalid specified point set (%u,%u,%u,%u).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum); + if (points._width==1) return draw_point(cimg::uiround(points(0,0)),cimg::uiround(points(0,1)),color,opacity); + if (points._width==2) return draw_line(cimg::uiround(points(0,0)),cimg::uiround(points(0,1)), + cimg::uiround(points(1,0)),cimg::uiround(points(1,1)),color,opacity); + if (points._width==3) return draw_triangle(cimg::uiround(points(0,0)),cimg::uiround(points(0,1)), + cimg::uiround(points(1,0)),cimg::uiround(points(1,1)), + cimg::uiround(points(2,0)),cimg::uiround(points(2,1)),color,opacity); + cimg_init_scanline(opacity); + int + xmin = 0, ymin = 0, + xmax = points.get_shared_row(0).max_min(xmin), + ymax = points.get_shared_row(1).max_min(ymin); + if (xmax<0 || xmin>=width() || ymax<0 || ymin>=height()) return *this; + if (ymin==ymax) return draw_line(xmin,ymin,xmax,ymax,color,opacity); + + ymin = std::max(0,ymin); + ymax = std::min(height() - 1,ymax); + CImg Xs(points._width,ymax - ymin + 1); + CImg count(Xs._height,1,1,1,0); + unsigned int n = 0, nn = 1; + bool go_on = true; + + while (go_on) { + unsigned int an = (nn + 1)%points._width; + const int + x0 = cimg::uiround(points(n,0)), + y0 = cimg::uiround(points(n,1)); + if (points(nn,1)==y0) while (points(an,1)==y0) { nn = an; (an+=1)%=points._width; } + const int + x1 = cimg::uiround(points(nn,0)), + y1 = cimg::uiround(points(nn,1)); + unsigned int tn = an; + while (points(tn,1)==y1) (tn+=1)%=points._width; + + if (y0!=y1) { + const int + y2 = cimg::uiround(points(tn,1)), + x01 = x1 - x0, y01 = y1 - y0, y12 = y2 - y1, + step = cimg::sign(y01), + tmax = std::max(1,cimg::abs(y01)), htmax = tmax*cimg::sign(x01)/2, + tend = tmax - (step==cimg::sign(y12)); + unsigned int y = (unsigned int)y0 - ymin; + for (int t = 0; t<=tend; ++t, y+=step) + if (yn; + n = nn; + nn = an; + } + + cimg_pragma_openmp(parallel for cimg_openmp_if(Xs._height>=(cimg_openmp_sizefactor)*512)) + cimg_forY(Xs,y) { + const CImg Xsy = Xs.get_shared_points(0,count[y] - 1,y).sort(); + int px = width(); + for (unsigned int k = 0; k + CImg& draw_polygon(const CImg& points, + const tc *const color, const float opacity, const unsigned int pattern) { + if (is_empty() || !points) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Specified color is (null).", + cimg_instance); + if (points._width==1) return draw_point((int)points(0,0),(int)points(0,1),color,opacity); + if (points._width==2) return draw_line((int)points(0,0),(int)points(0,1), + (int)points(1,0),(int)points(1,1),color,opacity,pattern); + bool ninit_hatch = true; + switch (points._height) { + case 0 : case 1 : + throw CImgArgumentException(_cimg_instance + "draw_polygon(): Invalid specified point set (%u,%u,%u,%u).", + cimg_instance, + points._width,points._height,points._depth,points._spectrum); + default : { + CImg npoints(points._width,2); + int x = npoints(0,0) = (int)points(0,0), y = npoints(0,1) = (int)points(0,1); + unsigned int nb_points = 1; + for (unsigned int p = 1; p + CImg& draw_ellipse(const int x0, const int y0, const float r1, const float r2, const float angle, + const tc *const color, const float opacity=1) { + return _draw_ellipse(x0,y0,r1,r2,angle,color,opacity,0U,true); + } + + //! Draw a filled 2D ellipse \overloading. + /** + \param x0 X-coordinate of the ellipse center. + \param y0 Y-coordinate of the ellipse center. + \param tensor Diffusion tensor describing the ellipse. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_ellipse(const int x0, const int y0, const CImg &tensor, + const tc *const color, const float opacity=1) { + CImgList eig = tensor.get_symmetric_eigen(); + const CImg &val = eig[0], &vec = eig[1]; + return draw_ellipse(x0,y0,std::sqrt(val(0)),std::sqrt(val(1)), + std::atan2(vec(0,1),vec(0,0))*180/cimg::PI, + color,opacity); + } + + //! Draw an outlined 2D ellipse. + /** + \param x0 X-coordinate of the ellipse center. + \param y0 Y-coordinate of the ellipse center. + \param r1 First radius of the ellipse. + \param r2 Second radius of the ellipse. + \param angle Angle of the first radius. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the outline pattern. + **/ + template + CImg& draw_ellipse(const int x0, const int y0, const float r1, const float r2, const float angle, + const tc *const color, const float opacity, const unsigned int pattern) { + if (pattern) _draw_ellipse(x0,y0,r1,r2,angle,color,opacity,pattern,false); + return *this; + } + + //! Draw an outlined 2D ellipse \overloading. + /** + \param x0 X-coordinate of the ellipse center. + \param y0 Y-coordinate of the ellipse center. + \param tensor Diffusion tensor describing the ellipse. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern An integer whose bits describe the outline pattern. + **/ + template + CImg& draw_ellipse(const int x0, const int y0, const CImg &tensor, + const tc *const color, const float opacity, + const unsigned int pattern) { + CImgList eig = tensor.get_symmetric_eigen(); + const CImg &val = eig[0], &vec = eig[1]; + return draw_ellipse(x0,y0,std::sqrt(val(0)),std::sqrt(val(1)), + std::atan2(vec(0,1),vec(0,0))*180/cimg::PI, + color,opacity,pattern); + } + + template + CImg& _draw_ellipse(const int x0, const int y0, const float radius1, const float radius2, const float angle, + const tc *const color, const float opacity, + const unsigned int pattern, const bool is_filled) { + if (is_empty() || (!is_filled && !pattern)) return *this; + const float radiusM = std::max(radius1,radius2); + if (radius1<0 || radius2<0 || x0 - radiusM>=width() || y0 + radiusM<0 || y0 - radiusM>=height()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_ellipse(): Specified color is (null).", + cimg_instance); + const int iradius1 = (int)cimg::round(radius1), iradius2 = (int)cimg::round(radius2); + if (!iradius1 && !iradius2) return draw_point(x0,y0,color,opacity); + if (iradius1==iradius2) { + if (is_filled) return draw_circle(x0,y0,iradius1,color,opacity); + else if (pattern==~0U) return draw_circle(x0,y0,iradius1,color,opacity,pattern); + } + const float ang = (float)(angle*cimg::PI/180); + + if (!is_filled) { // Outlined + const float ca = std::cos(ang), sa = std::sin(ang); + CImg points((unsigned int)cimg::round(6*radiusM),2); + cimg_forX(points,k) { + const float + _ang = (float)(2*cimg::PI*k/points._width), + X = (float)(radius1*std::cos(_ang)), + Y = (float)(radius2*std::sin(_ang)); + points(k,0) = (int)cimg::round(x0 + (X*ca - Y*sa)); + points(k,1) = (int)cimg::round(y0 + (X*sa + Y*ca)); + } + draw_polygon(points,color,opacity,pattern); + } else { // Filled + cimg_init_scanline(opacity); + const float + ca = std::cos(ang), + sa = -std::sin(ang), + ca2 = ca*ca, + sa2 = sa*sa, + casa = ca*sa, + i1 = 1/cimg::sqr(radius1), + i2 = 1/cimg::sqr(radius2), + t1 = i1*ca2 + i2*sa2, + t2 = (i2 - i1)*casa, + t3 = i2*ca2 + i1*sa2, + t12 = t1*2; + const int + _ymin = (int)std::floor(y0 - radiusM), + _ymax = (int)std::ceil(y0 + radiusM), + ymin = _ymin<0?0:_ymin, + ymax = _ymax>=height()?height() - 1:_ymax; + for (int y = ymin; y<=ymax; ++y) { + const float + Y = y - y0 + 0.5f, + B = 2*t2*Y, + C = t3*Y*Y - 1, + D = B*B - 4*t1*C; + if (D>=0) { + const float sD = std::sqrt(D); + const int + xmin = (int)(x0 + cimg::round((-B - sD)/t12)), + xmax = (int)(x0 + cimg::round((-B + sD)/t12)); + cimg_draw_scanline(xmin,xmax,y,color,opacity,1); + } + } + } + return *this; + } + + //! Draw a filled 2D circle. + /** + \param x0 X-coordinate of the circle center. + \param y0 Y-coordinate of the circle center. + \param radius Circle radius. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \note + - Circle version of the Bresenham's algorithm is used. + **/ + template + CImg& draw_circle(const int x0, const int y0, int radius, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (radius<0 || x0 - radius>=width() || y0 + radius<0 || y0 - radius>=height()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_circle(): Specified color is (null).", + cimg_instance); + if (!radius) return draw_point(x0,y0,color,opacity); + cimg_init_scanline(opacity); + if (y0>=0 && y0=0) { + const int x1 = x0 - x, x2 = x0 + x, y1 = y0 - y, y2 = y0 + y; + if (y1>=0 && y1=0 && y2=0 && y1=0 && y2 + CImg& draw_circle(const int x0, const int y0, int radius, + const tc *const color, const float opacity, + const unsigned int pattern) { + if (pattern!=~0U) return draw_ellipse(x0,y0,radius,radius,0,color,opacity,pattern); + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_circle(): Specified color is (null).", + cimg_instance); + if (radius<0 || x0 - radius>=width() || y0 + radius<0 || y0 - radius>=height()) return *this; + if (!radius) return draw_point(x0,y0,color,opacity); + + draw_point(x0 - radius,y0,color,opacity).draw_point(x0 + radius,y0,color,opacity). + draw_point(x0,y0 - radius,color,opacity).draw_point(x0,y0 + radius,color,opacity); + if (radius==1) return *this; + for (int f = 1 - radius, ddFx = 0, ddFy = -(radius<<1), x = 0, y = radius; x=0) { f+=(ddFy+=2); --y; } + ++x; ++(f+=(ddFx+=2)); + if (x!=y + 1) { + const int x1 = x0 - y, x2 = x0 + y, y1 = y0 - x, y2 = y0 + x, + x3 = x0 - x, x4 = x0 + x, y3 = y0 - y, y4 = y0 + y; + draw_point(x1,y1,color,opacity).draw_point(x1,y2,color,opacity). + draw_point(x2,y1,color,opacity).draw_point(x2,y2,color,opacity); + if (x!=y) + draw_point(x3,y3,color,opacity).draw_point(x4,y4,color,opacity). + draw_point(x4,y3,color,opacity).draw_point(x3,y4,color,opacity); + } + } + return *this; + } + + //! Draw an image. + /** + \param sprite Sprite image. + \param x0 X-coordinate of the sprite position. + \param y0 Y-coordinate of the sprite position. + \param z0 Z-coordinate of the sprite position. + \param c0 C-coordinate of the sprite position. + \param opacity Drawing opacity. + **/ + template + CImg& draw_image(const int x0, const int y0, const int z0, const int c0, + const CImg& sprite, const float opacity=1) { + if (is_empty() || !sprite) return *this; + if (is_overlapped(sprite)) return draw_image(x0,y0,z0,c0,+sprite,opacity); + if (x0==0 && y0==0 && z0==0 && c0==0 && is_sameXYZC(sprite) && opacity>=1 && !is_shared()) + return assign(sprite,false); + const bool bx = x0<0, by = y0<0, bz = z0<0, bc = c0<0; + const int + dx0 = bx?0:x0, dy0 = by?0:y0, dz0 = bz?0:z0, dc0 = bc?0:c0, + sx0 = dx0 - x0, sy0 = dy0 - y0, sz0 = dz0 - z0, sc0 = dc0 - c0, + lx = sprite.width() - sx0 - (x0 + sprite.width()>width()?x0 + sprite.width() - width():0), + ly = sprite.height() - sy0 - (y0 + sprite.height()>height()?y0 + sprite.height() - height():0), + lz = sprite.depth() - sz0 - (z0 + sprite.depth()>depth()?z0 + sprite.depth() - depth():0), + lc = sprite.spectrum() - sc0 - (c0 + sprite.spectrum()>spectrum()?c0 + sprite.spectrum() - spectrum():0); + + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + if (lx>0 && ly>0 && lz>0 && lc>0) { + for (int c = 0; c=1) for (int x = 0; x& draw_image(const int x0, const int y0, const int z0, const int c0, + const CImg& sprite, const float opacity=1) { + if (is_empty() || !sprite) return *this; + if (is_overlapped(sprite)) return draw_image(x0,y0,z0,c0,+sprite,opacity); + if (x0==0 && y0==0 && z0==0 && c0==0 && is_sameXYZC(sprite) && opacity>=1 && !is_shared()) + return assign(sprite,false); + const bool bx = x0<0, by = y0<0, bz = z0<0, bc = c0<0; + const int + dx0 = bx?0:x0, dy0 = by?0:y0, dz0 = bz?0:z0, dc0 = bc?0:c0, + sx0 = dx0 - x0, sy0 = dy0 - y0, sz0 = dz0 - z0, sc0 = dc0 - c0, + lx = sprite.width() - sx0 - (x0 + sprite.width()>width()?x0 + sprite.width() - width():0), + ly = sprite.height() - sy0 - (y0 + sprite.height()>height()?y0 + sprite.height() - height():0), + lz = sprite.depth() - sz0 - (z0 + sprite.depth()>depth()?z0 + sprite.depth() - depth():0), + lc = sprite.spectrum() - sc0 - (c0 + sprite.spectrum()>spectrum()?c0 + sprite.spectrum() - spectrum():0); + const ulongT slx = lx*sizeof(T); + + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + if (lx>0 && ly>0 && lz>0 && lc>0) { + for (int c = 0; c=1) std::memcpy(ptrd,ptrs,slx); + else for (int x = 0; x + CImg& draw_image(const int x0, const int y0, const int z0, + const CImg& sprite, const float opacity=1) { + return draw_image(x0,y0,z0,0,sprite,opacity); + } + + //! Draw an image \overloading. + template + CImg& draw_image(const int x0, const int y0, + const CImg& sprite, const float opacity=1) { + return draw_image(x0,y0,0,sprite,opacity); + } + + //! Draw an image \overloading. + template + CImg& draw_image(const int x0, + const CImg& sprite, const float opacity=1) { + return draw_image(x0,0,sprite,opacity); + } + + //! Draw an image \overloading. + template + CImg& draw_image(const CImg& sprite, const float opacity=1) { + return draw_image(0,sprite,opacity); + } + + //! Draw a masked image. + /** + \param sprite Sprite image. + \param mask Mask image. + \param x0 X-coordinate of the sprite position in the image instance. + \param y0 Y-coordinate of the sprite position in the image instance. + \param z0 Z-coordinate of the sprite position in the image instance. + \param c0 C-coordinate of the sprite position in the image instance. + \param mask_max_value Maximum pixel value of the mask image \c mask. + \param opacity Drawing opacity. + \note + - Pixel values of \c mask set the opacity of the corresponding pixels in \c sprite. + - Dimensions along x,y and z of \p sprite and \p mask must be the same. + **/ + template + CImg& draw_image(const int x0, const int y0, const int z0, const int c0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + if (is_empty() || !sprite || !mask) return *this; + if (is_overlapped(sprite)) return draw_image(x0,y0,z0,c0,+sprite,mask,opacity,mask_max_value); + if (is_overlapped(mask)) return draw_image(x0,y0,z0,c0,sprite,+mask,opacity,mask_max_value); + if (mask._width!=sprite._width || mask._height!=sprite._height || mask._depth!=sprite._depth) + throw CImgArgumentException(_cimg_instance + "draw_image(): Sprite (%u,%u,%u,%u,%p) and mask (%u,%u,%u,%u,%p) have " + "incompatible dimensions.", + cimg_instance, + sprite._width,sprite._height,sprite._depth,sprite._spectrum,sprite._data, + mask._width,mask._height,mask._depth,mask._spectrum,mask._data); + + const bool bx = x0<0, by = y0<0, bz = z0<0, bc = c0<0; + const int + dx0 = bx?0:x0, dy0 = by?0:y0, dz0 = bz?0:z0, dc0 = bc?0:c0, + sx0 = dx0 - x0, sy0 = dy0 - y0, sz0 = dz0 - z0, sc0 = dc0 - c0, + lx = sprite.width() - sx0 - (x0 + sprite.width()>width()?x0 + sprite.width() - width():0), + ly = sprite.height() - sy0 - (y0 + sprite.height()>height()?y0 + sprite.height() - height():0), + lz = sprite.depth() - sz0 - (z0 + sprite.depth()>depth()?z0 + sprite.depth() - depth():0), + lc = sprite.spectrum() - sc0 - (c0 + sprite.spectrum()>spectrum()?c0 + sprite.spectrum() - spectrum():0); + const ulongT msize = mask.size(); + + if (lx>0 && ly>0 && lz>0 && lc>0) { + for (int c = 0; c + CImg& draw_image(const int x0, const int y0, const int z0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(x0,y0,z0,0,sprite,mask,opacity,mask_max_value); + } + + //! Draw a image \overloading. + template + CImg& draw_image(const int x0, const int y0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(x0,y0,0,sprite,mask,opacity,mask_max_value); + } + + //! Draw a image \overloading. + template + CImg& draw_image(const int x0, + const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(x0,0,sprite,mask,opacity,mask_max_value); + } + + //! Draw an image. + template + CImg& draw_image(const CImg& sprite, const CImg& mask, const float opacity=1, + const float mask_max_value=1) { + return draw_image(0,sprite,mask,opacity,mask_max_value); + } + + //! Draw a text string. + /** + \param x0 X-coordinate of the text in the image instance. + \param y0 Y-coordinate of the text in the image instance. + \param text Format of the text ('printf'-style format string). + \param foreground_color Pointer to \c spectrum() consecutive values, defining the foreground drawing color. + \param background_color Pointer to \c spectrum() consecutive values, defining the background drawing color. + \param opacity Drawing opacity. + \param font Font used for drawing text. + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc1 *const foreground_color, const tc2 *const background_color, + const float opacity, const CImgList& font, ...) { + if (!font) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return _draw_text(x0,y0,tmp,foreground_color,background_color,opacity,font,false); + } + + //! Draw a text string \overloading. + /** + \note A transparent background is used for the text. + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc *const foreground_color, const int, + const float opacity, const CImgList& font, ...) { + if (!font) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return _draw_text(x0,y0,tmp,foreground_color,(tc*)0,opacity,font,false); + } + + //! Draw a text string \overloading. + /** + \note A transparent foreground is used for the text. + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const int, const tc *const background_color, + const float opacity, const CImgList& font, ...) { + if (!font) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return _draw_text(x0,y0,tmp,(tc*)0,background_color,opacity,font,false); + } + + //! Draw a text string \overloading. + /** + \param x0 X-coordinate of the text in the image instance. + \param y0 Y-coordinate of the text in the image instance. + \param text Format of the text ('printf'-style format string). + \param foreground_color Array of spectrum() values of type \c T, + defining the foreground color (0 means 'transparent'). + \param background_color Array of spectrum() values of type \c T, + defining the background color (0 means 'transparent'). + \param opacity Drawing opacity. + \param font_height Height of the text font (exact match for 13,23,53,103, interpolated otherwise). + **/ + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc1 *const foreground_color, const tc2 *const background_color, + const float opacity=1, const unsigned int font_height=13, ...) { + if (!font_height) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font_height); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + const CImgList& font = CImgList::font(font_height,true); + _draw_text(x0,y0,tmp,foreground_color,background_color,opacity,font,true); + return *this; + } + + //! Draw a text string \overloading. + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const tc *const foreground_color, const int background_color=0, + const float opacity=1, const unsigned int font_height=13, ...) { + if (!font_height) return *this; + cimg::unused(background_color); + CImg tmp(2048); + std::va_list ap; va_start(ap,font_height); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return draw_text(x0,y0,"%s",foreground_color,(const tc*)0,opacity,font_height,tmp._data); + } + + //! Draw a text string \overloading. + template + CImg& draw_text(const int x0, const int y0, + const char *const text, + const int, const tc *const background_color, + const float opacity=1, const unsigned int font_height=13, ...) { + if (!font_height) return *this; + CImg tmp(2048); + std::va_list ap; va_start(ap,font_height); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + return draw_text(x0,y0,"%s",(tc*)0,background_color,opacity,font_height,tmp._data); + } + + template + CImg& _draw_text(const int x0, const int y0, + const char *const text, + const tc1 *const foreground_color, const tc2 *const background_color, + const float opacity, const CImgList& font, + const bool is_native_font) { + if (!text) return *this; + if (!font) + throw CImgArgumentException(_cimg_instance + "draw_text(): Empty specified font.", + cimg_instance); + + const unsigned int text_length = (unsigned int)std::strlen(text); + const int padding_x = font[0]._height<48?1:font[0]._height<128?(int)std::ceil(font[0]._height/51.0f + 0.745f):4; + unsigned char o_ch, ch = 0; + int x, y, w; + CImg left_paddings(text_length,1,1,1,0); + const CImg empty = CImg::empty(); + + if (is_empty() || is_native_font) { + // Pre-compute necessary size of the image as well as left paddings of each character. + x = y = w = 0; + o_ch = 0; + for (unsigned int i = 0; iw) w = x; x = 0; break; + case '\t' : x+=4*font[(int)' ']._width; break; + case ' ' : x+=font[(int)' ']._width; break; + default : if (ch'9')) || o_ch==';' || o_ch==':' || o_ch=='!') + left_padding = 4*padding_x; + else if (((o_ch=='i' || o_ch=='l' || o_ch=='I' || o_ch=='J' || o_ch=='M' || o_ch=='N') && + ((ch>='0' && ch<='9') || + (ch>='a' && ch<='z' && ch!='v' && ch!='x' && ch!='y') || + (ch>='B' && ch<='Z' && ch!='J' && ch!='T' && ch!='V' && ch!='X' && ch!='Y'))) || + o_ch=='.' || o_ch=='\'' || ch=='\'') + left_padding = padding_x; + else if ((o_ch<'0' || o_ch>'9') && ch!='-') { + const CImg &mask = ch + 256U' ' && o_ch>' ' && mask._height>13) { + const CImg &o_mask = o_ch + 256U13) { + const int w1 = mask.width()>0?o_mask.width() - 1:0, w2 = w1>1?w1 - 1:0, w3 = w2>1?w2 - 1:0; + left_padding = -10; + cimg_forY(mask,k) { + const int + lpad = o_mask(w1,k)>=8?0: + o_mask._width<=2 || o_mask(w2,k)>=8?-1: + o_mask._width<=3 || o_mask(w3,k)>=8?-2:-3, + rpad = mask(0,k)>=8?0: + mask._width<=2 || mask(1,k)>=8?-1: + mask._width<=3 || mask(2,k)>=8?-2:-3; + left_padding = std::max(left_padding,lpad + rpad); + } + } + } + } + left_paddings[i] = left_padding; + } + x+=left_padding + font[ch]._width + padding_x; + o_ch = ch; + } + } + } + if (x!=0 || ch=='\n') { if (x>w) w = x; y+=font[0]._height; } + if (is_empty()) assign(x0 + w,y0 + y,1,is_native_font?1:font[0]._spectrum,(T)0); + } + + // Draw font characters on image. + x = x0; y = y0; + for (unsigned int i = 0; i letter = font[ch]; + if (letter) { + const CImg &mask = ch + 256Uletter._spectrum) + letter.assign(letter.get_resize(-100,-100,1,_spectrum,0,2),false); + const unsigned int cmin = std::min(_spectrum,letter._spectrum); + if (foreground_color) + for (unsigned int c = 0; c& __draw_text(const char *const text, unsigned int &font_size, const int is_down, ...) { + CImg tmp(2048); + std::va_list ap; + va_start(ap,is_down); + cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap); + CImg a_label, a_labelmask; + const unsigned char a_labelcolor = 255; + unsigned int ofs = font_size, fs = ofs; + do { // Determine best font size + a_label.assign().draw_text(0,0,"%s",&a_labelcolor,0,1,fs,tmp._data); + if (a_label._width<7*_width/10 && a_label._height>_height/20 && a_label._height<_height/5) { + font_size = fs; break; + } else if ((a_label._width>7*_width/10 || a_label._height>_height/5) && fs>13 && ofs>=fs) { + ofs = fs; fs = std::max(13U,(unsigned int)cimg::round(fs/1.25f)); + } else if (a_label._width<3*_width/10 && a_label._height<_height/20 && fs<64 && ofs<=fs) { + ofs = fs; fs = std::min(64U,(unsigned int)cimg::round(fs*1.25f)); + } else { font_size = fs; break; } + } while (true); + a_label.normalize(0,255); + a_label+=(255 - a_label.get_dilate(3)).normalize(0,80); + a_label.resize(-100,-100,1,3,1); + return draw_image(0,is_down?height() - a_label.height():0,a_label,0.85f); + } + + //! Draw a 2D vector field. + /** + \param flow Image of 2D vectors used as input data. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param sampling Length (in pixels) between each arrow. + \param factor Length factor of each arrow (if <0, computed as a percentage of the maximum length). + \param is_arrow Tells if arrows must be drawn, instead of oriented segments. + \param pattern Used pattern to draw lines. + \note Clipping is supported. + **/ + template + CImg& draw_quiver(const CImg& flow, + const t2 *const color, const float opacity=1, + const unsigned int sampling=25, const float factor=-20, + const bool is_arrow=true, const unsigned int pattern=~0U) { + return draw_quiver(flow,CImg(color,_spectrum,1,1,1,true),opacity,sampling,factor,is_arrow,pattern); + } + + //! Draw a 2D vector field, using a field of colors. + /** + \param flow Image of 2D vectors used as input data. + \param color Image of spectrum()-D vectors corresponding to the color of each arrow. + \param opacity Opacity of the drawing. + \param sampling Length (in pixels) between each arrow. + \param factor Length factor of each arrow (if <0, computed as a percentage of the maximum length). + \param is_arrow Tells if arrows must be drawn, instead of oriented segments. + \param pattern Used pattern to draw lines. + \note Clipping is supported. + **/ + template + CImg& draw_quiver(const CImg& flow, + const CImg& color, const float opacity=1, + const unsigned int sampling=25, const float factor=-20, + const bool is_arrow=true, const unsigned int pattern=~0U) { + if (is_empty()) return *this; + if (!flow || flow._spectrum!=2) + throw CImgArgumentException(_cimg_instance + "draw_quiver(): Invalid dimensions of specified flow (%u,%u,%u,%u,%p).", + cimg_instance, + flow._width,flow._height,flow._depth,flow._spectrum,flow._data); + if (sampling<=0) + throw CImgArgumentException(_cimg_instance + "draw_quiver(): Invalid sampling value %g " + "(should be >0)", + cimg_instance, + sampling); + const bool colorfield = (color._width==flow._width && color._height==flow._height && + color._depth==1 && color._spectrum==_spectrum); + if (is_overlapped(flow)) return draw_quiver(+flow,color,opacity,sampling,factor,is_arrow,pattern); + float vmax,fact; + if (factor<=0) { + float m, M = (float)flow.get_norm(2).max_min(m); + vmax = (float)std::max(cimg::abs(m),cimg::abs(M)); + if (!vmax) vmax = 1; + fact = -factor; + } else { fact = factor; vmax = 1; } + + for (unsigned int y = sampling/2; y<_height; y+=sampling) + for (unsigned int x = sampling/2; x<_width; x+=sampling) { + const unsigned int X = x*flow._width/_width, Y = y*flow._height/_height; + float u = (float)flow(X,Y,0,0)*fact/vmax, v = (float)flow(X,Y,0,1)*fact/vmax; + if (is_arrow) { + const int xx = (int)(x + u), yy = (int)(y + v); + if (colorfield) draw_arrow(x,y,xx,yy,color.get_vector_at(X,Y)._data,opacity,45,sampling/5.f,pattern); + else draw_arrow(x,y,xx,yy,color._data,opacity,45,sampling/5.f,pattern); + } else { + if (colorfield) + draw_line((int)(x - 0.5*u),(int)(y - 0.5*v),(int)(x + 0.5*u),(int)(y + 0.5*v), + color.get_vector_at(X,Y)._data,opacity,pattern); + else draw_line((int)(x - 0.5*u),(int)(y - 0.5*v),(int)(x + 0.5*u),(int)(y + 0.5*v), + color._data,opacity,pattern); + } + } + return *this; + } + + //! Draw a labeled horizontal axis. + /** + \param values_x Values along the horizontal axis. + \param y Y-coordinate of the horizontal axis in the image instance. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern Drawing pattern. + \param font_height Height of the labels (exact match for 13,23,53,103, interpolated otherwise). + \param allow_zero Enable/disable the drawing of label '0' if found. + **/ + template + CImg& draw_axis(const CImg& values_x, const int y, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const unsigned int font_height=13, + const bool allow_zero=true, const float round_x=0) { + if (is_empty()) return *this; + const int yt = (y + 3 + font_height)<_height?y + 3:y - 2 - (int)font_height; + const int siz = (int)values_x.size() - 1; + CImg txt(32); + CImg a_label; + if (siz<=0) { // Degenerated case + draw_line(0,y,_width - 1,y,color,opacity,pattern); + if (!siz) { + cimg_snprintf(txt,txt._width,"%g",round_x?cimg::round((double)*values_x,round_x):(double)*values_x); + a_label.assign().draw_text(0,0,txt,color,(tc*)0,opacity,font_height); + const int + _xt = (width() - a_label.width())/2, + xt = _xt<3?3:_xt + a_label.width()>=width() - 2?width() - 3 - a_label.width():_xt; + draw_point(width()/2,y - 1,color,opacity).draw_point(width()/2,y + 1,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } else { // Regular case + if (values_x[0]=width() - 2?width() - 3 - a_label.width():_xt; + draw_point(xi,y - 1,color,opacity).draw_point(xi,y + 1,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } + return *this; + } + + //! Draw a labeled vertical axis. + /** + \param x X-coordinate of the vertical axis in the image instance. + \param values_y Values along the Y-axis. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern Drawing pattern. + \param font_height Height of the labels (exact match for 13,23,53,103, interpolated otherwise). + \param allow_zero Enable/disable the drawing of label '0' if found. + **/ + template + CImg& draw_axis(const int x, const CImg& values_y, + const tc *const color, const float opacity=1, + const unsigned int pattern=~0U, const unsigned int font_height=13, + const bool allow_zero=true, const float round_y=0) { + if (is_empty()) return *this; + int siz = (int)values_y.size() - 1; + CImg txt(32); + CImg a_label; + if (siz<=0) { // Degenerated case + draw_line(x,0,x,_height - 1,color,opacity,pattern); + if (!siz) { + cimg_snprintf(txt,txt._width,"%g",round_y?cimg::round((double)*values_y,round_y):(double)*values_y); + a_label.assign().draw_text(0,0,txt,color,(tc*)0,opacity,font_height); + const int + _yt = (height() - a_label.height())/2, + yt = _yt<0?0:_yt + a_label.height()>=height()?height() - 1 - a_label.height():_yt, + _xt = x - 2 - a_label.width(), + xt = _xt>=0?_xt:x + 3; + draw_point(x - 1,height()/2,color,opacity).draw_point(x + 1,height()/2,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } else { // Regular case + if (values_y[0]=height()?height() - 1 - a_label.height():_yt, + _xt = x - 2 - a_label.width(), + xt = _xt>=0?_xt:x + 3; + draw_point(x - 1,yi,color,opacity).draw_point(x + 1,yi,color,opacity); + if (allow_zero || *txt!='0' || txt[1]!=0) + draw_text(xt,yt,txt,color,(tc*)0,opacity,font_height); + } + } + return *this; + } + + //! Draw labeled horizontal and vertical axes. + /** + \param values_x Values along the X-axis. + \param values_y Values along the Y-axis. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern_x Drawing pattern for the X-axis. + \param pattern_y Drawing pattern for the Y-axis. + \param font_height Height of the labels (exact match for 13,23,53,103, interpolated otherwise). + \param allow_zero Enable/disable the drawing of label '0' if found. + **/ + template + CImg& draw_axes(const CImg& values_x, const CImg& values_y, + const tc *const color, const float opacity=1, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U, + const unsigned int font_height=13, const bool allow_zero=true, + const float round_x=0, const float round_y=0) { + if (is_empty()) return *this; + const CImg nvalues_x(values_x._data,values_x.size(),1,1,1,true); + const int sizx = (int)values_x.size() - 1, wm1 = width() - 1; + if (sizx>=0) { + float ox = (float)*nvalues_x; + for (unsigned int x = sizx?1U:0U; x<_width; ++x) { + const float nx = (float)nvalues_x._linear_atX((float)x*sizx/wm1); + if (nx*ox<=0) { + draw_axis(nx==0?x:x - 1,values_y,color,opacity,pattern_y,font_height,allow_zero,round_y); + break; + } + ox = nx; + } + } + const CImg nvalues_y(values_y._data,values_y.size(),1,1,1,true); + const int sizy = (int)values_y.size() - 1, hm1 = height() - 1; + if (sizy>0) { + float oy = (float)nvalues_y[0]; + for (unsigned int y = sizy?1U:0U; y<_height; ++y) { + const float ny = (float)nvalues_y._linear_atX((float)y*sizy/hm1); + if (ny*oy<=0) { + draw_axis(values_x,ny==0?y:y - 1,color,opacity,pattern_x,font_height,allow_zero,round_x); + break; + } + oy = ny; + } + } + return *this; + } + + //! Draw labeled horizontal and vertical axes \overloading. + template + CImg& draw_axes(const float x0, const float x1, const float y0, const float y1, + const tc *const color, const float opacity=1, + const int subdivisionx=-60, const int subdivisiony=-60, + const float precisionx=0, const float precisiony=0, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U, + const unsigned int font_height=13) { + if (is_empty()) return *this; + const bool allow_zero = (x0*x1>0) || (y0*y1>0); + const float + dx = cimg::abs(x1 - x0), dy = cimg::abs(y1 - y0), + px = dx<=0?1:precisionx==0?(float)std::pow(10.,(int)std::log10(dx) - 2.):precisionx, + py = dy<=0?1:precisiony==0?(float)std::pow(10.,(int)std::log10(dy) - 2.):precisiony; + if (x0!=x1 && y0!=y1) + draw_axes(CImg::sequence(subdivisionx>0?subdivisionx:1-width()/subdivisionx,x0,x1), + CImg::sequence(subdivisiony>0?subdivisiony:1-height()/subdivisiony,y0,y1), + color,opacity,pattern_x,pattern_y,font_height,allow_zero,px,py); + else if (x0==x1 && y0!=y1) + draw_axis((int)x0,CImg::sequence(subdivisiony>0?subdivisiony:1-height()/subdivisiony,y0,y1), + color,opacity,pattern_y,font_height,py); + else if (x0!=x1 && y0==y1) + draw_axis(CImg::sequence(subdivisionx>0?subdivisionx:1-width()/subdivisionx,x0,x1),(int)y0, + color,opacity,pattern_x,font_height,px); + return *this; + } + + //! Draw 2D grid. + /** + \param values_x X-coordinates of the vertical lines. + \param values_y Y-coordinates of the horizontal lines. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + \param pattern_x Drawing pattern for vertical lines. + \param pattern_y Drawing pattern for horizontal lines. + **/ + template + CImg& draw_grid(const CImg& values_x, const CImg& values_y, + const tc *const color, const float opacity=1, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U) { + if (is_empty()) return *this; + if (values_x) cimg_foroff(values_x,x) { + const int xi = (int)values_x[x]; + if (xi>=0 && xi=0 && yi + CImg& draw_grid(const float delta_x, const float delta_y, + const float offsetx, const float offsety, + const bool invertx, const bool inverty, + const tc *const color, const float opacity=1, + const unsigned int pattern_x=~0U, const unsigned int pattern_y=~0U) { + if (is_empty()) return *this; + CImg seqx, seqy; + if (delta_x!=0) { + const float dx = delta_x>0?delta_x:_width*-delta_x/100; + const unsigned int nx = (unsigned int)(_width/dx); + seqx = CImg::sequence(1 + nx,0,(unsigned int)(dx*nx)); + if (offsetx) cimg_foroff(seqx,x) seqx(x) = (unsigned int)cimg::mod(seqx(x) + offsetx,(float)_width); + if (invertx) cimg_foroff(seqx,x) seqx(x) = _width - 1 - seqx(x); + } + if (delta_y!=0) { + const float dy = delta_y>0?delta_y:_height*-delta_y/100; + const unsigned int ny = (unsigned int)(_height/dy); + seqy = CImg::sequence(1 + ny,0,(unsigned int)(dy*ny)); + if (offsety) cimg_foroff(seqy,y) seqy(y) = (unsigned int)cimg::mod(seqy(y) + offsety,(float)_height); + if (inverty) cimg_foroff(seqy,y) seqy(y) = _height - 1 - seqy(y); + } + return draw_grid(seqx,seqy,color,opacity,pattern_x,pattern_y); + } + + //! Draw 1D graph. + /** + \param data Image containing the graph values I = f(x). + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + + \param plot_type Define the type of the plot: + - 0 = No plot. + - 1 = Plot using segments. + - 2 = Plot using cubic splines. + - 3 = Plot with bars. + \param vertex_type Define the type of points: + - 0 = No points. + - 1 = Point. + - 2 = Straight cross. + - 3 = Diagonal cross. + - 4 = Filled circle. + - 5 = Outlined circle. + - 6 = Square. + - 7 = Diamond. + \param ymin Lower bound of the y-range. + \param ymax Upper bound of the y-range. + \param pattern Drawing pattern. + \note + - if \c ymin==ymax==0, the y-range is computed automatically from the input samples. + **/ + template + CImg& draw_graph(const CImg& data, + const tc *const color, const float opacity=1, + const unsigned int plot_type=1, const int vertex_type=1, + const double ymin=0, const double ymax=0, const unsigned int pattern=~0U) { + if (is_empty() || _height<=1) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_graph(): Specified color is (null).", + cimg_instance); + + // Create shaded colors for displaying bar plots. + CImg color1, color2; + if (plot_type==3) { + color1.assign(_spectrum); color2.assign(_spectrum); + cimg_forC(*this,c) { + color1[c] = (tc)std::min((float)cimg::type::max(),(float)color[c]*1.2f); + color2[c] = (tc)(color[c]*0.4f); + } + } + + // Compute min/max and normalization factors. + const ulongT + siz = data.size(), + _siz1 = siz - (plot_type!=3), + siz1 = _siz1?_siz1:1; + const unsigned int + _width1 = _width - (plot_type!=3), + width1 = _width1?_width1:1; + double m = ymin, M = ymax; + if (ymin==ymax) m = (double)data.max_min(M); + if (m==M) { --m; ++M; } + const float ca = (float)(M-m)/(_height - 1); + bool init_hatch = true; + + // Draw graph edges + switch (plot_type%4) { + case 1 : { // Segments + int oX = 0, oY = (int)cimg::round((data[0] - m)/ca); + if (siz==1) { + const int Y = (int)cimg::round((*data - m)/ca); + draw_line(0,Y,width() - 1,Y,color,opacity,pattern); + } else { + const float fx = (float)_width/siz1; + for (ulongT off = 1; off ndata(data._data,siz,1,1,1,true); + int oY = (int)cimg::round((data[0] - m)/ca); + cimg_forX(*this,x) { + const int Y = (int)cimg::round((ndata._cubic_atX((float)x*siz1/width1)-m)/ca); + if (x>0) draw_line(x,oY,x + 1,Y,color,opacity,pattern,init_hatch); + init_hatch = false; + oY = Y; + } + } break; + case 3 : { // Bars + const int Y0 = (int)cimg::round(-m/ca); + const float fx = (float)_width/siz1; + int oX = 0; + cimg_foroff(data,off) { + const int + X = (int)cimg::round((off + 1)*fx) - 1, + Y = (int)cimg::round((data[off] - m)/ca); + draw_rectangle(oX,Y0,X,Y,color,opacity). + draw_line(oX,Y,oX,Y0,color2.data(),opacity). + draw_line(oX,Y0,X,Y0,Y<=Y0?color2.data():color1.data(),opacity). + draw_line(X,Y,X,Y0,color1.data(),opacity). + draw_line(oX,Y,X,Y,Y<=Y0?color1.data():color2.data(),opacity); + oX = X + 1; + } + } break; + default : break; // No edges + } + + // Draw graph points + const unsigned int wb2 = plot_type==3?_width1/(2*siz):0; + const float fx = (float)_width1/siz1; + switch (vertex_type%8) { + case 1 : { // Point + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_point(X,Y,color,opacity); + } + } break; + case 2 : { // Straight Cross + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_line(X - 3,Y,X + 3,Y,color,opacity).draw_line(X,Y - 3,X,Y + 3,color,opacity); + } + } break; + case 3 : { // Diagonal Cross + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_line(X - 3,Y - 3,X + 3,Y + 3,color,opacity).draw_line(X - 3,Y + 3,X + 3,Y - 3,color,opacity); + } + } break; + case 4 : { // Filled Circle + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_circle(X,Y,3,color,opacity); + } + } break; + case 5 : { // Outlined circle + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_circle(X,Y,3,color,opacity,~0U); + } + } break; + case 6 : { // Square + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_rectangle(X - 3,Y - 3,X + 3,Y + 3,color,opacity,~0U); + } + } break; + case 7 : { // Diamond + cimg_foroff(data,off) { + const int + X = (int)cimg::round(off*fx + wb2), + Y = (int)cimg::round((data[off]-m)/ca); + draw_line(X,Y - 4,X + 4,Y,color,opacity). + draw_line(X + 4,Y,X,Y + 4,color,opacity). + draw_line(X,Y + 4,X - 4,Y,color,opacity). + draw_line(X - 4,Y,X,Y - 4,color,opacity); + } + } break; + default : break; // No points + } + return *this; + } + + bool _draw_fill(const int x, const int y, const int z, + const CImg& ref, const float tolerance2) const { + const T *ptr1 = data(x,y,z), *ptr2 = ref._data; + const unsigned long off = _width*_height*_depth; + float diff = 0; + cimg_forC(*this,c) { diff += cimg::sqr(*ptr1 - *(ptr2++)); ptr1+=off; } + return diff<=tolerance2; + } + + //! Draw filled 3D region with the flood fill algorithm. + /** + \param x0 X-coordinate of the starting point of the region to fill. + \param y0 Y-coordinate of the starting point of the region to fill. + \param z0 Z-coordinate of the starting point of the region to fill. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param[out] region Image that will contain the mask of the filled region mask, as an output. + \param tolerance Tolerance concerning neighborhood values. + \param opacity Opacity of the drawing. + \param is_high_connectivity Tells if 8-connexity must be used. + \return \c region is initialized with the binary mask of the filled region. + **/ + template + CImg& draw_fill(const int x0, const int y0, const int z0, + const tc *const color, const float opacity, + CImg ®ion, + const float tolerance = 0, + const bool is_high_connectivity = false) { +#define _draw_fill_push(x,y,z) if (N>=stack._width) stack.resize(2*N + 1,1,1,3,0); \ + stack[N] = x; stack(N,1) = y; stack(N++,2) = z +#define _draw_fill_pop(x,y,z) x = stack[--N]; y = stack(N,1); z = stack(N,2) +#define _draw_fill_is_inside(x,y,z) !_region(x,y,z) && _draw_fill(x,y,z,ref,tolerance2) + + if (!containsXYZC(x0,y0,z0,0)) return *this; + const float nopacity = cimg::abs((float)opacity), copacity = 1 - std::max((float)opacity,0.f); + const float tolerance2 = cimg::sqr(tolerance); + const CImg ref = get_vector_at(x0,y0,z0); + CImg stack(256,1,1,3); + CImg _region(_width,_height,_depth,1,0); + unsigned int N = 0; + int x, y, z; + + _draw_fill_push(x0,y0,z0); + while (N>0) { + _draw_fill_pop(x,y,z); + if (!_region(x,y,z)) { + const int yp = y - 1, yn = y + 1, zp = z - 1, zn = z + 1; + int xl = x, xr = x; + + // Using these booleans reduces the number of pushes drastically. + bool is_yp = false, is_yn = false, is_zp = false, is_zn = false; + for (int step = -1; step<2; step+=2) { + while (x>=0 && x=0 && _draw_fill_is_inside(x,yp,z)) { + if (!is_yp) { _draw_fill_push(x,yp,z); is_yp = true; } + } else is_yp = false; + if (yn1) { + if (zp>=0 && _draw_fill_is_inside(x,y,zp)) { + if (!is_zp) { _draw_fill_push(x,y,zp); is_zp = true; } + } else is_zp = false; + if (zn=0 && !is_yp) { + if (xp>=0 && _draw_fill_is_inside(xp,yp,z)) { + _draw_fill_push(xp,yp,z); if (step<0) is_yp = true; + } + if (xn0) is_yp = true; + } + } + if (yn=0 && _draw_fill_is_inside(xp,yn,z)) { + _draw_fill_push(xp,yn,z); if (step<0) is_yn = true; + } + if (xn0) is_yn = true; + } + } + if (depth()>1) { + if (zp>=0 && !is_zp) { + if (xp>=0 && _draw_fill_is_inside(xp,y,zp)) { + _draw_fill_push(xp,y,zp); if (step<0) is_zp = true; + } + if (xn0) is_zp = true; + } + + if (yp>=0 && !is_yp) { + if (_draw_fill_is_inside(x,yp,zp)) { _draw_fill_push(x,yp,zp); } + if (xp>=0 && _draw_fill_is_inside(xp,yp,zp)) { _draw_fill_push(xp,yp,zp); } + if (xn=0 && _draw_fill_is_inside(xp,yn,zp)) { _draw_fill_push(xp,yn,zp); } + if (xn=0 && _draw_fill_is_inside(xp,y,zn)) { + _draw_fill_push(xp,y,zn); if (step<0) is_zn = true; + } + if (xn0) is_zn = true; + } + + if (yp>=0 && !is_yp) { + if (_draw_fill_is_inside(x,yp,zn)) { _draw_fill_push(x,yp,zn); } + if (xp>=0 && _draw_fill_is_inside(xp,yp,zn)) { _draw_fill_push(xp,yp,zn); } + if (xn=0 && _draw_fill_is_inside(xp,yn,zn)) { _draw_fill_push(xp,yn,zn); } + if (xn + CImg& draw_fill(const int x0, const int y0, const int z0, + const tc *const color, const float opacity=1, + const float tolerance=0, const bool is_high_connexity=false) { + CImg tmp; + return draw_fill(x0,y0,z0,color,opacity,tmp,tolerance,is_high_connexity); + } + + //! Draw filled 2D region with the flood fill algorithm \simplification. + template + CImg& draw_fill(const int x0, const int y0, + const tc *const color, const float opacity=1, + const float tolerance=0, const bool is_high_connexity=false) { + CImg tmp; + return draw_fill(x0,y0,0,color,opacity,tmp,tolerance,is_high_connexity); + } + + //! Draw a random plasma texture. + /** + \param alpha Alpha-parameter. + \param beta Beta-parameter. + \param scale Scale-parameter. + \note Use the mid-point algorithm to render. + **/ + CImg& draw_plasma(const float alpha=1, const float beta=0, const unsigned int scale=8) { + if (is_empty()) return *this; + const int w = width(), h = height(); + const Tfloat m = (Tfloat)cimg::type::min(), M = (Tfloat)cimg::type::max(); + cimg_uint64 rng = (cimg::_rand(),cimg::rng()); + cimg_forZC(*this,z,c) { + CImg ref = get_shared_slice(z,c); + for (int delta = 1<1; delta>>=1) { + const int delta2 = delta>>1; + const float r = alpha*delta + beta; + + // Square step. + for (int y0 = 0; y0M?M:val); + } + + // Diamond steps. + for (int y = -delta2; yM?M:val); + } + for (int y0 = 0; y0M?M:val); + } + for (int y = -delta2; yM?M:val); + } + } + } + cimg::srand(rng); + return *this; + } + + //! Draw a quadratic Mandelbrot or Julia 2D fractal. + /** + \param x0 X-coordinate of the upper-left pixel. + \param y0 Y-coordinate of the upper-left pixel. + \param x1 X-coordinate of the lower-right pixel. + \param y1 Y-coordinate of the lower-right pixel. + \param colormap Colormap. + \param opacity Drawing opacity. + \param z0r Real part of the upper-left fractal vertex. + \param z0i Imaginary part of the upper-left fractal vertex. + \param z1r Real part of the lower-right fractal vertex. + \param z1i Imaginary part of the lower-right fractal vertex. + \param iteration_max Maximum number of iterations for each estimated point. + \param is_normalized_iteration Tells if iterations are normalized. + \param is_julia_set Tells if the Mandelbrot or Julia set is rendered. + \param param_r Real part of the Julia set parameter. + \param param_i Imaginary part of the Julia set parameter. + \note Fractal rendering is done by the Escape Time Algorithm. + **/ + template + CImg& draw_mandelbrot(const int x0, const int y0, const int x1, const int y1, + const CImg& colormap, const float opacity=1, + const double z0r=-2, const double z0i=-2, const double z1r=2, const double z1i=2, + const unsigned int iteration_max=255, + const bool is_normalized_iteration=false, + const bool is_julia_set=false, + const double param_r=0, const double param_i=0) { + if (is_empty()) return *this; + CImg palette; + if (colormap) palette.assign(colormap._data,colormap.size()/colormap._spectrum,1,1,colormap._spectrum,true); + if (palette && palette._spectrum!=_spectrum) + throw CImgArgumentException(_cimg_instance + "draw_mandelbrot(): Instance and specified colormap (%u,%u,%u,%u,%p) have " + "incompatible dimensions.", + cimg_instance, + colormap._width,colormap._height,colormap._depth,colormap._spectrum,colormap._data); + + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f), ln2 = (float)std::log(2.); + const int + _x0 = cimg::cut(x0,0,width() - 1), + _y0 = cimg::cut(y0,0,height() - 1), + _x1 = cimg::cut(x1,0,width() - 1), + _y1 = cimg::cut(y1,0,height() - 1); + + cimg_pragma_openmp(parallel for cimg_openmp_collapse(2) + cimg_openmp_if((1 + _x1 - _x0)*(1 + _y1 - _y0)>=(cimg_openmp_sizefactor)*2048)) + for (int q = _y0; q<=_y1; ++q) + for (int p = _x0; p<=_x1; ++p) { + unsigned int iteration = 0; + const double x = z0r + p*(z1r-z0r)/_width, y = z0i + q*(z1i-z0i)/_height; + double zr, zi, cr, ci; + if (is_julia_set) { zr = x; zi = y; cr = param_r; ci = param_i; } + else { zr = param_r; zi = param_i; cr = x; ci = y; } + for (iteration=1; zr*zr + zi*zi<=4 && iteration<=iteration_max; ++iteration) { + const double temp = zr*zr - zi*zi + cr; + zi = 2*zr*zi + ci; + zr = temp; + } + if (iteration>iteration_max) { + if (palette) { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)palette(0,c); + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(palette(0,c)*nopacity + (*this)(p,q,0,c)*copacity); + } else { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)0; + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)((*this)(p,q,0,c)*copacity); + } + } else if (is_normalized_iteration) { + const float + normz = (float)cimg::abs(zr*zr + zi*zi), + niteration = (float)(iteration + 1 - std::log(std::log(normz))/ln2); + if (palette) { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)palette._linear_atX(niteration,c); + else cimg_forC(*this,c) + (*this)(p,q,0,c) = (T)(palette._linear_atX(niteration,c)*nopacity + (*this)(p,q,0,c)*copacity); + } else { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)niteration; + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(niteration*nopacity + (*this)(p,q,0,c)*copacity); + } + } else { + if (palette) { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)palette._atX(iteration,c); + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(palette(iteration,c)*nopacity + (*this)(p,q,0,c)*copacity); + } else { + if (opacity>=1) cimg_forC(*this,c) (*this)(p,q,0,c) = (T)iteration; + else cimg_forC(*this,c) (*this)(p,q,0,c) = (T)(iteration*nopacity + (*this)(p,q,0,c)*copacity); + } + } + } + return *this; + } + + //! Draw a quadratic Mandelbrot or Julia 2D fractal \overloading. + template + CImg& draw_mandelbrot(const CImg& colormap, const float opacity=1, + const double z0r=-2, const double z0i=-2, const double z1r=2, const double z1i=2, + const unsigned int iteration_max=255, + const bool is_normalized_iteration=false, + const bool is_julia_set=false, + const double param_r=0, const double param_i=0) { + return draw_mandelbrot(0,0,_width - 1,_height - 1,colormap,opacity, + z0r,z0i,z1r,z1i,iteration_max,is_normalized_iteration,is_julia_set,param_r,param_i); + } + + //! Draw a 1D gaussian function. + /** + \param xc X-coordinate of the gaussian center. + \param sigma Standard variation of the gaussian distribution. + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_gaussian(const float xc, const float sigma, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified color is (null).", + cimg_instance); + const float sigma2 = 2*sigma*sigma, nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + const ulongT whd = (ulongT)_width*_height*_depth; + const tc *col = color; + cimg_forX(*this,x) { + const float dx = (x - xc), val = (float)std::exp(-dx*dx/sigma2); + T *ptrd = data(x,0,0,0); + if (opacity>=1) cimg_forC(*this,c) { *ptrd = (T)(val*(*col++)); ptrd+=whd; } + else cimg_forC(*this,c) { *ptrd = (T)(nopacity*val*(*col++) + *ptrd*copacity); ptrd+=whd; } + col-=_spectrum; + } + return *this; + } + + //! Draw a 2D gaussian function. + /** + \param xc X-coordinate of the gaussian center. + \param yc Y-coordinate of the gaussian center. + \param tensor Covariance matrix (must be 2x2). + \param color Pointer to \c spectrum() consecutive values, defining the drawing color. + \param opacity Drawing opacity. + **/ + template + CImg& draw_gaussian(const float xc, const float yc, const CImg& tensor, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + if (tensor._width!=2 || tensor._height!=2 || tensor._depth!=1 || tensor._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified tensor (%u,%u,%u,%u,%p) is not a 2x2 matrix.", + cimg_instance, + tensor._width,tensor._height,tensor._depth,tensor._spectrum,tensor._data); + if (!color) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified color is (null).", + cimg_instance); + typedef typename CImg::Tfloat tfloat; + const CImg invT = tensor.get_invert(), invT2 = (invT*invT)/=-2.; + const tfloat a = invT2(0,0), b = 2*invT2(1,0), c = invT2(1,1); + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + const ulongT whd = (ulongT)_width*_height*_depth; + const tc *col = color; + float dy = -yc; + cimg_forY(*this,y) { + float dx = -xc; + cimg_forX(*this,x) { + const float val = (float)std::exp(a*dx*dx + b*dx*dy + c*dy*dy); + T *ptrd = data(x,y,0,0); + if (opacity>=1) cimg_forC(*this,k) { *ptrd = (T)(val*(*col++)); ptrd+=whd; } + else cimg_forC(*this,k) { *ptrd = (T)(nopacity*val*(*col++) + *ptrd*copacity); ptrd+=whd; } + col-=_spectrum; + ++dx; + } + ++dy; + } + return *this; + } + + //! Draw a 2D gaussian function \overloading. + template + CImg& draw_gaussian(const int xc, const int yc, const float r1, const float r2, const float ru, const float rv, + const tc *const color, const float opacity=1) { + const double + a = r1*ru*ru + r2*rv*rv, + b = (r1-r2)*ru*rv, + c = r1*rv*rv + r2*ru*ru; + const CImg tensor(2,2,1,1, a,b,b,c); + return draw_gaussian(xc,yc,tensor,color,opacity); + } + + //! Draw a 2D gaussian function \overloading. + template + CImg& draw_gaussian(const float xc, const float yc, const float sigma, + const tc *const color, const float opacity=1) { + return draw_gaussian(xc,yc,CImg::diagonal(sigma,sigma),color,opacity); + } + + //! Draw a 3D gaussian function \overloading. + template + CImg& draw_gaussian(const float xc, const float yc, const float zc, const CImg& tensor, + const tc *const color, const float opacity=1) { + if (is_empty()) return *this; + typedef typename CImg::Tfloat tfloat; + if (tensor._width!=3 || tensor._height!=3 || tensor._depth!=1 || tensor._spectrum!=1) + throw CImgArgumentException(_cimg_instance + "draw_gaussian(): Specified tensor (%u,%u,%u,%u,%p) is not a 3x3 matrix.", + cimg_instance, + tensor._width,tensor._height,tensor._depth,tensor._spectrum,tensor._data); + + const CImg invT = tensor.get_invert(), invT2 = (invT*invT)/=-2.; + const tfloat a = invT2(0,0), b = 2*invT2(1,0), c = 2*invT2(2,0), d = invT2(1,1), e = 2*invT2(2,1), f = invT2(2,2); + const float nopacity = cimg::abs(opacity), copacity = 1 - std::max(opacity,0.f); + const ulongT whd = (ulongT)_width*_height*_depth; + const tc *col = color; + cimg_forXYZ(*this,x,y,z) { + const float + dx = (x - xc), dy = (y - yc), dz = (z - zc), + val = (float)std::exp(a*dx*dx + b*dx*dy + c*dx*dz + d*dy*dy + e*dy*dz + f*dz*dz); + T *ptrd = data(x,y,z,0); + if (opacity>=1) cimg_forC(*this,k) { *ptrd = (T)(val*(*col++)); ptrd+=whd; } + else cimg_forC(*this,k) { *ptrd = (T)(nopacity*val*(*col++) + *ptrd*copacity); ptrd+=whd; } + col-=_spectrum; + } + return *this; + } + + //! Draw a 3D gaussian function \overloading. + template + CImg& draw_gaussian(const float xc, const float yc, const float zc, const float sigma, + const tc *const color, const float opacity=1) { + return draw_gaussian(xc,yc,zc,CImg::diagonal(sigma,sigma,sigma),color,opacity); + } + + //! Draw a 3D object. + /** + \param x0 X-coordinate of the 3D object position + \param y0 Y-coordinate of the 3D object position + \param z0 Z-coordinate of the 3D object position + \param vertices Image Nx3 describing 3D point coordinates + \param primitives List of P primitives + \param colors List of P color (or textures) + \param opacities Image or list of P opacities + \param render_type d Render type (0=Points, 1=Lines, 2=Faces (no light), 3=Faces (flat), 4=Faces(Gouraud) + \param is_double_sided Tells if object faces have two sides or are oriented. + \param focale length of the focale (0 for parallel projection) + \param lightx X-coordinate of the light + \param lighty Y-coordinate of the light + \param lightz Z-coordinate of the light + \param specular_lightness Amount of specular light. + \param specular_shininess Shininess of the object + \param g_opacity Global opacity of the object. + **/ + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d(0,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } + +#ifdef cimg_use_board + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(board,x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImg& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d((void*)&board,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } +#endif + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d(0,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } + +#ifdef cimg_use_board + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(board,x0,y0,z0,vertices,primitives,colors,opacities,render_type, + is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, const CImgList& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return _draw_object3d((void*)&board,zbuffer,x0,y0,z0,vertices,primitives,colors,opacities, + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,1); + } +#endif + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + //! Draw a 3D object \simplification. + template + CImg& draw_object3d(const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,zbuffer); + } + +#ifdef cimg_use_board + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type=4, + const bool is_double_sided=false, const float focale=700, + const float lightx=0, const float lighty=0, const float lightz=-5e8, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const float g_opacity=1) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,CImg::empty()); + } + + template + CImg& draw_object3d(LibBoard::Board& board, + const float x0, const float y0, const float z0, + const CImg& vertices, const CImgList& primitives, + const CImgList& colors, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, CImg& zbuffer) { + return draw_object3d(x0,y0,z0,vertices,primitives,colors,CImg::const_empty(), + render_type,is_double_sided,focale,lightx,lighty,lightz, + specular_lightness,specular_shininess,g_opacity,zbuffer); + } +#endif + + template + static float __draw_object3d(const CImgList& opacities, const unsigned int n_primitive, CImg& opacity) { + if (n_primitive>=opacities._width || opacities[n_primitive].is_empty()) { opacity.assign(); return 1; } + if (opacities[n_primitive].size()==1) { opacity.assign(); return opacities(n_primitive,0); } + opacity.assign(opacities[n_primitive],true); + return 1.f; + } + + template + static float __draw_object3d(const CImg& opacities, const unsigned int n_primitive, CImg& opacity) { + opacity.assign(); + return n_primitive>=opacities._width?1.f:(float)opacities[n_primitive]; + } + + template + static float ___draw_object3d(const CImgList& opacities, const unsigned int n_primitive) { + return n_primitive + static float ___draw_object3d(const CImg& opacities, const unsigned int n_primitive) { + return n_primitive + CImg& _draw_object3d(void *const pboard, CImg& zbuffer, + const float X, const float Y, const float Z, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const unsigned int render_type, + const bool is_double_sided, const float focale, + const float lightx, const float lighty, const float lightz, + const float specular_lightness, const float specular_shininess, + const float g_opacity, const float sprite_scale) { + typedef typename cimg::superset2::type tpfloat; + typedef typename to::value_type _to; + if (is_empty() || !vertices || !primitives) return *this; + CImg error_message(1024); + if (!vertices.is_object3d(primitives,colors,opacities,false,error_message)) + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Invalid specified 3D object (%u,%u) (%s).", + cimg_instance,vertices._width,primitives._width,error_message.data()); +#ifndef cimg_use_board + if (pboard) return *this; +#endif + if (render_type==5) cimg::mutex(10); // Static variable used in this case, breaks thread-safety + + const float + nspec = 1 - (specular_lightness<0.f?0.f:(specular_lightness>1.f?1.f:specular_lightness)), + nspec2 = 1 + (specular_shininess<0.f?0.f:specular_shininess), + nsl1 = (nspec2 - 1)/cimg::sqr(nspec - 1), + nsl2 = 1 - 2*nsl1*nspec, + nsl3 = nspec2 - nsl1 - nsl2; + + // Create light texture for phong-like rendering. + CImg light_texture; + if (render_type==5) { + if (colors._width>primitives._width) { + static CImg default_light_texture; + static const tc *lptr = 0; + static tc ref_values[64] = { 0 }; + const CImg& img = colors.back(); + bool is_same_texture = (lptr==img._data); + if (is_same_texture) + for (unsigned int r = 0, j = 0; j<8; ++j) + for (unsigned int i = 0; i<8; ++i) + if (ref_values[r++]!=img(i*img._width/9,j*img._height/9,0,(i + j)%img._spectrum)) { + is_same_texture = false; break; + } + if (!is_same_texture || default_light_texture._spectrum<_spectrum) { + (default_light_texture.assign(img,false)/=255).resize(-100,-100,1,_spectrum); + lptr = colors.back().data(); + for (unsigned int r = 0, j = 0; j<8; ++j) + for (unsigned int i = 0; i<8; ++i) + ref_values[r++] = img(i*img._width/9,j*img._height/9,0,(i + j)%img._spectrum); + } + light_texture.assign(default_light_texture,true); + } else { + static CImg default_light_texture; + static float olightx = 0, olighty = 0, olightz = 0, ospecular_shininess = 0; + if (!default_light_texture || + lightx!=olightx || lighty!=olighty || lightz!=olightz || + specular_shininess!=ospecular_shininess || default_light_texture._spectrum<_spectrum) { + default_light_texture.assign(512,512); + const float + dlx = lightx - X, + dly = lighty - Y, + dlz = lightz - Z, + nl = cimg::hypot(dlx,dly,dlz), + nlx = (default_light_texture._width - 1)/2*(1 + dlx/nl), + nly = (default_light_texture._height - 1)/2*(1 + dly/nl), + white[] = { 1 }; + default_light_texture.draw_gaussian(nlx,nly,default_light_texture._width/3.f,white); + cimg_forXY(default_light_texture,x,y) { + const float factor = default_light_texture(x,y); + if (factor>nspec) default_light_texture(x,y) = std::min(2.f,nsl1*factor*factor + nsl2*factor + nsl3); + } + default_light_texture.resize(-100,-100,1,_spectrum); + olightx = lightx; olighty = lighty; olightz = lightz; ospecular_shininess = specular_shininess; + } + light_texture.assign(default_light_texture,true); + } + } + + // Compute 3D to 2D projection. + CImg projections(vertices._width,2); + tpfloat parallzmin = cimg::type::max(); + const float absfocale = focale?cimg::abs(focale):0; + if (absfocale) { + cimg_pragma_openmp(parallel for cimg_openmp_if_size(projections.size(),4096)) + cimg_forX(projections,l) { // Perspective projection + const tpfloat + x = (tpfloat)vertices(l,0), + y = (tpfloat)vertices(l,1), + z = (tpfloat)vertices(l,2); + const tpfloat projectedz = z + Z + absfocale; + projections(l,1) = Y + absfocale*y/projectedz; + projections(l,0) = X + absfocale*x/projectedz; + } + } else { + cimg_pragma_openmp(parallel for cimg_openmp_if_size(projections.size(),4096)) + cimg_forX(projections,l) { // Parallel projection + const tpfloat + x = (tpfloat)vertices(l,0), + y = (tpfloat)vertices(l,1), + z = (tpfloat)vertices(l,2); + if (z visibles(primitives._width,1,1,1,~0U); + CImg zrange(primitives._width); + const tpfloat zmin = absfocale?(tpfloat)(1.5f - absfocale):cimg::type::min(); + bool is_forward = zbuffer?true:false; + + cimg_pragma_openmp(parallel for cimg_openmp_if_size(primitives.size(),4096)) + cimglist_for(primitives,l) { + const CImg& primitive = primitives[l]; + switch (primitive.size()) { + case 1 : { // Point + CImg<_to> _opacity; + __draw_object3d(opacities,l,_opacity); + if (l<=colors.width() && (colors[l].size()!=_spectrum || _opacity)) is_forward = false; + const unsigned int i0 = (unsigned int)primitive(0); + const tpfloat z0 = Z + vertices(i0,2); + if (z0>zmin) { + visibles(l) = (unsigned int)l; + zrange(l) = z0; + } + } break; + case 5 : { // Sphere + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + const tpfloat + Xc = 0.5f*((float)vertices(i0,0) + (float)vertices(i1,0)), + Yc = 0.5f*((float)vertices(i0,1) + (float)vertices(i1,1)), + Zc = 0.5f*((float)vertices(i0,2) + (float)vertices(i1,2)), + _zc = Z + Zc, + zc = _zc + _focale, + xc = X + Xc*(absfocale?absfocale/zc:1), + yc = Y + Yc*(absfocale?absfocale/zc:1), + radius = 0.5f*cimg::hypot(vertices(i1,0) - vertices(i0,0), + vertices(i1,1) - vertices(i0,1), + vertices(i1,2) - vertices(i0,2))*(absfocale?absfocale/zc:1), + xm = xc - radius, + ym = yc - radius, + xM = xc + radius, + yM = yc + radius; + if (xM>=0 && xm<_width && yM>=0 && ym<_height && _zc>zmin) { + visibles(l) = (unsigned int)l; + zrange(l) = _zc; + } + is_forward = false; + } break; + case 2 : case 6 : { // Segment + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1); + const tpfloat + x0 = projections(i0,0), y0 = projections(i0,1), z0 = Z + vertices(i0,2), + x1 = projections(i1,0), y1 = projections(i1,1), z1 = Z + vertices(i1,2); + tpfloat xm, xM, ym, yM; + if (x0=0 && xm<_width && yM>=0 && ym<_height && z0>zmin && z1>zmin) { + visibles(l) = (unsigned int)l; + zrange(l) = (z0 + z1)/2; + } + } break; + case 3 : case 9 : { // Triangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2); + const tpfloat + x0 = projections(i0,0), y0 = projections(i0,1), z0 = Z + vertices(i0,2), + x1 = projections(i1,0), y1 = projections(i1,1), z1 = Z + vertices(i1,2), + x2 = projections(i2,0), y2 = projections(i2,1), z2 = Z + vertices(i2,2); + tpfloat xm, xM, ym, yM; + if (x0xM) xM = x2; + if (y0yM) yM = y2; + if (xM>=0 && xm<_width && yM>=0 && ym<_height && z0>zmin && z1>zmin && z2>zmin) { + const tpfloat d = (x1-x0)*(y2-y0) - (x2-x0)*(y1-y0); + if (is_double_sided || d<0) { + visibles(l) = (unsigned int)l; + zrange(l) = (z0 + z1 + z2)/3; + } + } + } break; + case 4 : case 12 : { // Quadrangle + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2), + i3 = (unsigned int)primitive(3); + const tpfloat + x0 = projections(i0,0), y0 = projections(i0,1), z0 = Z + vertices(i0,2), + x1 = projections(i1,0), y1 = projections(i1,1), z1 = Z + vertices(i1,2), + x2 = projections(i2,0), y2 = projections(i2,1), z2 = Z + vertices(i2,2), + x3 = projections(i3,0), y3 = projections(i3,1), z3 = Z + vertices(i3,2); + tpfloat xm, xM, ym, yM; + if (x0xM) xM = x2; + if (x3xM) xM = x3; + if (y0yM) yM = y2; + if (y3yM) yM = y3; + if (xM>=0 && xm<_width && yM>=0 && ym<_height && z0>zmin && z1>zmin && z2>zmin && z3>zmin) { + const float d = (x1 - x0)*(y2 - y0) - (x2 - x0)*(y1 - y0); + if (is_double_sided || d<0) { + visibles(l) = (unsigned int)l; + zrange(l) = (z0 + z1 + z2 + z3)/4; + } + } + } break; + default : + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Invalid primitive[%u] with size %u " + "(should have size 1,2,3,4,5,6,9 or 12).", + cimg_instance, + l,primitive.size()); + } + } + + // Force transparent primitives to be drawn last when zbuffer is activated + // (and if object contains no spheres or sprites). + if (is_forward) + cimglist_for(primitives,l) + if (___draw_object3d(opacities,l)!=1) zrange(l) = 2*zmax - zrange(l); + + // Sort only visibles primitives. + unsigned int *p_visibles = visibles._data; + tpfloat *p_zrange = zrange._data; + const tpfloat *ptrz = p_zrange; + cimg_for(visibles,ptr,unsigned int) { + if (*ptr!=~0U) { *(p_visibles++) = *ptr; *(p_zrange++) = *ptrz; } + ++ptrz; + } + const unsigned int nb_visibles = (unsigned int)(p_zrange - zrange._data); + if (!nb_visibles) { + if (render_type==5) cimg::mutex(10,0); + return *this; + } + CImg permutations; + CImg(zrange._data,nb_visibles,1,1,1,true).sort(permutations,is_forward); + + // Compute light properties + CImg lightprops; + switch (render_type) { + case 3 : { // Flat Shading + lightprops.assign(nb_visibles); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + cimg_forX(lightprops,l) { + const CImg& primitive = primitives(visibles(permutations(l))); + const unsigned int psize = (unsigned int)primitive.size(); + if (psize==3 || psize==4 || psize==9 || psize==12) { + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2); + const tpfloat + x0 = (tpfloat)vertices(i0,0), y0 = (tpfloat)vertices(i0,1), z0 = (tpfloat)vertices(i0,2), + x1 = (tpfloat)vertices(i1,0), y1 = (tpfloat)vertices(i1,1), z1 = (tpfloat)vertices(i1,2), + x2 = (tpfloat)vertices(i2,0), y2 = (tpfloat)vertices(i2,1), z2 = (tpfloat)vertices(i2,2), + dx1 = x1 - x0, dy1 = y1 - y0, dz1 = z1 - z0, + dx2 = x2 - x0, dy2 = y2 - y0, dz2 = z2 - z0, + nx = dy1*dz2 - dz1*dy2, + ny = dz1*dx2 - dx1*dz2, + nz = dx1*dy2 - dy1*dx2, + norm = 1e-5f + cimg::hypot(nx,ny,nz), + lx = X + (x0 + x1 + x2)/3 - lightx, + ly = Y + (y0 + y1 + y2)/3 - lighty, + lz = Z + (z0 + z1 + z2)/3 - lightz, + nl = 1e-5f + cimg::hypot(lx,ly,lz), + factor = std::max(cimg::abs(-lx*nx - ly*ny - lz*nz)/(norm*nl),(tpfloat)0); + lightprops[l] = factor<=nspec?factor:(nsl1*factor*factor + nsl2*factor + nsl3); + } else lightprops[l] = 1; + } + } break; + + case 4 : // Gouraud Shading + case 5 : { // Phong-Shading + CImg vertices_normals(vertices._width,6,1,1,0); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + for (int l = 0; l<(int)nb_visibles; ++l) { + const CImg& primitive = primitives[visibles(l)]; + const unsigned int psize = (unsigned int)primitive.size(); + const bool + triangle_flag = (psize==3) || (psize==9), + quadrangle_flag = (psize==4) || (psize==12); + if (triangle_flag || quadrangle_flag) { + const unsigned int + i0 = (unsigned int)primitive(0), + i1 = (unsigned int)primitive(1), + i2 = (unsigned int)primitive(2), + i3 = quadrangle_flag?(unsigned int)primitive(3):0; + const tpfloat + x0 = (tpfloat)vertices(i0,0), y0 = (tpfloat)vertices(i0,1), z0 = (tpfloat)vertices(i0,2), + x1 = (tpfloat)vertices(i1,0), y1 = (tpfloat)vertices(i1,1), z1 = (tpfloat)vertices(i1,2), + x2 = (tpfloat)vertices(i2,0), y2 = (tpfloat)vertices(i2,1), z2 = (tpfloat)vertices(i2,2), + dx1 = x1 - x0, dy1 = y1 - y0, dz1 = z1 - z0, + dx2 = x2 - x0, dy2 = y2 - y0, dz2 = z2 - z0, + nnx = dy1*dz2 - dz1*dy2, + nny = dz1*dx2 - dx1*dz2, + nnz = dx1*dy2 - dy1*dx2, + norm = 1e-5f + cimg::hypot(nnx,nny,nnz), + nx = nnx/norm, + ny = nny/norm, + nz = nnz/norm; + unsigned int ix = 0, iy = 1, iz = 2; + if (is_double_sided && nz>0) { ix = 3; iy = 4; iz = 5; } + vertices_normals(i0,ix)+=nx; vertices_normals(i0,iy)+=ny; vertices_normals(i0,iz)+=nz; + vertices_normals(i1,ix)+=nx; vertices_normals(i1,iy)+=ny; vertices_normals(i1,iz)+=nz; + vertices_normals(i2,ix)+=nx; vertices_normals(i2,iy)+=ny; vertices_normals(i2,iz)+=nz; + if (quadrangle_flag) { + vertices_normals(i3,ix)+=nx; vertices_normals(i3,iy)+=ny; vertices_normals(i3,iz)+=nz; + } + } + } + + if (is_double_sided) cimg_forX(vertices_normals,p) { + const float + nx0 = vertices_normals(p,0), ny0 = vertices_normals(p,1), nz0 = vertices_normals(p,2), + nx1 = vertices_normals(p,3), ny1 = vertices_normals(p,4), nz1 = vertices_normals(p,5), + n0 = nx0*nx0 + ny0*ny0 + nz0*nz0, n1 = nx1*nx1 + ny1*ny1 + nz1*nz1; + if (n1>n0) { + vertices_normals(p,0) = -nx1; + vertices_normals(p,1) = -ny1; + vertices_normals(p,2) = -nz1; + } + } + + if (render_type==4) { + lightprops.assign(vertices._width); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + cimg_forX(lightprops,l) { + const tpfloat + nx = vertices_normals(l,0), + ny = vertices_normals(l,1), + nz = vertices_normals(l,2), + norm = 1e-5f + cimg::hypot(nx,ny,nz), + lx = X + vertices(l,0) - lightx, + ly = Y + vertices(l,1) - lighty, + lz = Z + vertices(l,2) - lightz, + nl = 1e-5f + cimg::hypot(lx,ly,lz), + factor = std::max((-lx*nx - ly*ny - lz*nz)/(norm*nl),(tpfloat)0); + lightprops[l] = factor<=nspec?factor:(nsl1*factor*factor + nsl2*factor + nsl3); + } + } else { + const unsigned int + lw2 = light_texture._width/2 - 1, + lh2 = light_texture._height/2 - 1; + lightprops.assign(vertices._width,2); + cimg_pragma_openmp(parallel for cimg_openmp_if_size(nb_visibles,4096)) + cimg_forX(lightprops,l) { + const tpfloat + nx = vertices_normals(l,0), + ny = vertices_normals(l,1), + nz = vertices_normals(l,2), + norm = 1e-5f + cimg::hypot(nx,ny,nz), + nnx = nx/norm, + nny = ny/norm; + lightprops(l,0) = lw2*(1 + nnx); + lightprops(l,1) = lh2*(1 + nny); + } + } + } break; + } + + // Draw visible primitives + const CImg default_color(1,_spectrum,1,1,(tc)200); + CImg<_to> _opacity; + + for (unsigned int l = 0; l& primitive = primitives[n_primitive]; + const CImg + &__color = n_primitive(), + _color = (__color && __color.size()!=_spectrum && __color._spectrum<_spectrum)? + __color.get_resize(-100,-100,-100,_spectrum,0):CImg(), + &color = _color?_color:(__color?__color:default_color); + const tc *const pcolor = color._data; + float opacity = __draw_object3d(opacities,n_primitive,_opacity); + if (_opacity.is_empty()) opacity*=g_opacity; + +#ifdef cimg_use_board + LibBoard::Board &board = *(LibBoard::Board*)pboard; +#endif + + switch (primitive.size()) { + case 1 : { // Colored point or sprite + const unsigned int n0 = (unsigned int)primitive[0]; + const int x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)); + + if (_opacity.is_empty()) { // Scalar opacity + + if (color.size()==_spectrum) { // Colored point + draw_point(x0,y0,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height()-(float)y0); + } +#endif + } else { // Sprite + const tpfloat z = Z + vertices(n0,2); + const float factor = focale<0?1:sprite_scale*(absfocale?absfocale/(z + absfocale):1); + const unsigned int + _sw = (unsigned int)(color._width*factor), + _sh = (unsigned int)(color._height*factor), + sw = _sw?_sw:1, sh = _sh?_sh:1; + const int nx0 = x0 - (int)sw/2, ny0 = y0 - (int)sh/2; + if (sw<=3*_width/2 && sh<=3*_height/2 && + (nx0 + (int)sw/2>=0 || nx0 - (int)sw/2=0 || ny0 - (int)sh/2 + _sprite = (sw!=color._width || sh!=color._height)? + color.get_resize(sw,sh,1,-100,render_type<=3?1:3):CImg(), + &sprite = _sprite?_sprite:color; + draw_image(nx0,ny0,sprite,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128); + board.setFillColor(LibBoard::Color::Null); + board.drawRectangle((float)nx0,height() - (float)ny0,sw,sh); + } +#endif + } + } + } else { // Opacity mask + const tpfloat z = Z + vertices(n0,2); + const float factor = focale<0?1:sprite_scale*(absfocale?absfocale/(z + absfocale):1); + const unsigned int + _sw = (unsigned int)(std::max(color._width,_opacity._width)*factor), + _sh = (unsigned int)(std::max(color._height,_opacity._height)*factor), + sw = _sw?_sw:1, sh = _sh?_sh:1; + const int nx0 = x0 - (int)sw/2, ny0 = y0 - (int)sh/2; + if (sw<=3*_width/2 && sh<=3*_height/2 && + (nx0 + (int)sw/2>=0 || nx0 - (int)sw/2=0 || ny0 - (int)sh/2 + _sprite = (sw!=color._width || sh!=color._height)? + color.get_resize(sw,sh,1,-100,render_type<=3?1:3):CImg(), + &sprite = _sprite?_sprite:color; + const CImg<_to> + _nopacity = (sw!=_opacity._width || sh!=_opacity._height)? + _opacity.get_resize(sw,sh,1,-100,render_type<=3?1:3):CImg<_to>(), + &nopacity = _nopacity?_nopacity:_opacity; + draw_image(nx0,ny0,sprite,nopacity,g_opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128); + board.setFillColor(LibBoard::Color::Null); + board.drawRectangle((float)nx0,height() - (float)ny0,sw,sh); + } +#endif + } + } + } break; + case 2 : { // Colored line + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1]; + const int + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale; + if (render_type) { + if (zbuffer) draw_line(zbuffer,x0,y0,z0,x1,y1,z1,pcolor,opacity); + else draw_line(x0,y0,x1,y1,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,x1,height() - (float)y1); + } +#endif + } else { + draw_point(x0,y0,pcolor,opacity).draw_point(x1,y1,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + } +#endif + } + } break; + case 5 : { // Colored sphere + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + is_wireframe = (unsigned int)primitive[2], + is_radius = (unsigned int)primitive[3]; + float Xc,Yc,Zc,radius; + if (is_radius) { + Xc = (float)vertices(n0,0); + Yc = (float)vertices(n0,1); + Zc = (float)vertices(n0,2); + radius = cimg::hypot(vertices(n1,0) - vertices(n0,0), + vertices(n1,1) - vertices(n0,1), + vertices(n1,2) - vertices(n0,2)); + } else { + Xc = 0.5f*((float)vertices(n0,0) + (float)vertices(n1,0)); + Yc = 0.5f*((float)vertices(n0,1) + (float)vertices(n1,1)); + Zc = 0.5f*((float)vertices(n0,2) + (float)vertices(n1,2)); + radius = 0.5f*cimg::hypot(vertices(n1,0) - vertices(n0,0), + vertices(n1,1) - vertices(n0,1), + vertices(n1,2) - vertices(n0,2)); + } + const float + zc = Z + Zc + _focale, + af = absfocale?absfocale/zc:1, + xc = X + Xc*af, + yc = Y + Yc*af; + radius*=af; + + switch (render_type) { + case 0 : + draw_point((int)xc,(int)yc,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot(xc,height() - yc); + } +#endif + break; + case 1 : + draw_circle((int)xc,(int)yc,(int)radius,pcolor,opacity,~0U); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.setFillColor(LibBoard::Color::Null); + board.drawCircle(xc,height() - yc,radius); + } +#endif + break; + default : + if (is_wireframe) draw_circle((int)xc,(int)yc,(int)radius,pcolor,opacity,~0U); + else draw_circle((int)xc,(int)yc,(int)radius,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + if (!is_wireframe) board.fillCircle(xc,height() - yc,radius); + else { + board.setFillColor(LibBoard::Color::Null); + board.drawCircle(xc,height() - yc,radius); + } + } +#endif + break; + } + } break; + case 6 : { // Textured line + if (!__color) { + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Undefined texture for line primitive [%u].", + cimg_instance,n_primitive); + } + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1]; + const int + tx0 = (int)primitive[2], ty0 = (int)primitive[3], + tx1 = (int)primitive[4], ty1 = (int)primitive[5], + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale; + if (render_type) { + if (zbuffer) draw_line(zbuffer,x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity); + else draw_line(x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + } +#endif + } else { + draw_point(x0,y0,color.get_vector_at(tx0<=0?0:tx0>=color.width()?color.width() - 1:tx0, + ty0<=0?0:ty0>=color.height()?color.height() - 1:ty0)._data,opacity). + draw_point(x1,y1,color.get_vector_at(tx1<=0?0:tx1>=color.width()?color.width() - 1:tx1, + ty1<=0?0:ty1>=color.height()?color.height() - 1:ty1)._data,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + } +#endif + } + } break; + case 3 : { // Colored triangle + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2]; + const int + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale; + switch (render_type) { + case 0 : + draw_point(x0,y0,pcolor,opacity).draw_point(x1,y1,pcolor,opacity).draw_point(x2,y2,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,pcolor,opacity).draw_line(zbuffer,x0,y0,z0,x2,y2,z2,pcolor,opacity). + draw_line(zbuffer,x1,y1,z1,x2,y2,z2,pcolor,opacity); + else + draw_line(x0,y0,x1,y1,pcolor,opacity).draw_line(x0,y0,x2,y2,pcolor,opacity). + draw_line(x1,y1,x2,y2,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x0,height() - (float)y0,(float)x2,height() - (float)y2); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + } +#endif + break; + case 2 : + if (zbuffer) draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity); + else draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 3 : + if (zbuffer) draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity,lightprops(l)); + else _draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(color[0]*lp), + (unsigned char)(color[1]*lp), + (unsigned char)(color[2]*lp), + (unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 4 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor, + lightprops(n0),lightprops(n1),lightprops(n2),opacity); + else draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,lightprops(n0),lightprops(n1),lightprops(n2),opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprops(n0), + (float)x1,height() - (float)y1,lightprops(n1), + (float)x2,height() - (float)y2,lightprops(n2)); + } +#endif + break; + case 5 : { + const unsigned int + lx0 = (unsigned int)cimg::uiround(lightprops(n0,0)), ly0 = (unsigned int)cimg::uiround(lightprops(n0,1)), + lx1 = (unsigned int)cimg::uiround(lightprops(n1,0)), ly1 = (unsigned int)cimg::uiround(lightprops(n1,1)), + lx2 = (unsigned int)cimg::uiround(lightprops(n2,0)), ly2 = (unsigned int)cimg::uiround(lightprops(n2,1)); + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + else draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity); + +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n0,0))), + (int)(light_texture.height()/2*(1 + lightprops(n0,1)))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n1,0))), + (int)(light_texture.height()/2*(1 + lightprops(n1,1)))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n2,0))), + (int)(light_texture.height()/2*(1 + lightprops(n2,1)))); + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + } +#endif + } break; + } + } break; + case 4 : { // Colored quadrangle + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2], + n3 = (unsigned int)primitive[3]; + const int + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)), + x3 = cimg::uiround(projections(n3,0)), y3 = cimg::uiround(projections(n3,1)), + xc = (x0 + x1 + x2 + x3)/4, yc = (y0 + y1 + y2 + y3)/4; + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale, + z3 = vertices(n3,2) + Z + _focale, + zc = (z0 + z1 + z2 + z3)/4; + + switch (render_type) { + case 0 : + draw_point(x0,y0,pcolor,opacity).draw_point(x1,y1,pcolor,opacity). + draw_point(x2,y2,pcolor,opacity).draw_point(x3,y3,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + board.drawDot((float)x3,height() - (float)y3); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,pcolor,opacity).draw_line(zbuffer,x1,y1,z1,x2,y2,z2,pcolor,opacity). + draw_line(zbuffer,x2,y2,z2,x3,y3,z3,pcolor,opacity).draw_line(zbuffer,x3,y3,z3,x0,y0,z0,pcolor,opacity); + else + draw_line(x0,y0,x1,y1,pcolor,opacity).draw_line(x1,y1,x2,y2,pcolor,opacity). + draw_line(x2,y2,x3,y3,pcolor,opacity).draw_line(x3,y3,x0,y0,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + board.drawLine((float)x2,height() - (float)y2,(float)x3,height() - (float)y3); + board.drawLine((float)x3,height() - (float)y3,(float)x0,height() - (float)y0); + } +#endif + break; + case 2 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,pcolor,opacity); + else + draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity).draw_triangle(x0,y0,x2,y2,x3,y3,pcolor,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(color[0],color[1],color[2],(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 3 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,pcolor,opacity,lightprops(l)). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,pcolor,opacity,lightprops(l)); + else + _draw_triangle(x0,y0,x1,y1,x2,y2,pcolor,opacity,lightprops(l)). + _draw_triangle(x0,y0,x2,y2,x3,y3,pcolor,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(color[0]*lp), + (unsigned char)(color[1]*lp), + (unsigned char)(color[2]*lp),(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 4 : { + const float + lightprop0 = lightprops(n0), lightprop1 = lightprops(n1), + lightprop2 = lightprops(n2), lightprop3 = lightprops(n3), + lightpropc = (lightprop0 + lightprop1 + lightprop2 + lightprop2)/4; + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,xc,yc,zc,pcolor,lightprop0,lightprop1,lightpropc,opacity). + draw_triangle(zbuffer,x1,y1,z1,x2,y2,z2,xc,yc,zc,pcolor,lightprop1,lightprop2,lightpropc,opacity). + draw_triangle(zbuffer,x2,y2,z2,x3,y3,z3,xc,yc,zc,pcolor,lightprop2,lightprop3,lightpropc,opacity). + draw_triangle(zbuffer,x3,y3,z3,x0,y0,z0,xc,yc,zc,pcolor,lightprop3,lightprop0,lightpropc,opacity); + else + draw_triangle(x0,y0,x1,y1,xc,yc,pcolor,lightprop0,lightprop1,lightpropc,opacity). + draw_triangle(x1,y1,x2,y2,xc,yc,pcolor,lightprop1,lightprop2,lightpropc,opacity). + draw_triangle(x2,y2,x3,y3,xc,yc,pcolor,lightprop2,lightprop3,lightpropc,opacity). + draw_triangle(x3,y3,x0,y0,xc,yc,pcolor,lightprop3,lightprop0,lightpropc,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprop0, + (float)x1,height() - (float)y1,lightprop1, + (float)x2,height() - (float)y2,lightprop2); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprop0, + (float)x2,height() - (float)y2,lightprop2, + (float)x3,height() - (float)y3,lightprop3); + } +#endif + } break; + case 5 : { + const unsigned int + lx0 = (unsigned int)cimg::uiround(lightprops(n0,0)), ly0 = (unsigned int)cimg::uiround(lightprops(n0,1)), + lx1 = (unsigned int)cimg::uiround(lightprops(n1,0)), ly1 = (unsigned int)cimg::uiround(lightprops(n1,1)), + lx2 = (unsigned int)cimg::uiround(lightprops(n2,0)), ly2 = (unsigned int)cimg::uiround(lightprops(n2,1)), + lx3 = (unsigned int)cimg::uiround(lightprops(n3,0)), ly3 = (unsigned int)cimg::uiround(lightprops(n3,1)), + lxc = (lx0 + lx1 + lx2 + lx3)/4, lyc = (ly0 + ly1 + ly2 + ly3)/4; + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,xc,yc,zc,pcolor,light_texture,lx0,ly0,lx1,ly1,lxc,lyc,opacity). + draw_triangle(zbuffer,x1,y1,z1,x2,y2,z2,xc,yc,zc,pcolor,light_texture,lx1,ly1,lx2,ly2,lxc,lyc,opacity). + draw_triangle(zbuffer,x2,y2,z2,x3,y3,z3,xc,yc,zc,pcolor,light_texture,lx2,ly2,lx3,ly3,lxc,lyc,opacity). + draw_triangle(zbuffer,x3,y3,z3,x0,y0,z0,xc,yc,zc,pcolor,light_texture,lx3,ly3,lx0,ly0,lxc,lyc,opacity); + else + draw_triangle(x0,y0,x1,y1,xc,yc,pcolor,light_texture,lx0,ly0,lx1,ly1,lxc,lyc,opacity). + draw_triangle(x1,y1,x2,y2,xc,yc,pcolor,light_texture,lx1,ly1,lx2,ly2,lxc,lyc,opacity). + draw_triangle(x2,y2,x3,y3,xc,yc,pcolor,light_texture,lx2,ly2,lx3,ly3,lxc,lyc,opacity). + draw_triangle(x3,y3,x0,y0,xc,yc,pcolor,light_texture,lx3,ly3,lx0,ly0,lxc,lyc,opacity); + +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lx0)), (int)(light_texture.height()/2*(1 + ly0))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lx1)), (int)(light_texture.height()/2*(1 + ly1))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lx2)), (int)(light_texture.height()/2*(1 + ly2))), + l3 = light_texture((int)(light_texture.width()/2*(1 + lx3)), (int)(light_texture.height()/2*(1 + ly3))); + board.setPenColorRGBi((unsigned char)(color[0]), + (unsigned char)(color[1]), + (unsigned char)(color[2]), + (unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x2,height() - (float)y2,l2, + (float)x3,height() - (float)y3,l3); + } +#endif + } break; + } + } break; + case 9 : { // Textured triangle + if (!__color) { + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Undefined texture for triangle primitive [%u].", + cimg_instance,n_primitive); + } + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2]; + const int + tx0 = (int)primitive[3], ty0 = (int)primitive[4], + tx1 = (int)primitive[5], ty1 = (int)primitive[6], + tx2 = (int)primitive[7], ty2 = (int)primitive[8], + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale; + switch (render_type) { + case 0 : + draw_point(x0,y0,color.get_vector_at(tx0<=0?0:tx0>=color.width()?color.width() - 1:tx0, + ty0<=0?0:ty0>=color.height()?color.height() - 1:ty0)._data,opacity). + draw_point(x1,y1,color.get_vector_at(tx1<=0?0:tx1>=color.width()?color.width() - 1:tx1, + ty1<=0?0:ty1>=color.height()?color.height() - 1:ty1)._data,opacity). + draw_point(x2,y2,color.get_vector_at(tx2<=0?0:tx2>=color.width()?color.width() - 1:tx2, + ty2<=0?0:ty2>=color.height()?color.height() - 1:ty2)._data,opacity); +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(zbuffer,x0,y0,z0,x2,y2,z2,color,tx0,ty0,tx2,ty2,opacity). + draw_line(zbuffer,x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity); + else + draw_line(x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(x0,y0,z0,x2,y2,z2,color,tx0,ty0,tx2,ty2,opacity). + draw_line(x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x0,height() - (float)y0,(float)x2,height() - (float)y2); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + } +#endif + break; + case 2 : + if (zbuffer) draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity); + else draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 3 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)); + else draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + } +#endif + break; + case 4 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprops(n0),lightprops(n1),lightprops(n2),opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprops(n0),lightprops(n1),lightprops(n2),opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprops(n0), + (float)x1,height() - (float)y1,lightprops(n1), + (float)x2,height() - (float)y2,lightprops(n2)); + } +#endif + break; + case 5 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,light_texture, + (unsigned int)lightprops(n0,0),(unsigned int)lightprops(n0,1), + (unsigned int)lightprops(n1,0),(unsigned int)lightprops(n1,1), + (unsigned int)lightprops(n2,0),(unsigned int)lightprops(n2,1), + opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,light_texture, + (unsigned int)lightprops(n0,0),(unsigned int)lightprops(n0,1), + (unsigned int)lightprops(n1,0),(unsigned int)lightprops(n1,1), + (unsigned int)lightprops(n2,0),(unsigned int)lightprops(n2,1), + opacity); + +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n0,0))), + (int)(light_texture.height()/2*(1 + lightprops(n0,1)))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n1,0))), + (int)(light_texture.height()/2*(1 + lightprops(n1,1)))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lightprops(n2,0))), + (int)(light_texture.height()/2*(1 + lightprops(n2,1)))); + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + } +#endif + break; + } + } break; + case 12 : { // Textured quadrangle + if (!__color) { + if (render_type==5) cimg::mutex(10,0); + throw CImgArgumentException(_cimg_instance + "draw_object3d(): Undefined texture for quadrangle primitive [%u].", + cimg_instance,n_primitive); + } + const unsigned int + n0 = (unsigned int)primitive[0], + n1 = (unsigned int)primitive[1], + n2 = (unsigned int)primitive[2], + n3 = (unsigned int)primitive[3]; + const int + tx0 = (int)primitive[4], ty0 = (int)primitive[5], + tx1 = (int)primitive[6], ty1 = (int)primitive[7], + tx2 = (int)primitive[8], ty2 = (int)primitive[9], + tx3 = (int)primitive[10], ty3 = (int)primitive[11], + x0 = cimg::uiround(projections(n0,0)), y0 = cimg::uiround(projections(n0,1)), + x1 = cimg::uiround(projections(n1,0)), y1 = cimg::uiround(projections(n1,1)), + x2 = cimg::uiround(projections(n2,0)), y2 = cimg::uiround(projections(n2,1)), + x3 = cimg::uiround(projections(n3,0)), y3 = cimg::uiround(projections(n3,1)); + const float + z0 = vertices(n0,2) + Z + _focale, + z1 = vertices(n1,2) + Z + _focale, + z2 = vertices(n2,2) + Z + _focale, + z3 = vertices(n3,2) + Z + _focale; + + switch (render_type) { + case 0 : + draw_point(x0,y0,color.get_vector_at(tx0<=0?0:tx0>=color.width()?color.width() - 1:tx0, + ty0<=0?0:ty0>=color.height()?color.height() - 1:ty0)._data,opacity). + draw_point(x1,y1,color.get_vector_at(tx1<=0?0:tx1>=color.width()?color.width() - 1:tx1, + ty1<=0?0:ty1>=color.height()?color.height() - 1:ty1)._data,opacity). + draw_point(x2,y2,color.get_vector_at(tx2<=0?0:tx2>=color.width()?color.width() - 1:tx2, + ty2<=0?0:ty2>=color.height()?color.height() - 1:ty2)._data,opacity). + draw_point(x3,y3,color.get_vector_at(tx3<=0?0:tx3>=color.width()?color.width() - 1:tx3, + ty3<=0?0:ty3>=color.height()?color.height() - 1:ty3)._data,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawDot((float)x0,height() - (float)y0); + board.drawDot((float)x1,height() - (float)y1); + board.drawDot((float)x2,height() - (float)y2); + board.drawDot((float)x3,height() - (float)y3); + } +#endif + break; + case 1 : + if (zbuffer) + draw_line(zbuffer,x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(zbuffer,x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity). + draw_line(zbuffer,x2,y2,z2,x3,y3,z3,color,tx2,ty2,tx3,ty3,opacity). + draw_line(zbuffer,x3,y3,z3,x0,y0,z0,color,tx3,ty3,tx0,ty0,opacity); + else + draw_line(x0,y0,z0,x1,y1,z1,color,tx0,ty0,tx1,ty1,opacity). + draw_line(x1,y1,z1,x2,y2,z2,color,tx1,ty1,tx2,ty2,opacity). + draw_line(x2,y2,z2,x3,y3,z3,color,tx2,ty2,tx3,ty3,opacity). + draw_line(x3,y3,z3,x0,y0,z0,color,tx3,ty3,tx0,ty0,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.drawLine((float)x0,height() - (float)y0,(float)x1,height() - (float)y1); + board.drawLine((float)x1,height() - (float)y1,(float)x2,height() - (float)y2); + board.drawLine((float)x2,height() - (float)y2,(float)x3,height() - (float)y3); + board.drawLine((float)x3,height() - (float)y3,(float)x0,height() - (float)y0); + } +#endif + break; + case 2 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 3 : + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity,lightprops(l)); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2,opacity,lightprops(l)). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3,opacity,lightprops(l)); + +#ifdef cimg_use_board + if (pboard) { + const float lp = std::min(lightprops(l),1.f); + board.setPenColorRGBi((unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(128*lp), + (unsigned char)(opacity*255)); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x1,height() - (float)y1, + (float)x2,height() - (float)y2); + board.fillTriangle((float)x0,height() - (float)y0, + (float)x2,height() - (float)y2, + (float)x3,height() - (float)y3); + } +#endif + break; + case 4 : { + const float + lightprop0 = lightprops(n0), lightprop1 = lightprops(n1), + lightprop2 = lightprops(n2), lightprop3 = lightprops(n3); + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprop0,lightprop1,lightprop2,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + lightprop0,lightprop2,lightprop3,opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + lightprop0,lightprop1,lightprop2,opacity). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + lightprop0,lightprop2,lightprop3,opacity); + +#ifdef cimg_use_board + if (pboard) { + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,lightprop0, + (float)x1,height() - (float)y1,lightprop1, + (float)x2,height() - (float)y2,lightprop2); + board.fillGouraudTriangle((float)x0,height() -(float)y0,lightprop0, + (float)x2,height() - (float)y2,lightprop2, + (float)x3,height() - (float)y3,lightprop3); + } +#endif + } break; + case 5 : { + const unsigned int + lx0 = (unsigned int)cimg::uiround(lightprops(n0,0)), ly0 = (unsigned int)cimg::uiround(lightprops(n0,1)), + lx1 = (unsigned int)cimg::uiround(lightprops(n1,0)), ly1 = (unsigned int)cimg::uiround(lightprops(n1,1)), + lx2 = (unsigned int)cimg::uiround(lightprops(n2,0)), ly2 = (unsigned int)cimg::uiround(lightprops(n2,1)), + lx3 = (unsigned int)cimg::uiround(lightprops(n3,0)), ly3 = (unsigned int)cimg::uiround(lightprops(n3,1)); + if (zbuffer) + draw_triangle(zbuffer,x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity). + draw_triangle(zbuffer,x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + light_texture,lx0,ly0,lx2,ly2,lx3,ly3,opacity); + else + draw_triangle(x0,y0,z0,x1,y1,z1,x2,y2,z2,color,tx0,ty0,tx1,ty1,tx2,ty2, + light_texture,lx0,ly0,lx1,ly1,lx2,ly2,opacity). + draw_triangle(x0,y0,z0,x2,y2,z2,x3,y3,z3,color,tx0,ty0,tx2,ty2,tx3,ty3, + light_texture,lx0,ly0,lx2,ly2,lx3,ly3,opacity); +#ifdef cimg_use_board + if (pboard) { + const float + l0 = light_texture((int)(light_texture.width()/2*(1 + lx0)), (int)(light_texture.height()/2*(1 + ly0))), + l1 = light_texture((int)(light_texture.width()/2*(1 + lx1)), (int)(light_texture.height()/2*(1 + ly1))), + l2 = light_texture((int)(light_texture.width()/2*(1 + lx2)), (int)(light_texture.height()/2*(1 + ly2))), + l3 = light_texture((int)(light_texture.width()/2*(1 + lx3)), (int)(light_texture.height()/2*(1 + ly3))); + board.setPenColorRGBi(128,128,128,(unsigned char)(opacity*255)); + board.fillGouraudTriangle((float)x0,height() - (float)y0,l0, + (float)x1,height() - (float)y1,l1, + (float)x2,height() - (float)y2,l2); + board.fillGouraudTriangle((float)x0,height() -(float)y0,l0, + (float)x2,height() - (float)y2,l2, + (float)x3,height() - (float)y3,l3); + } +#endif + } break; + } + } break; + } + } + if (render_type==5) cimg::mutex(10,0); + return *this; + } + + //@} + //--------------------------- + // + //! \name Data Input + //@{ + //--------------------------- + + //! Launch simple interface to select a shape from an image. + /** + \param disp Display window to use. + \param feature_type Type of feature to select. Can be { 0=point | 1=line | 2=rectangle | 3=ellipse }. + \param XYZ Pointer to 3 values X,Y,Z which tells about the projection point coordinates, for volumetric images. + \param exit_on_anykey Exit function when any key is pressed. + **/ + CImg& select(CImgDisplay &disp, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) { + return get_select(disp,feature_type,XYZ,exit_on_anykey,is_deep_selection_default).move_to(*this); + } + + //! Simple interface to select a shape from an image \overloading. + CImg& select(const char *const title, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) { + return get_select(title,feature_type,XYZ,exit_on_anykey,is_deep_selection_default).move_to(*this); + } + + //! Simple interface to select a shape from an image \newinstance. + CImg get_select(CImgDisplay &disp, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) const { + return _select(disp,0,feature_type,XYZ,0,0,0,exit_on_anykey,true,false,is_deep_selection_default); + } + + //! Simple interface to select a shape from an image \newinstance. + CImg get_select(const char *const title, + const unsigned int feature_type=2, unsigned int *const XYZ=0, + const bool exit_on_anykey=false, + const bool is_deep_selection_default=false) const { + CImgDisplay disp; + return _select(disp,title,feature_type,XYZ,0,0,0,exit_on_anykey,true,false,is_deep_selection_default); + } + + CImg _select(CImgDisplay &disp, const char *const title, + const unsigned int feature_type, unsigned int *const XYZ, + const int origX, const int origY, const int origZ, + const bool exit_on_anykey, + const bool reset_view3d, + const bool force_display_z_coord, + const bool is_deep_selection_default) const { + if (is_empty()) return CImg(1,feature_type==0?3:6,1,1,-1); + if (!disp) { + disp.assign(cimg_fitscreen(_width,_height,_depth),title?title:0,1); + if (!title) disp.set_title("CImg<%s> (%ux%ux%ux%u)",pixel_type(),_width,_height,_depth,_spectrum); + } else { + if (title) disp.set_title("%s",title); + disp.move_inside_screen(); + } + + CImg thumb; + if (width()>disp.screen_width() || height()>disp.screen_height()) + get_resize(cimg_fitscreen(width(),height(),depth()),depth(),-100).move_to(thumb); + + const unsigned int old_normalization = disp.normalization(); + bool old_is_resized = disp.is_resized(); + disp._normalization = 0; + disp.show().set_key(0).set_wheel().show_mouse(); + + static const unsigned char foreground_color[] = { 255,255,255 }, background_color[] = { 0,0,0 }; + int area = 0, area_started = 0, area_clicked = 0, phase = 0, + X0 = (int)((XYZ?XYZ[0]:_width/2)%_width), + Y0 = (int)((XYZ?XYZ[1]:_height/2)%_height), + Z0 = (int)((XYZ?XYZ[2]:_depth/2)%_depth), + X1 =-1, Y1 = -1, Z1 = -1, + X3d = -1, Y3d = -1, + oX3d = X3d, oY3d = -1, + omx = -1, omy = -1; + float X = -1, Y = -1, Z = -1; + unsigned int key = 0, font_size = 32; + + bool is_deep_selection = is_deep_selection_default, + shape_selected = false, text_down = false, visible_cursor = true; + static CImg pose3d; + static bool is_view3d = false, is_axes = true; + if (reset_view3d) { pose3d.assign(); is_view3d = false; } + CImg points3d, opacities3d, sel_opacities3d; + CImgList primitives3d, sel_primitives3d; + CImgList colors3d, sel_colors3d; + CImg visu, visu0, view3d; + CImg text(1024); *text = 0; + + while (!key && !disp.is_closed() && !shape_selected) { + + // Handle mouse motion and selection + int + mx = disp.mouse_x(), + my = disp.mouse_y(); + + const float + mX = mx<0?-1.f:(float)mx*(width() + (depth()>1?depth():0))/disp.width(), + mY = my<0?-1.f:(float)my*(height() + (depth()>1?depth():0))/disp.height(); + + area = 0; + if (mX>=0 && mY>=0 && mX=0 && mX=height()) { area = 2; X = mX; Z = mY - _height; Y = (float)(phase?Y1:Y0); } + if (mY>=0 && mX>=width() && mY=width() && mY>=height()) area = 4; + if (disp.button()) { if (!area_clicked) area_clicked = area; } else area_clicked = 0; + + CImg filename(32); + + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyPAGEUP : + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { disp.set_wheel(1); key = 0; } break; + case cimg::keyPAGEDOWN : + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { disp.set_wheel(-1); key = 0; } break; + case cimg::keyX : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + is_axes = !is_axes; disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false).resize(cimg_fitscreen(_width,_height,_depth),false)._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false).toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyV : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + is_view3d = !is_view3d; disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + if (visu0) { + (+visu0).__draw_text(" Saving snapshot...",font_size,(int)text_down).display(disp); + visu0.save(filename); + (+visu0).__draw_text(" Snapshot '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + } + disp.set_key(key,false); key = 0; + } break; + case cimg::keyO : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { + +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu0).__draw_text(" Saving instance... ",font_size,(int)text_down).display(disp); + save(filename); + (+visu0).__draw_text(" Instance '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + } + + switch (area) { + + case 0 : // When mouse is out of image range + mx = my = -1; X = Y = Z = -1; + break; + + case 1 : case 2 : case 3 : { // When mouse is over the XY,XZ or YZ projections + const unsigned int but = disp.button(); + const bool b1 = (bool)(but&1), b2 = (bool)(but&2), b3 = (bool)(but&4); + + if (b1 && phase==1 && area_clicked==area) { // When selection has been started (1st step) + if (_depth>1 && (X1!=(int)X || Y1!=(int)Y || Z1!=(int)Z)) visu0.assign(); + X1 = (int)X; Y1 = (int)Y; Z1 = (int)Z; + } + if (!b1 && phase==2 && area_clicked!=area) { // When selection is at 2nd step (for volumes) + switch (area_started) { + case 1 : if (Z1!=(int)Z) visu0.assign(); Z1 = (int)Z; break; + case 2 : if (Y1!=(int)Y) visu0.assign(); Y1 = (int)Y; break; + case 3 : if (X1!=(int)X) visu0.assign(); X1 = (int)X; break; + } + } + if (b2 && area_clicked==area) { // When moving through the image/volume + if (phase) { + if (_depth>1 && (X1!=(int)X || Y1!=(int)Y || Z1!=(int)Z)) visu0.assign(); + X1 = (int)X; Y1 = (int)Y; Z1 = (int)Z; + } else { + if (_depth>1 && (X0!=(int)X || Y0!=(int)Y || Z0!=(int)Z)) visu0.assign(); + X0 = (int)X; Y0 = (int)Y; Z0 = (int)Z; + } + } + if (b3) { // Reset selection + X = (float)X0; Y = (float)Y0; Z = (float)Z0; phase = area = area_clicked = area_started = 0; + visu0.assign(); + } + if (disp.wheel()) { // When moving through the slices of the volume (with mouse wheel) + if (_depth>1 && !disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT() && + !disp.is_keySHIFTLEFT() && !disp.is_keySHIFTRIGHT()) { + switch (area) { + case 1 : + if (phase) Z = (float)(Z1+=disp.wheel()); else Z = (float)(Z0+=disp.wheel()); + visu0.assign(); break; + case 2 : + if (phase) Y = (float)(Y1+=disp.wheel()); else Y = (float)(Y0+=disp.wheel()); + visu0.assign(); break; + case 3 : + if (phase) X = (float)(X1+=disp.wheel()); else X = (float)(X0+=disp.wheel()); + visu0.assign(); break; + } + disp.set_wheel(); + } else key = ~0U; + } + + if ((phase==0 && b1) || + (phase==1 && !b1) || + (phase==2 && b1)) switch (phase) { // Detect change of phase + case 0 : + if (area==area_clicked) { + X0 = X1 = (int)X; Y0 = Y1 = (int)Y; Z0 = Z1 = (int)Z; area_started = area; ++phase; + } break; + case 1 : + if (area==area_started) { + X1 = (int)X; Y1 = (int)Y; Z1 = (int)Z; ++phase; + if (_depth>1) { + if (disp.is_keyCTRLLEFT()) is_deep_selection = !is_deep_selection_default; + if (is_deep_selection) ++phase; + } + } else if (!b1) { X = (float)X0; Y = (float)Y0; Z = (float)Z0; phase = 0; visu0.assign(); } + break; + case 2 : ++phase; break; + } + } break; + + case 4 : // When mouse is over the 3D view + if (is_view3d && points3d) { + X3d = mx - width()*disp.width()/(width() + (depth()>1?depth():0)); + Y3d = my - height()*disp.height()/(height() + (depth()>1?depth():0)); + if (oX3d<0) { oX3d = X3d; oY3d = Y3d; } + // Left + right buttons: reset. + if ((disp.button()&3)==3) { pose3d.assign(); view3d.assign(); oX3d = oY3d = X3d = Y3d = -1; } + else if (disp.button()&1 && pose3d && (oX3d!=X3d || oY3d!=Y3d)) { // Left button: rotate + const float + R = 0.45f*std::min(view3d._width,view3d._height), + R2 = R*R, + u0 = (float)(oX3d - view3d.width()/2), + v0 = (float)(oY3d - view3d.height()/2), + u1 = (float)(X3d - view3d.width()/2), + v1 = (float)(Y3d - view3d.height()/2), + n0 = cimg::hypot(u0,v0), + n1 = cimg::hypot(u1,v1), + nu0 = n0>R?(u0*R/n0):u0, + nv0 = n0>R?(v0*R/n0):v0, + nw0 = (float)std::sqrt(std::max(0.f,R2 - nu0*nu0 - nv0*nv0)), + nu1 = n1>R?(u1*R/n1):u1, + nv1 = n1>R?(v1*R/n1):v1, + nw1 = (float)std::sqrt(std::max(0.f,R2 - nu1*nu1 - nv1*nv1)), + u = nv0*nw1 - nw0*nv1, + v = nw0*nu1 - nu0*nw1, + w = nv0*nu1 - nu0*nv1, + n = cimg::hypot(u,v,w), + alpha = (float)std::asin(n/R2)*180/cimg::PI; + pose3d.draw_image(CImg::rotation_matrix(u,v,w,-alpha)*pose3d.get_crop(0,0,2,2)); + view3d.assign(); + } else if (disp.button()&2 && pose3d && oY3d!=Y3d) { // Right button: zoom + pose3d(3,2)+=(Y3d - oY3d)*1.5f; view3d.assign(); + } + if (disp.wheel()) { // Wheel: zoom + pose3d(3,2)-=disp.wheel()*15; view3d.assign(); disp.set_wheel(); + } + if (disp.button()&4 && pose3d && (oX3d!=X3d || oY3d!=Y3d)) { // Middle button: shift + pose3d(3,0)-=oX3d - X3d; pose3d(3,1)-=oY3d - Y3d; view3d.assign(); + } + oX3d = X3d; oY3d = Y3d; + } + mx = my = -1; X = Y = Z = -1; + break; + } + + if (phase) { + if (!feature_type) shape_selected = phase?true:false; + else { + if (_depth>1) shape_selected = (phase==3)?true:false; + else shape_selected = (phase==2)?true:false; + } + } + + if (X0<0) X0 = 0; + if (X0>=width()) X0 = width() - 1; + if (Y0<0) Y0 = 0; + if (Y0>=height()) Y0 = height() - 1; + if (Z0<0) Z0 = 0; + if (Z0>=depth()) Z0 = depth() - 1; + if (X1<1) X1 = 0; + if (X1>=width()) X1 = width() - 1; + if (Y1<0) Y1 = 0; + if (Y1>=height()) Y1 = height() - 1; + if (Z1<0) Z1 = 0; + if (Z1>=depth()) Z1 = depth() - 1; + + // Draw visualization image on the display + if (mx!=omx || my!=omy || !visu0 || (_depth>1 && !view3d)) { + + if (!visu0) { // Create image of projected planes + if (thumb) thumb._get_select(disp,old_normalization,phase?X1:X0,phase?Y1:Y0,phase?Z1:Z0).move_to(visu0); + else _get_select(disp,old_normalization,phase?X1:X0,phase?Y1:Y0,phase?Z1:Z0).move_to(visu0); + visu0.resize(disp); + view3d.assign(); + points3d.assign(); + } + + if (is_view3d && _depth>1 && !view3d) { // Create 3D view for volumetric images + const unsigned int + _x3d = (unsigned int)cimg::round((float)_width*visu0._width/(_width + _depth),1,1), + _y3d = (unsigned int)cimg::round((float)_height*visu0._height/(_height + _depth),1,1), + x3d = _x3d>=visu0._width?visu0._width - 1:_x3d, + y3d = _y3d>=visu0._height?visu0._height - 1:_y3d; + CImg(1,2,1,1,64,128).resize(visu0._width - x3d,visu0._height - y3d,1,visu0._spectrum,3). + move_to(view3d); + if (!points3d) { + get_projections3d(primitives3d,colors3d,phase?X1:X0,phase?Y1:Y0,phase?Z1:Z0,true).move_to(points3d); + points3d.append(CImg(8,3,1,1, + 0,_width - 1,_width - 1,0,0,_width - 1,_width - 1,0, + 0,0,_height - 1,_height - 1,0,0,_height - 1,_height - 1, + 0,0,0,0,_depth - 1,_depth - 1,_depth - 1,_depth - 1),'x'); + CImg::vector(12,13).move_to(primitives3d); CImg::vector(13,14).move_to(primitives3d); + CImg::vector(14,15).move_to(primitives3d); CImg::vector(15,12).move_to(primitives3d); + CImg::vector(16,17).move_to(primitives3d); CImg::vector(17,18).move_to(primitives3d); + CImg::vector(18,19).move_to(primitives3d); CImg::vector(19,16).move_to(primitives3d); + CImg::vector(12,16).move_to(primitives3d); CImg::vector(13,17).move_to(primitives3d); + CImg::vector(14,18).move_to(primitives3d); CImg::vector(15,19).move_to(primitives3d); + colors3d.insert(12,CImg::vector(255,255,255)); + opacities3d.assign(primitives3d.width(),1,1,1,0.5f); + if (!phase) { + opacities3d[0] = opacities3d[1] = opacities3d[2] = 0.8f; + sel_primitives3d.assign(); + sel_colors3d.assign(); + sel_opacities3d.assign(); + } else { + if (feature_type==2) { + points3d.append(CImg(8,3,1,1, + X0,X1,X1,X0,X0,X1,X1,X0, + Y0,Y0,Y1,Y1,Y0,Y0,Y1,Y1, + Z0,Z0,Z0,Z0,Z1,Z1,Z1,Z1),'x'); + sel_primitives3d.assign(); + CImg::vector(20,21).move_to(sel_primitives3d); + CImg::vector(21,22).move_to(sel_primitives3d); + CImg::vector(22,23).move_to(sel_primitives3d); + CImg::vector(23,20).move_to(sel_primitives3d); + CImg::vector(24,25).move_to(sel_primitives3d); + CImg::vector(25,26).move_to(sel_primitives3d); + CImg::vector(26,27).move_to(sel_primitives3d); + CImg::vector(27,24).move_to(sel_primitives3d); + CImg::vector(20,24).move_to(sel_primitives3d); + CImg::vector(21,25).move_to(sel_primitives3d); + CImg::vector(22,26).move_to(sel_primitives3d); + CImg::vector(23,27).move_to(sel_primitives3d); + } else { + points3d.append(CImg(2,3,1,1, + X0,X1, + Y0,Y1, + Z0,Z1),'x'); + sel_primitives3d.assign(CImg::vector(20,21)); + } + sel_colors3d.assign(sel_primitives3d._width,CImg::vector(255,255,255)); + sel_opacities3d.assign(sel_primitives3d._width,1,1,1,0.8f); + } + points3d.shift_object3d(-0.5f*(_width - 1),-0.5f*(_height - 1),-0.5f*(_depth - 1)).resize_object3d(); + points3d*=0.75f*std::min(view3d._width,view3d._height); + } + + if (!pose3d) CImg(4,3,1,1, 1,0,0,0, 0,1,0,0, 0,0,1,0).move_to(pose3d); + CImg zbuffer3d(view3d._width,view3d._height,1,1,0); + const CImg rotated_points3d = pose3d.get_crop(0,0,2,2)*points3d; + if (sel_primitives3d) + view3d.draw_object3d(pose3d(3,0) + 0.5f*view3d._width, + pose3d(3,1) + 0.5f*view3d._height, + pose3d(3,2), + rotated_points3d,sel_primitives3d,sel_colors3d,sel_opacities3d, + 2,true,500,0,0,0,0,0,1,zbuffer3d); + view3d.draw_object3d(pose3d(3,0) + 0.5f*view3d._width, + pose3d(3,1) + 0.5f*view3d._height, + pose3d(3,2), + rotated_points3d,primitives3d,colors3d,opacities3d, + 2,true,500,0,0,0,0,0,1,zbuffer3d); + visu0.draw_image(x3d,y3d,view3d); + } + visu = visu0; + + if (X<0 || Y<0 || Z<0) { if (!visible_cursor) { disp.show_mouse(); visible_cursor = true; }} + else { + if (is_axes) { if (visible_cursor) { disp.hide_mouse(); visible_cursor = false; }} + else { if (!visible_cursor) { disp.show_mouse(); visible_cursor = true; }} + const int d = (depth()>1)?depth():0; + int _vX = (int)X, _vY = (int)Y, _vZ = (int)Z; + if (phase>=2) { _vX = X1; _vY = Y1; _vZ = Z1; } + int + w = disp.width(), W = width() + d, + h = disp.height(), H = height() + d, + _xp = (int)(_vX*(float)w/W), xp = _xp + ((int)(_xp*(float)W/w)!=_vX), + _yp = (int)(_vY*(float)h/H), yp = _yp + ((int)(_yp*(float)H/h)!=_vY), + _xn = (int)((_vX + 1.f)*w/W - 1), xn = _xn + ((int)((_xn + 1.f)*W/w)!=_vX + 1), + _yn = (int)((_vY + 1.f)*h/H - 1), yn = _yn + ((int)((_yn + 1.f)*H/h)!=_vY + 1), + _zxp = (int)((_vZ + width())*(float)w/W), zxp = _zxp + ((int)(_zxp*(float)W/w)!=_vZ + width()), + _zyp = (int)((_vZ + height())*(float)h/H), zyp = _zyp + ((int)(_zyp*(float)H/h)!=_vZ + height()), + _zxn = (int)((_vZ + width() + 1.f)*w/W - 1), + zxn = _zxn + ((int)((_zxn + 1.f)*W/w)!=_vZ + width() + 1), + _zyn = (int)((_vZ + height() + 1.f)*h/H - 1), + zyn = _zyn + ((int)((_zyn + 1.f)*H/h)!=_vZ + height() + 1), + _xM = (int)(width()*(float)w/W - 1), xM = _xM + ((int)((_xM + 1.f)*W/w)!=width()), + _yM = (int)(height()*(float)h/H - 1), yM = _yM + ((int)((_yM + 1.f)*H/h)!=height()), + xc = (xp + xn)/2, + yc = (yp + yn)/2, + zxc = (zxp + zxn)/2, + zyc = (zyp + zyn)/2, + xf = (int)(X*w/W), + yf = (int)(Y*h/H), + zxf = (int)((Z + width())*w/W), + zyf = (int)((Z + height())*h/H); + + if (is_axes) { // Draw axes + visu.draw_line(0,yf,visu.width() - 1,yf,foreground_color,0.7f,0xFF00FF00). + draw_line(0,yf,visu.width() - 1,yf,background_color,0.7f,0x00FF00FF). + draw_line(xf,0,xf,visu.height() - 1,foreground_color,0.7f,0xFF00FF00). + draw_line(xf,0,xf,visu.height() - 1,background_color,0.7f,0x00FF00FF); + if (_depth>1) + visu.draw_line(zxf,0,zxf,yM,foreground_color,0.7f,0xFF00FF00). + draw_line(zxf,0,zxf,yM,background_color,0.7f,0x00FF00FF). + draw_line(0,zyf,xM,zyf,foreground_color,0.7f,0xFF00FF00). + draw_line(0,zyf,xM,zyf,background_color,0.7f,0x00FF00FF); + } + + // Draw box cursor. + if (xn - xp>=4 && yn - yp>=4) + visu.draw_rectangle(xp,yp,xn,yn,foreground_color,0.2f). + draw_rectangle(xp,yp,xn,yn,foreground_color,1,0xAAAAAAAA). + draw_rectangle(xp,yp,xn,yn,background_color,1,0x55555555); + if (_depth>1) { + if (yn - yp>=4 && zxn - zxp>=4) + visu.draw_rectangle(zxp,yp,zxn,yn,background_color,0.2f). + draw_rectangle(zxp,yp,zxn,yn,foreground_color,1,0xAAAAAAAA). + draw_rectangle(zxp,yp,zxn,yn,background_color,1,0x55555555); + if (xn - xp>=4 && zyn - zyp>=4) + visu.draw_rectangle(xp,zyp,xn,zyn,background_color,0.2f). + draw_rectangle(xp,zyp,xn,zyn,foreground_color,1,0xAAAAAAAA). + draw_rectangle(xp,zyp,xn,zyn,background_color,1,0x55555555); + } + + // Draw selection. + if (phase && (phase!=1 || area_started==area)) { + const int + _xp0 = (int)(X0*(float)w/W), xp0 = _xp0 + ((int)(_xp0*(float)W/w)!=X0), + _yp0 = (int)(Y0*(float)h/H), yp0 = _yp0 + ((int)(_yp0*(float)H/h)!=Y0), + _xn0 = (int)((X0 + 1.f)*w/W - 1), xn0 = _xn0 + ((int)((_xn0 + 1.f)*W/w)!=X0 + 1), + _yn0 = (int)((Y0 + 1.f)*h/H - 1), yn0 = _yn0 + ((int)((_yn0 + 1.f)*H/h)!=Y0 + 1), + _zxp0 = (int)((Z0 + width())*(float)w/W), zxp0 = _zxp0 + ((int)(_zxp0*(float)W/w)!=Z0 + width()), + _zyp0 = (int)((Z0 + height())*(float)h/H), zyp0 = _zyp0 + ((int)(_zyp0*(float)H/h)!=Z0 + height()), + _zxn0 = (int)((Z0 + width() + 1.f)*w/W - 1), + zxn0 = _zxn0 + ((int)((_zxn0 + 1.f)*W/w)!=Z0 + width() + 1), + _zyn0 = (int)((Z0 + height() + 1.f)*h/H - 1), + zyn0 = _zyn0 + ((int)((_zyn0 + 1.f)*H/h)!=Z0 + height() + 1), + xc0 = (xp0 + xn0)/2, + yc0 = (yp0 + yn0)/2, + zxc0 = (zxp0 + zxn0)/2, + zyc0 = (zyp0 + zyn0)/2; + + switch (feature_type) { + case 1 : { // Vector + visu.draw_arrow(xc0,yc0,xc,yc,background_color,0.9f,30,5,0x33333333). + draw_arrow(xc0,yc0,xc,yc,foreground_color,0.9f,30,5,0xCCCCCCCC); + if (d) { + visu.draw_arrow(zxc0,yc0,zxc,yc,background_color,0.9f,30,5,0x33333333). + draw_arrow(zxc0,yc0,zxc,yc,foreground_color,0.9f,30,5,0xCCCCCCCC). + draw_arrow(xc0,zyc0,xc,zyc,background_color,0.9f,30,5,0x33333333). + draw_arrow(xc0,zyc0,xc,zyc,foreground_color,0.9f,30,5,0xCCCCCCCC); + } + } break; + case 2 : { // Box + visu.draw_rectangle(X0=0 && my<13) text_down = true; else if (my>=visu.height() - 13) text_down = false; + if (!feature_type || !phase) { + if (X>=0 && Y>=0 && Z>=0 && X1 || force_display_z_coord) + cimg_snprintf(text,text._width," Point (%d,%d,%d) = [ ",origX + (int)X,origY + (int)Y,origZ + (int)Z); + else cimg_snprintf(text,text._width," Point (%d,%d) = [ ",origX + (int)X,origY + (int)Y); + CImg values = get_vector_at((int)X,(int)Y,(int)Z); + const bool is_large_spectrum = values._height>8; + if (is_large_spectrum) + values.draw_image(0,4,values.get_rows(values._height - 4,values._height - 1)).resize(1,8,1,1,0); + char *ctext = text._data + std::strlen(text), *const ltext = text._data + 512; + for (unsigned int c = 0; c::format_s(), + cimg::type::format(values[c])); + ctext += std::strlen(ctext); + if (c==3 && is_large_spectrum) { + cimg_snprintf(ctext,24," ..."); + ctext += std::strlen(ctext); + } + *(ctext++) = ' '; *ctext = 0; + } + std::strcpy(text._data + std::strlen(text),"] "); + } + } else switch (feature_type) { + case 1 : { + const double dX = (double)(X0 - X1), dY = (double)(Y0 - Y1), dZ = (double)(Z0 - Z1), + length = cimg::round(cimg::hypot(dX,dY,dZ),0.1); + if (_depth>1 || force_display_z_coord) + cimg_snprintf(text,text._width," Vect (%d,%d,%d)-(%d,%d,%d), Length = %g ", + origX + X0,origY + Y0,origZ + Z0,origX + X1,origY + Y1,origZ + Z1,length); + else if (_width!=1 && _height!=1) + cimg_snprintf(text,text._width," Vect (%d,%d)-(%d,%d), Length = %g, Angle = %g\260 ", + origX + X0,origY + Y0,origX + X1,origY + Y1,length, + cimg::round(cimg::mod(180*std::atan2(-dY,-dX)/cimg::PI,360.),0.1)); + else + cimg_snprintf(text,text._width," Vect (%d,%d)-(%d,%d), Length = %g ", + origX + X0,origY + Y0,origX + X1,origY + Y1,length); + } break; + case 2 : { + const double dX = (double)(X0 - X1), dY = (double)(Y0 - Y1), dZ = (double)(Z0 - Z1), + length = cimg::round(cimg::hypot(dX,dY,dZ),0.1); + if (_depth>1 || force_display_z_coord) + cimg_snprintf(text,text._width, + " Box ( %d,%d,%d ) - ( %d,%d,%d )\n Size = ( %d,%d,%d ), Length = %g ", + origX + (X01 || force_display_z_coord) + cimg_snprintf(text,text._width," Ellipse ( %d,%d,%d ) - ( %d,%d,%d ), Radii = ( %d,%d,%d ) ", + origX + X0,origY + Y0,origZ + Z0,origX + X1,origY + Y1,origZ + Z1, + 1 + cimg::abs(X0 - X1),1 + cimg::abs(Y0 - Y1),1 + cimg::abs(Z0 - Z1)); + else cimg_snprintf(text,text._width," Ellipse ( %d,%d ) - ( %d,%d ), Radii = ( %d,%d ) ", + origX + X0,origY + Y0,origX + X1,origY + Y1, + 1 + cimg::abs(X0 - X1),1 + cimg::abs(Y0 - Y1)); + } + if (phase || (mx>=0 && my>=0)) visu.__draw_text("%s",font_size,(int)text_down,text._data); + } + + disp.display(visu); + } + if (!shape_selected) disp.wait(); + if (disp.is_resized()) { disp.resize(false)._is_resized = false; old_is_resized = true; visu0.assign(); } + omx = mx; omy = my; + if (!exit_on_anykey && key && key!=cimg::keyESC && + (key!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + key = 0; + } + } + + // Return result. + CImg res(1,feature_type==0?3:6,1,1,-1); + if (XYZ) { XYZ[0] = (unsigned int)X0; XYZ[1] = (unsigned int)Y0; XYZ[2] = (unsigned int)Z0; } + if (shape_selected) { + if (feature_type==2) { + if (is_deep_selection) switch (area_started) { + case 1 : Z0 = 0; Z1 = _depth - 1; break; + case 2 : Y0 = 0; Y1 = _height - 1; break; + case 3 : X0 = 0; X1 = _width - 1; break; + } + if (X0>X1) cimg::swap(X0,X1); + if (Y0>Y1) cimg::swap(Y0,Y1); + if (Z0>Z1) cimg::swap(Z0,Z1); + } + if (X1<0 || Y1<0 || Z1<0) X0 = Y0 = Z0 = X1 = Y1 = Z1 = -1; + switch (feature_type) { + case 1 : case 2 : res[0] = X0; res[1] = Y0; res[2] = Z0; res[3] = X1; res[4] = Y1; res[5] = Z1; break; + case 3 : + res[3] = cimg::abs(X1 - X0); res[4] = cimg::abs(Y1 - Y0); res[5] = cimg::abs(Z1 - Z0); + res[0] = X0; res[1] = Y0; res[2] = Z0; + break; + default : res[0] = X0; res[1] = Y0; res[2] = Z0; + } + } + if (!exit_on_anykey || !(disp.button()&4)) disp.set_button(); + if (!visible_cursor) disp.show_mouse(); + disp._normalization = old_normalization; + disp._is_resized = old_is_resized; + if (key!=~0U) disp.set_key(key); + return res; + } + + // Return a visualizable uchar8 image for display routines. + CImg _get_select(const CImgDisplay& disp, const int normalization, + const int x, const int y, const int z) const { + if (is_empty()) return CImg(1,1,1,1,0); + const CImg crop = get_shared_channels(0,std::min(2,spectrum() - 1)); + CImg img2d; + if (_depth>1) { + const int mdisp = std::min(disp.screen_width(),disp.screen_height()); + if (depth()>mdisp) { + crop.get_resize(-100,-100,mdisp,-100,0).move_to(img2d); + img2d.projections2d(x,y,z*img2d._depth/_depth); + } else crop.get_projections2d(x,y,z).move_to(img2d); + } else CImg(crop,false).move_to(img2d); + + // Check for inf and NaN values. + if (cimg::type::is_float() && normalization) { + bool is_inf = false, is_nan = false; + cimg_for(img2d,ptr,Tuchar) + if (cimg::type::is_inf(*ptr)) { is_inf = true; break; } + else if (cimg::type::is_nan(*ptr)) { is_nan = true; break; } + if (is_inf || is_nan) { + Tint m0 = (Tint)cimg::type::max(), M0 = (Tint)cimg::type::min(); + if (!normalization) { m0 = 0; M0 = 255; } + else if (normalization==2) { m0 = (Tint)disp._min; M0 = (Tint)disp._max; } + else + cimg_for(img2d,ptr,Tuchar) + if (!cimg::type::is_inf(*ptr) && !cimg::type::is_nan(*ptr)) { + if (*ptr<(Tuchar)m0) m0 = *ptr; + if (*ptr>(Tuchar)M0) M0 = *ptr; + } + const T + val_minf = (T)(normalization==1 || normalization==3?m0 - (M0 - m0)*20 - 1:m0), + val_pinf = (T)(normalization==1 || normalization==3?M0 + (M0 - m0)*20 + 1:M0); + if (is_nan) + cimg_for(img2d,ptr,Tuchar) + if (cimg::type::is_nan(*ptr)) *ptr = val_minf; // Replace NaN values + if (is_inf) + cimg_for(img2d,ptr,Tuchar) + if (cimg::type::is_inf(*ptr)) *ptr = (float)*ptr<0?val_minf:val_pinf; // Replace +-inf values + } + } + + switch (normalization) { + case 1 : img2d.normalize((ucharT)0,(ucharT)255); break; + case 2 : { + const float m = disp._min, M = disp._max; + (img2d-=m)*=255.f/(M - m>0?M - m:1); + } break; + case 3 : + if (cimg::type::is_float()) img2d.normalize((ucharT)0,(ucharT)255); + else { + const float + m = (float)cimg::type::min(), + M = (float)cimg::type::max(); + (img2d-=m)*=255.f/(M - m>0?M - m:1); + } break; + } + if (img2d.spectrum()==2) img2d.channels(0,2); + return img2d; + } + + //! Select sub-graph in a graph. + CImg get_select_graph(CImgDisplay &disp, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "select_graph(): Empty instance.", + cimg_instance); + if (!disp) disp.assign(cimg_fitscreen(CImgDisplay::screen_width()/2,CImgDisplay::screen_height()/2,1),0,0). + set_title("CImg<%s>",pixel_type()); + const ulongT siz = (ulongT)_width*_height*_depth; + const unsigned int old_normalization = disp.normalization(); + disp.show().set_button().set_wheel()._normalization = 0; + + double nymin = ymin, nymax = ymax, nxmin = xmin, nxmax = xmax; + if (nymin==nymax) { nymin = (Tfloat)min_max(nymax); const double dy = nymax - nymin; nymin-=dy/20; nymax+=dy/20; } + if (nymin==nymax) { --nymin; ++nymax; } + if (nxmin==nxmax && nxmin==0) { nxmin = 0; nxmax = siz - 1.; } + + static const unsigned char black[] = { 0, 0, 0 }, white[] = { 255, 255, 255 }, gray[] = { 220, 220, 220 }; + static const unsigned char gray2[] = { 110, 110, 110 }, ngray[] = { 35, 35, 35 }; + + CImg colormap(3,_spectrum); + if (_spectrum==1) { colormap[0] = colormap[1] = 120; colormap[2] = 200; } + else { + colormap(0,0) = 220; colormap(1,0) = 10; colormap(2,0) = 10; + if (_spectrum>1) { colormap(0,1) = 10; colormap(1,1) = 220; colormap(2,1) = 10; } + if (_spectrum>2) { colormap(0,2) = 10; colormap(1,2) = 10; colormap(2,2) = 220; } + if (_spectrum>3) { colormap(0,3) = 220; colormap(1,3) = 220; colormap(2,3) = 10; } + if (_spectrum>4) { colormap(0,4) = 220; colormap(1,4) = 10; colormap(2,4) = 220; } + if (_spectrum>5) { colormap(0,5) = 10; colormap(1,5) = 220; colormap(2,5) = 220; } + if (_spectrum>6) { + cimg_uint64 rng = 10; + cimg_for_inY(colormap,6,colormap.height()-1,k) { + colormap(0,k) = (unsigned char)(120 + cimg::rand(-100.f,100.f,&rng)); + colormap(1,k) = (unsigned char)(120 + cimg::rand(-100.f,100.f,&rng)); + colormap(2,k) = (unsigned char)(120 + cimg::rand(-100.f,100.f,&rng)); + } + } + } + + CImg visu0, visu, graph, text, axes; + int x0 = -1, x1 = -1, y0 = -1, y1 = -1, omouse_x = -2, omouse_y = -2; + const unsigned int one = plot_type==3?0U:1U; + unsigned int okey = 0, obutton = 0, font_size = 32; + CImg message(1024); + CImg_3x3(I,unsigned char); + + for (bool selected = false; !selected && !disp.is_closed() && !okey && !disp.wheel(); ) { + const int mouse_x = disp.mouse_x(), mouse_y = disp.mouse_y(); + const unsigned int key = disp.key(), button = disp.button(); + + // Generate graph representation. + if (!visu0) { + visu0.assign(disp.width(),disp.height(),1,3,220); + const int gdimx = disp.width() - 32, gdimy = disp.height() - 32; + if (gdimx>0 && gdimy>0) { + graph.assign(gdimx,gdimy,1,3,255); + if (siz<32) { + if (siz>1) graph.draw_grid(gdimx/(float)(siz - one),gdimy/(float)(siz - one),0,0, + false,true,black,0.2f,0x33333333,0x33333333); + } else graph.draw_grid(-10,-10,0,0,false,true,black,0.2f,0x33333333,0x33333333); + cimg_forC(*this,c) + graph.draw_graph(get_shared_channel(c),&colormap(0,c),(plot_type!=3 || _spectrum==1)?1:0.6f, + plot_type,vertex_type,nymax,nymin); + + axes.assign(gdimx,gdimy,1,1,0); + const float + dx = (float)cimg::abs(nxmax - nxmin), dy = (float)cimg::abs(nymax - nymin), + px = (float)std::pow(10.,(int)std::log10(dx?dx:1) - 2.), + py = (float)std::pow(10.,(int)std::log10(dy?dy:1) - 2.); + const CImg + seqx = dx<=0?CImg::vector(nxmin): + CImg::sequence(1 + gdimx/60,nxmin,one?nxmax:nxmin + (nxmax - nxmin)*(siz + 1)/siz), + seqy = CImg::sequence(1 + gdimy/60,nymax,nymin); + + const bool allow_zero = (nxmin*nxmax>0) || (nymin*nymax>0); + axes.draw_axes(seqx,seqy,white,1,~0U,~0U,13,allow_zero,px,py); + if (nymin>0) axes.draw_axis(seqx,gdimy - 1,gray,1,~0U,13,allow_zero,px); + if (nymax<0) axes.draw_axis(seqx,0,gray,1,~0U,13,allow_zero,px); + if (nxmin>0) axes.draw_axis(0,seqy,gray,1,~0U,13,allow_zero,py); + if (nxmax<0) axes.draw_axis(gdimx - 1,seqy,gray,1,~0U,13,allow_zero,py); + + cimg_for3x3(axes,x,y,0,0,I,unsigned char) + if (Icc) { + if (Icc==255) cimg_forC(graph,c) graph(x,y,c) = 0; + else cimg_forC(graph,c) graph(x,y,c) = (unsigned char)(2*graph(x,y,c)/3); + } + else if (Ipc || Inc || Icp || Icn || Ipp || Inn || Ipn || Inp) + cimg_forC(graph,c) graph(x,y,c) = (unsigned char)((graph(x,y,c) + 511)/3); + + visu0.draw_image(16,16,graph); + visu0.draw_line(15,15,16 + gdimx,15,gray2).draw_line(16 + gdimx,15,16 + gdimx,16 + gdimy,gray2). + draw_line(16 + gdimx,16 + gdimy,15,16 + gdimy,white).draw_line(15,16 + gdimy,15,15,white); + } else graph.assign(); + text.assign().draw_text(0,0,labelx?labelx:"X-axis",white,ngray,1,13).resize(-100,-100,1,3); + visu0.draw_image((visu0.width() - text.width())/2,visu0.height() - 14,~text); + text.assign().draw_text(0,0,labely?labely:"Y-axis",white,ngray,1,13).rotate(-90).resize(-100,-100,1,3); + visu0.draw_image(1,(visu0.height() - text.height())/2,~text); + visu.assign(); + } + + // Generate and display current view. + if (!visu) { + visu.assign(visu0); + if (graph && x0>=0 && x1>=0) { + const int + nx0 = x0<=x1?x0:x1, + nx1 = x0<=x1?x1:x0, + ny0 = y0<=y1?y0:y1, + ny1 = y0<=y1?y1:y0, + sx0 = (int)(16 + nx0*(visu.width() - 32)/std::max((ulongT)1,siz - one)), + sx1 = (int)(15 + (nx1 + 1)*(visu.width() - 32)/std::max((ulongT)1,siz - one)), + sy0 = 16 + ny0, + sy1 = 16 + ny1; + if (y0>=0 && y1>=0) + visu.draw_rectangle(sx0,sy0,sx1,sy1,gray,0.5f).draw_rectangle(sx0,sy0,sx1,sy1,black,0.5f,0xCCCCCCCCU); + else visu.draw_rectangle(sx0,0,sx1,visu.height() - 17,gray,0.5f). + draw_line(sx0,16,sx0,visu.height() - 17,black,0.5f,0xCCCCCCCCU). + draw_line(sx1,16,sx1,visu.height() - 17,black,0.5f,0xCCCCCCCCU); + } + if (mouse_x>=16 && mouse_y>=16 && mouse_x=7) + cimg_snprintf(message,message._width,"Value[%u:%g] = ( %g %g %g ... %g %g %g )",x,cx, + (double)(*this)(x,0,0,0),(double)(*this)(x,0,0,1),(double)(*this)(x,0,0,2), + (double)(*this)(x,0,0,_spectrum - 4),(double)(*this)(x,0,0,_spectrum - 3), + (double)(*this)(x,0,0,_spectrum - 1)); + else { + cimg_snprintf(message,message._width,"Value[%u:%g] = ( ",x,cx); + cimg_forC(*this,c) cimg_sprintf(message._data + std::strlen(message),"%g ",(double)(*this)(x,0,0,c)); + cimg_sprintf(message._data + std::strlen(message),")"); + } + if (x0>=0 && x1>=0) { + const unsigned int + nx0 = (unsigned int)(x0<=x1?x0:x1), + nx1 = (unsigned int)(x0<=x1?x1:x0), + ny0 = (unsigned int)(y0<=y1?y0:y1), + ny1 = (unsigned int)(y0<=y1?y1:y0); + const double + cx0 = nxmin + nx0*(nxmax - nxmin)/std::max((ulongT)1,siz - 1), + cx1 = nxmin + (nx1 + one)*(nxmax - nxmin)/std::max((ulongT)1,siz - 1), + cy0 = nymax - ny0*(nymax - nymin)/(visu._height - 32), + cy1 = nymax - ny1*(nymax - nymin)/(visu._height - 32); + if (y0>=0 && y1>=0) + cimg_sprintf(message._data + std::strlen(message)," - Range ( %u:%g, %g ) - ( %u:%g, %g )", + x0,cx0,cy0,x1 + one,cx1,cy1); + else + cimg_sprintf(message._data + std::strlen(message)," - Range [ %u:%g - %u:%g ]", + x0,cx0,x1 + one,cx1); + } + text.assign().draw_text(0,0,message,white,ngray,1,13).resize(-100,-100,1,3); + visu.draw_image((visu.width() - text.width())/2,1,~text); + } + visu.display(disp); + } + + // Test keys. + CImg filename(32); + switch (okey = key) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : case cimg::keySHIFTRIGHT : +#endif + case cimg::keyCTRLLEFT : case cimg::keySHIFTLEFT : okey = 0; break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(CImgDisplay::screen_width()/2, + CImgDisplay::screen_height()/2,1),false)._is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false).toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + if (visu || visu0) { + CImg &screen = visu?visu:visu0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+screen).__draw_text(" Saving snapshot... ",font_size,0).display(disp); + screen.save(filename); + (+screen).__draw_text(" Snapshot '%s' saved. ",font_size,0,filename._data).display(disp); + } + disp.set_key(key,false); okey = 0; + } break; + case cimg::keyO : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + if (visu || visu0) { + CImg &screen = visu?visu:visu0; + std::FILE *file; + do { + +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+screen).__draw_text(" Saving instance... ",font_size,0).display(disp); + save(filename); + (+screen).__draw_text(" Instance '%s' saved. ",font_size,0,filename._data).display(disp); + } + disp.set_key(key,false); okey = 0; + } break; + } + + // Handle mouse motion and mouse buttons. + if (obutton!=button || omouse_x!=mouse_x || omouse_y!=mouse_y) { + visu.assign(); + if (disp.mouse_x()>=0 && disp.mouse_y()>=0) { + const int + mx = (mouse_x - 16)*(int)(siz - one)/(disp.width() - 32), + cx = cimg::cut(mx,0,(int)(siz - 1 - one)), + my = mouse_y - 16, + cy = cimg::cut(my,0,disp.height() - 32); + if (button&1) { + if (!obutton) { x0 = cx; y0 = -1; } else { x1 = cx; y1 = -1; } + } + else if (button&2) { + if (!obutton) { x0 = cx; y0 = cy; } else { x1 = cx; y1 = cy; } + } + else if (obutton) { x1 = x1>=0?cx:-1; y1 = y1>=0?cy:-1; selected = true; } + } else if (!button && obutton) selected = true; + obutton = button; omouse_x = mouse_x; omouse_y = mouse_y; + } + if (disp.is_resized()) { disp.resize(false); visu0.assign(); } + if (visu && visu0) disp.wait(); + if (!exit_on_anykey && okey && okey!=cimg::keyESC && + (okey!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + disp.set_key(key,false); + okey = 0; + } + } + + disp._normalization = old_normalization; + if (x1>=0 && x1(4,1,1,1,x0,y0,x1>=0?x1 + (int)one:-1,y1); + } + + //! Load image from a file. + /** + \param filename Filename, as a C-string. + \note The extension of \c filename defines the file format. If no filename + extension is provided, CImg::get_load() will try to load the file as a .cimg or .cimgz file. + **/ + CImg& load(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load(): Specified filename is (null).", + cimg_instance); + + if (!cimg::strncasecmp(filename,"http://",7) || !cimg::strncasecmp(filename,"https://",8)) { + CImg filename_local(256); + load(cimg::load_network(filename,filename_local)); + std::remove(filename_local); + return *this; + } + + const char *const ext = cimg::split_filename(filename); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + bool is_loaded = true; + try { +#ifdef cimg_load_plugin + cimg_load_plugin(filename); +#endif +#ifdef cimg_load_plugin1 + cimg_load_plugin1(filename); +#endif +#ifdef cimg_load_plugin2 + cimg_load_plugin2(filename); +#endif +#ifdef cimg_load_plugin3 + cimg_load_plugin3(filename); +#endif +#ifdef cimg_load_plugin4 + cimg_load_plugin4(filename); +#endif +#ifdef cimg_load_plugin5 + cimg_load_plugin5(filename); +#endif +#ifdef cimg_load_plugin6 + cimg_load_plugin6(filename); +#endif +#ifdef cimg_load_plugin7 + cimg_load_plugin7(filename); +#endif +#ifdef cimg_load_plugin8 + cimg_load_plugin8(filename); +#endif + // Text formats + if (!cimg::strcasecmp(ext,"asc")) load_ascii(filename); + else if (!cimg::strcasecmp(ext,"csv") || + !cimg::strcasecmp(ext,"dlm") || + !cimg::strcasecmp(ext,"txt")) load_dlm(filename); + else if (!cimg::strcasecmp(ext,"pdf")) load_pdf_external(filename); + + // 2D binary formats + else if (!cimg::strcasecmp(ext,"bmp")) load_bmp(filename); + else if (!cimg::strcasecmp(ext,"jpg") || + !cimg::strcasecmp(ext,"jpeg") || + !cimg::strcasecmp(ext,"jpe") || + !cimg::strcasecmp(ext,"jfif") || + !cimg::strcasecmp(ext,"jif")) load_jpeg(filename); + else if (!cimg::strcasecmp(ext,"png")) load_png(filename); + else if (!cimg::strcasecmp(ext,"ppm") || + !cimg::strcasecmp(ext,"pgm") || + !cimg::strcasecmp(ext,"pnm") || + !cimg::strcasecmp(ext,"pbm") || + !cimg::strcasecmp(ext,"pnk")) load_pnm(filename); + else if (!cimg::strcasecmp(ext,"pfm")) load_pfm(filename); + else if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) load_tiff(filename); + else if (!cimg::strcasecmp(ext,"exr")) load_exr(filename); + else if (!cimg::strcasecmp(ext,"cr2") || + !cimg::strcasecmp(ext,"crw") || + !cimg::strcasecmp(ext,"dcr") || + !cimg::strcasecmp(ext,"mrw") || + !cimg::strcasecmp(ext,"nef") || + !cimg::strcasecmp(ext,"orf") || + !cimg::strcasecmp(ext,"pix") || + !cimg::strcasecmp(ext,"ptx") || + !cimg::strcasecmp(ext,"raf") || + !cimg::strcasecmp(ext,"srf")) load_dcraw_external(filename); + else if (!cimg::strcasecmp(ext,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(ext,"heic") || + !cimg::strcasecmp(ext,"avif")) load_heif(filename); + + // 3D binary formats + else if (!cimg::strcasecmp(ext,"dcm") || + !cimg::strcasecmp(ext,"dicom")) load_medcon_external(filename); + else if (!cimg::strcasecmp(ext,"hdr") || + !cimg::strcasecmp(ext,"nii")) load_analyze(filename); + else if (!cimg::strcasecmp(ext,"par") || + !cimg::strcasecmp(ext,"rec")) load_parrec(filename); + else if (!cimg::strcasecmp(ext,"mnc")) load_minc2(filename); + else if (!cimg::strcasecmp(ext,"inr")) load_inr(filename); + else if (!cimg::strcasecmp(ext,"pan")) load_pandore(filename); + else if (!cimg::strcasecmp(ext,"cimg") || + !cimg::strcasecmp(ext,"cimgz") || + !*ext) return load_cimg(filename); + + // Archive files + else if (!cimg::strcasecmp(ext,"gz")) load_gzip_external(filename); + + // Image sequences + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) load_video(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + + // If nothing loaded, try to guess file format from magic number in file. + if (!is_loaded) { + std::FILE *file = cimg::std_fopen(filename,"rb"); + if (!file) { + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load(): Failed to open file '%s'.", + cimg_instance, + filename); + } + + const char *const f_type = cimg::ftype(file,filename); + cimg::fclose(file); + is_loaded = true; + try { + if (!cimg::strcasecmp(f_type,"pnm")) load_pnm(filename); + else if (!cimg::strcasecmp(f_type,"pfm")) load_pfm(filename); + else if (!cimg::strcasecmp(f_type,"bmp")) load_bmp(filename); + else if (!cimg::strcasecmp(f_type,"inr")) load_inr(filename); + else if (!cimg::strcasecmp(f_type,"jpg")) load_jpeg(filename); + else if (!cimg::strcasecmp(f_type,"pan")) load_pandore(filename); + else if (!cimg::strcasecmp(f_type,"png")) load_png(filename); + else if (!cimg::strcasecmp(f_type,"tif")) load_tiff(filename); + else if (!cimg::strcasecmp(f_type,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(f_type,"dcm")) load_medcon_external(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + } + + // If nothing loaded, try to load file with other means. + if (!is_loaded) { + try { + load_other(filename); + } catch (CImgIOException&) { + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load(): Failed to recognize format of file '%s'.", + cimg_instance, + filename); + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load image from a file \newinstance. + static CImg get_load(const char *const filename) { + return CImg().load(filename); + } + + //! Load image from an ascii file. + /** + \param filename Filename, as a C -string. + **/ + CImg& load_ascii(const char *const filename) { + return _load_ascii(0,filename); + } + + //! Load image from an ascii file \inplace. + static CImg get_load_ascii(const char *const filename) { + return CImg().load_ascii(filename); + } + + //! Load image from an ascii file \overloading. + CImg& load_ascii(std::FILE *const file) { + return _load_ascii(file,0); + } + + //! Loadimage from an ascii file \newinstance. + static CImg get_load_ascii(std::FILE *const file) { + return CImg().load_ascii(file); + } + + CImg& _load_ascii(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_ascii(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg line(256); *line = 0; + int err = std::fscanf(nfile,"%255[^\n]",line._data); + unsigned int dx = 0, dy = 1, dz = 1, dc = 1; + cimg_sscanf(line,"%u%*c%u%*c%u%*c%u",&dx,&dy,&dz,&dc); + err = std::fscanf(nfile,"%*[^0-9.eEinfa+-]"); + if (!dx || !dy || !dz || !dc) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_ascii(): Invalid ascii header in file '%s', image dimensions are set " + "to (%u,%u,%u,%u).", + cimg_instance, + filename?filename:"(FILE*)",dx,dy,dz,dc); + } + assign(dx,dy,dz,dc); + const ulongT siz = size(); + ulongT off = 0; + double val; + T *ptr = _data; + for (err = 1, off = 0; off& load_dlm(const char *const filename) { + return _load_dlm(0,filename); + } + + //! Load image from a DLM file \newinstance. + static CImg get_load_dlm(const char *const filename) { + return CImg().load_dlm(filename); + } + + //! Load image from a DLM file \overloading. + CImg& load_dlm(std::FILE *const file) { + return _load_dlm(file,0); + } + + //! Load image from a DLM file \newinstance. + static CImg get_load_dlm(std::FILE *const file) { + return CImg().load_dlm(file); + } + + CImg& _load_dlm(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_dlm(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"r"); + CImg delimiter(256), tmp(256); *delimiter = *tmp = 0; + unsigned int cdx = 0, dx = 0, dy = 0; + int err = 0; + double val; + assign(256,256,1,1,(T)0); + while ((err = std::fscanf(nfile,"%lf%255[^0-9eEinfa.+-]",&val,delimiter._data))>0) { + if (err>0) (*this)(cdx++,dy) = (T)val; + if (cdx>=_width) resize(3*_width/2,_height,1,1,0); + char c = 0; + if (!cimg_sscanf(delimiter,"%255[^\n]%c",tmp._data,&c) || c=='\n') { + dx = std::max(cdx,dx); + if (++dy>=_height) resize(_width,3*_height/2,1,1,0); + cdx = 0; + } + } + if (cdx && err==1) { dx = cdx; ++dy; } + if (!dx || !dy) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_dlm(): Invalid DLM file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + resize(dx,dy,1,1,0); + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a BMP file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_bmp(const char *const filename) { + return _load_bmp(0,filename); + } + + //! Load image from a BMP file \newinstance. + static CImg get_load_bmp(const char *const filename) { + return CImg().load_bmp(filename); + } + + //! Load image from a BMP file \overloading. + CImg& load_bmp(std::FILE *const file) { + return _load_bmp(file,0); + } + + //! Load image from a BMP file \newinstance. + static CImg get_load_bmp(std::FILE *const file) { + return CImg().load_bmp(file); + } + + CImg& _load_bmp(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_bmp(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg header(54); + cimg::fread(header._data,54,nfile); + if (*header!='B' || header[1]!='M') { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_bmp(): Invalid BMP file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + + // Read header and pixel buffer + int + file_size = header[0x02] + (header[0x03]<<8) + (header[0x04]<<16) + (header[0x05]<<24), + offset = header[0x0A] + (header[0x0B]<<8) + (header[0x0C]<<16) + (header[0x0D]<<24), + header_size = header[0x0E] + (header[0x0F]<<8) + (header[0x10]<<16) + (header[0x11]<<24), + dx = header[0x12] + (header[0x13]<<8) + (header[0x14]<<16) + (header[0x15]<<24), + dy = header[0x16] + (header[0x17]<<8) + (header[0x18]<<16) + (header[0x19]<<24), + compression = header[0x1E] + (header[0x1F]<<8) + (header[0x20]<<16) + (header[0x21]<<24), + nb_colors = header[0x2E] + (header[0x2F]<<8) + (header[0x30]<<16) + (header[0x31]<<24), + bpp = header[0x1C] + (header[0x1D]<<8); + + if (!file_size || file_size==offset) { + cimg::fseek(nfile,0,SEEK_END); + file_size = (int)cimg::ftell(nfile); + cimg::fseek(nfile,54,SEEK_SET); + } + if (header_size>40) cimg::fseek(nfile,header_size - 40,SEEK_CUR); + + const int + dx_bytes = (bpp==1)?(dx/8 + (dx%8?1:0)):((bpp==4)?(dx/2 + (dx%2)):(int)((longT)dx*bpp/8)), + align_bytes = (4 - dx_bytes%4)%4; + const ulongT + cimg_iobuffer = (ulongT)24*1024*1024, + buf_size = (ulongT)cimg::abs(dy)*(dx_bytes + align_bytes); + + CImg colormap; + if (bpp<16) { if (!nb_colors) nb_colors = 1<0) cimg::fseek(nfile,xoffset,SEEK_CUR); + + CImg buffer; + if (buf_size=2) for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + unsigned char mask = 0x80, val = 0; + cimg_forX(*this,x) { + if (mask==0x80) val = *(ptrs++); + const unsigned char *col = (unsigned char*)(colormap._data + (val&mask?1:0)); + (*this)(x,y,2) = (T)*(col++); + (*this)(x,y,1) = (T)*(col++); + (*this)(x,y,0) = (T)*(col++); + mask = cimg::ror(mask); + } + ptrs+=align_bytes; + } + } break; + case 4 : { // 16 colors + if (colormap._width>=16) for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + unsigned char mask = 0xF0, val = 0; + cimg_forX(*this,x) { + if (mask==0xF0) val = *(ptrs++); + const unsigned char color = (unsigned char)((mask<16)?(val&mask):((val&mask)>>4)); + const unsigned char *col = (unsigned char*)(colormap._data + color); + (*this)(x,y,2) = (T)*(col++); + (*this)(x,y,1) = (T)*(col++); + (*this)(x,y,0) = (T)*(col++); + mask = cimg::ror(mask,4); + } + ptrs+=align_bytes; + } + } break; + case 8 : { // 256 colors + if (colormap._width>=256) for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + const unsigned char *col = (unsigned char*)(colormap._data + *(ptrs++)); + (*this)(x,y,2) = (T)*(col++); + (*this)(x,y,1) = (T)*(col++); + (*this)(x,y,0) = (T)*(col++); + } + ptrs+=align_bytes; + } + } break; + case 16 : { // 16 bits colors (RGB565) + for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + const unsigned char c1 = *(ptrs++), c2 = *(ptrs++); + const unsigned short col = (unsigned short)c2<<8 | c1; + (*this)(x,y,2) = (T)((col&0x1F)<<3); + (*this)(x,y,1) = (T)(((col>>5)&0x3F)<<3); + (*this)(x,y,0) = (T)(((col>>11)&0x1F)<<3); + } + ptrs+=align_bytes; + } + } break; + case 24 : { // 24 bits colors + for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + (*this)(x,y,2) = (T)*(ptrs++); + (*this)(x,y,1) = (T)*(ptrs++); + (*this)(x,y,0) = (T)*(ptrs++); + } + ptrs+=align_bytes; + } + } break; + case 32 : { // 32 bits colors + for (int y = height() - 1; y>=0; --y) { + if (buf_size>=cimg_iobuffer) { + if (!cimg::fread(ptrs=buffer._data,dx_bytes,nfile)) break; + cimg::fseek(nfile,align_bytes,SEEK_CUR); + } + cimg_forX(*this,x) { + (*this)(x,y,2) = (T)*(ptrs++); + (*this)(x,y,1) = (T)*(ptrs++); + (*this)(x,y,0) = (T)*(ptrs++); + ++ptrs; + } + ptrs+=align_bytes; + } + } break; + } + if (dy<0) mirror('y'); + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a JPEG file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_jpeg(const char *const filename) { + return _load_jpeg(0,filename); + } + + //! Load image from a JPEG file \newinstance. + static CImg get_load_jpeg(const char *const filename) { + return CImg().load_jpeg(filename); + } + + //! Load image from a JPEG file \overloading. + CImg& load_jpeg(std::FILE *const file) { + return _load_jpeg(file,0); + } + + //! Load image from a JPEG file \newinstance. + static CImg get_load_jpeg(std::FILE *const file) { + return CImg().load_jpeg(file); + } + + // Custom error handler for libjpeg. +#ifdef cimg_use_jpeg + struct _cimg_error_mgr { + struct jpeg_error_mgr original; + jmp_buf setjmp_buffer; + char message[JMSG_LENGTH_MAX]; + }; + + typedef struct _cimg_error_mgr *_cimg_error_ptr; + + METHODDEF(void) _cimg_jpeg_error_exit(j_common_ptr cinfo) { + _cimg_error_ptr c_err = (_cimg_error_ptr) cinfo->err; // Return control to the setjmp point + (*cinfo->err->format_message)(cinfo,c_err->message); + jpeg_destroy(cinfo); // Clean memory and temp files + longjmp(c_err->setjmp_buffer,1); + } +#endif + + CImg& _load_jpeg(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_jpeg(): Specified filename is (null).", + cimg_instance); + +#ifndef cimg_use_jpeg + if (file) + throw CImgIOException(_cimg_instance + "load_jpeg(): Unable to load data from '(FILE*)' unless libjpeg is enabled.", + cimg_instance); + else return load_other(filename); +#else + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + struct jpeg_decompress_struct cinfo; + struct _cimg_error_mgr jerr; + cinfo.err = jpeg_std_error(&jerr.original); + jerr.original.error_exit = _cimg_jpeg_error_exit; + if (setjmp(jerr.setjmp_buffer)) { // JPEG error + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_jpeg(): Error message returned by libjpeg: %s.", + cimg_instance,jerr.message); + } + + jpeg_create_decompress(&cinfo); + jpeg_stdio_src(&cinfo,nfile); + jpeg_read_header(&cinfo,TRUE); + jpeg_start_decompress(&cinfo); + + if (cinfo.output_components!=1 && cinfo.output_components!=3 && cinfo.output_components!=4) { + if (!file) { + cimg::fclose(nfile); + return load_other(filename); + } else + throw CImgIOException(_cimg_instance + "load_jpeg(): Failed to load JPEG data from file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + } + CImg buffer(cinfo.output_width*cinfo.output_components); + JSAMPROW row_pointer[1]; + try { assign(cinfo.output_width,cinfo.output_height,1,cinfo.output_components); } + catch (...) { if (!file) cimg::fclose(nfile); throw; } + T *ptr_r = _data, *ptr_g = _data + 1UL*_width*_height, *ptr_b = _data + 2UL*_width*_height, + *ptr_a = _data + 3UL*_width*_height; + while (cinfo.output_scanline + // This is experimental code, not much tested, use with care. + CImg& load_magick(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_magick(): Specified filename is (null).", + cimg_instance); + +#ifdef cimg_use_magick + Magick::Image image(filename); + const unsigned int W = image.size().width(), H = image.size().height(); + switch (image.type()) { + case Magick::PaletteMatteType : + case Magick::TrueColorMatteType : + case Magick::ColorSeparationType : { + assign(W,H,1,4); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = data(0,0,0,3); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + *(ptr_g++) = (T)(pixels->green); + *(ptr_b++) = (T)(pixels->blue); + *(ptr_a++) = (T)(pixels->opacity); + ++pixels; + } + } break; + case Magick::PaletteType : + case Magick::TrueColorType : { + assign(W,H,1,3); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + *(ptr_g++) = (T)(pixels->green); + *(ptr_b++) = (T)(pixels->blue); + ++pixels; + } + } break; + case Magick::GrayscaleMatteType : { + assign(W,H,1,2); + T *ptr_r = data(0,0,0,0), *ptr_a = data(0,0,0,1); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + *(ptr_a++) = (T)(pixels->opacity); + ++pixels; + } + } break; + default : { + assign(W,H,1,1); + T *ptr_r = data(0,0,0,0); + Magick::PixelPacket *pixels = image.getPixels(0,0,W,H); + for (ulongT off = (ulongT)W*H; off; --off) { + *(ptr_r++) = (T)(pixels->red); + ++pixels; + } + } + } + return *this; +#else + throw CImgIOException(_cimg_instance + "load_magick(): Unable to load file '%s' unless libMagick++ is enabled.", + cimg_instance, + filename); +#endif + } + + //! Load image from a file, using Magick++ library \newinstance. + static CImg get_load_magick(const char *const filename) { + return CImg().load_magick(filename); + } + + //! Load image from a PNG file. + /** + \param filename Filename, as a C-string. + \param[out] bits_per_pixel Number of bits per pixels used to store pixel values in the image file. + **/ + CImg& load_png(const char *const filename, unsigned int *const bits_per_pixel=0) { + return _load_png(0,filename,bits_per_pixel); + } + + //! Load image from a PNG file \newinstance. + static CImg get_load_png(const char *const filename, unsigned int *const bits_per_pixel=0) { + return CImg().load_png(filename,bits_per_pixel); + } + + //! Load image from a PNG file \overloading. + CImg& load_png(std::FILE *const file, unsigned int *const bits_per_pixel=0) { + return _load_png(file,0,bits_per_pixel); + } + + //! Load image from a PNG file \newinstance. + static CImg get_load_png(std::FILE *const file, unsigned int *const bits_per_pixel=0) { + return CImg().load_png(file,bits_per_pixel); + } + + // (Note: Most of this function has been written by Eric Fausett) + CImg& _load_png(std::FILE *const file, const char *const filename, unsigned int *const bits_per_pixel) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_png(): Specified filename is (null).", + cimg_instance); + +#ifndef cimg_use_png + cimg::unused(bits_per_pixel); + if (file) + throw CImgIOException(_cimg_instance + "load_png(): Unable to load data from '(FILE*)' unless libpng is enabled.", + cimg_instance); + + else return load_other(filename); +#else + // Open file and check for PNG validity +#if defined __GNUC__ + const char *volatile nfilename = filename; // Use 'volatile' to avoid (wrong) g++ warning + std::FILE *volatile nfile = file?file:cimg::fopen(nfilename,"rb"); +#else + const char *nfilename = filename; + std::FILE *nfile = file?file:cimg::fopen(nfilename,"rb"); +#endif + unsigned char pngCheck[8] = { 0 }; + cimg::fread(pngCheck,8,(std::FILE*)nfile); + if (png_sig_cmp(pngCheck,0,8)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_png(): Invalid PNG file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + + // Setup PNG structures for read + png_voidp user_error_ptr = 0; + png_error_ptr user_error_fn = 0, user_warning_fn = 0; + png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,user_error_ptr,user_error_fn,user_warning_fn); + if (!png_ptr) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_png(): Failed to initialize 'png_ptr' structure for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_infop info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + if (!file) cimg::fclose(nfile); + png_destroy_read_struct(&png_ptr,(png_infopp)0,(png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Failed to initialize 'info_ptr' structure for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_infop end_info = png_create_info_struct(png_ptr); + if (!end_info) { + if (!file) cimg::fclose(nfile); + png_destroy_read_struct(&png_ptr,&info_ptr,(png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Failed to initialize 'end_info' structure for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + + // Error handling callback for png file reading + if (setjmp(png_jmpbuf(png_ptr))) { + if (!file) cimg::fclose((std::FILE*)nfile); + png_destroy_read_struct(&png_ptr, &end_info, (png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Encountered unknown fatal error in libpng for file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_init_io(png_ptr, nfile); + png_set_sig_bytes(png_ptr, 8); + + // Get PNG Header Info up to data block + png_read_info(png_ptr,info_ptr); + png_uint_32 W, H; + int bit_depth, color_type, interlace_type; + bool is_gray = false; + png_get_IHDR(png_ptr,info_ptr,&W,&H,&bit_depth,&color_type,&interlace_type,(int*)0,(int*)0); + if (bits_per_pixel) *bits_per_pixel = (unsigned int)bit_depth; + + // Transforms to unify image data + if (color_type==PNG_COLOR_TYPE_PALETTE) { + png_set_palette_to_rgb(png_ptr); + color_type = PNG_COLOR_TYPE_RGB; + bit_depth = 8; + } + if (color_type==PNG_COLOR_TYPE_GRAY && bit_depth<8) { + png_set_expand_gray_1_2_4_to_8(png_ptr); + is_gray = true; + bit_depth = 8; + } + if (png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS)) { + png_set_tRNS_to_alpha(png_ptr); + color_type |= PNG_COLOR_MASK_ALPHA; + } + if (color_type==PNG_COLOR_TYPE_GRAY || color_type==PNG_COLOR_TYPE_GRAY_ALPHA) { + png_set_gray_to_rgb(png_ptr); + color_type |= PNG_COLOR_MASK_COLOR; + is_gray = true; + } + if (color_type==PNG_COLOR_TYPE_RGB) + png_set_filler(png_ptr,0xffffU,PNG_FILLER_AFTER); + + png_read_update_info(png_ptr,info_ptr); + if (bit_depth!=8 && bit_depth!=16) { + if (!file) cimg::fclose(nfile); + png_destroy_read_struct(&png_ptr,&end_info,(png_infopp)0); + throw CImgIOException(_cimg_instance + "load_png(): Invalid bit depth %u in file '%s'.", + cimg_instance, + bit_depth,nfilename?nfilename:"(FILE*)"); + } + const int byte_depth = bit_depth>>3; + + // Allocate memory for image reading + png_bytep *const imgData = new png_bytep[H]; + for (unsigned int row = 0; row& load_pnm(const char *const filename) { + return _load_pnm(0,filename); + } + + //! Load image from a PNM file \newinstance. + static CImg get_load_pnm(const char *const filename) { + return CImg().load_pnm(filename); + } + + //! Load image from a PNM file \overloading. + CImg& load_pnm(std::FILE *const file) { + return _load_pnm(file,0); + } + + //! Load image from a PNM file \newinstance. + static CImg get_load_pnm(std::FILE *const file) { + return CImg().load_pnm(file); + } + + CImg& _load_pnm(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_pnm(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + unsigned int ppm_type, W, H, D = 1, colormax = 255; + CImg item(16384,1,1,1,0); + int err, rval, gval, bval; + const longT cimg_iobuffer = (longT)24*1024*1024; + while ((err=std::fscanf(nfile,"%16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item," P%u",&ppm_type)!=1) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pnm(): PNM header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if ((err=cimg_sscanf(item," %u %u %u %u",&W,&H,&D,&colormax))<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pnm(): WIDTH and HEIGHT fields undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + if (ppm_type!=1 && ppm_type!=4) { + if (err==2 || (err==3 && (ppm_type==5 || ppm_type==7 || ppm_type==8 || ppm_type==9))) { + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item,"%u",&colormax)!=1) + cimg::warn(_cimg_instance + "load_pnm(): COLORMAX field is undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } else { colormax = D; D = 1; } + } + std::fgetc(nfile); + + if (filename) { // Check that dimensions specified in file does not exceed the buffer dimension + const cimg_int64 siz = cimg::fsize(filename); + if (W*H*D>siz) + throw CImgIOException(_cimg_instance + "load_pnm(): Specified image dimensions in file '%s' exceed file size.", + cimg_instance, + filename); + } + + switch (ppm_type) { + case 1 : { // 2D B&W ascii + assign(W,H,1,1); + T* ptrd = _data; + cimg_foroff(*this,off) { if (std::fscanf(nfile,"%d",&rval)>0) *(ptrd++) = (T)(rval?0:255); else break; } + } break; + case 2 : { // 2D grey ascii + assign(W,H,1,1); + T* ptrd = _data; + cimg_foroff(*this,off) { if (std::fscanf(nfile,"%d",&rval)>0) *(ptrd++) = (T)rval; else break; } + } break; + case 3 : { // 2D color ascii + assign(W,H,1,3); + T *ptrd = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + cimg_forXY(*this,x,y) { + if (std::fscanf(nfile,"%d %d %d",&rval,&gval,&bval)==3) { + *(ptrd++) = (T)rval; *(ptr_g++) = (T)gval; *(ptr_b++) = (T)bval; + } else break; + } + } break; + case 4 : { // 2D b&w binary (support 3D PINK extension) + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + unsigned int w = 0, h = 0, d = 0; + for (longT to_read = (longT)((W/8 + (W%8?1:0))*H*D); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + unsigned char mask = 0, val = 0; + for (ulongT off = (ulongT)raw._width; off || mask; mask>>=1) { + if (!mask) { if (off--) val = *(ptrs++); mask = 128; } + *(ptrd++) = (T)((val&mask)?0:255); + if (++w==W) { w = 0; mask = 0; if (++h==H) { h = 0; if (++d==D) break; }} + } + } + } break; + case 5 : case 7 : { // 2D/3D grey binary (support 3D PINK extension) + if (colormax<256) { // 8 bits + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } else { // 16 bits + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer/2)); + cimg::fread(raw._data,raw._width,nfile); + if (!cimg::endianness()) cimg::invert_endianness(raw._data,raw._width); + to_read-=raw._width; + const unsigned short *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } + } break; + case 6 : { // 2D color binary + if (colormax<256) { // 8 bits + CImg raw; + assign(W,H,1,3); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width/3; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } else { // 16 bits + CImg raw; + assign(W,H,1,3); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer/2)); + cimg::fread(raw._data,raw._width,nfile); + if (!cimg::endianness()) cimg::invert_endianness(raw._data,raw._width); + to_read-=raw._width; + const unsigned short *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width/3; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } + } break; + case 8 : { // 2D/3D grey binary with int32 integers (PINK extension) + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const int *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } break; + case 9 : { // 2D/3D grey binary with float values (PINK extension) + CImg raw; + assign(W,H,D,1); + T *ptrd = data(0,0,0,0); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const float *ptrs = raw._data; + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); + } + } break; + default : + assign(); + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pnm(): PNM type 'P%d' found, but type is not supported.", + cimg_instance, + filename?filename:"(FILE*)",ppm_type); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a PFM file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_pfm(const char *const filename) { + return _load_pfm(0,filename); + } + + //! Load image from a PFM file \newinstance. + static CImg get_load_pfm(const char *const filename) { + return CImg().load_pfm(filename); + } + + //! Load image from a PFM file \overloading. + CImg& load_pfm(std::FILE *const file) { + return _load_pfm(file,0); + } + + //! Load image from a PFM file \newinstance. + static CImg get_load_pfm(std::FILE *const file) { + return CImg().load_pfm(file); + } + + CImg& _load_pfm(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_pfm(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + char pfm_type; + CImg item(16384,1,1,1,0); + int W = 0, H = 0, err = 0; + double scale = 0; + while ((err=std::fscanf(nfile,"%16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item," P%c",&pfm_type)!=1) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pfm(): PFM header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if ((err=cimg_sscanf(item," %d %d",&W,&H))<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pfm(): WIDTH and HEIGHT fields are undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } else if (W<=0 || H<=0) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pfm(): WIDTH (%d) and HEIGHT (%d) fields are invalid in file '%s'.", + cimg_instance,W,H, + filename?filename:"(FILE*)"); + } + if (err==2) { + while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile); + if (cimg_sscanf(item,"%lf",&scale)!=1) + cimg::warn(_cimg_instance + "load_pfm(): SCALE field is undefined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + std::fgetc(nfile); + const bool is_color = (pfm_type=='F'), is_inverted = (scale>0)!=cimg::endianness(); + if (is_color) { + assign(W,H,1,3,(T)0); + CImg buf(3*W); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2); + cimg_forY(*this,y) { + cimg::fread(buf._data,3*W,nfile); + if (is_inverted) cimg::invert_endianness(buf._data,3*W); + const float *ptrs = buf._data; + cimg_forX(*this,x) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } else { + assign(W,H,1,1,(T)0); + CImg buf(W); + T *ptrd = data(0,0,0,0); + cimg_forY(*this,y) { + cimg::fread(buf._data,W,nfile); + if (is_inverted) cimg::invert_endianness(buf._data,W); + const float *ptrs = buf._data; + cimg_forX(*this,x) *(ptrd++) = (T)*(ptrs++); + } + } + if (!file) cimg::fclose(nfile); + return mirror('y'); // Most of the .pfm files are flipped along the y-axis + } + + //! Load image from a RGB file. + /** + \param filename Filename, as a C-string. + \param dimw Width of the image buffer. + \param dimh Height of the image buffer. + **/ + CImg& load_rgb(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgb(0,filename,dimw,dimh); + } + + //! Load image from a RGB file \newinstance. + static CImg get_load_rgb(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgb(filename,dimw,dimh); + } + + //! Load image from a RGB file \overloading. + CImg& load_rgb(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgb(file,0,dimw,dimh); + } + + //! Load image from a RGB file \newinstance. + static CImg get_load_rgb(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgb(file,dimw,dimh); + } + + CImg& _load_rgb(std::FILE *const file, const char *const filename, + const unsigned int dimw, const unsigned int dimh) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_rgb(): Specified filename is (null).", + cimg_instance); + + if (!dimw || !dimh) return assign(); + const longT cimg_iobuffer = (longT)24*1024*1024; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg raw; + assign(dimw,dimh,1,3); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = raw._width/3UL; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a RGBA file. + /** + \param filename Filename, as a C-string. + \param dimw Width of the image buffer. + \param dimh Height of the image buffer. + **/ + CImg& load_rgba(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgba(0,filename,dimw,dimh); + } + + //! Load image from a RGBA file \newinstance. + static CImg get_load_rgba(const char *const filename, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgba(filename,dimw,dimh); + } + + //! Load image from a RGBA file \overloading. + CImg& load_rgba(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return _load_rgba(file,0,dimw,dimh); + } + + //! Load image from a RGBA file \newinstance. + static CImg get_load_rgba(std::FILE *const file, const unsigned int dimw, const unsigned int dimh=1) { + return CImg().load_rgba(file,dimw,dimh); + } + + CImg& _load_rgba(std::FILE *const file, const char *const filename, + const unsigned int dimw, const unsigned int dimh) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_rgba(): Specified filename is (null).", + cimg_instance); + + if (!dimw || !dimh) return assign(); + const longT cimg_iobuffer = (longT)24*1024*1024; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg raw; + assign(dimw,dimh,1,4); + T + *ptr_r = data(0,0,0,0), + *ptr_g = data(0,0,0,1), + *ptr_b = data(0,0,0,2), + *ptr_a = data(0,0,0,3); + for (longT to_read = (longT)size(); to_read>0; ) { + raw.assign(std::min(to_read,cimg_iobuffer)); + cimg::fread(raw._data,raw._width,nfile); + to_read-=raw._width; + const unsigned char *ptrs = raw._data; + for (ulongT off = raw._width/4UL; off; --off) { + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + *(ptr_a++) = (T)*(ptrs++); + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a TIFF file. + /** + \param filename Filename, as a C-string. + \param first_frame First frame to read (for multi-pages tiff). + \param last_frame Last frame to read (for multi-pages tiff). + \param step_frame Step value of frame reading. + \param[out] voxel_size Voxel size, as stored in the filename. + \param[out] description Description, as stored in the filename. + \note + - libtiff support is enabled by defining the precompilation + directive \c cimg_use_tif. + - When libtiff is enabled, 2D and 3D (multipage) several + channel per pixel are supported for + char,uchar,short,ushort,float and \c double pixel types. + - If \c cimg_use_tif is not defined at compile time the + function uses CImg& load_other(const char*). + **/ + CImg& load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_tiff(): Specified filename is (null).", + cimg_instance); + + const unsigned int + nfirst_frame = first_frame1) + throw CImgArgumentException(_cimg_instance + "load_tiff(): Unable to read sub-images from file '%s' unless libtiff is enabled.", + cimg_instance, + filename); + return load_other(filename); +#else +#if cimg_verbosity<3 + TIFFSetWarningHandler(0); + TIFFSetErrorHandler(0); +#endif + TIFF *tif = TIFFOpen(filename,"r"); + if (tif) { + unsigned int nb_images = 0; + do ++nb_images; while (TIFFReadDirectory(tif)); + if (nfirst_frame>=nb_images || (nlast_frame!=~0U && nlast_frame>=nb_images)) + cimg::warn(_cimg_instance + "load_tiff(): File '%s' contains %u image(s) while specified frame range is [%u,%u] (step %u).", + cimg_instance, + filename,nb_images,nfirst_frame,nlast_frame,nstep_frame); + + if (nfirst_frame>=nb_images) return assign(); + if (nlast_frame>=nb_images) nlast_frame = nb_images - 1; + TIFFSetDirectory(tif,0); + CImg frame; + for (unsigned int l = nfirst_frame; l<=nlast_frame; l+=nstep_frame) { + frame._load_tiff(tif,l,voxel_size,description); + if (l==nfirst_frame) + assign(frame._width,frame._height,1 + (nlast_frame - nfirst_frame)/nstep_frame,frame._spectrum); + if (frame._width>_width || frame._height>_height || frame._spectrum>_spectrum) + resize(std::max(frame._width,_width), + std::max(frame._height,_height),-100, + std::max(frame._spectrum,_spectrum),0); + draw_image(0,0,(l - nfirst_frame)/nstep_frame,frame); + } + TIFFClose(tif); + } else throw CImgIOException(_cimg_instance + "load_tiff(): Failed to open file '%s'.", + cimg_instance, + filename); + return *this; +#endif + } + + //! Load image from a TIFF file \newinstance. + static CImg get_load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + return CImg().load_tiff(filename,first_frame,last_frame,step_frame,voxel_size,description); + } + + // (Original contribution by Jerome Boulanger). +#ifdef cimg_use_tiff + template + void _load_tiff_tiled_contig(TIFF *const tif, const uint16 samplesperpixel, + const uint32 nx, const uint32 ny, const uint32 tw, const uint32 th) { + t *const buf = (t*)_TIFFmalloc(TIFFTileSize(tif)); + if (buf) { + for (unsigned int row = 0; row + void _load_tiff_tiled_separate(TIFF *const tif, const uint16 samplesperpixel, + const uint32 nx, const uint32 ny, const uint32 tw, const uint32 th) { + t *const buf = (t*)_TIFFmalloc(TIFFTileSize(tif)); + if (buf) { + for (unsigned int vv = 0; vv + void _load_tiff_contig(TIFF *const tif, const uint16 samplesperpixel, const uint32 nx, const uint32 ny) { + t *const buf = (t*)_TIFFmalloc(TIFFStripSize(tif)); + if (buf) { + uint32 row, rowsperstrip = (uint32)-1; + TIFFGetField(tif,TIFFTAG_ROWSPERSTRIP,&rowsperstrip); + for (row = 0; rowny?ny - row:rowsperstrip); + tstrip_t strip = TIFFComputeStrip(tif, row, 0); + if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) { + _TIFFfree(buf); TIFFClose(tif); + throw CImgIOException(_cimg_instance + "load_tiff(): Invalid strip in file '%s'.", + cimg_instance, + TIFFFileName(tif)); + } + const t *ptr = buf; + for (unsigned int rr = 0; rr + void _load_tiff_separate(TIFF *const tif, const uint16 samplesperpixel, const uint32 nx, const uint32 ny) { + t *buf = (t*)_TIFFmalloc(TIFFStripSize(tif)); + if (buf) { + uint32 row, rowsperstrip = (uint32)-1; + TIFFGetField(tif,TIFFTAG_ROWSPERSTRIP,&rowsperstrip); + for (unsigned int vv = 0; vvny?ny - row:rowsperstrip); + tstrip_t strip = TIFFComputeStrip(tif, row, vv); + if ((TIFFReadEncodedStrip(tif,strip,buf,-1))<0) { + _TIFFfree(buf); TIFFClose(tif); + throw CImgIOException(_cimg_instance + "load_tiff(): Invalid strip in file '%s'.", + cimg_instance, + TIFFFileName(tif)); + } + const t *ptr = buf; + for (unsigned int rr = 0;rr& _load_tiff(TIFF *const tif, const unsigned int directory, + float *const voxel_size, CImg *const description) { + if (!TIFFSetDirectory(tif,directory)) return assign(); + uint16 samplesperpixel = 1, bitspersample = 8, photo = 0; + uint16 sampleformat = 1; + uint32 nx = 1, ny = 1; + const char *const filename = TIFFFileName(tif); + const bool is_spp = (bool)TIFFGetField(tif,TIFFTAG_SAMPLESPERPIXEL,&samplesperpixel); + TIFFGetField(tif,TIFFTAG_IMAGEWIDTH,&nx); + TIFFGetField(tif,TIFFTAG_IMAGELENGTH,&ny); + TIFFGetField(tif, TIFFTAG_SAMPLEFORMAT, &sampleformat); + TIFFGetFieldDefaulted(tif,TIFFTAG_BITSPERSAMPLE,&bitspersample); + TIFFGetField(tif,TIFFTAG_PHOTOMETRIC,&photo); + if (voxel_size) { + const char *s_description = 0; + float vx = 0, vy = 0, vz = 0; + if (TIFFGetField(tif,TIFFTAG_IMAGEDESCRIPTION,&s_description) && s_description) { + const char *s_desc = std::strstr(s_description,"VX="); + if (s_desc && cimg_sscanf(s_desc,"VX=%f VY=%f VZ=%f",&vx,&vy,&vz)==3) { // CImg format + voxel_size[0] = vx; voxel_size[1] = vy; voxel_size[2] = vz; + } + s_desc = std::strstr(s_description,"spacing="); + if (s_desc && cimg_sscanf(s_desc,"spacing=%f",&vz)==1) { // Fiji format + voxel_size[2] = vz; + } + } + TIFFGetField(tif,TIFFTAG_XRESOLUTION,voxel_size); + TIFFGetField(tif,TIFFTAG_YRESOLUTION,voxel_size + 1); + voxel_size[0] = 1.f/voxel_size[0]; + voxel_size[1] = 1.f/voxel_size[1]; + } + if (description) { + const char *s_description = 0; + if (TIFFGetField(tif,TIFFTAG_IMAGEDESCRIPTION,&s_description) && s_description) + CImg::string(s_description).move_to(*description); + } + const unsigned int spectrum = !is_spp || photo>=3?(photo>1?3:1):samplesperpixel; + assign(nx,ny,1,spectrum); + + if ((photo>=3 && sampleformat==1 && + (bitspersample==4 || bitspersample==8) && + (samplesperpixel==1 || samplesperpixel==3 || samplesperpixel==4)) || + (bitspersample==1 && samplesperpixel==1)) { + // Special case for unsigned color images. + uint32 *const raster = (uint32*)_TIFFmalloc(nx*ny*sizeof(uint32)); + if (!raster) { + _TIFFfree(raster); TIFFClose(tif); + throw CImgException(_cimg_instance + "load_tiff(): Failed to allocate memory (%s) for file '%s'.", + cimg_instance, + cimg::strbuffersize(nx*ny*sizeof(uint32)),filename); + } + TIFFReadRGBAImage(tif,nx,ny,raster,0); + switch (spectrum) { + case 1 : + cimg_forXY(*this,x,y) + (*this)(x,y,0) = (T)(float)TIFFGetR(raster[nx*(ny - 1 -y) + x]); + break; + case 3 : + cimg_forXY(*this,x,y) { + (*this)(x,y,0) = (T)(float)TIFFGetR(raster[nx*(ny - 1 -y) + x]); + (*this)(x,y,1) = (T)(float)TIFFGetG(raster[nx*(ny - 1 -y) + x]); + (*this)(x,y,2) = (T)(float)TIFFGetB(raster[nx*(ny - 1 -y) + x]); + } + break; + case 4 : + cimg_forXY(*this,x,y) { + (*this)(x,y,0) = (T)(float)TIFFGetR(raster[nx*(ny - 1 - y) + x]); + (*this)(x,y,1) = (T)(float)TIFFGetG(raster[nx*(ny - 1 - y) + x]); + (*this)(x,y,2) = (T)(float)TIFFGetB(raster[nx*(ny - 1 - y) + x]); + (*this)(x,y,3) = (T)(float)TIFFGetA(raster[nx*(ny - 1 - y) + x]); + } + break; + } + _TIFFfree(raster); + } else { // Other cases + uint16 config; + TIFFGetField(tif,TIFFTAG_PLANARCONFIG,&config); + if (TIFFIsTiled(tif)) { + uint32 tw = 1, th = 1; + TIFFGetField(tif,TIFFTAG_TILEWIDTH,&tw); + TIFFGetField(tif,TIFFTAG_TILELENGTH,&th); + if (config==PLANARCONFIG_CONTIG) switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_contig(tif,samplesperpixel,nx,ny,tw,th); + break; + } else switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else if (sampleformat==SAMPLEFORMAT_INT) + _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + else _load_tiff_tiled_separate(tif,samplesperpixel,nx,ny,tw,th); + break; + } + } else { + if (config==PLANARCONFIG_CONTIG) switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) + _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_contig(tif,samplesperpixel,nx,ny); + else _load_tiff_contig(tif,samplesperpixel,nx,ny); + break; + } else switch (bitspersample) { + case 8 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + case 16 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + case 32 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + case 64 : + if (sampleformat==SAMPLEFORMAT_UINT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else if (sampleformat==SAMPLEFORMAT_INT) _load_tiff_separate(tif,samplesperpixel,nx,ny); + else _load_tiff_separate(tif,samplesperpixel,nx,ny); + break; + } + } + } + return *this; + } +#endif + + //! Load image from a MINC2 file. + /** + \param filename Filename, as a C-string. + **/ + // (Original code by Haz-Edine Assemlal). + CImg& load_minc2(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_minc2(): Specified filename is (null).", + cimg_instance); +#ifndef cimg_use_minc2 + return load_other(filename); +#else + minc::minc_1_reader rdr; + rdr.open(filename); + assign(rdr.ndim(1)?rdr.ndim(1):1, + rdr.ndim(2)?rdr.ndim(2):1, + rdr.ndim(3)?rdr.ndim(3):1, + rdr.ndim(4)?rdr.ndim(4):1); + if (pixel_type()==cimg::type::string()) + rdr.setup_read_byte(); + else if (pixel_type()==cimg::type::string()) + rdr.setup_read_int(); + else if (pixel_type()==cimg::type::string()) + rdr.setup_read_double(); + else + rdr.setup_read_float(); + minc::load_standard_volume(rdr,this->_data); + return *this; +#endif + } + + //! Load image from a MINC2 file \newinstance. + static CImg get_load_minc2(const char *const filename) { + return CImg().load_analyze(filename); + } + + //! Load image from an ANALYZE7.5/NIFTI file. + /** + \param filename Filename, as a C-string. + \param[out] voxel_size Pointer to the three voxel sizes read from the file. + **/ + CImg& load_analyze(const char *const filename, float *const voxel_size=0) { + return _load_analyze(0,filename,voxel_size); + } + + //! Load image from an ANALYZE7.5/NIFTI file \newinstance. + static CImg get_load_analyze(const char *const filename, float *const voxel_size=0) { + return CImg().load_analyze(filename,voxel_size); + } + + //! Load image from an ANALYZE7.5/NIFTI file \overloading. + CImg& load_analyze(std::FILE *const file, float *const voxel_size=0) { + return _load_analyze(file,0,voxel_size); + } + + //! Load image from an ANALYZE7.5/NIFTI file \newinstance. + static CImg get_load_analyze(std::FILE *const file, float *const voxel_size=0) { + return CImg().load_analyze(file,voxel_size); + } + + CImg& _load_analyze(std::FILE *const file, const char *const filename, float *const voxel_size=0) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_analyze(): Specified filename is (null).", + cimg_instance); + + std::FILE *nfile_header = 0, *nfile = 0; + if (!file) { + CImg body(1024); + const char *const ext = cimg::split_filename(filename,body); + if (!cimg::strcasecmp(ext,"hdr")) { // File is an Analyze header file + nfile_header = cimg::fopen(filename,"rb"); + cimg_sprintf(body._data + std::strlen(body),".img"); + nfile = cimg::fopen(body,"rb"); + } else if (!cimg::strcasecmp(ext,"img")) { // File is an Analyze data file + nfile = cimg::fopen(filename,"rb"); + cimg_sprintf(body._data + std::strlen(body),".hdr"); + nfile_header = cimg::fopen(body,"rb"); + } else nfile_header = nfile = cimg::fopen(filename,"rb"); // File is a Niftii file + } else nfile_header = nfile = file; // File is a Niftii file + if (!nfile || !nfile_header) + throw CImgIOException(_cimg_instance + "load_analyze(): Invalid Analyze7.5 or NIFTI header in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + // Read header. + bool endian = false; + unsigned int header_size; + cimg::fread(&header_size,1,nfile_header); + if (!header_size) + throw CImgIOException(_cimg_instance + "load_analyze(): Invalid zero-size header in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (header_size>=4096) { endian = true; cimg::invert_endianness(header_size); } + + unsigned char *const header = new unsigned char[header_size]; + cimg::fread(header + 4,header_size - 4,nfile_header); + if (!file && nfile_header!=nfile) cimg::fclose(nfile_header); + if (endian) { + cimg::invert_endianness((short*)(header + 40),5); + cimg::invert_endianness((short*)(header + 70),1); + cimg::invert_endianness((short*)(header + 72),1); + cimg::invert_endianness((float*)(header + 76),4); + cimg::invert_endianness((float*)(header + 108),1); + cimg::invert_endianness((float*)(header + 112),1); + } + + if (nfile_header==nfile) { + const unsigned int vox_offset = (unsigned int)*(float*)(header + 108); + std::fseek(nfile,vox_offset,SEEK_SET); + } + + unsigned short *dim = (unsigned short*)(header + 40), dimx = 1, dimy = 1, dimz = 1, dimv = 1; + if (!dim[0]) + cimg::warn(_cimg_instance + "load_analyze(): File '%s' defines an image with zero dimensions.", + cimg_instance, + filename?filename:"(FILE*)"); + + if (dim[0]>4) + cimg::warn(_cimg_instance + "load_analyze(): File '%s' defines an image with %u dimensions, reading only the 4 first.", + cimg_instance, + filename?filename:"(FILE*)",dim[0]); + + if (dim[0]>=1) dimx = dim[1]; + if (dim[0]>=2) dimy = dim[2]; + if (dim[0]>=3) dimz = dim[3]; + if (dim[0]>=4) dimv = dim[4]; + float scalefactor = *(float*)(header + 112); if (scalefactor==0) scalefactor = 1; + const unsigned short datatype = *(unsigned short*)(header + 70); + if (voxel_size) { + const float *vsize = (float*)(header + 76); + voxel_size[0] = vsize[1]; voxel_size[1] = vsize[2]; voxel_size[2] = vsize[3]; + } + delete[] header; + + // Read pixel data. + assign(dimx,dimy,dimz,dimv); + const size_t pdim = (size_t)dimx*dimy*dimz*dimv; + switch (datatype) { + case 2 : { + unsigned char *const buffer = new unsigned char[pdim]; + cimg::fread(buffer,pdim,nfile); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 4 : { + short *const buffer = new short[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 8 : { + int *const buffer = new int[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 16 : { + float *const buffer = new float[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + case 64 : { + double *const buffer = new double[pdim]; + cimg::fread(buffer,pdim,nfile); + if (endian) cimg::invert_endianness(buffer,pdim); + cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor); + delete[] buffer; + } break; + default : + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_analyze(): Unable to load datatype %d in file '%s'", + cimg_instance, + datatype,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a .cimg[z] file. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_cimg(const char *const filename, const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(filename); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load image from a .cimg[z] file \newinstance + static CImg get_load_cimg(const char *const filename, const char axis='z', const float align=0) { + return CImg().load_cimg(filename,axis,align); + } + + //! Load image from a .cimg[z] file \overloading. + CImg& load_cimg(std::FILE *const file, const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(file); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load image from a .cimg[z] file \newinstance + static CImg get_load_cimg(std::FILE *const file, const char axis='z', const float align=0) { + return CImg().load_cimg(file,axis,align); + } + + //! Load sub-images of a .cimg file. + /** + \param filename Filename, as a C-string. + \param n0 Starting frame. + \param n1 Ending frame (~0U for max). + \param x0 X-coordinate of the starting sub-image vertex. + \param y0 Y-coordinate of the starting sub-image vertex. + \param z0 Z-coordinate of the starting sub-image vertex. + \param c0 C-coordinate of the starting sub-image vertex. + \param x1 X-coordinate of the ending sub-image vertex (~0U for max). + \param y1 Y-coordinate of the ending sub-image vertex (~0U for max). + \param z1 Z-coordinate of the ending sub-image vertex (~0U for max). + \param c1 C-coordinate of the ending sub-image vertex (~0U for max). + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load sub-images of a .cimg file \newinstance. + static CImg get_load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + return CImg().load_cimg(filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1,axis,align); + } + + //! Load sub-images of a .cimg file \overloading. + CImg& load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + CImgList list; + list.load_cimg(file,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load sub-images of a .cimg file \newinstance. + static CImg get_load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1, + const char axis='z', const float align=0) { + return CImg().load_cimg(file,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1,axis,align); + } + + //! Load image from an INRIMAGE-4 file. + /** + \param filename Filename, as a C-string. + \param[out] voxel_size Pointer to the three voxel sizes read from the file. + **/ + CImg& load_inr(const char *const filename, float *const voxel_size=0) { + return _load_inr(0,filename,voxel_size); + } + + //! Load image from an INRIMAGE-4 file \newinstance. + static CImg get_load_inr(const char *const filename, float *const voxel_size=0) { + return CImg().load_inr(filename,voxel_size); + } + + //! Load image from an INRIMAGE-4 file \overloading. + CImg& load_inr(std::FILE *const file, float *const voxel_size=0) { + return _load_inr(file,0,voxel_size); + } + + //! Load image from an INRIMAGE-4 file \newinstance. + static CImg get_load_inr(std::FILE *const file, float *voxel_size=0) { + return CImg().load_inr(file,voxel_size); + } + + static void _load_inr_header(std::FILE *file, int out[8], float *const voxel_size) { + CImg item(1024), tmp1(64), tmp2(64); + *item = *tmp1 = *tmp2 = 0; + out[0] = std::fscanf(file,"%63s",item._data); + out[0] = out[1] = out[2] = out[3] = out[5] = 1; out[4] = out[6] = out[7] = -1; + if (cimg::strncasecmp(item,"#INRIMAGE-4#{",13)!=0) + throw CImgIOException("CImg<%s>::load_inr(): INRIMAGE-4 header not found.", + pixel_type()); + + while (std::fscanf(file," %63[^\n]%*c",item._data)!=EOF && std::strncmp(item,"##}",3)) { + cimg_sscanf(item," XDIM%*[^0-9]%d",out); + cimg_sscanf(item," YDIM%*[^0-9]%d",out + 1); + cimg_sscanf(item," ZDIM%*[^0-9]%d",out + 2); + cimg_sscanf(item," VDIM%*[^0-9]%d",out + 3); + cimg_sscanf(item," PIXSIZE%*[^0-9]%d",out + 6); + if (voxel_size) { + cimg_sscanf(item," VX%*[^0-9.+-]%f",voxel_size); + cimg_sscanf(item," VY%*[^0-9.+-]%f",voxel_size + 1); + cimg_sscanf(item," VZ%*[^0-9.+-]%f",voxel_size + 2); + } + if (cimg_sscanf(item," CPU%*[ =]%s",tmp1._data)) out[7] = cimg::strncasecmp(tmp1,"sun",3)?0:1; + switch (cimg_sscanf(item," TYPE%*[ =]%s %s",tmp1._data,tmp2._data)) { + case 0 : break; + case 2 : + out[5] = cimg::strncasecmp(tmp1,"unsigned",8)?1:0; + std::strncpy(tmp1,tmp2,tmp1._width - 1); // fallthrough + case 1 : + if (!cimg::strncasecmp(tmp1,"int",3) || !cimg::strncasecmp(tmp1,"fixed",5)) out[4] = 0; + if (!cimg::strncasecmp(tmp1,"float",5) || !cimg::strncasecmp(tmp1,"double",6)) out[4] = 1; + if (!cimg::strncasecmp(tmp1,"packed",6)) out[4] = 2; + if (out[4]>=0) break; // fallthrough + default : + throw CImgIOException("CImg<%s>::load_inr(): Invalid pixel type '%s' defined in header.", + pixel_type(), + tmp2._data); + } + } + if (out[0]<0 || out[1]<0 || out[2]<0 || out[3]<0) + throw CImgIOException("CImg<%s>::load_inr(): Invalid dimensions (%d,%d,%d,%d) defined in header.", + pixel_type(), + out[0],out[1],out[2],out[3]); + if (out[4]<0 || out[5]<0) + throw CImgIOException("CImg<%s>::load_inr(): Incomplete pixel type defined in header.", + pixel_type()); + if (out[6]<0) + throw CImgIOException("CImg<%s>::load_inr(): Incomplete PIXSIZE field defined in header.", + pixel_type()); + if (out[7]<0) + throw CImgIOException("CImg<%s>::load_inr(): Big/Little Endian coding type undefined in header.", + pixel_type()); + } + + CImg& _load_inr(std::FILE *const file, const char *const filename, float *const voxel_size) { +#define _cimg_load_inr_case(Tf,sign,pixsize,Ts) \ + if (!loaded && fopt[6]==pixsize && fopt[4]==Tf && fopt[5]==sign) { \ + Ts *xval, *const val = new Ts[(size_t)fopt[0]*fopt[3]]; \ + cimg_forYZ(*this,y,z) { \ + cimg::fread(val,fopt[0]*fopt[3],nfile); \ + if (fopt[7]!=endian) cimg::invert_endianness(val,fopt[0]*fopt[3]); \ + xval = val; cimg_forX(*this,x) cimg_forC(*this,c) (*this)(x,y,z,c) = (T)*(xval++); \ + } \ + delete[] val; \ + loaded = true; \ + } + + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_inr(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + int fopt[8], endian = cimg::endianness()?1:0; + bool loaded = false; + if (voxel_size) voxel_size[0] = voxel_size[1] = voxel_size[2] = 1; + _load_inr_header(nfile,fopt,voxel_size); + assign(fopt[0],fopt[1],fopt[2],fopt[3]); + _cimg_load_inr_case(0,0,8,unsigned char); + _cimg_load_inr_case(0,1,8,char); + _cimg_load_inr_case(0,0,16,unsigned short); + _cimg_load_inr_case(0,1,16,short); + _cimg_load_inr_case(0,0,32,unsigned int); + _cimg_load_inr_case(0,1,32,int); + _cimg_load_inr_case(1,0,32,float); + _cimg_load_inr_case(1,1,32,float); + _cimg_load_inr_case(1,0,64,double); + _cimg_load_inr_case(1,1,64,double); + if (!loaded) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_inr(): Unknown pixel type defined in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a EXR file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_exr(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_exr(): Specified filename is (null).", + cimg_instance); +#if defined(cimg_use_openexr) + Imf::RgbaInputFile file(filename); + Imath::Box2i dw = file.dataWindow(); + const int + inwidth = dw.max.x - dw.min.x + 1, + inheight = dw.max.y - dw.min.y + 1; + Imf::Array2D pixels; + pixels.resizeErase(inheight,inwidth); + file.setFrameBuffer(&pixels[0][0] - dw.min.x - dw.min.y*inwidth, 1, inwidth); + file.readPixels(dw.min.y, dw.max.y); + assign(inwidth,inheight,1,4); + T *ptr_r = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = data(0,0,0,3); + cimg_forXY(*this,x,y) { + *(ptr_r++) = (T)pixels[y][x].r; + *(ptr_g++) = (T)pixels[y][x].g; + *(ptr_b++) = (T)pixels[y][x].b; + *(ptr_a++) = (T)pixels[y][x].a; + } + return *this; +#elif defined(cimg_use_tinyexr) + float *res; + const char *err = 0; + int width = 0, height = 0; + const int ret = LoadEXR(&res,&width,&height,filename,&err); + if (ret) throw CImgIOException(_cimg_instance + "load_exr(): Unable to load EXR file '%s'.", + cimg_instance,filename); + CImg(res,4,width,height,1,true).get_permute_axes("yzcx").move_to(*this); + std::free(res); + return *this; +#else + return load_other(filename); +#endif + } + + //! Load image from a EXR file \newinstance. + static CImg get_load_exr(const char *const filename) { + return CImg().load_exr(filename); + } + + //! Load image from a PANDORE-5 file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_pandore(const char *const filename) { + return _load_pandore(0,filename); + } + + //! Load image from a PANDORE-5 file \newinstance. + static CImg get_load_pandore(const char *const filename) { + return CImg().load_pandore(filename); + } + + //! Load image from a PANDORE-5 file \overloading. + CImg& load_pandore(std::FILE *const file) { + return _load_pandore(file,0); + } + + //! Load image from a PANDORE-5 file \newinstance. + static CImg get_load_pandore(std::FILE *const file) { + return CImg().load_pandore(file); + } + + CImg& _load_pandore(std::FILE *const file, const char *const filename) { +#define __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,ndim,stype) \ + cimg::fread(dims,nbdim,nfile); \ + if (endian) cimg::invert_endianness(dims,nbdim); \ + assign(nwidth,nheight,ndepth,ndim); \ + const size_t siz = size(); \ + stype *buffer = new stype[siz]; \ + cimg::fread(buffer,siz,nfile); \ + if (endian) cimg::invert_endianness(buffer,siz); \ + T *ptrd = _data; \ + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); \ + buffer-=siz; \ + delete[] buffer + +#define _cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype1,stype2,stype3,ltype) { \ + if (sizeof(stype1)==ltype) { __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype1); } \ + else if (sizeof(stype2)==ltype) { __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype2); } \ + else if (sizeof(stype3)==ltype) { __cimg_load_pandore_case(nbdim,nwidth,nheight,ndepth,dim,stype3); } \ + else throw CImgIOException(_cimg_instance \ + "load_pandore(): Unknown pixel datatype in file '%s'.", \ + cimg_instance, \ + filename?filename:"(FILE*)"); } + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_pandore(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + CImg header(32); + cimg::fread(header._data,12,nfile); + if (cimg::strncasecmp("PANDORE",header,7)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pandore(): PANDORE header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + unsigned int imageid, dims[8] = { 0 }; + int ptbuf[4] = { 0 }; + cimg::fread(&imageid,1,nfile); + const bool endian = imageid>255; + if (endian) cimg::invert_endianness(imageid); + cimg::fread(header._data,20,nfile); + + switch (imageid) { + case 2 : _cimg_load_pandore_case(2,dims[1],1,1,1,unsigned char,unsigned char,unsigned char,1); break; + case 3 : _cimg_load_pandore_case(2,dims[1],1,1,1,long,int,short,4); break; + case 4 : _cimg_load_pandore_case(2,dims[1],1,1,1,double,float,float,4); break; + case 5 : _cimg_load_pandore_case(3,dims[2],dims[1],1,1,unsigned char,unsigned char,unsigned char,1); break; + case 6 : _cimg_load_pandore_case(3,dims[2],dims[1],1,1,long,int,short,4); break; + case 7 : _cimg_load_pandore_case(3,dims[2],dims[1],1,1,double,float,float,4); break; + case 8 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],1,unsigned char,unsigned char,unsigned char,1); break; + case 9 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],1,long,int,short,4); break; + case 10 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],1,double,float,float,4); break; + case 11 : { // Region 1D + cimg::fread(dims,3,nfile); + if (endian) cimg::invert_endianness(dims,3); + assign(dims[1],1,1,1); + const unsigned siz = size(); + if (dims[2]<256) { + unsigned char *buffer = new unsigned char[siz]; + cimg::fread(buffer,siz,nfile); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + if (dims[2]<65536) { + unsigned short *buffer = new unsigned short[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + unsigned int *buffer = new unsigned int[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } + } + } + break; + case 12 : { // Region 2D + cimg::fread(dims,4,nfile); + if (endian) cimg::invert_endianness(dims,4); + assign(dims[2],dims[1],1,1); + const size_t siz = size(); + if (dims[3]<256) { + unsigned char *buffer = new unsigned char[siz]; + cimg::fread(buffer,siz,nfile); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + if (dims[3]<65536) { + unsigned short *buffer = new unsigned short[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + unsigned int *buffer = new unsigned int[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } + } + } + break; + case 13 : { // Region 3D + cimg::fread(dims,5,nfile); + if (endian) cimg::invert_endianness(dims,5); + assign(dims[3],dims[2],dims[1],1); + const size_t siz = size(); + if (dims[4]<256) { + unsigned char *buffer = new unsigned char[siz]; + cimg::fread(buffer,siz,nfile); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + if (dims[4]<65536) { + unsigned short *buffer = new unsigned short[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } else { + unsigned int *buffer = new unsigned int[siz]; + cimg::fread(buffer,siz,nfile); + if (endian) cimg::invert_endianness(buffer,siz); + T *ptrd = _data; + cimg_foroff(*this,off) *(ptrd++) = (T)*(buffer++); + buffer-=siz; + delete[] buffer; + } + } + } + break; + case 16 : _cimg_load_pandore_case(4,dims[2],dims[1],1,3,unsigned char,unsigned char,unsigned char,1); break; + case 17 : _cimg_load_pandore_case(4,dims[2],dims[1],1,3,long,int,short,4); break; + case 18 : _cimg_load_pandore_case(4,dims[2],dims[1],1,3,double,float,float,4); break; + case 19 : _cimg_load_pandore_case(5,dims[3],dims[2],dims[1],3,unsigned char,unsigned char,unsigned char,1); break; + case 20 : _cimg_load_pandore_case(5,dims[3],dims[2],dims[1],3,long,int,short,4); break; + case 21 : _cimg_load_pandore_case(5,dims[3],dims[2],dims[1],3,double,float,float,4); break; + case 22 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],unsigned char,unsigned char,unsigned char,1); break; + case 23 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],long,int,short,4); break; + case 24 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],unsigned long,unsigned int,unsigned short,4); break; + case 25 : _cimg_load_pandore_case(2,dims[1],1,1,dims[0],double,float,float,4); break; + case 26 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],unsigned char,unsigned char,unsigned char,1); break; + case 27 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],long,int,short,4); break; + case 28 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],unsigned long,unsigned int,unsigned short,4); break; + case 29 : _cimg_load_pandore_case(3,dims[2],dims[1],1,dims[0],double,float,float,4); break; + case 30 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],unsigned char,unsigned char,unsigned char,1); + break; + case 31 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],long,int,short,4); break; + case 32 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],unsigned long,unsigned int,unsigned short,4); + break; + case 33 : _cimg_load_pandore_case(4,dims[3],dims[2],dims[1],dims[0],double,float,float,4); break; + case 34 : { // Points 1D + cimg::fread(ptbuf,1,nfile); + if (endian) cimg::invert_endianness(ptbuf,1); + assign(1); (*this)(0) = (T)ptbuf[0]; + } break; + case 35 : { // Points 2D + cimg::fread(ptbuf,2,nfile); + if (endian) cimg::invert_endianness(ptbuf,2); + assign(2); (*this)(0) = (T)ptbuf[1]; (*this)(1) = (T)ptbuf[0]; + } break; + case 36 : { // Points 3D + cimg::fread(ptbuf,3,nfile); + if (endian) cimg::invert_endianness(ptbuf,3); + assign(3); (*this)(0) = (T)ptbuf[2]; (*this)(1) = (T)ptbuf[1]; (*this)(2) = (T)ptbuf[0]; + } break; + default : + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_pandore(): Unable to load data with ID_type %u in file '%s'.", + cimg_instance, + imageid,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image from a PAR-REC (Philips) file. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_parrec(const char *const filename, const char axis='c', const float align=0) { + CImgList list; + list.load_parrec(filename); + if (list._width==1) return list[0].move_to(*this); + return assign(list.get_append(axis,align)); + } + + //! Load image from a PAR-REC (Philips) file \newinstance. + static CImg get_load_parrec(const char *const filename, const char axis='c', const float align=0) { + return CImg().load_parrec(filename,axis,align); + } + + //! Load image from a raw binary file. + /** + \param filename Filename, as a C-string. + \param size_x Width of the image buffer. + \param size_y Height of the image buffer. + \param size_z Depth of the image buffer. + \param size_c Spectrum of the image buffer. + \param is_multiplexed Tells if the image values are multiplexed along the C-axis. + \param invert_endianness Tells if the endianness of the image buffer must be inverted. + \param offset Starting offset of the read in the specified file. + **/ + CImg& load_raw(const char *const filename, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return _load_raw(0,filename,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + //! Load image from a raw binary file \newinstance. + static CImg get_load_raw(const char *const filename, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return CImg().load_raw(filename,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + //! Load image from a raw binary file \overloading. + CImg& load_raw(std::FILE *const file, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return _load_raw(file,0,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + //! Load image from a raw binary file \newinstance. + static CImg get_load_raw(std::FILE *const file, + const unsigned int size_x=0, const unsigned int size_y=1, + const unsigned int size_z=1, const unsigned int size_c=1, + const bool is_multiplexed=false, const bool invert_endianness=false, + const ulongT offset=0) { + return CImg().load_raw(file,size_x,size_y,size_z,size_c,is_multiplexed,invert_endianness,offset); + } + + CImg& _load_raw(std::FILE *const file, const char *const filename, + const unsigned int size_x, const unsigned int size_y, + const unsigned int size_z, const unsigned int size_c, + const bool is_multiplexed, const bool invert_endianness, + const ulongT offset) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_raw(): Specified filename is (null).", + cimg_instance); + if (cimg::is_directory(filename)) + throw CImgArgumentException(_cimg_instance + "load_raw(): Specified filename '%s' is a directory.", + cimg_instance,filename); + const bool is_bool = pixel_type()==cimg::type::string(); + ulongT siz = (ulongT)size_x*size_y*size_z*size_c; + unsigned int + _size_x = size_x, + _size_y = size_y, + _size_z = size_z, + _size_c = size_c; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + if (!siz) { // Retrieve file size + const longT fpos = cimg::ftell(nfile); + if (fpos<0) throw CImgArgumentException(_cimg_instance + "load_raw(): Cannot determine size of input file '%s'.", + cimg_instance,filename?filename:"(FILE*)"); + cimg::fseek(nfile,0,SEEK_END); + siz = cimg::ftell(nfile); + if (!is_bool) { siz/=sizeof(T); _size_y = (unsigned int)siz; } + else _size_y = (unsigned int)(siz*8); + _size_x = _size_z = _size_c = 1; + cimg::fseek(nfile,fpos,SEEK_SET); + } + cimg::fseek(nfile,offset,SEEK_SET); + assign(_size_x,_size_y,_size_z,_size_c,0); + + if (is_bool) { // Boolean data (bitwise) + unsigned char *const buf = new unsigned char[siz]; + cimg::fread(buf,siz,nfile); + _uchar2bool(buf,siz,is_multiplexed); + delete[] buf; + } else { // Non-boolean data + if (siz && (!is_multiplexed || size_c==1)) { // Non-multiplexed + cimg::fread(_data,siz,nfile); + if (invert_endianness) cimg::invert_endianness(_data,siz); + } else if (siz) { // Multiplexed + CImg buf(1,1,1,_size_c); + cimg_forXYZ(*this,x,y,z) { + cimg::fread(buf._data,_size_c,nfile); + if (invert_endianness) cimg::invert_endianness(buf._data,_size_c); + set_vector_at(buf,x,y,z); + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load image sequence from a YUV file. + /** + \param filename Filename, as a C-string. + \param size_x Width of the frames. + \param size_y Height of the frames. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param first_frame Index of the first frame to read. + \param last_frame Index of the last frame to read. + \param step_frame Step value for frame reading. + \param yuv2rgb Tells if the YUV to RGB transform must be applied. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + **/ + CImg& load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return get_load_yuv(filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb,axis).move_to(*this); + } + + //! Load image sequence from a YUV file \newinstance. + static CImg get_load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return CImgList().load_yuv(filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb).get_append(axis); + } + + //! Load image sequence from a YUV file \overloading. + CImg& load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return get_load_yuv(file,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb,axis).move_to(*this); + } + + //! Load image sequence from a YUV file \newinstance. + static CImg get_load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true, const char axis='z') { + return CImgList().load_yuv(file,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb).get_append(axis); + } + + //! Load 3D object from a .OFF file. + /** + \param[out] primitives Primitives data of the 3D object. + \param[out] colors Colors data of the 3D object. + \param filename Filename, as a C-string. + **/ + template + CImg& load_off(CImgList& primitives, CImgList& colors, const char *const filename) { + return _load_off(primitives,colors,0,filename); + } + + //! Load 3D object from a .OFF file \newinstance. + template + static CImg get_load_off(CImgList& primitives, CImgList& colors, const char *const filename) { + return CImg().load_off(primitives,colors,filename); + } + + //! Load 3D object from a .OFF file \overloading. + template + CImg& load_off(CImgList& primitives, CImgList& colors, std::FILE *const file) { + return _load_off(primitives,colors,file,0); + } + + //! Load 3D object from a .OFF file \newinstance. + template + static CImg get_load_off(CImgList& primitives, CImgList& colors, std::FILE *const file) { + return CImg().load_off(primitives,colors,file); + } + + template + CImg& _load_off(CImgList& primitives, CImgList& colors, + std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "load_off(): Specified filename is (null).", + cimg_instance); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"r"); + unsigned int nb_points = 0, nb_primitives = 0, nb_read = 0; + CImg line(256); *line = 0; + int err; + + // Skip comments, and read magic string OFF + do { err = std::fscanf(nfile,"%255[^\n] ",line._data); } while (!err || (err==1 && *line=='#')); + if (cimg::strncasecmp(line,"OFF",3) && cimg::strncasecmp(line,"COFF",4)) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_off(): OFF header not found in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + do { err = std::fscanf(nfile,"%255[^\n] ",line._data); } while (!err || (err==1 && *line=='#')); + if ((err = cimg_sscanf(line,"%u%u%*[^\n] ",&nb_points,&nb_primitives))!=2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_off(): Invalid number of vertices or primitives specified in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + } + + // Read points data + assign(nb_points,3); + float X = 0, Y = 0, Z = 0; + cimg_forX(*this,l) { + do { err = std::fscanf(nfile,"%255[^\n] ",line._data); } while (!err || (err==1 && *line=='#')); + if ((err = cimg_sscanf(line,"%f%f%f%*[^\n] ",&X,&Y,&Z))!=3) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "load_off(): Failed to read vertex %u/%u in file '%s'.", + cimg_instance, + l + 1,nb_points,filename?filename:"(FILE*)"); + } + (*this)(l,0) = (T)X; (*this)(l,1) = (T)Y; (*this)(l,2) = (T)Z; + } + + // Read primitive data + primitives.assign(); + colors.assign(); + bool stop_flag = false; + while (!stop_flag) { + float c0 = 0.7f, c1 = 0.7f, c2 = 0.7f; + unsigned int prim = 0, i0 = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0; + *line = 0; + if ((err = std::fscanf(nfile,"%u",&prim))!=1) stop_flag = true; + else { + ++nb_read; + switch (prim) { + case 1 : { + if ((err = std::fscanf(nfile,"%u%255[^\n] ",&i0,line._data))<2) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 2 : { + if ((err = std::fscanf(nfile,"%u%u%255[^\n] ",&i0,&i1,line._data))<2) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i1).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 3 : { + if ((err = std::fscanf(nfile,"%u%u%u%255[^\n] ",&i0,&i1,&i2,line._data))<3) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i2,i1).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 4 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,line._data))<4) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255)).move_to(colors); + } + } break; + case 5 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,line._data))<5) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector(i0,i4,i3).move_to(primitives); + colors.insert(2,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++nb_primitives; + } + } break; + case 6 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,&i5,line._data))<6) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector(i0,i5,i4,i3).move_to(primitives); + colors.insert(2,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++nb_primitives; + } + } break; + case 7 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,&i5,&i6,line._data))<7) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i4,i3,i1).move_to(primitives); + CImg::vector(i0,i6,i5,i4).move_to(primitives); + CImg::vector(i3,i2,i1).move_to(primitives); + colors.insert(3,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++(++nb_primitives); + } + } break; + case 8 : { + if ((err = std::fscanf(nfile,"%u%u%u%u%u%u%u%u%255[^\n] ",&i0,&i1,&i2,&i3,&i4,&i5,&i6,&i7,line._data))<7) { + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u from file '%s'.", + cimg_instance, + nb_read,nb_primitives,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } else { + err = cimg_sscanf(line,"%f%f%f",&c0,&c1,&c2); + CImg::vector(i0,i3,i2,i1).move_to(primitives); + CImg::vector(i0,i5,i4,i3).move_to(primitives); + CImg::vector(i0,i7,i6,i5).move_to(primitives); + colors.insert(3,CImg::vector((tc)(c0*255),(tc)(c1*255),(tc)(c2*255))); + ++(++nb_primitives); + } + } break; + default : + cimg::warn(_cimg_instance + "load_off(): Failed to read primitive %u/%u (%u vertices) from file '%s'.", + cimg_instance, + nb_read,nb_primitives,prim,filename?filename:"(FILE*)"); + + err = std::fscanf(nfile,"%*[^\n] "); + } + } + } + if (!file) cimg::fclose(nfile); + if (primitives._width!=nb_primitives) + cimg::warn(_cimg_instance + "load_off(): Only %u/%u primitives read from file '%s'.", + cimg_instance, + primitives._width,nb_primitives,filename?filename:"(FILE*)"); + return *this; + } + + //! Load image sequence from a video file, using OpenCV library. + /** + \param filename Filename, as a C-string. + \param first_frame Index of the first frame to read. + \param last_frame Index of the last frame to read. + \param step_frame Step value for frame reading. + \param axis Alignment axis. + \param align Appending alignment. + **/ + CImg& load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + const char axis='z', const float align=0) { + return get_load_video(filename,first_frame,last_frame,step_frame,axis,align).move_to(*this); + } + + //! Load image sequence from a video file, using OpenCV library \newinstance. + static CImg get_load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + const char axis='z', const float align=0) { + return CImgList().load_video(filename,first_frame,last_frame,step_frame).get_append(axis,align); + } + + //! Load image sequence using FFMPEG's external tool 'ffmpeg'. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_ffmpeg_external(const char *const filename, const char axis='z', const float align=0) { + return get_load_ffmpeg_external(filename,axis,align).move_to(*this); + } + + //! Load image sequence using FFMPEG's external tool 'ffmpeg' \newinstance. + static CImg get_load_ffmpeg_external(const char *const filename, const char axis='z', const float align=0) { + return CImgList().load_ffmpeg_external(filename).get_append(axis,align); + } + + //! Load gif file, using Imagemagick or GraphicsMagicks's external tools. + /** + \param filename Filename, as a C-string. + \param axis Appending axis, if file contains multiple images. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg& load_gif_external(const char *const filename, + const char axis='z', const float align=0) { + return get_load_gif_external(filename,axis,align).move_to(*this); + } + + //! Load gif file, using ImageMagick or GraphicsMagick's external tool 'convert' \newinstance. + static CImg get_load_gif_external(const char *const filename, + const char axis='z', const float align=0) { + return CImgList().load_gif_external(filename).get_append(axis,align); + } + + //! Load image from a HEIC file. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_heif(const char *const filename) { + return _load_heif(filename); + } + + //! Load image from a HEIC file \newinstance. + static CImg get_load_heif(const char *const filename) { + return CImg().load_heif(filename); + } + + CImg& _load_heif(const char *const filename) { +#ifndef cimg_use_heif + return load_other(filename); +#else + try { + heif::Context ctx; + ctx.read_from_file(filename); + + heif::ImageHandle handle = ctx.get_primary_image_handle(); + const heif::Image image = + handle.decode_image(heif_colorspace_RGB,handle.has_alpha_channel()?heif_chroma_interleaved_RGBA: + heif_chroma_interleaved_RGB); + const int + W = image.get_width(heif_channel_interleaved), + H = image.get_height(heif_channel_interleaved), + S = handle.has_alpha_channel()?4:3; + assign(W,H,1,S); + + int stride; + const unsigned char *const buffer = image.get_plane(heif_channel_interleaved,&stride); + T *ptr_r = _data, *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2), *ptr_a = S>3?data(0,0,0,3):0; + cimg_forY(*this,y) { + const unsigned char *ptrs = buffer + y*stride; + if (ptr_a) cimg_forX(*this,x) { // RGBA + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + *(ptr_a++) = (T)*(ptrs++); + } + else cimg_forX(*this,x) { // RGB + *(ptr_r++) = (T)*(ptrs++); + *(ptr_g++) = (T)*(ptrs++); + *(ptr_b++) = (T)*(ptrs++); + } + } + } catch (const heif::Error& e) { + throw CImgInstanceException(_cimg_instance + "load_heif(): Unable to decode image: %s", + cimg_instance, + e.get_message().c_str()); + } catch (...) { + throw; + } + return *this; +#endif + } + + //! Load image using GraphicsMagick's external tool 'gm'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_graphicsmagick_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_graphicsmagick_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + if (!cimg::system("which gm")) { + cimg_snprintf(command,command._width,"%s convert \"%s\" pnm:-", + cimg::graphicsmagick_path(),s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_graphicsmagick_external(): Failed to load file '%s' " + "with external command 'gm'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.pnm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" convert \"%s\" \"%s\"", + cimg::graphicsmagick_path(),s_filename.data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command,cimg::graphicsmagick_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_graphicsmagick_external(): Failed to load file '%s' with external command 'gm'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image using GraphicsMagick's external tool 'gm' \newinstance. + static CImg get_load_graphicsmagick_external(const char *const filename) { + return CImg().load_graphicsmagick_external(filename); + } + + //! Load gzipped image file, using external tool 'gunzip'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_gzip_external(const char *const filename) { + if (!filename) + throw CImgIOException(_cimg_instance + "load_gzip_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), body(256); + const char + *const ext = cimg::split_filename(filename,body), + *const ext2 = cimg::split_filename(body,0); + + std::FILE *file = 0; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gunzip_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_gzip_external(): Failed to load file '%s' with external command 'gunzip'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load gzipped image file, using external tool 'gunzip' \newinstance. + static CImg get_load_gzip_external(const char *const filename) { + return CImg().load_gzip_external(filename); + } + + //! Load image using ImageMagick's external tool 'convert'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_imagemagick_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_imagemagick_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + if (!cimg::system("which convert")) { + cimg_snprintf(command,command._width,"%s%s \"%s\" pnm:-", + cimg::imagemagick_path(), + !cimg::strcasecmp(cimg::split_filename(filename),"pdf")?" -density 400x400":"", + s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_imagemagick_external(): Failed to load file '%s' with " + "external command 'magick/convert'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.pnm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\"%s \"%s\" \"%s\"", + cimg::imagemagick_path(), + !cimg::strcasecmp(cimg::split_filename(filename),"pdf")?" -density 400x400":"", + s_filename.data(),CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command,cimg::imagemagick_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_imagemagick_external(): Failed to load file '%s' with " + "external command 'magick/convert'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image using ImageMagick's external tool 'convert' \newinstance. + static CImg get_load_imagemagick_external(const char *const filename) { + return CImg().load_imagemagick_external(filename); + } + + //! Load image from a DICOM file, using Medcon's external tool 'medcon'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_medcon_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_medcon_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), body(256); + cimg::fclose(cimg::fopen(filename,"r")); + std::FILE *file = 0; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.hdr",cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -w -c anlz -o \"%s\" -f \"%s\"", + cimg::medcon_path(), + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::medcon_path()); + cimg::split_filename(filename_tmp,body); + + cimg_snprintf(command,command._width,"%s.hdr",body._data); + file = cimg::std_fopen(command,"rb"); + if (!file) { + cimg_snprintf(command,command._width,"m000-%s.hdr",body._data); + file = cimg::std_fopen(command,"rb"); + if (!file) { + throw CImgIOException(_cimg_instance + "load_medcon_external(): Failed to load file '%s' with external command 'medcon'.", + cimg_instance, + filename); + } + } + cimg::fclose(file); + load_analyze(command); + std::remove(command); + cimg::split_filename(command,body); + cimg_snprintf(command,command._width,"%s.img",body._data); + std::remove(command); + return *this; + } + + //! Load image from a DICOM file, using Medcon's external tool 'medcon' \newinstance. + static CImg get_load_medcon_external(const char *const filename) { + return CImg().load_medcon_external(filename); + } + + //! Load image from a .pdf file. + /** + \param filename Filename, as a C-string. + \param resolution Image resolution. + **/ + CImg& load_pdf_external(const char *const filename, const unsigned int resolution=400) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_pdf_external(): Specified filename is (null).", + cimg_instance); + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + cimg_snprintf(command,command._width,"gs -q -dNOPAUSE -sDEVICE=ppmraw -o - -r%u \"%s\"", + resolution,s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_pdf_external(): Failed to load file '%s' with external command 'gs'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.ppm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"gs -q -dNOPAUSE -sDEVICE=ppmraw -o \"%s\" -r%u \"%s\"", + CImg::string(filename_tmp)._system_strescape().data(),resolution,s_filename.data()); + cimg::system(command,"gs"); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_pdf_external(): Failed to load file '%s' with external command 'gs'.", + cimg_instance, + filename); + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image from a .pdf file \newinstance. + static CImg get_load_pdf_external(const char *const filename, const unsigned int resolution=400) { + return CImg().load_pdf_external(filename,resolution); + } + + //! Load image from a RAW Color Camera file, using external tool 'dcraw'. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_dcraw_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_dcraw_external(): Specified filename is (null).", + cimg_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256); + std::FILE *file = 0; + const CImg s_filename = CImg::string(filename)._system_strescape(); +#if cimg_OS==1 + cimg_snprintf(command,command._width,"%s -w -4 -c \"%s\"", + cimg::dcraw_path(),s_filename.data()); + file = popen(command,"r"); + if (file) { + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_pnm(file); } catch (...) { + pclose(file); + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_dcraw_external(): Failed to load file '%s' with external command 'dcraw'.", + cimg_instance, + filename); + } + pclose(file); + return *this; + } +#endif + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.ppm", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -w -4 -c \"%s\" > \"%s\"", + cimg::dcraw_path(),s_filename.data(),CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command,cimg::dcraw_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "load_dcraw_external(): Failed to load file '%s' with external command 'dcraw'.", + cimg_instance, + filename); + + } else cimg::fclose(file); + load_pnm(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load image from a RAW Color Camera file, using external tool 'dcraw' \newinstance. + static CImg get_load_dcraw_external(const char *const filename) { + return CImg().load_dcraw_external(filename); + } + +#ifdef cimg_use_opencv + + // Convert a continuous cv::Mat to a CImg. + static CImg _cvmat2cimg(const cv::Mat &src) { + if (src.channels()==1) return CImg(src.ptr(),src.cols,src.rows,1,1); + else if (src.channels()==3) { // BGR + CImg res(src.cols,src.rows,1,src.channels()); + const unsigned char *ptrs = src.ptr(); + unsigned char *pR = res.data(), *pG = res.data(0,0,0,1), *pB = res.data(0,0,0,2); + cimg_forXY(res,x,y) { *(pB++) = *(ptrs++); *(pG++) = *(ptrs++); *(pR++) = *(ptrs++); } + return res; + } + return CImg(src.ptr(),src.channels(),src.cols,src.rows,1,true).get_permute_axes("yzcx"); + } + + // Convert a CImg to a cv::Mat. + cv::Mat _cimg2cvmat() const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "_cimg2cvmat() : Instance image is empty.", + cimg_instance); + if (_spectrum==2) + throw CImgInstanceException(_cimg_instance + "_cimg2cvmat() : Invalid number of channels (should be '1' or '3+').", + cimg_instance); + if (_depth!=1) + throw CImgInstanceException(_cimg_instance + "_cimg2cvmat() : Invalid number of slices (should be '1').", + cimg_instance); + int mat_type = -1; + if (pixel_type()==cimg::type::string()) mat_type = CV_8UC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_8SC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_16UC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_16SC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_32SC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_32FC1; + if (pixel_type()==cimg::type::string()) mat_type = CV_64FC1; + if (mat_type<0) + throw CImgInstanceException(_cimg_instance + "_cvmat2cimg() : pixel type '%s' is not supported.", + cimg_instance,pixel_type()); + cv::Mat res; + std::vector channels(_spectrum); + if (_spectrum>1) { + cimg_forC(*this,c) + channels[c] = cv::Mat(_height,_width,mat_type,_data + _width*_height*(_spectrum - 1 - c)); + cv::merge(channels,res); + } else res = cv::Mat(_height,_width,mat_type,_data).clone(); + return res; + } + +#endif + + //! Load image from a camera stream, using OpenCV. + /** + \param index Index of the camera to capture images from (from 0 to 63). + \param capture_width Width of the desired image ('0' stands for default value). + \param capture_height Height of the desired image ('0' stands for default value). + \param skip_frames Number of frames to skip before the capture. + \param release_camera Tells if the camera resource must be released at the end of the method. + **/ + CImg& load_camera(const unsigned int camera_index=0, + const unsigned int capture_width=0, const unsigned int capture_height=0, + const unsigned int skip_frames=0, const bool release_camera=true) { +#ifdef cimg_use_opencv + if (camera_index>=64) + throw CImgArgumentException(_cimg_instance + "load_camera(): Invalid request for camera #%u " + "(no more than 100 cameras can be managed simultaneously).", + cimg_instance, + camera_index); + static cv::VideoCapture *captures[64] = { 0 }; + static unsigned int captures_w[64], captures_h[64]; + if (release_camera) { + cimg::mutex(9); + if (captures[camera_index]) captures[camera_index]->release(); + delete captures[camera_index]; + captures[camera_index] = 0; + captures_w[camera_index] = captures_h[camera_index] = 0; + cimg::mutex(9,0); + return *this; + } + if (!captures[camera_index]) { + cimg::mutex(9); + captures[camera_index] = new cv::VideoCapture(camera_index); + captures_w[camera_index] = captures_h[camera_index] = 0; + if (!captures[camera_index]->isOpened()) { + delete captures[camera_index]; + captures[camera_index] = 0; + cimg::mutex(9,0); + throw CImgIOException(_cimg_instance + "load_camera(): Failed to initialize camera #%u.", + cimg_instance, + camera_index); + } + cimg::mutex(9,0); + } + cimg::mutex(9); + if (capture_width!=captures_w[camera_index]) { + captures[camera_index]->set(_cimg_cap_prop_frame_width,capture_width); + captures_w[camera_index] = capture_width; + } + if (capture_height!=captures_h[camera_index]) { + captures[camera_index]->set(_cimg_cap_prop_frame_height,capture_height); + captures_h[camera_index] = capture_height; + } + for (unsigned int i = 0; igrab(); + cv::Mat cvimg; + captures[camera_index]->read(cvimg); + if (cvimg.empty()) assign(); else _cvmat2cimg(cvimg).move_to(*this); + cimg::mutex(9,0); + return *this; +#else + cimg::unused(camera_index,skip_frames,release_camera,capture_width,capture_height); + throw CImgIOException(_cimg_instance + "load_camera(): This function requires features from the OpenCV library " + "('-Dcimg_use_opencv' must be defined).", + cimg_instance); +#endif + } + + //! Load image from a camera stream, using OpenCV \newinstance. + static CImg get_load_camera(const unsigned int camera_index=0, + const unsigned int capture_width=0, const unsigned int capture_height=0, + const unsigned int skip_frames=0, const bool release_camera=true) { + return CImg().load_camera(camera_index,capture_width,capture_height,skip_frames,release_camera); + } + + //! Load image using various non-native ways. + /** + \param filename Filename, as a C-string. + **/ + CImg& load_other(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimg_instance + "load_other(): Specified filename is (null).", + cimg_instance); + + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { load_magick(filename); } + catch (CImgException&) { + try { load_imagemagick_external(filename); } + catch (CImgException&) { + try { load_graphicsmagick_external(filename); } + catch (CImgException&) { + try { load_cimg(filename); } + catch (CImgException&) { + try { + cimg::fclose(cimg::fopen(filename,"rb")); + } catch (CImgException&) { + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_other(): Failed to open file '%s'.", + cimg_instance, + filename); + } + cimg::exception_mode(omode); + throw CImgIOException(_cimg_instance + "load_other(): Failed to recognize format of file '%s'.", + cimg_instance, + filename); + } + } + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load image using various non-native ways \newinstance. + static CImg get_load_other(const char *const filename) { + return CImg().load_other(filename); + } + + //@} + //--------------------------- + // + //! \name Data Output + //@{ + //--------------------------- + + //! Display information about the image data. + /** + \param title Name for the considered image. + \param display_stats Tells to compute and display image statistics. + **/ + const CImg& print(const char *const title=0, const bool display_stats=true) const { + + int xm = 0, ym = 0, zm = 0, vm = 0, xM = 0, yM = 0, zM = 0, vM = 0; + CImg st; + if (!is_empty() && display_stats) { + st = get_stats(); + xm = (int)st[4]; ym = (int)st[5], zm = (int)st[6], vm = (int)st[7]; + xM = (int)st[8]; yM = (int)st[9], zM = (int)st[10], vM = (int)st[11]; + } + + const ulongT siz = size(), msiz = siz*sizeof(T), siz1 = siz - 1, + mdisp = msiz<8*1024?0U:msiz<8*1024*1024?1U:2U, width1 = _width - 1; + + CImg _title(64); + if (!title) cimg_snprintf(_title,_title._width,"CImg<%s>",pixel_type()); + + std::fprintf(cimg::output(),"%s%s%s%s: %sthis%s = %p, %ssize%s = (%u,%u,%u,%u) [%lu %s], %sdata%s = (%s*)%p", + cimg::t_magenta,cimg::t_bold,title?title:_title._data,cimg::t_normal, + cimg::t_bold,cimg::t_normal,(void*)this, + cimg::t_bold,cimg::t_normal,_width,_height,_depth,_spectrum, + (unsigned long)(mdisp==0?msiz:(mdisp==1?(msiz>>10):(msiz>>20))), + mdisp==0?"b":(mdisp==1?"Kio":"Mio"), + cimg::t_bold,cimg::t_normal,pixel_type(),(void*)begin()); + if (_data) + std::fprintf(cimg::output(),"..%p (%s) = [ ",(void*)((char*)end() - 1),_is_shared?"shared":"non-shared"); + else std::fprintf(cimg::output()," (%s) = [ ",_is_shared?"shared":"non-shared"); + + if (!is_empty()) cimg_foroff(*this,off) { + std::fprintf(cimg::output(),"%g",(double)_data[off]); + if (off!=siz1) std::fprintf(cimg::output(),"%s",off%_width==width1?" ; ":" "); + if (off==7 && siz>16) { off = siz1 - 8; std::fprintf(cimg::output(),"... "); } + } + if (!is_empty() && display_stats) + std::fprintf(cimg::output(), + " ], %smin%s = %g, %smax%s = %g, %smean%s = %g, %sstd%s = %g, %scoords_min%s = (%u,%u,%u,%u), " + "%scoords_max%s = (%u,%u,%u,%u).\n", + cimg::t_bold,cimg::t_normal,st[0], + cimg::t_bold,cimg::t_normal,st[1], + cimg::t_bold,cimg::t_normal,st[2], + cimg::t_bold,cimg::t_normal,std::sqrt(st[3]), + cimg::t_bold,cimg::t_normal,xm,ym,zm,vm, + cimg::t_bold,cimg::t_normal,xM,yM,zM,vM); + else std::fprintf(cimg::output(),"%s].\n",is_empty()?"":" "); + std::fflush(cimg::output()); + return *this; + } + + //! Display image into a CImgDisplay window. + /** + \param disp Display window. + **/ + const CImg& display(CImgDisplay& disp) const { + disp.display(*this); + return *this; + } + + //! Display image into a CImgDisplay window, in an interactive way. + /** + \param disp Display window. + \param display_info Tells if image information are displayed on the standard output. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImg& display(CImgDisplay &disp, const bool display_info, unsigned int *const XYZ=0, + const bool exit_on_anykey=false) const { + return _display(disp,0,display_info,XYZ,exit_on_anykey,false); + } + + //! Display image into an interactive window. + /** + \param title Window title + \param display_info Tells if image information are displayed on the standard output. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImg& display(const char *const title=0, const bool display_info=true, unsigned int *const XYZ=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _display(disp,title,display_info,XYZ,exit_on_anykey,false); + } + + const CImg& _display(CImgDisplay &disp, const char *const title, const bool display_info, + unsigned int *const XYZ, const bool exit_on_anykey, + const bool exit_on_singleclick) const { + unsigned int oldw = 0, oldh = 0, _XYZ[3] = { 0 }, key = 0; + int x0 = 0, y0 = 0, z0 = 0, x1 = width() - 1, y1 = height() - 1, z1 = depth() - 1, + old_mouse_x = -1, old_mouse_y = -1; + + if (!disp) { + disp.assign(cimg_fitscreen(_width,_height,_depth),title?title:0,1); + if (!title) disp.set_title("CImg<%s> (%ux%ux%ux%u)",pixel_type(),_width,_height,_depth,_spectrum); + else disp.set_title("%s",title); + } else if (title) disp.set_title("%s",title); + disp.show().flush(); + + const CImg dtitle = CImg::string(disp.title()); + if (display_info) print(dtitle); + + CImg zoom; + for (bool reset_view = true, resize_disp = false, is_first_select = true; !key && !disp.is_closed(); ) { + if (reset_view) { + if (XYZ) { _XYZ[0] = XYZ[0]; _XYZ[1] = XYZ[1]; _XYZ[2] = XYZ[2]; } + else { + _XYZ[0] = (unsigned int)(x0 + x1 + 1)/2; + _XYZ[1] = (unsigned int)(y0 + y1 + 1)/2; + _XYZ[2] = (unsigned int)(z0 + z1 + 1)/2; + } + x0 = 0; y0 = 0; z0 = 0; x1 = width() - 1; y1 = height() - 1; z1 = depth() - 1; + disp.resize(cimg_fitscreen(_width,_height,_depth),false); + oldw = disp._width; oldh = disp._height; + resize_disp = true; + reset_view = false; + } + if (!x0 && !y0 && !z0 && x1==width() - 1 && y1==height() - 1 && z1==depth() - 1) { + if (is_empty()) zoom.assign(1,1,1,1,(T)0); else zoom.assign(); + } else zoom = get_crop(x0,y0,z0,x1,y1,z1); + + const CImg& visu = zoom?zoom:*this; + const unsigned int + dx = 1U + x1 - x0, dy = 1U + y1 - y0, dz = 1U + z1 - z0, + tw = dx + (dz>1?dz:0U), th = dy + (dz>1?dz:0U); + if (!is_empty() && !disp.is_fullscreen() && resize_disp) { + const float + ttw = (float)tw*disp.width()/oldw, tth = (float)th*disp.height()/oldh, + dM = std::max(ttw,tth), diM = (float)std::max(disp.width(),disp.height()); + const unsigned int + imgw = (unsigned int)(ttw*diM/dM), imgh = (unsigned int)(tth*diM/dM); + disp.set_fullscreen(false).resize(cimg_fitscreen(imgw,imgh,1),false); + resize_disp = false; + } + oldw = tw; oldh = th; + + bool + go_up = false, go_down = false, go_left = false, go_right = false, + go_inc = false, go_dec = false, go_in = false, go_out = false, + go_in_center = false; + + disp.set_title("%s",dtitle._data); + if (_width>1 && visu._width==1) disp.set_title("%s | x=%u",disp._title,x0); + if (_height>1 && visu._height==1) disp.set_title("%s | y=%u",disp._title,y0); + if (_depth>1 && visu._depth==1) disp.set_title("%s | z=%u",disp._title,z0); + + disp._mouse_x = old_mouse_x; disp._mouse_y = old_mouse_y; + CImg selection = visu._select(disp,0,2,_XYZ,x0,y0,z0,true,is_first_select,_depth>1,true); + old_mouse_x = disp._mouse_x; old_mouse_y = disp._mouse_y; + is_first_select = false; + + if (disp.wheel()) { + if ((disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) && + (disp.is_keySHIFTLEFT() || disp.is_keySHIFTRIGHT())) { + go_left = !(go_right = disp.wheel()>0); + } else if (disp.is_keySHIFTLEFT() || disp.is_keySHIFTRIGHT()) { + go_down = !(go_up = disp.wheel()>0); + } else if (depth()==1 || disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + go_out = !(go_in = disp.wheel()>0); go_in_center = false; + } + disp.set_wheel(); + } + + const int + sx0 = selection(0), sy0 = selection(1), sz0 = selection(2), + sx1 = selection(3), sy1 = selection(4), sz1 = selection(5); + if (sx0>=0 && sy0>=0 && sz0>=0 && sx1>=0 && sy1>=0 && sz1>=0) { + x1 = x0 + sx1; y1 = y0 + sy1; z1 = z0 + sz1; + x0+=sx0; y0+=sy0; z0+=sz0; + if ((sx0==sx1 && sy0==sy1) || (_depth>1 && sx0==sx1 && sz0==sz1) || (_depth>1 && sy0==sy1 && sz0==sz1)) { + if (exit_on_singleclick && (!zoom || is_empty())) break; else reset_view = true; + } + resize_disp = true; + } else switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : case cimg::keySHIFTRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : case cimg::keySHIFTLEFT : key = 0; break; + case cimg::keyP : if (visu._depth>1 && (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT())) { + // Special mode: play stack of frames + const unsigned int + w1 = visu._width*disp.width()/(visu._width + (visu._depth>1?visu._depth:0)), + h1 = visu._height*disp.height()/(visu._height + (visu._depth>1?visu._depth:0)); + float frame_timing = 5; + bool is_stopped = false; + disp.set_key(key,false).set_wheel().resize(cimg_fitscreen(w1,h1,1),false); key = 0; + for (unsigned int timer = 0; !key && !disp.is_closed() && !disp.button(); ) { + if (disp.is_resized()) disp.resize(false); + if (!timer) { + visu.get_slice((int)_XYZ[2]).display(disp.set_title("%s | z=%d",dtitle.data(),_XYZ[2])); + (++_XYZ[2])%=visu._depth; + } + if (!is_stopped) { if (++timer>(unsigned int)frame_timing) timer = 0; } else timer = ~0U; + if (disp.wheel()) { frame_timing-=disp.wheel()/3.f; disp.set_wheel(); } + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyPAGEUP : frame_timing-=0.3f; key = 0; break; + case cimg::keyPAGEDOWN : frame_timing+=0.3f; key = 0; break; + case cimg::keySPACE : is_stopped = !is_stopped; disp.set_key(key,false); key = 0; break; + case cimg::keyARROWLEFT : case cimg::keyARROWUP : is_stopped = true; timer = 0; key = 0; break; + case cimg::keyARROWRIGHT : case cimg::keyARROWDOWN : is_stopped = true; + (_XYZ[2]+=visu._depth - 2)%=visu._depth; timer = 0; key = 0; break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false).set_key(key,false); key = 0; + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(_width,_height,_depth),false).set_key(key,false); key = 0; + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false). + toggle_fullscreen().set_key(key,false); key = 0; + } break; + } + frame_timing = frame_timing<1?1:(frame_timing>39?39:frame_timing); + disp.wait(20); + } + const unsigned int + w2 = (visu._width + (visu._depth>1?visu._depth:0))*disp.width()/visu._width, + h2 = (visu._height + (visu._depth>1?visu._depth:0))*disp.height()/visu._height; + disp.resize(cimg_fitscreen(w2,h2,1),false).set_title(dtitle.data()).set_key().set_button().set_wheel(); + key = 0; + } break; + case cimg::keyHOME : reset_view = resize_disp = true; key = 0; break; + case cimg::keyPADADD : go_in = true; go_in_center = true; key = 0; break; + case cimg::keyPADSUB : go_out = true; key = 0; break; + case cimg::keyARROWLEFT : case cimg::keyPAD4: go_left = true; key = 0; break; + case cimg::keyARROWRIGHT : case cimg::keyPAD6: go_right = true; key = 0; break; + case cimg::keyARROWUP : case cimg::keyPAD8: go_up = true; key = 0; break; + case cimg::keyARROWDOWN : case cimg::keyPAD2: go_down = true; key = 0; break; + case cimg::keyPAD7 : go_up = go_left = true; key = 0; break; + case cimg::keyPAD9 : go_up = go_right = true; key = 0; break; + case cimg::keyPAD1 : go_down = go_left = true; key = 0; break; + case cimg::keyPAD3 : go_down = go_right = true; key = 0; break; + case cimg::keyPAGEUP : go_inc = true; key = 0; break; + case cimg::keyPAGEDOWN : go_dec = true; key = 0; break; + } + if (go_in) { + const int + mx = go_in_center?disp.width()/2:disp.mouse_x(), + my = go_in_center?disp.height()/2:disp.mouse_y(), + mX = mx*(width() + (depth()>1?depth():0))/disp.width(), + mY = my*(height() + (depth()>1?depth():0))/disp.height(); + int X = (int)_XYZ[0], Y = (int)_XYZ[1], Z = (int)_XYZ[2]; + if (mX=height()) { + X = x0 + mX*(1 + x1 - x0)/width(); Z = z0 + (mY - height())*(1 + z1 - z0)/depth(); + } + if (mX>=width() && mY4) { x0 = X - 3*(X - x0)/4; x1 = X + 3*(x1 - X)/4; } + if (y1 - y0>4) { y0 = Y - 3*(Y - y0)/4; y1 = Y + 3*(y1 - Y)/4; } + if (z1 - z0>4) { z0 = Z - 3*(Z - z0)/4; z1 = Z + 3*(z1 - Z)/4; } + } + if (go_out) { + const int + delta_x = (x1 - x0)/8, delta_y = (y1 - y0)/8, delta_z = (z1 - z0)/8, + ndelta_x = delta_x?delta_x:(_width>1), + ndelta_y = delta_y?delta_y:(_height>1), + ndelta_z = delta_z?delta_z:(_depth>1); + x0-=ndelta_x; y0-=ndelta_y; z0-=ndelta_z; + x1+=ndelta_x; y1+=ndelta_y; z1+=ndelta_z; + if (x0<0) { x1-=x0; x0 = 0; if (x1>=width()) x1 = width() - 1; } + if (y0<0) { y1-=y0; y0 = 0; if (y1>=height()) y1 = height() - 1; } + if (z0<0) { z1-=z0; z0 = 0; if (z1>=depth()) z1 = depth() - 1; } + if (x1>=width()) { x0-=(x1 - width() + 1); x1 = width() - 1; if (x0<0) x0 = 0; } + if (y1>=height()) { y0-=(y1 - height() + 1); y1 = height() - 1; if (y0<0) y0 = 0; } + if (z1>=depth()) { z0-=(z1 - depth() + 1); z1 = depth() - 1; if (z0<0) z0 = 0; } + const float + ratio = (float)(x1-x0)/(y1-y0), + ratiow = (float)disp._width/disp._height, + sub = std::min(cimg::abs(ratio - ratiow),cimg::abs(1/ratio-1/ratiow)); + if (sub>0.01) resize_disp = true; + } + if (go_left) { + const int delta = (x1 - x0)/4, ndelta = delta?delta:(_width>1); + if (x0 - ndelta>=0) { x0-=ndelta; x1-=ndelta; } + else { x1-=x0; x0 = 0; } + } + if (go_right) { + const int delta = (x1 - x0)/4, ndelta = delta?delta:(_width>1); + if (x1+ndelta1); + if (y0 - ndelta>=0) { y0-=ndelta; y1-=ndelta; } + else { y1-=y0; y0 = 0; } + } + if (go_down) { + const int delta = (y1 - y0)/4, ndelta = delta?delta:(_height>1); + if (y1+ndelta1); + if (z0 - ndelta>=0) { z0-=ndelta; z1-=ndelta; } + else { z1-=z0; z0 = 0; } + } + if (go_dec) { + const int delta = (z1 - z0)/4, ndelta = delta?delta:(_depth>1); + if (z1+ndelta + const CImg& display_object3d(CImgDisplay& disp, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return _display_object3d(disp,0,vertices,primitives,colors,opacities,centering,render_static, + render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _display_object3d(disp,title,vertices,primitives,colors,opacities,centering,render_static, + render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(CImgDisplay &disp, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(disp,vertices,primitives,colors,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(title,vertices,primitives,colors,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(CImgDisplay &disp, + const CImg& vertices, + const CImgList& primitives, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(disp,vertices,primitives,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const CImgList& primitives, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(title,vertices,primitives,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(CImgDisplay &disp, + const CImg& vertices, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(disp,vertices,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + //! Display object 3D in an interactive window \simplification. + template + const CImg& display_object3d(const char *const title, + const CImg& vertices, + const bool centering=true, + const int render_static=4, const int render_motion=1, + const bool is_double_sided=true, const float focale=700, + const float light_x=0, const float light_y=0, const float light_z=-5e8f, + const float specular_lightness=0.2f, const float specular_shininess=0.1f, + const bool display_axes=true, float *const pose_matrix=0, + const bool exit_on_anykey=false) const { + return display_object3d(title,vertices,CImgList(),centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + + template + const CImg& _display_object3d(CImgDisplay& disp, const char *const title, + const CImg& vertices, + const CImgList& primitives, + const CImgList& colors, + const to& opacities, + const bool centering, + const int render_static, const int render_motion, + const bool is_double_sided, const float focale, + const float light_x, const float light_y, const float light_z, + const float specular_lightness, const float specular_shininess, + const bool display_axes, float *const pose_matrix, + const bool exit_on_anykey) const { + typedef typename cimg::superset::type tpfloat; + + // Check input arguments + if (is_empty()) { + CImg background; + if (colors && colors[0].size()==1) background.assign(1,2,1,1,64,128); + else background.assign(1,2,1,3,32,64,32,116,64,96); + if (disp) background.resize(disp.width(),disp.height(),1,-100,3); + else background.resize(cimg_fitscreen(CImgDisplay::screen_width()/2, + CImgDisplay::screen_height()/2,1),1,-100,3); + return background._display_object3d(disp,title,vertices,primitives,colors,opacities,centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } else { if (disp) disp.resize(*this,false); } + CImg error_message(1024); + if (!vertices.is_object3d(primitives,colors,opacities,true,error_message)) + throw CImgArgumentException(_cimg_instance + "display_object3d(): Invalid specified 3D object (%u,%u) (%s).", + cimg_instance,vertices._width,primitives._width,error_message.data()); + if (vertices._width && !primitives) { + CImgList nprimitives(vertices._width,1,1,1,1); + cimglist_for(nprimitives,l) nprimitives(l,0) = (tf)l; + return _display_object3d(disp,title,vertices,nprimitives,colors,opacities,centering, + render_static,render_motion,is_double_sided,focale, + light_x,light_y,light_z,specular_lightness,specular_shininess, + display_axes,pose_matrix,exit_on_anykey); + } + if (!disp) { + disp.assign(cimg_fitscreen(_width,_height,_depth),title?title:0,3); + if (!title) disp.set_title("CImg<%s> (%u vertices, %u primitives)", + pixel_type(),vertices._width,primitives._width); + } else if (title) disp.set_title("%s",title); + + // Init 3D objects and compute object statistics + CImg + pose, + rotated_vertices(vertices._width,3), + bbox_vertices, rotated_bbox_vertices, + axes_vertices, rotated_axes_vertices, + bbox_opacities, axes_opacities; + CImgList bbox_primitives, axes_primitives; + CImgList reverse_primitives; + CImgList bbox_colors, bbox_colors2, axes_colors; + unsigned int ns_width = 0, ns_height = 0; + int _is_double_sided = (int)is_double_sided; + bool ndisplay_axes = display_axes; + const CImg + background_color(1,1,1,_spectrum,0), + foreground_color(1,1,1,_spectrum,(T)std::min((int)cimg::type::max(),255)); + float + Xoff = 0, Yoff = 0, Zoff = 0, sprite_scale = 1, + xm = 0, xM = vertices?vertices.get_shared_row(0).max_min(xm):0, + ym = 0, yM = vertices?vertices.get_shared_row(1).max_min(ym):0, + zm = 0, zM = vertices?vertices.get_shared_row(2).max_min(zm):0; + const float delta = cimg::max(xM - xm,yM - ym,zM - zm); + + rotated_bbox_vertices = bbox_vertices.assign(8,3,1,1, + xm,xM,xM,xm,xm,xM,xM,xm, + ym,ym,yM,yM,ym,ym,yM,yM, + zm,zm,zm,zm,zM,zM,zM,zM); + bbox_primitives.assign(6,1,4,1,1, 0,3,2,1, 4,5,6,7, 1,2,6,5, 0,4,7,3, 0,1,5,4, 2,3,7,6); + bbox_colors.assign(6,_spectrum,1,1,1,background_color[0]); + bbox_colors2.assign(6,_spectrum,1,1,1,foreground_color[0]); + bbox_opacities.assign(bbox_colors._width,1,1,1,0.3f); + + rotated_axes_vertices = axes_vertices.assign(7,3,1,1, + 0,20,0,0,22,-6,-6, + 0,0,20,0,-6,22,-6, + 0,0,0,20,0,0,22); + axes_opacities.assign(3,1,1,1,1); + axes_colors.assign(3,_spectrum,1,1,1,foreground_color[0]); + axes_primitives.assign(3,1,2,1,1, 0,1, 0,2, 0,3); + + // Begin user interaction loop + CImg visu0(*this,false), visu; + CImg zbuffer(visu0.width(),visu0.height(),1,1,0); + bool init_pose = true, clicked = false, redraw = true; + unsigned int key = 0, font_size = 32; + int + x0 = 0, y0 = 0, x1 = 0, y1 = 0, + nrender_static = render_static, + nrender_motion = render_motion; + disp.show().flush(); + + while (!disp.is_closed() && !key) { + + // Init object pose + if (init_pose) { + const float + ratio = delta>0?(2.f*std::min(disp.width(),disp.height())/(3.f*delta)):1, + dx = (xM + xm)/2, dy = (yM + ym)/2, dz = (zM + zm)/2; + if (centering) + CImg(4,3,1,1, ratio,0.,0.,-ratio*dx, 0.,ratio,0.,-ratio*dy, 0.,0.,ratio,-ratio*dz).move_to(pose); + else CImg(4,3,1,1, 1,0,0,0, 0,1,0,0, 0,0,1,0).move_to(pose); + if (pose_matrix) { + CImg pose0(pose_matrix,4,3,1,1,false); + pose0.resize(4,4,1,1,0); pose.resize(4,4,1,1,0); + pose0(3,3) = pose(3,3) = 1; + (pose0*pose).get_crop(0,0,3,2).move_to(pose); + Xoff = pose_matrix[12]; Yoff = pose_matrix[13]; Zoff = pose_matrix[14]; sprite_scale = pose_matrix[15]; + } else { Xoff = Yoff = Zoff = 0; sprite_scale = 1; } + init_pose = false; + redraw = true; + } + + // Rotate and draw 3D object + if (redraw) { + const float + r00 = pose(0,0), r10 = pose(1,0), r20 = pose(2,0), r30 = pose(3,0), + r01 = pose(0,1), r11 = pose(1,1), r21 = pose(2,1), r31 = pose(3,1), + r02 = pose(0,2), r12 = pose(1,2), r22 = pose(2,2), r32 = pose(3,2); + if ((clicked && nrender_motion>=0) || (!clicked && nrender_static>=0)) { + const tp *const pv0 = vertices.data(), *const pv1 = vertices.data(0,1), *const pv2 = vertices.data(0,2); + float + *const prv0 = rotated_vertices.data(), + *const prv1 = rotated_vertices.data(0,1), + *const prv2 = rotated_vertices.data(0,2); + cimg_pragma_openmp(parallel for cimg_openmp_if(vertices.width()>(cimg_openmp_sizefactor)*1024)) + cimg_forX(vertices,l) { + const float x = (float)pv0[l], y = (float)pv1[l], z = (float)pv2[l]; + prv0[l] = r00*x + r10*y + r20*z + r30; + prv1[l] = r01*x + r11*y + r21*z + r31; + prv2[l] = r02*x + r12*y + r22*z + r32; + } + } + else cimg_forX(bbox_vertices,l) { + const float x = bbox_vertices(l,0), y = bbox_vertices(l,1), z = bbox_vertices(l,2); + rotated_bbox_vertices(l,0) = r00*x + r10*y + r20*z + r30; + rotated_bbox_vertices(l,1) = r01*x + r11*y + r21*z + r31; + rotated_bbox_vertices(l,2) = r02*x + r12*y + r22*z + r32; + } + + // Draw objects + const bool render_with_zbuffer = !clicked && nrender_static>0; + visu = visu0; + if ((clicked && nrender_motion<0) || (!clicked && nrender_static<0)) + visu.draw_object3d(Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_bbox_vertices,bbox_primitives,bbox_colors,bbox_opacities,2,false,focale). + draw_object3d(Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_bbox_vertices,bbox_primitives,bbox_colors2,1,false,focale); + else visu._draw_object3d((void*)0,render_with_zbuffer?zbuffer.fill(0):CImg::empty(), + Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_vertices,reverse_primitives?reverse_primitives:primitives, + colors,opacities,clicked?nrender_motion:nrender_static,_is_double_sided==1,focale, + width()/2.f + light_x,height()/2.f + light_y,light_z + Zoff, + specular_lightness,specular_shininess,1,sprite_scale); + // Draw axes + if (ndisplay_axes) { + const float + n = 1e-8f + cimg::hypot(r00,r01,r02), + _r00 = r00/n, _r10 = r10/n, _r20 = r20/n, + _r01 = r01/n, _r11 = r11/n, _r21 = r21/n, + _r02 = r01/n, _r12 = r12/n, _r22 = r22/n, + Xaxes = 25, Yaxes = visu._height - 38.f; + cimg_forX(axes_vertices,l) { + const float + x = axes_vertices(l,0), + y = axes_vertices(l,1), + z = axes_vertices(l,2); + rotated_axes_vertices(l,0) = _r00*x + _r10*y + _r20*z; + rotated_axes_vertices(l,1) = _r01*x + _r11*y + _r21*z; + rotated_axes_vertices(l,2) = _r02*x + _r12*y + _r22*z; + } + axes_opacities(0,0) = (rotated_axes_vertices(1,2)>0)?0.5f:1.f; + axes_opacities(1,0) = (rotated_axes_vertices(2,2)>0)?0.5f:1.f; + axes_opacities(2,0) = (rotated_axes_vertices(3,2)>0)?0.5f:1.f; + visu.draw_object3d(Xaxes,Yaxes,0,rotated_axes_vertices,axes_primitives, + axes_colors,axes_opacities,1,false,focale). + draw_text((int)(Xaxes + rotated_axes_vertices(4,0)), + (int)(Yaxes + rotated_axes_vertices(4,1)), + "X",axes_colors[0]._data,0,axes_opacities(0,0),13). + draw_text((int)(Xaxes + rotated_axes_vertices(5,0)), + (int)(Yaxes + rotated_axes_vertices(5,1)), + "Y",axes_colors[1]._data,0,axes_opacities(1,0),13). + draw_text((int)(Xaxes + rotated_axes_vertices(6,0)), + (int)(Yaxes + rotated_axes_vertices(6,1)), + "Z",axes_colors[2]._data,0,axes_opacities(2,0),13); + } + visu.display(disp); + if (!clicked || nrender_motion==nrender_static) redraw = false; + } + + // Handle user interaction + if (!redraw) disp.wait(); + if ((disp.button() || disp.wheel()) && disp.mouse_x()>=0 && disp.mouse_y()>=0) { + redraw = true; + if (!clicked) { x0 = x1 = disp.mouse_x(); y0 = y1 = disp.mouse_y(); if (!disp.wheel()) clicked = true; } + else { x1 = disp.mouse_x(); y1 = disp.mouse_y(); } + const bool is_keyCTRL = disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT(); + if (disp.button()&1 && !is_keyCTRL) { + const float + R = 0.45f*std::min(disp.width(),disp.height()), + R2 = R*R, + u0 = (float)(x0 - disp.width()/2), + v0 = (float)(y0 - disp.height()/2), + u1 = (float)(x1 - disp.width()/2), + v1 = (float)(y1 - disp.height()/2), + n0 = cimg::hypot(u0,v0), + n1 = cimg::hypot(u1,v1), + nu0 = n0>R?(u0*R/n0):u0, + nv0 = n0>R?(v0*R/n0):v0, + nw0 = (float)std::sqrt(std::max(0.f,R2 - nu0*nu0 - nv0*nv0)), + nu1 = n1>R?(u1*R/n1):u1, + nv1 = n1>R?(v1*R/n1):v1, + nw1 = (float)std::sqrt(std::max(0.f,R2 - nu1*nu1 - nv1*nv1)), + u = nv0*nw1 - nw0*nv1, + v = nw0*nu1 - nu0*nw1, + w = nv0*nu1 - nu0*nv1, + n = cimg::hypot(u,v,w), + alpha = (float)std::asin(n/R2)*180/cimg::PI; + (CImg::rotation_matrix(u,v,w,-alpha)*pose).move_to(pose); + x0 = x1; y0 = y1; + } + if (disp.button()&2 && !is_keyCTRL) { + if (focale>0) Zoff-=(y0 - y1)*focale/400; + else { const float s = std::exp((y0 - y1)/400.f); pose*=s; sprite_scale*=s; } + x0 = x1; y0 = y1; + } + if (disp.wheel()) { + if (focale>0) Zoff-=disp.wheel()*focale/20; + else { const float s = std::exp(disp.wheel()/20.f); pose*=s; sprite_scale*=s; } + disp.set_wheel(); + } + if (disp.button()&4 || (disp.button()&1 && is_keyCTRL)) { + Xoff+=(x1 - x0); Yoff+=(y1 - y0); x0 = x1; y0 = y1; + } + if ((disp.button()&1) && (disp.button()&2) && !is_keyCTRL) { + init_pose = true; disp.set_button(); x0 = x1; y0 = y1; + pose = CImg(4,3,1,1, 1,0,0,0, 0,1,0,0, 0,0,1,0); + } + } else if (clicked) { x0 = x1; y0 = y1; clicked = false; redraw = true; } + + CImg filename(32); + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyD: if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false).resize(cimg_fitscreen(_width,_height,_depth),false)._is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + if (!ns_width || !ns_height || + ns_width>(unsigned int)disp.screen_width() || ns_height>(unsigned int)disp.screen_height()) { + ns_width = disp.screen_width()*3U/4; + ns_height = disp.screen_height()*3U/4; + } + if (disp.is_fullscreen()) disp.resize(ns_width,ns_height,false); + else { + ns_width = disp._width; ns_height = disp._height; + disp.resize(disp.screen_width(),disp.screen_height(),false); + } + disp.toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); key = 0; + } break; + case cimg::keyT : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + // Switch single/double-sided primitives. + if (--_is_double_sided==-2) _is_double_sided = 1; + if (_is_double_sided>=0) reverse_primitives.assign(); + else primitives.get_reverse_object3d().move_to(reverse_primitives); + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyZ : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Enable/disable Z-buffer + if (zbuffer) zbuffer.assign(); + else zbuffer.assign(visu0.width(),visu0.height(),1,1,0); + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyX : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Show/hide 3D axes + ndisplay_axes = !ndisplay_axes; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF1 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to points + nrender_motion = (nrender_static==0 && nrender_motion!=0)?0:-1; nrender_static = 0; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF2 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to lines + nrender_motion = (nrender_static==1 && nrender_motion!=1)?1:-1; nrender_static = 1; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF3 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to flat + nrender_motion = (nrender_static==2 && nrender_motion!=2)?2:-1; nrender_static = 2; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF4 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to flat-shaded + nrender_motion = (nrender_static==3 && nrender_motion!=3)?3:-1; nrender_static = 3; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF5 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + // Set rendering mode to gouraud-shaded. + nrender_motion = (nrender_static==4 && nrender_motion!=4)?4:-1; nrender_static = 4; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyF6 : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Set rendering mode to phong-shaded + nrender_motion = (nrender_static==5 && nrender_motion!=5)?5:-1; nrender_static = 5; + disp.set_key(key,false); key = 0; redraw = true; + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save snapshot + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving snapshot... ",font_size,0).display(disp); + visu.save(filename); + (+visu).__draw_text(" Snapshot '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyG : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .off file + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.off",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving object... ",font_size,0).display(disp); + vertices.save_off(reverse_primitives?reverse_primitives:primitives,colors,filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyO : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .cimg file + static unsigned int snap_number = 0; + std::FILE *file; + do { + +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving object... ",font_size,0).display(disp); + vertices.get_object3dtoCImg3d(reverse_primitives?reverse_primitives:primitives,colors,opacities). + save(filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + +#ifdef cimg_use_board + case cimg::keyP : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .EPS file + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.eps",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving EPS snapshot... ",font_size,0).display(disp); + LibBoard::Board board; + (+visu)._draw_object3d(&board,zbuffer.fill(0), + Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_vertices,reverse_primitives?reverse_primitives:primitives, + colors,opacities,clicked?nrender_motion:nrender_static, + _is_double_sided==1,focale, + visu.width()/2.f + light_x,visu.height()/2.f + light_y,light_z + Zoff, + specular_lightness,specular_shininess,1, + sprite_scale); + board.saveEPS(filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; + case cimg::keyV : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { // Save object as a .SVG file + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.svg",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu).__draw_text(" Saving SVG snapshot... ",font_size,0).display(disp); + LibBoard::Board board; + (+visu)._draw_object3d(&board,zbuffer.fill(0), + Xoff + visu._width/2.f,Yoff + visu._height/2.f,Zoff, + rotated_vertices,reverse_primitives?reverse_primitives:primitives, + colors,opacities,clicked?nrender_motion:nrender_static, + _is_double_sided==1,focale, + visu.width()/2.f + light_x,visu.height()/2.f + light_y,light_z + Zoff, + specular_lightness,specular_shininess,1, + sprite_scale); + board.saveSVG(filename); + (+visu).__draw_text(" Object '%s' saved. ",font_size,0,filename._data).display(disp); + disp.set_key(key,false); key = 0; + } break; +#endif + } + if (disp.is_resized()) { + disp.resize(false); visu0 = get_resize(disp,1); + if (zbuffer) zbuffer.assign(disp.width(),disp.height()); + redraw = true; + } + if (!exit_on_anykey && key && key!=cimg::keyESC && + (key!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + key = 0; + } + } + if (pose_matrix) { + std::memcpy(pose_matrix,pose._data,12*sizeof(float)); + pose_matrix[12] = Xoff; pose_matrix[13] = Yoff; pose_matrix[14] = Zoff; pose_matrix[15] = sprite_scale; + } + disp.set_button().set_key(key); + return *this; + } + + //! Display 1D graph in an interactive window. + /** + \param disp Display window. + \param plot_type Plot type. Can be { 0=points | 1=segments | 2=splines | 3=bars }. + \param vertex_type Vertex type. + \param labelx Title for the horizontal axis, as a C-string. + \param xmin Minimum value along the X-axis. + \param xmax Maximum value along the X-axis. + \param labely Title for the vertical axis, as a C-string. + \param ymin Minimum value along the X-axis. + \param ymax Maximum value along the X-axis. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImg& display_graph(CImgDisplay &disp, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + return _display_graph(disp,0,plot_type,vertex_type,labelx,xmin,xmax,labely,ymin,ymax,exit_on_anykey); + } + + //! Display 1D graph in an interactive window \overloading. + const CImg& display_graph(const char *const title=0, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _display_graph(disp,title,plot_type,vertex_type,labelx,xmin,xmax,labely,ymin,ymax,exit_on_anykey); + } + + const CImg& _display_graph(CImgDisplay &disp, const char *const title=0, + const unsigned int plot_type=1, const unsigned int vertex_type=1, + const char *const labelx=0, const double xmin=0, const double xmax=0, + const char *const labely=0, const double ymin=0, const double ymax=0, + const bool exit_on_anykey=false) const { + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "display_graph(): Empty instance.", + cimg_instance); + if (!disp) disp.assign(cimg_fitscreen(CImgDisplay::screen_width()/2,CImgDisplay::screen_height()/2,1),0,0). + set_title(title?"%s":"CImg<%s>",title?title:pixel_type()); + const ulongT siz = (ulongT)_width*_height*_depth, siz1 = std::max((ulongT)1,siz - 1); + const unsigned int old_normalization = disp.normalization(); + disp.show().flush()._normalization = 0; + + double y0 = ymin, y1 = ymax, nxmin = xmin, nxmax = xmax; + if (nxmin==nxmax) { nxmin = 0; nxmax = siz1; } + int x0 = 0, x1 = width()*height()*depth() - 1, key = 0; + + for (bool reset_view = true; !key && !disp.is_closed(); ) { + if (reset_view) { x0 = 0; x1 = width()*height()*depth() - 1; y0 = ymin; y1 = ymax; reset_view = false; } + CImg zoom(x1 - x0 + 1,1,1,spectrum()); + cimg_forC(*this,c) zoom.get_shared_channel(c) = CImg(data(x0,0,0,c),x1 - x0 + 1,1,1,1,true); + if (y0==y1) { y0 = zoom.min_max(y1); const double dy = y1 - y0; y0-=dy/20; y1+=dy/20; } + if (y0==y1) { --y0; ++y1; } + + const CImg selection = zoom.get_select_graph(disp,plot_type,vertex_type, + labelx, + nxmin + x0*(nxmax - nxmin)/siz1, + nxmin + x1*(nxmax - nxmin)/siz1, + labely,y0,y1,true); + const int mouse_x = disp.mouse_x(), mouse_y = disp.mouse_y(); + if (selection[0]>=0) { + if (selection[2]<0) reset_view = true; + else { + x1 = x0 + selection[2]; x0+=selection[0]; + if (selection[1]>=0 && selection[3]>=0) { + y0 = y1 - selection[3]*(y1 - y0)/(disp.height() - 32); + y1-=selection[1]*(y1 - y0)/(disp.height() - 32); + } + } + } else { + bool go_in = false, go_out = false, go_left = false, go_right = false, go_up = false, go_down = false; + switch (key = (int)disp.key()) { + case cimg::keyHOME : reset_view = true; key = 0; disp.set_key(); break; + case cimg::keyPADADD : go_in = true; go_out = false; key = 0; disp.set_key(); break; + case cimg::keyPADSUB : go_out = true; go_in = false; key = 0; disp.set_key(); break; + case cimg::keyARROWLEFT : case cimg::keyPAD4 : go_left = true; go_right = false; key = 0; disp.set_key(); + break; + case cimg::keyARROWRIGHT : case cimg::keyPAD6 : go_right = true; go_left = false; key = 0; disp.set_key(); + break; + case cimg::keyARROWUP : case cimg::keyPAD8 : go_up = true; go_down = false; key = 0; disp.set_key(); break; + case cimg::keyARROWDOWN : case cimg::keyPAD2 : go_down = true; go_up = false; key = 0; disp.set_key(); break; + case cimg::keyPAD7 : go_left = true; go_up = true; key = 0; disp.set_key(); break; + case cimg::keyPAD9 : go_right = true; go_up = true; key = 0; disp.set_key(); break; + case cimg::keyPAD1 : go_left = true; go_down = true; key = 0; disp.set_key(); break; + case cimg::keyPAD3 : go_right = true; go_down = true; key = 0; disp.set_key(); break; + } + if (disp.wheel()) { + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) go_up = !(go_down = disp.wheel()<0); + else if (disp.is_keySHIFTLEFT() || disp.is_keySHIFTRIGHT()) go_left = !(go_right = disp.wheel()>0); + else go_out = !(go_in = disp.wheel()>0); + key = 0; + } + + if (go_in) { + const int + xsiz = x1 - x0, + mx = (mouse_x - 16)*xsiz/(disp.width() - 32), + cx = x0 + cimg::cut(mx,0,xsiz); + if (x1 - x0>4) { + x0 = cx - 7*(cx - x0)/8; x1 = cx + 7*(x1 - cx)/8; + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + const double + ysiz = y1 - y0, + my = (mouse_y - 16)*ysiz/(disp.height() - 32), + cy = y1 - cimg::cut(my,0.,ysiz); + y0 = cy - 7*(cy - y0)/8; y1 = cy + 7*(y1 - cy)/8; + } else y0 = y1 = 0; + } + } + if (go_out) { + if (x0>0 || x1<(int)siz1) { + const int delta_x = (x1 - x0)/8, ndelta_x = delta_x?delta_x:(siz>1); + const double ndelta_y = (y1 - y0)/8; + x0-=ndelta_x; x1+=ndelta_x; + y0-=ndelta_y; y1+=ndelta_y; + if (x0<0) { x1-=x0; x0 = 0; if (x1>=(int)siz) x1 = (int)siz1; } + if (x1>=(int)siz) { x0-=(x1 - siz1); x1 = (int)siz1; if (x0<0) x0 = 0; } + } + } + if (go_left) { + const int delta = (x1 - x0)/5, ndelta = delta?delta:1; + if (x0 - ndelta>=0) { x0-=ndelta; x1-=ndelta; } + else { x1-=x0; x0 = 0; } + go_left = false; + } + if (go_right) { + const int delta = (x1 - x0)/5, ndelta = delta?delta:1; + if (x1 + ndelta<(int)siz) { x0+=ndelta; x1+=ndelta; } + else { x0+=(siz1 - x1); x1 = (int)siz1; } + go_right = false; + } + if (go_up) { + const double delta = (y1 - y0)/10, ndelta = delta?delta:1; + y0+=ndelta; y1+=ndelta; + go_up = false; + } + if (go_down) { + const double delta = (y1 - y0)/10, ndelta = delta?delta:1; + y0-=ndelta; y1-=ndelta; + go_down = false; + } + } + if (!exit_on_anykey && key && key!=(int)cimg::keyESC && + (key!=(int)cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + disp.set_key(key,false); + key = 0; + } + } + disp._normalization = old_normalization; + return *this; + } + + //! Save image as a file. + /** + \param filename Filename, as a C-string. + \param number When positive, represents an index added to the filename. Otherwise, no number is added. + \param digits Number of digits used for adding the number to the filename. + \note + - The used file format is defined by the file extension in the filename \p filename. + - Parameter \p number can be used to add a 6-digit number to the filename before saving. + + **/ + const CImg& save(const char *const filename, const int number=-1, const unsigned int digits=6) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save(): Specified filename is (null).", + cimg_instance); + // Do not test for empty instances, since .cimg format is able to manage empty instances. + const bool is_stdout = *filename=='-' && (!filename[1] || filename[1]=='.'); + const char *const ext = cimg::split_filename(filename); + CImg nfilename(1024); + const char *const fn = is_stdout?filename:(number>=0)?cimg::number_filename(filename,number,digits,nfilename): + filename; + +#ifdef cimg_save_plugin + cimg_save_plugin(fn); +#endif +#ifdef cimg_save_plugin1 + cimg_save_plugin1(fn); +#endif +#ifdef cimg_save_plugin2 + cimg_save_plugin2(fn); +#endif +#ifdef cimg_save_plugin3 + cimg_save_plugin3(fn); +#endif +#ifdef cimg_save_plugin4 + cimg_save_plugin4(fn); +#endif +#ifdef cimg_save_plugin5 + cimg_save_plugin5(fn); +#endif +#ifdef cimg_save_plugin6 + cimg_save_plugin6(fn); +#endif +#ifdef cimg_save_plugin7 + cimg_save_plugin7(fn); +#endif +#ifdef cimg_save_plugin8 + cimg_save_plugin8(fn); +#endif + // Text formats + if (!cimg::strcasecmp(ext,"asc")) return save_ascii(fn); + else if (!cimg::strcasecmp(ext,"csv") || + !cimg::strcasecmp(ext,"dlm") || + !cimg::strcasecmp(ext,"txt")) return save_dlm(fn); + else if (!cimg::strcasecmp(ext,"cpp") || + !cimg::strcasecmp(ext,"hpp") || + !cimg::strcasecmp(ext,"h") || + !cimg::strcasecmp(ext,"c")) return save_cpp(fn); + + // 2D binary formats + else if (!cimg::strcasecmp(ext,"bmp")) return save_bmp(fn); + else if (!cimg::strcasecmp(ext,"jpg") || + !cimg::strcasecmp(ext,"jpeg") || + !cimg::strcasecmp(ext,"jpe") || + !cimg::strcasecmp(ext,"jfif") || + !cimg::strcasecmp(ext,"jif")) return save_jpeg(fn); + else if (!cimg::strcasecmp(ext,"rgb")) return save_rgb(fn); + else if (!cimg::strcasecmp(ext,"rgba")) return save_rgba(fn); + else if (!cimg::strcasecmp(ext,"png")) return save_png(fn); + else if (!cimg::strcasecmp(ext,"pgm") || + !cimg::strcasecmp(ext,"ppm") || + !cimg::strcasecmp(ext,"pnm")) return save_pnm(fn); + else if (!cimg::strcasecmp(ext,"pnk")) return save_pnk(fn); + else if (!cimg::strcasecmp(ext,"pfm")) return save_pfm(fn); + else if (!cimg::strcasecmp(ext,"exr")) return save_exr(fn); + else if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) return save_tiff(fn); + + // 3D binary formats + else if (!*ext) { +#ifdef cimg_use_zlib + return save_cimg(fn,true); +#else + return save_cimg(fn,false); +#endif + } else if (!cimg::strcasecmp(ext,"cimgz")) return save_cimg(fn,true); + else if (!cimg::strcasecmp(ext,"cimg")) return save_cimg(fn,false); + else if (!cimg::strcasecmp(ext,"dcm")) return save_medcon_external(fn); + else if (!cimg::strcasecmp(ext,"hdr") || + !cimg::strcasecmp(ext,"nii")) return save_analyze(fn); + else if (!cimg::strcasecmp(ext,"inr")) return save_inr(fn); + else if (!cimg::strcasecmp(ext,"mnc")) return save_minc2(fn); + else if (!cimg::strcasecmp(ext,"pan")) return save_pandore(fn); + else if (!cimg::strcasecmp(ext,"raw")) return save_raw(fn); + + // Archive files + else if (!cimg::strcasecmp(ext,"gz")) return save_gzip_external(fn); + + // Image sequences + else if (!cimg::strcasecmp(ext,"yuv")) return save_yuv(fn,444,true); + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) return save_video(fn); + return save_other(fn); + } + + //! Save image as an ascii file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_ascii(const char *const filename) const { + return _save_ascii(0,filename); + } + + //! Save image as an Ascii file \overloading. + const CImg& save_ascii(std::FILE *const file) const { + return _save_ascii(file,0); + } + + const CImg& _save_ascii(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_ascii(): Specified filename is (null).", + cimg_instance); + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + std::fprintf(nfile,"%u %u %u %u\n",_width,_height,_depth,_spectrum); + const T* ptrs = _data; + cimg_forYZC(*this,y,z,c) { + cimg_forX(*this,x) std::fprintf(nfile,"%.17g ",(double)*(ptrs++)); + std::fputc('\n',nfile); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a .cpp source file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_cpp(const char *const filename) const { + return _save_cpp(0,filename); + } + + //! Save image as a .cpp source file \overloading. + const CImg& save_cpp(std::FILE *const file) const { + return _save_cpp(file,0); + } + + const CImg& _save_cpp(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_cpp(): Specified filename is (null).", + cimg_instance); + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + CImg varname(1024); *varname = 0; + if (filename) cimg_sscanf(cimg::basename(filename),"%1023[a-zA-Z0-9_]",varname._data); + if (!*varname) cimg_snprintf(varname,varname._width,"unnamed"); + std::fprintf(nfile, + "/* Define image '%s' of size %ux%ux%ux%u and type '%s' */\n" + "%s data_%s[] = { %s\n ", + varname._data,_width,_height,_depth,_spectrum,pixel_type(),pixel_type(),varname._data, + is_empty()?"};":""); + if (!is_empty()) for (ulongT off = 0, siz = size() - 1; off<=siz; ++off) { + std::fprintf(nfile,cimg::type::format(),cimg::type::format((*this)[off])); + if (off==siz) std::fprintf(nfile," };\n"); + else if (!((off + 1)%16)) std::fprintf(nfile,",\n "); + else std::fprintf(nfile,", "); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a DLM file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_dlm(const char *const filename) const { + return _save_dlm(0,filename); + } + + //! Save image as a DLM file \overloading. + const CImg& save_dlm(std::FILE *const file) const { + return _save_dlm(file,0); + } + + const CImg& _save_dlm(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_dlm(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_dlm(): Instance is volumetric, values along Z will be unrolled in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>1) + cimg::warn(_cimg_instance + "save_dlm(): Instance is multispectral, values along C will be unrolled in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + const T* ptrs = _data; + cimg_forYZC(*this,y,z,c) { + cimg_forX(*this,x) std::fprintf(nfile,"%.17g%s",(double)*(ptrs++),(x==width() - 1)?"":","); + std::fputc('\n',nfile); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a BMP file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_bmp(const char *const filename) const { + return _save_bmp(0,filename); + } + + //! Save image as a BMP file \overloading. + const CImg& save_bmp(std::FILE *const file) const { + return _save_bmp(file,0); + } + + const CImg& _save_bmp(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_bmp(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_bmp(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_bmp(): Instance is multispectral, only the three first channels will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + CImg header(54,1,1,1,0); + unsigned char align_buf[4] = { 0 }; + const unsigned int + align = (4 - (3*_width)%4)%4, + buf_size = (3*_width + align)*height(), + file_size = 54 + buf_size; + header[0] = 'B'; header[1] = 'M'; + header[0x02] = file_size&0xFF; + header[0x03] = (file_size>>8)&0xFF; + header[0x04] = (file_size>>16)&0xFF; + header[0x05] = (file_size>>24)&0xFF; + header[0x0A] = 0x36; + header[0x0E] = 0x28; + header[0x12] = _width&0xFF; + header[0x13] = (_width>>8)&0xFF; + header[0x14] = (_width>>16)&0xFF; + header[0x15] = (_width>>24)&0xFF; + header[0x16] = _height&0xFF; + header[0x17] = (_height>>8)&0xFF; + header[0x18] = (_height>>16)&0xFF; + header[0x19] = (_height>>24)&0xFF; + header[0x1A] = 1; + header[0x1B] = 0; + header[0x1C] = 24; + header[0x1D] = 0; + header[0x22] = buf_size&0xFF; + header[0x23] = (buf_size>>8)&0xFF; + header[0x24] = (buf_size>>16)&0xFF; + header[0x25] = (buf_size>>24)&0xFF; + header[0x27] = 0x1; + header[0x2B] = 0x1; + cimg::fwrite(header._data,54,nfile); + + const T + *ptr_r = data(0,_height - 1,0,0), + *ptr_g = (_spectrum>=2)?data(0,_height - 1,0,1):0, + *ptr_b = (_spectrum>=3)?data(0,_height - 1,0,2):0; + + switch (_spectrum) { + case 1 : { + cimg_forY(*this,y) { + cimg_forX(*this,x) { + const unsigned char val = (unsigned char)*(ptr_r++); + std::fputc(val,nfile); std::fputc(val,nfile); std::fputc(val,nfile); + } + cimg::fwrite(align_buf,align,nfile); + ptr_r-=2*_width; + } + } break; + case 2 : { + cimg_forY(*this,y) { + cimg_forX(*this,x) { + std::fputc(0,nfile); + std::fputc((unsigned char)(*(ptr_g++)),nfile); + std::fputc((unsigned char)(*(ptr_r++)),nfile); + } + cimg::fwrite(align_buf,align,nfile); + ptr_r-=2*_width; ptr_g-=2*_width; + } + } break; + default : { + cimg_forY(*this,y) { + cimg_forX(*this,x) { + std::fputc((unsigned char)(*(ptr_b++)),nfile); + std::fputc((unsigned char)(*(ptr_g++)),nfile); + std::fputc((unsigned char)(*(ptr_r++)),nfile); + } + cimg::fwrite(align_buf,align,nfile); + ptr_r-=2*_width; ptr_g-=2*_width; ptr_b-=2*_width; + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a JPEG file. + /** + \param filename Filename, as a C-string. + \param quality Image quality (in %) + **/ + const CImg& save_jpeg(const char *const filename, const unsigned int quality=100) const { + return _save_jpeg(0,filename,quality); + } + + //! Save image as a JPEG file \overloading. + const CImg& save_jpeg(std::FILE *const file, const unsigned int quality=100) const { + return _save_jpeg(file,0,quality); + } + + const CImg& _save_jpeg(std::FILE *const file, const char *const filename, const unsigned int quality) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_jpeg(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_jpeg(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + +#ifndef cimg_use_jpeg + if (!file) return save_other(filename,quality); + else throw CImgIOException(_cimg_instance + "save_jpeg(): Unable to save data in '(*FILE)' unless libjpeg is enabled.", + cimg_instance); +#else + unsigned int dimbuf = 0; + J_COLOR_SPACE colortype = JCS_RGB; + + switch (_spectrum) { + case 1 : dimbuf = 1; colortype = JCS_GRAYSCALE; break; + case 2 : dimbuf = 3; colortype = JCS_RGB; break; + case 3 : dimbuf = 3; colortype = JCS_RGB; break; + default : dimbuf = 4; colortype = JCS_CMYK; break; + } + + // Call libjpeg functions + struct jpeg_compress_struct cinfo; + struct jpeg_error_mgr jerr; + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_compress(&cinfo); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + jpeg_stdio_dest(&cinfo,nfile); + cinfo.image_width = _width; + cinfo.image_height = _height; + cinfo.input_components = dimbuf; + cinfo.in_color_space = colortype; + jpeg_set_defaults(&cinfo); + jpeg_set_quality(&cinfo,quality<100?quality:100,TRUE); + jpeg_start_compress(&cinfo,TRUE); + + JSAMPROW row_pointer[1]; + CImg buffer(_width*dimbuf); + + while (cinfo.next_scanline& save_magick(const char *const filename, const unsigned int bytes_per_pixel=0) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_magick(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifdef cimg_use_magick + double stmin, stmax = (double)max_min(stmin); + if (_depth>1) + cimg::warn(_cimg_instance + "save_magick(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename); + + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_magick(): Instance is multispectral, only the three first channels will be " + "saved in file '%s'.", + cimg_instance, + filename); + + if (stmin<0 || (bytes_per_pixel==1 && stmax>=256) || stmax>=65536) + cimg::warn(_cimg_instance + "save_magick(): Instance has pixel values in [%g,%g], probable type overflow in file '%s'.", + cimg_instance, + filename,stmin,stmax); + + Magick::Image image(Magick::Geometry(_width,_height),"black"); + image.type(Magick::TrueColorType); + image.depth(bytes_per_pixel?(8*bytes_per_pixel):(stmax>=256?16:8)); + const T + *ptr_r = data(0,0,0,0), + *ptr_g = _spectrum>1?data(0,0,0,1):0, + *ptr_b = _spectrum>2?data(0,0,0,2):0; + Magick::PixelPacket *pixels = image.getPixels(0,0,_width,_height); + switch (_spectrum) { + case 1 : // Scalar images + for (ulongT off = (ulongT)_width*_height; off; --off) { + pixels->red = pixels->green = pixels->blue = (Magick::Quantum)*(ptr_r++); + ++pixels; + } + break; + case 2 : // RG images + for (ulongT off = (ulongT)_width*_height; off; --off) { + pixels->red = (Magick::Quantum)*(ptr_r++); + pixels->green = (Magick::Quantum)*(ptr_g++); + pixels->blue = 0; ++pixels; + } + break; + default : // RGB images + for (ulongT off = (ulongT)_width*_height; off; --off) { + pixels->red = (Magick::Quantum)*(ptr_r++); + pixels->green = (Magick::Quantum)*(ptr_g++); + pixels->blue = (Magick::Quantum)*(ptr_b++); + ++pixels; + } + } + image.syncPixels(); + image.write(filename); + return *this; +#else + cimg::unused(bytes_per_pixel); + throw CImgIOException(_cimg_instance + "save_magick(): Unable to save file '%s' unless libMagick++ is enabled.", + cimg_instance, + filename); +#endif + } + + //! Save image as a PNG file. + /** + \param filename Filename, as a C-string. + \param bytes_per_pixel Force the number of bytes per pixels for the saving, when possible. + **/ + const CImg& save_png(const char *const filename, const unsigned int bytes_per_pixel=0) const { + return _save_png(0,filename,bytes_per_pixel); + } + + //! Save image as a PNG file \overloading. + const CImg& save_png(std::FILE *const file, const unsigned int bytes_per_pixel=0) const { + return _save_png(file,0,bytes_per_pixel); + } + + const CImg& _save_png(std::FILE *const file, const char *const filename, + const unsigned int bytes_per_pixel=0) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_png(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + +#ifndef cimg_use_png + cimg::unused(bytes_per_pixel); + if (!file) return save_other(filename); + else throw CImgIOException(_cimg_instance + "save_png(): Unable to save data in '(*FILE)' unless libpng is enabled.", + cimg_instance); +#else + +#if defined __GNUC__ + const char *volatile nfilename = filename; // Use 'volatile' to avoid (wrong) g++ warning + std::FILE *volatile nfile = file?file:cimg::fopen(nfilename,"wb"); + volatile double stmin, stmax = (double)max_min(stmin); +#else + const char *nfilename = filename; + std::FILE *nfile = file?file:cimg::fopen(nfilename,"wb"); + double stmin, stmax = (double)max_min(stmin); +#endif + + if (_depth>1) + cimg::warn(_cimg_instance + "save_png(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename); + + if (_spectrum>4) + cimg::warn(_cimg_instance + "save_png(): Instance is multispectral, only the three first channels will be saved in file '%s'.", + cimg_instance, + filename); + + if (stmin<0 || (bytes_per_pixel==1 && stmax>=256) || stmax>=65536) + cimg::warn(_cimg_instance + "save_png(): Instance has pixel values in [%g,%g], probable type overflow in file '%s'.", + cimg_instance, + filename,stmin,stmax); + + // Setup PNG structures for write + png_voidp user_error_ptr = 0; + png_error_ptr user_error_fn = 0, user_warning_fn = 0; + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,user_error_ptr, user_error_fn, + user_warning_fn); + if (!png_ptr){ + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Failed to initialize 'png_ptr' structure when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_infop info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + png_destroy_write_struct(&png_ptr,(png_infopp)0); + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Failed to initialize 'info_ptr' structure when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &info_ptr); + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Encountered unknown fatal error in libpng when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_init_io(png_ptr, nfile); + + const int bit_depth = bytes_per_pixel?(bytes_per_pixel*8):(stmax>=256?16:8); + + int color_type; + switch (spectrum()) { + case 1 : color_type = PNG_COLOR_TYPE_GRAY; break; + case 2 : color_type = PNG_COLOR_TYPE_GRAY_ALPHA; break; + case 3 : color_type = PNG_COLOR_TYPE_RGB; break; + default : color_type = PNG_COLOR_TYPE_RGB_ALPHA; + } + const int interlace_type = PNG_INTERLACE_NONE; + const int compression_type = PNG_COMPRESSION_TYPE_DEFAULT; + const int filter_method = PNG_FILTER_TYPE_DEFAULT; + png_set_IHDR(png_ptr,info_ptr,_width,_height,bit_depth,color_type,interlace_type,compression_type,filter_method); + png_write_info(png_ptr,info_ptr); + const int byte_depth = bit_depth>>3; + const int numChan = spectrum()>4?4:spectrum(); + const int pixel_bit_depth_flag = numChan * (bit_depth - 1); + + // Allocate Memory for Image Save and Fill pixel data + png_bytep *const imgData = new png_byte*[_height]; + for (unsigned int row = 0; row<_height; ++row) imgData[row] = new png_byte[byte_depth*numChan*_width]; + const T *pC0 = data(0,0,0,0); + switch (pixel_bit_depth_flag) { + case 7 : { // Gray 8-bit + cimg_forY(*this,y) { + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x) *(ptrd++) = (unsigned char)*(pC0++); + } + } break; + case 14 : { // Gray w/ Alpha 8-bit + const T *pC1 = data(0,0,0,1); + cimg_forY(*this,y) { + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x) { + *(ptrd++) = (unsigned char)*(pC0++); + *(ptrd++) = (unsigned char)*(pC1++); + } + } + } break; + case 21 : { // RGB 8-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2); + cimg_forY(*this,y) { + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x) { + *(ptrd++) = (unsigned char)*(pC0++); + *(ptrd++) = (unsigned char)*(pC1++); + *(ptrd++) = (unsigned char)*(pC2++); + } + } + } break; + case 28 : { // RGB x/ Alpha 8-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2), *pC3 = data(0,0,0,3); + cimg_forY(*this,y){ + unsigned char *ptrd = imgData[y]; + cimg_forX(*this,x){ + *(ptrd++) = (unsigned char)*(pC0++); + *(ptrd++) = (unsigned char)*(pC1++); + *(ptrd++) = (unsigned char)*(pC2++); + *(ptrd++) = (unsigned char)*(pC3++); + } + } + } break; + case 15 : { // Gray 16-bit + cimg_forY(*this,y){ + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) *(ptrd++) = (unsigned short)*(pC0++); + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],_width); + } + } break; + case 30 : { // Gray w/ Alpha 16-bit + const T *pC1 = data(0,0,0,1); + cimg_forY(*this,y){ + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) { + *(ptrd++) = (unsigned short)*(pC0++); + *(ptrd++) = (unsigned short)*(pC1++); + } + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],2*_width); + } + } break; + case 45 : { // RGB 16-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2); + cimg_forY(*this,y) { + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) { + *(ptrd++) = (unsigned short)*(pC0++); + *(ptrd++) = (unsigned short)*(pC1++); + *(ptrd++) = (unsigned short)*(pC2++); + } + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],3*_width); + } + } break; + case 60 : { // RGB w/ Alpha 16-bit + const T *pC1 = data(0,0,0,1), *pC2 = data(0,0,0,2), *pC3 = data(0,0,0,3); + cimg_forY(*this,y) { + unsigned short *ptrd = (unsigned short*)(imgData[y]); + cimg_forX(*this,x) { + *(ptrd++) = (unsigned short)*(pC0++); + *(ptrd++) = (unsigned short)*(pC1++); + *(ptrd++) = (unsigned short)*(pC2++); + *(ptrd++) = (unsigned short)*(pC3++); + } + if (!cimg::endianness()) cimg::invert_endianness((unsigned short*)imgData[y],4*_width); + } + } break; + default : + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimg_instance + "save_png(): Encountered unknown fatal error in libpng when saving file '%s'.", + cimg_instance, + nfilename?nfilename:"(FILE*)"); + } + png_write_image(png_ptr,imgData); + png_write_end(png_ptr,info_ptr); + png_destroy_write_struct(&png_ptr, &info_ptr); + + // Deallocate Image Write Memory + cimg_forY(*this,n) delete[] imgData[n]; + delete[] imgData; + + if (!file) cimg::fclose(nfile); + return *this; +#endif + } + + //! Save image as a PNM file. + /** + \param filename Filename, as a C-string. + \param bytes_per_pixel Force the number of bytes per pixels for the saving. + **/ + const CImg& save_pnm(const char *const filename, const unsigned int bytes_per_pixel=0) const { + return _save_pnm(0,filename,bytes_per_pixel); + } + + //! Save image as a PNM file \overloading. + const CImg& save_pnm(std::FILE *const file, const unsigned int bytes_per_pixel=0) const { + return _save_pnm(file,0,bytes_per_pixel); + } + + const CImg& _save_pnm(std::FILE *const file, const char *const filename, + const unsigned int bytes_per_pixel=0) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pnm(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + double stmin, stmax = (double)max_min(stmin); + if (_depth>1) + cimg::warn(_cimg_instance + "save_pnm(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_pnm(): Instance is multispectral, only the three first channels will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (stmin<0 || (bytes_per_pixel==1 && stmax>=256) || stmax>=65536) + cimg::warn(_cimg_instance + "save_pnm(): Instance has pixel values in [%g,%g], probable type overflow in file '%s'.", + cimg_instance, + stmin,stmax,filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const T + *ptr_r = data(0,0,0,0), + *ptr_g = (_spectrum>=2)?data(0,0,0,1):0, + *ptr_b = (_spectrum>=3)?data(0,0,0,2):0; + const ulongT buf_size = std::min((ulongT)(1024*1024),(ulongT)(_width*_height*(_spectrum==1?1UL:3UL))); + + std::fprintf(nfile,"P%c\n%u %u\n%u\n", + (_spectrum==1?'5':'6'),_width,_height,stmax<256?255:(stmax<4096?4095:65535)); + + switch (_spectrum) { + case 1 : { // Scalar image + if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PGM 8 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (unsigned char)*(ptr_r++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } else { // Binary PGM 16 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + unsigned short *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (unsigned short)*(ptr_r++); + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } + } break; + case 2 : { // RG image + if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PPM 8 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned char)*(ptr_r++); + *(ptrd++) = (unsigned char)*(ptr_g++); + *(ptrd++) = 0; + } + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } else { // Binary PPM 16 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned short *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned short)*(ptr_r++); + *(ptrd++) = (unsigned short)*(ptr_g++); + *(ptrd++) = 0; + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } + } break; + default : { // RGB image + if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PPM 8 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned char)*(ptr_r++); + *(ptrd++) = (unsigned char)*(ptr_g++); + *(ptrd++) = (unsigned char)*(ptr_b++); + } + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } else { // Binary PPM 16 bits + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size/3); + unsigned short *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (unsigned short)*(ptr_r++); + *(ptrd++) = (unsigned short)*(ptr_g++); + *(ptrd++) = (unsigned short)*(ptr_b++); + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a PNK file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_pnk(const char *const filename) const { + return _save_pnk(0,filename); + } + + //! Save image as a PNK file \overloading. + const CImg& save_pnk(std::FILE *const file) const { + return _save_pnk(file,0); + } + + const CImg& _save_pnk(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pnk(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_spectrum>1) + cimg::warn(_cimg_instance + "save_pnk(): Instance is multispectral, only the first channel will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + const ulongT buf_size = std::min((ulongT)1024*1024,(ulongT)_width*_height*_depth); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const T *ptr = data(0,0,0,0); + + if (!cimg::type::is_float() && sizeof(T)==1 && _depth<2) // Can be saved as regular PNM file + _save_pnm(file,filename,0); + else if (!cimg::type::is_float() && sizeof(T)==1) { // Save as extended P5 file: Binary byte-valued 3D + std::fprintf(nfile,"P5\n%u %u %u\n255\n",_width,_height,_depth); + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height()*depth(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + unsigned char *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (unsigned char)*(ptr++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } else if (!cimg::type::is_float()) { // Save as P8: Binary int32-valued 3D + if (_depth>1) std::fprintf(nfile,"P8\n%u %u %u\n%d\n",_width,_height,_depth,(int)max()); + else std::fprintf(nfile,"P8\n%u %u\n%d\n",_width,_height,(int)max()); + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height()*depth(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + int *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (int)*(ptr++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } else { // Save as P9: Binary float-valued 3D + if (_depth>1) std::fprintf(nfile,"P9\n%u %u %u\n%g\n",_width,_height,_depth,(double)max()); + else std::fprintf(nfile,"P9\n%u %u\n%g\n",_width,_height,(double)max()); + CImg buf((unsigned int)buf_size); + for (longT to_write = (longT)width()*height()*depth(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,buf_size); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (float)*(ptr++); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } + + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a PFM file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_pfm(const char *const filename) const { + get_mirror('y')._save_pfm(0,filename); + return *this; + } + + //! Save image as a PFM file \overloading. + const CImg& save_pfm(std::FILE *const file) const { + get_mirror('y')._save_pfm(file,0); + return *this; + } + + const CImg& _save_pfm(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pfm(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_pfm(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + if (_spectrum>3) + cimg::warn(_cimg_instance + "save_pfm(): image instance is multispectral, only the three first channels will be saved " + "in file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const T + *ptr_r = data(0,0,0,0), + *ptr_g = (_spectrum>=2)?data(0,0,0,1):0, + *ptr_b = (_spectrum>=3)?data(0,0,0,2):0; + const unsigned int buf_size = std::min(1024*1024U,_width*_height*(_spectrum==1?1:3)); + + std::fprintf(nfile,"P%c\n%u %u\n1.0\n", + (_spectrum==1?'f':'F'),_width,_height); + + switch (_spectrum) { + case 1 : { // Scalar image + CImg buf(buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const ulongT N = std::min((ulongT)to_write,(ulongT)buf_size); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) *(ptrd++) = (float)*(ptr_r++); + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,N,nfile); + to_write-=N; + } + } break; + case 2 : { // RG image + CImg buf(buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const unsigned int N = std::min((unsigned int)to_write,buf_size/3); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (float)*(ptr_r++); + *(ptrd++) = (float)*(ptr_g++); + *(ptrd++) = 0; + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } break; + default : { // RGB image + CImg buf(buf_size); + for (longT to_write = (longT)width()*height(); to_write>0; ) { + const unsigned int N = std::min((unsigned int)to_write,buf_size/3); + float *ptrd = buf._data; + for (ulongT i = N; i>0; --i) { + *(ptrd++) = (float)*(ptr_r++); + *(ptrd++) = (float)*(ptr_g++); + *(ptrd++) = (float)*(ptr_b++); + } + if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size); + cimg::fwrite(buf._data,3*N,nfile); + to_write-=N; + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a RGB file. + /** + \param filename Filename, as a C-string. + **/ + const CImg& save_rgb(const char *const filename) const { + return _save_rgb(0,filename); + } + + //! Save image as a RGB file \overloading. + const CImg& save_rgb(std::FILE *const file) const { + return _save_rgb(file,0); + } + + const CImg& _save_rgb(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_rgb(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_spectrum!=3) + cimg::warn(_cimg_instance + "save_rgb(): image instance has not exactly 3 channels, for file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const ulongT wh = (ulongT)_width*_height; + unsigned char *const buffer = new unsigned char[3*wh], *nbuffer = buffer; + const T + *ptr1 = data(0,0,0,0), + *ptr2 = _spectrum>1?data(0,0,0,1):0, + *ptr3 = _spectrum>2?data(0,0,0,2):0; + switch (_spectrum) { + case 1 : { // Scalar image + for (ulongT k = 0; k& save_rgba(const char *const filename) const { + return _save_rgba(0,filename); + } + + //! Save image as a RGBA file \overloading. + const CImg& save_rgba(std::FILE *const file) const { + return _save_rgba(file,0); + } + + const CImg& _save_rgba(std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_rgba(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + if (_spectrum!=4) + cimg::warn(_cimg_instance + "save_rgba(): image instance has not exactly 4 channels, for file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const ulongT wh = (ulongT)_width*_height; + unsigned char *const buffer = new unsigned char[4*wh], *nbuffer = buffer; + const T + *ptr1 = data(0,0,0,0), + *ptr2 = _spectrum>1?data(0,0,0,1):0, + *ptr3 = _spectrum>2?data(0,0,0,2):0, + *ptr4 = _spectrum>3?data(0,0,0,3):0; + switch (_spectrum) { + case 1 : { // Scalar images + for (ulongT k = 0; k{ 0=None | 1=LZW | 2=JPEG }. + \param voxel_size Voxel size, to be stored in the filename. + \param description Description, to be stored in the filename. + \param use_bigtiff Allow to save big tiff files (>4Gb). + \note + - libtiff support is enabled by defining the precompilation + directive \c cimg_use_tif. + - When libtiff is enabled, 2D and 3D (multipage) several + channel per pixel are supported for + char,uchar,short,ushort,float and \c double pixel types. + - If \c cimg_use_tif is not defined at compile time the + function uses CImg&save_other(const char*). + **/ + const CImg& save_tiff(const char *const filename, const unsigned int compression_type=0, + const float *const voxel_size=0, const char *const description=0, + const bool use_bigtiff=true) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_tiff(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifdef cimg_use_tiff + const bool + _use_bigtiff = use_bigtiff && sizeof(ulongT)>=8 && size()*sizeof(T)>=1UL<<31; // No bigtiff for small images + TIFF *tif = TIFFOpen(filename,_use_bigtiff?"w8":"w4"); + if (tif) { + cimg_forZ(*this,z) _save_tiff(tif,z,z,compression_type,voxel_size,description); + TIFFClose(tif); + } else throw CImgIOException(_cimg_instance + "save_tiff(): Failed to open file '%s' for writing.", + cimg_instance, + filename); + return *this; +#else + cimg::unused(compression_type,voxel_size,description,use_bigtiff); + return save_other(filename); +#endif + } + +#ifdef cimg_use_tiff + +#define _cimg_save_tiff(types,typed,compression_type) if (!std::strcmp(types,pixel_type())) { \ + const typed foo = (typed)0; return _save_tiff(tif,directory,z,foo,compression_type,voxel_size,description); } + + // [internal] Save a plane into a tiff file + template + const CImg& _save_tiff(TIFF *tif, const unsigned int directory, const unsigned int z, const t& pixel_t, + const unsigned int compression_type, const float *const voxel_size, + const char *const description) const { + if (is_empty() || !tif || pixel_t) return *this; + const char *const filename = TIFFFileName(tif); + uint32 rowsperstrip = (uint32)-1; + uint16 spp = _spectrum, bpp = sizeof(t)*8, photometric; + if (spp==3 || spp==4) photometric = PHOTOMETRIC_RGB; + else photometric = PHOTOMETRIC_MINISBLACK; + TIFFSetDirectory(tif,directory); + TIFFSetField(tif,TIFFTAG_IMAGEWIDTH,_width); + TIFFSetField(tif,TIFFTAG_IMAGELENGTH,_height); + if (voxel_size) { + const float vx = voxel_size[0], vy = voxel_size[1], vz = voxel_size[2]; + TIFFSetField(tif,TIFFTAG_RESOLUTIONUNIT,RESUNIT_NONE); + TIFFSetField(tif,TIFFTAG_XRESOLUTION,1.f/vx); + TIFFSetField(tif,TIFFTAG_YRESOLUTION,1.f/vy); + CImg s_description(256); + cimg_snprintf(s_description,s_description._width,"VX=%g VY=%g VZ=%g spacing=%g",vx,vy,vz,vz); + TIFFSetField(tif,TIFFTAG_IMAGEDESCRIPTION,s_description.data()); + } + if (description) TIFFSetField(tif,TIFFTAG_IMAGEDESCRIPTION,description); + TIFFSetField(tif,TIFFTAG_ORIENTATION,ORIENTATION_TOPLEFT); + TIFFSetField(tif,TIFFTAG_SAMPLESPERPIXEL,spp); + if (cimg::type::is_float()) TIFFSetField(tif,TIFFTAG_SAMPLEFORMAT,3); + else if (cimg::type::min()==0) TIFFSetField(tif,TIFFTAG_SAMPLEFORMAT,1); + else TIFFSetField(tif,TIFFTAG_SAMPLEFORMAT,2); + double valm, valM = max_min(valm); + TIFFSetField(tif,TIFFTAG_SMINSAMPLEVALUE,valm); + TIFFSetField(tif,TIFFTAG_SMAXSAMPLEVALUE,valM); + TIFFSetField(tif,TIFFTAG_BITSPERSAMPLE,bpp); + TIFFSetField(tif,TIFFTAG_PLANARCONFIG,PLANARCONFIG_CONTIG); + TIFFSetField(tif,TIFFTAG_PHOTOMETRIC,photometric); + TIFFSetField(tif,TIFFTAG_COMPRESSION,compression_type==2?COMPRESSION_JPEG: + compression_type==1?COMPRESSION_LZW:COMPRESSION_NONE); + rowsperstrip = TIFFDefaultStripSize(tif,rowsperstrip); + TIFFSetField(tif,TIFFTAG_ROWSPERSTRIP,rowsperstrip); + TIFFSetField(tif,TIFFTAG_FILLORDER,FILLORDER_MSB2LSB); + TIFFSetField(tif,TIFFTAG_SOFTWARE,"CImg"); + + t *const buf = (t*)_TIFFmalloc(TIFFStripSize(tif)); + if (buf) { + for (unsigned int row = 0; row<_height; row+=rowsperstrip) { + uint32 nrow = (row + rowsperstrip>_height?_height - row:rowsperstrip); + tstrip_t strip = TIFFComputeStrip(tif,row,0); + tsize_t i = 0; + for (unsigned int rr = 0; rr& _save_tiff(TIFF *tif, const unsigned int directory, const unsigned int z, + const unsigned int compression_type, const float *const voxel_size, + const char *const description) const { + _cimg_save_tiff("bool",unsigned char,compression_type); + _cimg_save_tiff("unsigned char",unsigned char,compression_type); + _cimg_save_tiff("char",char,compression_type); + _cimg_save_tiff("unsigned short",unsigned short,compression_type); + _cimg_save_tiff("short",short,compression_type); + _cimg_save_tiff("unsigned int",unsigned int,compression_type); + _cimg_save_tiff("int",int,compression_type); + _cimg_save_tiff("unsigned int64",unsigned int,compression_type); + _cimg_save_tiff("int64",int,compression_type); + _cimg_save_tiff("float",float,compression_type); + _cimg_save_tiff("double",float,compression_type); + const char *const filename = TIFFFileName(tif); + throw CImgInstanceException(_cimg_instance + "save_tiff(): Unsupported pixel type '%s' for file '%s'.", + cimg_instance, + pixel_type(),filename?filename:"(FILE*)"); + return *this; + } +#endif + + //! Save image as a MINC2 file. + /** + \param filename Filename, as a C-string. + \param imitate_file If non-zero, reference filename, as a C-string, to borrow header from. + **/ + const CImg& save_minc2(const char *const filename, + const char *const imitate_file=0) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_minc2(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifndef cimg_use_minc2 + cimg::unused(imitate_file); + return save_other(filename); +#else + minc::minc_1_writer wtr; + if (imitate_file) + wtr.open(filename, imitate_file); + else { + minc::minc_info di; + if (width()) di.push_back(minc::dim_info(width(),width()*0.5,-1,minc::dim_info::DIM_X)); + if (height()) di.push_back(minc::dim_info(height(),height()*0.5,-1,minc::dim_info::DIM_Y)); + if (depth()) di.push_back(minc::dim_info(depth(),depth()*0.5,-1,minc::dim_info::DIM_Z)); + if (spectrum()) di.push_back(minc::dim_info(spectrum(),spectrum()*0.5,-1,minc::dim_info::DIM_TIME)); + wtr.open(filename,di,1,NC_FLOAT,0); + } + if (pixel_type()==cimg::type::string()) + wtr.setup_write_byte(); + else if (pixel_type()==cimg::type::string()) + wtr.setup_write_int(); + else if (pixel_type()==cimg::type::string()) + wtr.setup_write_double(); + else + wtr.setup_write_float(); + minc::save_standard_volume(wtr, this->_data); + return *this; +#endif + } + + //! Save image as an ANALYZE7.5 or NIFTI file. + /** + \param filename Filename, as a C-string. + \param voxel_size Pointer to 3 consecutive values that tell about the voxel sizes along the X,Y and Z dimensions. + **/ + const CImg& save_analyze(const char *const filename, const float *const voxel_size=0) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_analyze(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + std::FILE *file; + CImg hname(1024), iname(1024); + const char *const ext = cimg::split_filename(filename); + short datatype = -1; + if (!*ext) { + cimg_snprintf(hname,hname._width,"%s.hdr",filename); + cimg_snprintf(iname,iname._width,"%s.img",filename); + } + if (!cimg::strncasecmp(ext,"hdr",3)) { + std::strcpy(hname,filename); + std::strncpy(iname,filename,iname._width - 1); + cimg_sprintf(iname._data + std::strlen(iname) - 3,"img"); + } + if (!cimg::strncasecmp(ext,"img",3)) { + std::strcpy(hname,filename); + std::strncpy(iname,filename,iname._width - 1); + cimg_sprintf(hname._data + std::strlen(iname) - 3,"hdr"); + } + if (!cimg::strncasecmp(ext,"nii",3)) { + std::strncpy(hname,filename,hname._width - 1); *iname = 0; + } + + CImg header(*iname?348:352,1,1,1,0); + int *const iheader = (int*)header._data; + *iheader = 348; + std::strcpy(header._data + 4,"CImg"); + std::strcpy(header._data + 14," "); + ((short*)&(header[36]))[0] = 4096; + ((char*)&(header[38]))[0] = 114; + ((short*)&(header[40]))[0] = 4; + ((short*)&(header[40]))[1] = (short)_width; + ((short*)&(header[40]))[2] = (short)_height; + ((short*)&(header[40]))[3] = (short)_depth; + ((short*)&(header[40]))[4] = (short)_spectrum; + if (!cimg::strcasecmp(pixel_type(),"bool")) datatype = 2; + if (!cimg::strcasecmp(pixel_type(),"unsigned char")) datatype = 2; + if (!cimg::strcasecmp(pixel_type(),"char")) datatype = 2; + if (!cimg::strcasecmp(pixel_type(),"unsigned short")) datatype = 4; + if (!cimg::strcasecmp(pixel_type(),"short")) datatype = 4; + if (!cimg::strcasecmp(pixel_type(),"unsigned int")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"int")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"unsigned int64")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"int64")) datatype = 8; + if (!cimg::strcasecmp(pixel_type(),"float")) datatype = 16; + if (!cimg::strcasecmp(pixel_type(),"double")) datatype = 64; + if (datatype<0) + throw CImgIOException(_cimg_instance + "save_analyze(): Unsupported pixel type '%s' for file '%s'.", + cimg_instance, + pixel_type(),filename); + + ((short*)&(header[70]))[0] = datatype; + ((short*)&(header[72]))[0] = sizeof(T); + ((float*)&(header[108]))[0] = (float)(*iname?0:header.width()); + ((float*)&(header[112]))[0] = 1; + ((float*)&(header[76]))[0] = 0; + if (voxel_size) { + ((float*)&(header[76]))[1] = voxel_size[0]; + ((float*)&(header[76]))[2] = voxel_size[1]; + ((float*)&(header[76]))[3] = voxel_size[2]; + } else ((float*)&(header[76]))[1] = ((float*)&(header[76]))[2] = ((float*)&(header[76]))[3] = 1; + file = cimg::fopen(hname,"wb"); + cimg::fwrite(header._data,header.width(),file); + if (*iname) { cimg::fclose(file); file = cimg::fopen(iname,"wb"); } + cimg::fwrite(_data,size(),file); + cimg::fclose(file); + return *this; + } + + //! Save image as a .cimg file. + /** + \param filename Filename, as a C-string. + \param is_compressed Tells if the file contains compressed image data. + **/ + const CImg& save_cimg(const char *const filename, const bool is_compressed=false) const { + CImgList(*this,true).save_cimg(filename,is_compressed); + return *this; + } + + //! Save image as a .cimg file \overloading. + const CImg& save_cimg(std::FILE *const file, const bool is_compressed=false) const { + CImgList(*this,true).save_cimg(file,is_compressed); + return *this; + } + + //! Save image as a sub-image into an existing .cimg file. + /** + \param filename Filename, as a C-string. + \param n0 Index of the image inside the file. + \param x0 X-coordinate of the sub-image location. + \param y0 Y-coordinate of the sub-image location. + \param z0 Z-coordinate of the sub-image location. + \param c0 C-coordinate of the sub-image location. + **/ + const CImg& save_cimg(const char *const filename, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + CImgList(*this,true).save_cimg(filename,n0,x0,y0,z0,c0); + return *this; + } + + //! Save image as a sub-image into an existing .cimg file \overloading. + const CImg& save_cimg(std::FILE *const file, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + CImgList(*this,true).save_cimg(file,n0,x0,y0,z0,c0); + return *this; + } + + //! Save blank image as a .cimg file. + /** + \param filename Filename, as a C-string. + \param dx Width of the image. + \param dy Height of the image. + \param dz Depth of the image. + \param dc Number of channels of the image. + \note + - All pixel values of the saved image are set to \c 0. + - Use this method to save large images without having to instantiate and allocate them. + **/ + static void save_empty_cimg(const char *const filename, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return CImgList::save_empty_cimg(filename,1,dx,dy,dz,dc); + } + + //! Save blank image as a .cimg file \overloading. + /** + Same as save_empty_cimg(const char *,unsigned int,unsigned int,unsigned int,unsigned int) + with a file stream argument instead of a filename string. + **/ + static void save_empty_cimg(std::FILE *const file, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return CImgList::save_empty_cimg(file,1,dx,dy,dz,dc); + } + + //! Save image as an INRIMAGE-4 file. + /** + \param filename Filename, as a C-string. + \param voxel_size Pointer to 3 values specifying the voxel sizes along the X,Y and Z dimensions. + **/ + const CImg& save_inr(const char *const filename, const float *const voxel_size=0) const { + return _save_inr(0,filename,voxel_size); + } + + //! Save image as an INRIMAGE-4 file \overloading. + const CImg& save_inr(std::FILE *const file, const float *const voxel_size=0) const { + return _save_inr(file,0,voxel_size); + } + + const CImg& _save_inr(std::FILE *const file, const char *const filename, const float *const voxel_size) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_inr(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + int inrpixsize = -1; + const char *inrtype = "unsigned fixed\nPIXSIZE=8 bits\nSCALE=2**0"; + if (!cimg::strcasecmp(pixel_type(),"unsigned char")) { + inrtype = "unsigned fixed\nPIXSIZE=8 bits\nSCALE=2**0"; inrpixsize = 1; + } + if (!cimg::strcasecmp(pixel_type(),"char")) { + inrtype = "fixed\nPIXSIZE=8 bits\nSCALE=2**0"; inrpixsize = 1; + } + if (!cimg::strcasecmp(pixel_type(),"unsigned short")) { + inrtype = "unsigned fixed\nPIXSIZE=16 bits\nSCALE=2**0";inrpixsize = 2; + } + if (!cimg::strcasecmp(pixel_type(),"short")) { + inrtype = "fixed\nPIXSIZE=16 bits\nSCALE=2**0"; inrpixsize = 2; + } + if (!cimg::strcasecmp(pixel_type(),"unsigned int")) { + inrtype = "unsigned fixed\nPIXSIZE=32 bits\nSCALE=2**0";inrpixsize = 4; + } + if (!cimg::strcasecmp(pixel_type(),"int")) { + inrtype = "fixed\nPIXSIZE=32 bits\nSCALE=2**0"; inrpixsize = 4; + } + if (!cimg::strcasecmp(pixel_type(),"float")) { + inrtype = "float\nPIXSIZE=32 bits"; inrpixsize = 4; + } + if (!cimg::strcasecmp(pixel_type(),"double")) { + inrtype = "float\nPIXSIZE=64 bits"; inrpixsize = 8; + } + if (inrpixsize<=0) + throw CImgIOException(_cimg_instance + "save_inr(): Unsupported pixel type '%s' for file '%s'", + cimg_instance, + pixel_type(),filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + CImg header(257); + int err = cimg_snprintf(header,header._width,"#INRIMAGE-4#{\nXDIM=%u\nYDIM=%u\nZDIM=%u\nVDIM=%u\n", + _width,_height,_depth,_spectrum); + if (voxel_size) err+=cimg_sprintf(header._data + err,"VX=%g\nVY=%g\nVZ=%g\n", + voxel_size[0],voxel_size[1],voxel_size[2]); + err+=cimg_sprintf(header._data + err,"TYPE=%s\nCPU=%s\n",inrtype,cimg::endianness()?"sun":"decm"); + std::memset(header._data + err,'\n',252 - err); + std::memcpy(header._data + 252,"##}\n",4); + cimg::fwrite(header._data,256,nfile); + cimg_forXYZ(*this,x,y,z) cimg_forC(*this,c) cimg::fwrite(&((*this)(x,y,z,c)),1,nfile); + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as an OpenEXR file. + /** + \param filename Filename, as a C-string. + \note The OpenEXR file format is described here. + **/ + const CImg& save_exr(const char *const filename) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_exr(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_exr(): Instance is volumetric, only the first slice will be saved in file '%s'.", + cimg_instance, + filename); + +#ifndef cimg_use_openexr + return save_other(filename); +#else + Imf::Rgba *const ptrd0 = new Imf::Rgba[(size_t)_width*_height], *ptrd = ptrd0, rgba; + switch (_spectrum) { + case 1 : { // Grayscale image + for (const T *ptr_r = data(), *const ptr_e = ptr_r + (ulongT)_width*_height; ptr_rPandore file specifications + for more information). + **/ + const CImg& save_pandore(const char *const filename, const unsigned int colorspace=0) const { + return _save_pandore(0,filename,colorspace); + } + + //! Save image as a Pandore-5 file \overloading. + /** + Same as save_pandore(const char *,unsigned int) const + with a file stream argument instead of a filename string. + **/ + const CImg& save_pandore(std::FILE *const file, const unsigned int colorspace=0) const { + return _save_pandore(file,0,colorspace); + } + + unsigned int _save_pandore_header_length(unsigned int id, unsigned int *dims, const unsigned int colorspace) const { + unsigned int nbdims = 0; + if (id==2 || id==3 || id==4) { + dims[0] = 1; dims[1] = _width; nbdims = 2; + } + if (id==5 || id==6 || id==7) { + dims[0] = 1; dims[1] = _height; dims[2] = _width; nbdims=3; + } + if (id==8 || id==9 || id==10) { + dims[0] = _spectrum; dims[1] = _depth; dims[2] = _height; dims[3] = _width; nbdims = 4; + } + if (id==16 || id==17 || id==18) { + dims[0] = 3; dims[1] = _height; dims[2] = _width; dims[3] = colorspace; nbdims = 4; + } + if (id==19 || id==20 || id==21) { + dims[0] = 3; dims[1] = _depth; dims[2] = _height; dims[3] = _width; dims[4] = colorspace; nbdims = 5; + } + if (id==22 || id==23 || id==25) { + dims[0] = _spectrum; dims[1] = _width; nbdims = 2; + } + if (id==26 || id==27 || id==29) { + dims[0] = _spectrum; dims[1] = _height; dims[2] = _width; nbdims=3; + } + if (id==30 || id==31 || id==33) { + dims[0] = _spectrum; dims[1] = _depth; dims[2] = _height; dims[3] = _width; nbdims = 4; + } + return nbdims; + } + + const CImg& _save_pandore(std::FILE *const file, const char *const filename, + const unsigned int colorspace) const { + +#define __cimg_save_pandore_case(dtype) \ + dtype *buffer = new dtype[size()]; \ + const T *ptrs = _data; \ + cimg_foroff(*this,off) *(buffer++) = (dtype)(*(ptrs++)); \ + buffer-=size(); \ + cimg::fwrite(buffer,size(),nfile); \ + delete[] buffer + +#define _cimg_save_pandore_case(sy,sz,sv,stype,id) \ + if (!saved && (sy?(sy==_height):true) && (sz?(sz==_depth):true) && \ + (sv?(sv==_spectrum):true) && !std::strcmp(stype,pixel_type())) { \ + unsigned int *iheader = (unsigned int*)(header + 12); \ + nbdims = _save_pandore_header_length((*iheader=id),dims,colorspace); \ + cimg::fwrite(header,36,nfile); \ + if (sizeof(unsigned long)==4) { CImg ndims(5); \ + for (int d = 0; d<5; ++d) ndims[d] = (unsigned long)dims[d]; \ + cimg::fwrite(ndims._data,nbdims,nfile); } \ + else if (sizeof(unsigned int)==4) { CImg ndims(5); \ + for (int d = 0; d<5; ++d) ndims[d] = (unsigned int)dims[d]; \ + cimg::fwrite(ndims._data,nbdims,nfile); } \ + else if (sizeof(unsigned short)==4) { CImg ndims(5); \ + for (int d = 0; d<5; ++d) ndims[d] = (unsigned short)dims[d]; \ + cimg::fwrite(ndims._data,nbdims,nfile); } \ + else throw CImgIOException(_cimg_instance \ + "save_pandore(): Unsupported datatype for file '%s'.",\ + cimg_instance, \ + filename?filename:"(FILE*)"); \ + if (id==2 || id==5 || id==8 || id==16 || id==19 || id==22 || id==26 || id==30) { \ + __cimg_save_pandore_case(unsigned char); \ + } else if (id==3 || id==6 || id==9 || id==17 || id==20 || id==23 || id==27 || id==31) { \ + if (sizeof(unsigned long)==4) { __cimg_save_pandore_case(unsigned long); } \ + else if (sizeof(unsigned int)==4) { __cimg_save_pandore_case(unsigned int); } \ + else if (sizeof(unsigned short)==4) { __cimg_save_pandore_case(unsigned short); } \ + else throw CImgIOException(_cimg_instance \ + "save_pandore(): Unsupported datatype for file '%s'.",\ + cimg_instance, \ + filename?filename:"(FILE*)"); \ + } else if (id==4 || id==7 || id==10 || id==18 || id==21 || id==25 || id==29 || id==33) { \ + if (sizeof(double)==4) { __cimg_save_pandore_case(double); } \ + else if (sizeof(float)==4) { __cimg_save_pandore_case(float); } \ + else throw CImgIOException(_cimg_instance \ + "save_pandore(): Unsupported datatype for file '%s'.",\ + cimg_instance, \ + filename?filename:"(FILE*)"); \ + } \ + saved = true; \ + } + + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_pandore(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + unsigned char header[36] = { 'P','A','N','D','O','R','E','0','4',0,0,0, + 0,0,0,0,'C','I','m','g',0,0,0,0,0, + 'N','o',' ','d','a','t','e',0,0,0,0 }; + unsigned int nbdims, dims[5] = { 0 }; + bool saved = false; + _cimg_save_pandore_case(1,1,1,"unsigned char",2); + _cimg_save_pandore_case(1,1,1,"char",3); + _cimg_save_pandore_case(1,1,1,"unsigned short",3); + _cimg_save_pandore_case(1,1,1,"short",3); + _cimg_save_pandore_case(1,1,1,"unsigned int",3); + _cimg_save_pandore_case(1,1,1,"int",3); + _cimg_save_pandore_case(1,1,1,"unsigned int64",3); + _cimg_save_pandore_case(1,1,1,"int64",3); + _cimg_save_pandore_case(1,1,1,"float",4); + _cimg_save_pandore_case(1,1,1,"double",4); + + _cimg_save_pandore_case(0,1,1,"unsigned char",5); + _cimg_save_pandore_case(0,1,1,"char",6); + _cimg_save_pandore_case(0,1,1,"unsigned short",6); + _cimg_save_pandore_case(0,1,1,"short",6); + _cimg_save_pandore_case(0,1,1,"unsigned int",6); + _cimg_save_pandore_case(0,1,1,"int",6); + _cimg_save_pandore_case(0,1,1,"unsigned int64",6); + _cimg_save_pandore_case(0,1,1,"int64",6); + _cimg_save_pandore_case(0,1,1,"float",7); + _cimg_save_pandore_case(0,1,1,"double",7); + + _cimg_save_pandore_case(0,0,1,"unsigned char",8); + _cimg_save_pandore_case(0,0,1,"char",9); + _cimg_save_pandore_case(0,0,1,"unsigned short",9); + _cimg_save_pandore_case(0,0,1,"short",9); + _cimg_save_pandore_case(0,0,1,"unsigned int",9); + _cimg_save_pandore_case(0,0,1,"int",9); + _cimg_save_pandore_case(0,0,1,"unsigned int64",9); + _cimg_save_pandore_case(0,0,1,"int64",9); + _cimg_save_pandore_case(0,0,1,"float",10); + _cimg_save_pandore_case(0,0,1,"double",10); + + _cimg_save_pandore_case(0,1,3,"unsigned char",16); + _cimg_save_pandore_case(0,1,3,"char",17); + _cimg_save_pandore_case(0,1,3,"unsigned short",17); + _cimg_save_pandore_case(0,1,3,"short",17); + _cimg_save_pandore_case(0,1,3,"unsigned int",17); + _cimg_save_pandore_case(0,1,3,"int",17); + _cimg_save_pandore_case(0,1,3,"unsigned int64",17); + _cimg_save_pandore_case(0,1,3,"int64",17); + _cimg_save_pandore_case(0,1,3,"float",18); + _cimg_save_pandore_case(0,1,3,"double",18); + + _cimg_save_pandore_case(0,0,3,"unsigned char",19); + _cimg_save_pandore_case(0,0,3,"char",20); + _cimg_save_pandore_case(0,0,3,"unsigned short",20); + _cimg_save_pandore_case(0,0,3,"short",20); + _cimg_save_pandore_case(0,0,3,"unsigned int",20); + _cimg_save_pandore_case(0,0,3,"int",20); + _cimg_save_pandore_case(0,0,3,"unsigned int64",20); + _cimg_save_pandore_case(0,0,3,"int64",20); + _cimg_save_pandore_case(0,0,3,"float",21); + _cimg_save_pandore_case(0,0,3,"double",21); + + _cimg_save_pandore_case(1,1,0,"unsigned char",22); + _cimg_save_pandore_case(1,1,0,"char",23); + _cimg_save_pandore_case(1,1,0,"unsigned short",23); + _cimg_save_pandore_case(1,1,0,"short",23); + _cimg_save_pandore_case(1,1,0,"unsigned int",23); + _cimg_save_pandore_case(1,1,0,"int",23); + _cimg_save_pandore_case(1,1,0,"unsigned int64",23); + _cimg_save_pandore_case(1,1,0,"int64",23); + _cimg_save_pandore_case(1,1,0,"float",25); + _cimg_save_pandore_case(1,1,0,"double",25); + + _cimg_save_pandore_case(0,1,0,"unsigned char",26); + _cimg_save_pandore_case(0,1,0,"char",27); + _cimg_save_pandore_case(0,1,0,"unsigned short",27); + _cimg_save_pandore_case(0,1,0,"short",27); + _cimg_save_pandore_case(0,1,0,"unsigned int",27); + _cimg_save_pandore_case(0,1,0,"int",27); + _cimg_save_pandore_case(0,1,0,"unsigned int64",27); + _cimg_save_pandore_case(0,1,0,"int64",27); + _cimg_save_pandore_case(0,1,0,"float",29); + _cimg_save_pandore_case(0,1,0,"double",29); + + _cimg_save_pandore_case(0,0,0,"unsigned char",30); + _cimg_save_pandore_case(0,0,0,"char",31); + _cimg_save_pandore_case(0,0,0,"unsigned short",31); + _cimg_save_pandore_case(0,0,0,"short",31); + _cimg_save_pandore_case(0,0,0,"unsigned int",31); + _cimg_save_pandore_case(0,0,0,"int",31); + _cimg_save_pandore_case(0,0,0,"unsigned int64",31); + _cimg_save_pandore_case(0,0,0,"int64",31); + _cimg_save_pandore_case(0,0,0,"float",33); + _cimg_save_pandore_case(0,0,0,"double",33); + + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save image as a raw data file. + /** + \param filename Filename, as a C-string. + \param is_multiplexed Tells if the image channels are stored in a multiplexed way (\c true) or not (\c false). + \note The .raw format does not store the image dimensions in the output file, + so you have to keep track of them somewhere to be able to read the file correctly afterwards. + **/ + const CImg& save_raw(const char *const filename, const bool is_multiplexed=false) const { + return _save_raw(0,filename,is_multiplexed); + } + + //! Save image as a raw data file \overloading. + /** + Same as save_raw(const char *,bool) const + with a file stream argument instead of a filename string. + **/ + const CImg& save_raw(std::FILE *const file, const bool is_multiplexed=false) const { + return _save_raw(file,0,is_multiplexed); + } + + const CImg& _save_raw(std::FILE *const file, const char *const filename, const bool is_multiplexed) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_raw(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + if (pixel_type()==cimg::type::string()) { // Boolean data (bitwise) + ulongT siz; + const unsigned char *const buf = _bool2uchar(siz,is_multiplexed); + cimg::fwrite(buf,siz,nfile); + delete[] buf; + } else { // Non boolean data + if (!is_multiplexed || _spectrum==1) cimg::fwrite(_data,size(),nfile); // Non-multiplexed + else { // Multiplexed + CImg buf(_spectrum); + cimg_forXYZ(*this,x,y,z) { + cimg_forC(*this,c) buf[c] = (*this)(x,y,z,c); + cimg::fwrite(buf._data,_spectrum,nfile); + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + // Return unsigned char buffer that encodes data of a CImg instance bitwise. + // (buffer needs to be deallocated afterwards, with delete[]). + const unsigned char *_bool2uchar(ulongT &siz, const bool is_multiplexed) const { + const ulongT _siz = size(); + siz = _siz/8 + (_siz%8?1:0); + unsigned char *const buf = new unsigned char[siz], *ptrd = buf, val = 0, bit = 0; + + if (!is_multiplexed || _spectrum==1) // Non-multiplexed + cimg_for(*this,ptrs,T) { (val<<=1)|=(*ptrs?1:0); if (++bit==8) { *(ptrd++) = val; val = bit = 0; }} + else // Multiplexed + cimg_forXYZ(*this,x,y,z) cimg_forC(*this,c) { + (val<<=1)|=((*this)(x,y,z,c)?1:0); if (++bit==8) { *(ptrd++) = val; val = bit = 0; } + } + if (bit) *ptrd = val; + return buf; + } + + // Fill CImg instance from bitwise data encoded in an unsigned char buffer. + void _uchar2bool(const unsigned char *buf, const ulongT siz, const bool is_multiplexed) { + const ulongT S = std::min(siz*8,size()); + const unsigned char *ptrs = buf; + unsigned char val = 0, mask = 0; + T *ptrd = _data; + if (S && (!is_multiplexed || _spectrum==1)) // Non-multiplexed + for (ulongT off = 0; off>=1)) { val = *(ptrs++); mask = 128; } + *(ptrd++) = (T)((val&mask)?1:0); + } + else if (S) { // Multiplexed + ulongT off = 0; + for (int z = 0; z>=1)) { val = *(ptrs++); ++off; mask = 128; } + (*this)(x,y,z,c) = (T)((val&mask)?1:0); + } + } + } + + //! Save image as a .yuv video file. + /** + \param filename Filename, as a C-string. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param is_rgb Tells if pixel values of the instance image are RGB-coded (\c true) or YUV-coded (\c false). + \note Each slice of the instance image is considered to be a single frame of the output video file. + **/ + const CImg& save_yuv(const char *const filename, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + CImgList(*this,true).save_yuv(filename,chroma_subsampling,is_rgb); + return *this; + } + + //! Save image as a .yuv video file \overloading. + /** + Same as save_yuv(const char*,const unsigned int,const bool) const + with a file stream argument instead of a filename string. + **/ + const CImg& save_yuv(std::FILE *const file, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + CImgList(*this,true).save_yuv(file,chroma_subsampling,is_rgb); + return *this; + } + + //! Save 3D object as an Object File Format (.off) file. + /** + \param filename Filename, as a C-string. + \param primitives List of 3D object primitives. + \param colors List of 3D object colors. + \note + - Instance image contains the vertices data of the 3D object. + - Textured, transparent or sphere-shaped primitives cannot be managed by the .off file format. + Such primitives will be lost or simplified during file saving. + - The .off file format is described here. + **/ + template + const CImg& save_off(const CImgList& primitives, const CImgList& colors, + const char *const filename) const { + return _save_off(primitives,colors,0,filename); + } + + //! Save 3D object as an Object File Format (.off) file \overloading. + /** + Same as save_off(const CImgList&,const CImgList&,const char*) const + with a file stream argument instead of a filename string. + **/ + template + const CImg& save_off(const CImgList& primitives, const CImgList& colors, + std::FILE *const file) const { + return _save_off(primitives,colors,file,0); + } + + template + const CImg& _save_off(const CImgList& primitives, const CImgList& colors, + std::FILE *const file, const char *const filename) const { + if (!file && !filename) + throw CImgArgumentException(_cimg_instance + "save_off(): Specified filename is (null).", + cimg_instance); + if (is_empty()) + throw CImgInstanceException(_cimg_instance + "save_off(): Empty instance, for file '%s'.", + cimg_instance, + filename?filename:"(FILE*)"); + + CImgList opacities; + CImg error_message(1024); + if (!is_object3d(primitives,colors,opacities,true,error_message)) + throw CImgInstanceException(_cimg_instance + "save_off(): Invalid specified 3D object, for file '%s' (%s).", + cimg_instance, + filename?filename:"(FILE*)",error_message.data()); + + const CImg default_color(1,3,1,1,(tc)std::min((int)cimg::type::max(),200)); + std::FILE *const nfile = file?file:cimg::fopen(filename,"w"); + unsigned int supported_primitives = 0; + cimglist_for(primitives,l) if (primitives[l].size()!=5) ++supported_primitives; + std::fprintf(nfile,"OFF\n%u %u %u\n",_width,supported_primitives,3*primitives._width); + cimg_forX(*this,i) std::fprintf(nfile,"%f %f %f\n", + (float)((*this)(i,0)),(float)((*this)(i,1)),(float)((*this)(i,2))); + cimglist_for(primitives,l) { + const CImg& color = l1?color[1]:r)/255.f, b = (csiz>2?color[2]:g)/255.f; + switch (psiz) { + case 1 : std::fprintf(nfile,"1 %u %f %f %f\n", + (unsigned int)primitives(l,0),r,g,b); break; + case 2 : std::fprintf(nfile,"2 %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,1),r,g,b); break; + case 3 : std::fprintf(nfile,"3 %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,2), + (unsigned int)primitives(l,1),r,g,b); break; + case 4 : std::fprintf(nfile,"4 %u %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,3), + (unsigned int)primitives(l,2),(unsigned int)primitives(l,1),r,g,b); break; + case 5 : std::fprintf(nfile,"2 %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,1),r,g,b); break; + case 6 : { + const unsigned int xt = (unsigned int)primitives(l,2), yt = (unsigned int)primitives(l,3); + const float + rt = color.atXY(xt,yt,0)/255.f, + gt = (csiz>1?color.atXY(xt,yt,1):r)/255.f, + bt = (csiz>2?color.atXY(xt,yt,2):g)/255.f; + std::fprintf(nfile,"2 %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,1),rt,gt,bt); + } break; + case 9 : { + const unsigned int xt = (unsigned int)primitives(l,3), yt = (unsigned int)primitives(l,4); + const float + rt = color.atXY(xt,yt,0)/255.f, + gt = (csiz>1?color.atXY(xt,yt,1):r)/255.f, + bt = (csiz>2?color.atXY(xt,yt,2):g)/255.f; + std::fprintf(nfile,"3 %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,2), + (unsigned int)primitives(l,1),rt,gt,bt); + } break; + case 12 : { + const unsigned int xt = (unsigned int)primitives(l,4), yt = (unsigned int)primitives(l,5); + const float + rt = color.atXY(xt,yt,0)/255.f, + gt = (csiz>1?color.atXY(xt,yt,1):r)/255.f, + bt = (csiz>2?color.atXY(xt,yt,2):g)/255.f; + std::fprintf(nfile,"4 %u %u %u %u %f %f %f\n", + (unsigned int)primitives(l,0),(unsigned int)primitives(l,3), + (unsigned int)primitives(l,2),(unsigned int)primitives(l,1),rt,gt,bt); + } break; + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save volumetric image as a video (using the OpenCV library when available). + /** + \param filename Filename to write data to. + \param fps Number of frames per second. + \param codec Type of compression (See http://www.fourcc.org/codecs.php to see available codecs). + \param keep_open Tells if the video writer associated to the specified filename + must be kept open or not (to allow frames to be added in the same file afterwards). + **/ + const CImg& save_video(const char *const filename, const unsigned int fps=25, + const char *codec=0, const bool keep_open=false) const { + if (is_empty()) { CImgList().save_video(filename,fps,codec,keep_open); return *this; } + CImgList list; + get_split('z').move_to(list); + list.save_video(filename,fps,codec,keep_open); + return *this; + } + + //! Save volumetric image as a video, using ffmpeg external binary. + /** + \param filename Filename, as a C-string. + \param fps Video framerate. + \param codec Video codec, as a C-string. + \param bitrate Video bitrate. + \note + - Each slice of the instance image is considered to be a single frame of the output video file. + - This method uses \c ffmpeg, an external executable binary provided by + FFmpeg. + It must be installed for the method to succeed. + **/ + const CImg& save_ffmpeg_external(const char *const filename, const unsigned int fps=25, + const char *const codec=0, const unsigned int bitrate=2048) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_ffmpeg_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + CImgList list; + get_split('z').move_to(list); + list.save_ffmpeg_external(filename,fps,codec,bitrate); + return *this; + } + + //! Save image using gzip external binary. + /** + \param filename Filename, as a C-string. + \note This method uses \c gzip, an external executable binary provided by + gzip. + It must be installed for the method to succeed. + **/ + const CImg& save_gzip_external(const char *const filename) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_gzip_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + CImg command(1024), filename_tmp(256), body(256); + const char + *ext = cimg::split_filename(filename,body), + *ext2 = cimg::split_filename(body,0); + std::FILE *file; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + save(filename_tmp); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gzip_path(), + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::gzip_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimg_instance + "save_gzip_external(): Failed to save file '%s' with external command 'gzip'.", + cimg_instance, + filename); + + else cimg::fclose(file); + std::remove(filename_tmp); + return *this; + } + + //! Save image using GraphicsMagick's external binary. + /** + \param filename Filename, as a C-string. + \param quality Image quality (expressed in percent), when the file format supports it. + \note This method uses \c gm, an external executable binary provided by + GraphicsMagick. + It must be installed for the method to succeed. + **/ + const CImg& save_graphicsmagick_external(const char *const filename, const unsigned int quality=100) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_graphicsmagick_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_other(): File '%s', saving a volumetric image with an external call to " + "GraphicsMagick only writes the first image slice.", + cimg_instance,filename); + +#ifdef cimg_use_png +#define _cimg_sge_extension1 "png" +#define _cimg_sge_extension2 "png" +#else +#define _cimg_sge_extension1 "pgm" +#define _cimg_sge_extension2 "ppm" +#endif + CImg command(1024), filename_tmp(256); + std::FILE *file; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(), + _spectrum==1?_cimg_sge_extension1:_cimg_sge_extension2); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + +#ifdef cimg_use_png + save_png(filename_tmp); +#else + save_pnm(filename_tmp); +#endif + cimg_snprintf(command,command._width,"\"%s\" convert -quality %u \"%s\" \"%s\"", + cimg::graphicsmagick_path(),quality, + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::graphicsmagick_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimg_instance + "save_graphicsmagick_external(): Failed to save file '%s' with external command 'gm'.", + cimg_instance, + filename); + + if (file) cimg::fclose(file); + std::remove(filename_tmp); + return *this; + } + + //! Save image using ImageMagick's external binary. + /** + \param filename Filename, as a C-string. + \param quality Image quality (expressed in percent), when the file format supports it. + \note This method uses \c convert, an external executable binary provided by + ImageMagick. + It must be installed for the method to succeed. + **/ + const CImg& save_imagemagick_external(const char *const filename, const unsigned int quality=100) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_imagemagick_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_other(): File '%s', saving a volumetric image with an external call to " + "ImageMagick only writes the first image slice.", + cimg_instance,filename); +#ifdef cimg_use_png +#define _cimg_sie_extension1 "png" +#define _cimg_sie_extension2 "png" +#else +#define _cimg_sie_extension1 "pgm" +#define _cimg_sie_extension2 "ppm" +#endif + CImg command(1024), filename_tmp(256); + std::FILE *file; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s",cimg::temporary_path(), + cimg_file_separator,cimg::filenamerand(),_spectrum==1?_cimg_sie_extension1:_cimg_sie_extension2); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); +#ifdef cimg_use_png + save_png(filename_tmp); +#else + save_pnm(filename_tmp); +#endif + cimg_snprintf(command,command._width,"\"%s\" -quality %u \"%s\" \"%s\"", + cimg::imagemagick_path(),quality, + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::imagemagick_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimg_instance + "save_imagemagick_external(): Failed to save file '%s' with " + "external command 'magick/convert'.", + cimg_instance, + filename); + + if (file) cimg::fclose(file); + std::remove(filename_tmp); + return *this; + } + + //! Save image as a Dicom file. + /** + \param filename Filename, as a C-string. + \note This method uses \c medcon, an external executable binary provided by + (X)Medcon. + It must be installed for the method to succeed. + **/ + const CImg& save_medcon_external(const char *const filename) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_medcon_external(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + CImg command(1024), filename_tmp(256), body(256); + std::FILE *file; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.hdr",cimg::filenamerand()); + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + save_analyze(filename_tmp); + cimg_snprintf(command,command._width,"\"%s\" -w -c dicom -o \"%s\" -f \"%s\"", + cimg::medcon_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command, cimg::medcon_path()); + std::remove(filename_tmp); + cimg::split_filename(filename_tmp,body); + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.img",body._data); + std::remove(filename_tmp); + + file = cimg::std_fopen(filename,"rb"); + if (!file) { + cimg_snprintf(command,command._width,"m000-%s",filename); + file = cimg::std_fopen(command,"rb"); + if (!file) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimg_instance + "save_medcon_external(): Failed to save file '%s' with external command 'medcon'.", + cimg_instance, + filename); + } + } + cimg::fclose(file); + std::rename(command,filename); + return *this; + } + + // Save image for non natively supported formats. + /** + \param filename Filename, as a C-string. + \param quality Image quality (expressed in percent), when the file format supports it. + \note + - The filename extension tells about the desired file format. + - This method tries to save the instance image as a file, using external tools from + ImageMagick or + GraphicsMagick. + At least one of these tool must be installed for the method to succeed. + - It is recommended to use the generic method save(const char*, int) const instead, + as it can handle some file formats natively. + **/ + const CImg& save_other(const char *const filename, const unsigned int quality=100) const { + if (!filename) + throw CImgArgumentException(_cimg_instance + "save_other(): Specified filename is (null).", + cimg_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + if (_depth>1) + cimg::warn(_cimg_instance + "save_other(): File '%s', saving a volumetric image with an external call to " + "ImageMagick or GraphicsMagick only writes the first image slice.", + cimg_instance,filename); + + const unsigned int omode = cimg::exception_mode(); + bool is_saved = true; + cimg::exception_mode(0); + try { save_magick(filename); } + catch (CImgException&) { + try { save_imagemagick_external(filename,quality); } + catch (CImgException&) { + try { save_graphicsmagick_external(filename,quality); } + catch (CImgException&) { + is_saved = false; + } + } + } + cimg::exception_mode(omode); + if (!is_saved) + throw CImgIOException(_cimg_instance + "save_other(): Failed to save file '%s'. Format is not natively supported, " + "and no external commands succeeded.", + cimg_instance, + filename); + return *this; + } + + //! Serialize a CImg instance into a raw CImg buffer. + /** + \param is_compressed tells if zlib compression must be used for serialization + (this requires 'cimg_use_zlib' been enabled). + **/ + CImg get_serialize(const bool is_compressed=false) const { + return CImgList(*this,true).get_serialize(is_compressed); + } + + // [internal] Return a 40x38 color logo of a 'danger' item. + static CImg _logo40x38() { + CImg res(40,38,1,3); + const unsigned char *ptrs = cimg::logo40x38; + T *ptr1 = res.data(0,0,0,0), *ptr2 = res.data(0,0,0,1), *ptr3 = res.data(0,0,0,2); + for (ulongT off = 0; off<(ulongT)res._width*res._height;) { + const unsigned char n = *(ptrs++), r = *(ptrs++), g = *(ptrs++), b = *(ptrs++); + for (unsigned int l = 0; l structure + # + # + # + #------------------------------------------ + */ + //! Represent a list of images CImg. + template + struct CImgList { + unsigned int _width, _allocated_width; + CImg *_data; + + //! Simple iterator type, to loop through each image of a list. + /** + \note + - The \c CImgList::iterator type is defined as a CImg*. + - You may use it like this: + \code + CImgList<> list; // Assuming this image list is not empty + for (CImgList<>::iterator it = list.begin(); it* iterator; + + //! Simple const iterator type, to loop through each image of a \c const list instance. + /** + \note + - The \c CImgList::const_iterator type is defined to be a const CImg*. + - Similar to CImgList::iterator, but for constant list instances. + **/ + typedef const CImg* const_iterator; + + //! Pixel value type. + /** + Refer to the pixels value type of the images in the list. + \note + - The \c CImgList::value_type type of a \c CImgList is defined to be a \c T. + It is then similar to CImg::value_type. + - \c CImgList::value_type is actually not used in %CImg methods. It has been mainly defined for + compatibility with STL naming conventions. + **/ + typedef T value_type; + + // Define common types related to template type T. + typedef typename cimg::superset::type Tbool; + typedef typename cimg::superset::type Tuchar; + typedef typename cimg::superset::type Tchar; + typedef typename cimg::superset::type Tushort; + typedef typename cimg::superset::type Tshort; + typedef typename cimg::superset::type Tuint; + typedef typename cimg::superset::type Tint; + typedef typename cimg::superset::type Tulong; + typedef typename cimg::superset::type Tlong; + typedef typename cimg::superset::type Tfloat; + typedef typename cimg::superset::type Tdouble; + typedef typename cimg::last::type boolT; + typedef typename cimg::last::type ucharT; + typedef typename cimg::last::type charT; + typedef typename cimg::last::type ushortT; + typedef typename cimg::last::type shortT; + typedef typename cimg::last::type uintT; + typedef typename cimg::last::type intT; + typedef typename cimg::last::type ulongT; + typedef typename cimg::last::type longT; + typedef typename cimg::last::type uint64T; + typedef typename cimg::last::type int64T; + typedef typename cimg::last::type floatT; + typedef typename cimg::last::type doubleT; + + //@} + //--------------------------- + // + //! \name Plugins + //@{ + //--------------------------- +#ifdef cimglist_plugin +#include cimglist_plugin +#endif +#ifdef cimglist_plugin1 +#include cimglist_plugin1 +#endif +#ifdef cimglist_plugin2 +#include cimglist_plugin2 +#endif +#ifdef cimglist_plugin3 +#include cimglist_plugin3 +#endif +#ifdef cimglist_plugin4 +#include cimglist_plugin4 +#endif +#ifdef cimglist_plugin5 +#include cimglist_plugin5 +#endif +#ifdef cimglist_plugin6 +#include cimglist_plugin6 +#endif +#ifdef cimglist_plugin7 +#include cimglist_plugin7 +#endif +#ifdef cimglist_plugin8 +#include cimglist_plugin8 +#endif + + //@} + //-------------------------------------------------------- + // + //! \name Constructors / Destructor / Instance Management + //@{ + //-------------------------------------------------------- + + //! Destructor. + /** + Destroy current list instance. + \note + - Any allocated buffer is deallocated. + - Destroying an empty list does nothing actually. + **/ + ~CImgList() { + delete[] _data; + } + + //! Default constructor. + /** + Construct a new empty list instance. + \note + - An empty list has no pixel data and its dimension width() is set to \c 0, as well as its + image buffer pointer data(). + - An empty list may be reassigned afterwards, with the family of the assign() methods. + In all cases, the type of pixels stays \c T. + **/ + CImgList(): + _width(0),_allocated_width(0),_data(0) {} + + //! Construct list containing empty images. + /** + \param n Number of empty images. + \note Useful when you know by advance the number of images you want to manage, as + it will allocate the right amount of memory for the list, without needs for reallocation + (that may occur when starting from an empty list and inserting several images in it). + **/ + explicit CImgList(const unsigned int n):_width(n) { + if (n) _data = new CImg[_allocated_width = std::max(16U,(unsigned int)cimg::nearest_pow2(n))]; + else { _allocated_width = 0; _data = 0; } + } + + //! Construct list containing images of specified size. + /** + \param n Number of images. + \param width Width of images. + \param height Height of images. + \param depth Depth of images. + \param spectrum Number of channels of images. + \note Pixel values are not initialized and may probably contain garbage. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height=1, + const unsigned int depth=1, const unsigned int spectrum=1): + _width(0),_allocated_width(0),_data(0) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum); + } + + //! Construct list containing images of specified size, and initialize pixel values. + /** + \param n Number of images. + \param width Width of images. + \param height Height of images. + \param depth Depth of images. + \param spectrum Number of channels of images. + \param val Initialization value for images pixels. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const T& val): + _width(0),_allocated_width(0),_data(0) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum,val); + } + + //! Construct list containing images of specified size, and initialize pixel values from a sequence of integers. + /** + \param n Number of images. + \param width Width of images. + \param height Height of images. + \param depth Depth of images. + \param spectrum Number of channels of images. + \param val0 First value of the initializing integers sequence. + \param val1 Second value of the initializing integers sequence. + \warning You must specify at least width*height*depth*spectrum values in your argument list, + or you will probably segfault. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const int val0, const int val1, ...): + _width(0),_allocated_width(0),_data(0) { +#define _CImgList_stdarg(t) { \ + assign(n,width,height,depth,spectrum); \ + const ulongT siz = (ulongT)width*height*depth*spectrum, nsiz = siz*n; \ + T *ptrd = _data->_data; \ + va_list ap; \ + va_start(ap,val1); \ + for (ulongT l = 0, s = 0, i = 0; iwidth*height*depth*spectrum values in your argument list, + or you will probably segfault. + **/ + CImgList(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const double val0, const double val1, ...): + _width(0),_allocated_width(0),_data(0) { + _CImgList_stdarg(double); + } + + //! Construct list containing copies of an input image. + /** + \param n Number of images. + \param img Input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of \c img. + **/ + template + CImgList(const unsigned int n, const CImg& img, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(n); + cimglist_apply(*this,assign)(img,is_shared); + } + + //! Construct list from one image. + /** + \param img Input image to copy in the constructed list. + \param is_shared Tells if the element of the list is a shared or non-shared copy of \c img. + **/ + template + explicit CImgList(const CImg& img, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(1); + _data[0].assign(img,is_shared); + } + + //! Construct list from two images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(2); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); + } + + //! Construct list from three images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(3); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + } + + //! Construct list from four images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(4); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); + } + + //! Construct list from five images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(5); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); + } + + //! Construct list from six images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param img6 Sixth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(6); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + } + + //! Construct list from seven images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param img6 Sixth input image to copy in the constructed list. + \param img7 Seventh input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(7); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); + } + + //! Construct list from eight images. + /** + \param img1 First input image to copy in the constructed list. + \param img2 Second input image to copy in the constructed list. + \param img3 Third input image to copy in the constructed list. + \param img4 Fourth input image to copy in the constructed list. + \param img5 Fifth input image to copy in the constructed list. + \param img6 Sixth input image to copy in the constructed list. + \param img7 Seventh input image to copy in the constructed list. + \param img8 Eighth input image to copy in the constructed list. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const CImg& img8, + const bool is_shared=false): + _width(0),_allocated_width(0),_data(0) { + assign(8); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); _data[7].assign(img8,is_shared); + } + + //! Construct list copy. + /** + \param list Input list to copy. + \note The shared state of each element of the constructed list is kept the same as in \c list. + **/ + template + CImgList(const CImgList& list):_width(0),_allocated_width(0),_data(0) { + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],false); + } + + //! Construct list copy \specialization. + CImgList(const CImgList& list):_width(0),_allocated_width(0),_data(0) { + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],list[l]._is_shared); + } + + //! Construct list copy, and force the shared state of the list elements. + /** + \param list Input list to copy. + \param is_shared Tells if the elements of the list are shared or non-shared copies of input images. + **/ + template + CImgList(const CImgList& list, const bool is_shared):_width(0),_allocated_width(0),_data(0) { + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],is_shared); + } + + //! Construct list by reading the content of a file. + /** + \param filename Filename, as a C-string. + **/ + explicit CImgList(const char *const filename):_width(0),_allocated_width(0),_data(0) { + assign(filename); + } + + //! Construct list from the content of a display window. + /** + \param disp Display window to get content from. + \note Constructed list contains a single image only. + **/ + explicit CImgList(const CImgDisplay& disp):_width(0),_allocated_width(0),_data(0) { + assign(disp); + } + + //! Return a list with elements being shared copies of images in the list instance. + /** + \note list2 = list1.get_shared() is equivalent to list2.assign(list1,true). + **/ + CImgList get_shared() { + CImgList res(_width); + cimglist_for(*this,l) res[l].assign(_data[l],true); + return res; + } + + //! Return a list with elements being shared copies of images in the list instance \const. + const CImgList get_shared() const { + CImgList res(_width); + cimglist_for(*this,l) res[l].assign(_data[l],true); + return res; + } + + //! Destructor \inplace. + /** + \see CImgList(). + **/ + CImgList& assign() { + delete[] _data; + _width = _allocated_width = 0; + _data = 0; + return *this; + } + + //! Destructor \inplace. + /** + Equivalent to assign(). + \note Only here for compatibility with STL naming conventions. + **/ + CImgList& clear() { + return assign(); + } + + //! Construct list containing empty images \inplace. + /** + \see CImgList(unsigned int). + **/ + CImgList& assign(const unsigned int n) { + if (!n) return assign(); + if (_allocated_width(n<<2)) { + delete[] _data; + _data = new CImg[_allocated_width = std::max(16U,(unsigned int)cimg::nearest_pow2(n))]; + } + _width = n; + return *this; + } + + //! Construct list containing images of specified size \inplace. + /** + \see CImgList(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height=1, + const unsigned int depth=1, const unsigned int spectrum=1) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum); + return *this; + } + + //! Construct list containing images of specified size, and initialize pixel values \inplace. + /** + \see CImgList(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, const T). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const T& val) { + assign(n); + cimglist_apply(*this,assign)(width,height,depth,spectrum,val); + return *this; + } + + //! Construct list with images of specified size, and initialize pixel values from a sequence of integers \inplace. + /** + \see CImgList(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, const int, const int, ...). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, const int val0, const int val1, ...) { + _CImgList_stdarg(int); + return *this; + } + + //! Construct list with images of specified size, and initialize pixel values from a sequence of doubles \inplace. + /** + \see CImgList(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,const double,const double,...). + **/ + CImgList& assign(const unsigned int n, const unsigned int width, const unsigned int height, + const unsigned int depth, const unsigned int spectrum, + const double val0, const double val1, ...) { + _CImgList_stdarg(double); + return *this; + } + + //! Construct list containing copies of an input image \inplace. + /** + \see CImgList(unsigned int, const CImg&, bool). + **/ + template + CImgList& assign(const unsigned int n, const CImg& img, const bool is_shared=false) { + assign(n); + cimglist_apply(*this,assign)(img,is_shared); + return *this; + } + + //! Construct list from one image \inplace. + /** + \see CImgList(const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img, const bool is_shared=false) { + assign(1); + _data[0].assign(img,is_shared); + return *this; + } + + //! Construct list from two images \inplace. + /** + \see CImgList(const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const bool is_shared=false) { + assign(2); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); + return *this; + } + + //! Construct list from three images \inplace. + /** + \see CImgList(const CImg&, const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const bool is_shared=false) { + assign(3); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + return *this; + } + + //! Construct list from four images \inplace. + /** + \see CImgList(const CImg&, const CImg&, const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const bool is_shared=false) { + assign(4); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); + return *this; + } + + //! Construct list from five images \inplace. + /** + \see CImgList(const CImg&, const CImg&, const CImg&, const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const bool is_shared=false) { + assign(5); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); + return *this; + } + + //! Construct list from six images \inplace. + /** + \see CImgList(const CImg&,const CImg&,const CImg&,const CImg&,const CImg&,const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const bool is_shared=false) { + assign(6); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + return *this; + } + + //! Construct list from seven images \inplace. + /** + \see CImgList(const CImg&,const CImg&,const CImg&,const CImg&,const CImg&,const CImg&, + const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const bool is_shared=false) { + assign(7); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); + return *this; + } + + //! Construct list from eight images \inplace. + /** + \see CImgList(const CImg&,const CImg&,const CImg&,const CImg&,const CImg&,const CImg&, + const CImg&, const CImg&, bool). + **/ + template + CImgList& assign(const CImg& img1, const CImg& img2, const CImg& img3, const CImg& img4, + const CImg& img5, const CImg& img6, const CImg& img7, const CImg& img8, + const bool is_shared=false) { + assign(8); + _data[0].assign(img1,is_shared); _data[1].assign(img2,is_shared); _data[2].assign(img3,is_shared); + _data[3].assign(img4,is_shared); _data[4].assign(img5,is_shared); _data[5].assign(img6,is_shared); + _data[6].assign(img7,is_shared); _data[7].assign(img8,is_shared); + return *this; + } + + //! Construct list as a copy of an existing list and force the shared state of the list elements \inplace. + /** + \see CImgList(const CImgList&, bool is_shared). + **/ + template + CImgList& assign(const CImgList& list, const bool is_shared=false) { + cimg::unused(is_shared); + assign(list._width); + cimglist_for(*this,l) _data[l].assign(list[l],false); + return *this; + } + + //! Construct list as a copy of an existing list and force shared state of elements \inplace \specialization. + CImgList& assign(const CImgList& list, const bool is_shared=false) { + if (this==&list) return *this; + CImgList res(list._width); + cimglist_for(res,l) res[l].assign(list[l],is_shared); + return res.move_to(*this); + } + + //! Construct list by reading the content of a file \inplace. + /** + \see CImgList(const char *const). + **/ + CImgList& assign(const char *const filename) { + return load(filename); + } + + //! Construct list from the content of a display window \inplace. + /** + \see CImgList(const CImgDisplay&). + **/ + CImgList& assign(const CImgDisplay &disp) { + return assign(CImg(disp)); + } + + //! Transfer the content of the list instance to another list. + /** + \param list Destination list. + \note When returning, the current list instance is empty and the initial content of \c list is destroyed. + **/ + template + CImgList& move_to(CImgList& list) { + list.assign(_width); + bool is_one_shared_element = false; + cimglist_for(*this,l) is_one_shared_element|=_data[l]._is_shared; + if (is_one_shared_element) cimglist_for(*this,l) list[l].assign(_data[l]); + else cimglist_for(*this,l) _data[l].move_to(list[l]); + assign(); + return list; + } + + //! Transfer the content of the list instance at a specified position in another list. + /** + \param list Destination list. + \param pos Index of the insertion in the list. + \note When returning, the list instance is empty and the initial content of \c list is preserved + (only images indexes may be modified). + **/ + template + CImgList& move_to(CImgList& list, const unsigned int pos) { + if (is_empty()) return list; + const unsigned int npos = pos>list._width?list._width:pos; + list.insert(_width,npos); + bool is_one_shared_element = false; + cimglist_for(*this,l) is_one_shared_element|=_data[l]._is_shared; + if (is_one_shared_element) cimglist_for(*this,l) list[npos + l].assign(_data[l]); + else cimglist_for(*this,l) _data[l].move_to(list[npos + l]); + assign(); + return list; + } + + //! Swap all fields between two list instances. + /** + \param list List to swap fields with. + \note Can be used to exchange the content of two lists in a fast way. + **/ + CImgList& swap(CImgList& list) { + cimg::swap(_width,list._width,_allocated_width,list._allocated_width); + cimg::swap(_data,list._data); + return list; + } + + //! Return a reference to an empty list. + /** + \note Can be used to define default values in a function taking a CImgList as an argument. + \code + void f(const CImgList& list=CImgList::empty()); + \endcode + **/ + static CImgList& empty() { + static CImgList _empty; + return _empty.assign(); + } + + //! Return a reference to an empty list \const. + static const CImgList& const_empty() { + static const CImgList _empty; + return _empty; + } + + //@} + //------------------------------------------ + // + //! \name Overloaded Operators + //@{ + //------------------------------------------ + + //! Return a reference to one image element of the list. + /** + \param pos Index of the image element. + **/ + CImg& operator()(const unsigned int pos) { +#if cimg_verbosity>=3 + if (pos>=_width) { + cimg::warn(_cimglist_instance + "operator(): Invalid image request, at position [%u].", + cimglist_instance, + pos); + return *_data; + } +#endif + return _data[pos]; + } + + //! Return a reference to one image of the list. + /** + \param pos Index of the image element. + **/ + const CImg& operator()(const unsigned int pos) const { + return const_cast*>(this)->operator()(pos); + } + + //! Return a reference to one pixel value of one image of the list. + /** + \param pos Index of the image element. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list(n,x,y,z,c) is equivalent to list[n](x,y,z,c). + **/ + T& operator()(const unsigned int pos, const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) { + return (*this)[pos](x,y,z,c); + } + + //! Return a reference to one pixel value of one image of the list \const. + const T& operator()(const unsigned int pos, const unsigned int x, const unsigned int y=0, + const unsigned int z=0, const unsigned int c=0) const { + return (*this)[pos](x,y,z,c); + } + + //! Return pointer to the first image of the list. + /** + \note Images in a list are stored as a buffer of \c CImg. + **/ + operator CImg*() { + return _data; + } + + //! Return pointer to the first image of the list \const. + operator const CImg*() const { + return _data; + } + + //! Construct list from one image \inplace. + /** + \param img Input image to copy in the constructed list. + \note list = img; is equivalent to list.assign(img);. + **/ + template + CImgList& operator=(const CImg& img) { + return assign(img); + } + + //! Construct list from another list. + /** + \param list Input list to copy. + \note list1 = list2 is equivalent to list1.assign(list2);. + **/ + template + CImgList& operator=(const CImgList& list) { + return assign(list); + } + + //! Construct list from another list \specialization. + CImgList& operator=(const CImgList& list) { + return assign(list); + } + + //! Construct list by reading the content of a file \inplace. + /** + \see CImgList(const char *const). + **/ + CImgList& operator=(const char *const filename) { + return assign(filename); + } + + //! Construct list from the content of a display window \inplace. + /** + \see CImgList(const CImgDisplay&). + **/ + CImgList& operator=(const CImgDisplay& disp) { + return assign(disp); + } + + //! Return a non-shared copy of a list. + /** + \note +list is equivalent to CImgList(list,false). + It forces the copy to have non-shared elements. + **/ + CImgList operator+() const { + return CImgList(*this,false); + } + + //! Return a copy of the list instance, where image \c img has been inserted at the end. + /** + \param img Image inserted at the end of the instance copy. + \note Define a convenient way to create temporary lists of images, as in the following code: + \code + (img1,img2,img3,img4).display("My four images"); + \endcode + **/ + template + CImgList& operator,(const CImg& img) { + return insert(img); + } + + //! Return a copy of the list instance, where image \c img has been inserted at the end \const. + template + CImgList operator,(const CImg& img) const { + return (+*this).insert(img); + } + + //! Return a copy of the list instance, where all elements of input list \c list have been inserted at the end. + /** + \param list List inserted at the end of the instance copy. + **/ + template + CImgList& operator,(const CImgList& list) { + return insert(list); + } + + //! Return a copy of the list instance, where all elements of input \c list have been inserted at the end \const. + template + CImgList& operator,(const CImgList& list) const { + return (+*this).insert(list); + } + + //! Return image corresponding to the appending of all images of the instance list along specified axis. + /** + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \note list>'x' is equivalent to list.get_append('x'). + **/ + CImg operator>(const char axis) const { + return get_append(axis,0); + } + + //! Return list corresponding to the splitting of all images of the instance list along specified axis. + /** + \param axis Axis used for image splitting. + \note list<'x' is equivalent to list.get_split('x'). + **/ + CImgList operator<(const char axis) const { + return get_split(axis); + } + + //@} + //------------------------------------- + // + //! \name Instance Characteristics + //@{ + //------------------------------------- + + //! Return the type of image pixel values as a C string. + /** + Return a \c char* string containing the usual type name of the image pixel values + (i.e. a stringified version of the template parameter \c T). + \note + - The returned string may contain spaces (as in \c "unsigned char"). + - If the pixel type \c T does not correspond to a registered type, the string "unknown" is returned. + **/ + static const char* pixel_type() { + return cimg::type::string(); + } + + //! Return the size of the list, i.e. the number of images contained in it. + /** + \note Similar to size() but returns result as a (signed) integer. + **/ + int width() const { + return (int)_width; + } + + //! Return the size of the list, i.e. the number of images contained in it. + /** + \note Similar to width() but returns result as an unsigned integer. + **/ + unsigned int size() const { + return _width; + } + + //! Return pointer to the first image of the list. + /** + \note Images in a list are stored as a buffer of \c CImg. + **/ + CImg *data() { + return _data; + } + + //! Return pointer to the first image of the list \const. + const CImg *data() const { + return _data; + } + + //! Return pointer to the pos-th image of the list. + /** + \param pos Index of the image element to access. + \note list.data(n); is equivalent to list.data + n;. + **/ +#if cimg_verbosity>=3 + CImg *data(const unsigned int pos) { + if (pos>=size()) + cimg::warn(_cimglist_instance + "data(): Invalid pointer request, at position [%u].", + cimglist_instance, + pos); + return _data + pos; + } + + const CImg *data(const unsigned int l) const { + return const_cast*>(this)->data(l); + } +#else + CImg *data(const unsigned int l) { + return _data + l; + } + + //! Return pointer to the pos-th image of the list \const. + const CImg *data(const unsigned int l) const { + return _data + l; + } +#endif + + //! Return iterator to the first image of the list. + /** + **/ + iterator begin() { + return _data; + } + + //! Return iterator to the first image of the list \const. + const_iterator begin() const { + return _data; + } + + //! Return iterator to one position after the last image of the list. + /** + **/ + iterator end() { + return _data + _width; + } + + //! Return iterator to one position after the last image of the list \const. + const_iterator end() const { + return _data + _width; + } + + //! Return reference to the first image of the list. + /** + **/ + CImg& front() { + return *_data; + } + + //! Return reference to the first image of the list \const. + const CImg& front() const { + return *_data; + } + + //! Return a reference to the last image of the list. + /** + **/ + const CImg& back() const { + return *(_data + _width - 1); + } + + //! Return a reference to the last image of the list \const. + CImg& back() { + return *(_data + _width - 1); + } + + //! Return pos-th image of the list. + /** + \param pos Index of the image element to access. + **/ + CImg& at(const int pos) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "at(): Empty instance.", + cimglist_instance); + + return _data[cimg::cut(pos,0,width() - 1)]; + } + + //! Access to pixel value with Dirichlet boundary conditions. + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZC(p,x,y,z,c); is equivalent to list[p].atXYZC(x,y,z,c);. + **/ + T& atNXYZC(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atXYZC(x,y,z,c,out_value); + } + + //! Access to pixel value with Dirichlet boundary conditions \const. + T atNXYZC(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atXYZC(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions. + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZC(p,x,y,z,c); is equivalent to list[p].atXYZC(x,y,z,c);. + **/ + T& atNXYZC(const int pos, const int x, const int y, const int z, const int c) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZC(): Empty instance.", + cimglist_instance); + + return _atNXYZC(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions \const. + T atNXYZC(const int pos, const int x, const int y, const int z, const int c) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZC(): Empty instance.", + cimglist_instance); + + return _atNXYZC(pos,x,y,z,c); + } + + T& _atNXYZC(const int pos, const int x, const int y, const int z, const int c) { + return _data[cimg::cut(pos,0,width() - 1)].atXYZC(x,y,z,c); + } + + T _atNXYZC(const int pos, const int x, const int y, const int z, const int c) const { + return _data[cimg::cut(pos,0,width() - 1)].atXYZC(x,y,z,c); + } + + //! Access pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y,\c z). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXYZ(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atXYZ(x,y,z,c,out_value); + } + + //! Access pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y,\c z) \const. + T atNXYZ(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atXYZ(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions for the 4 coordinates (\c pos, \c x,\c y,\c z). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZ(): Empty instance.", + cimglist_instance); + + return _atNXYZ(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions for the 4 coordinates (\c pos, \c x,\c y,\c z) \const. + T atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXYZ(): Empty instance.", + cimglist_instance); + + return _atNXYZ(pos,x,y,z,c); + } + + T& _atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)].atXYZ(x,y,z,c); + } + + T _atNXYZ(const int pos, const int x, const int y, const int z, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)].atXYZ(x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXY(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atXY(x,y,z,c,out_value); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 3 coordinates (\c pos, \c x,\c y) \const. + T atNXY(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atXY(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions for the 3 coordinates (\c pos, \c x,\c y). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXY(): Empty instance.", + cimglist_instance); + + return _atNXY(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions for the 3 coordinates (\c pos, \c x,\c y) \const. + T atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNXY(): Empty instance.", + cimglist_instance); + + return _atNXY(pos,x,y,z,c); + } + + T& _atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)].atXY(x,y,z,c); + } + + T _atNXY(const int pos, const int x, const int y, const int z=0, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)].atXY(x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 2 coordinates (\c pos,\c x). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNX(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):_data[pos].atX(x,y,z,c,out_value); + } + + //! Access to pixel value with Dirichlet boundary conditions for the 2 coordinates (\c pos,\c x) \const. + T atNX(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:_data[pos].atX(x,y,z,c,out_value); + } + + //! Access to pixel value with Neumann boundary conditions for the 2 coordinates (\c pos, \c x). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNX(): Empty instance.", + cimglist_instance); + + return _atNX(pos,x,y,z,c); + } + + //! Access to pixel value with Neumann boundary conditions for the 2 coordinates (\c pos, \c x) \const. + T atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atNX(): Empty instance.", + cimglist_instance); + + return _atNX(pos,x,y,z,c); + } + + T& _atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)].atX(x,y,z,c); + } + + T _atNX(const int pos, const int x, const int y=0, const int z=0, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)].atX(x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the coordinate (\c pos). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \param out_value Default value returned if \c offset is outside image bounds. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atN(const int pos, const int x, const int y, const int z, const int c, const T& out_value) { + return (pos<0 || pos>=width())?(cimg::temporary(out_value)=out_value):(*this)(pos,x,y,z,c); + } + + //! Access to pixel value with Dirichlet boundary conditions for the coordinate (\c pos) \const. + T atN(const int pos, const int x, const int y, const int z, const int c, const T& out_value) const { + return (pos<0 || pos>=width())?out_value:(*this)(pos,x,y,z,c); + } + + //! Return pixel value with Neumann boundary conditions for the coordinate (\c pos). + /** + \param pos Index of the image element to access. + \param x X-coordinate of the pixel value. + \param y Y-coordinate of the pixel value. + \param z Z-coordinate of the pixel value. + \param c C-coordinate of the pixel value. + \note list.atNXYZ(p,x,y,z,c); is equivalent to list[p].atXYZ(x,y,z,c);. + **/ + T& atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atN(): Empty instance.", + cimglist_instance); + return _atN(pos,x,y,z,c); + } + + //! Return pixel value with Neumann boundary conditions for the coordinate (\c pos) \const. + T atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "atN(): Empty instance.", + cimglist_instance); + return _atN(pos,x,y,z,c); + } + + T& _atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) { + return _data[cimg::cut(pos,0,width() - 1)](x,y,z,c); + } + + T _atN(const int pos, const int x=0, const int y=0, const int z=0, const int c=0) const { + return _data[cimg::cut(pos,0,width() - 1)](x,y,z,c); + } + + //@} + //------------------------------------- + // + //! \name Instance Checking + //@{ + //------------------------------------- + + //! Return \c true if list is empty. + /** + **/ + bool is_empty() const { + return (!_data || !_width); + } + + //! Test if number of image elements is equal to specified value. + /** + \param size_n Number of image elements to test. + **/ + bool is_sameN(const unsigned int size_n) const { + return _width==size_n; + } + + //! Test if number of image elements is equal between two images lists. + /** + \param list Input list to compare with. + **/ + template + bool is_sameN(const CImgList& list) const { + return is_sameN(list._width); + } + + // Define useful functions to check list dimensions. + // (cannot be documented because macro-generated). +#define _cimglist_def_is_same1(axis) \ + bool is_same##axis(const unsigned int val) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis(val); \ + return res; \ + } \ + bool is_sameN##axis(const unsigned int n, const unsigned int val) const { \ + return is_sameN(n) && is_same##axis(val); \ + } \ + +#define _cimglist_def_is_same2(axis1,axis2) \ + bool is_same##axis1##axis2(const unsigned int val1, const unsigned int val2) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis1##axis2(val1,val2); \ + return res; \ + } \ + bool is_sameN##axis1##axis2(const unsigned int n, const unsigned int val1, const unsigned int val2) const { \ + return is_sameN(n) && is_same##axis1##axis2(val1,val2); \ + } \ + +#define _cimglist_def_is_same3(axis1,axis2,axis3) \ + bool is_same##axis1##axis2##axis3(const unsigned int val1, const unsigned int val2, \ + const unsigned int val3) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis1##axis2##axis3(val1,val2,val3); \ + return res; \ + } \ + bool is_sameN##axis1##axis2##axis3(const unsigned int n, const unsigned int val1, \ + const unsigned int val2, const unsigned int val3) const { \ + return is_sameN(n) && is_same##axis1##axis2##axis3(val1,val2,val3); \ + } \ + +#define _cimglist_def_is_same(axis) \ + template bool is_same##axis(const CImg& img) const { \ + bool res = true; \ + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_same##axis(img); \ + return res; \ + } \ + template bool is_same##axis(const CImgList& list) const { \ + const unsigned int lmin = std::min(_width,list._width); \ + bool res = true; \ + for (unsigned int l = 0; l bool is_sameN##axis(const unsigned int n, const CImg& img) const { \ + return (is_sameN(n) && is_same##axis(img)); \ + } \ + template bool is_sameN##axis(const CImgList& list) const { \ + return (is_sameN(list) && is_same##axis(list)); \ + } + + _cimglist_def_is_same(XY) + _cimglist_def_is_same(XZ) + _cimglist_def_is_same(XC) + _cimglist_def_is_same(YZ) + _cimglist_def_is_same(YC) + _cimglist_def_is_same(XYZ) + _cimglist_def_is_same(XYC) + _cimglist_def_is_same(YZC) + _cimglist_def_is_same(XYZC) + _cimglist_def_is_same1(X) + _cimglist_def_is_same1(Y) + _cimglist_def_is_same1(Z) + _cimglist_def_is_same1(C) + _cimglist_def_is_same2(X,Y) + _cimglist_def_is_same2(X,Z) + _cimglist_def_is_same2(X,C) + _cimglist_def_is_same2(Y,Z) + _cimglist_def_is_same2(Y,C) + _cimglist_def_is_same2(Z,C) + _cimglist_def_is_same3(X,Y,Z) + _cimglist_def_is_same3(X,Y,C) + _cimglist_def_is_same3(X,Z,C) + _cimglist_def_is_same3(Y,Z,C) + + //! Test if dimensions of each image of the list match specified arguments. + /** + \param dx Checked image width. + \param dy Checked image height. + \param dz Checked image depth. + \param dc Checked image spectrum. + **/ + bool is_sameXYZC(const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) const { + bool res = true; + for (unsigned int l = 0; l<_width && res; ++l) res = _data[l].is_sameXYZC(dx,dy,dz,dc); + return res; + } + + //! Test if list dimensions match specified arguments. + /** + \param n Number of images in the list. + \param dx Checked image width. + \param dy Checked image height. + \param dz Checked image depth. + \param dc Checked image spectrum. + **/ + bool is_sameNXYZC(const unsigned int n, + const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) const { + return is_sameN(n) && is_sameXYZC(dx,dy,dz,dc); + } + + //! Test if list contains one particular pixel location. + /** + \param n Index of the image whom checked pixel value belong to. + \param x X-coordinate of the checked pixel value. + \param y Y-coordinate of the checked pixel value. + \param z Z-coordinate of the checked pixel value. + \param c C-coordinate of the checked pixel value. + **/ + bool containsNXYZC(const int n, const int x=0, const int y=0, const int z=0, const int c=0) const { + if (is_empty()) return false; + return n>=0 && n=0 && x<_data[n].width() && y>=0 && y<_data[n].height() && + z>=0 && z<_data[n].depth() && c>=0 && c<_data[n].spectrum(); + } + + //! Test if list contains image with specified index. + /** + \param n Index of the checked image. + **/ + bool containsN(const int n) const { + if (is_empty()) return false; + return n>=0 && n + bool contains(const T& pixel, t& n, t& x, t&y, t& z, t& c) const { + if (is_empty()) return false; + cimglist_for(*this,l) if (_data[l].contains(pixel,x,y,z,c)) { n = (t)l; return true; } + return false; + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \param[out] x X-coordinate of the pixel value, if test succeeds. + \param[out] y Y-coordinate of the pixel value, if test succeeds. + \param[out] z Z-coordinate of the pixel value, if test succeeds. + \note If true, set coordinates (n,x,y,z). + **/ + template + bool contains(const T& pixel, t& n, t& x, t&y, t& z) const { + t c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \param[out] x X-coordinate of the pixel value, if test succeeds. + \param[out] y Y-coordinate of the pixel value, if test succeeds. + \note If true, set coordinates (n,x,y). + **/ + template + bool contains(const T& pixel, t& n, t& x, t&y) const { + t z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \param[out] x X-coordinate of the pixel value, if test succeeds. + \note If true, set coordinates (n,x). + **/ + template + bool contains(const T& pixel, t& n, t& x) const { + t y, z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + \param[out] n Index of image containing the pixel value, if test succeeds. + \note If true, set coordinates (n). + **/ + template + bool contains(const T& pixel, t& n) const { + t x, y, z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if one of the image list contains the specified referenced value. + /** + \param pixel Reference to pixel value to test. + **/ + bool contains(const T& pixel) const { + unsigned int n, x, y, z, c; + return contains(pixel,n,x,y,z,c); + } + + //! Test if the list contains the image 'img'. + /** + \param img Reference to image to test. + \param[out] n Index of image in the list, if test succeeds. + \note If true, returns the position (n) of the image in the list. + **/ + template + bool contains(const CImg& img, t& n) const { + if (is_empty()) return false; + const CImg *const ptr = &img; + cimglist_for(*this,i) if (_data + i==ptr) { n = (t)i; return true; } + return false; + } + + //! Test if the list contains the image img. + /** + \param img Reference to image to test. + **/ + bool contains(const CImg& img) const { + unsigned int n; + return contains(img,n); + } + + //@} + //------------------------------------- + // + //! \name Mathematical Functions + //@{ + //------------------------------------- + + //! Return a reference to the minimum pixel value of the instance list. + /** + **/ + T& min() { + bool is_all_empty = true; + T *ptr_min = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_min = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "min(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_min; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs>max_value) max_value = *(ptr_max=ptrs); + } + return *ptr_max; + } + + //! Return a reference to the maximum pixel value of the instance list \const. + const T& max() const { + bool is_all_empty = true; + T *ptr_max = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_max = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "max(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T max_value = *ptr_max; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) if (*ptrs>max_value) max_value = *(ptr_max=ptrs); + } + return *ptr_max; + } + + //! Return a reference to the minimum pixel value of the instance list and return the maximum vvalue as well. + /** + \param[out] max_val Value of the maximum value found. + **/ + template + T& min_max(t& max_val) { + bool is_all_empty = true; + T *ptr_min = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_min = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "min_max(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_min, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the minimum pixel value of the instance list and return the maximum vvalue as well \const. + /** + \param[out] max_val Value of the maximum value found. + **/ + template + const T& min_max(t& max_val) const { + bool is_all_empty = true; + T *ptr_min = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_min = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "min_max(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_min, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (valmax_value) max_value = val; + } + } + max_val = (t)max_value; + return *ptr_min; + } + + //! Return a reference to the minimum pixel value of the instance list and return the minimum value as well. + /** + \param[out] min_val Value of the minimum value found. + **/ + template + T& max_min(t& min_val) { + bool is_all_empty = true; + T *ptr_max = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_max = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "max_min(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_max, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val + const T& max_min(t& min_val) const { + bool is_all_empty = true; + T *ptr_max = 0; + cimglist_for(*this,l) if (!_data[l].is_empty()) { + ptr_max = _data[l]._data; + is_all_empty = false; + break; + } + if (is_all_empty) + throw CImgInstanceException(_cimglist_instance + "max_min(): %s.", + _data?"List of empty images":"Empty instance", + cimglist_instance); + T min_value = *ptr_max, max_value = min_value; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_for(img,ptrs,T) { + const T val = *ptrs; + if (val>max_value) { max_value = val; ptr_max = ptrs; } + if (val + CImgList& insert(const CImg& img, const unsigned int pos=~0U, const bool is_shared=false) { + const unsigned int npos = pos==~0U?_width:pos; + if (npos>_width) + throw CImgArgumentException(_cimglist_instance + "insert(): Invalid insertion request of specified image (%u,%u,%u,%u,%p) " + "at position %u.", + cimglist_instance, + img._width,img._height,img._depth,img._spectrum,img._data,npos); + if (is_shared) + throw CImgArgumentException(_cimglist_instance + "insert(): Invalid insertion request of specified shared image " + "CImg<%s>(%u,%u,%u,%u,%p) at position %u (pixel types are different).", + cimglist_instance, + img.pixel_type(),img._width,img._height,img._depth,img._spectrum,img._data,npos); + + CImg *const new_data = (++_width>_allocated_width)?new CImg[_allocated_width?(_allocated_width<<=1): + (_allocated_width=16)]:0; + if (!_data) { // Insert new element into empty list + _data = new_data; + *_data = img; + } else { + if (new_data) { // Insert with re-allocation + if (npos) std::memcpy((void*)new_data,(void*)_data,sizeof(CImg)*npos); + if (npos!=_width - 1) + std::memcpy((void*)(new_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + std::memset((void*)_data,0,sizeof(CImg)*(_width - 1)); + delete[] _data; + _data = new_data; + } else if (npos!=_width - 1) // Insert without re-allocation + std::memmove((void*)(_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + _data[npos]._width = _data[npos]._height = _data[npos]._depth = _data[npos]._spectrum = 0; + _data[npos]._data = 0; + _data[npos] = img; + } + return *this; + } + + //! Insert a copy of the image \c img into the current image list, at position \c pos \specialization. + CImgList& insert(const CImg& img, const unsigned int pos=~0U, const bool is_shared=false) { + const unsigned int npos = pos==~0U?_width:pos; + if (npos>_width) + throw CImgArgumentException(_cimglist_instance + "insert(): Invalid insertion request of specified image (%u,%u,%u,%u,%p) " + "at position %u.", + cimglist_instance, + img._width,img._height,img._depth,img._spectrum,img._data,npos); + CImg *const new_data = (++_width>_allocated_width)?new CImg[_allocated_width?(_allocated_width<<=1): + (_allocated_width=16)]:0; + if (!_data) { // Insert new element into empty list + _data = new_data; + if (is_shared && img) { + _data->_width = img._width; + _data->_height = img._height; + _data->_depth = img._depth; + _data->_spectrum = img._spectrum; + _data->_is_shared = true; + _data->_data = img._data; + } else *_data = img; + } + else { + if (new_data) { // Insert with re-allocation + if (npos) std::memcpy((void*)new_data,(void*)_data,sizeof(CImg)*npos); + if (npos!=_width - 1) + std::memcpy((void*)(new_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + if (is_shared && img) { + new_data[npos]._width = img._width; + new_data[npos]._height = img._height; + new_data[npos]._depth = img._depth; + new_data[npos]._spectrum = img._spectrum; + new_data[npos]._is_shared = true; + new_data[npos]._data = img._data; + } else { + new_data[npos]._width = new_data[npos]._height = new_data[npos]._depth = new_data[npos]._spectrum = 0; + new_data[npos]._data = 0; + new_data[npos] = img; + } + std::memset((void*)_data,0,sizeof(CImg)*(_width - 1)); + delete[] _data; + _data = new_data; + } else { // Insert without re-allocation + if (npos!=_width - 1) + std::memmove((void*)(_data + npos + 1),(void*)(_data + npos),sizeof(CImg)*(_width - 1 - npos)); + if (is_shared && img) { + _data[npos]._width = img._width; + _data[npos]._height = img._height; + _data[npos]._depth = img._depth; + _data[npos]._spectrum = img._spectrum; + _data[npos]._is_shared = true; + _data[npos]._data = img._data; + } else { + _data[npos]._width = _data[npos]._height = _data[npos]._depth = _data[npos]._spectrum = 0; + _data[npos]._data = 0; + _data[npos] = img; + } + } + } + return *this; + } + + //! Insert a copy of the image \c img into the current image list, at position \c pos \newinstance. + template + CImgList get_insert(const CImg& img, const unsigned int pos=~0U, const bool is_shared=false) const { + return (+*this).insert(img,pos,is_shared); + } + + //! Insert n empty images img into the current image list, at position \p pos. + /** + \param n Number of empty images to insert. + \param pos Index of the insertion. + **/ + CImgList& insert(const unsigned int n, const unsigned int pos=~0U) { + CImg empty; + if (!n) return *this; + const unsigned int npos = pos==~0U?_width:pos; + for (unsigned int i = 0; i get_insert(const unsigned int n, const unsigned int pos=~0U) const { + return (+*this).insert(n,pos); + } + + //! Insert \c n copies of the image \c img into the current image list, at position \c pos. + /** + \param n Number of image copies to insert. + \param img Image to insert by copy. + \param pos Index of the insertion. + \param is_shared Tells if inserted images are shared copies of \c img or not. + **/ + template + CImgList& insert(const unsigned int n, const CImg& img, const unsigned int pos=~0U, + const bool is_shared=false) { + if (!n) return *this; + const unsigned int npos = pos==~0U?_width:pos; + insert(img,npos,is_shared); + for (unsigned int i = 1; i + CImgList get_insert(const unsigned int n, const CImg& img, const unsigned int pos=~0U, + const bool is_shared=false) const { + return (+*this).insert(n,img,pos,is_shared); + } + + //! Insert a copy of the image list \c list into the current image list, starting from position \c pos. + /** + \param list Image list to insert. + \param pos Index of the insertion. + \param is_shared Tells if inserted images are shared copies of images of \c list or not. + **/ + template + CImgList& insert(const CImgList& list, const unsigned int pos=~0U, const bool is_shared=false) { + const unsigned int npos = pos==~0U?_width:pos; + if ((void*)this!=(void*)&list) cimglist_for(list,l) insert(list[l],npos + l,is_shared); + else insert(CImgList(list),npos,is_shared); + return *this; + } + + //! Insert a copy of the image list \c list into the current image list, starting from position \c pos \newinstance. + template + CImgList get_insert(const CImgList& list, const unsigned int pos=~0U, const bool is_shared=false) const { + return (+*this).insert(list,pos,is_shared); + } + + //! Insert n copies of the list \c list at position \c pos of the current list. + /** + \param n Number of list copies to insert. + \param list Image list to insert. + \param pos Index of the insertion. + \param is_shared Tells if inserted images are shared copies of images of \c list or not. + **/ + template + CImgList& insert(const unsigned int n, const CImgList& list, const unsigned int pos=~0U, + const bool is_shared=false) { + if (!n) return *this; + const unsigned int npos = pos==~0U?_width:pos; + for (unsigned int i = 0; i + CImgList get_insert(const unsigned int n, const CImgList& list, const unsigned int pos=~0U, + const bool is_shared=false) const { + return (+*this).insert(n,list,pos,is_shared); + } + + //! Remove all images between from indexes. + /** + \param pos1 Starting index of the removal. + \param pos2 Ending index of the removal. + **/ + CImgList& remove(const unsigned int pos1, const unsigned int pos2) { + const unsigned int + npos1 = pos1=_width) + throw CImgArgumentException(_cimglist_instance + "remove(): Invalid remove request at positions %u->%u.", + cimglist_instance, + npos1,tpos2); + else { + if (tpos2>=_width) + throw CImgArgumentException(_cimglist_instance + "remove(): Invalid remove request at positions %u->%u.", + cimglist_instance, + npos1,tpos2); + + for (unsigned int k = npos1; k<=npos2; ++k) _data[k].assign(); + const unsigned int nb = 1 + npos2 - npos1; + if (!(_width-=nb)) return assign(); + if (_width>(_allocated_width>>4) || _allocated_width<=16) { // Removing items without reallocation + if (npos1!=_width) + std::memmove((void*)(_data + npos1),(void*)(_data + npos2 + 1),sizeof(CImg)*(_width - npos1)); + std::memset((void*)(_data + _width),0,sizeof(CImg)*nb); + } else { // Removing items with reallocation + _allocated_width>>=4; + while (_allocated_width>16 && _width<(_allocated_width>>1)) _allocated_width>>=1; + CImg *const new_data = new CImg[_allocated_width]; + if (npos1) std::memcpy((void*)new_data,(void*)_data,sizeof(CImg)*npos1); + if (npos1!=_width) + std::memcpy((void*)(new_data + npos1),(void*)(_data + npos2 + 1),sizeof(CImg)*(_width - npos1)); + if (_width!=_allocated_width) + std::memset((void*)(new_data + _width),0,sizeof(CImg)*(_allocated_width - _width)); + std::memset((void*)_data,0,sizeof(CImg)*(_width + nb)); + delete[] _data; + _data = new_data; + } + } + return *this; + } + + //! Remove all images between from indexes \newinstance. + CImgList get_remove(const unsigned int pos1, const unsigned int pos2) const { + return (+*this).remove(pos1,pos2); + } + + //! Remove image at index \c pos from the image list. + /** + \param pos Index of the image to remove. + **/ + CImgList& remove(const unsigned int pos) { + return remove(pos,pos); + } + + //! Remove image at index \c pos from the image list \newinstance. + CImgList get_remove(const unsigned int pos) const { + return (+*this).remove(pos); + } + + //! Remove last image. + /** + **/ + CImgList& remove() { + return remove(_width - 1); + } + + //! Remove last image \newinstance. + CImgList get_remove() const { + return (+*this).remove(); + } + + //! Reverse list order. + CImgList& reverse() { + for (unsigned int l = 0; l<_width/2; ++l) (*this)[l].swap((*this)[_width - 1 - l]); + return *this; + } + + //! Reverse list order \newinstance. + CImgList get_reverse() const { + return (+*this).reverse(); + } + + //! Return a sublist. + /** + \param pos0 Starting index of the sublist. + \param pos1 Ending index of the sublist. + **/ + CImgList& images(const unsigned int pos0, const unsigned int pos1) { + return get_images(pos0,pos1).move_to(*this); + } + + //! Return a sublist \newinstance. + CImgList get_images(const unsigned int pos0, const unsigned int pos1) const { + if (pos0>pos1 || pos1>=_width) + throw CImgArgumentException(_cimglist_instance + "images(): Specified sub-list indices (%u->%u) are out of bounds.", + cimglist_instance, + pos0,pos1); + CImgList res(pos1 - pos0 + 1); + cimglist_for(res,l) res[l].assign(_data[pos0 + l]); + return res; + } + + //! Return a shared sublist. + /** + \param pos0 Starting index of the sublist. + \param pos1 Ending index of the sublist. + **/ + CImgList get_shared_images(const unsigned int pos0, const unsigned int pos1) { + if (pos0>pos1 || pos1>=_width) + throw CImgArgumentException(_cimglist_instance + "get_shared_images(): Specified sub-list indices (%u->%u) are out of bounds.", + cimglist_instance, + pos0,pos1); + CImgList res(pos1 - pos0 + 1); + cimglist_for(res,l) res[l].assign(_data[pos0 + l],_data[pos0 + l]?true:false); + return res; + } + + //! Return a shared sublist \newinstance. + const CImgList get_shared_images(const unsigned int pos0, const unsigned int pos1) const { + if (pos0>pos1 || pos1>=_width) + throw CImgArgumentException(_cimglist_instance + "get_shared_images(): Specified sub-list indices (%u->%u) are out of bounds.", + cimglist_instance, + pos0,pos1); + CImgList res(pos1 - pos0 + 1); + cimglist_for(res,l) res[l].assign(_data[pos0 + l],_data[pos0 + l]?true:false); + return res; + } + + //! Return a single image which is the appending of all images of the current CImgList instance. + /** + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + **/ + CImg get_append(const char axis, const float align=0) const { + if (is_empty()) return CImg(); + if (_width==1) return +((*this)[0]); + unsigned int dx = 0, dy = 0, dz = 0, dc = 0, pos = 0; + CImg res; + switch (cimg::lowercase(axis)) { + case 'x' : { // Along the X-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx+=img._width; + dy = std::max(dy,img._height); + dz = std::max(dz,img._depth); + dc = std::max(dc,img._spectrum); + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._height==1 && img._depth==1 && img._spectrum==1 && + res._height==1 && res._depth==1 && res._spectrum==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._width); + else + res.draw_image(pos, + (int)(align*(dy - img._height)), + (int)(align*(dz - img._depth)), + (int)(align*(dc - img._spectrum)), + img); + } + pos+=img._width; + } + } break; + case 'y' : { // Along the Y-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx = std::max(dx,img._width); + dy+=img._height; + dz = std::max(dz,img._depth); + dc = std::max(dc,img._spectrum); + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._width==1 && img._depth==1 && img._spectrum==1 && + res._width==1 && res._depth==1 && res._spectrum==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._height); + else + res.draw_image((int)(align*(dx - img._width)), + pos, + (int)(align*(dz - img._depth)), + (int)(align*(dc - img._spectrum)), + img); + } + pos+=img._height; + } + } break; + case 'z' : { // Along the Z-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx = std::max(dx,img._width); + dy = std::max(dy,img._height); + dz+=img._depth; + dc = std::max(dc,img._spectrum); + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._width==1 && img._height==1 && img._spectrum==1 && + res._width==1 && res._height==1 && res._spectrum==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._depth); + else + res.draw_image((int)(align*(dx - img._width)), + (int)(align*(dy - img._height)), + pos, + (int)(align*(dc - img._spectrum)), + img); + } + pos+=img._depth; + } + } break; + default : { // Along the C-axis + cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + dx = std::max(dx,img._width); + dy = std::max(dy,img._height); + dz = std::max(dz,img._depth); + dc+=img._spectrum; + } + } + res.assign(dx,dy,dz,dc,(T)0); + if (res) cimglist_for(*this,l) { + const CImg& img = (*this)[l]; + if (img) { + if (img._width==1 && img._height==1 && img._depth==1 && + res._width==1 && res._height==1 && res._depth==1) + std::memcpy(&res[pos],img._data,sizeof(T)*img._spectrum); + else + res.draw_image((int)(align*(dx - img._width)), + (int)(align*(dy - img._height)), + (int)(align*(dz - img._depth)), + pos, + img); + } + pos+=img._spectrum; + } + } + } + return res; + } + + //! Return a list where each image has been split along the specified axis. + /** + \param axis Axis to split images along. + \param nb Number of split parts for each image. + **/ + CImgList& split(const char axis, const int nb=-1) { + return get_split(axis,nb).move_to(*this); + } + + //! Return a list where each image has been split along the specified axis \newinstance. + CImgList get_split(const char axis, const int nb=-1) const { + CImgList res; + cimglist_for(*this,l) _data[l].get_split(axis,nb).move_to(res,~0U); + return res; + } + + //! Insert image at the end of the list. + /** + \param img Image to insert. + **/ + template + CImgList& push_back(const CImg& img) { + return insert(img); + } + + //! Insert image at the front of the list. + /** + \param img Image to insert. + **/ + template + CImgList& push_front(const CImg& img) { + return insert(img,0); + } + + //! Insert list at the end of the current list. + /** + \param list List to insert. + **/ + template + CImgList& push_back(const CImgList& list) { + return insert(list); + } + + //! Insert list at the front of the current list. + /** + \param list List to insert. + **/ + template + CImgList& push_front(const CImgList& list) { + return insert(list,0); + } + + //! Remove last image. + /** + **/ + CImgList& pop_back() { + return remove(_width - 1); + } + + //! Remove first image. + /** + **/ + CImgList& pop_front() { + return remove(0); + } + + //! Remove image pointed by iterator. + /** + \param iter Iterator pointing to the image to remove. + **/ + CImgList& erase(const iterator iter) { + return remove(iter - _data); + } + + //@} + //---------------------------------- + // + //! \name Data Input + //@{ + //---------------------------------- + + //! Display a simple interactive interface to select images or sublists. + /** + \param disp Window instance to display selection and user interface. + \param feature_type Can be \c false to select a single image, or \c true to select a sublist. + \param axis Axis along whom images are appended for visualization. + \param align Alignment setting when images have not all the same size. + \param exit_on_anykey Exit function when any key is pressed. + \return A one-column vector containing the selected image indexes. + **/ + CImg get_select(CImgDisplay &disp, const bool feature_type=true, + const char axis='x', const float align=0, + const bool exit_on_anykey=false) const { + return _select(disp,0,feature_type,axis,align,exit_on_anykey,0,false,false,false); + } + + //! Display a simple interactive interface to select images or sublists. + /** + \param title Title of a new window used to display selection and user interface. + \param feature_type Can be \c false to select a single image, or \c true to select a sublist. + \param axis Axis along whom images are appended for visualization. + \param align Alignment setting when images have not all the same size. + \param exit_on_anykey Exit function when any key is pressed. + \return A one-column vector containing the selected image indexes. + **/ + CImg get_select(const char *const title, const bool feature_type=true, + const char axis='x', const float align=0, + const bool exit_on_anykey=false) const { + CImgDisplay disp; + return _select(disp,title,feature_type,axis,align,exit_on_anykey,0,false,false,false); + } + + CImg _select(CImgDisplay &disp, const char *const title, const bool feature_type, + const char axis, const float align, const bool exit_on_anykey, + const unsigned int orig, const bool resize_disp, + const bool exit_on_rightbutton, const bool exit_on_wheel) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "select(): Empty instance.", + cimglist_instance); + + // Create image correspondence table and get list dimensions for visualization. + CImgList _indices; + unsigned int max_width = 0, max_height = 0, sum_width = 0, sum_height = 0; + cimglist_for(*this,l) { + const CImg& img = _data[l]; + const unsigned int + w = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,false), + h = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,true); + if (w>max_width) max_width = w; + if (h>max_height) max_height = h; + sum_width+=w; sum_height+=h; + if (axis=='x') CImg(w,1,1,1,(unsigned int)l).move_to(_indices); + else CImg(h,1,1,1,(unsigned int)l).move_to(_indices); + } + const CImg indices0 = _indices>'x'; + + // Create display window. + if (!disp) { + if (axis=='x') disp.assign(cimg_fitscreen(sum_width,max_height,1),title?title:0,1); + else disp.assign(cimg_fitscreen(max_width,sum_height,1),title?title:0,1); + if (!title) disp.set_title("CImgList<%s> (%u)",pixel_type(),_width); + } else { + if (title) disp.set_title("%s",title); + disp.move_inside_screen(); + } + if (resize_disp) { + if (axis=='x') disp.resize(cimg_fitscreen(sum_width,max_height,1),false); + else disp.resize(cimg_fitscreen(max_width,sum_height,1),false); + } + + const unsigned int old_normalization = disp.normalization(); + bool old_is_resized = disp.is_resized(); + disp._normalization = 0; + disp.show().set_key(0).show_mouse(); + static const unsigned char foreground_color[] = { 255,255,255 }, background_color[] = { 0,0,0 }; + + // Enter event loop. + CImg visu0, visu; + CImg indices; + CImg positions(_width,4,1,1,-1); + int oindex0 = -1, oindex1 = -1, index0 = -1, index1 = -1; + bool is_clicked = false, is_selected = false, text_down = false, update_display = true; + unsigned int key = 0, font_size = 32; + + while (!is_selected && !disp.is_closed() && !key) { + + // Create background image. + if (!visu0) { + visu0.assign(disp._width,disp._height,1,3,0); visu.assign(); + (indices0.get_resize(axis=='x'?visu0._width:visu0._height,1)).move_to(indices); + unsigned int _ind = 0; + const CImg onexone(1,1,1,1,(T)0); + if (axis=='x') + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width,4)) + cimglist_for(*this,ind) { + unsigned int x0 = 0; + while (x0 &src = _data[ind]?_data[ind]:onexone; + CImg res; + src._get_select(disp,old_normalization,src._width/2,src._height/2,src._depth/2). + move_to(res); + const unsigned int h = CImgDisplay::_fitscreen(res._width,res._height,1,128,-85,true); + res.resize(x1 - x0,std::max(32U,h*disp._height/max_height),1,res._spectrum==1?3:-100); + positions(ind,0) = positions(ind,2) = (int)x0; + positions(ind,1) = positions(ind,3) = (int)(align*(visu0.height() - res.height())); + positions(ind,2)+=res._width; + positions(ind,3)+=res._height - 1; + visu0.draw_image(positions(ind,0),positions(ind,1),res); + } + else + cimg_pragma_openmp(parallel for cimg_openmp_if_size(_width,4)) + cimglist_for(*this,ind) { + unsigned int y0 = 0; + while (y0 &src = _data[ind]?_data[ind]:onexone; + CImg res; + src._get_select(disp,old_normalization,(src._width - 1)/2,(src._height - 1)/2,(src._depth - 1)/2). + move_to(res); + const unsigned int w = CImgDisplay::_fitscreen(res._width,res._height,1,128,-85,false); + res.resize(std::max(32U,w*disp._width/max_width),y1 - y0,1,res._spectrum==1?3:-100); + positions(ind,0) = positions(ind,2) = (int)(align*(visu0.width() - res.width())); + positions(ind,1) = positions(ind,3) = (int)y0; + positions(ind,2)+=res._width - 1; + positions(ind,3)+=res._height; + visu0.draw_image(positions(ind,0),positions(ind,1),res); + } + if (axis=='x') --positions(_ind,2); else --positions(_ind,3); + update_display = true; + } + + if (!visu || oindex0!=index0 || oindex1!=index1) { + if (index0>=0 && index1>=0) { + visu.assign(visu0,false); + const int indm = std::min(index0,index1), indM = std::max(index0,index1); + for (int ind = indm; ind<=indM; ++ind) if (positions(ind,0)>=0) { + visu.draw_rectangle(positions(ind,0),positions(ind,1),positions(ind,2),positions(ind,3), + background_color,0.2f); + if ((axis=='x' && positions(ind,2) - positions(ind,0)>=8) || + (axis!='x' && positions(ind,3) - positions(ind,1)>=8)) + visu.draw_rectangle(positions(ind,0),positions(ind,1),positions(ind,2),positions(ind,3), + foreground_color,0.9f,0xAAAAAAAA); + } + if (is_clicked) visu.__draw_text(" Images #%u - #%u, Size = %u ",font_size,(int)text_down, + orig + indm,orig + indM,indM - indm + 1); + else visu.__draw_text(" Image #%u (%u,%u,%u,%u) ",font_size,(int)text_down, + orig + index0, + _data[index0]._width, + _data[index0]._height, + _data[index0]._depth, + _data[index0]._spectrum); + update_display = true; + } else visu.assign(); + } + if (!visu) { visu.assign(visu0,true); update_display = true; } + if (update_display) { visu.display(disp); update_display = false; } + disp.wait(); + + // Manage user events. + const int xm = disp.mouse_x(), ym = disp.mouse_y(); + int index = -1; + + if (xm>=0) { + index = (int)indices(axis=='x'?xm:ym); + if (disp.button()&1) { + if (!is_clicked) { is_clicked = true; oindex0 = index0; index0 = index; } + oindex1 = index1; index1 = index; + if (!feature_type) is_selected = true; + } else { + if (!is_clicked) { oindex0 = oindex1 = index0; index0 = index1 = index; } + else is_selected = true; + } + } else { + if (is_clicked) { + if (!(disp.button()&1)) { is_clicked = is_selected = false; index0 = index1 = -1; } + else index1 = -1; + } else index0 = index1 = -1; + } + + if (disp.button()&4) { is_clicked = is_selected = false; index0 = index1 = -1; } + if (disp.button()&2 && exit_on_rightbutton) { is_selected = true; index1 = index0 = -1; } + if (disp.wheel() && exit_on_wheel) is_selected = true; + + CImg filename(32); + switch (key = disp.key()) { +#if cimg_OS!=2 + case cimg::keyCTRLRIGHT : +#endif + case 0 : case cimg::keyCTRLLEFT : key = 0; break; + case cimg::keyD : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,false), + CImgDisplay::_fitscreen(3*disp.width()/2,3*disp.height()/2,1,128,-100,true),false). + _is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyC : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(2*disp.width()/3,2*disp.height()/3,1),false)._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyR : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.set_fullscreen(false). + resize(cimg_fitscreen(axis=='x'?sum_width:max_width,axis=='x'?max_height:sum_height,1),false). + _is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyF : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + disp.resize(disp.screen_width(),disp.screen_height(),false).toggle_fullscreen()._is_resized = true; + disp.set_key(key,false); key = 0; visu0.assign(); + } break; + case cimg::keyS : if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.bmp",snap_number++); + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + if (visu0) { + (+visu0).__draw_text(" Saving snapshot... ",font_size,(int)text_down).display(disp); + visu0.save(filename); + (+visu0).__draw_text(" Snapshot '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + } + disp.set_key(key,false).wait(); key = 0; + } break; + case cimg::keyO : + if (disp.is_keyCTRLLEFT() || disp.is_keyCTRLRIGHT()) { + static unsigned int snap_number = 0; + std::FILE *file; + do { +#ifdef cimg_use_zlib + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimgz",snap_number++); +#else + cimg_snprintf(filename,filename._width,cimg_appname "_%.4u.cimg",snap_number++); +#endif + if ((file=cimg::std_fopen(filename,"r"))!=0) cimg::fclose(file); + } while (file); + (+visu0).__draw_text(" Saving instance... ",font_size,(int)text_down).display(disp); + save(filename); + (+visu0).__draw_text(" Instance '%s' saved. ",font_size,(int)text_down,filename._data).display(disp); + disp.set_key(key,false).wait(); key = 0; + } break; + } + if (disp.is_resized()) { disp.resize(false); visu0.assign(); } + if (ym>=0 && ym<13) { if (!text_down) { visu.assign(); text_down = true; }} + else if (ym>=visu.height() - 13) { if (text_down) { visu.assign(); text_down = false; }} + if (!exit_on_anykey && key && key!=cimg::keyESC && + (key!=cimg::keyW || (!disp.is_keyCTRLLEFT() && !disp.is_keyCTRLRIGHT()))) { + key = 0; + } + } + CImg res(1,2,1,1,-1); + if (is_selected) { + if (feature_type) res.fill(std::min(index0,index1),std::max(index0,index1)); + else res.fill(index0); + } + if (!(disp.button()&2)) disp.set_button(); + disp._normalization = old_normalization; + disp._is_resized = old_is_resized; + disp.set_key(key); + return res; + } + + //! Load a list from a file. + /** + \param filename Filename to read data from. + **/ + CImgList& load(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load(): Specified filename is (null).", + cimglist_instance); + + if (!cimg::strncasecmp(filename,"http://",7) || !cimg::strncasecmp(filename,"https://",8)) { + CImg filename_local(256); + load(cimg::load_network(filename,filename_local)); + std::remove(filename_local); + return *this; + } + + const bool is_stdin = *filename=='-' && (!filename[1] || filename[1]=='.'); + const char *const ext = cimg::split_filename(filename); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + bool is_loaded = true; + try { +#ifdef cimglist_load_plugin + cimglist_load_plugin(filename); +#endif +#ifdef cimglist_load_plugin1 + cimglist_load_plugin1(filename); +#endif +#ifdef cimglist_load_plugin2 + cimglist_load_plugin2(filename); +#endif +#ifdef cimglist_load_plugin3 + cimglist_load_plugin3(filename); +#endif +#ifdef cimglist_load_plugin4 + cimglist_load_plugin4(filename); +#endif +#ifdef cimglist_load_plugin5 + cimglist_load_plugin5(filename); +#endif +#ifdef cimglist_load_plugin6 + cimglist_load_plugin6(filename); +#endif +#ifdef cimglist_load_plugin7 + cimglist_load_plugin7(filename); +#endif +#ifdef cimglist_load_plugin8 + cimglist_load_plugin8(filename); +#endif + if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) load_tiff(filename); + else if (!cimg::strcasecmp(ext,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(ext,"cimg") || + !cimg::strcasecmp(ext,"cimgz") || + !*ext) load_cimg(filename); + else if (!cimg::strcasecmp(ext,"rec") || + !cimg::strcasecmp(ext,"par")) load_parrec(filename); + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) load_video(filename); + else if (!cimg::strcasecmp(ext,"gz")) load_gzip_external(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + + // If nothing loaded, try to guess file format from magic number in file. + if (!is_loaded && !is_stdin) { + std::FILE *const file = cimg::std_fopen(filename,"rb"); + if (!file) { + cimg::exception_mode(omode); + throw CImgIOException(_cimglist_instance + "load(): Failed to open file '%s'.", + cimglist_instance, + filename); + } + + const char *const f_type = cimg::ftype(file,filename); + cimg::fclose(file); + is_loaded = true; + try { + if (!cimg::strcasecmp(f_type,"gif")) load_gif_external(filename); + else if (!cimg::strcasecmp(f_type,"tif")) load_tiff(filename); + else is_loaded = false; + } catch (CImgIOException&) { is_loaded = false; } + } + + // If nothing loaded, try to load file as a single image. + if (!is_loaded) { + assign(1); + try { + _data->load(filename); + } catch (CImgIOException&) { + cimg::exception_mode(omode); + throw CImgIOException(_cimglist_instance + "load(): Failed to recognize format of file '%s'.", + cimglist_instance, + filename); + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load a list from a file \newinstance. + static CImgList get_load(const char *const filename) { + return CImgList().load(filename); + } + + //! Load a list from a .cimg file. + /** + \param filename Filename to read data from. + **/ + CImgList& load_cimg(const char *const filename) { + return _load_cimg(0,filename); + } + + //! Load a list from a .cimg file \newinstance. + static CImgList get_load_cimg(const char *const filename) { + return CImgList().load_cimg(filename); + } + + //! Load a list from a .cimg file. + /** + \param file File to read data from. + **/ + CImgList& load_cimg(std::FILE *const file) { + return _load_cimg(file,0); + } + + //! Load a list from a .cimg file \newinstance. + static CImgList get_load_cimg(std::FILE *const file) { + return CImgList().load_cimg(file); + } + + CImgList& _load_cimg(std::FILE *const file, const char *const filename) { +#ifdef cimg_use_zlib +#define _cimgz_load_cimg_case(Tss) { \ + Bytef *const cbuf = new Bytef[csiz]; \ + cimg::fread(cbuf,csiz,nfile); \ + if (is_bool) { \ + CImg raw(W*H*D*C/8); \ + uLongf destlen = (ulongT)raw.size(); \ + uncompress((Bytef*)raw._data,&destlen,cbuf,csiz); \ + img.assign(W,H,D,C); \ + img._uchar2bool(raw,raw.size(),false); \ + } else { \ + CImg raw(W,H,D,C); \ + uLongf destlen = (ulongT)raw.size()*sizeof(Tss); \ + uncompress((Bytef*)raw._data,&destlen,cbuf,csiz); \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw.size()); \ + raw.move_to(img); \ + } \ + delete[] cbuf; \ +} +#else +#define _cimgz_load_cimg_case(Tss) \ + throw CImgIOException(_cimglist_instance \ + "load_cimg(): Unable to load compressed data from file '%s' unless zlib is enabled.", \ + cimglist_instance, \ + filename?filename:"(FILE*)"); +#endif + +#define _cimg_load_cimg_case(Ts,Tss) \ + if (!loaded && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + const bool is_bool = cimg::type::string()==cimg::type::string(); \ + for (unsigned int l = 0; l=0 && j<255) tmp[j++] = (char)i; tmp[j] = 0; \ + W = H = D = C = 0; csiz = 0; \ + if ((err = cimg_sscanf(tmp,"%u %u %u %u #%lu",&W,&H,&D,&C,&csiz))<4) \ + throw CImgIOException(_cimglist_instance \ + "load_cimg(): Invalid specified size (%u,%u,%u,%u) of image %u in file '%s'.", \ + cimglist_instance, \ + W,H,D,C,l,filename?filename:("(FILE*)")); \ + if (W*H*D*C>0) { \ + CImg &img = _data[l]; \ + if (err==5) _cimgz_load_cimg_case(Tss) \ + else { \ + img.assign(W,H,D,C); \ + T *ptrd = img._data; \ + if (is_bool) { \ + CImg raw; \ + for (ulongT to_read = img.size(); to_read; ) { \ + raw.assign((unsigned int)std::min(to_read,cimg_iobuffer)); \ + cimg::fread(raw._data,raw._width,nfile); \ + CImg(ptrd,std::min((ulongT)8*raw._width,(ulongT)(img.end() - ptrd)),1,1,1,true).\ + _uchar2bool(raw,raw._width,false); \ + to_read-=raw._width; \ + } \ + } else { \ + CImg raw; \ + for (ulongT to_read = img.size(); to_read; ) { \ + raw.assign((unsigned int)std::min(to_read,cimg_iobuffer)); \ + cimg::fread(raw._data,raw._width,nfile); \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw.size()); \ + const Tss *ptrs = raw._data; \ + for (ulongT off = (ulongT)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); \ + to_read-=raw._width; \ + } \ + } \ + } \ + } \ + } \ + loaded = true; \ + } + + if (!filename && !file) + throw CImgArgumentException(_cimglist_instance + "load_cimg(): Specified filename is (null).", + cimglist_instance); + + const ulongT cimg_iobuffer = (ulongT)24*1024*1024; + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + bool loaded = false, endian = cimg::endianness(); + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N = 0, W, H, D, C; + unsigned long csiz; + int i, err; + do { + j = 0; while ((i=std::fgetc(nfile))!='\n' && i>=0 && j<255) tmp[j++] = (char)i; tmp[j] = 0; + } while (*tmp=='#' && i>=0); + err = cimg_sscanf(tmp,"%u%*c%255[A-Za-z64_]%*c%255[sA-Za-z_ ]", + &N,str_pixeltype._data,str_endian._data); + if (err<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): CImg header not found in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + } + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + assign(N); + _cimg_load_cimg_case("bool",bool); + _cimg_load_cimg_case("unsigned_char",unsigned char); + _cimg_load_cimg_case("uchar",unsigned char); + _cimg_load_cimg_case("char",char); + _cimg_load_cimg_case("unsigned_short",unsigned short); + _cimg_load_cimg_case("ushort",unsigned short); + _cimg_load_cimg_case("short",short); + _cimg_load_cimg_case("unsigned_int",unsigned int); + _cimg_load_cimg_case("uint",unsigned int); + _cimg_load_cimg_case("int",int); + _cimg_load_cimg_case("unsigned_long",ulongT); + _cimg_load_cimg_case("ulong",ulongT); + _cimg_load_cimg_case("long",longT); + _cimg_load_cimg_case("unsigned_int64",uint64T); + _cimg_load_cimg_case("uint64",uint64T); + _cimg_load_cimg_case("int64",int64T); + _cimg_load_cimg_case("float",float); + _cimg_load_cimg_case("double",double); + + if (!loaded) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): Unsupported pixel type '%s' for file '%s'.", + cimglist_instance, + str_pixeltype._data,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load a sublist list from a (non compressed) .cimg file. + /** + \param filename Filename to read data from. + \param n0 Starting index of images to read (~0U for max). + \param n1 Ending index of images to read (~0U for max). + \param x0 Starting X-coordinates of image regions to read. + \param y0 Starting Y-coordinates of image regions to read. + \param z0 Starting Z-coordinates of image regions to read. + \param c0 Starting C-coordinates of image regions to read. + \param x1 Ending X-coordinates of image regions to read (~0U for max). + \param y1 Ending Y-coordinates of image regions to read (~0U for max). + \param z1 Ending Z-coordinates of image regions to read (~0U for max). + \param c1 Ending C-coordinates of image regions to read (~0U for max). + **/ + CImgList& load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return _load_cimg(0,filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + //! Load a sublist list from a (non compressed) .cimg file \newinstance. + static CImgList get_load_cimg(const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return CImgList().load_cimg(filename,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + //! Load a sub-image list from a (non compressed) .cimg file \overloading. + CImgList& load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return _load_cimg(file,0,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + //! Load a sub-image list from a (non compressed) .cimg file \newinstance. + static CImgList get_load_cimg(std::FILE *const file, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { + return CImgList().load_cimg(file,n0,n1,x0,y0,z0,c0,x1,y1,z1,c1); + } + + CImgList& _load_cimg(std::FILE *const file, const char *const filename, + const unsigned int n0, const unsigned int n1, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0, + const unsigned int x1, const unsigned int y1, + const unsigned int z1, const unsigned int c1) { +#define _cimg_load_cimg_case2(Ts,Tss) \ + if (!loaded && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + for (unsigned int l = 0; l<=nn1; ++l) { \ + j = 0; while ((i=std::fgetc(nfile))!='\n' && i>=0) tmp[j++] = (char)i; tmp[j] = 0; \ + W = H = D = C = 0; \ + if (cimg_sscanf(tmp,"%u %u %u %u",&W,&H,&D,&C)!=4) \ + throw CImgIOException(_cimglist_instance \ + "load_cimg(): Invalid specified size (%u,%u,%u,%u) of image %u in file '%s'", \ + cimglist_instance, \ + W,H,D,C,l,filename?filename:"(FILE*)"); \ + if (W*H*D*C>0) { \ + if (l=W || ny0>=H || nz0>=D || nc0>=C) cimg::fseek(nfile,W*H*D*C*sizeof(Tss),SEEK_CUR); \ + else { \ + const unsigned int \ + _nx1 = nx1==~0U?W - 1:nx1, \ + _ny1 = ny1==~0U?H - 1:ny1, \ + _nz1 = nz1==~0U?D - 1:nz1, \ + _nc1 = nc1==~0U?C - 1:nc1; \ + if (_nx1>=W || _ny1>=H || _nz1>=D || _nc1>=C) \ + throw CImgArgumentException(_cimglist_instance \ + "load_cimg(): Invalid specified coordinates " \ + "[%u](%u,%u,%u,%u) -> [%u](%u,%u,%u,%u) " \ + "because image [%u] in file '%s' has size (%u,%u,%u,%u).", \ + cimglist_instance, \ + n0,x0,y0,z0,c0,n1,x1,y1,z1,c1,l,filename?filename:"(FILE*)",W,H,D,C); \ + CImg raw(1 + _nx1 - nx0); \ + CImg &img = _data[l - nn0]; \ + img.assign(1 + _nx1 - nx0,1 + _ny1 - ny0,1 + _nz1 - nz0,1 + _nc1 - nc0); \ + T *ptrd = img._data; \ + ulongT skipvb = nc0*W*H*D*sizeof(Tss); \ + if (skipvb) cimg::fseek(nfile,skipvb,SEEK_CUR); \ + for (unsigned int c = 1 + _nc1 - nc0; c; --c) { \ + const ulongT skipzb = nz0*W*H*sizeof(Tss); \ + if (skipzb) cimg::fseek(nfile,skipzb,SEEK_CUR); \ + for (unsigned int z = 1 + _nz1 - nz0; z; --z) { \ + const ulongT skipyb = ny0*W*sizeof(Tss); \ + if (skipyb) cimg::fseek(nfile,skipyb,SEEK_CUR); \ + for (unsigned int y = 1 + _ny1 - ny0; y; --y) { \ + const ulongT skipxb = nx0*sizeof(Tss); \ + if (skipxb) cimg::fseek(nfile,skipxb,SEEK_CUR); \ + cimg::fread(raw._data,raw._width,nfile); \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw._width); \ + const Tss *ptrs = raw._data; \ + for (unsigned int off = raw._width; off; --off) *(ptrd++) = (T)*(ptrs++); \ + const ulongT skipxe = (W - 1 - _nx1)*sizeof(Tss); \ + if (skipxe) cimg::fseek(nfile,skipxe,SEEK_CUR); \ + } \ + const ulongT skipye = (H - 1 - _ny1)*W*sizeof(Tss); \ + if (skipye) cimg::fseek(nfile,skipye,SEEK_CUR); \ + } \ + const ulongT skipze = (D - 1 - _nz1)*W*H*sizeof(Tss); \ + if (skipze) cimg::fseek(nfile,skipze,SEEK_CUR); \ + } \ + const ulongT skipve = (C - 1 - _nc1)*W*H*D*sizeof(Tss); \ + if (skipve) cimg::fseek(nfile,skipve,SEEK_CUR); \ + } \ + } \ + } \ + loaded = true; \ + } + + if (!filename && !file) + throw CImgArgumentException(_cimglist_instance + "load_cimg(): Specified filename is (null).", + cimglist_instance); + unsigned int + nn0 = std::min(n0,n1), nn1 = std::max(n0,n1), + nx0 = std::min(x0,x1), nx1 = std::max(x0,x1), + ny0 = std::min(y0,y1), ny1 = std::max(y0,y1), + nz0 = std::min(z0,z1), nz1 = std::max(z0,z1), + nc0 = std::min(c0,c1), nc1 = std::max(c0,c1); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + bool loaded = false, endian = cimg::endianness(); + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N, W, H, D, C; + int i, err; + j = 0; while ((i=std::fgetc(nfile))!='\n' && i!=EOF && j<256) tmp[j++] = (char)i; tmp[j] = 0; + err = cimg_sscanf(tmp,"%u%*c%255[A-Za-z64_]%*c%255[sA-Za-z_ ]", + &N,str_pixeltype._data,str_endian._data); + if (err<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): CImg header not found in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + } + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + nn1 = n1==~0U?N - 1:n1; + if (nn1>=N) + throw CImgArgumentException(_cimglist_instance + "load_cimg(): Invalid specified coordinates [%u](%u,%u,%u,%u) -> [%u](%u,%u,%u,%u) " + "because file '%s' contains only %u images.", + cimglist_instance, + n0,x0,y0,z0,c0,n1,x1,y1,z1,c1,filename?filename:"(FILE*)",N); + assign(1 + nn1 - n0); + _cimg_load_cimg_case2("bool",bool); + _cimg_load_cimg_case2("unsigned_char",unsigned char); + _cimg_load_cimg_case2("uchar",unsigned char); + _cimg_load_cimg_case2("char",char); + _cimg_load_cimg_case2("unsigned_short",unsigned short); + _cimg_load_cimg_case2("ushort",unsigned short); + _cimg_load_cimg_case2("short",short); + _cimg_load_cimg_case2("unsigned_int",unsigned int); + _cimg_load_cimg_case2("uint",unsigned int); + _cimg_load_cimg_case2("int",int); + _cimg_load_cimg_case2("unsigned_long",ulongT); + _cimg_load_cimg_case2("ulong",ulongT); + _cimg_load_cimg_case2("long",longT); + _cimg_load_cimg_case2("unsigned_int64",uint64T); + _cimg_load_cimg_case2("uint64",uint64T); + _cimg_load_cimg_case2("int64",int64T); + _cimg_load_cimg_case2("float",float); + _cimg_load_cimg_case2("double",double); + if (!loaded) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_cimg(): Unsupported pixel type '%s' for file '%s'.", + cimglist_instance, + str_pixeltype._data,filename?filename:"(FILE*)"); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load a list from a PAR/REC (Philips) file. + /** + \param filename Filename to read data from. + **/ + CImgList& load_parrec(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_parrec(): Specified filename is (null).", + cimglist_instance); + + CImg body(1024), filenamepar(1024), filenamerec(1024); + *body = *filenamepar = *filenamerec = 0; + const char *const ext = cimg::split_filename(filename,body); + if (!std::strcmp(ext,"par")) { + std::strncpy(filenamepar,filename,filenamepar._width - 1); + cimg_snprintf(filenamerec,filenamerec._width,"%s.rec",body._data); + } + if (!std::strcmp(ext,"PAR")) { + std::strncpy(filenamepar,filename,filenamepar._width - 1); + cimg_snprintf(filenamerec,filenamerec._width,"%s.REC",body._data); + } + if (!std::strcmp(ext,"rec")) { + std::strncpy(filenamerec,filename,filenamerec._width - 1); + cimg_snprintf(filenamepar,filenamepar._width,"%s.par",body._data); + } + if (!std::strcmp(ext,"REC")) { + std::strncpy(filenamerec,filename,filenamerec._width - 1); + cimg_snprintf(filenamepar,filenamepar._width,"%s.PAR",body._data); + } + std::FILE *file = cimg::fopen(filenamepar,"r"); + + // Parse header file + CImgList st_slices; + CImgList st_global; + CImg line(256); *line = 0; + int err; + do { err = std::fscanf(file,"%255[^\n]%*c",line._data); } while (err!=EOF && (*line=='#' || *line=='.')); + do { + unsigned int sn,size_x,size_y,pixsize; + float rs,ri,ss; + err = std::fscanf(file,"%u%*u%*u%*u%*u%*u%*u%u%*u%u%u%g%g%g%*[^\n]",&sn,&pixsize,&size_x,&size_y,&ri,&rs,&ss); + if (err==7) { + CImg::vector((float)sn,(float)pixsize,(float)size_x,(float)size_y,ri,rs,ss,0).move_to(st_slices); + unsigned int i; for (i = 0; i::vector(size_x,size_y,sn).move_to(st_global); + else { + CImg &vec = st_global[i]; + if (size_x>vec[0]) vec[0] = size_x; + if (size_y>vec[1]) vec[1] = size_y; + vec[2] = sn; + } + st_slices[st_slices._width - 1][7] = (float)i; + } + } while (err==7); + + // Read data + std::FILE *file2 = cimg::fopen(filenamerec,"rb"); + cimglist_for(st_global,l) { + const CImg& vec = st_global[l]; + CImg(vec[0],vec[1],vec[2]).move_to(*this); + } + + cimglist_for(st_slices,l) { + const CImg& vec = st_slices[l]; + const unsigned int + sn = (unsigned int)vec[0] - 1, + pixsize = (unsigned int)vec[1], + size_x = (unsigned int)vec[2], + size_y = (unsigned int)vec[3], + imn = (unsigned int)vec[7]; + const float ri = vec[4], rs = vec[5], ss = vec[6]; + switch (pixsize) { + case 8 : { + CImg buf(size_x,size_y); + cimg::fread(buf._data,size_x*size_y,file2); + if (cimg::endianness()) cimg::invert_endianness(buf._data,size_x*size_y); + CImg& img = (*this)[imn]; + cimg_forXY(img,x,y) img(x,y,sn) = (T)(( buf(x,y)*rs + ri )/(rs*ss)); + } break; + case 16 : { + CImg buf(size_x,size_y); + cimg::fread(buf._data,size_x*size_y,file2); + if (cimg::endianness()) cimg::invert_endianness(buf._data,size_x*size_y); + CImg& img = (*this)[imn]; + cimg_forXY(img,x,y) img(x,y,sn) = (T)(( buf(x,y)*rs + ri )/(rs*ss)); + } break; + case 32 : { + CImg buf(size_x,size_y); + cimg::fread(buf._data,size_x*size_y,file2); + if (cimg::endianness()) cimg::invert_endianness(buf._data,size_x*size_y); + CImg& img = (*this)[imn]; + cimg_forXY(img,x,y) img(x,y,sn) = (T)(( buf(x,y)*rs + ri )/(rs*ss)); + } break; + default : + cimg::fclose(file); + cimg::fclose(file2); + throw CImgIOException(_cimglist_instance + "load_parrec(): Unsupported %d-bits pixel type for file '%s'.", + cimglist_instance, + pixsize,filename); + } + } + cimg::fclose(file); + cimg::fclose(file2); + if (!_width) + throw CImgIOException(_cimglist_instance + "load_parrec(): Failed to recognize valid PAR-REC data in file '%s'.", + cimglist_instance, + filename); + return *this; + } + + //! Load a list from a PAR/REC (Philips) file \newinstance. + static CImgList get_load_parrec(const char *const filename) { + return CImgList().load_parrec(filename); + } + + //! Load a list from a YUV image sequence file. + /** + \param filename Filename to read data from. + \param size_x Width of the images. + \param size_y Height of the images. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param first_frame Index of first image frame to read. + \param last_frame Index of last image frame to read. + \param step_frame Step applied between each frame. + \param yuv2rgb Apply YUV to RGB transformation during reading. + **/ + CImgList& load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return _load_yuv(0,filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + //! Load a list from a YUV image sequence file \newinstance. + static CImgList get_load_yuv(const char *const filename, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return CImgList().load_yuv(filename,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + //! Load a list from an image sequence YUV file \overloading. + CImgList& load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return _load_yuv(file,0,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + //! Load a list from an image sequence YUV file \newinstance. + static CImgList get_load_yuv(std::FILE *const file, + const unsigned int size_x, const unsigned int size_y=1, + const unsigned int chroma_subsampling=444, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, const bool yuv2rgb=true) { + return CImgList().load_yuv(file,size_x,size_y,chroma_subsampling, + first_frame,last_frame,step_frame,yuv2rgb); + } + + CImgList& _load_yuv(std::FILE *const file, const char *const filename, + const unsigned int size_x, const unsigned int size_y, + const unsigned int chroma_subsampling, + const unsigned int first_frame, const unsigned int last_frame, + const unsigned int step_frame, const bool yuv2rgb) { + if (!filename && !file) + throw CImgArgumentException(_cimglist_instance + "load_yuv(): Specified filename is (null).", + cimglist_instance); + if (chroma_subsampling!=420 && chroma_subsampling!=422 && chroma_subsampling!=444) + throw CImgArgumentException(_cimglist_instance + "load_yuv(): Specified chroma subsampling '%u' is invalid, for file '%s'.", + cimglist_instance, + chroma_subsampling,filename?filename:"(FILE*)"); + const unsigned int + cfx = chroma_subsampling==420 || chroma_subsampling==422?2:1, + cfy = chroma_subsampling==420?2:1, + nfirst_frame = first_frame YUV(size_x,size_y,1,3), UV(size_x/cfx,size_y/cfy,1,2); + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb"); + bool stop_flag = false; + int err; + if (nfirst_frame) { + err = cimg::fseek(nfile,(uint64T)nfirst_frame*(YUV._width*YUV._height + 2*UV._width*UV._height),SEEK_CUR); + if (err) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "load_yuv(): File '%s' doesn't contain frame number %u.", + cimglist_instance, + filename?filename:"(FILE*)",nfirst_frame); + } + } + unsigned int frame; + for (frame = nfirst_frame; !stop_flag && frame<=nlast_frame; frame+=nstep_frame) { + YUV.get_shared_channel(0).fill(0); + // *TRY* to read the luminance part, do not replace by cimg::fread! + err = (int)std::fread((void*)(YUV._data),1,(size_t)YUV._width*YUV._height,nfile); + if (err!=(int)(YUV._width*YUV._height)) { + stop_flag = true; + if (err>0) + cimg::warn(_cimglist_instance + "load_yuv(): File '%s' contains incomplete data or given image dimensions " + "(%u,%u) are incorrect.", + cimglist_instance, + filename?filename:"(FILE*)",size_x,size_y); + } else { + UV.fill(0); + // *TRY* to read the luminance part, do not replace by cimg::fread! + err = (int)std::fread((void*)(UV._data),1,(size_t)UV.size(),nfile); + if (err!=(int)(UV.size())) { + stop_flag = true; + if (err>0) + cimg::warn(_cimglist_instance + "load_yuv(): File '%s' contains incomplete data or given image dimensions " + "(%u,%u) are incorrect.", + cimglist_instance, + filename?filename:"(FILE*)",size_x,size_y); + } else { + const ucharT *ptrs1 = UV._data, *ptrs2 = UV.data(0,0,0,1); + ucharT *ptrd1 = YUV.data(0,0,0,1), *ptrd2 = YUV.data(0,0,0,2); + const unsigned int wd = YUV._width; + switch (chroma_subsampling) { + case 420 : + cimg_forY(UV,y) { + cimg_forX(UV,x) { + const ucharT U = *(ptrs1++), V = *(ptrs2++); + ptrd1[wd] = U; *(ptrd1)++ = U; + ptrd1[wd] = U; *(ptrd1)++ = U; + ptrd2[wd] = V; *(ptrd2)++ = V; + ptrd2[wd] = V; *(ptrd2)++ = V; + } + ptrd1+=wd; ptrd2+=wd; + } + break; + case 422 : + cimg_forXY(UV,x,y) { + const ucharT U = *(ptrs1++), V = *(ptrs2++); + *(ptrd1++) = U; *(ptrd1++) = U; + *(ptrd2++) = V; *(ptrd2++) = V; + } + break; + default : + YUV.draw_image(0,0,0,1,UV); + } + if (yuv2rgb) YUV.YCbCrtoRGB(); + insert(YUV); + if (nstep_frame>1) cimg::fseek(nfile,(uint64T)(nstep_frame - 1)*(size_x*size_y + size_x*size_y/2),SEEK_CUR); + } + } + } + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_yuv() : Missing data in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + if (stop_flag && nlast_frame!=~0U && frame!=nlast_frame) + cimg::warn(_cimglist_instance + "load_yuv(): Frame %d not reached since only %u frames were found in file '%s'.", + cimglist_instance, + nlast_frame,frame - 1,filename?filename:"(FILE*)"); + + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Load an image from a video file, using OpenCV library. + /** + \param filename Filename, as a C-string. + \param first_frame Index of the first frame to read. + \param last_frame Index of the last frame to read (can be higher than the actual number of frames, e.g. '~0U'). + \param step_frame Step value for frame reading. + \note If step_frame==0, the current video stream is forced to be released (without any frames read). + **/ + CImgList& load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1) { +#ifndef cimg_use_opencv + if (first_frame || last_frame!=~0U || step_frame>1) + throw CImgArgumentException(_cimglist_instance + "load_video() : File '%s', arguments 'first_frame', 'last_frame' " + "and 'step_frame' requires features from the OpenCV library " + "('-Dcimg_use_opencv' must be defined).", + cimglist_instance,filename); + return load_ffmpeg_external(filename); +#else + static cv::VideoCapture *captures[32] = { 0 }; + static CImgList filenames(32); + static CImg positions(32,1,1,1,0); + static int last_used_index = -1; + + // Detect if a video capture already exists for the specified filename. + cimg::mutex(9); + int index = -1; + if (filename) { + if (last_used_index>=0 && !std::strcmp(filename,filenames[last_used_index])) { + index = last_used_index; + } else cimglist_for(filenames,l) if (filenames[l] && !std::strcmp(filename,filenames[l])) { + index = l; break; + } + } else index = last_used_index; + cimg::mutex(9,0); + + // Release stream if needed. + if (!step_frame || (index>=0 && positions[index]>first_frame)) { + if (index>=0) { + cimg::mutex(9); + captures[index]->release(); + delete captures[index]; + captures[index] = 0; + positions[index] = 0; + filenames[index].assign(); + if (last_used_index==index) last_used_index = -1; + index = -1; + cimg::mutex(9,0); + } else + if (filename) + cimg::warn(_cimglist_instance + "load_video() : File '%s', no opened video stream associated with filename found.", + cimglist_instance,filename); + else + cimg::warn(_cimglist_instance + "load_video() : No opened video stream found.", + cimglist_instance,filename); + if (!step_frame) return *this; + } + + // Find empty slot for capturing video stream. + if (index<0) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_video(): No already open video reader found. You must specify a " + "non-(null) filename argument for the first call.", + cimglist_instance); + else { cimg::mutex(9); cimglist_for(filenames,l) if (!filenames[l]) { index = l; break; } cimg::mutex(9,0); } + if (index<0) + throw CImgIOException(_cimglist_instance + "load_video(): File '%s', no video reader slots available. " + "You have to release some of your previously opened videos.", + cimglist_instance,filename); + cimg::mutex(9); + captures[index] = new cv::VideoCapture(filename); + positions[index] = 0; + if (!captures[index]->isOpened()) { + delete captures[index]; + captures[index] = 0; + cimg::mutex(9,0); + cimg::fclose(cimg::fopen(filename,"rb")); // Check file availability + throw CImgIOException(_cimglist_instance + "load_video(): File '%s', unable to detect format of video file.", + cimglist_instance,filename); + } + CImg::string(filename).move_to(filenames[index]); + cimg::mutex(9,0); + } + + cimg::mutex(9); + const unsigned int nb_frames = (unsigned int)std::max(0.,captures[index]->get(_cimg_cap_prop_frame_count)); + cimg::mutex(9,0); + assign(); + + // Skip frames if requested. + bool go_on = true; + unsigned int &pos = positions[index]; + while (posgrab()) { cimg::mutex(9,0); go_on = false; break; } + cimg::mutex(9,0); + ++pos; + } + + // Read and convert frames. + const unsigned int _last_frame = std::min(nb_frames?nb_frames - 1:~0U,last_frame); + while (go_on && pos<=_last_frame) { + cv::Mat cvimg; + cimg::mutex(9); + if (captures[index]->read(cvimg)) { CImg::_cvmat2cimg(cvimg).move_to(*this); ++pos; } + else go_on = false; + cimg::mutex(9,0); + if (go_on) + for (unsigned int i = 1; go_on && igrab()) go_on = false; + cimg::mutex(9,0); + } + } + + if (!go_on || (nb_frames && pos>=nb_frames)) { // Close video stream when necessary + cimg::mutex(9); + captures[index]->release(); + delete captures[index]; + captures[index] = 0; + filenames[index].assign(); + positions[index] = 0; + index = -1; + cimg::mutex(9,0); + } + + cimg::mutex(9); + last_used_index = index; + cimg::mutex(9,0); + + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_video(): File '%s', unable to locate frame %u.", + cimglist_instance,filename,first_frame); + return *this; +#endif + } + + //! Load an image from a video file, using OpenCV library \newinstance. + static CImgList get_load_video(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1) { + return CImgList().load_video(filename,first_frame,last_frame,step_frame); + } + + //! Load an image from a video file using the external tool 'ffmpeg'. + /** + \param filename Filename to read data from. + **/ + CImgList& load_ffmpeg_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_ffmpeg_external(): Specified filename is (null).", + cimglist_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), filename_tmp2(256); + std::FILE *file = 0; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_000001.ppm",filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%%6d.ppm",filename_tmp._data); + cimg_snprintf(command,command._width,"\"%s\" -v -8 -i \"%s\" \"%s\"", + cimg::ffmpeg_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp2)._system_strescape().data()); + cimg::system(command, cimg::ffmpeg_path()); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + assign(); + unsigned int i = 1; + for (bool stop_flag = false; !stop_flag; ++i) { + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%.6u.ppm",filename_tmp._data,i); + CImg img; + try { img.load_pnm(filename_tmp2); } + catch (CImgException&) { stop_flag = true; } + if (img) { img.move_to(*this); std::remove(filename_tmp2); } + } + cimg::exception_mode(omode); + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_ffmpeg_external(): Failed to open file '%s' with external command 'ffmpeg'.", + cimglist_instance, + filename); + return *this; + } + + //! Load an image from a video file using the external tool 'ffmpeg' \newinstance. + static CImgList get_load_ffmpeg_external(const char *const filename) { + return CImgList().load_ffmpeg_external(filename); + } + + //! Load gif file, using ImageMagick or GraphicsMagick's external tools. + /** + \param filename Filename to read data from. + **/ + CImgList& load_gif_external(const char *const filename) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "load_gif_external(): Specified filename is (null).", + cimglist_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + if (!_load_gif_external(filename,false)) + if (!_load_gif_external(filename,true)) + try { assign(CImg().load_other(filename)); } catch (CImgException&) { assign(); } + if (is_empty()) + throw CImgIOException(_cimglist_instance + "load_gif_external(): Failed to open file '%s'.", + cimglist_instance,filename); + return *this; + } + + CImgList& _load_gif_external(const char *const filename, const bool use_graphicsmagick=false) { + CImg command(1024), filename_tmp(256), filename_tmp2(256); + std::FILE *file = 0; + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + if (use_graphicsmagick) cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s.png.0",filename_tmp._data); + else cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s-0.png",filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + if (use_graphicsmagick) cimg_snprintf(command,command._width,"%s convert \"%s\" \"%s.png\"", + cimg::graphicsmagick_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + else cimg_snprintf(command,command._width,"\"%s\" -coalesce \"%s\" \"%s.png\"", + cimg::imagemagick_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command, cimg::imagemagick_path()); + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + assign(); + + // Try to read a single frame gif. + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s.png",filename_tmp._data); + CImg img; + try { img.load_png(filename_tmp2); } + catch (CImgException&) { } + if (img) { img.move_to(*this); std::remove(filename_tmp2); } + else { // Try to read animated gif + unsigned int i = 0; + for (bool stop_flag = false; !stop_flag; ++i) { + if (use_graphicsmagick) cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s.png.%u",filename_tmp._data,i); + else cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s-%u.png",filename_tmp._data,i); + try { img.load_png(filename_tmp2); } + catch (CImgException&) { stop_flag = true; } + if (img) { img.move_to(*this); std::remove(filename_tmp2); } + } + } + cimg::exception_mode(omode); + return *this; + } + + //! Load gif file, using ImageMagick or GraphicsMagick's external tools \newinstance. + static CImgList get_load_gif_external(const char *const filename) { + return CImgList().load_gif_external(filename); + } + + //! Load a gzipped list, using external tool 'gunzip'. + /** + \param filename Filename to read data from. + **/ + CImgList& load_gzip_external(const char *const filename) { + if (!filename) + throw CImgIOException(_cimglist_instance + "load_gzip_external(): Specified filename is (null).", + cimglist_instance); + cimg::fclose(cimg::fopen(filename,"rb")); // Check if file exists + CImg command(1024), filename_tmp(256), body(256); + const char + *ext = cimg::split_filename(filename,body), + *ext2 = cimg::split_filename(body,0); + std::FILE *file = 0; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gunzip_path(), + CImg::string(filename)._system_strescape().data(), + CImg::string(filename_tmp)._system_strescape().data()); + cimg::system(command, cimg::gunzip_path()); + if (!(file=cimg::std_fopen(filename_tmp,"rb"))) { + cimg::fclose(cimg::fopen(filename,"r")); + throw CImgIOException(_cimglist_instance + "load_gzip_external(): Failed to open file '%s'.", + cimglist_instance, + filename); + + } else cimg::fclose(file); + load(filename_tmp); + std::remove(filename_tmp); + return *this; + } + + //! Load a gzipped list, using external tool 'gunzip' \newinstance. + static CImgList get_load_gzip_external(const char *const filename) { + return CImgList().load_gzip_external(filename); + } + + //! Load images from a TIFF file. + /** + \param filename Filename to read data from. + \param first_frame Index of first image frame to read. + \param last_frame Index of last image frame to read. + \param step_frame Step applied between each frame. + \param[out] voxel_size Voxel size, as stored in the filename. + \param[out] description Description, as stored in the filename. + **/ + CImgList& load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + const unsigned int + nfirst_frame = first_frame::get_load_tiff(filename)); +#else +#if cimg_verbosity<3 + TIFFSetWarningHandler(0); + TIFFSetErrorHandler(0); +#endif + TIFF *tif = TIFFOpen(filename,"r"); + if (tif) { + unsigned int nb_images = 0; + do ++nb_images; while (TIFFReadDirectory(tif)); + if (nfirst_frame>=nb_images || (nlast_frame!=~0U && nlast_frame>=nb_images)) + cimg::warn(_cimglist_instance + "load_tiff(): Invalid specified frame range is [%u,%u] (step %u) since " + "file '%s' contains %u image(s).", + cimglist_instance, + nfirst_frame,nlast_frame,nstep_frame,filename,nb_images); + + if (nfirst_frame>=nb_images) return assign(); + if (nlast_frame>=nb_images) nlast_frame = nb_images - 1; + assign(1 + (nlast_frame - nfirst_frame)/nstep_frame); + TIFFSetDirectory(tif,0); + cimglist_for(*this,l) _data[l]._load_tiff(tif,nfirst_frame + l*nstep_frame,voxel_size,description); + TIFFClose(tif); + } else throw CImgIOException(_cimglist_instance + "load_tiff(): Failed to open file '%s'.", + cimglist_instance, + filename); + return *this; +#endif + } + + //! Load a multi-page TIFF file \newinstance. + static CImgList get_load_tiff(const char *const filename, + const unsigned int first_frame=0, const unsigned int last_frame=~0U, + const unsigned int step_frame=1, + float *const voxel_size=0, + CImg *const description=0) { + return CImgList().load_tiff(filename,first_frame,last_frame,step_frame,voxel_size,description); + } + + //@} + //---------------------------------- + // + //! \name Data Output + //@{ + //---------------------------------- + + //! Print information about the list on the standard output. + /** + \param title Label set to the information displayed. + \param display_stats Tells if image statistics must be computed and displayed. + **/ + const CImgList& print(const char *const title=0, const bool display_stats=true) const { + unsigned int msiz = 0; + cimglist_for(*this,l) msiz+=_data[l].size(); + msiz*=sizeof(T); + const unsigned int mdisp = msiz<8*1024?0U:msiz<8*1024*1024?1U:2U; + CImg _title(64); + if (!title) cimg_snprintf(_title,_title._width,"CImgList<%s>",pixel_type()); + std::fprintf(cimg::output(),"%s%s%s%s: %sthis%s = %p, %ssize%s = %u/%u [%u %s], %sdata%s = (CImg<%s>*)%p", + cimg::t_magenta,cimg::t_bold,title?title:_title._data,cimg::t_normal, + cimg::t_bold,cimg::t_normal,(void*)this, + cimg::t_bold,cimg::t_normal,_width,_allocated_width, + mdisp==0?msiz:(mdisp==1?(msiz>>10):(msiz>>20)), + mdisp==0?"b":(mdisp==1?"Kio":"Mio"), + cimg::t_bold,cimg::t_normal,pixel_type(),(void*)begin()); + if (_data) std::fprintf(cimg::output(),"..%p.\n",(void*)((char*)end() - 1)); + else std::fprintf(cimg::output(),".\n"); + + char tmp[16] = { 0 }; + cimglist_for(*this,ll) { + cimg_snprintf(tmp,sizeof(tmp),"[%d]",ll); + std::fprintf(cimg::output()," "); + _data[ll].print(tmp,display_stats); + if (ll==3 && width()>8) { ll = width() - 5; std::fprintf(cimg::output()," ...\n"); } + } + std::fflush(cimg::output()); + return *this; + } + + //! Display the current CImgList instance in an existing CImgDisplay window (by reference). + /** + \param disp Reference to an existing CImgDisplay instance, where the current image list will be displayed. + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + \note This function displays the list images of the current CImgList instance into an existing + CImgDisplay window. + Images of the list are appended in a single temporary image for visualization purposes. + The function returns immediately. + **/ + const CImgList& display(CImgDisplay &disp, const char axis='x', const float align=0) const { + disp.display(*this,axis,align); + return *this; + } + + //! Display the current CImgList instance in a new display window. + /** + \param disp Display window. + \param display_info Tells if image information are displayed on the standard output. + \param axis Alignment axis for images viewing. + \param align Appending alignment. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + \note This function opens a new window with a specific title and displays the list images of the + current CImgList instance into it. + Images of the list are appended in a single temporary image for visualization purposes. + The function returns when a key is pressed or the display window is closed by the user. + **/ + const CImgList& display(CImgDisplay &disp, const bool display_info, + const char axis='x', const float align=0, + unsigned int *const XYZ=0, const bool exit_on_anykey=false) const { + bool is_exit = false; + return _display(disp,0,0,display_info,axis,align,XYZ,exit_on_anykey,0,true,is_exit); + } + + //! Display the current CImgList instance in a new display window. + /** + \param title Title of the opening display window. + \param display_info Tells if list information must be written on standard output. + \param axis Appending axis. Can be { 'x' | 'y' | 'z' | 'c' }. + \param align Appending alignment. + \param[in,out] XYZ Contains the XYZ coordinates at start / exit of the function. + \param exit_on_anykey Exit function when any key is pressed. + **/ + const CImgList& display(const char *const title=0, const bool display_info=true, + const char axis='x', const float align=0, + unsigned int *const XYZ=0, const bool exit_on_anykey=false) const { + CImgDisplay disp; + bool is_exit = false; + return _display(disp,title,0,display_info,axis,align,XYZ,exit_on_anykey,0,true,is_exit); + } + + const CImgList& _display(CImgDisplay &disp, const char *const title, const CImgList *const titles, + const bool display_info, const char axis, const float align, unsigned int *const XYZ, + const bool exit_on_anykey, const unsigned int orig, const bool is_first_call, + bool &is_exit) const { + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "display(): Empty instance.", + cimglist_instance); + if (!disp) { + if (axis=='x') { + unsigned int sum_width = 0, max_height = 0; + cimglist_for(*this,l) { + const CImg &img = _data[l]; + const unsigned int + w = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,false), + h = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,true); + sum_width+=w; + if (h>max_height) max_height = h; + } + disp.assign(cimg_fitscreen(sum_width,max_height,1),title?title:titles?titles->__display()._data:0,1); + } else { + unsigned int max_width = 0, sum_height = 0; + cimglist_for(*this,l) { + const CImg &img = _data[l]; + const unsigned int + w = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,false), + h = CImgDisplay::_fitscreen(img._width,img._height,img._depth,128,-85,true); + if (w>max_width) max_width = w; + sum_height+=h; + } + disp.assign(cimg_fitscreen(max_width,sum_height,1),title?title:titles?titles->__display()._data:0,1); + } + if (!title && !titles) disp.set_title("CImgList<%s> (%u)",pixel_type(),_width); + } else if (title) disp.set_title("%s",title); + else if (titles) disp.set_title("%s",titles->__display()._data); + const CImg dtitle = CImg::string(disp.title()); + if (display_info) print(disp.title()); + disp.show().flush(); + + if (_width==1) { + const unsigned int dw = disp._width, dh = disp._height; + if (!is_first_call) + disp.resize(cimg_fitscreen(_data[0]._width,_data[0]._height,_data[0]._depth),false); + disp.set_title("%s (%ux%ux%ux%u)", + dtitle.data(),_data[0]._width,_data[0]._height,_data[0]._depth,_data[0]._spectrum); + _data[0]._display(disp,0,false,XYZ,exit_on_anykey,!is_first_call); + if (disp.key()) is_exit = true; + disp.resize(cimg_fitscreen(dw,dh,1),false).set_title("%s",dtitle.data()); + } else { + bool disp_resize = !is_first_call; + while (!disp.is_closed() && !is_exit) { + const CImg s = _select(disp,0,true,axis,align,exit_on_anykey,orig,disp_resize,!is_first_call,true); + disp_resize = true; + if (s[0]<0 && !disp.wheel()) { // No selections done + if (disp.button()&2) { disp.flush(); break; } + is_exit = true; + } else if (disp.wheel()) { // Zoom in/out + const int wheel = disp.wheel(); + disp.set_wheel(); + if (!is_first_call && wheel<0) break; + if (wheel>0 && _width>=4) { + const unsigned int + delta = std::max(1U,(unsigned int)cimg::round(0.3*_width)), + ind0 = (unsigned int)std::max(0,s[0] - (int)delta), + ind1 = (unsigned int)std::min(width() - 1,s[0] + (int)delta); + if ((ind0!=0 || ind1!=_width - 1) && ind1 - ind0>=3) { + const CImgList sublist = get_shared_images(ind0,ind1); + CImgList t_sublist; + if (titles) t_sublist = titles->get_shared_images(ind0,ind1); + sublist._display(disp,0,titles?&t_sublist:0,false,axis,align,XYZ,exit_on_anykey, + orig + ind0,false,is_exit); + } + } + } else if (s[0]!=0 || s[1]!=width() - 1) { + const CImgList sublist = get_shared_images(s[0],s[1]); + CImgList t_sublist; + if (titles) t_sublist = titles->get_shared_images(s[0],s[1]); + sublist._display(disp,0,titles?&t_sublist:0,false,axis,align,XYZ,exit_on_anykey, + orig + s[0],false,is_exit); + } + disp.set_title("%s",dtitle.data()); + } + } + return *this; + } + + // [internal] Return string to describe display title. + CImg __display() const { + CImg res, str; + cimglist_for(*this,l) { + CImg::string((char*)_data[l]).move_to(str); + if (l!=width() - 1) { + str.resize(str._width + 1,1,1,1,0); + str[str._width - 2] = ','; + str[str._width - 1] = ' '; + } + res.append(str,'x'); + } + if (!res) return CImg(1,1,1,1,0).move_to(res); + cimg::strellipsize(res,128,false); + if (_width>1) { + const unsigned int l = (unsigned int)std::strlen(res); + if (res._width<=l + 16) res.resize(l + 16,1,1,1,0); + cimg_snprintf(res._data + l,16," (#%u)",_width); + } + return res; + } + + //! Save list into a file. + /** + \param filename Filename to write data to. + \param number When positive, represents an index added to the filename. Otherwise, no number is added. + \param digits Number of digits used for adding the number to the filename. + **/ + const CImgList& save(const char *const filename, const int number=-1, const unsigned int digits=6) const { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save(): Specified filename is (null).", + cimglist_instance); + // Do not test for empty instances, since .cimg format is able to manage empty instances. + const bool is_stdout = *filename=='-' && (!filename[1] || filename[1]=='.'); + const char *const ext = cimg::split_filename(filename); + CImg nfilename(1024); + const char *const fn = is_stdout?filename:number>=0?cimg::number_filename(filename,number,digits,nfilename): + filename; + +#ifdef cimglist_save_plugin + cimglist_save_plugin(fn); +#endif +#ifdef cimglist_save_plugin1 + cimglist_save_plugin1(fn); +#endif +#ifdef cimglist_save_plugin2 + cimglist_save_plugin2(fn); +#endif +#ifdef cimglist_save_plugin3 + cimglist_save_plugin3(fn); +#endif +#ifdef cimglist_save_plugin4 + cimglist_save_plugin4(fn); +#endif +#ifdef cimglist_save_plugin5 + cimglist_save_plugin5(fn); +#endif +#ifdef cimglist_save_plugin6 + cimglist_save_plugin6(fn); +#endif +#ifdef cimglist_save_plugin7 + cimglist_save_plugin7(fn); +#endif +#ifdef cimglist_save_plugin8 + cimglist_save_plugin8(fn); +#endif + if (!cimg::strcasecmp(ext,"cimgz")) return save_cimg(fn,true); + else if (!cimg::strcasecmp(ext,"cimg") || !*ext) return save_cimg(fn,false); + else if (!cimg::strcasecmp(ext,"yuv")) return save_yuv(fn,444,true); + else if (!cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) return save_video(fn); +#ifdef cimg_use_tiff + else if (!cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff")) return save_tiff(fn); +#endif + else if (!cimg::strcasecmp(ext,"gz")) return save_gzip_external(fn); + else { + if (_width==1) _data[0].save(fn,-1); + else cimglist_for(*this,l) { _data[l].save(fn,is_stdout?-1:l); if (is_stdout) std::fputc(EOF,cimg::_stdout()); } + } + return *this; + } + + //! Tell if an image list can be saved as one single file. + /** + \param filename Filename, as a C-string. + \return \c true if the file format supports multiple images, \c false otherwise. + **/ + static bool is_saveable(const char *const filename) { + const char *const ext = cimg::split_filename(filename); + if (!cimg::strcasecmp(ext,"cimgz") || +#ifdef cimg_use_tiff + !cimg::strcasecmp(ext,"tif") || + !cimg::strcasecmp(ext,"tiff") || +#endif + !cimg::strcasecmp(ext,"yuv") || + !cimg::strcasecmp(ext,"avi") || + !cimg::strcasecmp(ext,"mov") || + !cimg::strcasecmp(ext,"asf") || + !cimg::strcasecmp(ext,"divx") || + !cimg::strcasecmp(ext,"flv") || + !cimg::strcasecmp(ext,"mpg") || + !cimg::strcasecmp(ext,"m1v") || + !cimg::strcasecmp(ext,"m2v") || + !cimg::strcasecmp(ext,"m4v") || + !cimg::strcasecmp(ext,"mjp") || + !cimg::strcasecmp(ext,"mp4") || + !cimg::strcasecmp(ext,"mkv") || + !cimg::strcasecmp(ext,"mpe") || + !cimg::strcasecmp(ext,"movie") || + !cimg::strcasecmp(ext,"ogm") || + !cimg::strcasecmp(ext,"ogg") || + !cimg::strcasecmp(ext,"ogv") || + !cimg::strcasecmp(ext,"qt") || + !cimg::strcasecmp(ext,"rm") || + !cimg::strcasecmp(ext,"vob") || + !cimg::strcasecmp(ext,"webm") || + !cimg::strcasecmp(ext,"wmv") || + !cimg::strcasecmp(ext,"xvid") || + !cimg::strcasecmp(ext,"mpeg")) return true; + return false; + } + + //! Save image sequence as a GIF animated file. + /** + \param filename Filename to write data to. + \param fps Number of desired frames per second. + \param nb_loops Number of loops (\c 0 for infinite looping). + **/ + const CImgList& save_gif_external(const char *const filename, const float fps=25, + const unsigned int nb_loops=0) { + CImg command(1024), filename_tmp(256), filename_tmp2(256); + CImgList filenames; + std::FILE *file = 0; + +#ifdef cimg_use_png +#define _cimg_save_gif_extension "png" +#else +#define _cimg_save_gif_extension "ppm" +#endif + + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_000001." _cimg_save_gif_extension,filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + cimglist_for(*this,l) { + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%.6u." _cimg_save_gif_extension,filename_tmp._data,l + 1); + CImg::string(filename_tmp2).move_to(filenames); + if (_data[l]._depth>1 || _data[l]._spectrum!=3) _data[l].get_resize(-100,-100,1,3).save(filename_tmp2); + else _data[l].save(filename_tmp2); + } + cimg_snprintf(command,command._width,"\"%s\" -delay %u -loop %u", + cimg::imagemagick_path(),(unsigned int)std::max(0.f,cimg::round(100/fps)),nb_loops); + CImg::string(command).move_to(filenames,0); + cimg_snprintf(command,command._width,"\"%s\"", + CImg::string(filename)._system_strescape().data()); + CImg::string(command).move_to(filenames); + CImg _command = filenames>'x'; + cimg_for(_command,p,char) if (!*p) *p = ' '; + _command.back() = 0; + + cimg::system(_command, cimg::imagemagick_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimglist_instance + "save_gif_external(): Failed to save file '%s' with external command 'magick/convert'.", + cimglist_instance, + filename); + else cimg::fclose(file); + cimglist_for_in(*this,1,filenames._width - 1,l) std::remove(filenames[l]); + return *this; + } + + //! Save list as a YUV image sequence file. + /** + \param filename Filename to write data to. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param is_rgb Tells if the RGB to YUV conversion must be done for saving. + **/ + const CImgList& save_yuv(const char *const filename=0, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + return _save_yuv(0,filename,chroma_subsampling,is_rgb); + } + + //! Save image sequence into a YUV file. + /** + \param file File to write data to. + \param chroma_subsampling Type of chroma subsampling. Can be { 420 | 422 | 444 }. + \param is_rgb Tells if the RGB to YUV conversion must be done for saving. + **/ + const CImgList& save_yuv(std::FILE *const file, + const unsigned int chroma_subsampling=444, + const bool is_rgb=true) const { + return _save_yuv(file,0,chroma_subsampling,is_rgb); + } + + const CImgList& _save_yuv(std::FILE *const file, const char *const filename, + const unsigned int chroma_subsampling, + const bool is_rgb) const { + if (!file && !filename) + throw CImgArgumentException(_cimglist_instance + "save_yuv(): Specified filename is (null).", + cimglist_instance); + if (chroma_subsampling!=420 && chroma_subsampling!=422 && chroma_subsampling!=444) + throw CImgArgumentException(_cimglist_instance + "save_yuv(): Specified chroma subsampling %u is invalid, for file '%s'.", + cimglist_instance, + chroma_subsampling,filename?filename:"(FILE*)"); + if (is_empty()) { cimg::fempty(file,filename); return *this; } + const unsigned int + cfx = chroma_subsampling==420 || chroma_subsampling==422?2:1, + cfy = chroma_subsampling==420?2:1, + w0 = (*this)[0]._width, h0 = (*this)[0]._height, + width0 = w0 + (w0%cfx), height0 = h0 + (h0%cfy); + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + cimglist_for(*this,l) { + const CImg &frame = (*this)[l]; + cimg_forZ(frame,z) { + CImg YUV; + if (sizeof(T)==1 && !is_rgb && + frame._width==width0 && frame._height==height0 && frame._depth==1 && frame._spectrum==3) + YUV.assign((unsigned char*)frame._data,width0,height0,1,3,true); + else { + YUV = frame.get_slice(z); + if (YUV._width!=width0 || YUV._height!=height0) YUV.resize(width0,height0,1,-100,0); + if (YUV._spectrum!=3) YUV.resize(-100,-100,1,3,YUV._spectrum==1?1:0); + if (is_rgb) YUV.RGBtoYCbCr(); + } + if (chroma_subsampling==444) + cimg::fwrite(YUV._data,(size_t)YUV._width*YUV._height*3,nfile); + else { + cimg::fwrite(YUV._data,(size_t)YUV._width*YUV._height,nfile); + CImg UV = YUV.get_channels(1,2); + UV.resize(UV._width/cfx,UV._height/cfy,1,2,2); + cimg::fwrite(UV._data,(size_t)UV._width*UV._height*2,nfile); + } + } + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save list into a .cimg file. + /** + \param filename Filename to write data to. + \param is_compressed Tells if data compression must be enabled. + **/ + const CImgList& save_cimg(const char *const filename, const bool is_compressed=false) const { + return _save_cimg(0,filename,is_compressed); + } + + const CImgList& _save_cimg(std::FILE *const file, const char *const filename, const bool is_compressed) const { + if (!file && !filename) + throw CImgArgumentException(_cimglist_instance + "save_cimg(): Specified filename is (null).", + cimglist_instance); +#ifndef cimg_use_zlib + if (is_compressed) + cimg::warn(_cimglist_instance + "save_cimg(): Unable to save compressed data in file '%s' unless zlib is enabled, " + "saving them uncompressed.", + cimglist_instance, + filename?filename:"(FILE*)"); +#endif + const char *const ptype = pixel_type(), *const etype = cimg::endianness()?"big":"little"; + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const bool is_bool = ptype==cimg::type::string(); + if (!is_bool && std::strstr(ptype,"unsigned")==ptype) + std::fprintf(nfile,"%u unsigned_%s %s_endian\n",_width,ptype + 9,etype); + else + std::fprintf(nfile,"%u %s %s_endian\n",_width,ptype,etype); + + cimglist_for(*this,l) { + const CImg& img = _data[l]; + std::fprintf(nfile,"%u %u %u %u",img._width,img._height,img._depth,img._spectrum); + if (img._data) { + CImg tmp; + if (cimg::endianness()) { tmp = img; cimg::invert_endianness(tmp._data,tmp.size()); } + const CImg& ref = cimg::endianness()?tmp:img; + bool failed_to_compress = true; + if (is_compressed) { +#ifdef cimg_use_zlib + Bytef *cbuf = 0; + uLongf csiz = 0; + + if (is_bool) { // Boolean data (bitwise) + ulongT siz; + const unsigned char *const buf = ref._bool2uchar(siz,false); + csiz = siz + siz/100 + 16; + cbuf = new Bytef[csiz]; + failed_to_compress = (bool)compress(cbuf,&csiz,(Bytef*)buf,siz); + if (!failed_to_compress) { + std::fprintf(nfile," #%lu\n",csiz); + cimg::fwrite(cbuf,csiz,nfile); + } + delete[] buf; + } else { // Non-boolean data + const ulongT siz = sizeof(T)*ref.size(); + csiz = siz + siz/100 + 16; + cbuf = new Bytef[csiz]; + failed_to_compress = (bool)compress(cbuf,&csiz,(Bytef*)ref._data,siz); + if (!failed_to_compress) { + std::fprintf(nfile," #%lu\n",csiz); + cimg::fwrite(cbuf,csiz,nfile); + } + } + if (failed_to_compress) + cimg::warn(_cimglist_instance + "save_cimg(): Failed to save compressed data for file '%s', saving them uncompressed.", + cimglist_instance, + filename?filename:"(FILE*)"); + delete[] cbuf; +#endif + } + if (failed_to_compress) { // Write non-compressed + std::fputc('\n',nfile); + if (is_bool) { // Boolean data (bitwise) + ulongT siz; + const unsigned char *const buf = ref._bool2uchar(siz,false); + cimg::fwrite(buf,siz,nfile); + delete[] buf; + } else cimg::fwrite(ref._data,ref.size(),nfile); // Non-boolean data + } + } else std::fputc('\n',nfile); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Save list into a .cimg file. + /** + \param file File to write data to. + \param is_compressed Tells if data compression must be enabled. + **/ + const CImgList& save_cimg(std::FILE *file, const bool is_compressed=false) const { + return _save_cimg(file,0,is_compressed); + } + + const CImgList& _save_cimg(std::FILE *const file, const char *const filename, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { +#define _cimg_save_cimg_case(Ts,Tss) \ + if (!saved && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + for (unsigned int l = 0; l0) { \ + if (l=W || y0>=H || z0>=D || c0>=D) cimg::fseek(nfile,W*H*D*C*sizeof(Tss),SEEK_CUR); \ + else { \ + const CImg& img = (*this)[l - n0]; \ + const T *ptrs = img._data; \ + const unsigned int \ + x1 = x0 + img._width - 1, \ + y1 = y0 + img._height - 1, \ + z1 = z0 + img._depth - 1, \ + c1 = c0 + img._spectrum - 1, \ + nx1 = x1>=W?W - 1:x1, \ + ny1 = y1>=H?H - 1:y1, \ + nz1 = z1>=D?D - 1:z1, \ + nc1 = c1>=C?C - 1:c1; \ + CImg raw(1 + nx1 - x0); \ + const unsigned int skipvb = c0*W*H*D*sizeof(Tss); \ + if (skipvb) cimg::fseek(nfile,skipvb,SEEK_CUR); \ + for (unsigned int v = 1 + nc1 - c0; v; --v) { \ + const unsigned int skipzb = z0*W*H*sizeof(Tss); \ + if (skipzb) cimg::fseek(nfile,skipzb,SEEK_CUR); \ + for (unsigned int z = 1 + nz1 - z0; z; --z) { \ + const unsigned int skipyb = y0*W*sizeof(Tss); \ + if (skipyb) cimg::fseek(nfile,skipyb,SEEK_CUR); \ + for (unsigned int y = 1 + ny1 - y0; y; --y) { \ + const unsigned int skipxb = x0*sizeof(Tss); \ + if (skipxb) cimg::fseek(nfile,skipxb,SEEK_CUR); \ + raw.assign(ptrs, raw._width); \ + ptrs+=img._width; \ + if (endian) cimg::invert_endianness(raw._data,raw._width); \ + cimg::fwrite(raw._data,raw._width,nfile); \ + const unsigned int skipxe = (W - 1 - nx1)*sizeof(Tss); \ + if (skipxe) cimg::fseek(nfile,skipxe,SEEK_CUR); \ + } \ + const unsigned int skipye = (H - 1 - ny1)*W*sizeof(Tss); \ + if (skipye) cimg::fseek(nfile,skipye,SEEK_CUR); \ + } \ + const unsigned int skipze = (D - 1 - nz1)*W*H*sizeof(Tss); \ + if (skipze) cimg::fseek(nfile,skipze,SEEK_CUR); \ + } \ + const unsigned int skipve = (C - 1 - nc1)*W*H*D*sizeof(Tss); \ + if (skipve) cimg::fseek(nfile,skipve,SEEK_CUR); \ + } \ + } \ + } \ + saved = true; \ + } + + if (!file && !filename) + throw CImgArgumentException(_cimglist_instance + "save_cimg(): Specified filename is (null).", + cimglist_instance); + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "save_cimg(): Empty instance, for file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + + std::FILE *const nfile = file?file:cimg::fopen(filename,"rb+"); + bool saved = false, endian = cimg::endianness(); + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N, W, H, D, C; + int i, err; + j = 0; while ((i=std::fgetc(nfile))!='\n' && i!=EOF && j<256) tmp[j++] = (char)i; tmp[j] = 0; + err = cimg_sscanf(tmp,"%u%*c%255[A-Za-z64_]%*c%255[sA-Za-z_ ]",&N,str_pixeltype._data,str_endian._data); + if (err<2) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "save_cimg(): CImg header not found in file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)"); + } + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + const unsigned int lmax = std::min(N,n0 + _width); + _cimg_save_cimg_case("bool",bool); + _cimg_save_cimg_case("unsigned_char",unsigned char); + _cimg_save_cimg_case("uchar",unsigned char); + _cimg_save_cimg_case("char",char); + _cimg_save_cimg_case("unsigned_short",unsigned short); + _cimg_save_cimg_case("ushort",unsigned short); + _cimg_save_cimg_case("short",short); + _cimg_save_cimg_case("unsigned_int",unsigned int); + _cimg_save_cimg_case("uint",unsigned int); + _cimg_save_cimg_case("int",int); + _cimg_save_cimg_case("unsigned_int64",uint64T); + _cimg_save_cimg_case("uint64",uint64T); + _cimg_save_cimg_case("int64",int64T); + _cimg_save_cimg_case("float",float); + _cimg_save_cimg_case("double",double); + if (!saved) { + if (!file) cimg::fclose(nfile); + throw CImgIOException(_cimglist_instance + "save_cimg(): Unsupported data type '%s' for file '%s'.", + cimglist_instance, + filename?filename:"(FILE*)",str_pixeltype._data); + } + if (!file) cimg::fclose(nfile); + return *this; + } + + //! Insert the image instance into into an existing .cimg file, at specified coordinates. + /** + \param filename Filename to write data to. + \param n0 Starting index of images to write. + \param x0 Starting X-coordinates of image regions to write. + \param y0 Starting Y-coordinates of image regions to write. + \param z0 Starting Z-coordinates of image regions to write. + \param c0 Starting C-coordinates of image regions to write. + **/ + const CImgList& save_cimg(const char *const filename, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + return _save_cimg(0,filename,n0,x0,y0,z0,c0); + } + + //! Insert the image instance into into an existing .cimg file, at specified coordinates. + /** + \param file File to write data to. + \param n0 Starting index of images to write. + \param x0 Starting X-coordinates of image regions to write. + \param y0 Starting Y-coordinates of image regions to write. + \param z0 Starting Z-coordinates of image regions to write. + \param c0 Starting C-coordinates of image regions to write. + **/ + const CImgList& save_cimg(std::FILE *const file, + const unsigned int n0, + const unsigned int x0, const unsigned int y0, + const unsigned int z0, const unsigned int c0) const { + return _save_cimg(file,0,n0,x0,y0,z0,c0); + } + + static void _save_empty_cimg(std::FILE *const file, const char *const filename, + const unsigned int nb, + const unsigned int dx, const unsigned int dy, + const unsigned int dz, const unsigned int dc) { + std::FILE *const nfile = file?file:cimg::fopen(filename,"wb"); + const ulongT siz = (ulongT)dx*dy*dz*dc*sizeof(T); + std::fprintf(nfile,"%u %s\n",nb,pixel_type()); + for (unsigned int i=nb; i; --i) { + std::fprintf(nfile,"%u %u %u %u\n",dx,dy,dz,dc); + for (ulongT off = siz; off; --off) std::fputc(0,nfile); + } + if (!file) cimg::fclose(nfile); + } + + //! Save empty (non-compressed) .cimg file with specified dimensions. + /** + \param filename Filename to write data to. + \param nb Number of images to write. + \param dx Width of images in the written file. + \param dy Height of images in the written file. + \param dz Depth of images in the written file. + \param dc Spectrum of images in the written file. + **/ + static void save_empty_cimg(const char *const filename, + const unsigned int nb, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return _save_empty_cimg(0,filename,nb,dx,dy,dz,dc); + } + + //! Save empty .cimg file with specified dimensions. + /** + \param file File to write data to. + \param nb Number of images to write. + \param dx Width of images in the written file. + \param dy Height of images in the written file. + \param dz Depth of images in the written file. + \param dc Spectrum of images in the written file. + **/ + static void save_empty_cimg(std::FILE *const file, + const unsigned int nb, + const unsigned int dx, const unsigned int dy=1, + const unsigned int dz=1, const unsigned int dc=1) { + return _save_empty_cimg(file,0,nb,dx,dy,dz,dc); + } + + //! Save list as a TIFF file. + /** + \param filename Filename to write data to. + \param compression_type Compression mode used to write data. + \param voxel_size Voxel size, to be stored in the filename. + \param description Description, to be stored in the filename. + \param use_bigtiff Allow to save big tiff files (>4Gb). + **/ + const CImgList& save_tiff(const char *const filename, const unsigned int compression_type=0, + const float *const voxel_size=0, const char *const description=0, + const bool use_bigtiff=true) const { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save_tiff(): Specified filename is (null).", + cimglist_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + +#ifndef cimg_use_tiff + if (_width==1) _data[0].save_tiff(filename,compression_type,voxel_size,description,use_bigtiff); + else cimglist_for(*this,l) { + CImg nfilename(1024); + cimg::number_filename(filename,l,6,nfilename); + _data[l].save_tiff(nfilename,compression_type,voxel_size,description,use_bigtiff); + } +#else + ulongT siz = 0; + cimglist_for(*this,l) siz+=_data[l].size(); + const bool _use_bigtiff = use_bigtiff && sizeof(siz)>=8 && siz*sizeof(T)>=1UL<<31; // No bigtiff for small images + TIFF *tif = TIFFOpen(filename,_use_bigtiff?"w8":"w4"); + if (tif) { + for (unsigned int dir = 0, l = 0; l<_width; ++l) { + const CImg& img = (*this)[l]; + cimg_forZ(img,z) img._save_tiff(tif,dir++,z,compression_type,voxel_size,description); + } + TIFFClose(tif); + } else + throw CImgIOException(_cimglist_instance + "save_tiff(): Failed to open stream for file '%s'.", + cimglist_instance, + filename); +#endif + return *this; + } + + //! Save list as a gzipped file, using external tool 'gzip'. + /** + \param filename Filename to write data to. + **/ + const CImgList& save_gzip_external(const char *const filename) const { + if (!filename) + throw CImgIOException(_cimglist_instance + "save_gzip_external(): Specified filename is (null).", + cimglist_instance); + CImg command(1024), filename_tmp(256), body(256); + const char + *ext = cimg::split_filename(filename,body), + *ext2 = cimg::split_filename(body,0); + std::FILE *file; + do { + if (!cimg::strcasecmp(ext,"gz")) { + if (*ext2) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext2); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } else { + if (*ext) cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext); + else cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s.cimg", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + } + if ((file=cimg::std_fopen(filename_tmp,"rb"))!=0) cimg::fclose(file); + } while (file); + + if (is_saveable(body)) { + save(filename_tmp); + cimg_snprintf(command,command._width,"\"%s\" -c \"%s\" > \"%s\"", + cimg::gzip_path(), + CImg::string(filename_tmp)._system_strescape().data(), + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::gzip_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimglist_instance + "save_gzip_external(): Failed to save file '%s' with external command 'gzip'.", + cimglist_instance, + filename); + else cimg::fclose(file); + std::remove(filename_tmp); + } else { + CImg nfilename(1024); + cimglist_for(*this,l) { + cimg::number_filename(body,l,6,nfilename); + if (*ext) cimg_sprintf(nfilename._data + std::strlen(nfilename),".%s",ext); + _data[l].save_gzip_external(nfilename); + } + } + return *this; + } + + //! Save image sequence (using the OpenCV library when available). + /** + \param filename Filename to write data to. + \param fps Number of frames per second. + \param codec Type of compression (See http://www.fourcc.org/codecs.php to see available codecs). + \param keep_open Tells if the video writer associated to the specified filename + must be kept open or not (to allow frames to be added in the same file afterwards). + **/ + const CImgList& save_video(const char *const filename, const unsigned int fps=25, + const char *codec=0, const bool keep_open=false) const { +#ifndef cimg_use_opencv + cimg::unused(codec,keep_open); + return save_ffmpeg_external(filename,fps); +#else + try { + static cv::VideoWriter *writers[32] = { 0 }; + static CImgList filenames(32); + static CImg sizes(32,2,1,1,0); + static int last_used_index = -1; + + // Detect if a video writer already exists for the specified filename. + cimg::mutex(9); + int index = -1; + if (filename) { + if (last_used_index>=0 && !std::strcmp(filename,filenames[last_used_index])) { + index = last_used_index; + } else cimglist_for(filenames,l) if (filenames[l] && !std::strcmp(filename,filenames[l])) { + index = l; break; + } + } else index = last_used_index; + cimg::mutex(9,0); + + // Find empty slot for capturing video stream. + if (index<0) { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save_video(): No already open video writer found. You must specify a " + "non-(null) filename argument for the first call.", + cimglist_instance); + else { cimg::mutex(9); cimglist_for(filenames,l) if (!filenames[l]) { index = l; break; } cimg::mutex(9,0); } + if (index<0) + throw CImgIOException(_cimglist_instance + "save_video(): File '%s', no video writer slots available. " + "You have to release some of your previously opened videos.", + cimglist_instance,filename); + if (is_empty()) + throw CImgInstanceException(_cimglist_instance + "save_video(): Instance list is empty.", + cimglist_instance); + const unsigned int W = _data?_data[0]._width:0, H = _data?_data[0]._height:0; + if (!W || !H) + throw CImgInstanceException(_cimglist_instance + "save_video(): Frame [0] is an empty image.", + cimglist_instance); + const char + *const _codec = codec && *codec?codec:"h264", + codec0 = cimg::uppercase(_codec[0]), + codec1 = _codec[0]?cimg::uppercase(_codec[1]):0, + codec2 = _codec[1]?cimg::uppercase(_codec[2]):0, + codec3 = _codec[2]?cimg::uppercase(_codec[3]):0; + cimg::mutex(9); + writers[index] = new cv::VideoWriter(filename,_cimg_fourcc(codec0,codec1,codec2,codec3),fps,cv::Size(W,H)); + if (!writers[index]->isOpened()) { + delete writers[index]; + writers[index] = 0; + cimg::mutex(9,0); + throw CImgIOException(_cimglist_instance + "save_video(): File '%s', unable to initialize video writer with codec '%c%c%c%c'.", + cimglist_instance,filename, + codec0,codec1,codec2,codec3); + } + CImg::string(filename).move_to(filenames[index]); + sizes(index,0) = W; + sizes(index,1) = H; + cimg::mutex(9,0); + } + + if (!is_empty()) { + const unsigned int W = sizes(index,0), H = sizes(index,1); + cimg::mutex(9); + cimglist_for(*this,l) { + CImg &src = _data[l]; + if (src.is_empty()) + cimg::warn(_cimglist_instance + "save_video(): Skip empty frame %d for file '%s'.", + cimglist_instance,l,filename); + if (src._depth>1 || src._spectrum>3) + cimg::warn(_cimglist_instance + "save_video(): Frame %u has incompatible dimension (%u,%u,%u,%u). " + "Some image data may be ignored when writing frame into video file '%s'.", + cimglist_instance,l,src._width,src._height,src._depth,src._spectrum,filename); + if (src._width==W && src._height==H && src._spectrum==3) + writers[index]->write(CImg(src)._cimg2cvmat()); + else { + CImg _src(src,false); + _src.channels(0,std::min(_src._spectrum - 1,2U)).resize(W,H); + _src.resize(W,H,1,3,_src._spectrum==1); + writers[index]->write(_src._cimg2cvmat()); + } + } + cimg::mutex(9,0); + } + + cimg::mutex(9); + if (!keep_open) { + delete writers[index]; + writers[index] = 0; + filenames[index].assign(); + sizes(index,0) = sizes(index,1) = 0; + last_used_index = -1; + } else last_used_index = index; + cimg::mutex(9,0); + } catch (CImgIOException &e) { + if (!keep_open) return save_ffmpeg_external(filename,fps); + throw e; + } + return *this; +#endif + } + + //! Save image sequence, using the external tool 'ffmpeg'. + /** + \param filename Filename to write data to. + \param fps Number of frames per second. + \param codec Type of compression. + \param bitrate Output bitrate + **/ + const CImgList& save_ffmpeg_external(const char *const filename, const unsigned int fps=25, + const char *const codec=0, const unsigned int bitrate=2048) const { + if (!filename) + throw CImgArgumentException(_cimglist_instance + "save_ffmpeg_external(): Specified filename is (null).", + cimglist_instance); + if (is_empty()) { cimg::fempty(0,filename); return *this; } + + const char + *const ext = cimg::split_filename(filename), + *const _codec = codec?codec: + !cimg::strcasecmp(ext,"flv")?"flv": + !cimg::strcasecmp(ext,"mp4")?"h264":"mpeg2video"; + + CImg command(1024), filename_tmp(256), filename_tmp2(256); + CImgList filenames; + std::FILE *file = 0; + cimglist_for(*this,l) if (!_data[l].is_sameXYZ(_data[0])) + throw CImgInstanceException(_cimglist_instance + "save_ffmpeg_external(): Invalid instance dimensions for file '%s'.", + cimglist_instance, + filename); + do { + cimg_snprintf(filename_tmp,filename_tmp._width,"%s%c%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand()); + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_000001.ppm",filename_tmp._data); + if ((file=cimg::std_fopen(filename_tmp2,"rb"))!=0) cimg::fclose(file); + } while (file); + cimglist_for(*this,l) { + cimg_snprintf(filename_tmp2,filename_tmp2._width,"%s_%.6u.ppm",filename_tmp._data,l + 1); + CImg::string(filename_tmp2).move_to(filenames); + CImg tmp = _data[l].get_shared(); + if (tmp._width%2 || tmp._height%2) // Force output to have an even number of columns and rows + tmp.assign(tmp.get_resize(tmp._width + (tmp._width%2),tmp._height + (tmp._height%2),1,-100,0),false); + if (tmp._depth>1 || tmp._spectrum!=3) // Force output to be one slice, in color + tmp.assign(tmp.get_resize(-100,-100,1,3),false); + tmp.save_pnm(filename_tmp2); + } + cimg_snprintf(command,command._width, + "\"%s\" -v -8 -y -i \"%s_%%6d.ppm\" -pix_fmt yuv420p -vcodec %s -b %uk -r %u \"%s\"", + cimg::ffmpeg_path(), + CImg::string(filename_tmp)._system_strescape().data(), + _codec,bitrate,fps, + CImg::string(filename)._system_strescape().data()); + cimg::system(command, cimg::ffmpeg_path()); + file = cimg::std_fopen(filename,"rb"); + if (!file) + throw CImgIOException(_cimglist_instance + "save_ffmpeg_external(): Failed to save file '%s' with external command 'ffmpeg'.", + cimglist_instance, + filename); + else cimg::fclose(file); + cimglist_for(*this,l) std::remove(filenames[l]); + return *this; + } + + //! Serialize a CImgList instance into a raw CImg buffer. + /** + \param is_compressed tells if zlib compression must be used for serialization + (this requires 'cimg_use_zlib' been enabled). + **/ + CImg get_serialize(const bool is_compressed=false) const { +#ifndef cimg_use_zlib + if (is_compressed) + cimg::warn(_cimglist_instance + "get_serialize(): Unable to compress data unless zlib is enabled, " + "storing them uncompressed.", + cimglist_instance); +#endif + CImgList stream; + CImg tmpstr(128); + const char *const ptype = pixel_type(), *const etype = cimg::endianness()?"big":"little"; + if (std::strstr(ptype,"unsigned")==ptype) + cimg_snprintf(tmpstr,tmpstr._width,"%u unsigned_%s %s_endian\n",_width,ptype + 9,etype); + else + cimg_snprintf(tmpstr,tmpstr._width,"%u %s %s_endian\n",_width,ptype,etype); + CImg::string(tmpstr,false).move_to(stream); + cimglist_for(*this,l) { + const CImg& img = _data[l]; + cimg_snprintf(tmpstr,tmpstr._width,"%u %u %u %u",img._width,img._height,img._depth,img._spectrum); + CImg::string(tmpstr,false).move_to(stream); + if (img._data) { + CImg tmp; + if (cimg::endianness()) { tmp = img; cimg::invert_endianness(tmp._data,tmp.size()); } + const CImg& ref = cimg::endianness()?tmp:img; + bool failed_to_compress = true; + if (is_compressed) { +#ifdef cimg_use_zlib + const ulongT siz = sizeof(T)*ref.size(); + uLongf csiz = (ulongT)compressBound(siz); + Bytef *const cbuf = new Bytef[csiz]; + if (compress(cbuf,&csiz,(Bytef*)ref._data,siz)) + cimg::warn(_cimglist_instance + "get_serialize(): Failed to save compressed data, saving them uncompressed.", + cimglist_instance); + else { + cimg_snprintf(tmpstr,tmpstr._width," #%lu\n",csiz); + CImg::string(tmpstr,false).move_to(stream); + CImg(cbuf,csiz).move_to(stream); + delete[] cbuf; + failed_to_compress = false; + } +#endif + } + if (failed_to_compress) { // Write in a non-compressed way + CImg::string("\n",false).move_to(stream); + stream.insert(1); + stream.back().assign((unsigned char*)ref._data,ref.size()*sizeof(T),1,1,1,true); + } + } else CImg::string("\n",false).move_to(stream); + } + cimglist_apply(stream,unroll)('y'); + return stream>'y'; + } + + //! Unserialize a CImg serialized buffer into a CImgList list. + template + static CImgList get_unserialize(const CImg& buffer) { +#ifdef cimg_use_zlib +#define _cimgz_unserialize_case(Tss) { \ + Bytef *cbuf = 0; \ + if (sizeof(t)!=1 || buffer.pixel_type()==cimg::type::string()) { \ + cbuf = new Bytef[csiz]; Bytef *_cbuf = cbuf; \ + for (ulongT k = 0; k::get_unserialize(): Unable to unserialize compressed data " \ + "unless zlib is enabled.", \ + pixel_type()); +#endif + +#define _cimg_unserialize_case(Ts,Tss) \ + if (!loaded && !cimg::strcasecmp(Ts,str_pixeltype)) { \ + for (unsigned int l = 0; l::unserialize(): Invalid specified size (%u,%u,%u,%u) for " \ + "image #%u in serialized buffer.", \ + pixel_type(),W,H,D,C,l); \ + if (W*H*D*C>0) { \ + CImg raw; \ + CImg &img = res._data[l]; \ + if (err==5) _cimgz_unserialize_case(Tss) \ + else { \ + raw.assign(W,H,D,C); \ + CImg _raw((unsigned char*)raw._data,W*sizeof(Tss),H,D,C,true); \ + if (sizeof(t)==1) { std::memcpy(_raw,stream,_raw.size()); stream+=_raw.size(); } \ + else cimg_for(_raw,p,unsigned char) *p = (unsigned char)*(stream++); \ + } \ + if (endian!=cimg::endianness()) cimg::invert_endianness(raw._data,raw.size()); \ + raw.move_to(img); \ + } \ + } \ + loaded = true; \ + } + + if (buffer.is_empty()) + throw CImgArgumentException("CImgList<%s>::get_unserialize(): Specified serialized buffer is (null).", + pixel_type()); + CImgList res; + const t *stream = buffer._data, *const estream = buffer._data + buffer.size(); + bool loaded = false, endian = cimg::endianness(), is_bytef = false; + CImg tmp(256), str_pixeltype(256), str_endian(256); + *tmp = *str_pixeltype = *str_endian = 0; + unsigned int j, N = 0, W, H, D, C; + uint64T csiz; + int i, err; + cimg::unused(is_bytef); + do { + j = 0; while ((i=(int)*stream)!='\n' && stream::get_unserialize(): CImg header not found in serialized buffer.", + pixel_type()); + if (!cimg::strncasecmp("little",str_endian,6)) endian = false; + else if (!cimg::strncasecmp("big",str_endian,3)) endian = true; + res.assign(N); + _cimg_unserialize_case("bool",bool); + _cimg_unserialize_case("unsigned_char",unsigned char); + _cimg_unserialize_case("uchar",unsigned char); + _cimg_unserialize_case("char",char); + _cimg_unserialize_case("unsigned_short",unsigned short); + _cimg_unserialize_case("ushort",unsigned short); + _cimg_unserialize_case("short",short); + _cimg_unserialize_case("unsigned_int",unsigned int); + _cimg_unserialize_case("uint",unsigned int); + _cimg_unserialize_case("int",int); + _cimg_unserialize_case("unsigned_int64",uint64T); + _cimg_unserialize_case("uint64",uint64T); + _cimg_unserialize_case("int64",int64T); + _cimg_unserialize_case("float",float); + _cimg_unserialize_case("double",double); + if (!loaded) + throw CImgArgumentException("CImgList<%s>::get_unserialize(): Unsupported pixel type '%s' defined " + "in serialized buffer.", + pixel_type(),str_pixeltype._data); + return res; + } + + //@} + //---------------------------------- + // + //! \name Others + //@{ + //---------------------------------- + + //! Return a CImg pre-defined font with requested height. + /** + \param font_height Height of the desired font (exact match for 13,23,53,103). + \param is_variable_width Decide if the font has a variable (\c true) or fixed (\c false) width. + **/ + static const CImgList& font(const unsigned int requested_height, const bool is_variable_width=true) { + if (!requested_height) return CImgList::const_empty(); + cimg::mutex(11); + static const unsigned char font_resizemap[] = { + 0, 4, 7, 9, 11, 13, 15, 17, 19, 21, 22, 24, 26, 27, 29, 30, + 32, 33, 35, 36, 38, 39, 41, 42, 43, 45, 46, 47, 49, 50, 51, 52, + 54, 55, 56, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 71, 72, + 73, 74, 75, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 157, 158, 159, 160, 161, 162, 163, 164, 164, 165, + 166, 167, 168, 169, 170, 170, 171, 172, 173, 174, 175, 176, 176, 177, 178, 179, + 180, 181, 181, 182, 183, 184, 185, 186, 186, 187, 188, 189, 190, 191, 191, 192, + 193, 194, 195, 196, 196, 197, 198, 199, 200, 200, 201, 202, 203, 204, 205, 205, + 206, 207, 208, 209, 209, 210, 211, 212, 213, 213, 214, 215, 216, 216, 217, 218, + 219, 220, 220, 221, 222, 223, 224, 224, 225, 226, 227, 227, 228, 229, 230, 231, + 231, 232, 233, 234, 234, 235, 236, 237, 238, 238, 239, 240, 241, 241, 242, 243, + 244, 244, 245, 246, 247, 247, 248, 249, 250, 250, 251, 252, 253, 253, 254, 255 }; + static const char *const *font_data[] = { + cimg::data_font_small, + cimg::data_font_normal, + cimg::data_font_large, + cimg::data_font_huge }; + static const unsigned int + font_width[] = { 10,26,52,104 }, + font_height[] = { 13,32,64,128 }, + font_M[] = { 86,91,91,47 }, + font_chunk[] = { sizeof(cimg::data_font_small)/sizeof(char*), + sizeof(cimg::data_font_normal)/sizeof(char*), + sizeof(cimg::data_font_large)/sizeof(char*), + sizeof(cimg::data_font_huge)/sizeof(char*) }; + static const unsigned char font_is_binary[] = { 1,0,0,1 }; + static CImg font_base[4]; + + unsigned int ind = + requested_height<=font_height[0]?0U: + requested_height<=font_height[1]?1U: + requested_height<=font_height[2]?2U:3U; + + // Decompress nearest base font data if needed. + CImg &basef = font_base[ind]; + if (!basef) { + basef.assign(256*font_width[ind],font_height[ind]); + + unsigned char *ptrd = basef; + const unsigned char *const ptrde = basef.end(); + + // Recompose font data from several chunks, to deal with MS compiler limit with big strings (64 Kb). + CImg dataf; + for (unsigned int k = 0; k::string(font_data[ind][k],k==font_chunk[ind] - 1,true),'x'); + + // Uncompress font data (decode RLE). + const unsigned int M = font_M[ind]; + if (font_is_binary[ind]) + for (const char *ptrs = dataf; *ptrs; ++ptrs) { + const int _n = (int)(*ptrs - M - 32), v = _n>=0?255:0, n = _n>=0?_n:-_n; + if (ptrd + n<=ptrde) { std::memset(ptrd,v,n); ptrd+=n; } + else { std::memset(ptrd,v,ptrde - ptrd); break; } + } + else + for (const char *ptrs = dataf; *ptrs; ++ptrs) { + int n = (int)*ptrs - M - 32, v = 0; + if (n>=0) { v = 85*n; n = 1; } + else { + n = -n; + v = (int)*(++ptrs) - M - 32; + if (v<0) { v = 0; --ptrs; } else v*=85; + } + if (ptrd + n<=ptrde) { std::memset(ptrd,v,n); ptrd+=n; } + else { std::memset(ptrd,v,ptrde - ptrd); break; } + } + } + + // Find optimal font cache location to return. + static CImgList fonts[16]; + static bool is_variable_widths[16] = { 0 }; + ind = ~0U; + for (int i = 0; i<16; ++i) + if (!fonts[i] || (is_variable_widths[i]==is_variable_width && requested_height==fonts[i][0]._height)) { + ind = (unsigned int)i; break; // Found empty slot or cached font + } + if (ind==~0U) { // No empty slots nor existing font in cache + fonts->assign(); + std::memmove((void*)fonts,(void*)(fonts + 1),15*sizeof(CImgList)); + std::memmove(is_variable_widths,is_variable_widths + 1,15*sizeof(bool)); + std::memset((void*)(fonts + (ind=15)),0,sizeof(CImgList)); // Free a slot in cache for new font + } + CImgList &font = fonts[ind]; + + // Render requested font. + if (!font) { + is_variable_widths[ind] = is_variable_width; + basef.get_split('x',256).move_to(font); + if (requested_height!=font[0]._height) + cimglist_for(font,l) { + font[l].resize(std::max(1U,font[l]._width*requested_height/font[l]._height),requested_height,-100,-100, + font[0]._height>requested_height?2:5); + cimg_for(font[l],ptr,ucharT) *ptr = font_resizemap[*ptr]; + } + if (is_variable_width) { // Crop font + cimglist_for(font,l) { + CImg& letter = font[l]; + int xmin = letter.width(), xmax = 0; + cimg_forX(letter,x) { // Find xmin + cimg_forY(letter,y) if (letter(x,y)) { xmin = x; break; } + if (xmin!=letter.width()) break; + } + cimg_rofX(letter,x) { // Find xmax + cimg_forY(letter,y) if (letter(x,y)) { xmax = x; break; } + if (xmax) break; + } + if (xmin<=xmax) letter.crop(xmin,0,xmax,letter._height - 1); + } + font[(int)' '].resize(font[(int)'f']._width,-100,-100,-100,0); + if (' ' + 256& FFT(const char axis, const bool invert=false) { + if (is_empty()) return *this; + if (_width==1) insert(1); + if (_width>2) + cimg::warn(_cimglist_instance + "FFT(): Instance has more than 2 images", + cimglist_instance); + CImg::FFT(_data[0],_data[1],axis,invert); + return *this; + } + + //! Compute a 1-D Fast Fourier Transform, along specified axis \newinstance. + CImgList get_FFT(const char axis, const bool invert=false) const { + return CImgList(*this,false).FFT(axis,invert); + } + + //! Compute n-D Fast Fourier Transform. + /** + \param invert Tells if the direct (\c false) or inverse transform (\c true) is computed. + **/ + CImgList& FFT(const bool invert=false) { + if (is_empty()) return *this; + if (_width==1) insert(1); + if (_width>2) + cimg::warn(_cimglist_instance + "FFT(): Instance has more than 2 images", + cimglist_instance); + + CImg::FFT(_data[0],_data[1],invert); + return *this; + } + + //! Compute n-D Fast Fourier Transform \newinstance. + CImgList get_FFT(const bool invert=false) const { + return CImgList(*this,false).FFT(invert); + } + + //! Reverse primitives orientations of a 3D object. + /** + **/ + CImgList& reverse_object3d() { + cimglist_for(*this,l) { + CImg& p = _data[l]; + switch (p.size()) { + case 2 : case 3: cimg::swap(p[0],p[1]); break; + case 6 : cimg::swap(p[0],p[1],p[2],p[4],p[3],p[5]); break; + case 9 : cimg::swap(p[0],p[1],p[3],p[5],p[4],p[6]); break; + case 4 : cimg::swap(p[0],p[1],p[2],p[3]); break; + case 12 : cimg::swap(p[0],p[1],p[2],p[3],p[4],p[6],p[5],p[7],p[8],p[10],p[9],p[11]); break; + } + } + return *this; + } + + //! Reverse primitives orientations of a 3D object \newinstance. + CImgList get_reverse_object3d() const { + return (+*this).reverse_object3d(); + } + + //@} + }; // struct CImgList { ... + + // Completion of previously declared functions + //-------------------------------------------- + namespace cimg { + + // Functions to return standard streams 'stdin', 'stdout' and 'stderr'. + // (throw a CImgIOException when macro 'cimg_use_r' is defined). + inline FILE* _stdin(const bool throw_exception) { +#ifndef cimg_use_r + cimg::unused(throw_exception); + return stdin; +#else + if (throw_exception) { + cimg::exception_mode(0); + throw CImgIOException("cimg::stdin(): Reference to 'stdin' stream not allowed in R mode " + "('cimg_use_r' is defined)."); + } + return 0; +#endif + } + + inline FILE* _stdout(const bool throw_exception) { +#ifndef cimg_use_r + cimg::unused(throw_exception); + return stdout; +#else + if (throw_exception) { + cimg::exception_mode(0); + throw CImgIOException("cimg::stdout(): Reference to 'stdout' stream not allowed in R mode " + "('cimg_use_r' is defined)."); + } + return 0; +#endif + } + + inline FILE* _stderr(const bool throw_exception) { +#ifndef cimg_use_r + cimg::unused(throw_exception); + return stderr; +#else + if (throw_exception) { + cimg::exception_mode(0); + throw CImgIOException("cimg::stderr(): Reference to 'stderr' stream not allowed in R mode " + "('cimg_use_r' is defined)."); + } + return 0; +#endif + } + + // Open a file (similar to std:: fopen(), but with wide character support on Windows). + inline std::FILE *std_fopen(const char *const path, const char *const mode) { + std::FILE *const res = std::fopen(path,mode); + if (res) return res; +#if cimg_OS==2 + // Try alternative method, with wide-character string. + int err = MultiByteToWideChar(CP_UTF8,0,path,-1,0,0); + if (err) { + CImg wpath(err); + err = MultiByteToWideChar(CP_UTF8,0,path,-1,wpath,err); + if (err) { // Convert 'mode' to a wide-character string + err = MultiByteToWideChar(CP_UTF8,0,mode,-1,0,0); + if (err) { + CImg wmode(err); + if (MultiByteToWideChar(CP_UTF8,0,mode,-1,wmode,err)) + return _wfopen(wpath,wmode); + } + } + } +#endif + return 0; + } + + //! Search path of an executable (Windows only). +#if cimg_OS==2 + inline bool win_searchpath(const char *const exec_name, char *const res, const unsigned int size_res) { + char *ptr = 0; + DWORD err = SearchPathA(0,exec_name,0,size_res,res,&ptr); + return err!=0; + } +#endif + + //! Get the file or directory attributes with support for UTF-8 paths (Windows only). +#if cimg_OS==2 + inline DWORD win_getfileattributes(const char *const path) { + DWORD res = GetFileAttributesA(path); + if (res==INVALID_FILE_ATTRIBUTES) { + // Try alternative method, with wide-character string. + int err = MultiByteToWideChar(CP_UTF8,0,path,-1,0,0); + if (err) { + CImg wpath(err); + if (MultiByteToWideChar(CP_UTF8,0,path,-1,wpath,err)) res = GetFileAttributesW(wpath); + } + } + return res; + } +#endif + + //! Get/set path to the Program Files/ directory (Windows only). + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the program files. + **/ +#if cimg_OS==2 + inline const char* win_programfiles_path(const char *const user_path=0, const bool reinit_path=false) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(MAX_PATH); + *s_path = 0; + // Note: in the following line, 0x26 = CSIDL_PROGRAM_FILES (not defined on every compiler). +#if !defined(__INTEL_COMPILER) + if (!SHGetSpecialFolderPathA(0,s_path,0x0026,false)) { + const char *const pfPath = std::getenv("PROGRAMFILES"); + if (pfPath) std::strncpy(s_path,pfPath,MAX_PATH - 1); + else std::strcpy(s_path,"C:\\PROGRA~1"); + } +#else + std::strcpy(s_path,"C:\\PROGRA~1"); +#endif + } + cimg::mutex(7,0); + return s_path; + } +#endif + + //! Get/set path to the \c curl binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c curl binary. + **/ + inline const char *curl_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("curl.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\curl.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"curl.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./curl"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"curl"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c dcraw binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c dcraw binary. + **/ + inline const char *dcraw_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("dcraw.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\dcraw.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"dcraw.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./dcraw"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"dcraw"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the FFMPEG's \c ffmpeg binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c ffmpeg binary. + **/ + inline const char *ffmpeg_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("ffmpeg.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\ffmpeg.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"ffmpeg.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./ffmpeg"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"ffmpeg"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the GraphicsMagick's \c gm binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c gm binary. + **/ + inline const char* graphicsmagick_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("gm.exe",s_path,s_path._width)) path_found = true; + const char *const pf_path = win_programfiles_path(); + if (!path_found) { + std::strcpy(s_path,".\\gm.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%.2d-\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d-Q\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",pf_path,k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%.2d-\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d-Q\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%.2d-\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d-Q\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",k); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gm.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./gm"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gm"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c gunzip binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c gunzip binary. + **/ + inline const char *gunzip_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("gunzip.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\gunzip.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gunzip.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./gunzip"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gunzip"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c gzip binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c gzip binary. + **/ + inline const char *gzip_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("gzip.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\gzip.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gzip.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./gzip"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"gzip"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the ImageMagick's \c convert binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c convert binary. + **/ + inline const char* imagemagick_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("magick.exe",s_path,s_path._width)) path_found = true; + const char *const pf_path = win_programfiles_path(); + for (int l = 0; l<2 && !path_found; ++l) { + const char *const s_exe = l?"convert":"magick"; + cimg_snprintf(s_path,s_path._width,".\\%s.exe",s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%.2d-\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d-Q\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"%s\\IMAGEM~1.%d\\VISUA~1\\BIN\\%s.exe",pf_path,k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%.2d-\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d-Q\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"C:\\IMAGEM~1.%d\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%.2d-\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d-Q\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=10 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 9; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + for (int k = 32; k>=0 && !path_found; --k) { + cimg_snprintf(s_path,s_path._width,"D:\\IMAGEM~1.%d\\VISUA~1\\BIN\\%s.exe",k,s_exe); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) cimg_snprintf(s_path,s_path._width,"%s.exe",s_exe); + } +#else + std::strcpy(s_path,"./magick"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + if (!path_found) { + std::strcpy(s_path,"./convert"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"convert"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the Medcon's \c medcon binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c medcon binary. + **/ + inline const char* medcon_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("medcon.exe",s_path,s_path._width)) path_found = true; + const char *const pf_path = win_programfiles_path(); + if (!path_found) { + std::strcpy(s_path,".\\medcon.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) { + cimg_snprintf(s_path,s_path._width,"%s\\XMedCon\\bin\\medcon.bat",pf_path); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) { + cimg_snprintf(s_path,s_path._width,"%s\\XMedCon\\bin\\medcon.exe",pf_path); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) { + std::strcpy(s_path,"C:\\XMedCon\\bin\\medcon.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"medcon.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./medcon"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"medcon"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to store temporary files. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path where temporary files can be saved. + **/ + inline const char* temporary_path(const char *const user_path, const bool reinit_path) { +#define _cimg_test_temporary_path(p) \ + if (!path_found) { \ + cimg_snprintf(s_path,s_path.width(),"%s",p); \ + cimg_snprintf(tmp,tmp._width,"%s%c%s",s_path.data(),cimg_file_separator,filename_tmp._data); \ + if ((file=cimg::std_fopen(tmp,"wb"))!=0) { cimg::fclose(file); std::remove(tmp); path_found = true; } \ + } + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + CImg tmp(1024), filename_tmp(256); + std::FILE *file = 0; + cimg_snprintf(filename_tmp,filename_tmp._width,"%s.tmp",cimg::filenamerand()); + char *tmpPath = std::getenv("TMP"); + if (!tmpPath) { tmpPath = std::getenv("TEMP"); winformat_string(tmpPath); } + if (tmpPath) _cimg_test_temporary_path(tmpPath); +#if cimg_OS==2 + _cimg_test_temporary_path("C:\\WINNT\\Temp"); + _cimg_test_temporary_path("C:\\WINDOWS\\Temp"); + _cimg_test_temporary_path("C:\\Temp"); + _cimg_test_temporary_path("C:"); + _cimg_test_temporary_path("D:\\WINNT\\Temp"); + _cimg_test_temporary_path("D:\\WINDOWS\\Temp"); + _cimg_test_temporary_path("D:\\Temp"); + _cimg_test_temporary_path("D:"); +#else + _cimg_test_temporary_path("/tmp"); + _cimg_test_temporary_path("/var/tmp"); +#endif + if (!path_found) { + *s_path = 0; + std::strncpy(tmp,filename_tmp,tmp._width - 1); + if ((file=cimg::std_fopen(tmp,"wb"))!=0) { cimg::fclose(file); std::remove(tmp); path_found = true; } + } + if (!path_found) { + cimg::mutex(7,0); + throw CImgIOException("cimg::temporary_path(): Failed to locate path for writing temporary files.\n"); + } + } + cimg::mutex(7,0); + return s_path; + } + + //! Get/set path to the \c wget binary. + /** + \param user_path Specified path, or \c 0 to get the path currently used. + \param reinit_path Force path to be recalculated (may take some time). + \return Path containing the \c wget binary. + **/ + inline const char *wget_path(const char *const user_path, const bool reinit_path) { + static CImg s_path; + cimg::mutex(7); + if (reinit_path) s_path.assign(); + if (user_path) { + if (!s_path) s_path.assign(1024); + std::strncpy(s_path,user_path,1023); + } else if (!s_path) { + s_path.assign(1024); + bool path_found = false; + std::FILE *file = 0; +#if cimg_OS==2 + if (win_searchpath("wget.exe",s_path,s_path._width)) path_found = true; + if (!path_found) { + std::strcpy(s_path,".\\wget.exe"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"wget.exe"); +#else + if (!path_found) { + std::strcpy(s_path,"./wget"); + if ((file=cimg::std_fopen(s_path,"r"))!=0) { cimg::fclose(file); path_found = true; } + } + if (!path_found) std::strcpy(s_path,"wget"); +#endif + winformat_string(s_path); + } + cimg::mutex(7,0); + return s_path; + } + + + // [internal] Sorting function, used by cimg::files(). + inline int _sort_files(const void* a, const void* b) { + const CImg &sa = *(CImg*)a, &sb = *(CImg*)b; + return std::strcmp(sa._data,sb._data); + } + + //! Generate a numbered version of a filename. + inline char* number_filename(const char *const filename, const int number, + const unsigned int digits, char *const str) { + if (!filename) { if (str) *str = 0; return 0; } + const unsigned int siz = (unsigned int)std::strlen(filename); + CImg format(16), body(siz + 32); + const char *const ext = cimg::split_filename(filename,body); + if (*ext) cimg_snprintf(format,format.width(),"%%s_%%.%ud.%%s",digits); + else cimg_snprintf(format,format.width(),"%%s_%%.%ud",digits); + cimg_snprintf(str,1024,format._data,body._data,number,ext); + return str; + } + + //! Return list of files/directories in specified directory. + /** + \param path Path to the directory. Set to 0 for current directory. + \param is_pattern Tell if specified path has a matching pattern in it. + \param mode Output type, can be primary { 0=files only | 1=folders only | 2=files + folders }. + \param include_path Tell if \c path must be included in resulting filenames. + \return A list of filenames. + **/ + inline CImgList files(const char *const path, const bool is_pattern=false, + const unsigned int mode=2, const bool include_path=false) { + if (!path || !*path) return files("*",true,mode,include_path); + CImgList res; + + // If path is a valid folder name, ignore argument 'is_pattern'. + const bool _is_pattern = is_pattern && !cimg::is_directory(path); + bool is_root = false, is_current = false; + cimg::unused(is_root,is_current); + + // Clean format of input path. + CImg pattern, _path = CImg::string(path); +#if cimg_OS==2 + for (char *ps = _path; *ps; ++ps) if (*ps=='\\') *ps='/'; +#endif + char *pd = _path; + for (char *ps = pd; *ps; ++ps) { if (*ps!='/' || *ps!=*(ps+1)) *(pd++) = *ps; } + *pd = 0; + unsigned int lp = (unsigned int)std::strlen(_path); + if (!_is_pattern && lp && _path[lp - 1]=='/') { + _path[lp - 1] = 0; --lp; +#if cimg_OS!=2 + is_root = !*_path; +#endif + } + + // Separate folder path and matching pattern. + if (_is_pattern) { + const unsigned int bpos = (unsigned int)(cimg::basename(_path,'/') - _path.data()); + CImg::string(_path).move_to(pattern); + if (bpos) { + _path[bpos - 1] = 0; // End 'path' at last slash +#if cimg_OS!=2 + is_root = !*_path; +#endif + } else { // No path to folder specified, assuming current folder + is_current = true; *_path = 0; + } + lp = (unsigned int)std::strlen(_path); + } + + // Windows version. +#if cimg_OS==2 + if (!_is_pattern) { + pattern.assign(lp + 3); + std::memcpy(pattern,_path,lp); + pattern[lp] = '/'; pattern[lp + 1] = '*'; pattern[lp + 2] = 0; + } + WIN32_FIND_DATAA file_data; + const HANDLE dir = FindFirstFileA(pattern.data(),&file_data); + if (dir==INVALID_HANDLE_VALUE) return CImgList::const_empty(); + do { + const char *const filename = file_data.cFileName; + if (*filename!='.' || (filename[1] && (filename[1]!='.' || filename[2]))) { + const unsigned int lf = (unsigned int)std::strlen(filename); + const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=0; + if ((!mode && !is_directory) || (mode==1 && is_directory) || mode>=2) { + if (include_path) { + CImg full_filename((lp?lp+1:0) + lf + 1); + if (lp) { std::memcpy(full_filename,_path,lp); full_filename[lp] = '/'; } + std::memcpy(full_filename._data + (lp?lp + 1:0),filename,lf + 1); + full_filename.move_to(res); + } else CImg(filename,lf + 1).move_to(res); + } + } + } while (FindNextFileA(dir,&file_data)); + FindClose(dir); + + // Unix version (posix). +#elif cimg_OS == 1 + DIR *const dir = opendir(is_root?"/":is_current?".":_path.data()); + if (!dir) return CImgList::const_empty(); + struct dirent *ent; + while ((ent=readdir(dir))!=0) { + const char *const filename = ent->d_name; + if (*filename!='.' || (filename[1] && (filename[1]!='.' || filename[2]))) { + const unsigned int lf = (unsigned int)std::strlen(filename); + CImg full_filename(lp + lf + 2); + + if (!is_current) { + full_filename.assign(lp + lf + 2); + if (lp) std::memcpy(full_filename,_path,lp); + full_filename[lp] = '/'; + std::memcpy(full_filename._data + lp + 1,filename,lf + 1); + } else full_filename.assign(filename,lf + 1); + + struct stat st; + if (stat(full_filename,&st)==-1) continue; + const bool is_directory = (st.st_mode & S_IFDIR)!=0; + if ((!mode && !is_directory) || (mode==1 && is_directory) || mode==2) { + if (include_path) { + if (!_is_pattern || (_is_pattern && !fnmatch(pattern,full_filename,0))) + full_filename.move_to(res); + } else { + if (!_is_pattern || (_is_pattern && !fnmatch(pattern,full_filename,0))) + CImg(filename,lf + 1).move_to(res); + } + } + } + } + closedir(dir); +#endif + + // Sort resulting list by lexicographic order. + if (res._width>=2) std::qsort(res._data,res._width,sizeof(CImg),_sort_files); + + return res; + } + + //! Try to guess format from an image file. + /** + \param file Input file (can be \c 0 if \c filename is set). + \param filename Filename, as a C-string (can be \c 0 if \c file is set). + \return C-string containing the guessed file format, or \c 0 if nothing has been guessed. + **/ + inline const char *ftype(std::FILE *const file, const char *const filename) { + if (!file && !filename) + throw CImgArgumentException("cimg::ftype(): Specified filename is (null)."); + static const char + *const _pnm = "pnm", + *const _pfm = "pfm", + *const _bmp = "bmp", + *const _gif = "gif", + *const _jpg = "jpg", + *const _off = "off", + *const _pan = "pan", + *const _png = "png", + *const _tif = "tif", + *const _inr = "inr", + *const _dcm = "dcm"; + const char *f_type = 0; + CImg header; + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { + header._load_raw(file,filename,512,1,1,1,false,false,0); + const unsigned char *const uheader = (unsigned char*)header._data; + if (!std::strncmp(header,"OFF\n",4)) f_type = _off; // OFF + else if (!std::strncmp(header,"#INRIMAGE",9)) // INRIMAGE + f_type = _inr; + else if (!std::strncmp(header,"PANDORE",7)) // PANDORE + f_type = _pan; + else if (!std::strncmp(header.data() + 128,"DICM",4)) // DICOM + f_type = _dcm; + else if (uheader[0]==0xFF && uheader[1]==0xD8 && uheader[2]==0xFF) // JPEG + f_type = _jpg; + else if (header[0]=='B' && header[1]=='M') // BMP + f_type = _bmp; + else if (header[0]=='G' && header[1]=='I' && header[2]=='F' && header[3]=='8' && header[5]=='a' && + (header[4]=='7' || header[4]=='9')) // GIF + f_type = _gif; + else if (uheader[0]==0x89 && uheader[1]==0x50 && uheader[2]==0x4E && uheader[3]==0x47 && + uheader[4]==0x0D && uheader[5]==0x0A && uheader[6]==0x1A && uheader[7]==0x0A) // PNG + f_type = _png; + else if ((uheader[0]==0x49 && uheader[1]==0x49) || (uheader[0]==0x4D && uheader[1]==0x4D)) // TIFF + f_type = _tif; + else { // PNM or PFM + CImgList _header = header.get_split(CImg::vector('\n'),0,false); + cimglist_for(_header,l) { + if (_header(l,0)=='#') continue; + if (_header[l]._width==2 && _header(l,0)=='P') { + const char c = _header(l,1); + if (c=='f' || c=='F') { f_type = _pfm; break; } + if (c>='1' && c<='9') { f_type = _pnm; break; } + } + f_type = 0; break; + } + } + } catch (CImgIOException&) { } + cimg::exception_mode(omode); + return f_type; + } + + //! Load file from network as a local temporary file. + /** + \param url URL of the filename, as a C-string. + \param[out] filename_local C-string containing the path to a local copy of \c filename. + \param timeout Maximum time (in seconds) authorized for downloading the file from the URL. + \param try_fallback When using libcurl, tells using system calls as fallbacks in case of libcurl failure. + \param referer Referer used, as a C-string. + \return Value of \c filename_local. + \note Use the \c libcurl library, or the external binaries \c wget or \c curl to perform the download. + **/ + inline char *load_network(const char *const url, char *const filename_local, + const unsigned int timeout, const bool try_fallback, + const char *const referer) { + if (!url) + throw CImgArgumentException("cimg::load_network(): Specified URL is (null)."); + if (!filename_local) + throw CImgArgumentException("cimg::load_network(): Specified destination string is (null)."); + if (!network_mode()) + throw CImgIOException("cimg::load_network(): Loading files from network is disabled."); + + const char *const __ext = cimg::split_filename(url), *const _ext = (*__ext && __ext>url)?__ext - 1:__ext; + CImg ext = CImg::string(_ext); + std::FILE *file = 0; + *filename_local = 0; + if (ext._width>16 || !cimg::strncasecmp(ext,"cgi",3)) *ext = 0; + else cimg::strwindows_reserved(ext); + do { + cimg_snprintf(filename_local,256,"%s%c%s%s", + cimg::temporary_path(),cimg_file_separator,cimg::filenamerand(),ext._data); + if ((file=cimg::std_fopen(filename_local,"rb"))!=0) cimg::fclose(file); + } while (file); + +#ifdef cimg_use_curl + const unsigned int omode = cimg::exception_mode(); + cimg::exception_mode(0); + try { + CURL *curl = 0; + CURLcode res; + curl = curl_easy_init(); + if (curl) { + file = cimg::fopen(filename_local,"wb"); + curl_easy_setopt(curl,CURLOPT_URL,url); + curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,0); + curl_easy_setopt(curl,CURLOPT_WRITEDATA,file); + curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,0L); + curl_easy_setopt(curl,CURLOPT_SSL_VERIFYHOST,0L); + curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L); + if (timeout) curl_easy_setopt(curl,CURLOPT_TIMEOUT,(long)timeout); + if (std::strchr(url,'?')) curl_easy_setopt(curl,CURLOPT_HTTPGET,1L); + if (referer) curl_easy_setopt(curl,CURLOPT_REFERER,referer); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + cimg::fseek(file,0,SEEK_END); // Check if file size is 0 + const cimg_ulong siz = cimg::ftell(file); + cimg::fclose(file); + if (siz>0 && res==CURLE_OK) { + cimg::exception_mode(omode); + return filename_local; + } else std::remove(filename_local); + } + } catch (...) { } + cimg::exception_mode(omode); + if (!try_fallback) throw CImgIOException("cimg::load_network(): Failed to load file '%s' with libcurl.",url); +#endif + + CImg command((unsigned int)std::strlen(url) + 64); + cimg::unused(try_fallback); + + // Try with 'curl' first. + if (timeout) { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" -e %s -m %u -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),referer,timeout,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -m %u -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),timeout,filename_local, + CImg::string(url)._system_strescape().data()); + } else { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" -e %s -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),referer,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -f --silent --compressed -o \"%s\" \"%s\"", + cimg::curl_path(),filename_local, + CImg::string(url)._system_strescape().data()); + } + cimg::system(command, cimg::curl_path()); + + if (!(file=cimg::std_fopen(filename_local,"rb"))) { + + // Try with 'wget' otherwise. + if (timeout) { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" --referer=%s -T %u -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),referer,timeout,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -T %u -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),timeout,filename_local, + CImg::string(url)._system_strescape().data()); + } else { + if (referer) + cimg_snprintf(command,command._width,"\"%s\" --referer=%s -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),referer,filename_local, + CImg::string(url)._system_strescape().data()); + else + cimg_snprintf(command,command._width,"\"%s\" -q -r -l 0 --no-cache -O \"%s\" \"%s\"", + cimg::wget_path(),filename_local, + CImg::string(url)._system_strescape().data()); + } + cimg::system(command, cimg::wget_path()); + + if (!(file=cimg::std_fopen(filename_local,"rb"))) + throw CImgIOException("cimg::load_network(): Failed to load file '%s' with external commands " + "'wget' or 'curl'.",url); + cimg::fclose(file); + + // Try gunzip it. + cimg_snprintf(command,command._width,"%s.gz",filename_local); + std::rename(filename_local,command); + cimg_snprintf(command,command._width,"\"%s\" --quiet \"%s.gz\"", + gunzip_path(),filename_local); + cimg::system(command, gunzip_path()); + file = cimg::std_fopen(filename_local,"rb"); + if (!file) { + cimg_snprintf(command,command._width,"%s.gz",filename_local); + std::rename(command,filename_local); + file = cimg::std_fopen(filename_local,"rb"); + } + } + cimg::fseek(file,0,SEEK_END); // Check if file size is 0 + if (std::ftell(file)<=0) + throw CImgIOException("cimg::load_network(): Failed to load URL '%s' with external commands " + "'wget' or 'curl'.",url); + cimg::fclose(file); + return filename_local; + } + + // Implement a tic/toc mechanism to display elapsed time of algorithms. + inline cimg_uint64 tictoc(const bool is_tic) { + cimg::mutex(2); + static CImg times(64); + static unsigned int pos = 0; + const cimg_uint64 t1 = cimg::time(); + if (is_tic) { + // Tic + times[pos++] = t1; + if (pos>=times._width) + throw CImgArgumentException("cimg::tic(): Too much calls to 'cimg::tic()' without calls to 'cimg::toc()'."); + cimg::mutex(2,0); + return t1; + } + + // Toc + if (!pos) + throw CImgArgumentException("cimg::toc(): No previous call to 'cimg::tic()' has been made."); + const cimg_uint64 + t0 = times[--pos], + dt = t1>=t0?(t1 - t0):cimg::type::max(); + const unsigned int + edays = (unsigned int)(dt/86400000.), + ehours = (unsigned int)((dt - edays*86400000.)/3600000.), + emin = (unsigned int)((dt - edays*86400000. - ehours*3600000.)/60000.), + esec = (unsigned int)((dt - edays*86400000. - ehours*3600000. - emin*60000.)/1000.), + ems = (unsigned int)(dt - edays*86400000. - ehours*3600000. - emin*60000. - esec*1000.); + if (!edays && !ehours && !emin && !esec) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u ms%s\n", + cimg::t_red,1 + 2*pos,"",ems,cimg::t_normal); + else { + if (!edays && !ehours && !emin) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",esec,ems,cimg::t_normal); + else { + if (!edays && !ehours) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u min %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",emin,esec,ems,cimg::t_normal); + else{ + if (!edays) + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u hours %u min %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",ehours,emin,esec,ems,cimg::t_normal); + else{ + std::fprintf(cimg::output(),"%s[CImg]%*sElapsed time: %u days %u hours %u min %u sec %u ms%s\n", + cimg::t_red,1 + 2*pos,"",edays,ehours,emin,esec,ems,cimg::t_normal); + } + } + } + } + cimg::mutex(2,0); + return dt; + } + + // Return a temporary string describing the size of a memory buffer. + inline const char *strbuffersize(const cimg_ulong size) { + static CImg res(256); + cimg::mutex(5); + if (size<1024LU) cimg_snprintf(res,res._width,"%lu byte%s",(unsigned long)size,size>1?"s":""); + else if (size<1024*1024LU) { const float nsize = size/1024.f; cimg_snprintf(res,res._width,"%.1f Kio",nsize); } + else if (size<1024*1024*1024LU) { + const float nsize = size/(1024*1024.f); cimg_snprintf(res,res._width,"%.1f Mio",nsize); + } else { const float nsize = size/(1024*1024*1024.f); cimg_snprintf(res,res._width,"%.1f Gio",nsize); } + cimg::mutex(5,0); + return res; + } + + //! Display a simple dialog box, and wait for the user's response. + /** + \param title Title of the dialog window. + \param msg Main message displayed inside the dialog window. + \param button1_label Label of the 1st button. + \param button2_label Label of the 2nd button (\c 0 to hide button). + \param button3_label Label of the 3rd button (\c 0 to hide button). + \param button4_label Label of the 4th button (\c 0 to hide button). + \param button5_label Label of the 5th button (\c 0 to hide button). + \param button6_label Label of the 6th button (\c 0 to hide button). + \param logo Image logo displayed at the left of the main message. + \param is_centered Tells if the dialog window must be centered on the screen. + \return Index of clicked button (from \c 0 to \c 5), or \c -1 if the dialog window has been closed by the user. + \note + - Up to 6 buttons can be defined in the dialog window. + - The function returns when a user clicked one of the button or closed the dialog window. + - If a button text is set to 0, the corresponding button (and the following) will not appear in the dialog box. + At least one button must be specified. + **/ + template + inline int dialog(const char *const title, const char *const msg, + const char *const button1_label, const char *const button2_label, + const char *const button3_label, const char *const button4_label, + const char *const button5_label, const char *const button6_label, + const CImg& logo, const bool is_centered=false) { +#if cimg_display==0 + cimg::unused(title,msg,button1_label,button2_label,button3_label,button4_label,button5_label,button6_label, + logo._data,is_centered); + throw CImgIOException("cimg::dialog(): No display available."); +#else + static const unsigned char + black[] = { 0,0,0 }, white[] = { 255,255,255 }, gray[] = { 200,200,200 }, gray2[] = { 150,150,150 }; + + // Create buttons and canvas graphics + CImgList buttons, cbuttons, sbuttons; + if (button1_label) { + CImg().draw_text(0,0,button1_label,black,gray,1,13).move_to(buttons); + if (button2_label) { + CImg().draw_text(0,0,button2_label,black,gray,1,13).move_to(buttons); + if (button3_label) { + CImg().draw_text(0,0,button3_label,black,gray,1,13).move_to(buttons); + if (button4_label) { + CImg().draw_text(0,0,button4_label,black,gray,1,13).move_to(buttons); + if (button5_label) { + CImg().draw_text(0,0,button5_label,black,gray,1,13).move_to(buttons); + if (button6_label) { + CImg().draw_text(0,0,button6_label,black,gray,1,13).move_to(buttons); + }}}}}} + if (!buttons._width) + throw CImgArgumentException("cimg::dialog(): No buttons have been defined."); + cimglist_for(buttons,l) buttons[l].resize(-100,-100,1,3); + + unsigned int bw = 0, bh = 0; + cimglist_for(buttons,l) { bw = std::max(bw,buttons[l]._width); bh = std::max(bh,buttons[l]._height); } + bw+=8; bh+=8; + if (bw<64) bw = 64; + if (bw>128) bw = 128; + if (bh<24) bh = 24; + if (bh>48) bh = 48; + + CImg button(bw,bh,1,3); + button.draw_rectangle(0,0,bw - 1,bh - 1,gray); + button.draw_line(0,0,bw - 1,0,white).draw_line(0,bh - 1,0,0,white); + button.draw_line(bw - 1,0,bw - 1,bh - 1,black).draw_line(bw - 1,bh - 1,0,bh - 1,black); + button.draw_line(1,bh - 2,bw - 2,bh - 2,gray2).draw_line(bw - 2,bh - 2,bw - 2,1,gray2); + CImg sbutton(bw,bh,1,3); + sbutton.draw_rectangle(0,0,bw - 1,bh - 1,gray); + sbutton.draw_line(0,0,bw - 1,0,black).draw_line(bw - 1,0,bw - 1,bh - 1,black); + sbutton.draw_line(bw - 1,bh - 1,0,bh - 1,black).draw_line(0,bh - 1,0,0,black); + sbutton.draw_line(1,1,bw - 2,1,white).draw_line(1,bh - 2,1,1,white); + sbutton.draw_line(bw - 2,1,bw - 2,bh - 2,black).draw_line(bw - 2,bh - 2,1,bh - 2,black); + sbutton.draw_line(2,bh - 3,bw - 3,bh - 3,gray2).draw_line(bw - 3,bh - 3,bw - 3,2,gray2); + sbutton.draw_line(4,4,bw - 5,4,black,1,0xAAAAAAAA,true). + draw_line(bw - 5,4,bw - 5,bh - 5,black,1,0xAAAAAAAA,false); + sbutton.draw_line(bw - 5,bh - 5,4,bh - 5,black,1,0xAAAAAAAA,false). + draw_line(4,bh - 5,4,4,black,1,0xAAAAAAAA,false); + CImg cbutton(bw,bh,1,3); + cbutton.draw_rectangle(0,0,bw - 1,bh - 1,black).draw_rectangle(1,1,bw - 2,bh - 2,gray2). + draw_rectangle(2,2,bw - 3,bh - 3,gray); + cbutton.draw_line(4,4,bw - 5,4,black,1,0xAAAAAAAA,true). + draw_line(bw - 5,4,bw - 5,bh - 5,black,1,0xAAAAAAAA,false); + cbutton.draw_line(bw - 5,bh - 5,4,bh - 5,black,1,0xAAAAAAAA,false). + draw_line(4,bh - 5,4,4,black,1,0xAAAAAAAA,false); + + cimglist_for(buttons,ll) { + CImg(cbutton). + draw_image(1 + (bw -buttons[ll].width())/2,1 + (bh - buttons[ll].height())/2,buttons[ll]). + move_to(cbuttons); + CImg(sbutton). + draw_image((bw - buttons[ll].width())/2,(bh - buttons[ll].height())/2,buttons[ll]). + move_to(sbuttons); + CImg(button). + draw_image((bw - buttons[ll].width())/2,(bh - buttons[ll].height())/2,buttons[ll]). + move_to(buttons[ll]); + } + + CImg canvas; + if (msg) + ((CImg().draw_text(0,0,"%s",gray,0,1,13,msg)*=-1)+=200).resize(-100,-100,1,3).move_to(canvas); + + const unsigned int + bwall = (buttons._width - 1)*(12 + bw) + bw, + w = cimg::max(196U,36 + logo._width + canvas._width,24 + bwall), + h = cimg::max(96U,36 + canvas._height + bh,36 + logo._height + bh), + lx = 12 + (canvas._data?0:((w - 24 - logo._width)/2)), + ly = (h - 12 - bh - logo._height)/2, + tx = lx + logo._width + 12, + ty = (h - 12 - bh - canvas._height)/2, + bx = (w - bwall)/2, + by = h - 12 - bh; + + if (canvas._data) + canvas = CImg(w,h,1,3). + draw_rectangle(0,0,w - 1,h - 1,gray). + draw_line(0,0,w - 1,0,white).draw_line(0,h - 1,0,0,white). + draw_line(w - 1,0,w - 1,h - 1,black).draw_line(w - 1,h - 1,0,h - 1,black). + draw_image(tx,ty,canvas); + else + canvas = CImg(w,h,1,3). + draw_rectangle(0,0,w - 1,h - 1,gray). + draw_line(0,0,w - 1,0,white).draw_line(0,h - 1,0,0,white). + draw_line(w - 1,0,w - 1,h - 1,black).draw_line(w - 1,h - 1,0,h - 1,black); + if (logo._data) canvas.draw_image(lx,ly,logo); + + unsigned int xbuttons[6] = { 0 }; + cimglist_for(buttons,lll) { + xbuttons[lll] = bx + (bw + 12)*lll; + canvas.draw_image(xbuttons[lll],by,buttons[lll]); + } + + // Open window and enter events loop + CImgDisplay disp(canvas,title?title:" ",0,false,is_centered?true:false); + if (is_centered) disp.move((CImgDisplay::screen_width() - disp.width())/2, + (CImgDisplay::screen_height() - disp.height())/2); + bool stop_flag = false, refresh = false; + int oselected = -1, oclicked = -1, selected = -1, clicked = -1; + while (!disp.is_closed() && !stop_flag) { + if (refresh) { + if (clicked>=0) + CImg(canvas).draw_image(xbuttons[clicked],by,cbuttons[clicked]).display(disp); + else { + if (selected>=0) + CImg(canvas).draw_image(xbuttons[selected],by,sbuttons[selected]).display(disp); + else canvas.display(disp); + } + refresh = false; + } + disp.wait(15); + if (disp.is_resized()) disp.resize(disp,false); + + if (disp.button()&1) { + oclicked = clicked; + clicked = -1; + cimglist_for(buttons,l) + if (disp.mouse_y()>=(int)by && disp.mouse_y()<(int)(by + bh) && + disp.mouse_x()>=(int)xbuttons[l] && disp.mouse_x()<(int)(xbuttons[l] + bw)) { + clicked = selected = l; + refresh = true; + } + if (clicked!=oclicked) refresh = true; + } else if (clicked>=0) stop_flag = true; + + if (disp.key()) { + oselected = selected; + switch (disp.key()) { + case cimg::keyESC : selected = -1; stop_flag = true; break; + case cimg::keyENTER : if (selected<0) selected = 0; stop_flag = true; break; + case cimg::keyTAB : + case cimg::keyARROWRIGHT : + case cimg::keyARROWDOWN : selected = (selected + 1)%buttons.width(); break; + case cimg::keyARROWLEFT : + case cimg::keyARROWUP : selected = (selected + buttons.width() - 1)%buttons.width(); break; + } + disp.set_key(); + if (selected!=oselected) refresh = true; + } + } + if (!disp) selected = -1; + return selected; +#endif + } + + //! Display a simple dialog box, and wait for the user's response \specialization. + inline int dialog(const char *const title, const char *const msg, + const char *const button1_label, const char *const button2_label, + const char *const button3_label, const char *const button4_label, + const char *const button5_label, const char *const button6_label, + const bool is_centered) { + return dialog(title,msg,button1_label,button2_label,button3_label,button4_label,button5_label,button6_label, + CImg::_logo40x38(),is_centered); + } + + //! Evaluate math expression. + /** + \param expression C-string describing the formula to evaluate. + \param x Value of the pre-defined variable \c x. + \param y Value of the pre-defined variable \c y. + \param z Value of the pre-defined variable \c z. + \param c Value of the pre-defined variable \c c. + \return Result of the formula evaluation. + \note Set \c expression to \c 0 to keep evaluating the last specified \c expression. + \par Example + \code + const double + res1 = cimg::eval("cos(x)^2 + sin(y)^2",2,2), // will return '1' + res2 = cimg::eval(0,1,1); // will return '1' too + \endcode + **/ + inline double eval(const char *const expression, const double x, const double y, const double z, const double c) { + static const CImg empty; + return empty.eval(expression,x,y,z,c); + } + + template + inline CImg::type> eval(const char *const expression, const CImg& xyzc) { + static const CImg empty; + return empty.eval(expression,xyzc); + } + + } // namespace cimg { ... +} // namespace cimg_library { ... + +//! Short alias name. +namespace cil = cimg_library_suffixed; + +#ifdef _cimg_redefine_False +#define False 0 +#endif +#ifdef _cimg_redefine_True +#define True 1 +#endif +#ifdef _cimg_redefine_Status +#define Status int +#endif +#ifdef _cimg_redefine_Success +#define Success 0 +#endif +#ifdef _cimg_redefine_min +#define min(a,b) (((a)<(b))?(a):(b)) +#endif +#ifdef _cimg_redefine_max +#define max(a,b) (((a)>(b))?(a):(b)) +#endif +#ifdef _cimg_redefine_PI +#define PI 3.141592653589793238462643383 +#endif +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif + +// Local Variables: +// mode: c++ +// End: diff --git a/Licence_CeCILL-C_V1-en.txt b/Licence_CeCILL-C_V1-en.txt new file mode 100644 index 000000000..2e9ffbaca --- /dev/null +++ b/Licence_CeCILL-C_V1-en.txt @@ -0,0 +1,508 @@ + + CeCILL-C FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL-C (for Ce[a] C[nrs] I[nria] L[logiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological establishment, having its principal place of business +at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +The purpose of this Free Software license agreement is to grant users the +right to modify and re-use the software governed by this license. + +The exercising of this right is conditional on the obligation to make +available to the community the modifications made to the source code of the +software so as to contribute to its evolution. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the suitability +of the software as regards their requirements in conditions enabling the +security of their systems and/or data to be ensured and, more generally, to +use and operate it in the same conditions of security. This Agreement may be +freely reproduced and published, provided it is not altered, and that no +provisions are either added or removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one Integrated +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Integrated +Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Integrated Contribution: means any or all modifications, corrections, +translations, adaptations and/or new functions integrated into the Source +Code by any or all Contributors. + +Related Module: means a set of sources files including their documentation +that, without modification to the Source Code, enables supplementary +functions or services in addition to those offered by the Software. + +Derivative Software: means any combination of the Software, modified or not, +and of a Related Module. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + 2. loading, displaying, running, or storing the Software on any or + all medium. + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 RIGHT OF MODIFICATION + +The right of modification includes the right to translate, adapt, arrange, +or make any or all modifications to the Software, and the right to +reproduce the resulting Software. It includes, in particular, the right +to create a Derivative Software. + +The Licensee is authorized to make any or all modification to the +Software provided that it includes an explicit notice that it is the +author of said modification and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows effective access to the full Source Code +of the Software at a minimum during the entire period of its distribution +of the Software, it being understood that the additional cost of acquiring +the Source Code shall not exceed the cost of transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +When the Licensee makes an Integrated Contribution to the Software, the terms +and conditions for the distribution of the resulting Modified Software become +subject to all the provisions of this Agreement. + +The Licensee is authorized to distribute the Modified Software, in source +code or object code form, provided that said distribution complies with all +the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + 2. a notice relating to the limitation of both the Licensor's warranty and + liability as set forth in Articles 8 and 9, + +and that, in the event that only the object code of the Modified Software is +redistributed, the Licensee allows effective access to the full source code +of the Modified Software at a minimum during the entire period of its +distribution of the Modified Software, it being understood that the +additional cost of acquiring the source code shall not exceed the cost of +transferring the data. + + 5.3.3 DISTRIBUTION OF DERIVATIVE SOFTWARE + +When the Licensee creates Derivative Software, this Derivative Software may +be distributed under a license agreement other than this Agreement, subject +to compliance with the requirement to include a notice concerning the rights +over the Software as defined in Article 6.4. In the event the creation of the +Derivative Software required modification of the Source Code, the Licensee +undertakes that: + + 1. the resulting Modified Software will be governed by this Agreement, + 2. the Integrated Contributions in the resulting Modified Software will be + clearly identified and documented, + 3. the Licensee will allow effective access to the source code of the + Modified Software, at a minimum during the entire period of + distribution of the Derivative Software, such that such modifications + may be carried over in a subsequent version of the Software; it being + understood that the additional cost of purchasing the source code of + the Modified Software shall not exceed the cost of transferring the + data. + + + 5.3.4 COMPATIBILITY WITH THE CeCILL LICENSE + +When a Modified Software contains an Integrated Contribution subject to the +CeCill license agreement, or when a Derivative Software contains a Related +Module subject to the CeCill license agreement, the provisions set forth in +the third item of Article 6.4 are optional. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by the current license, for the duration set forth in Article 4.2. + + + 6.2 OVER THE INTEGRATED CONTRIBUTIONS + +A Licensee who develops an Integrated Contribution is the owner of the +intellectual property rights over this Contribution as defined by +applicable law. + + + 6.3 OVER THE RELATED MODULES + +A Licensee who develops an Related Module is the owner of the +intellectual property rights over this Related Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution under the conditions defined in Article 5.3.3. + + + 6.4 NOTICE OF RIGHTS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not; + 3. to ensure that use of the Software, its intellectual property + notices and the fact that it is governed by the Agreement is + indicated in a text that is easily accessible, specifically from + the interface of any Derivative Software. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working order, +and for ensuring that it shall not cause damage to either persons or +properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement +may only be subsequently distributed under the same version of the +Agreement or a subsequent version. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 1.0 dated 2006-07-12. diff --git a/Licence_CeCILL_V2-en.txt b/Licence_CeCILL_V2-en.txt new file mode 100644 index 000000000..8720df6f4 --- /dev/null +++ b/Licence_CeCILL_V2-en.txt @@ -0,0 +1,504 @@ + + CeCILL FREE SOFTWARE LICENSE AGREEMENT + + + Notice + +This Agreement is a Free Software license agreement that is the result +of discussions between its authors in order to ensure compliance with +the two main principles guiding its drafting: + + * firstly, compliance with the principles governing the distribution + of Free Software: access to source code, broad rights granted to + users, + * secondly, the election of a governing law, French law, with which + it is conformant, both as regards the law of torts and + intellectual property law, and the protection that it offers to + both authors and holders of the economic rights over software. + +The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[logiciel] L[ibre]) +license are: + +Commissariat à l'Energie Atomique - CEA, a public scientific, technical +and industrial research establishment, having its principal place of +business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. + +Centre National de la Recherche Scientifique - CNRS, a public scientific +and technological research establishment, having its principal place of +business at 3 rue Michel-Ange, 75794 Paris cedex 16, France. + +Institut National de Recherche en Informatique et en Automatique - +INRIA, a public scientific and technological establishment, having its +principal place of business at Domaine de Voluceau, Rocquencourt, BP +105, 78153 Le Chesnay cedex, France. + + + Preamble + +The purpose of this Free Software license agreement is to grant users +the right to modify and redistribute the software governed by this +license within the framework of an open source distribution model. + +The exercising of these rights is conditional upon certain obligations +for users so as to preserve this status for all subsequent redistributions. + +In consideration of access to the source code and the rights to copy, +modify and redistribute granted by the license, users are provided only +with a limited warranty and the software's author, the holder of the +economic rights, and the successive licensors only have limited liability. + +In this respect, the risks associated with loading, using, modifying +and/or developing or reproducing the software by the user are brought to +the user's attention, given its Free Software status, which may make it +complicated to use, with the result that its use is reserved for +developers and experienced professionals having in-depth computer +knowledge. Users are therefore encouraged to load and test the suitability +of the software as regards their requirements in conditions enabling +the security of their systems and/or data to be ensured and, more +generally, to use and operate it in the same conditions of security. +This Agreement may be freely reproduced and published, provided it is not +altered, and that no provisions are either added or removed herefrom. + +This Agreement may apply to any or all software for which the holder of +the economic rights decides to submit the use thereof to its provisions. + + + Article 1 - DEFINITIONS + +For the purpose of this Agreement, when the following expressions +commence with a capital letter, they shall have the following meaning: + +Agreement: means this license agreement, and its possible subsequent +versions and annexes. + +Software: means the software in its Object Code and/or Source Code form +and, where applicable, its documentation, "as is" when the Licensee +accepts the Agreement. + +Initial Software: means the Software in its Source Code and possibly its +Object Code form and, where applicable, its documentation, "as is" when +it is first distributed under the terms and conditions of the Agreement. + +Modified Software: means the Software modified by at least one +Contribution. + +Source Code: means all the Software's instructions and program lines to +which access is required so as to modify the Software. + +Object Code: means the binary files originating from the compilation of +the Source Code. + +Holder: means the holder(s) of the economic rights over the Initial +Software. + +Licensee: means the Software user(s) having accepted the Agreement. + +Contributor: means a Licensee having made at least one Contribution. + +Licensor: means the Holder, or any other individual or legal entity, who +distributes the Software under the Agreement. + +Contribution: means any or all modifications, corrections, translations, +adaptations and/or new functions integrated into the Software by any or +all Contributors, as well as any or all Internal Modules. + +Module: means a set of sources files including their documentation that +enables supplementary functions or services in addition to those offered +by the Software. + +External Module: means any or all Modules, not derived from the +Software, so that this Module and the Software run in separate address +spaces, with one calling the other when they are run. + +Internal Module: means any or all Module, connected to the Software so +that they both execute in the same address space. + +GNU GPL: means the GNU General Public License version 2 or any +subsequent version, as published by the Free Software Foundation Inc. + +Parties: mean both the Licensee and the Licensor. + +These expressions may be used both in singular and plural form. + + + Article 2 - PURPOSE + +The purpose of the Agreement is the grant by the Licensor to the +Licensee of a non-exclusive, transferable and worldwide license for the +Software as set forth in Article 5 hereinafter for the whole term of the +protection granted by the rights over said Software. + + + Article 3 - ACCEPTANCE + +3.1 The Licensee shall be deemed as having accepted the terms and +conditions of this Agreement upon the occurrence of the first of the +following events: + + * (i) loading the Software by any or all means, notably, by + downloading from a remote server, or by loading from a physical + medium; + * (ii) the first time the Licensee exercises any of the rights + granted hereunder. + +3.2 One copy of the Agreement, containing a notice relating to the +characteristics of the Software, to the limited warranty, and to the +fact that its use is restricted to experienced users has been provided +to the Licensee prior to its acceptance as set forth in Article 3.1 +hereinabove, and the Licensee hereby acknowledges that it has read and +understood it. + + + Article 4 - EFFECTIVE DATE AND TERM + + + 4.1 EFFECTIVE DATE + +The Agreement shall become effective on the date when it is accepted by +the Licensee as set forth in Article 3.1. + + + 4.2 TERM + +The Agreement shall remain in force for the entire legal term of +protection of the economic rights over the Software. + + + Article 5 - SCOPE OF RIGHTS GRANTED + +The Licensor hereby grants to the Licensee, who accepts, the following +rights over the Software for any or all use, and for the term of the +Agreement, on the basis of the terms and conditions set forth hereinafter. + +Besides, if the Licensor owns or comes to own one or more patents +protecting all or part of the functions of the Software or of its +components, the Licensor undertakes not to enforce the rights granted by +these patents against successive Licensees using, exploiting or +modifying the Software. If these patents are transferred, the Licensor +undertakes to have the transferees subscribe to the obligations set +forth in this paragraph. + + + 5.1 RIGHT OF USE + +The Licensee is authorized to use the Software, without any limitation +as to its fields of application, with it being hereinafter specified +that this comprises: + + 1. permanent or temporary reproduction of all or part of the Software + by any or all means and in any or all form. + + 2. loading, displaying, running, or storing the Software on any or + all medium. + + 3. entitlement to observe, study or test its operation so as to + determine the ideas and principles behind any or all constituent + elements of said Software. This shall apply when the Licensee + carries out any or all loading, displaying, running, transmission + or storage operation as regards the Software, that it is entitled + to carry out hereunder. + + + 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS + +The right to make Contributions includes the right to translate, adapt, +arrange, or make any or all modifications to the Software, and the right +to reproduce the resulting software. + +The Licensee is authorized to make any or all Contributions to the +Software provided that it includes an explicit notice that it is the +author of said Contribution and indicates the date of the creation thereof. + + + 5.3 RIGHT OF DISTRIBUTION + +In particular, the right of distribution includes the right to publish, +transmit and communicate the Software to the general public on any or +all medium, and by any or all means, and the right to market, either in +consideration of a fee, or free of charge, one or more copies of the +Software by any means. + +The Licensee is further authorized to distribute copies of the modified +or unmodified Software to third parties according to the terms and +conditions set forth hereinafter. + + + 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION + +The Licensee is authorized to distribute true copies of the Software in +Source Code or Object Code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Software is +redistributed, the Licensee allows future Licensees unhindered access to +the full Source Code of the Software by indicating how to access it, it +being understood that the additional cost of acquiring the Source Code +shall not exceed the cost of transferring the data. + + + 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE + +When the Licensee makes a Contribution to the Software, the terms and +conditions for the distribution of the resulting Modified Software +become subject to all the provisions of this Agreement. + +The Licensee is authorized to distribute the Modified Software, in +source code or object code form, provided that said distribution +complies with all the provisions of the Agreement and is accompanied by: + + 1. a copy of the Agreement, + + 2. a notice relating to the limitation of both the Licensor's + warranty and liability as set forth in Articles 8 and 9, + +and that, in the event that only the Object Code of the Modified +Software is redistributed, the Licensee allows future Licensees +unhindered access to the full source code of the Modified Software by +indicating how to access it, it being understood that the additional +cost of acquiring the source code shall not exceed the cost of +transferring the data. + + + 5.3.3 DISTRIBUTION OF EXTERNAL MODULES + +When the Licensee has developed an External Module, the terms and +conditions of this Agreement do not apply to said External Module, that +may be distributed under a separate license agreement. + + + 5.3.4 COMPATIBILITY WITH THE GNU GPL + +The Licensee can include a code that is subject to the provisions of one +of the versions of the GNU GPL in the Modified or unmodified Software, +and distribute that entire code under the terms of the same version of +the GNU GPL. + +The Licensee can include the Modified or unmodified Software in a code +that is subject to the provisions of one of the versions of the GNU GPL, +and distribute that entire code under the terms of the same version of +the GNU GPL. + + + Article 6 - INTELLECTUAL PROPERTY + + + 6.1 OVER THE INITIAL SOFTWARE + +The Holder owns the economic rights over the Initial Software. Any or +all use of the Initial Software is subject to compliance with the terms +and conditions under which the Holder has elected to distribute its work +and no one shall be entitled to modify the terms and conditions for the +distribution of said Initial Software. + +The Holder undertakes that the Initial Software will remain ruled at +least by the current license, for the duration set forth in Article 4.2. + + + 6.2 OVER THE CONTRIBUTIONS + +A Licensee who develops a Contribution is the owner of the intellectual +property rights over this Contribution as defined by applicable law. + + + 6.3 OVER THE EXTERNAL MODULES + +A Licensee who develops an External Module is the owner of the +intellectual property rights over this External Module as defined by +applicable law and is free to choose the type of agreement that shall +govern its distribution. + + + 6.4 JOINT PROVISIONS + +The Licensee expressly undertakes: + + 1. not to remove, or modify, in any manner, the intellectual property + notices attached to the Software; + + 2. to reproduce said notices, in an identical manner, in the copies + of the Software modified or not. + +The Licensee undertakes not to directly or indirectly infringe the +intellectual property rights of the Holder and/or Contributors on the +Software and to take, where applicable, vis-à-vis its staff, any and all +measures required to ensure respect of said intellectual property rights +of the Holder and/or Contributors. + + + Article 7 - RELATED SERVICES + +7.1 Under no circumstances shall the Agreement oblige the Licensor to +provide technical assistance or maintenance services for the Software. + +However, the Licensor is entitled to offer this type of services. The +terms and conditions of such technical assistance, and/or such +maintenance, shall be set forth in a separate instrument. Only the +Licensor offering said maintenance and/or technical assistance services +shall incur liability therefor. + +7.2 Similarly, any Licensor is entitled to offer to its licensees, under +its sole responsibility, a warranty, that shall only be binding upon +itself, for the redistribution of the Software and/or the Modified +Software, under terms and conditions that it is free to decide. Said +warranty, and the financial terms and conditions of its application, +shall be subject of a separate instrument executed between the Licensor +and the Licensee. + + + Article 8 - LIABILITY + +8.1 Subject to the provisions of Article 8.2, the Licensee shall be +entitled to claim compensation for any direct loss it may have suffered +from the Software as a result of a fault on the part of the relevant +Licensor, subject to providing evidence thereof. + +8.2 The Licensor's liability is limited to the commitments made under +this Agreement and shall not be incurred as a result of in particular: +(i) loss due the Licensee's total or partial failure to fulfill its +obligations, (ii) direct or consequential loss that is suffered by the +Licensee due to the use or performance of the Software, and (iii) more +generally, any consequential loss. In particular the Parties expressly +agree that any or all pecuniary or business loss (i.e. loss of data, +loss of profits, operating loss, loss of customers or orders, +opportunity cost, any disturbance to business activities) or any or all +legal proceedings instituted against the Licensee by a third party, +shall constitute consequential loss and shall not provide entitlement to +any or all compensation from the Licensor. + + + Article 9 - WARRANTY + +9.1 The Licensee acknowledges that the scientific and technical +state-of-the-art when the Software was distributed did not enable all +possible uses to be tested and verified, nor for the presence of +possible defects to be detected. In this respect, the Licensee's +attention has been drawn to the risks associated with loading, using, +modifying and/or developing and reproducing the Software which are +reserved for experienced users. + +The Licensee shall be responsible for verifying, by any or all means, +the suitability of the product for its requirements, its good working order, +and for ensuring that it shall not cause damage to either persons or +properties. + +9.2 The Licensor hereby represents, in good faith, that it is entitled +to grant all the rights over the Software (including in particular the +rights set forth in Article 5). + +9.3 The Licensee acknowledges that the Software is supplied "as is" by +the Licensor without any other express or tacit warranty, other than +that provided for in Article 9.2 and, in particular, without any warranty +as to its commercial value, its secured, safe, innovative or relevant +nature. + +Specifically, the Licensor does not warrant that the Software is free +from any error, that it will operate without interruption, that it will +be compatible with the Licensee's own equipment and software +configuration, nor that it will meet the Licensee's requirements. + +9.4 The Licensor does not either expressly or tacitly warrant that the +Software does not infringe any third party intellectual property right +relating to a patent, software or any other property right. Therefore, +the Licensor disclaims any and all liability towards the Licensee +arising out of any or all proceedings for infringement that may be +instituted in respect of the use, modification and redistribution of the +Software. Nevertheless, should such proceedings be instituted against +the Licensee, the Licensor shall provide it with technical and legal +assistance for its defense. Such technical and legal assistance shall be +decided on a case-by-case basis between the relevant Licensor and the +Licensee pursuant to a memorandum of understanding. The Licensor +disclaims any and all liability as regards the Licensee's use of the +name of the Software. No warranty is given as regards the existence of +prior rights over the name of the Software or as regards the existence +of a trademark. + + + Article 10 - TERMINATION + +10.1 In the event of a breach by the Licensee of its obligations +hereunder, the Licensor may automatically terminate this Agreement +thirty (30) days after notice has been sent to the Licensee and has +remained ineffective. + +10.2 A Licensee whose Agreement is terminated shall no longer be +authorized to use, modify or distribute the Software. However, any +licenses that it may have granted prior to termination of the Agreement +shall remain valid subject to their having been granted in compliance +with the terms and conditions hereof. + + + Article 11 - MISCELLANEOUS + + + 11.1 EXCUSABLE EVENTS + +Neither Party shall be liable for any or all delay, or failure to +perform the Agreement, that may be attributable to an event of force +majeure, an act of God or an outside cause, such as defective +functioning or interruptions of the electricity or telecommunications +networks, network paralysis following a virus attack, intervention by +government authorities, natural disasters, water damage, earthquakes, +fire, explosions, strikes and labor unrest, war, etc. + +11.2 Any failure by either Party, on one or more occasions, to invoke +one or more of the provisions hereof, shall under no circumstances be +interpreted as being a waiver by the interested Party of its right to +invoke said provision(s) subsequently. + +11.3 The Agreement cancels and replaces any or all previous agreements, +whether written or oral, between the Parties and having the same +purpose, and constitutes the entirety of the agreement between said +Parties concerning said purpose. No supplement or modification to the +terms and conditions hereof shall be effective as between the Parties +unless it is made in writing and signed by their duly authorized +representatives. + +11.4 In the event that one or more of the provisions hereof were to +conflict with a current or future applicable act or legislative text, +said act or legislative text shall prevail, and the Parties shall make +the necessary amendments so as to comply with said act or legislative +text. All other provisions shall remain effective. Similarly, invalidity +of a provision of the Agreement, for any reason whatsoever, shall not +cause the Agreement as a whole to be invalid. + + + 11.5 LANGUAGE + +The Agreement is drafted in both French and English and both versions +are deemed authentic. + + + Article 12 - NEW VERSIONS OF THE AGREEMENT + +12.1 Any person is authorized to duplicate and distribute copies of this +Agreement. + +12.2 So as to ensure coherence, the wording of this Agreement is +protected and may only be modified by the authors of the License, who +reserve the right to periodically publish updates or new versions of the +Agreement, each with a separate number. These subsequent versions may +address new issues encountered by Free Software. + +12.3 Any Software distributed under a given version of the Agreement may +only be subsequently distributed under the same version of the Agreement +or a subsequent version, subject to the provisions of Article 5.3.4. + + + Article 13 - GOVERNING LAW AND JURISDICTION + +13.1 The Agreement is governed by French law. The Parties agree to +endeavor to seek an amicable solution to any disagreements or disputes +that may arise during the performance of the Agreement. + +13.2 Failing an amicable solution within two (2) months as from their +occurrence, and unless emergency proceedings are necessary, the +disagreements or disputes shall be referred to the Paris Courts having +jurisdiction, by the more diligent Party. + + +Version 2.0 dated 2006-07-12. diff --git a/README.md b/README.md new file mode 100644 index 000000000..a05bd7320 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +![Logo](http://cimg.eu/img/CImgLogo2.jpg) +##### http://cimg.eu + +------------------ + +The **CImg Library** is a **small** and **open-source** **C++ toolkit** for **image processing**, designed with these properties in mind: + +![Usefulness](http://cimg.eu/img/item_usefulness.jpg) **CImg** defines *classes* and *methods* to manage images in your own C++ code. You can use **CImg** to load/save various file formats, access pixel values, display/transform/filter images, draw primitives (text, faces, curves, 3d objects, ...), compute statistics, manage user interactions on images, and so on... + +![Genericity](http://cimg.eu/img/item_genericity.jpg) **CImg** defines a single image class able to represent datasets having up to *4-dimensions* (from 1d scalar signals to 3d hyperspectral volumetric images), with *template pixel types* (`bool,char,int,float,...`). It also handles image *collections* and *sequences*. + +![Portability](http://cimg.eu/img/item_portability.jpg) **CImg** is *self-contained*, *thread-safe* and *highly portable*. It fully works on *different operating systems* (`Unix,Windows,MacOS X,*BSD,...`) and is compatible with *various C++ compilers* (`Visual C++,g++,clang++,icc,...`). + +![Simplicity](http://cimg.eu/img/item_simplicity.jpg) **CImg** is *lightweight*. It is made of a single header file [`CImg.h`](https://github.com/dtschump/CImg/raw/master/CImg.h) that must be included in your C++ source. It defines only *four* different classes, encapsulated in the namespace `cimg_library`. It can be compiled using a minimal set of standard C++ and system libraries only. *No need for exotic or complex dependencies*. + +![Extensibility](http://cimg.eu/img/item_extensibility.jpg) Although not mandatory, **CImg** can use functionalities of external tools/libraries such as [Board](http://libboard.sourceforge.net/), [FFMPEG](http://ffmpeg.mplayerhq.hu/), [FFTW3](http://www.fftw.org/), [GraphicsMagick](http://www.graphicsmagick.org/), [ImageMagick](http://www.imagemagick.org/), [Lapack](http://www.netlib.org/lapack/), [libcurl](http://curl.haxx.se/libcurl/), [libjpeg](http://www.ijg.org/), [libpng](http://www.libpng.org/pub/png/libpng.html), [libtiff](http://www.libtiff.org/), [Magick++](http://www.imagemagick.org/Magick++/), [OpenEXR](http://www.openexr.com/), [OpenCV](http://http://opencv.willowgarage.com/wiki/), [OpenMP](http://www.openmp.org/) or [XMedCon](http://xmedcon.sourceforge.net/). Moreover, a simple *plug-in* mechanism allows any user to directly enhance the library capabilities according to their needs. + +![Freedom](http://cimg.eu/img/item_freedom.jpg) **CImg** is a *free, open-source library* distributed under the [*CeCILL-C*](http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt) (close to the GNU LGPL) or [CeCILL](http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt) (compatible with the GNU GPL) licenses. It can be used in commercial applications. + +------------------ + +> **CImg** stands for **Cool Image** : It is _easy to use_, _efficient_ and is intended to be a very pleasant toolbox to design image processing algorithms in C++. Due to its generic conception, it can cover a wide range of image processing applications. + +------------------ diff --git a/README.txt b/README.txt new file mode 100644 index 000000000..f275ef0be --- /dev/null +++ b/README.txt @@ -0,0 +1,180 @@ +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + ____ _ _ ____ + (_ _)( )_( )( ___) + )( ) _ ( )__) + (__) (_) (_)(____) + ___ ____ __ __ ___ __ ____ ____ ____ __ ____ _ _ + / __)(_ _)( \/ )/ __) ( ) (_ _)( _ \( _ \ /__\ ( _ \( \/ ) + ( (__ _)(_ ) (( (_-. )(__ _)(_ ) _ < ) / /(__)\ ) / \ / + \___)(____)(_/\/\_)\___/ (____)(____)(____/(_)\_)(__)(__)(_)\_) (__) + + + C++ Template Image Processing Toolkit + + ( http://cimg.eu ) + + _cimg_version + +-------------------------------------------------------------------------------- + +# Summary +#--------- + + The CImg Library is a small and open-source C++ toolkit for image processing. + It consists in a single header file 'CImg.h' providing a minimal set of C++ + classes and methods that can be used in your own sources, to load/save, + process and display images. Very portable (Unix/X11,Windows, MacOS X, FreeBSD, .. ), + efficient, easy to use, it's a pleasant library for developing image processing + algorithms in C++. + +# Authors and contributors : +#---------------------------- + + - David Tschumperlé (project leader) ( http://tschumperle.users.greyc.fr/ ) + + - Maksim Aizenshtein + - Alberto Albiol + - Antonio Albiol + - Simon Barthelme + - Neil Brown + - Haz-Edine Assemlal + - Vincent Barra + - Wolf Blecher + - Romain Blei + - Yohan Bentolila + - Jerome Boulanger + - Pierre Buyssens + - Sebastien Coudert + - Frederic Devernay + - Olivier D'Hondt + - Francois-Xavier Dupe + - Gerd von Egidy + - Eric Fausett + - Jean-Marie Favreau + - Sebastien Fourey + - Alexandre Fournier + - Hon-Kwok Fung + - Vincent Garcia + - David Grimbichler + - Jinwei Gu + - Jean-Daniel Guyot + - Cedric Hammiche + - Matt Hanson + - Sebastien Hanel + - Michael Holroyd + - Christoph Hormann + - Werner Jainek + - Daniel Kondermann + - Pierre Kornprobst + - Jan W. Krieger + - Orges Leka + - Francois Lauze + - Xie Long + - Thomas Martin + - Cesar Martinez + - Jean Martinot + - Arnold Meijster (Center for High Performance Computing and Visualization, University of Groningen/The Netherlands) + - Nikita Melnichenko + - Julien Morat + - Baptiste Mougel + - Jovana Milutinovich + - Guillaume Nee + - Adam Newgas + - Francisco Oliveira + - Andrea Onofri + - Renaud Peteri + - Martin Petricek + - Paolo Prete + - Adrien Reboisson + - Klaus Schneider + - Jakob Schluttig + - Jamie Smith + - Veronique Souchaud + - Konstantin Spirin + - David G. Starkweather + - Rainer Steffens + - Grzegorz Szwoch + - Thierry Thomas + - Yu-En-Yun + - Vo Duc Khanh + - Phillip Wood + - Bug Zhao + - Haibo Zheng + +# Institution +#------------- + + GREYC Image / CNRS UMR 6072 / FRANCE + + The CImg Library project started in 2000, at the INRIA-Sophia + Antipolis/France ( http://www-sop.inria.fr/ ), in the ROBOTVIS / ODYSSEE Team. + Since October 2004, it is maintained and developed in the Image team of + the GREYC Lab (CNRS, UMR 6072), in Caen/France. + Team web page : http://www.greyc.fr/image + +# Licenses +#---------- + + The source code of the CImg Library is distributed under + two distinct licenses : + + - The main library file 'CImg.h' is *dual-licensed* : + It can be either distributed under the CeCILL-C or CeCILL license. + (see files 'Licence_CeCILL-C_V1-en.txt' and 'Licence_CeCILL_V2-en.txt'). + Both are Free-Software licenses : + + * CeCILL-C is adapted to the distribution of + library components, and is close in its terms to the well known GNU LGPL license + (the 'CImg.h' file can thus be used in closed-source products under certain + conditions, please read carefully the license file). + + * CeCILL is close to (and even compatible with) the GNU GPL license. + + - Most of the other files are distributed under the CeCiLL license + (file 'Licence_CeCILL_V2-en.txt'). See each file header to see what license applies. + + These two CeCiLL licenses ( http://www.cecill.info/index.en.html ) have been + created under the supervision of the three biggest research institutions on + computer sciences in France : + + - CNRS ( http://www.cnrs.fr/ ) + - CEA ( http://www.cea.fr/ ) + - INRIA ( http://www.inria.fr/ ) + + You have to RESPECT these licenses. More particularly, please carefully read + the license terms before using the CImg library in commercial products. + +# Package structure : +#-------------------- + + The main package directory CImg/ is organized as follows : + + - README.txt : This file. + - Licence_CeCILL-C_V1-en.txt : A copy of the CeCiLL-C license file. + - Licence_CeCILL_V2-en.txt : A copy of the CeCiLL license. + - CImg.h : The single header file that constitutes the library itself. + - examples/ : A directory containing a lot of example programs performing + various things, using the CImg library. + - html/ : A directory containing a copy of the CImg web page in html + format. The reference documentation is generated + automatically with the tool 'doxygen' (http://www.doxygen.org). + - resources/ : A directory containing some resources files for compiling + CImg examples or packages with various C++ compilers and OS. + - plugins/ : A directory containing CImg plug-ins files that can be used to + add specific extra functionalities to the CImg library. + +# Getting started +#----------------- + + If you are new to CImg, you should first try to compile the different examples + provided in the 'examples/' directory, to see what CImg is capable of + (as CImg is a template-based library, no prior compilation of the library is mandatory). + Look at the 'resources/' directory to ease this compilation on different platforms. + + Then, you can look at the documentation 'html/reference/' to learn more about CImg + functions and classes. Finally, you can participate to the 'Forum' section + of the CImg web page and ask for help if needed. + +# End of file +#------------ diff --git a/examples/CImg_demo.cpp b/examples/CImg_demo.cpp new file mode 100644 index 000000000..4a03db80e --- /dev/null +++ b/examples/CImg_demo.cpp @@ -0,0 +1,1712 @@ +/* + # + # File : CImg_demo.cpp + # ( C++ source file ) + # + # Description : A multi-part demo demonstrating some of the CImg capabilities. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include static image data, so that the exe does not depend on external image files. +#include "img/CImg_demo.h" + +// Include CImg library header. +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Item : Blurring Gradient +//---------------------------- +void* item_blurring_gradient() { + const CImg src(data_milla,211,242,1,3); + CImgList grad = src.get_gradient(); + CImgList visu = (src,sqrt(grad[0].pow(2) + grad[1].pow(2)).normalize(0,255),src); + CImgDisplay disp(visu,"[#1] - Color Image, Gradient Norm and Blurring Gradient",0); + + for (double sigma = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); sigma+=0.05) { + visu[2] = visu[1].get_blur((float)cimg::abs(30*std::cos(sigma))).normalize(0,255); + disp.resize(false).display(visu).wait(20); + } + return 0; +} + +// Item : Rotozoom +//----------------- +void* item_rotozoom() { + CImg src = CImg(data_milla,211,242,1,3,false).resize(400,300,1,3,3), + img(src), img2(img); + CImgDisplay disp(img.width(),img.height(),"[#2] - Rotozoom",0); + float alpha = 0, t = 0, angle = 0, zoom0 = -0.9f, w2 = 0.5f*img.width(), h2 = 0.5f*img.height(); + const unsigned char color[] = { 16,32,64 }; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + cimg_forYC(src,y,k) { + const int xc = 4*src.width() + (int)(60*std::sin((float)y*3/src.height() + 10*t)); + cimg_forX(src,x) { + const float val = (float)(src((xc + x)%src.width(),y,0,k)* + (1.3f + 0.20*std::sin(alpha + k*k*((float)src.width()/2 - x)* + ((float)src.height()/2 - y)*std::cos(t)/300.0))); + img(x,y,0,k) = (unsigned char)(val>255.0f?255:val); + } + } + const float + zoom = 1.0f + (float)(zoom0 + 0.3f*(1 + std::cos(3*t))), + rad = (float)(angle*cimg::PI/180), ca = (float)std::cos(rad)/zoom, sa = (float)std::sin(rad)/zoom; + cimg_forXY(img,x,y) { + const float + cX = x - w2, cY = y - h2, + fX = w2 + cX*ca - cY*sa, + fY = h2 + cX*sa + cY*ca; + const int + X = cimg::mod((int)fX,img.width()), + Y = cimg::mod((int)fY,img.height()); + cimg_forC(img,c) img2(x,y,c) = img(X,Y,c); + } + img2.swap(img).draw_text(3,3,"Mouse buttons\nto zoom in/out",color,0,0.8f,24).display(disp.resize(false).wait(20)); + alpha+=0.7f; t+=0.01f; angle+=0.8f; + zoom0+=disp.button()&1?0.1f:disp.button()&2?-0.1f:0; + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(400,400,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Anisotropic Smoothing (Total variation PDE, explicit scheme) +//-------------------------------------------------------------------- +void* item_anisotropic_smoothing() { + const CImg src = CImg<>(data_milla,211,242,1,3).noise(-30,1); + CImgList images(src,src); + CImgDisplay disp(images,"[#3] - Anisotropic smoothing"); + const float white[] = { 255, 255, 255 }, black[] = { 0, 0, 0 }; + + for (unsigned int iter = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ++iter) { + + // Compute PDE velocity field. + CImg_3x3(I,float); + CImg veloc(src); + float *ptrd = veloc.data(), betamax = 0; + cimg_forC(src,k) cimg_for3x3(images[1],x,y,0,k,I,float) { + const float + ix = (Inc - Ipc)/2, + iy = (Icn - Icp)/2, + ng = (float)std::sqrt(1e-10f + ix*ix + iy*iy), + ixx = Inc + Ipc - 2*Icc, + iyy = Icn + Icp - 2*Icc, + ixy = 0.25f*(Inn + Ipp - Ipn - Inp), + iee = (ix*ix*iyy + iy*iy*ixx - 2*ix*iy*ixy)/(ng*ng), + beta = iee/(0.1f + ng); + if (beta>betamax) betamax = beta; else if (-beta>betamax) betamax = -beta; + *(ptrd++) = beta; + } + veloc*=40.0f/betamax; + images[1]+=veloc; + images[0].draw_text(4,4,"Iteration : %u ",white,black,1,13,iter); + disp.resize(false).display(images); + } + return 0; +} + +// Item : Fractal Animation +//-------------------------- +void* item_fractal_animation() { + CImg img(400,400,1,3,0), img2(img), noise(3,2,1,3); + const float w2 = 0.5f*img.width(), h2 = 0.5f*img.height(); + CImgDisplay disp(img,"[#4] - Fractal Animation"); + float zoom = 0; + for (unsigned int iter = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ++iter, zoom+=0.2f) { + img.draw_image((img.width() - noise.width())/2, + (img.height() - noise.height())/2, + noise.fill(0).noise(255,1)); + const float + nzoom = (float)(1.04f + 0.02f*std::sin(zoom/10)), + rad = (float)(10*std::sin(iter/25.0)*cimg::PI/180), + ca = (float)std::cos(rad)/nzoom, sa = (float)std::sin(rad)/nzoom; + cimg_forXY(img,x,y) { + const float + cX = x - w2, cY = y - h2, + X = w2 + cX*ca - cY*sa, + Y = h2 + cX*sa + cY*ca; + cimg_forC(img,c) img2(x,y,c) = img.atXY((int)X,(int)Y,0,c,0); + } + img2.swap(img).resize(disp.resize(false)).display(disp.wait(25)); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(400,400,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Gamma Correction and Histogram Visualization +//----------------------------------------------------- +void* item_gamma_correction() { + CImg img = CImg<>(data_milla,211,242,1,3).normalize(0,1); + CImgList visu(img*255.0,CImg(512,300,1,3,0)); + CImgDisplay disp(visu,"[#5] - Gamma Corrected Image and Histogram (Click to set Gamma)"); + const unsigned char + yellow[] = { 255, 255, 0 }, blue[] = { 0, 155, 255 }, blue2[] = { 0, 0, 255 }, + blue3[] = { 0, 0, 155 }, white[] = { 255, 255, 255 }, green[] = { 50, 128, 50 }; + + for (double gamma = 1; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ) { + cimg_forXYZC(visu[0],x,y,z,k) visu[0](x,y,z,k) = (unsigned char)(std::pow((double)img(x,y,z,k),1.0/gamma)*256); + const CImg hist = visu[0].get_histogram(50,0,255); + visu[1].fill(0).draw_text(50,5,"Gamma = %.3g",white,0,1,24,gamma). + draw_graph(hist,green,1,3,0,20000,0).draw_graph(hist,yellow,1,2,0,20000,0). + draw_axes(0,256,20000,0,white,0.7f); + const int xb = (int)(50 + gamma*150); + visu[1].draw_grid(20,20,0,0,false,false,white,0.3f,0xCCCCCCCC,0xCCCCCCCC). + draw_rectangle(51,31,xb - 1,39,blue2).draw_rectangle(50,30,xb,30,blue).draw_rectangle(xb,30,xb,40,blue). + draw_rectangle(xb,40,50,39,blue3).draw_rectangle(50,30,51,40,blue3); + if (disp.button() && disp.mouse_x()>=img.width() + 50 && disp.mouse_x()<=img.width() + 450) + gamma = (disp.mouse_x() - img.width() - 50)/150.0; + disp.resize(disp,false).display(visu).wait(); + } + return 0; +} + +// Item : Filled Triangles +//------------------------- +void* item_filled_triangles() { + + // Create a colored 640x480 background image which consists of different color shades. + CImg background(640,480,1,3); + cimg_forXY(background,x,y) background.fillC(x,y,0, + x*std::cos(6.0*y/background.height()) + + y*std::sin(9.0*x/background.width()), + x*std::sin(8.0*y/background.height()) - + y*std::cos(11.0*x/background.width()), + x*std::cos(13.0*y/background.height()) - + y*std::sin(8.0*x/background.width())); + background.normalize(0,180); + + // Init images and create display window. + CImg img0(background), img; + unsigned char white[] = { 255, 255, 255 }, color[100][3]; + CImgDisplay disp(img0,"[#6] - Filled Triangles (Click to shrink)"); + + // Define random properties (pos, size, colors, ..) for all triangles that will be displayed. + float posx[100], posy[100], rayon[100], angle[100], veloc[100], opacity[100]; + int num = 1; + std::srand((unsigned int)time(0)); + for (int k = 0; k<100; ++k) { + posx[k] = (float)(cimg::rand()*img0.width()); + posy[k] = (float)(cimg::rand()*img0.height()); + rayon[k] = (float)(10 + cimg::rand()*50); + angle[k] = (float)(cimg::rand()*360); + veloc[k] = (float)(cimg::rand()*20 - 10); + color[k][0] = (unsigned char)(cimg::rand()*255); + color[k][1] = (unsigned char)(cimg::rand()*255); + color[k][2] = (unsigned char)(cimg::rand()*255); + opacity[k] = (float)(0.3 + 1.5*cimg::rand()); + } + + // Start animation loop. + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + img = img0; + + // Draw each triangle on the background image. + for (int k = 0; k0 && disp.mouse_y()>0) { + float u = disp.mouse_x() - posx[k], v = disp.mouse_y() - posy[k]; + if (disp.button()) { u = -u; v = -v; } + posx[k]-=0.03f*u, posy[k]-=0.03f*v; + if (posx[k]<0 || posx[k]>=img.width()) posx[k] = (float)(cimg::rand()*img.width()); + if (posy[k]<0 || posy[k]>=img.height()) posy[k] = (float)(cimg::rand()*img.height()); + } + } + + // Display current animation framerate, and refresh display window. + img.draw_text(5,5,"%u frames/s",white,0,0.5f,13,(unsigned int)disp.frames_per_second()); + img0.resize(disp.display(img).resize(false).wait(20)); + if (++num>100) num = 100; + + // Allow the user to toggle fullscreen mode, by pressing CTRL+F. + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Mandelbrot/Julia Explorer +//---------------------------------- +void* item_mandelbrot_explorer() { + + // Define image canvas and corresponding display window. + CImg img(800,600,1,3,0); + CImgDisplay disp(img); + + // Start main explorer loop. + double julia_r = 0, julia_i = 0; + for (bool endflag = false, fractal_type = false, smooth = false, show_help = true; !endflag;) { + bool stopflag = false; + double xmin, xmax, ymin, ymax; + + // Init default upper-left/lower-right coordinates of the fractal set. + if (fractal_type) { xmin = -1.5; xmax = 1.5; ymin = -1.5; ymax = 1.5; julia_r = 0.317; julia_i = 0.029; } + else { xmin = -2.25; xmax = 1.0; ymin = -1.5; ymax = 1.5; julia_r = julia_i = 0; } + + // Create random palette for displaying the fractal set. + const CImg palette = + CImg(256,1,1,3,16 + 120).noise(119,1).resize(1024,1,1,3,3).fillC(0,0,0,0,0,0); + + // Enter event loop for the current fractal set. + for (unsigned int maxiter = 64; !stopflag; ) { + + // Draw Mandelbrot or Julia fractal set on the image. + img.resize(disp.resize().set_title("[#7] - %s Set : (%g,%g)-(%g,%g), %s = (%g,%g) (%u iter.)", + fractal_type?"Julia":"Mandelbrot",xmin,ymin,xmax,ymax, + fractal_type?"c":"z0",julia_r,julia_i,maxiter)). + fill(0).draw_mandelbrot(palette,1,xmin,ymin,xmax,ymax,maxiter,smooth,fractal_type,julia_r,julia_i); + + // Display help if necessary. + if (show_help) { + const unsigned char white[] = { 255, 255, 255 }; + static CImg + help = CImg().draw_text(0,0,"\n" + " Use mouse to zoom on desired region. \n" + " H Show/Hide help \n" + " PAD 1...9 Fractal navigation \n" + " PAD +/- Zoom/Unzoom \n" + " SPACE Set/Disable color smoothing \n" + " ENTER Switch Mandelbrot/Julia sets \n" + " Arrows Change set parameterization \n" + " Page UP/DOWN Add/Reduce iteration numbers \n\n", + white).resize(-100,-100,1,3); + help.draw_rectangle(2,2,help.width() - 3,help.height() - 3,white,1,~0U); + img.draw_image(img.width() - help.width(),help,0.7f); + } + + // Get rectangular shape from the user to define the zoomed region. + const CImg selection = img.get_select(disp,2,0,true); + const int xs0 = selection[0], ys0 = selection[1], xs1 = selection[3], ys1 = selection[4]; + + // If the user has selected a region with the mouse, then zoom-in ! + if (xs0>=0 && ys0>=0 && xs1>=0 && ys1>=0) { + const double dx =(xmax - xmin)/img.width(), dy =(ymax - ymin)/img.height(); + const int dsmax = (ys1 - ys0)/2, xs = (xs0 + xs1)/2, ys = (ys0 + ys1)/2; + + // If the region is too small (point) then reset the fractal set position and zoom. + if (dsmax<5) stopflag = true; + xmin+=(xs - dsmax*dy/dx)*dx; + ymin+=(ys - dsmax)*dy; + xmax-=(img.width() - xs - dsmax*dy/dx)*dx; + ymax-=(img.height() - ys - dsmax)*dy; + } + + // Also, test if a key has been pressed. + // (moving in the fractal set can be done, using keyboard). + switch (disp.key()) { + + // Show/hide help. + case cimg::keyH: show_help = !show_help; break; + + // Switch between Julia/Mandelbrot sets. + case cimg::keyENTER: fractal_type = !fractal_type; stopflag = true; break; + + // Enable/disable smoothed colors. + case cimg::keySPACE: smooth = !smooth; break; + + // Change fractal set parameters. + case cimg::keyARROWLEFT: julia_r-=fractal_type?0.001f:0.05f; break; + case cimg::keyARROWRIGHT: julia_r+=fractal_type?0.001f:0.05f; break; + case cimg::keyARROWUP: julia_i+=fractal_type?0.001f:0.05f; break; + case cimg::keyARROWDOWN: julia_i-=fractal_type?0.001f:0.05f; break; + + // Add/remove iterations. + case cimg::keyPAGEDOWN: maxiter-=32; break; + case cimg::keyPAGEUP: maxiter+=16; break; + + // Move left, right, up and down in the fractal set. + case cimg::keyPAD4: { const double delta = (xmax - xmin)/10; xmin-=delta; xmax-=delta; } break; + case cimg::keyPAD6: { const double delta = (xmax - xmin)/10; xmin+=delta; xmax+=delta; } break; + case cimg::keyPAD8: { const double delta = (ymax - ymin)/10; ymin-=delta; ymax-=delta; } break; + case cimg::keyPAD2: { const double delta = (ymax - ymin)/10; ymin+=delta; ymax+=delta; } break; + + // Allow to zoom in/out in the fractal set. + case cimg::keyPADADD: { + const double + xc = 0.5*(xmin + xmax), + yc = 0.5*(ymin + ymax), + dx = (xmax - xmin)*0.85/2, + dy = (ymax - ymin)*0.85/2; + xmin = xc - dx; ymin = yc - dy; xmax = xc + dx; ymax = yc + dy; + } break; + case cimg::keyPADSUB: + const double + xc = 0.5*(xmin + xmax), + yc = 0.5*(ymin + ymax), + dx = (xmax - xmin)*1.15/2, + dy = (ymax - ymin)*1.15/2; + xmin = xc - dx; ymin = yc - dy; xmax = xc + dx; ymax = yc + dy; + break; + } + + // Do a simple test to check if more/less iterations are necessary for the next step. + const float value = (float)img.get_norm().get_histogram(256,0,255)(0)*3; + if (value>img.size()/6.0f) maxiter+=16; + if (maxiter>1024) maxiter = 1024; + if (value img(256,256 + 64,1,3,0); + unsigned char color[] = { 255, 255, 255 }; + cimg_for_inY(img,256,img.height() - 1,yy) cimg_forX(img,xx) img.fillC(xx,yy,0,xx,(yy - 256)*4,(3*xx)%256); + CImgDisplay disp(img.draw_text(5,5," ",color,color),"[#8] - Mini-Paint"); + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + const unsigned int but = disp.button(); + redraw = false; + xo = x; yo = y; x = disp.mouse_x(); y = disp.mouse_y(); + if (xo>=0 && yo>=0 && x>=0 && y>=0) { + if (but&1 || but&4) { + if (y<253) { + const float tmax = (float)std::max(cimg::abs(xo - x),cimg::abs(yo - y)) + 0.1f; + const int radius = (but&1?3:0) + (but&4?6:0); + for (float t = 0; t<=tmax; ++t) + img.draw_circle((int)(x + t*(xo - x)/tmax),(int)(y + t*(yo - y)/tmax),radius,color); + } + if (y>=256) { + color[0] = img(x,y,0); color[1] = img(x,y,1); color[2] = img(x,y,2); + img.draw_text(5,5," ",color,color); + } + redraw = true; + } + if (y>=253) y = 252; + if (disp.button()&2) { img.draw_fill(x,y,color); redraw = true; } + } + if (redraw) disp.display(img); + disp.resize(disp).wait(); + if (disp.key()) cimg_forC(img,k) { img.get_shared_rows(0,255,0,k).fill(0); img.display(disp); } + } + return 0; +} + +// Item : Soccer Bobs +//------------------- +void* item_soccer_bobs() { + CImg foot(data_foot,200,200,1,3,false), canvas0(640,480,1,3,0); + const unsigned char color[] = { 255, 255, 0 }; + float zoom = 0.2f; + cimg_forXY(canvas0,x,y) canvas0(x,y,1) = (unsigned char)(20 + (y*215/canvas0.height()) + 19*cimg::rand(-1,1)); + canvas0.draw_text(5,5,"Left/Right Mouse Button = Zoom In/Out\nMiddle Button = Reset Screen",color); + CImgList canvas(16,canvas0); + CImg mask(foot.width(),foot.height()); + cimg_forXY(mask,x,y) mask(x,y) = (foot(x,y,0)==255 && !foot(x,y,1) && !foot(x,y,2))?0:0.8f; + CImgDisplay disp(canvas0,"[#9] - Unlimited Soccer Bobs"); + for (unsigned int curr_canvas = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); (++curr_canvas) %= 16) { + if (disp.mouse_x()>=0 && disp.mouse_y()>=0) + canvas[curr_canvas].draw_image((int)(disp.mouse_x() - zoom*foot.width()/2), + (int)(disp.mouse_y() - zoom*foot.height()/2), + foot.get_resize((int)(foot.width()*zoom),(int)(foot.height()*zoom)), + mask.get_resize((int)(foot.width()*zoom),(int)(foot.height()*zoom))); + zoom+=disp.button()&1?0.03f:disp.button()&2?-0.03f:0; + zoom = zoom<0.1f?0.1f:zoom>1?1.0f:zoom; + if (disp.button()&4) cimglist_for(canvas,l) canvas[l] = canvas0; + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen(false); + disp.display(canvas[curr_canvas]).resize(disp,false).wait(20); + } + return 0; +} + +// Item : Bump Effect +//-------------------- +void* item_bump() { + CImg logo = CImg<>(56,32,1,1,0).draw_text(12,3,"I Love\nCImg !",CImg<>::vector(255).data()). + resize(-800,-800,1,1,3).blur(6).normalize(0,255); + logo+=CImg<>(logo.width(),logo.height(),1,1,0).noise(80,1).deriche(2,0,'y',false).deriche(10,0,'x',false); + CImgList grad = logo.get_gradient(); + cimglist_apply(grad,normalize)(-140,140); + logo.normalize(0,255); + CImg light = CImg<>(300 + 2*logo.width(),300 + 2*logo.height()); + light.draw_gaussian(0.5f*light.width(),0.5f*light.height(),80,CImg<>::vector(255).data()); + CImg img(logo.width(),logo.height(),1,3,0); + CImgDisplay disp(img,"[#10] - Bump Effect (Move lightsource with mouse)"); + for (float t = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); t+=0.03f) { + const int + mouse_x = (disp.mouse_x()>=0 && disp.button())?disp.mouse_x()*img.width()/disp.width(): + (int)(img.width()/2 + img.width()*std::cos(1*t)/2), + mouse_y = (disp.mouse_y()>=0 && disp.button())?disp.mouse_y()*img.height()/disp.height(): + (int)(img.height()/2 + img.height()*std::sin(3*t)/2); + cimg_forXY(img,x,y) { + const int gx = (int)grad[0](x,y), gy = (int)grad[1](x,y); + const float val = 40 + (gx + gy)/2 + light(light.width()/2 + mouse_x - x + gx, + light.height()/2 + mouse_y - y + gy); + img(x,y,0) = img(x,y,1) = img(x,y,2) = (unsigned char)(val>255?255:val<0?0:val); + } + disp.resize(false).display(img.draw_image(0,0,0,1,logo,0.1f)).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Bouncing Bubble +//------------------------ +void* item_bouncing_bubble() { + CImg back(420,256,1,3,0), img; + cimg_forXY(back,x,y) back(x,y,2) = (unsigned char)((y<2*back.height()/3)?30:(255 - 2*(y + back.height()/2))); + CImgDisplay disp(back,"[#11] - Bouncing bubble"); + const unsigned char col1[] = { 40, 100, 10 }, col2[] = { 20, 70, 0 }, col3[] = { 40, 150, 10 }, + col4[] = { 200, 255, 100 }, white[] = { 255, 255, 255 }; + float u = (float)std::sqrt(2.0f), cx = back.width()/2.0f, t = 0, vt = 0.05f, vx = 2; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + img = back; + int xm = (int)cx, ym = (int)(img.height()/2 - 70 + (img.height()/2 + 10)*(1 - cimg::abs(std::cos((t+=vt))))); + float r1 = 50, r2 = 50; + vt = 0.05f; + if (xm + r1>=img.width()) { const float delta = (xm + r1) - img.width(); r1-=delta; r2+=delta; } + if (xm - r1<0) { const float delta = -(xm - r1); r1-=delta; r2+=delta; } + if (ym + r2>=img.height() - 40) { + const float delta = (ym + r2) - img.height() + 40; + r2-=delta; + r1+=delta; + vt = 0.05f - 0.0015f*(50 - r2); + } + if (ym - r2<0) { const float delta = -(ym - r2); r2-=delta; r1+=delta; } + img.draw_ellipse(xm,ym,r1,r2,0,col1). + draw_ellipse((int)(xm + 0.03*r1*u),(int)(ym - 0.03*r2*u),0.85f*r1,0.85f*r2,0,col2). + draw_ellipse((int)(xm + 0.1*r1*u),(int)(ym - 0.1*r2*u),0.8f*r1,0.8f*r2,0,col1). + draw_ellipse((int)(xm + 0.2*r1*u),(int)(ym - 0.2*r2*u),r1/2,r2/2,0,col3). + draw_ellipse((int)(xm + 0.3*r1*u),(int)(ym - 0.3*r2*u),r1/4,r2/4,0,col4). + draw_image(0,img.height() - 40,img.get_crop(0,img.height() - 80,img.width() - 1,img.height() - 40). + mirror('y'),0.45f). + draw_text(xm - 70,(int)(ym - r2 - 30),"Bubble (%d,%d)",white,0,0.7f,24,xm,ym); + if ((cx+=20*vt*vx)>=img.width() - 30 || cx<30) vx = -vx; + disp.display(img).wait(20); + if (disp.is_resized()) { + back.resize(disp.resize(disp.window_width()>200?disp.window_width():200,disp.height(),false)); + cx = back.width()/2.0f; + } + } + return 0; +} + +// Item : Virtual Landscape +//-------------------------- +void* item_virtual_landscape() { + CImg background(400,300,1,3,0), visu(background); + cimg_forXY(background,x,y) { + if (y>background.height()/2) { + background(x,y,2) = 255; + background(x,y,0) = (y - background.height()/2)*512/background.height(); + } else background(x,y,2) = y*512/background.height(); + } + const int white[] = { 255, 255, 255 }; + CImgDisplay disp(visu.draw_text(10,10,"Please wait, generating landscape...",white). + normalize(0,255),"[#12] - Virtual Landscape",0); + CImg + map = 5.0*(CImg<>(700,700,1,1,300).noise(300).draw_plasma(0.2f,300).normalize(-140,150).blur(5).cut(0,150)), + cmap(map.width(),map.height()); + CImg_3x3(I,float); Ipp = Inp = Icc = Ipn = Inn = 0; + cimg_for3x3(map,x,y,0,0,I,float) { + const float nox = 0.5f*(Inc - Ipc), noy = 0.5f*(Icn - Icp); + cmap(x,y) = std::max(0.0f,0.5f*nox + noy); + } + cmap.normalize(0,255); + + for (float t = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); t+=0.0025f) { + visu = background; + const int + xm = (int)(map.width()/2 + (map.width()/3)*std::cos(4.2f*t)), + ym = (int)(map.height()/2 + (map.height()/3)*std::sin(5.6f*t)); + const CImg + smap = map.get_crop(xm,ym,xm + 100,ym + 90), + scmap = cmap.get_crop(xm,ym,xm + 100,ym + 90); + CImg ymin(visu.width(),1,1,1,visu.height()), ymax(ymin.width(),1,1,1,0); + cimg_forY(smap,z) { + const int y0 = (int)(visu.height() - 1 - 10*std::pow((double)z,0.63) + 80); + cimg_forX(visu,x) { + const int nz = smap.height() - z; + float mx = x*(smap.width() - 2.0f*nz*0.2f)/visu.width() + 0.2f*nz; + const int y = (int)(y0 - smap.linear_atX(mx,z)/(1 + 0.02*z)); + const float cc = (float)scmap.linear_atX(mx,z); + if (y0.25?1:4*cz; + if (y!=y0) for (int l = y>0?y:0; l0?y:0; l plasma, camp(3), cfreq(3), namp(3), nfreq(3); + CImgList font = CImgList::font(53); + CImg visu(400,300,1,3,0), + scroll(visu.width() + 2*font[(int)'W'].width(),font[(int)'W'].height(),1,1,0); + const char *text = " * The CImg Library : C++ Template Image Processing Toolkit *"; + CImgDisplay disp(visu,"[#13] - Plasma Effect"); + const unsigned char white[] = { 255, 255, 255 }; + unsigned int cplasma = 0, pos = 0, tpos = 0, lwidth = 0; + float tx = 0, ts = 0, alpha = 2, beta = 0; + namp.fill(0).noise(visu.height()/4,0); + nfreq.fill(0).noise(0.1); + + visu.draw_text(10,10,"Please wait, generating plasma...",white).display(disp); + const unsigned int nb_plasmas = 5; + plasma.assign(5*visu.width()/3,visu.height() + 1,1,nb_plasmas,0).noise(100).draw_plasma(); + cimg_forC(plasma,k) plasma.get_shared_channel(k).blur((float)(cimg::rand()*6)).normalize(0,255); + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + if (alpha>1) { + alpha-=1; + cplasma = (cplasma + 1)%plasma.spectrum(); + camp = namp; + cfreq = nfreq; + namp.fill(0).noise(100).normalize(0,visu.height()/4.0f); + nfreq.fill(0).noise(0.2); + } + const unsigned int + v0 = cplasma, v1 = (cplasma + 1)%plasma.spectrum(), + v2 = (cplasma + 2)%plasma.spectrum(), v3 = (cplasma + 3)%plasma.spectrum(); + const float umalpha = 1 - alpha; + + unsigned char *ptr_r = visu.data(0,0,0,0), *ptr_g = visu.data(0,0,0,1), *ptr_b = visu.data(0,0,0,2); + cimg_forY(visu,y) { + const float + *ptr_r1 = plasma.data((unsigned int)std::max(0.0f,camp(0)*(1.1f + std::sin(tx + cfreq(0)*y))),y,v0), + *ptr_g1 = plasma.data((unsigned int)std::max(0.0f,camp(1)*(1.1f + std::sin(tx + cfreq(1)*y))),y,v1), + *ptr_b1 = plasma.data((unsigned int)std::max(0.0f,camp(2)*(2.0f + std::sin(tx + cfreq(2)*y))),y,v2), + *ptr_r2 = plasma.data((unsigned int)std::max(0.0f,namp(0)*(1.1f + std::sin(tx + nfreq(0)*y))),y,v1), + *ptr_g2 = plasma.data((unsigned int)std::max(0.0f,namp(1)*(1.1f + std::sin(tx + nfreq(1)*y))),y,v2), + *ptr_b2 = plasma.data((unsigned int)std::max(0.0f,namp(2)*(2.0f + std::sin(tx + nfreq(2)*y))),y,v3); + cimg_forX(visu,x) { + *(ptr_r++) = (unsigned char)(umalpha*(*(ptr_r1++)) + alpha*(*(ptr_r2++))); + *(ptr_g++) = (unsigned char)(umalpha*(*(ptr_g1++)) + alpha*(*(ptr_g2++))); + *(ptr_b++) = (unsigned char)(umalpha*(*(ptr_b1++)) + alpha*(*(ptr_b2++))); + } + } + if (!pos) { + const CImg& letter = font(text[tpos] + 256); + lwidth = (unsigned int)letter.width(); + scroll.draw_image(visu.width(),letter); + (++tpos) %= std::strlen(text); + } + scroll.shift(-2); + if ((pos+=2)>lwidth + 2) pos = 0; + cimg_forX(visu,x) { + const int y0 = (int)(visu.height()/2 + visu.height()/4*std::sin(ts + x/(70 + 30*std::cos(beta)))); + cimg_forY(scroll,y) if (scroll(x,y)) { + const unsigned int y1 = y0 + y + 2; + const unsigned int y2 = y1 - 6; + const float c = scroll(x,y)/255.0f; + cimg_forC(visu,k) { + visu(x,y1,k) = (unsigned char)(visu(x,y1,k)*0.7f); + visu(x,y2,k) = (unsigned char)(visu(x,y2,k)*(1 - c) + 254*c); + } + } + } + alpha+=0.007f; beta+=0.04f; tx+=0.09f; ts+=0.04f; + disp.resize(false).display(visu).wait(20); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + } + return 0; +} + +// Item : Oriented Convolutions +//------------------------------ +void* item_oriented_convolutions() { + const CImg img = CImg(data_milla,211,242,1,3).RGBtoYCbCr().channel(0).noise(50,2); + CImgList visu = (img,img,img); + CImg mask(16,16); + const float value = 255; + CImgDisplay disp(visu,"[#14] - Original image, Oriented kernel and Convolved image"); + for (float angle = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); angle+=0.1f) { + const float ca = (float)std::cos(angle), sa = (float)std::sin(angle); + const CImg + u = CImg<>::vector(ca,sa), + v = CImg<>::vector(-sa,ca), + tensor = 30.0*u*u.get_transpose() + 2.0*v*v.get_transpose(); + mask.draw_gaussian(0.5f*mask.width(),0.5f*mask.height(),tensor,&value); + mask/=mask.sum(); + visu[1] = mask.get_resize(img).normalize(0,255). + draw_text(2,2,"Angle = %d deg",&value,0,1,13,cimg::mod((int)(angle*180/cimg::PI),360)); + visu[2] = img.get_convolve(mask); + disp.resize(disp.window_width(),(int)(disp.height()*disp.window_width()/disp.width()),false). + display(visu).wait(25); + } + return 0; +} + +// Item : Shade Bobs +//------------------- +void* item_shade_bobs() { + float t = 100, rx = 0, ry = 0, rz = 0, rt = 0, rcx = 0; + CImg img(512,512,1,1,0), palette; + CImgDisplay disp(img,"[#15] - Shade Bobs"); + const unsigned char one = 1; + int nbbobs = 0, rybobs = 0; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + if ((t+=0.015f)>4*cimg::PI) { + img.fill(0); + rx = (float)(cimg::rand(-1,1)); + ry = (float)(cimg::rand(-1,1)); + rz = (float)(cimg::rand(-1,1)); + rt = (float)(cimg::rand(-1,1)); + rcx = 0.6f*(float)(cimg::rand(-1,1)); + t = 0; + palette = CImg(3,4 + (int)(12*cimg::rand()),1,1,0).noise(255,2).resize(3,256,1,1,3); + palette(0) = palette(1) = palette(2) = 0; + nbbobs = 20 + (int)(cimg::rand()*80); + rybobs = (10 + (int)(cimg::rand()*50))*std::min(img.width(),img.height())/300; + } + for (int i = 0; i tmp(img); + cimg_for3x3(tmp,x,y,0,0,I,unsigned char) img(x,y) = (Inc + Ipc + Icn + Icp + (Icc<<2))>>3; + CImg visu(img.width(),img.height(),1,3); + cimg_forXY(visu,xx,yy) { + const unsigned char *col = palette.data(0,img(xx,yy)); + visu(xx,yy,0) = *(col++); + visu(xx,yy,1) = *(col++); + visu(xx,yy,2) = *(col++); + } + disp.display(visu).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + if (disp.is_resized()) img.resize(disp.resize(false),3); + if ((disp.key() && !disp.is_keyCTRLLEFT()) || disp.button()) { + t = 70; if (!(disp.is_keyQ() || disp.is_keyESC())) disp.set_key(); + disp.set_button(); + } + } + return 0; +} + +// Item : Fourier Filtering +//------------------------- +void* item_fourier_filtering() { + const CImg img = CImg(data_milla,211,242,1,3).RGBtoYCbCr().channel(0).resize(256,256); + CImgList F = img.get_FFT(); + cimglist_apply(F,shift)(img.width()/2,img.height()/2,0,0,2); + const CImg mag = ((F[0].get_pow(2) + F[1].get_pow(2)).sqrt() + 1).log().normalize(0,255); + CImgList visu(img,mag); + CImgDisplay disp(visu,"[#16] - Fourier Filtering (Click to set filter)"); + CImg mask(img.width(),img.height(),1,1,1); + const unsigned char one[] = { 1 }, zero[] = { 0 }, white[] = { 255 }; + int rmin = 0, rmax = 256; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + disp.wait(); + const int + xm = disp.mouse_x()*2*img.width()/disp.width() - img.width(), + ym = disp.mouse_y()*img.height()/disp.height(), + x = xm - img.width()/2, + y = ym - img.height()/2; + if (disp.button() && xm>=0 && ym>=0) { + const int r = (int)std::max(0.0f,(float)std::sqrt((float)x*x + y*y) - 3); + if (disp.button()&1) rmax = r; + if (disp.button()&2) rmin = r; + if (rmin>=rmax) rmin = std::max(rmax - 1,0); + mask.fill(0).draw_circle(mag.width()/2,mag.height()/2,rmax,one). + draw_circle(mag.width()/2,mag.height()/2,rmin,zero); + CImgList nF(F); + cimglist_for(F,l) nF[l].mul(mask).shift(-img.width()/2,-img.height()/2,0,0,2); + visu[0] = nF.FFT(true)[0].normalize(0,255); + } + if (disp.is_resized()) disp.resize(disp.window_width(),disp.window_width()/2).display(visu); + visu[1] = mag.get_mul(mask).draw_text(5,5,"Freq Min/Max = %d / %d",white,zero,0.6f,13,(int)rmin,(int)rmax); + visu.display(disp); + } + return 0; +} + +// Item : Image Zoomer +//--------------------- +void* item_image_zoomer() { + const CImg img = CImg(data_logo,555,103,1,3,false); + CImgDisplay disp(img,"[#17] - Original Image"), dispz(500,500,"[#17] - Zoomed Image",0); + disp.move((CImgDisplay::screen_width() - dispz.width())/2, + (CImgDisplay::screen_height() - dispz.height() - disp.height())/2); + dispz.move(disp.window_x(),disp.window_y() + disp.window_height() + 40); + int factor = 20, x = 0, y = 0; + bool grid = false, redraw = false; + while (!disp.is_closed() && !dispz.is_closed() && + !disp.is_keyQ() && !dispz.is_keyQ() && !disp.is_keyESC() && !dispz.is_keyESC()) { + if (disp.mouse_x()>=0) { x = disp.mouse_x(); y = disp.mouse_y(); redraw = true; } + if (redraw) { + const int + x0 = x - factor, y0 = y - factor, + x1 = x + factor, y1 = y + factor; + const unsigned char red[] = { 255, 0, 0 }, black[] = { 0, 0, 0 }, white[] = { 255, 255, 255 }; + (+img).draw_rectangle(x0,y0,x1,y1,red,1.0f,~0U).display(disp); + CImg visu = img.get_crop(x0,y0,x1,y1).draw_point(x - x0,y - y0,red,0.2f).resize(dispz); + if (grid) { + const int bfac = 2*factor + 1; + for (int i = 0; i100) factor = 100; + disp.set_button(); redraw = true; + } + if (disp.button()&4 || dispz.button()) { grid = !grid; disp.set_button(); dispz.set_button(); redraw = true; } + if (disp.is_resized()) disp.resize(disp); + if (dispz.is_resized()) { dispz.resize(); redraw = true; } + CImgDisplay::wait(disp,dispz); + } + return 0; +} + +// Item : Blobs Editor +//-------------------- +void* item_blobs_editor() { + CImg img(300,300,1,3); + CImgList colors; + CImgList blobs; + CImgDisplay disp(img,"[#18] - Blobs Editor",0); + const unsigned int white[] = { 255, 255, 255 }; + bool moving = false; + + for (float alpha = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); alpha+=0.1f) { + const int xm = disp.mouse_x()*img.width()/disp.width(), ym = disp.mouse_y()*img.height()/disp.height(); + int selected = -1; + img.fill(0); + + if (blobs) { + float dist = 0, dist_min = (float)img.width()*img.width() + img.height()*img.height(); + cimglist_for(blobs,l) { + const CImg& blob = blobs[l]; + const float + xb = blob[0], yb = blob[1], rb = blob[2], + sigma = (float)(rb*(1 + 0.05f*std::cos(blob[3]*alpha))), + sigma2 = 2*sigma*sigma, precision = 4.5f*sigma2; + const int + tx0 = (int)(xb - 3*sigma), + ty0 = (int)(yb - 3*sigma), + tx1 = (int)(xb + 3*sigma), + ty1 = (int)(yb + 3*sigma); + const unsigned int + col1 = colors[l](0), col2 = colors[l](1), col3 = colors[l](2), wh = img.width()*img.height(), + x0 = tx0<0?0:tx0, y0 = ty0<0?0:ty0, + x1 = tx1>=img.width()?img.width() - 1:tx1, y1 = ty1>=img.height()?img.height() - 1:ty1; + float dy = y0 - yb; + unsigned int *ptr = img.data(x0,y0); + for (unsigned int y = y0; y<=y1; ++y) { + float dx = x0 - xb; + for (unsigned int x = x0; x<=x1; ++x) { + float _dist = dx*dx + dy*dy; + if (_distimg.data(); ++off) { + unsigned int val1 = *(--ptr1), val2 = *(--ptr2), val3 = *(--ptr3); + const unsigned int pot = val1*val1 + val2*val2 + val3*val3; + if (pot<128*128) { *ptr1 = *ptr3 = 255*off/wh; *ptr2 = 180*off/wh; } + else { + if (pot<140*140) { *ptr1 >>= 1; *ptr2 >>= 1; *ptr3 >>= 1; } + else { + *ptr1 = val1<255?val1:255; + *ptr2 = val2<255?val2:255; + *ptr3 = val3<255?val3:255; + } + } + } + cimglist_for(blobs,ll) { + const CImg& blob = blobs[ll]; + const int + rb = (int)(blob[2]*(1 + 0.05f*std::cos(blob[3]*alpha))), + xb = (int)(blob[0] + rb/2.5f), + yb = (int)(blob[1] - rb/2.5f); + img.draw_circle(xb,yb,rb>>1,white,0.2f).draw_circle(xb,yb,rb/3,white,0.2f). + draw_circle(xb,yb,rb/5,white,0.2f); + } + } else { + CImg text; + text.draw_text(0,0, + "CImg Blobs Editor\n" + "-----------------------\n\n" + "* Left mouse button :\n Create and Move Blob.\n\n" + "* Right mouse button :\n Remove nearest Blob.\n\n" + "* Colors and size of Appearing Blobs\n" + " are randomly chosen.\n\n\n" + " >> Press mouse button to start ! <<", + white).resize(-100,-100,1,3); + img.fill(100).draw_image((img.width() - text.width())/2, + (img.height() - text.height())/2, + text,text,1,255U); + } + + if (disp.mouse_x()>=0 && disp.mouse_y()>=0) { + if (disp.button()&1) { + float dist_selected = 0; + if (selected>=0) { + const float a = xm - blobs[selected](0), b = ym - blobs[selected](1), c = blobs[selected](2); + dist_selected = a*a + b*b - c*c; + } + if (moving || dist_selected<0) { blobs[selected](0) = (float)xm; blobs[selected](1) = (float)ym; } + else { + blobs.insert(CImg<>::vector((float)xm,(float)ym,(float)(10 + 30*cimg::rand()),(float)(3*cimg::rand()))); + colors.insert(CImg<>(3).fill(0).noise(255,1).normalize(0,255)); + } + moving = true; + } else moving = false; + if (selected>=0 && disp.button()&2) { blobs.remove(selected); colors.remove(selected); disp.set_button(); } + } + + img.display(disp.wait(25)); + if (disp.is_resized()) { + img.resize(disp.resize(false)); + cimglist_for(blobs,l) if (blobs[l](0)>=img.width() || blobs[l](1)>=img.height()) { + blobs.remove(l); colors.remove(l--); + } + } + } + return 0; +} + +// Item : Double Torus +//--------------------- +void* item_double_torus() { + CImg visu(300,256,1,3,0); + CImgDisplay disp(visu,"[#19] - Double 3D Torus"); + CImgList primitives; + CImg + points = CImg<>::torus3d(primitives,60,20), + points2 = CImg<>::rotation_matrix(1,0,0,90)*points; + CImgList colors(2*primitives.size(),CImg::vector(255,255,0)); + cimglist_for(primitives,ll) colors[ll++].fill(100,255,100); + cimglist_for(primitives,l) + if (l%2) colors[primitives.size() + l].fill(255,200,255); else colors[primitives.size() + l].fill(200,150,255); + const CImg opacities = CImg<>(primitives.size(),1,1,1,1.0f).append(CImg<>(primitives.size(),1,1,1,0.4f)); + points.shift_object3d(-30,0,0).append_object3d(primitives,points2.shift_object3d(30,0,0),primitives); + float alpha = 0, beta = 0, gamma = 0, theta = 0; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + visu.get_shared_channels(1,2).fill(0); + visu.get_shared_row(visu.height() - 1,0,0).noise(200,1); + CImg_3x3(I,unsigned char); Ipp = Icp = Inp = Ipc = Inc = 0; + cimg_for3x3(visu,x,y,0,0,I,unsigned char) visu(x,y,0) = (Icc + Ipn + Icn + Inn)>>2; + for (unsigned int y = 0; y<100; ++y) std::memset(visu.data(0,y,0,2),255 - y*255/100,visu.width()); + const CImg + rpoints = CImg<>::rotation_matrix(1,1,0,(alpha+=1))*CImg<>::rotation_matrix(1,0,1,(beta-=2))* + CImg<>::rotation_matrix(0,1,1,(gamma+=3))*points; + if (disp.is_resized()) disp.resize(false); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(300,256,false).toggle_fullscreen(false); + visu.draw_object3d(visu.width()/2.0f,visu.height()/2.0f,0, + rpoints,primitives,colors,opacities,4, + false,500.0f,(float)(std::cos(theta+=0.01f) + 1)*visu.width()/2.0f, + (float)visu.height(),-100.0f,0.1f,1.5f). + display(disp.wait(25)); + } + return 0; +} + +// Item : 3D Metaballs +//--------------------- +struct metaballs3d { + float cx1, cy1, cz1, cx2, cy2, cz2, cx3, cy3, cz3; + inline float operator()(const float x, const float y, const float z) const { + const float + x1 = x - cx1, y1 = y - cy1, z1 = z - cz1, + x2 = x - cx2, y2 = y - cy2, z2 = z - cz2, + x3 = x - cx3, y3 = y - cy3, z3 = z - cz3, + r1 = 0.3f*(x1*x1 + y1*y1 + z1*z1), + r2 = 0.4f*(x2*x2 + y2*y2 + z2*z2), + r3 = 0.5f*(x3*x3 + y3*y3 + z3*z3); + float potential = 0; + if (r1<1.3f) potential+= 1.0f - r1*(r1*(4*r1 + 17) - 22)/9; + if (r2<1.3f) potential+= 1.0f - r2*(r2*(4*r2 + 17) - 22)/9; + if (r3<1.3f) potential+= 1.0f - r3*(r3*(4*r3 + 17) - 22)/9; + return potential; + } +}; + +void* item_3d_metaballs() { + CImg img = CImg(100,100,1,3,0).noise(100,2).draw_plasma(1,0,10). + resize(512,320,1,3).blur(4); + img.get_shared_channel(2)/=4; img.get_shared_channel(1)/=2; + metaballs3d met; + CImgList primitives; + CImgList colors; + const unsigned char white[] = { 255,255,255 }; + float alpha = 0, beta = 0, delta = 0, theta = 0, gamma = 0; + CImgDisplay disp(img,"[#20] - 3D Metaballs"); + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + met.cx2 = 1.5f*(float)std::cos(theta); met.cy2 = 2.5f*(float)std::sin(3*(theta+=0.017f)); met.cz2 = 0; + met.cx1 = 0; met.cy1 = 2.0f*(float)std::sin(4*gamma); met.cz1 = 1.2f*(float)std::cos(2*(gamma-=0.0083f)); + met.cx3 = 2.5f*(float)std::cos(2.5*delta); met.cy3 = 0; met.cz3 = 1.5f*(float)std::sin(2*(delta+=0.0125f)); + const CImg + points = CImg<>::isosurface3d(primitives,met,0.8f,-4.5f,-4.5f,-3.5f,4.5f,4.5f,3.5f,24,24,24), + rot = 50.0*CImg<>::rotation_matrix(0,0,1,(alpha+=2))*CImg<>::rotation_matrix(1,1,0,(beta+=5.6f)), + rpoints = rot*points; + primitives.reverse_object3d(); + if (colors.size() img(640,480,1,3,0); + CImgDisplay disp(img,"[#21] - Fireworks (Click to add/explode rockets)"); + CImgList colors; + const unsigned char white[] = { 255,255,255 }, red[] = { 128,0,0 }; + CImgList particles; + float time = 0, speed = 100.0f; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + + if (disp.button()&1 || !particles.size() || (--time)<0) { + particles.insert(CImg<>::vector((float)cimg::rand()*img.width(),(float)img.height(), + (float)cimg::rand(-1,1)*4,-6 - (float)cimg::rand()*3, + 30 + 60*(float)cimg::rand(),3)); + colors.insert(CImg::vector(255,255,255)); + time = (float)(cimg::rand()*speed); + } + img*=0.92f; + + cimglist_for(particles,l) { + bool remove_particle = false; + float &x = particles(l,0), &y = particles(l,1), &vx = particles(l,2), &vy = particles(l,3), + &t = particles(l,4), &r = particles(l,5); + const float r2 = (t>0 || t<-42)?r/3:r*(1 - 2*(-(t + 2)/40.0f)/3); + img.draw_ellipse((int)x,(int)y,r,r2,(float)(std::atan2(vy,vx)*180/cimg::PI),colors[l].data(),0.6f); + x+=vx; y+=vy; vy+=0.09f; t--; + if (y>img.height() + 10 || x<0 || x>=img.width() + 10) remove_particle = true; + + if (t<0 && t>=-1) { + if ((speed*=0.9f)<10) speed=10.0f; + const unsigned char + cr = (unsigned char)std::min(50 + 3*(unsigned char)(100*cimg::rand()), 255), + cg = (unsigned char)std::min(50 + 3*(unsigned char)(100*cimg::rand()), 255), + cb = (unsigned char)std::min(50 + 3*(unsigned char)(100*cimg::rand()), 255); + const float di = 10 + (float)cimg::rand()*60, nr = (float)cimg::rand()*30; + for (float i=0; i<360; i+=di) { + const float rad = i*(float)cimg::PI/180, c = (float)std::cos(rad), s = (float)std::sin(rad); + particles.insert(CImg<>::vector(x,y,2*c + vx/1.5f,2*s + vy/1.5f,-2.0f,nr)); + colors.insert(CImg::vector(cr,cg,cb)); + } + remove_particle = true; + } else if (t<-1) { r*=0.95f; if (r<0.5f) remove_particle=true; } + if (remove_particle) { particles.remove(l); colors.remove(l); l--; } + } + if (disp.button()&2) cimglist_for(particles,l) if (particles(l,4)>0) particles(l,4)=0.5f; + img.draw_text(5,5," %u frames/s ",white,red,0.5f,13,(unsigned int)disp.frames_per_second()); + disp.display(img).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(640,480,false).toggle_fullscreen(false); + if (disp.is_resized()) disp.resize(disp,false); + } + return 0; +} + +// Item : Rubber Logo +//-------------------- +void* item_rubber_logo() { + const unsigned char white[] = { 255,255,255 }; + CImg background = CImg(300,300).noise(100,2); + background(0,0) = background(299,0) = background(299,299) = background(0,299) = 0; + background.draw_plasma().blur(1.0f,14.0f,0.0f,0).resize(-100,-100,1,3); + CImgDisplay disp(CImg(background). + draw_text(10,10,"Please wait, generating rubber object...",white),"[#22] - 3D Rubber Logo"); + + CImg vol = CImg().draw_text(30,30,"CImg",white,0,1,57).resize(-100,-100,15,1); + for (unsigned int k = 0; k<5; ++k) { vol.get_shared_slice(k).fill(0); vol.get_shared_slice(vol.depth()-1-k).fill(0); } + vol.resize(vol.width() + 30,vol.height() + 30,-100,1,0).blur(2).resize(-50,-50); + CImgList faces; + CImg points = vol.get_isosurface3d(faces,45); + CImgList colors(faces.size(),CImg::vector(100,100,255)); + cimglist_for(colors,l) { + const float x = (points(faces(l,0),0) + points(faces(l,1),0) + points(faces(l,2),0))/3; + if (x<30.3) colors[l] = CImg::vector(255,100,100); + else { if (x<34.6) colors[l] = CImg::vector(200,155,100); + else { if (x<55.5) colors[l] = CImg::vector(100,255,155); + }}} + faces.reverse_object3d(); + points.shift_object3d()*=5.5f; + + CImgList frames(100,background); + bool ok_visu = false; + unsigned int nb_frame = 0; + float alpha = 0, beta = 0, gamma = 0; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + CImg& frame = frames[nb_frame++]; + if (nb_frame>=frames.size()) { ok_visu = true; nb_frame = 0; } + const CImg + rot = CImg<>::rotation_matrix(0,1,0.2f,alpha+=1.1f)* + CImg<>::rotation_matrix(1,0.4f,1,beta+=1.5f)* + (1 + 0.1f*std::cos((double)(gamma+=0.1f))); + (frame=background).draw_object3d(frame.width()/2.0f,frame.height()/2.0f,frame.depth()/2.0f, + rot*points,faces,colors,5,false,500,0,0,-5000,0.1f,1.0f); + if (ok_visu) { + CImg visu(frame); + cimglist_for(frames,l) { + const unsigned int + y0 = l*visu.height()/frames.size(), + y1 = (l + 1)*visu.height()/frames.size() - 1; + cimg_forC(visu,k) + visu.get_shared_rows(y0,y1,0,k) = frames[(nb_frame + l)%frames.size()].get_shared_rows(y0,y1,0,k); + } + visu.get_resize(disp,1).draw_text(5,5," %u frames/s ",white,0,0.5f,13,(unsigned int)disp.frames_per_second()). + display(disp.wait(20)); + } + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(300,300,false).toggle_fullscreen(false); + if (disp.is_resized()) disp.resize(); + } + return 0; +} + +// Item : Image Waves +//-------------------- +void* item_image_waves() { + const CImg img = CImg(data_milla,211,242,1,3,false).get_resize(128,128,1,3); + CImgList faces0; + CImgList colors0; + const CImgList + points0 = (img.get_elevation3d(faces0,colors0,img.get_channel(0).fill(0)).shift_object3d()*=3)<'x', + opacities0(faces0.size(),1,1,1,1,1.0f); + CImg + back = CImg(400,300,1,3).sequence(0,130), + ball = CImg(12,12,1,3,0).draw_circle(6,6,5,CImg::vector(0,128,64).data()); + const CImg mball = CImg<>(12,12,1,1,0).draw_circle(6,6,5,CImg<>::vector(1.0f).data()); + ball.draw_circle(7,5,4,CImg::vector(16,96,52).data()). + draw_circle(8,4,2,CImg::vector(0,128,64).data()). + draw_circle(8,4,1,CImg::vector(64,196,128).data()); + CImg uc(img.width()/2,img.height()/2,1,1,0), up(uc), upp(uc); + CImgList particles; + CImgDisplay disp(back,"[#23] - Image Waves (Try mouse buttons!)"); + for (float alpha = 0.0f, count = 10.0f; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ) { + if ((disp.button()&1 && disp.mouse_x()>=0) || --count<0) { + CImg<>::vector((float)(cimg::rand()*(img.width() - 1)),(float)(cimg::rand()*(img.height() - 1)),-200,0). + move_to(particles); + count = (float)(cimg::rand()*15); + } + alpha = (disp.mouse_x()>=0 && disp.button()&2)?(float)(disp.mouse_x()*2*180/disp.width()):(alpha + 2); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(400,300,false).toggle_fullscreen(false); + cimglist_for(particles,l) { + float& z = up((int)particles(l,0)>>1,(int)particles(l,1)>>1); + if ((particles(l,2)+=(particles(l,3)+=0.5f))>z-10) { z = 250.0f; particles.remove(l--); } + } + CImg_3x3(U,float); Upp = Unp = Ucc = Upn = Unn = 0; + cimg_for3x3(up,x,y,0,0,U,float) uc(x,y) = (Unc + Upc + Ucn + Ucp)/2 - upp(x,y); + (uc-=(float)(uc.blur(0.7f).mean())).swap(upp).swap(up); + CImgList points(points0); + CImgList faces(faces0); + CImgList colors(colors0); + CImgList opacities(opacities0); + cimglist_for(points,p) + points(p,2) = std::min(30 + uc.linear_atXY((p%img.width())/2.0f,(p/img.width())/2.0f),70.0f); + cimglist_for(particles,l) { + points.insert(CImg<>::vector(3*(particles(l,0) - img.width()/2.0f),3*(particles(l,1) - img.height()/2.0f),30.0f + + particles(l,2))); + faces.insert(CImg::vector(points.size() - 1)); + colors.insert(ball,~0U,true); + opacities.insert(mball,~0U,true); + } + const CImg + rot = CImg<>::rotation_matrix(1.0f,0,0,-60)*CImg<>::rotation_matrix(0,0,1.0f,-alpha), + rpoints = rot*(points>'x'); + (+back).draw_object3d(back.width()/2.0f,back.height()/2.0f,0,rpoints,faces,colors,opacities,4,false, + 500.0f,0,0,0,1,1).display(disp.resize(false).wait(30)); + } + return 0; +} + +// Item : Breakout +//----------------- +void* item_breakout() { + + // Init graphics + CImg + board(8,10,1,1,0), + background = CImg(board.width()*32,board.height()*16 + 200,1,3,0).noise(20,1). + draw_plasma().blur(1,8,0,true), + visu0(background/2.0), visu(visu0), brick(16,16,1,1,200), racket(64,8,1,3,0), ball(8,8,1,3,0); + const unsigned char white[] = { 255,255,255 }, green1[] = { 60,150,30 }, green2[] = { 130,255,130 }; + cimg_for_borderXY(brick,x,y,1) brick(x,y) = x>y?255:128; + cimg_for_insideXY(brick,x,y,1) brick(x,y) = (unsigned char)std::min(255,64 + 8*(x + y)); + brick.resize(31,15,1,1,1).resize(32,16,1,1,0); + ball.draw_circle(4,4,2,white); ball-=ball.get_erode(3)/1.5; + racket.draw_circle(4,3,4,green1).draw_circle(3,2,2,green2); + cimg_forY(racket,y) + racket.draw_rectangle(4,y,racket.width() - 7,y, + CImg::vector((unsigned char)(y*4), + (unsigned char)(255 - y*32), + (unsigned char)(255 - y*25)).data()); + racket.draw_image(racket.width()/2,racket.get_crop(0,0,racket.width()/2 - 1,racket.height() - 1).mirror('x')); + const int + w = visu.width(), h = visu.height(), w2 = w/2, h2 = h/2, + bw = ball.width(), bh = ball.height(), bw2 = bw/2, bh2 = bh/2, + rw = racket.width(), rh = racket.height(), rw2 = rw/2; + float xr = (float)(w - rw2), oxr = (float)xr, xb = 0, yb = 0, oxb = 0, oyb = 0, vxb = 0, vyb = 0; + const CImg + racket_mask = racket.get_threshold(1).channel(1), + ball_mask = ball.get_threshold(1).channel(1); + + // Begin game loop + CImgDisplay disp(visu,"[#24] - Breakout"); + disp.move((CImgDisplay::screen_width() - w)/2,(CImgDisplay::screen_height() - h)/2); + for (unsigned int N = 0, N0 = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ) { + if (N0) { + int X = (int)xr; + if (disp.mouse_x()>=0) X = (int)(w2 + ((disp.mouse_x()<0?w2:disp.mouse_x()) - w2)*2); + else disp.set_mouse(xr>w2?w - 81:80,h2); + if (X=w - rw2) { X = w - rw2 - 1; disp.set_mouse(w - 81,h2); } + oxr = xr; xr = (float)X; oxb = xb; oyb = yb; xb+=vxb; yb+=vyb; + if ((xb>=w - bw2) || (xb=h - rh - 8 - bh2 && yb=xb) { + xb = oxb; yb = h - rh - 8.0f - bh2; vyb=-vyb; vxb+=(xr - oxr)/4; + if (cimg::abs(vxb)>8) vxb*=8/cimg::abs(vxb); + } + if (yb=((cX + 1)<<5)) vxb=-vxb; + else if (oyb<(cY<<4) || oyb>=((cY + 1)<<4)) vyb=-vyb; + } + } + disp.set_title("[#24] - Breakout : %u/%u",N,N0); + } + if (yb>h || N==N0) { + disp.show_mouse(); + while (!disp.is_closed() && !disp.key() && !disp.button()) { + ((visu=visu0)/=2).draw_text(50,visu.height()/2 - 10,N0?" Game Over !":"Get Ready ?",white,0,1,24). + display(disp); + disp.wait(); + if (disp.is_resized()) disp.resize(disp); + } + board.fill(0); visu0 = background; + cimg_forXY(board,x,y) if (0.2f + cimg::rand(-1,1)>=0) { + CImg cbrick = CImg::vector(100 + cimg::rand()*155,100 + cimg::rand()*155,100 + cimg::rand()*155). + unroll('v').resize(brick.width(),brick.height()); + cimg_forC(cbrick,k) (cbrick.get_shared_channel(k).mul(brick))/=255; + visu0.draw_image(x*32,y*16,cbrick); + board(x,y) = 1; + } + N0 = (int)board.sum(); N = 0; + oxb = xb = (float)w2; oyb = yb = board.height()*16.0f + bh; vxb = 2.0f; vyb = 3.0f; + disp.hide_mouse(); + } else disp.display((visu=visu0).draw_image((int)(xr - rw2),h - rh - 8,racket,racket_mask). + draw_image((int)(xb - bw2),(int)(yb - bh2),ball,ball_mask)); + if (disp.is_resized()) disp.resize(disp); + disp.wait(20); + } + return 0; +} + +// Item : 3D Reflection +//---------------------- +void* item_3d_reflection() { + + // Init images and display + CImgDisplay disp(512,512,"[#25] - 3D Reflection",0); + CImg back = CImg(200,400,1,3,0).rand(0,255).draw_plasma(); + ((back,back.get_mirror('x'),back)>'x').blur(15,1,0,true).columns(100,499).normalize(0,120).move_to(back); + CImg + light0 = back.get_resize(-50,-50,1,1).normalize(1,255), + visu(back), + reflect(back.width(),back.height(),1,1), + light(light0); + back.get_shared_channel(0)/=3; + back.get_shared_channel(2)/=2; + + // Create 3D objects. + CImgList back_faces, main_faces; + CImgList main_colors, back_colors, light_colors, light_colors2; + CImgList back_pts0, main_pts = CImg<>::torus3d(main_faces,30,12,24,12)<'x'; + cimglist_for(main_faces,l) + if (l%2) CImg::vector(255,120,16).move_to(main_colors); + else CImg::vector(255,100,16).move_to(main_colors); + + const unsigned int res1 = 32, res2 = 32; + for (unsigned int v = 1; v::vector(x,y,z)); + } + const unsigned int N = back_pts0.size(); + back_pts0.insert(CImg<>::vector(0,0,-140)).insert(CImg<>::vector(0,0,140)); + CImg back_pts = back_pts0>'x'; + for (unsigned int vv = 0; vv::vector(res1*vv + nu,res1*nv + uu,res1*vv + uu)); + back_faces.insert(CImg::vector(res1*vv + nu,res1*nv + nu,res1*nv + uu)); + back_colors.insert(CImg::vector(128,255,255)); + back_colors.insert(CImg::vector(64,240,196)); + } + for (unsigned int uu = 0; uu::vector(nu,uu,N)); + back_faces.insert(CImg::vector(res1*(res2 - 2) + nu, N + 1,res1*(res2 - 2) + uu)); + if (uu%2) back_colors.insert(2,CImg::vector(128,255,255)); + else back_colors.insert(2,CImg::vector(64,240,196)); + } + light_colors.assign(main_faces.size(),CImg::vector(255)); + light_colors2.assign(back_faces.size(),CImg::vector(255)).insert(light,~0U,true); + + // Start 3D animation. + for (float main_x = -1.5f*visu.width(), + back_alpha = 0, back_beta = 0, back_theta = -3.0f, + main_alpha = 0, main_beta = 0, main_theta = 0; + !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); + main_alpha+=2.1f, main_beta+=3.3f, main_theta+=0.02f, + back_alpha+=0.31f, back_beta+=0.43f, back_theta+=0.01f) { + const int + main_X = (int)(visu.width()/2 + main_x + 100*std::cos(2.1*main_theta)), + main_Y = (int)(visu.height()/2 + 120*std::sin(1.8*main_theta)); + CImg + rmain_pts = (CImg<>::rotation_matrix(-1,1,0,main_alpha)*CImg<>::rotation_matrix(1,0,1,main_beta))*(main_pts>'x'), + rback_pts = (CImg<>::rotation_matrix(1,1,0,back_alpha)*CImg<>::rotation_matrix(0.5,0,1,back_beta))*back_pts; + + (light=light0).draw_object3d(main_X/2.0f,main_Y/2.0f,0,rmain_pts,main_faces,light_colors,3,false, + 500,0,0,-5000,0.2f,0.1f); + reflect.fill(0).draw_object3d(2*visu.width()/3.0f,visu.height()/2.0f,0,rback_pts,back_faces,light_colors2,5,false, + 500,0,0,-5000,0.2f,0.1f); + rmain_pts*=2; + (visu=back).draw_object3d(2*visu.width()/3.0f,visu.height()/2.0f,0,rback_pts,back_faces,back_colors,3,false, + 500,0,0,-5000,0.2f,0.1f); + + unsigned char + *ptrs = reflect.data(), + *ptrr = visu.data(0,0,0,0), + *ptrg = visu.data(0,0,0,1), + *ptrb = visu.data(0,0,0,2); + cimg_foroff(reflect,xy) { + const unsigned char v = *(ptrs++); + if (v) { *ptrr = (*ptrr+v)>>1; *ptrg = (*ptrr+v)>>1; *ptrb = (*ptrb+v)>>1; } + ++ptrr; ++ptrg; ++ptrb; + } + + visu.draw_object3d((float)main_X,(float)main_Y,0,rmain_pts,main_faces,main_colors,4, + false,500,0,0,-5000,0.1f,1.4f); + + if (disp.is_resized()) { + const int s = std::min(disp.window_width(),disp.window_height()); + disp.resize(s,s,false); + } + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.resize(512,512,false).toggle_fullscreen(false); + disp.display(visu).wait(20); + back.shift(4,0,0,0,2); + light0.shift(-2,0,0,0,2); + if (main_x<0) main_x +=2; + const float H = back_theta<0?0.0f:(float)(0.3f - 0.3f*std::cos(back_theta)); + for (unsigned int p = 0, v = 1; v img0 = CImg(data_logo,555,103,1,3,true).get_resize(-144,-144,1,3,6); + CImgDisplay disp(img0,"[#26] - Fish-Eye Magnification"); + int rm = 80, xc = 0, yc = 0, rc = 0; + CImg img, res; + for (float alpha = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); alpha+=0.02f) { + if (!img) img = img0.get_resize(disp,3); + if (disp.mouse_x()>=0) { xc = disp.mouse_x(); yc = disp.mouse_y(); rc = rm; } + else { + xc = (int)(img.width()*(1 + 0.9f*std::cos(1.2f*alpha))/2); + yc = (int)(img.height()*(1 + 0.8f*std::sin(3.4f*alpha))/2); + rc = (int)(90 + 60*std::sin(alpha)); + } + const int x0 = xc - rc, y0 = yc - rc, x1 = xc + rc, y1 = yc + rc; + res = img; + cimg_for_inXY(res,x0,y0,x1,y1,x,y) { + const float X = (float)x - xc, Y = (float)y - yc, r2 = X*X + Y*Y, rrc = (float)std::sqrt(r2)/rc; + if (rrc<1) { + const int xi = (int)(xc + rrc*X), yi = (int)(yc + rrc*Y); + res(x,y,0) = img(xi,yi,0); res(x,y,1) = img(xi,yi,1); res(x,y,2) = img(xi,yi,2); + } + } + const int xf = xc + 3*rc/8, yf = yc - 3*rc/8; + res.draw_circle(xc,yc,rc,purple,0.2f).draw_circle(xf,yf,rc/3,white,0.2f).draw_circle(xf,yf,rc/5,white,0.2f). + draw_circle(xf,yf,rc/10,white,0.2f).draw_circle(xc,yc,rc,black,0.7f,~0U); + disp.display(res).wait(20); + rm+=(disp.button()&1?8:(disp.button()&2?-8:0)); + rm = rm<30?30:(rm>200?200:rm); + if (disp.is_resized()) { disp.resize(false); img.assign(); } + } + return 0; +} + +// Item : Word Puzzle +//-------------------- +void* item_word_puzzle() { + + // Create B&W and color letters + CImg model(60,60,1,3,0), color(3), background, canvas, elaps; + CImgList letters('Z' - 'A' + 1), cletters(letters); + const unsigned char white[] = { 255, 255, 255 }, gray[] = { 128, 128, 128 }, black[] = { 0, 0, 0 }; + char tmptxt[] = { 'A',0 }; + model.fill(255).draw_rectangle(5,5,54,54,gray).blur(3,0).threshold(140).normalize(0,255); + cimglist_for(letters,l) + (letters[l].draw_text(5,2,&(tmptxt[0]=(char)('A' + l)),white,0,1,57).resize(60,60,1,1,0,0,0.5,0.5). + resize(-100,-100,1,3)|=model).blur(0.5); + { cimglist_for(cletters,l) { + CImg tmp = letters[l]; + color.rand(100,255); + cimg_forC(tmp,k) (tmp.get_shared_channel(k)*=color[k])/=255; + cletters[l] = tmp; + }} + + CImgDisplay disp(500,400,"[#27] - Word Puzzle",0); + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + + // Create background, word data and display. + background.assign(40,40,1,2,0).noise(30,2).distance(255).normalize(0,255).resize(500,400,1,3,3); + CImg current(14,6,1,1,0), solution(14,4,1,1,0); + current.get_shared_row(0).fill('T','H','E','C','I','M','G','L','I','B','R','A','R','Y'); + current.get_shared_row(1).rand(-30,background.width() - 30); + current.get_shared_row(2).rand(-30,background.height() - 30); + solution.get_shared_row(0) = current.get_shared_row(0); + solution.get_shared_row(1).fill(20,80,140,100,180,260,340,40,100,160,220,280,340,400); + solution.get_shared_row(2).fill(20,20,20,120,150,180,210,310,310,310,310,310,310,310); + cimg_forX(solution,l) background.draw_image(solution(l,1),solution(l,2),letters(solution(l) - 'A'),0.3f); + const int last = current.width() - 1; + + // Start user interaction + int timer = 0, completed = 0; + for (bool selected = false, refresh_canvas = true, stopflag = false; + !stopflag && !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); disp.resize(disp).wait(20)) { + if (refresh_canvas) { + canvas = background; + cimg_forX(current,l) if (!current(l,5)) { + int &x = current(l,1), &y = current(l,2); + if (x<-30) x = -30; else if (x>canvas.width() - 30) x = canvas.width() - 30; + if (y<-30) y = -30; else if (y>canvas.height() - 30) y = canvas.height() - 30; + canvas.draw_rectangle(x + 8,y + 8,x + 67,y + 67,black,0.3f).draw_image(x,y,cletters(current(l) - 'A')); + } + refresh_canvas = false; + } + (+canvas).draw_text(280,3,"Elapsed Time : %d",white,0,0.7f,24,timer++).display(disp); + + if (disp.button()&1) { + const int mx = disp.mouse_x(), my = disp.mouse_y(); + if (mx>=0 && my>=0) { + if (!selected) { + int ind = -1; + cimg_forX(current,l) if (!current(l,5)) { + const int x = current(l,1), y = current(l,2), dx = mx - x, dy = my - y; + if (dx>=0 && dx<60 && dy>=0 && dy<60) { selected = true; ind = l; current(l,3) = dx; current(l,4) = dy; } + } + if (ind>=0 && ind vec = current.get_column(ind); + current.draw_image(ind,current.get_crop(ind + 1,last)).draw_image(last,vec); + } + } else { + current(last,1) = mx - current(last,3); + current(last,2) = my - current(last,4); + refresh_canvas = true; + } + } + } else { + bool win = true; + cimg_forX(solution,j) if (!solution(j,3)) { + win = false; + const int x = solution(j,1), y = solution(j,2); + cimg_forX(current,i) if (!current(i,5) && solution(j)==current(i)) { + const int xc = current(i,1), yc = current(i,2), dx = cimg::abs(x - xc), dy = cimg::abs(y - yc); + if (dx<=12 && dy<=12) { + cimg_forC(background,k) cimg_forY(letters[0],ly) + background.get_shared_row(solution(j,2) + ly,0,k). + draw_image(solution(j,1),0, + (CImg<>(cletters(solution(j) - 'A').get_shared_row(ly,0,k))*=2.0*std::cos((ly - 30.0f)/18)). + cut(0,255),0.8f); + current(i,5) = solution(j,3) = 1; refresh_canvas = true; + } + } + } + selected = false; + if (win) { stopflag = true; completed = 1; } + } + } + + // Display final score + const char + *const mention0 = "Need more training !", *const mention1 = "Still amateur, hu ?", + *const mention2 = "Not so bad !", *const mention3 = " Good !", *const mention4 = "Very good !", + *const mention5 = " Expert !", + *mention = completed?(timer<700?mention5:timer<800?mention4:timer<900?mention3: + timer<1000?mention2:timer<1200?mention1:mention0):mention0; + canvas.assign().draw_text(0,0,"Final time : %d\n\n%s",white,0,1,32,timer,mention).resize(-100,-100,1,3); + ((background/=2)&CImg(2,2).fill((unsigned char)0,255,255,0).resize(background,0,2)). + draw_image((background.width() - canvas.width())/2,(background.height() - canvas.height())/2, + canvas,canvas.get_dilate(3).dilate(3).dilate(3),1,255).display(disp.flush()); + while (!disp.is_closed() && !disp.key() && !disp.button()) disp.resize(disp).wait(); + } + return 0; +} + +// Run a selected effect +//----------------------- +void start_item(const unsigned int demo_number) { + switch (demo_number) { + case 1: item_blurring_gradient(); break; + case 2: item_rotozoom(); break; + case 3: item_anisotropic_smoothing(); break; + case 4: item_fractal_animation(); break; + case 5: item_gamma_correction(); break; + case 6: item_filled_triangles(); break; + case 7: item_mandelbrot_explorer(); break; + case 8: item_mini_paint(); break; + case 9: item_soccer_bobs(); break; + case 10: item_bump(); break; + case 11: item_bouncing_bubble(); break; + case 12: item_virtual_landscape(); break; + case 13: item_plasma(); break; + case 14: item_oriented_convolutions(); break; + case 15: item_shade_bobs(); break; + case 16: item_fourier_filtering(); break; + case 17: item_image_zoomer(); break; + case 18: item_blobs_editor(); break; + case 19: item_double_torus(); break; + case 20: item_3d_metaballs(); break; + case 21: item_fireworks(); break; + case 22: item_rubber_logo(); break; + case 23: item_image_waves(); break; + case 24: item_breakout(); break; + case 25: item_3d_reflection(); break; + case 26: item_fisheye_magnification(); break; + case 27: item_word_puzzle(); break; + default: break; + } +} + +/*--------------------------- + + Main procedure + + --------------------------*/ +int main(int argc, char **argv) { + + // Display info about the CImg Library configuration + //-------------------------------------------------- + unsigned int demo_number = cimg_option("-run",0,0); + if (demo_number) start_item(demo_number); + else { + cimg::info(); + + // Demo selection menu + //--------------------- + const unsigned char + white[] = { 255, 255, 255 }, black[] = { 0, 0, 0 }, red[] = { 120, 50, 80 }, + yellow[] = { 200, 155, 0 }, green[] = { 30, 200, 70 }, purple[] = { 175, 32, 186 }, + blue[] = { 55, 140, 185 }, grey[] = { 127, 127, 127 }; + float + rx = 0, ry = 0, t = 0, gamma = 0, vgamma = 0, T = 0.9f, + nrx = (float)(2*cimg::rand(-1,1)), + nry = (float)(2*cimg::rand(-1,1)); + int y0 = 2*13; + CImg back(1,2,1,3,10), fore, text, img; + back.fillC(0,1,0,10,10,235).resize(350,570,1,3,3).get_shared_channel(2).noise(10,1).draw_plasma(); + back.draw_rectangle(0,y0 - 7,back.width() - 1,y0 + 20,red); + fore.assign(back.width(),50,1,1,0).draw_text(20,y0 - 3,"** CImg %u.%u.%u Samples **",grey,0,1,23, + cimg_version/100,(cimg_version/10)%10,cimg_version%10); + fore.max(fore.get_threshold(1).dilate(3)).resize(-100,-100,1,3); + cimg_forXY(fore,x,y) if (fore(x,y)>1) { + const float val = std::min(255.0f,7.0f*(y - 3))*fore(x,y)/127; + fore(x,y,0) = (unsigned char)(val/1.5f); + fore(x,y,1) = (unsigned char)val; + fore(x,y,2) = (unsigned char)(val/1.1f); + } + text.draw_text(1,1, + "1- Blurring Gradient\n" + "2- Rotozoom\n" + "3- Anisotropic Smoothing\n" + "4- Fractal Animation\n" + "5- Gamma Correction\n" + "6- Filled Triangles\n" + "7- Mandelbrot explorer\n" + "8- Mini-Paint\n" + "9- Soccer Bobs\n" + "10- Bump Effect\n" + "11- Bouncing Bubble\n" + "12- Virtual Landscape\n" + "13- Plasma & Sinus Scroll\n" + "14- Oriented Convolutions\n" + "15- Shade Bobs\n" + "16- Fourier Filtering\n" + "17- Image Zoomer\n" + "18- Blobs Editor\n" + "19- Double Torus\n" + "20- 3D Metaballs\n" + "21- Fireworks\n" + "22- Rubber Logo\n" + "23- Image Waves\n" + "24- Breakout\n" + "25- 3D Reflection\n" + "26- Fish-Eye Magnification\n" + "27- Word Puzzle\n", + white,0,1,18).resize(-100,-100,1,3); + fore.resize(back,0).draw_image(20,y0 + 3*13,text|=text.get_dilate(3)>>4); + + CImgDisplay disp(back,"CImg Library Samples",0,false,true); + disp.move((disp.screen_width() - disp.window_width())/2,(disp.screen_height() - disp.window_height())/2); + img = back; back*=0.15f; + for (y0+=3*13; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); demo_number = 0) { + while (!demo_number && !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + img*=0.85f; img+=back; + for (int i = 0; i<60; ++i) { + const float + mx = (float)(img.width()/2 + (img.width()/2 - 30)*((1 - gamma)*std::cos(3*t + rx*i*18.0f*cimg::PI/180) + + gamma*std::cos(3*t + nrx*i*18.0f*cimg::PI/180))), + my = (float)(img.height()/2 + (img.height()/2 - 30)*((1 - gamma)*std::sin(4*t + ry*i*18.0f*cimg::PI/180) + + gamma*std::sin(4*t + nry*i*18.0f*cimg::PI/180))), + mz = (float)(1.3f + 1.2f*((1 - gamma)*std::sin(2*t + (rx + ry)*i*20*cimg::PI/180) + + gamma*std::sin(2*t + (nrx + nry)*i*20*cimg::PI/180))); + const int j = i%5; + img.draw_circle((int)mx,(int)my,(int)(10*mz),j!=0?(j!=1?(j!=2?(j!=3?green:red):yellow):purple):blue,0.2f). + draw_circle((int)(mx + 4*mz),(int)(my - 4),(int)(3*mz),white,0.1f). + draw_circle((int)mx,(int)my,(int)(10*mz),black,0.2f,~0U); + } + const unsigned char *ptrs = fore.data(); + cimg_for(img,ptrd,unsigned char) { const unsigned char val = *(ptrs++); if (val) *ptrd = val; } + const int y = (disp.mouse_y() - y0)/18, _y = 18*y + y0 + 9; + if (y>=0 && y<27) { + for (int yy = _y - 9; yy<=_y + 8; ++yy) + img.draw_rectangle(0,yy,0,1,img.width() - 1,yy,0,1,(unsigned char)(130 - 14*cimg::abs(yy - _y))); + img.draw_triangle(2,_y - 6,2,_y + 6,8,_y,yellow). + draw_triangle(img.width() - 2,_y - 6,img.width() - 2,_y + 6,img.width() - 8,_y,yellow); + } + gamma+=vgamma; + if (gamma>1) { + gamma = vgamma = 0; + rx = nrx; + ry = nry; + nrx=(float)(2*cimg::rand(-1,1)); nry=(float)(2*cimg::rand(-1,1)); + } + t+=0.006f; T+=0.005f; if (T>1) { T-=(float)(1 + cimg::rand(-1,1)); vgamma = 0.03f; } + if (disp.button()) { demo_number = 1 + (disp.mouse_y() - y0)/18; disp.set_button(); } + disp.resize(disp,false).display(img).wait(25); + } + start_item(demo_number); + } + } + + // Exit demo + //----------- + std::exit(0); + return 0; +} diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 000000000..162029541 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,310 @@ +# +# File : CMakeLists.txt +# ( Configuration file for 'cmake' utility ) +# +# Description : CMakeLists.txt configuration file for compiling CImg-based code. +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : Antonio Albiol +# ( http://personales.upv.es/~aalbiol/ ) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# + +cmake_minimum_required(VERSION 2.6) + + +PROJECT(Examples-CIMG) + +# Prevent compilation in-source +if( ${CMAKE_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR} ) + Message( " " ) + Message( FATAL_ERROR "Source and build directories are the same. + Create an empty build directory, + change into it and re-invoke cmake") +endif() + + +# To use PKG_CHECK_MODULES to find some optional packages +find_package(PkgConfig) + +# Tell CMake where to leave executables +SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}) + +#Path of CImg.h file relative to this file path +set(CIMG_H_PATH ${PROJECT_SOURCE_DIR}/..) +include_directories( ${PROJECT_SOURCE_DIR} ) +include_directories( ${CIMG_H_PATH} ) + + + + +# ### CIMG related stuff +# Flags to enable fast image display, using the XSHM library. +SET(CIMG_XSHM_CCFLAGS -Dcimg_use_xshm) + +# Flags to enable screen mode switching, using the XRandr library. +SET(CIMG_XRANDR_CCFLAGS -Dcimg_use_xrandr) + +# Flags to enable native support for JPEG image files, using the JPEG library. +# ( http://www.ijg.org/ ) +SET(CIMG_JPEG_CCFLAGS -Dcimg_use_jpeg) + +# Flags to enable native support for TIFF image files, using the TIFF library. +# ( http://www.libtiff.org/ ) +SET(CIMG_TIFF_CCFLAGS -Dcimg_use_tiff) + +# Flags to enable native support for PNG image files, using the PNG library. +# ( http://www.libpng.org/ ) +SET(CIMG_PNG_CCFLAGS -Dcimg_use_png) + +#Flags to enable OPENCV support (Camera) +# ( http://www.opencv.org/ ) +SET(CIMG_OPENCV_CCFLAGS-Dcimg_use_opencv) + +# Flags to enable native support for EXR image files, using the OpenEXR library. +# ( http://www.openexr.com/ ) +SET(CIMG_OPENEXR_CCFLAGS -Dcimg_use_openexr) + +# Flags to enable native support for various video files, using the FFMPEG library. +# ( http://www.ffmpeg.org/ ) +SET(CIMG_FFMPEG_CCFLAGS -Dcimg_use_ffmpeg) + +# Flags to enable native support of most classical image file formats, using the Magick++ library. +# ( http://www.imagemagick.org/Magick++/ ) +SET(CIMG_MAGICK_CCFLAGS -Dcimg_use_magick) + +# Flags to enable faster Discrete Fourier Transform computation, using the FFTW3 library +# ( http://www.fftw.org/ ) +SET(CIMG_FFTW3_CCFLAGS -Dcimg_use_fftw3) + + + + +# ### Search Additional Libraries ########## +FIND_PACKAGE(OpenCV) +FIND_PACKAGE(JPEG) +FIND_PACKAGE(TIFF) +FIND_PACKAGE(PNG) +FIND_PACKAGE(ZLIB) +FIND_PACKAGE(LAPACK) +FIND_PACKAGE(BLAS) + +PKG_CHECK_MODULES(FFTW3 fftw3) +PKG_CHECK_MODULES(OPENEXR OpenEXR) +PKG_CHECK_MODULES(MAGICK Magick++) + +# PKG_CHECK_MODULES(LIBAVCODEC libavcodec) +# PKG_CHECK_MODULES(LIBAVFORMAT libavformat) +# PKG_CHECK_MODULES(LIBSWSCALE libswscale) +# PKG_CHECK_MODULES(LIBAVUTIL libavutil) + +if(NOT WIN32) + FIND_PACKAGE(X11) + FIND_PACKAGE(Threads REQUIRED) +endif() + +# #### End of additional libraries search ########## + + +### Configure Paths according to detected packages +if(TIFF_FOUND) + get_filename_component(TIFF_LIB_DIRS ${TIFF_LIBRARIES} PATH) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_TIFF_CCFLAGS}") + link_directories(${TIFF_LIB_DIRS}) + include_directories(${TIFF_INCLUDE_DIR}) + SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${TIFF_LIBRARIES}) +endif() + + + +if(JPEG_FOUND) + get_filename_component(JPEG_LIB_DIRS ${JPEG_LIBRARIES} PATH) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_JPEG_CCFLAGS}") + link_directories(${JPEG_LIB_DIRS}) + include_directories(${JPEG_INCLUDE_DIR}) + SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${JPEG_LIBRARIES}) +endif() + + + + +if (ZLIB_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_ZLIB_CCFLAGS}") + link_directories(${ZLIB_LIB_DIRS}) + include_directories(${ZLIB_INCLUDE_DIR}) + SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${ZLIB_LIBRARIES}) + + # PNG requires ZLIB + if(PNG_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_PNG_CCFLAGS}") + link_directories(${PNG_LIB_DIRS}) + include_directories(${PNG_INCLUDE_DIR} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${PNG_LIBRARIES} ) + endif() +endif() + + + + +if(FFTW3_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_FFTW3_CCFLAGS}") + link_directories( ${FFTW3_LIBRARY_DIRS} ) + include_directories( ${FFTW3_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${FFTW3_LIBRARIES} ) +endif() + + + + +if(OPENEXR_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_OPENEXR_CCFLAGS}") + link_directories( ${OPENEXR_LIBRARY_DIRS} ) + include_directories( ${OPENEXR_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${OPENEXR_LIBRARIES} ) +endif() + + +if(MAGICK_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_MAGICK_CCFLAGS}") + link_directories( ${MAGICK_LIBRARY_DIRS} ) + include_directories( ${MAGICK_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${MAGICK_LIBRARIES} ) +endif() + + + + +if( LIBAVCODEC_FOUND AND LIBAVFORMAT_FOUND AND LIBSWSCALE_FOUND AND LIBAVUTIL_FOUND ) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_FFMPEG_CCFLAGS}") + link_directories( ${LIBAVFORMAT_LIBRARY_DIRS} ) + link_directories( ${LIBAVCODEC_LIBRARY_DIRS} ) + link_directories( ${LIBSWSCALE_LIBRARY_DIRS} ) + link_directories( ${LIBAVUTIL_LIBRARY_DIRS} ) + include_directories( ${LIBAVFORMAT_INCLUDE_DIRS} ${LIBAVFORMAT_INCLUDE_DIRS}/libavformat) + include_directories( ${LIBAVCODEC_INCLUDE_DIRS} ${LIBAVCODEC_INCLUDE_DIRS}/libavcodec ) + include_directories( ${LIBSWSCALE_INCLUDE_DIRS} ${LIBSWSCALE_INCLUDE_DIRS}/libswscale) + include_directories( ${LIBAVUTIL_INCLUDE_DIRS} ${LIBAVUTIL_INCLUDE_DIRS}/libavutil ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVFORMAT_LIBRARIES} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVCODEC_LIBRARIES} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBSWSCALE_LIBRARIES} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LIBAVUTIL_LIBRARIES} ) +endif() + + +if(NOT APPLE) + if(NOT WIN32) + if(X11_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_XSHM_CCFLAGS} ${CIMG_XRANDR_CCFLAGS}") + SET(SYSTEM_LIBS ${SYSTEM_LIBS} Xext Xrandr) + endif() + endif(NOT WIN32) +endif(NOT APPLE) + +if(X11_FOUND) + link_directories(${X11_LIB_DIRS}) + include_directories(${X11_INCLUDE_DIR}) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${X11_LIBRARIES} ) +endif() + +if (NOT WIN32) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${CMAKE_THREAD_LIBS_INIT} ) +endif() + +if( WIN32) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} gdi32 ) +endif() + +if (OpenCV_FOUND) + message("OpenCV Found") + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_OPENCV_CCFLAGS}") + include_directories(${OpenCV_INCLUDE_DIRS}) + link_directories(${OpenCV_LIB_DIRS}) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${OpenCV_LIBS} ) +endif() + + + +if(LAPACK_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_LAPACK_CCFLAGS}") + link_directories( ${LAPACK_LIBRARY_DIRS} ) + include_directories( ${LAPACK_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${LAPACK_LIBRARIES} ) +endif() + +if(BLAS_FOUND) + SET(CIMG_CFLAGS "${CIMG_CFLAGS} ${CIMG_BLAS_CCFLAGS}") + link_directories( ${BLAS_LIBRARY_DIRS} ) + include_directories( ${BLAS_INCLUDE_DIRS} ) + SET( SYSTEM_LIBS ${SYSTEM_LIBS} ${BLAS_LIBRARIES} ) +endif() + + +# Add CIMG Flags to Compilation Flags +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CIMG_CFLAGS}") + + +SET(CIMG_FILES CImg_demo + captcha + curve_editor2d + dtmri_view3d + edge_explorer2d + fade_images + gaussian_fit1d + generate_loop_macros + hough_transform2d + image_registration2d + image2ascii + image_surface3d + jawbreaker + mcf_levelsets2d + mcf_levelsets3d + odykill + pde_heatflow2d + pde_TschumperleDeriche2d + plotter1d + radon_transform2d + scene3d + spherical_function3d + tetris + tron + tutorial + wavelet_atrous + use_draw_gradient + use_nlmeans + use_skeleton + use_RGBclass + ) + +foreach(program ${CIMG_FILES}) + add_executable(${program} ${program}.cpp) + target_link_libraries(${program} ${SYSTEM_LIBS} ) +endforeach(program) diff --git a/examples/Makefile b/examples/Makefile new file mode 100644 index 000000000..702ac363c --- /dev/null +++ b/examples/Makefile @@ -0,0 +1,609 @@ +# +# File : Makefile +# ( Makefile for GNU 'make' utility ) +# +# Description : Makefile for compiling CImg-based code on Unix. +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : David Tschumperlé +# ( http://tschumperle.users.greyc.fr/ ) +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# + +#------------------------------------------------------- +# Define the list of files to be compiled +# (name of the source files without the .cpp extension) +#------------------------------------------------------- + +# Files which do not necessarily require external libraries to run. +FILES = CImg_demo \ + captcha \ + curve_editor2d \ + dtmri_view3d \ + edge_explorer2d \ + fade_images \ + gaussian_fit1d \ + generate_loop_macros \ + hough_transform2d \ + image_registration2d \ + image2ascii \ + image_surface3d \ + jawbreaker \ + mcf_levelsets2d \ + mcf_levelsets3d \ + odykill \ + pde_heatflow2d \ + pde_TschumperleDeriche2d \ + plotter1d \ + radon_transform2d \ + scene3d \ + spherical_function3d \ + tetris \ + tron \ + tutorial \ + wavelet_atrous \ + use_chlpca \ + use_draw_gradient \ + use_nlmeans \ + use_skeleton \ + use_RGBclass \ + +# Files which requires external libraries to run. +EXTRA_FILES = use_tiff_stream use_jpeg_buffer + +#--------------------------------- +# Set correct variables and paths +#--------------------------------- +VERSION = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c4 | head -c3) +VERSION1 = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c4 | head -c1) +VERSION2 = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c3 | head -c1) +VERSION3 = $(shell grep 'cimg_version\ ' ../CImg.h | tail -c2 | head -c1) +SVERSION = $(VERSION1).$(VERSION2).$(VERSION3) + +X11PATH = /usr/X11R6 + +EXE_PRE = +EXE_EXT = +ifeq ($(MSYSTEM),MINGW32) +EXE_EXT = .exe +endif +ifeq ($(MSYSTEM),MINGW64) +EXE_EXT = .exe +endif + +ifeq ($(shell echo $(notdir $(CXX)) | head -c3),g++) +IS_GCC = 1 +endif +ifeq ($(shell echo $(notdir $(CXX)) | head -c7),clang++) +IS_CLANG = 1 +endif +ifeq ($(shell echo $(notdir $(CXX)) | head -c4),icpc) +IS_ICPC = 1 +endif + +CXXVER = $(CXX) +CFLAGS = -I.. -Wall -Wextra -Wfatal-errors -Werror=unknown-pragmas -Werror=unused-label +LIBS = -lm +ifdef IS_GCC +CXXVER = $(shell $(CXX) -v 2>&1 | tail -n 1) +endif +ifdef IS_CLANG +CXXVER = $(shell $(CXX) -v 2>&1 | head -n 1) +endif +ifdef IS_ICPC +CXXVER = $(shell $(CXX) -v 2>&1) +CFLAGS = -I.. +LIBS = +endif + +ifdef IS_GCC +GCC_VER_GTEQ5 = $(shell expr `$(CXX) -dumpversion | cut -f1 -d.` \>= 5) +ifeq ($(GCC_VER_GTEQ5),1) +CFLAGS += -Wshadow +endif +endif + +#-------------------------------------------------- +# Set compilation flags allowing to customize CImg +#-------------------------------------------------- + +# Flags to enable strict code standards +ifeq ($(notdir $(CXX)),icpc) +ANSI_CFLAGS = -std=c++11 +else +ANSI_CFLAGS = -std=c++11 -pedantic +endif + +# Flags to enable code debugging. +DEBUG_CFLAGS = -Dcimg_verbosity=3 -Dcimg_strict_warnings -g -fsanitize=address + +# Flags to enable color output messages. +# (requires a VT100 compatible terminal) +VT100_CFLAGS = -Dcimg_use_vt100 + +# Flags to enable code optimization by the compiler. +OPT_CFLAGS = -Ofast +ifdef IS_GCC +OPT_CFLAGS = -Ofast -mtune=generic +endif +ifdef IS_ICPC +OPT_CFLAGS = -fast +endif + +# Flags to enable OpenMP support. +OPENMP_DEFINE = -Dcimg_use_openmp -fopenmp +OPENMP_INCDIR = +OPENMP_CFLAGS = $(OPENMP_DEFINE) $(OPENMP_INCDIR) +ifdef IS_ICPC +OPENMP_CFLAGS = #-Dcimg_use_openmp -openmp -i-static # -> Seems to bug the compiler! +endif +ifdef IS_CLANG +OPENMP_CFLAGS = +endif + +# Flags to enable OpenCV support. +OPENCV_DEFINE = -Dcimg_use_opencv +OPENCV_INCDIR = $(shell pkg-config opencv --cflags || echo -I/usr/include/opencv) -I/usr/include/opencv -I/usr/include/opencv4 +OPENCV_CFLAGS = $(OPENCV_DEFINE) $(OPENCV_INCDIR) +OPENCV_LIBS = $(shell pkg-config opencv --libs || echo -lopencv_core -lopencv_highgui) + +# Flags used to disable display capablities of CImg +NODISPLAY_CFLAGS = -Dcimg_display=0 + +# Flags to enable the use of the X11 library. +# (X11 is used by CImg to handle display windows) +X11_DEFINE = -Dcimg_display=1 +X11_INCDIR = $(shell pkg-config --cflags x11 || echo -I/usr/X11R6/include) +X11_CFLAGS = $(X11_DEFINE) $(X11_INCDIR) +X11_LIBS = $(shell pkg-config --libs x11 || echo -L/usr/X11R6/lib -lX11) -lpthread + +# Flags to enable fast image display, using the XSHM library (when using X11). +# !!! Seems to randomly crash when used on MacOS and 64bits systems, so use it only when necessary !!! +XSHM_CFLAGS = # -Dcimg_use_xshm $(shell pkg-config --cflags xcb-shm) +XSHM_LIBS = # $(shell pkg-config --libs xcb-shm || echo -L$(USR)/X11R6/lib -lXext) + +# Flags to enable GDI32 display (Windows native). +GDI32_DEFINE = -mwindows +GDI32_INCDIR = +GDI32_CFLAGS = $(GDI32_DEFINE) $(GDI32_INCDIR) +GDI32_LIBS = -lgdi32 + +# Flags to enable screen mode switching, using the XRandr library (when using X11). +# ( http://www.x.org/wiki/Projects/XRandR ) +# !!! Not supported by the X11 server on MacOS, so do not use it on MacOS !!! +XRANDR_DEFINE = -Dcimg_use_xrandr +XRANDR_INCDIR = +XRANDR_CFLAGS = $(XRANDR_DEFINE) $(XRANDR_INCDIR) +XRANDR_LIBS = -lXrandr + +# Flags to enable native support for PNG image files, using the PNG library. +# ( http://www.libpng.org/ ) +PNG_DEFINE = -Dcimg_use_png +PNG_INCDIR = +PNG_CFLAGS = $(PNG_DEFINE) $(PNG_INCDIR) +PNG_LIBS = -lpng -lz + +# Flags to enable native support for JPEG image files, using the JPEG library. +# ( http://www.ijg.org/ ) +JPEG_DEFINE = -Dcimg_use_jpeg +JPEG_INCDIR = +JPEG_CFLAGS = $(JPEG_DEFINE) $(JPEG_INCDIR) +JPEG_LIBS = -ljpeg + +# Flags to enable native support for TIFF image files, using the TIFF library. +# ( http://www.libtiff.org/ ) +TIFF_DEFINE = -Dcimg_use_tiff +TIFF_INCDIR = +TIFF_CFLAGS = $(TIFF_DEFINE) $(TIFF_INCDIR) +TIFF_LIBS = -ltiff + +# Flags to enable native support for loading HEIF image files, using the libheif library. +# ( https://github.com/strukturag/libheif ) +HEIF_DEFINE = -Dcimg_use_heif +HEIF_INCDIR = +HEIF_CFLAGS = $(HEIF_DEFINE) $(HEIF_INCDIR) +HEIF_LIBS = -lheif + +# Flags to enable native support for MINC2 image files, using the MINC2 library. +# ( http://en.wikibooks.org/wiki/MINC/Reference/MINC2.0_Users_Guide ) +MINC2_DEFINE = -Dcimg_use_minc2 +MINC2_INCDIR = -I${HOME}/local/include +MINC2_CFLAGS = $(MINC2_DEFINE) $(MINC2_INCDIR) +MINC2_LIBS = -lminc_io -lvolume_io2 -lminc2 -lnetcdf -lhdf5 -lz -L${HOME}/local/lib + +# Flags to enable native support for EXR image files, using the OpenEXR library. +# ( http://www.openexr.com/ ) +OPENEXR_DEFINE = -Dcimg_use_openexr +OPENEXR_INCDIR = -I/usr/include/OpenEXR +OPENEXR_CFLAGS = $(OPENEXR_DEFINE) $(OPENEXR_INCDIR) +OPENEXR_LIBS = -lIlmImf -lHalf + +# Flags to enable native support for various video files, using the FFMPEG library. +# ( http://www.ffmpeg.org/ ) +FFMPEG_DEFINE = -Dcimg_use_ffmpeg -D__STDC_CONSTANT_MACROS +FFMPEG_INCDIR = -I/usr/include/libavcodec -I/usr/include/libavformat -I/usr/include/libswscale -I/usr/include/ffmpeg +FFMPEG_CFLAGS = $(FFMPEG_DEFINE) $(FFMPEG_INCDIR) +FFMPEG_LIBS = -lavcodec -lavformat -lswscale + +# Flags to enable native support for compressed .cimgz files, using the Zlib library. +# ( http://www.zlib.net/ ) +ZLIB_DEFINE = -Dcimg_use_zlib +ZLIB_INCDIR = $(shell pkg-config --cflags zlib || echo -I$(USR)/$(INCLUDE)) +ZLIB_CFLAGS = $(ZLIB_DEFINE) $(ZLIB_INCDIR) +ZLIB_LIBS = $(shell pkg-config --libs zlib || echo -lz) + +# Flags to enable native support for downloading files from the network. +# ( http://curl.haxx.se/libcurl/ ) +CURL_DEFINE = -Dcimg_use_curl +CURL_INCDIR = +CURL_CFLAGS = $(CURL_DEFINE) +CURL_LIBS = -lcurl + +# Flags to enable native support of most classical image file formats, using the Magick++ library. +# ( http://www.imagemagick.org/Magick++/ ) +MAGICK_DEFINE = -Dcimg_use_magick +MAGICK_INCDIR = $(shell pkg-config --cflags GraphicsMagick++ || echo -I$(USR)/$(INCLUDE)/GraphicsMagick) +MAGICK_CFLAGS = $(MAGICK_DEFINE) $(MAGICK_INCDIR) +MAGICK_LIBS = $(shell pkg-config --libs GraphicsMagick++ || echo -lGraphicsMagick++) + +# Flags to enable faster Discrete Fourier Transform computation, using the FFTW3 library +# ( http://www.fftw.org/ ) +FFTW3_DEFINE = -Dcimg_use_fftw3 +FFTW3_INCDIR = +FFTW3_CFLAGS = $(FFTW3_DEFINE) $(FFTW3_INCDIR) +ifeq ($(OSTYPE),msys) +FFTW3_LIBS = -lfftw3-3 +else +FFTW3_LIBS = -lfftw3 -lfftw3_threads +endif + +# Flags to enable the use of LAPACK routines for matrix computation +# ( http://www.netlib.org/lapack/ ) +LAPACK_DEFINE = -Dcimg_use_lapack +LAPACK_INCDIR = +LAPACK_CFLAGS = $(LAPACK_DEFINE) $(LAPACK_INCDIR) +LAPACK_LIBS = -lblas -llapack + +# Flags to enable the use of the Board library +# ( https://github.com/c-koi/libboard ) +BOARD_DEFINE = -Dcimg_use_board +BOARD_INCDIR = -I/usr/include/board +BOARD_CFLAGS = $(BOARD_DEFINE) $(BOARD_INCDIR) +BOARD_LIBS = -lboard + +# Flags to compile GIMP plug-ins. +ifeq ($(MSYSTEM),MINGW32) +GIMP_CFLAGS = -mwindows +endif + +#------------------------- +# Define Makefile entries +#------------------------- +.cpp: + @echo + @echo "** Compiling '$* ($(SVERSION))' with '$(CXXVER)'" + @echo + $(CXX) -o $(EXE_PRE)$*$(EXE_EXT) $< $(CFLAGS) $(CONF_CFLAGS) $(LIBS) $(CONF_LIBS) +ifeq ($(STRIP_EXE),true) + strip $(EXE_PRE)$*$(EXE_EXT) +endif +menu: + @echo + @echo "CImg Library $(SVERSION) : Examples" + @echo "-----------------------------" + @echo " > linux : Linux/BSD target, X11 display, optimizations disabled." + @echo " > dlinux : Linux/BSD target, X11 display, debug mode." + @echo " > olinux : Linux/BSD target, X11 display, optimizations enabled." + @echo " > mlinux : Linus/BSD target, no display, minimal features, optimizations enabled." + @echo " > Mlinux : Linux/BSD target, X11 display, maximal features, optimizations enabled." + @echo + @echo " > macos : MacOS target, X11 display, optimizations disabled." + @echo " > dmacos : MacOS target, X11 display, debug mode." + @echo " > omacos : MacOS target, X11 display, optimizations enabled." + @echo " > mmacos : MacOS target, no display, minimal features, optimizations enabled." + @echo " > Mmacos : MacOS target, X11 display, maximal features, optimizations enabled." + @echo + @echo " > windows : Windows target, GDI32 display, optimizations disabled." + @echo " > dwindows : Windows target, GDI32 display, debug mode." + @echo " > owindows : Windows target, GDI32 display, optimizations enabled." + @echo " > mwindows : Windows target, no display, minimal features, optimizations enabled." + @echo " > Mwindows : Windows target, GDI32 display, maximal features, optimizations enabled." + @echo + @echo " > clean : Clean generated files." + @echo + @echo "Choose your option :" + @read CHOICE; echo; $(MAKE) $$CHOICE; echo; echo "> Next time, you can bypass the menu by typing directly 'make $$CHOICE'"; echo; + +all: $(FILES) + +clean: + rm -rf *.exe *.o *.obj *~ \#* $(FILES) $(EXTRA_FILES) +ifneq ($(EXE_PRE),) + rm -f $(EXE_PRE)* +endif + +# Custom user-defined target +custom: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(X11_CFLAGS) \ +$(LAPACK_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(TIFF_LIBS) \ +$(HEIF_LIBS) \ +$(LAPACK_LIBS) \ +$(XSHM_LIBS)" \ +all $(EXTRA_FILES) + +# Linux/BSD/Mac OSX targets, with X11 display. + +#A target for Travis-CI +travis: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(FFTW3_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(CURL_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(FFTW3_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(CURL_LIBS) \ +$(XSHM_LIBS)" \ +all + +linux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS)" \ +all + +dlinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(DEBUG_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS)" \ +all + +olinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(OPT_CFLAGS) \ +$(OPENMP_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS)" \ +"STRIP_EXE=true" \ +all + +mlinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(NODISPLAY_CFLAGS) \ +$(OPT_CFLAGS)" \ +"STRIP_EXE=true" \ +all + +Mlinux: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(XSHM_CFLAGS) \ +$(XRANDR_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(OPENEXR_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(CURL_CFLAGS) \ +$(OPENCV_CFLAGS) \ +$(MAGICK_CFLAGS) \ +$(FFTW3_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(XSHM_LIBS) \ +$(XRANDR_LIBS) \ +$(TIFF_LIBS) -ltiffxx \ +$(HEIF_LIBS) \ +$(OPENEXR_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(CURL_LIBS) \ +$(OPENCV_LIBS) \ +$(MAGICK_LIBS) \ +$(FFTW3_LIBS)" \ +"STRIP_EXE=true" \ +all $(EXTRA_FILES) + +# MacOs targets, with X11 display. +macos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS)" \ +all + +dmacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(DEBUG_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS)" \ +all + +omacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(OPT_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS)" \ +all + +mmacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(ANSI_CFLAGS) \ +$(NODISPLAY_CFLAGS) \ +$(OPT_CFLAGS)" \ +all + +Mmacos: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS) \ +$(VT100_CFLAGS) \ +$(X11_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(MINC2_CFLAGS) \ +$(OPENEXR_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(OPENCV_CFLAGS) \ +$(MAGICK_CFLAGS) \ +$(FFTW3_CFLAGS)" \ +"CONF_LIBS = \ +$(X11_LIBS) \ +$(TIFF_LIBS) \ +$(HEIF_LIBS) \ +$(MINC2_LIBS) \ +$(OPENEXR_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(OPENCV_LIBS) \ +$(MAGICK_LIBS) \ +$(FFTW3_LIBS)" \ +all $(EXTRA_FILES) + +# Windows targets, with GDI32 display. +windows: + @$(MAKE) \ +"CONF_CFLAGS = " \ +"CONF_LIBS = \ +$(GDI32_LIBS)" \ +all + +dwindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(DEBUG_CFLAGS)" \ +"CONF_LIBS = \ +$(GDI32_LIBS)" \ +all + +owindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS)" \ +"CONF_LIBS = \ +$(GDI32_LIBS)" \ +"STRIP_EXE=true" \ +all + +mwindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(NODISPLAY_CFLAGS) \ +$(OPT_CFLAGS)" \ +"STRIP_EXE=true" \ +all + +Mwindows: + @$(MAKE) \ +"CONF_CFLAGS = \ +$(OPT_CFLAGS) \ +$(TIFF_CFLAGS) \ +$(HEIF_CFLAGS) \ +$(PNG_CFLAGS) \ +$(JPEG_CFLAGS) \ +$(ZLIB_CFLAGS) \ +$(OPENCV_CFLAGS) \ +$(FFTW3_CFLAGS)" \ +"CONF_LIBS = \ +$(GDI32_LIBS) \ +$(TIFF_LIBS) \ +$(HEIF_LIBS) \ +$(PNG_LIBS) \ +$(JPEG_LIBS) \ +$(ZLIB_LIBS) \ +$(OPENCV_LIBS) \ +$(FFTW3_LIBS)" \ +"STRIP_EXE=true" \ +all $(EXTRA_FILES) + +# End of makefile diff --git a/examples/captcha.cpp b/examples/captcha.cpp new file mode 100644 index 000000000..e8bc20e9a --- /dev/null +++ b/examples/captcha.cpp @@ -0,0 +1,163 @@ +/* + # + # File : captcha.cpp + # ( C++ source file ) + # + # Description : Captcha images generator. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_debug +#define cimg_debug 1 +#endif +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line parameters + //------------------------------ + cimg_usage("Simple captcha generator."); + const char *file_o = cimg_option("-o",(const char*)0,"Output image file"); + const bool add_border = cimg_option("-b",true,"Add border to captcha image"); + const bool visu = cimg_option("-visu",true,"Enable visualization if no output file"); + + // Generate captcha text (6 char max). + //------------------------------------ + const char *predef_words[] = { + "aarrgh", "abacas", "abacus", "abakas", "abamps", "abased", "abaser", "abases", "abasia", "abated", "abater", + "abates", "abatis", "abator", "baobab", "barbal", "barbed", "barbel", "barber", "barbes", "barbet", "barbie", + "barbut", "barcas", "barded", "bardes", "bardic", "barege", "cavies", "cavils", "caving", "cavity", "cavort", + "cawing", "cayman", "cayuse", "ceased", "ceases", "cebids", "ceboid", "cecity", "cedarn", "dicast", "dicers", + "dicier", "dicing", "dicker", "dickey", "dickie", "dicots", "dictum", "didact", "diddle", "diddly", "didies", + "didoes", "emails", "embalm", "embank", "embark", "embars", "embays", "embeds", "embers", "emblem", "embody", + "emboli", "emboly", "embosk", "emboss", "fluffy", "fluids", "fluish", "fluked", "flukes", "flukey", "flumed", + "flumes", "flumps", "flunks", "flunky", "fluors", "flurry", "fluted", "genome", "genoms", "genres", "genros", + "gentes", "gentil", "gentle", "gently", "gentry", "geodes", "geodic", "geoids", "gerahs", "gerbil", "hotter", + "hottie", "houdah", "hounds", "houris", "hourly", "housed", "housel", "houser", "houses", "hovels", "hovers", + "howdah", "howdie", "inland", "inlays", "inlets", "inlier", "inmate", "inmesh", "inmost", "innage", "innate", + "inners", "inning", "inpour", "inputs", "inroad", "joypop", "jubbah", "jubhah", "jubile", "judder", "judged", + "judger", "judges", "judoka", "jugate", "jugful", "jugged", "juggle", "jugula", "knifer", "knifes", "knight", + "knives", "knobby", "knocks", "knolls", "knolly", "knosps", "knotty", "knouts", "knower", "knowns", "knubby", + "legate", "legato", "legend", "legers", "legged", "leggin", "legion", "legist", "legits", "legman", "legmen", + "legong", "legume", "lehuas", "mammal", "mammas", "mammee", "mammer", "mammet", "mammey", "mammie", "mammon", + "mamzer", "manage", "manana", "manats", "manche", "manege", "nihils", "nilgai", "nilgau", "nilled", "nimble", + "nimbly", "nimbus", "nimmed", "nimrod", "ninety", "ninjas", "ninons", "ninths", "niobic", "offish", "offkey", + "offset", "oftest", "ogdoad", "oghams", "ogival", "ogives", "oglers", "ogling", "ogress", "ogrish", "ogrism", + "ohmage", "papaws", "papaya", "papers", "papery", "pappus", "papula", "papule", "papyri", "parade", "paramo", + "parang", "paraph", "parcel", "pardah", "quasar", "quatre", "quaver", "qubits", "qubyte", "queans", "queasy", + "queazy", "queens", "queers", "quelea", "quells", "quench", "querns", "raised", "raiser", "raises", "raisin", + "raitas", "rajahs", "rakees", "rakers", "raking", "rakish", "rallye", "ralphs", "ramada", "ramate", "savory", + "savour", "savoys", "sawers", "sawfly", "sawing", "sawlog", "sawney", "sawyer", "saxony", "sayeds", "sayers", + "sayest", "sayids", "tondos", "toneme", "toners", "tongas", "tonged", "tonger", "tongue", "tonics", "tonier", + "toning", "tonish", "tonlet", "tonner", "tonnes", "uredia", "uredos", "ureide", "uremia", "uremic", "ureter", + "uretic", "urgent", "urgers", "urging", "urials", "urinal", "urines", "uropod", "villus", "vimina", "vinals", + "vincas", "vineal", "vinery", "vinier", "vinify", "vining", "vinous", "vinyls", "violas", "violet", "violin", + "webfed", "weblog", "wechts", "wedded", "wedder", "wedeln", "wedels", "wedged", "wedges", "wedgie", "weeded", + "weeder", "weekly", "weened", "xystoi", "xystos", "xystus", "yabber", "yabbie", "yachts", "yacked", "yaffed", + "yagers", "yahoos", "yairds", "yakked", "yakker", "yakuza", "zigged", "zigzag", "zillah", "zinced", "zincic", + "zincky", "zinebs", "zinged", "zinger", "zinnia", "zipped", "zipper", "zirams", "zircon" }; + cimg::srand(); + const char *const captcha_text = predef_words[std::rand()%(sizeof(predef_words)/sizeof(char*))]; + + // Create captcha image + //---------------------- + + // Write colored and distorted text + CImg captcha(256,64,1,3,0), color(3); + char letter[2] = { 0 }; + for (unsigned int k = 0; k<6; ++k) { + CImg tmp; + *letter = captcha_text[k]; + if (*letter) { + cimg_forX(color,i) color[i] = (unsigned char)(128 + (std::rand()%127)); + tmp.draw_text((int)(2 + 8*cimg::rand()), + (int)(12*cimg::rand()), + letter,color.data(),0,1,std::rand()%2?38:57).resize(-100,-100,1,3); + const unsigned int dir = std::rand()%4, wph = tmp.width() + tmp.height(); + cimg_forXYC(tmp,x,y,v) { + const int val = dir==0?x + y:(dir==1?x + tmp.height() - y:(dir==2?y + tmp.width() - x: + tmp.width() - x + tmp.height() - y)); + tmp(x,y,v) = (unsigned char)std::max(0.0f,std::min(255.0f,1.5f*tmp(x,y,v)*val/wph)); + } + if (std::rand()%2) tmp = (tmp.get_dilate(3)-=tmp); + tmp.blur((float)cimg::rand()*0.8f).normalize(0,255); + const float sin_offset = (float)cimg::rand(-1,1)*3, sin_freq = (float)cimg::rand(-1,1)/7; + cimg_forYC(captcha,y,v) captcha.get_shared_row(y,0,v).shift((int)(4*std::cos(y*sin_freq + sin_offset))); + captcha.draw_image(6 + 40*k,tmp); + } + } + + // Add geometric and random noise + CImg copy = (+captcha).fill(0); + for (unsigned int l = 0; l<3; ++l) { + if (l) copy.blur(0.5f).normalize(0,148); + for (unsigned int k = 0; k<10; ++k) { + cimg_forX(color,i) color[i] = (unsigned char)(128 + cimg::rand()*127); + if (cimg::rand()<0.5f) copy.draw_circle((int)(cimg::rand()*captcha.width()), + (int)(cimg::rand()*captcha.height()), + (int)(cimg::rand()*30), + color.data(),0.6f,~0U); + else copy.draw_line((int)(cimg::rand()*captcha.width()), + (int)(cimg::rand()*captcha.height()), + (int)(cimg::rand()*captcha.width()), + (int)(cimg::rand()*captcha.height()), + color.data(),0.6f); + } + } + captcha|=copy; + captcha.noise(10,2); + + if (add_border) + captcha.draw_rectangle(0,0,captcha.width() - 1,captcha.height() - 1, + CImg::vector(255,255,255).data(),1.0f,~0U); + captcha = (+captcha).fill(255) - captcha; + + // Write output image and captcha text + //------------------------------------- + std::printf("%s\n",captcha_text); + if (file_o) captcha.save(file_o); + else if (visu) { + CImgDisplay disp(CImg(512,128,1,3,180).draw_image(128,32,captcha),captcha_text,0); + while (!disp.is_closed() && !disp.key()) { disp.wait(); if (disp.is_resized()) disp.resize(disp).wait(100); } + } + return 0; +} diff --git a/examples/curve_editor2d.cpp b/examples/curve_editor2d.cpp new file mode 100644 index 000000000..dc7b3cd20 --- /dev/null +++ b/examples/curve_editor2d.cpp @@ -0,0 +1,356 @@ +/* + # + # File : curve_editor2d.cpp + # ( C++ source file ) + # + # Description : A simple user interface to construct 2D spline curves. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # Antonio Albiol Colomer + # ( http://personales.upv.es/~aalbiol/index-english.html ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Compute distance from a point to a segment. +//--------------------------------------------- +float dist_segment(const float x, const float y, const float x1, const float y1, const float x2, const float y2) { + const float + dx = x2 - x1, + dy = y2 - y1, + long_segment = (float)std::sqrt(dx*dx + dy*dy); + if (long_segment==0) { const float ddx = x - x1, ddy = y - y1; return (float)std::sqrt(ddx*ddx + ddy*ddy); } + const float + unitx = dx/long_segment, + unity = dy/long_segment, + vx = x - x1, + vy = y - y1, + long_proy = vx*unitx + vy*unity, + proyx = x1 + long_proy*unitx, + proyy = y1 + long_proy*unity; + if (long_proy>long_segment) { const float ddx = x - x2, ddy = y - y2; return std::sqrt(ddx*ddx + ddy*ddy); } + else if (long_proy<0) { const float ddx = x - x1, ddy = y - y1; return std::sqrt(ddx*ddx + ddy*ddy); } + const float ddx = x - proyx, ddy = y - proyy; + return std::sqrt(ddx*ddx + ddy*ddy); +} + +// Main procedure +//--------------- +int main(int argc, char **argv) { + + // Read command line parameters + //----------------------------- + cimg_usage("2D Spline Curve Editor"); + const char *file_i = cimg_option("-i",(char*)0,"Input image"); + const float contrast = cimg_option("-contrast",0.6f,"Image contrast"); + const char *file_ip = cimg_option("-ip",(char*)0,"Input control points"); + const char *file_oc = cimg_option("-oc",(char*)0,"Output curve points"); + const char *file_op = cimg_option("-op",(char*)0,"Output control points"); + const char *file_od = cimg_option("-od",(char*)0,"Output distance function"); + bool interp = cimg_option("-poly",true,"Use polynomial interpolation"); + bool closed = cimg_option("-closed",true,"Closed curve"); + bool show_tangents = cimg_option("-tangents",false,"Show tangents"); + bool show_points = cimg_option("-points",true,"Show control points"); + bool show_outline = cimg_option("-outline",true,"Show polygon outline"); + bool show_indices = cimg_option("-indices",true,"Show points indices"); + bool show_coordinates = cimg_option("-coords",false,"Show points coordinates"); + const float precision = cimg_option("-prec",0.05f,"Precision of curve discretization"); + + // Init image data + //----------------- + const unsigned char yellow[] = { 255,255,0 }, white[] = { 255,255,255 }, green[] = { 0,255,0 }, + blue[] = { 120,200,255 }, purple[] = { 255,100,255 }, black[] = { 0,0,0 }; + CImg img0, img, help_img; + if (file_i) { + std::fprintf(stderr,"\n - Load input image '%s' : ",cimg::basename(file_i)); + img0 = CImg<>(file_i).normalize(0,255.0f*contrast); + std::fprintf(stderr,"Size = %dx%dx%dx%d \n",img0.width(),img0.height(),img0.depth(),img0.spectrum()); + img0.resize(-100,-100,1,3); + } + else { + std::fprintf(stderr,"\n - No input image specified, use default 512x512 image.\n"); + img0.assign(512,512,1,3,0).draw_grid(32,32,0,0,false,false,green,0.4f,0xCCCCCCCC,0xCCCCCCCC); + } + + help_img.assign(220,210,1,3,0). + draw_text(5,5, + "------------------------------------------\n" + "2D Curve Editor\n" + "------------------------------------------\n" + "Left button : Create or move control point\n" + "Right button : Delete control point\n" + "Spacebar : Switch interpolation\n" + "Key 'C' : Switch open/closed mode\n" + "Key 'T' : Show/hide tangents\n" + "Key 'P' : Show/hide control points\n" + "Key 'O' : Show/hide polygon outline\n" + "Key 'N' : Show/hide points indices\n" + "Key 'X' : Show/hide points coordinates\n" + "Key 'H' : Show/hide this help\n" + "Key 'S' : Save control points\n" + "Key 'R' : Reset curve\n", + green); + CImgDisplay disp(img0,"2D Curve Editor",0); + CImgList points, curve; + bool moving = false, help = !file_i; + + if (file_ip) { + std::fprintf(stderr," - Load input control points '%s' : ",cimg::basename(file_ip)); + points = CImg<>(file_ip).transpose()<'x'; + std::fprintf(stderr," %u points\n",points.size()); + } + + // Enter interactive loop + //------------------------ + while (!disp.is_closed() && !disp.is_keyESC() && !disp.is_keyQ()) { + + // Handle mouse manipulation + //--------------------------- + const unsigned int button = disp.button(); + const float + mx = disp.mouse_x()*(float)img0.width()/disp.width(), + my = disp.mouse_y()*(float)img0.height()/disp.height(); + + if (points && button && mx>=0 && my>=0) { + + // Find nearest point and nearest segment + float dmin_pt = cimg::type::max(), dmin_seg = dmin_pt; + unsigned int p_pt = 0, p_seg = 0; + cimglist_for(points,p) { + const unsigned int + pnext = closed?(p + 1)%points.size():(p + 1<(int)points.size()?p + 1:p); + const float + xp = points(p,0), + yp = points(p,1); + const float + d_pt = (xp - mx)*(xp - mx) + (yp - my)*(yp - my), + d_seg = dist_segment(mx,my,xp,yp,points(pnext,0),points(pnext,1)); + if (d_pt::vector(mx,my),p_seg + 1); + moving = true; + } + if (button&2 && dmin_pt<100) { + if (points.size()>3) points.remove(p_pt); + disp.set_button(); + } + } + if (!button) moving = false; + + if (disp.key()) { + switch (disp.key()) { + case cimg::keySPACE : interp = !interp; break; + case cimg::keyC : closed = !closed; break; + case cimg::keyT : show_tangents = !show_tangents; break; + case cimg::keyP : show_points = !show_points; break; + case cimg::keyO : show_outline = !show_outline; break; + case cimg::keyN : show_indices = !show_indices; break; + case cimg::keyX : show_coordinates = !show_coordinates; break; + case cimg::keyR : points.assign(); break; + case cimg::keyH : help = !help; break; + case cimg::keyS : { + const char *filename = file_op?file_op:"curve_points.dlm"; + std::fprintf(stderr," - Save control points in '%s'\n",filename); + (points>'x').transpose().save(filename); + } break; + } + disp.set_key(); + } + + // Init list of points if empty + //------------------------------ + if (!points) { + const float + x0 = img0.width()/4.0f, + y0 = img0.height()/4.0f, + x1 = img0.width() - x0, + y1 = img0.height() - y0; + points.insert(CImg<>::vector(x0,y0)). + insert(CImg<>::vector(x1,y0)). + insert(CImg<>::vector(x1,y1)). + insert(CImg<>::vector(x0,y1)); + } + + // Estimate curve tangents + //------------------------- + CImg<> tangents(points.size(),2); + cimglist_for(points,p) { + const unsigned int + p0 = closed?(p + points.size() - 1)%points.size():(p?p - 1:0), + p1 = closed?(p + 1)%points.size():(p + 1<(int)points.size()?p + 1:p); + const float + x = points(p,0), + y = points(p,1), + x0 = points(p0,0), + y0 = points(p0,1), + x1 = points(p1,0), + y1 = points(p1,1), + u0 = x - x0, + v0 = y - y0, + n0 = 1e-8f + (float)std::sqrt(u0*u0 + v0*v0), + u1 = x1 - x, + v1 = y1 - y, + n1 = 1e-8f + (float)std::sqrt(u1*u1 + v1*v1), + u = u0/n0 + u1/n1, + v = v0/n0 + v1/n1, + n = 1e-8f + (float)std::sqrt(u*u + v*v), + fact = 0.5f*(n0 + n1); + tangents(p,0) = fact*u/n; + tangents(p,1) = fact*v/n; + } + + // Estimate 3th-order polynomial interpolation + //--------------------------------------------- + curve.assign(); + const unsigned int pmax = points.size() - (closed?0:1); + for (unsigned int p0 = 0; p0::vector(xt,yt)); + } + } + + // Draw curve and display image + //------------------------------- + const float + factx = (float)disp.width()/img0.width(), + facty = (float)disp.height()/img0.height(); + img = img0.get_resize(disp.width(),disp.height()); + if (help) img.draw_image(help_img,0.6f); + if (interp && show_outline) { + CImg<> npoints = points>'x'; + npoints.get_shared_row(0)*=factx; + npoints.get_shared_row(1)*=facty; + img.draw_polygon(npoints,blue,0.4f); + if (closed) img.draw_polygon(npoints,yellow,0.8f,0x11111111); + else img.draw_line(npoints,yellow,0.8f,0x11111111); + } + CImg<> ncurve = curve>'x'; + ncurve.get_shared_row(0)*=factx; + ncurve.get_shared_row(1)*=facty; + if (closed) img.draw_polygon(ncurve,white,1.0f,~0U); + else img.draw_line(ncurve,white); + + if (show_points) cimglist_for(points,p) { + const float + x = points(p,0)*factx, + y = points(p,1)*facty; + if (show_tangents) { + const float + u = tangents(p,0), + v = tangents(p,1), + n = 1e-8f + (float)std::sqrt(u*u + v*v), + nu = u/n, + nv = v/n; + img.draw_arrow((int)(x - 15*nu),(int)(y - 15*nv),(int)(x + 15*nu),(int)(y + 15*nv),green); + } + if (show_indices) img.draw_text((int)x,(int)(y - 16),"%d",purple,black,1,13,p); + if (show_coordinates) + img.draw_text((int)(x - 24),(int)(y + 8),"(%d,%d)",yellow,black,0.5f,13,(int)points(p,0),(int)points(p,1)); + img.draw_circle((int)x,(int)y,3,blue,0.7f); + } + + img.display(disp); + disp.wait(); + + if (disp.is_resized()) disp.resize(false); + } + + // Save output result and exit + //----------------------------- + if (file_op) { + std::fprintf(stderr," - Save control points in '%s'\n",cimg::basename(file_op)); + (points>'x').transpose().save(file_op); + } + if (file_oc) { + std::fprintf(stderr," - Save curve points in '%s'\n",cimg::basename(file_oc)); + (curve>'x').transpose().save(file_oc); + } + if (file_od) { + std::fprintf(stderr," - Computing distance function, please wait...."); std::fflush(stderr); + CImg<> ncurve = (closed?(+curve).insert(curve[0]):curve)>'x'; + const float zero = 0.0f, one = 1.0f; + CImg<> distance = + CImg<>(img0.width(),img0.height(),1,1,-1.0f).draw_line(ncurve,&zero).draw_fill(0,0,&one). + distance(0); + std::fprintf(stderr,"\n - Save distance function in '%s'\n",cimg::basename(file_od)); + distance.save(file_od); + } + + std::fprintf(stderr," - Exit.\n"); + std::exit(0); + return 0; +} diff --git a/examples/dtmri_view3d.cpp b/examples/dtmri_view3d.cpp new file mode 100644 index 000000000..d1636aa5a --- /dev/null +++ b/examples/dtmri_view3d.cpp @@ -0,0 +1,563 @@ +/* + # + # File : dtmri_view3d.cpp + # ( C++ source file ) + # + # Description : A viewer of Diffusion-Tensor MRI volumes (medical imaging). + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Compute fractional anisotropy (FA) of a tensor +//------------------------------------------- +template float get_FA(const T& val1, const T& val2, const T& val3) { + const float + l1 = val1>0?val1:0, l2 = val2>0?val2:0, l3 = val3>0?val3:0, + lm = (l1 + l2 + l3)/3, + tr2 = 2*(l1*l1 + l2*l2 + l3*l3), + ll1 = l1 - lm, + ll2 = l2 - lm, + ll3 = l3 - lm; + if (tr2>0) return (float)std::sqrt(3*(ll1*ll1 + ll2*ll2 + ll3*ll3)/tr2); + return 0; +} + +// Insert an ellipsoid in a CImg 3D scene +//---------------------------------------- +template +void insert_ellipsoid(const CImg& tensor, const float X, const float Y, const float Z, const float tfact, + const float vx, const float vy, const float vz, + CImgList& points, CImgList& faces, CImgList& colors, + const unsigned int res1=20, const unsigned int res2=20) { + + // Compute eigen elements + float l1 = tensor[0], l2 = tensor[1], l3 = tensor[2], fa = get_FA(l1,l2,l3); + CImg<> vec = CImg<>::matrix(tensor[3],tensor[6],tensor[9], + tensor[4],tensor[7],tensor[10], + tensor[5],tensor[8],tensor[11]); + const int + r = (int)std::min(30 + 1.5f*cimg::abs(255*fa*tensor[3]),255.0f), + g = (int)std::min(30 + 1.5f*cimg::abs(255*fa*tensor[4]),255.0f), + b = (int)std::min(30 + 1.5f*cimg::abs(255*fa*tensor[5]),255.0f); + + // Define mesh points + const unsigned int N0 = points.size(); + for (unsigned int v = 1; v::vector(X,Y,Z) + vec*CImg::vector(x,y,z)).mul(CImg::vector(vx,vy,vz))); + } + const unsigned int N1 = points.size(); + points.insert((CImg::vector(X,Y,Z) - vec*CImg::vector(0,0,l3*tfact))); + points.insert((CImg::vector(X,Y,Z) + vec*CImg::vector(0,0,l3*tfact))); + points[points.size() - 2](0)*=vx; points[points.size() - 2](1)*=vy; points[points.size() - 2](2)*=vz; + points[points.size() - 1](0)*=vx; points[points.size() - 1](1)*=vy; points[points.size() - 1](2)*=vz; + + // Define mesh triangles + for (unsigned int vv = 0; vv::vector(N0 + res1*vv + nu,N0 + res1*nv + uu,N0 + res1*vv + uu)); + faces.insert(CImg::vector(N0 + res1*vv + nu,N0 + res1*nv + nu,N0 + res1*nv + uu)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + } + for (unsigned int uu = 0; uu::vector(N0 + nu,N0 + uu,N1)); + faces.insert(CImg::vector(N0 + res1*(res2 - 2) + nu, N1 + 1,N0 + res1*(res2 - 2) + uu)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + colors.insert(CImg::vector((tc)r,(tc)g,(tc)b)); + } +} + +// Insert a fiber in a CImg 3D scene +//----------------------------------- +template +void insert_fiber(const CImg& fiber, const CImg& eigen, const CImg& palette, + const int xm, const int ym, const int zm, + const float vx, const float vy, const float vz, + CImgList& points, CImgList& primitives, CImgList& colors) { + const int N0 = points.size(); + float x0 = fiber(0,0), y0 = fiber(0,1), z0 = fiber(0,2), fa0 = eigen.linear_atXYZ(x0,y0,z0,12); + points.insert(CImg<>::vector(vx*(x0 -xm),vy*(y0 - ym),vz*(z0 - zm))); + for (int l = 1; l::vector(vx*(x1 - xm),vy*(y1 - ym),vz*(z1 - zm))); + primitives.insert(CImg::vector(N0 + l - 1,N0 + l)); + const unsigned char + icol = (unsigned char)(fa0*255), + r = palette(icol,0), + g = palette(icol,1), + b = palette(icol,2); + colors.insert(CImg::vector(r,g,b)); + x0 = x1; y0 = y1; z0 = z1; fa0 = fa1; + } +} + +// Compute fiber tracking using 4th-order Runge Kutta integration +//----------------------------------------------------------------- +template +CImg<> get_fibertrack(CImg& eigen, + const int X0, const int Y0, const int Z0, const float lmax=100, + const float dl=0.1f, const float FAmin=0.7f, const float cmin=0.5f) { +#define align_eigen(i,j,k) \ + { T &u = eigen(i,j,k,3), &v = eigen(i,j,k,4), &w = eigen(i,j,k,5); \ + if (u*cu + v*cv + w*cw<0) { u=-u; v=-v; w=-w; }} + + CImgList<> resf; + + // Forward tracking + float normU = 0, normpU = 0, l = 0, X = (float)X0, Y = (float)Y0, Z = (float)Z0; + T + pu = eigen(X0,Y0,Z0,3), + pv = eigen(X0,Y0,Z0,4), + pw = eigen(X0,Y0,Z0,5); + normpU = (float)std::sqrt(pu*pu + pv*pv + pw*pw); + bool stopflag = false; + + while (!stopflag) { + if (X<0 || X>eigen.width() - 1 || Y<0 || Y>eigen.height() - 1 || Z<0 || Z>eigen.depth() - 1 || + eigen((int)X,(int)Y,(int)Z,12)lmax) stopflag = true; + else { + resf.insert(CImg<>::vector(X,Y,Z)); + + const int + cx = (int)X, px = (cx - 1<0)?0:cx - 1, nx = (cx + 1>=eigen.width())?eigen.width() - 1:cx + 1, + cy = (int)Y, py = (cy - 1<0)?0:cy - 1, ny = (cy + 1>=eigen.height())?eigen.height() - 1:cy + 1, + cz = (int)Z, pz = (cz - 1<0)?0:cz - 1, nz = (cz + 1>=eigen.depth())?eigen.depth() - 1:cz + 1; + const T cu = eigen(cx,cy,cz,3), cv = eigen(cx,cy,cz,4), cw = eigen(cx,cy,cz,5); + + align_eigen(px,py,pz); align_eigen(cx,py,pz); align_eigen(nx,py,pz); + align_eigen(px,cy,pz); align_eigen(cx,cy,pz); align_eigen(nx,cy,pz); + align_eigen(px,ny,pz); align_eigen(cx,ny,pz); align_eigen(nx,ny,pz); + align_eigen(px,py,cz); align_eigen(cx,py,cz); align_eigen(nx,py,cz); + align_eigen(px,cy,cz); align_eigen(nx,cy,cz); + align_eigen(px,ny,cz); align_eigen(cx,ny,cz); align_eigen(nx,ny,cz); + align_eigen(px,py,nz); align_eigen(cx,py,nz); align_eigen(nx,py,nz); + align_eigen(px,cy,nz); align_eigen(cx,cy,nz); align_eigen(nx,cy,nz); + align_eigen(px,ny,nz); align_eigen(cx,ny,nz); align_eigen(nx,ny,nz); + + const T + u0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,3), + v0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,4), + w0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,5), + u1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,3), + v1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,4), + w1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,5), + u2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,3), + v2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,4), + w2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,5), + u3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,3), + v3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,4), + w3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,5); + T + u = u0/3 + 2*u1/3 + 2*u2/3 + u3/3, + v = v0/3 + 2*v1/3 + 2*v2/3 + v3/3, + w = w0/3 + 2*w1/3 + 2*w2/3 + w3/3; + if (u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + normU = (float)std::sqrt(u*u + v*v + w*w); + const float scal = (u*pu + v*pv + w*pw)/(normU*normpU); + if (scaleigen.width() - 1 || Y<0 || Y>eigen.height() - 1 || Z<0 || Z>eigen.depth() - 1 || + eigen((int)X,(int)Y,(int)Z,12)lmax) stopflag = true; + else { + + const int + cx = (int)X, px = (cx - 1<0)?0:cx - 1, nx = (cx + 1>=eigen.width())?eigen.width() - 1:cx + 1, + cy = (int)Y, py = (cy - 1<0)?0:cy - 1, ny = (cy + 1>=eigen.height())?eigen.height() - 1:cy + 1, + cz = (int)Z, pz = (cz - 1<0)?0:cz - 1, nz = (cz + 1>=eigen.depth())?eigen.depth() - 1:cz + 1; + const T cu = eigen(cx,cy,cz,3), cv = eigen(cx,cy,cz,4), cw = eigen(cx,cy,cz,5); + + align_eigen(px,py,pz); align_eigen(cx,py,pz); align_eigen(nx,py,pz); + align_eigen(px,cy,pz); align_eigen(cx,cy,pz); align_eigen(nx,cy,pz); + align_eigen(px,ny,pz); align_eigen(cx,ny,pz); align_eigen(nx,ny,pz); + align_eigen(px,py,cz); align_eigen(cx,py,cz); align_eigen(nx,py,cz); + align_eigen(px,cy,cz); align_eigen(nx,cy,cz); + align_eigen(px,ny,cz); align_eigen(cx,ny,cz); align_eigen(nx,ny,cz); + align_eigen(px,py,nz); align_eigen(cx,py,nz); align_eigen(nx,py,nz); + align_eigen(px,cy,nz); align_eigen(cx,cy,nz); align_eigen(nx,cy,nz); + align_eigen(px,ny,nz); align_eigen(cx,ny,nz); align_eigen(nx,ny,nz); + + const T + u0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,3), + v0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,4), + w0 = 0.5f*dl*eigen.linear_atXYZ(X,Y,Z,5), + u1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,3), + v1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,4), + w1 = 0.5f*dl*eigen.linear_atXYZ(X + u0,Y + v0,Z + w0,5), + u2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,3), + v2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,4), + w2 = 0.5f*dl*eigen.linear_atXYZ(X + u1,Y + v1,Z + w1,5), + u3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,3), + v3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,4), + w3 = 0.5f*dl*eigen.linear_atXYZ(X + u2,Y + v2,Z + w2,5); + T + u = u0/3 + 2*u1/3 + 2*u2/3 + u3/3, + v = v0/3 + 2*v1/3 + 2*v2/3 + v3/3, + w = w0/3 + 2*w1/3 + 2*w2/3 + w3/3; + if (u*pu + v*pv + w*pw<0) { u = -u; v = -v; w = -w; } + normU = (float)std::sqrt(u*u + v*v + w*w); + const float scal = (u*pu + v*pv + w*pw)/(normU*normpU); + if (scal::vector(X,Y,Z),0); + } + } + + return resf>'x'; +} + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read and init data + //-------------------- + cimg_usage("A viewer of Diffusion-Tensor MRI volumes."); + const char *file_i = cimg_option("-i",(char*)0,"Input : Filename of tensor field (volume wxhxdx6)"); + const char* vsize = cimg_option("-vsize","1x1x1","Input : Voxel aspect"); + const bool normalize = cimg_option("-normalize",true,"Input : Enable tensor normalization"); + const char *file_f = cimg_option("-f",(char*)0,"Input : Input fibers\n"); + const float dl = cimg_option("-dl",0.5f,"Fiber computation : Integration step"); + const float famin = cimg_option("-famin",0.3f,"Fiber computation : Fractional Anisotropy threshold"); + const float cmin = cimg_option("-cmin",0.2f,"Fiber computation : Curvature threshold"); + const float lmin = cimg_option("-lmin",10.0f,"Fiber computation : Minimum length\n"); + const float lmax = cimg_option("-lmax",1000.0f,"Fiber computation : Maximum length\n"); + const float tfact = cimg_option("-tfact",1.2f,"Display : Tensor size factor"); + const char *bgcolor = cimg_option("-bg","0,0,0","Display : Background color"); + unsigned int bgr = 0, bgg = 0, bgb = 0; + std::sscanf(bgcolor,"%u%*c%u%*c%u",&bgr,&bgg,&bgb); + + CImg<> tensors; + if (file_i) { + std::fprintf(stderr,"\n- Loading tensors '%s'",cimg::basename(file_i)); + tensors.load(file_i); + } else { + // Create a synthetic tensor field here + std::fprintf(stderr,"\n- No input files : Creating a synthetic tensor field"); + tensors.assign(32,32,32,6); + cimg_forXYZ(tensors,x,y,z) { + const float + u = x - tensors.width()/2.0f, + v = y - tensors.height()/2.0f, + w = z - tensors.depth()/2.0f, + norm = (float)std::sqrt(1e-5f + u*u + v*v + w*w), + nu = u/norm, nv = v/norm, nw = w/norm; + const CImg<> + dir1 = CImg<>::vector(nu,nv,nw), + dir2 = CImg<>::vector(-nv,nu,nw), + dir3 = CImg<>::vector(nw*(nv - nu),-nw*(nu + nv),nu*nu + nv*nv); + tensors.set_tensor_at(2.0*dir1*dir1.get_transpose() + + 1.0*dir2*dir2.get_transpose() + + 0.7*dir3*dir3.get_transpose(), + x,y,z); + } + } + float voxw = 1, voxh = 1, voxd = 1; + std::sscanf(vsize,"%f%*c%f%*c%f",&voxw,&voxh,&voxd); + + std::fprintf(stderr," : %ux%ux%u image, voxsize=%gx%gx%g.", + tensors.width(),tensors.height(),tensors.depth(), + voxw,voxh,voxd); + + CImgList<> fibers; + if (file_f) { + std::fprintf(stderr,"\n- Loading fibers '%s'.",cimg::basename(file_f)); + fibers.load(file_f); + } + + const CImg fiber_palette = + CImg<>(2,1,1,3).fill(200,255,0,255,0,200).RGBtoHSV().resize(256,1,1,3,3).HSVtoRGB(); + + // Compute eigen elements + //------------------------ + std::fprintf(stderr,"\n- Compute eigen elements."); + CImg coloredFA(tensors.width(),tensors.height(),tensors.depth(),3); + CImg<> eigen(tensors.width(),tensors.height(),tensors.depth(),13); + CImg<> val,vec; + float eigmax = 0; + cimg_forXYZ(tensors,x,y,z) { + tensors.get_tensor_at(x,y,z).symmetric_eigen(val,vec); + eigen(x,y,z,0) = val[0]; eigen(x,y,z,1) = val[1]; eigen(x,y,z,2) = val[2]; + if (val[0]<0) val[0] = 0; + if (val[1]<0) val[1] = 0; + if (val[2]<0) val[2] = 0; + if (val[0]>eigmax) eigmax = val[0]; + eigen(x,y,z,3) = vec(0,0); eigen(x,y,z,4) = vec(0,1); eigen(x,y,z,5) = vec(0,2); + eigen(x,y,z,6) = vec(1,0); eigen(x,y,z,7) = vec(1,1); eigen(x,y,z,8) = vec(1,2); + eigen(x,y,z,9) = vec(2,0); eigen(x,y,z,10) = vec(2,1); eigen(x,y,z,11) = vec(2,2); + const float fa = get_FA(val[0],val[1],val[2]); + eigen(x,y,z,12) = fa; + const int + r = (int)std::min(255.0f,1.5f*cimg::abs(255*fa*vec(0,0))), + g = (int)std::min(255.0f,1.5f*cimg::abs(255*fa*vec(0,1))), + b = (int)std::min(255.0f,1.5f*cimg::abs(255*fa*vec(0,2))); + coloredFA(x,y,z,0) = (unsigned char)r; + coloredFA(x,y,z,1) = (unsigned char)g; + coloredFA(x,y,z,2) = (unsigned char)b; + } + tensors.assign(); + std::fprintf(stderr,"\n- Maximum diffusivity = %g, Maximum FA = %g",eigmax,eigen.get_shared_channel(12).max()); + if (normalize) { + std::fprintf(stderr,"\n- Normalize tensors."); + eigen.get_shared_channels(0,2)/=eigmax; + } + + // Init display and begin user interaction + //----------------------------------------- + std::fprintf(stderr,"\n- Open user window."); + CImgDisplay disp(256,256,"DTMRI Viewer",0); + CImgDisplay disp3d(800,600,"3D Local View",0,false,true); + unsigned int XYZ[3]; + XYZ[0] = eigen.width()/2; XYZ[1] = eigen.height()/2; XYZ[2] = eigen.depth()/2; + + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + const CImg s = coloredFA.get_select(disp,2,XYZ); + if (!disp.is_closed()) switch (disp.key()) { + + // Open 3D visualization window + //----------------------------- + case cimg::keyA : + case 0 : { + const unsigned char white[] = { 255 }; + disp3d.display(CImg(disp3d.width(),disp3d.height(),1,1,0). + draw_text(10,10,"Please wait...",white)).show(); + + int xm, ym, zm, xM, yM, zM; + if (!disp.key()) { xm = s[0]; ym = s[1]; zm = s[2]; xM = s[3]; yM = s[4]; zM = s[5]; } + else { xm = ym = zm = 0; xM = eigen.width() - 1; yM = eigen.height() - 1; zM = eigen.height() - 1; } + const CImg<> img = eigen.get_crop(xm,ym,zm,xM,yM,zM); + CImgList<> points; + CImgList primitives; + CImgList colors; + + // Add ellipsoids to the 3D scene + int X = img.width()/2, Y = img.height()/2, Z = img.depth()/2; + cimg_forXY(img,x,y) + insert_ellipsoid(img.get_vector_at(x,y,Z),(float)x,(float)y,(float)Z, + tfact,voxw,voxh,voxd,points,primitives,colors,10,6); + cimg_forXZ(img,x,z) + insert_ellipsoid(img.get_vector_at(x,Y,z),(float)x,(float)Y,(float)z, + tfact,voxw,voxh,voxd,points,primitives,colors,10,6); + cimg_forYZ(img,y,z) + insert_ellipsoid(img.get_vector_at(X,y,z),(float)X,(float)y,(float)z, + tfact,voxw,voxh,voxd,points,primitives,colors,10,6); + + // Add computed fibers to the 3D scene + const CImg<> veigen = eigen.get_crop(xm,ym,zm,xM,yM,zM); + cimglist_for(fibers,l) { + const CImg<>& fiber = fibers[l]; + if (fiber.width()) insert_fiber(fiber,eigen,fiber_palette, + xm,ym,zm,voxw,voxh,voxd, + points,primitives,colors); + } + + // Display 3D object + CImg visu = CImg(3,disp3d.width(),disp3d.height(),1,0). + fill((unsigned char)bgr,(unsigned char)bgg,(unsigned char)bgb). + permute_axes("yzcx"); + bool stopflag = false; + while (!disp3d.is_closed() && !stopflag) { + const CImg<> pts = points>'x'; + visu.display_object3d(disp3d,pts,primitives,colors,true,4,-1,false,800,0.05f,1.0f); + disp3d.close(); + switch (disp3d.key()) { + case cimg::keyM : { // Create movie + std::fprintf(stderr,"\n- Movie mode.\n"); + const unsigned int N = 256; + CImg<> cpts(pts); + const CImg<> x = pts.get_shared_row(0), y = pts.get_shared_row(1), z = pts.get_shared_row(2); + float + _xm, _xM = x.max_min(_xm), + _ym, _yM = y.max_min(_ym), + _zm, _zM = z.max_min(_zm), + ratio = 2.0f*std::min(visu.width(),visu.height())/(3.0f*cimg::max(_xM - _xm,_yM - _ym,_zM - _zm)), + dx = 0.5f*(_xM + _xm), dy = 0.5f*(_yM + _ym), dz = 0.5f*(_zM + _zm); + cimg_forX(pts,l) { + cpts(l,0) = (pts(l,0) - dx)*ratio; + cpts(l,1) = (pts(l,1) - dy)*ratio; + cpts(l,2) = (pts(l,2) - dz)*ratio; + } + + for (unsigned int i=0; i rpts = CImg<>::rotation_matrix(0,1,0,alpha)*CImg<>::rotation_matrix(1,0,0,75)*cpts; + visu.fill(0).draw_object3d(visu.width()/2.0f,visu.height()/2.0f,-500.0f,rpts,primitives,colors, + 4,false,800.0f,visu.width()/2.0f,visu.height()/2.0f,-800.0f,0.05f,1.0f). + display(disp3d); + visu.save("frame.png",i); + } + visu.fill(0); + } break; + default: stopflag = true; + } + } + if (disp3d.is_fullscreen()) disp3d.toggle_fullscreen().resize(800,600).close(); + } break; + + // Compute region statistics + //--------------------------- + case cimg::keyR : { + std::fprintf(stderr,"\n- Statistics computation. Select region."); std::fflush(stderr); + const CImg sel = coloredFA.get_select(disp,2,XYZ); + int xm, ym, zm, xM, yM, zM; + if (!disp.key()) { xm = sel[0]; ym = sel[1]; zm = sel[2]; xM = sel[3]; yM = sel[4]; zM = sel[5]; } + else { xm = ym = zm = 0; xM = eigen.width() - 1; yM = eigen.height() - 1; zM = eigen.height() - 1; } + const CImg<> img = eigen.get_crop(xm,ym,zm,xM,yM,zM); + std::fprintf(stderr,"\n- Mean diffusivity = %g, Mean FA = %g\n", + eigen.get_shared_channel(0).mean(), + eigen.get_shared_channel(12).mean()); + } break; + + // Track fiber bundle (single region) + //---------------------------------- + case cimg::keyF : { + std::fprintf(stderr,"\n- Tracking mode (single region). Select starting region.\n"); std::fflush(stderr); + const CImg sel = coloredFA.get_select(disp,2,XYZ); + const unsigned int N = fibers.size(); + for (int z = sel[2]; z<=sel[5]; ++z) + for (int y = sel[1]; y<=sel[4]; ++y) + for (int x = sel[0]; x<=sel[3]; ++x) { + const CImg<> fiber = get_fibertrack(eigen,x,y,z,lmax,dl,famin,cmin); + if (fiber.width()>lmin) { + std::fprintf(stderr,"\rFiber %u : Starting from (%d,%d,%d)\t\t",fibers.size(),x,y,z); + fibers.insert(fiber); + } + } + std::fprintf(stderr,"\n- %u fiber(s) added (total %u).",fibers.size() - N,fibers.size()); + } break; + + // Track fiber bundle (double regions) + //------------------------------------ + case cimg::keyG : { + std::fprintf(stderr,"\n- Tracking mode (double region). Select starting region."); std::fflush(stderr); + const CImg sel = coloredFA.get_select(disp,2,XYZ); + std::fprintf(stderr," Select ending region."); std::fflush(stderr); + const CImg nsel = coloredFA.get_select(disp,2,XYZ); + const unsigned int N = fibers.size(); + + // Track from start to end + for (int z = sel[2]; z<=sel[5]; ++z) + for (int y = sel[1]; y<=sel[4]; ++y) + for (int x = sel[0]; x<=sel[3]; ++x) { + const CImg<> fiber = get_fibertrack(eigen,x,y,z,lmax,dl,famin,cmin); + if (fiber.width()>lmin) { + bool valid_fiber = false; + cimg_forX(fiber,k) { + const int fx = (int)fiber(k,0), fy = (int)fiber(k,1), fz = (int)fiber(k,2); + if (fx>=nsel[0] && fx<=nsel[3] && + fy>=nsel[1] && fy<=nsel[4] && + fz>=nsel[2] && fz<=nsel[5]) valid_fiber = true; + } + if (valid_fiber) fibers.insert(fiber); + } + } + + // Track from end to start + for (int z = nsel[2]; z<=nsel[5]; ++z) + for (int y = nsel[1]; y<=nsel[4]; ++y) + for (int x = nsel[0]; x<=nsel[3]; ++x) { + const CImg<> fiber = get_fibertrack(eigen,x,y,z,lmax,dl,famin,cmin); + if (fiber.width()>lmin) { + bool valid_fiber = false; + cimg_forX(fiber,k) { + const int fx = (int)fiber(k,0), fy = (int)fiber(k,1), fz = (int)fiber(k,2); + if (fx>=sel[0] && fx<=sel[3] && + fy>=sel[1] && fy<=sel[4] && + fz>=sel[2] && fz<=sel[5]) valid_fiber = true; + } + if (valid_fiber) { + std::fprintf(stderr,"\rFiber %u : Starting from (%d,%d,%d)\t\t",fibers.size(),x,y,z); + fibers.insert(fiber); + } + } + } + + std::fprintf(stderr," %u fiber(s) added (total %u).",fibers.size() - N,fibers.size()); + } break; + + // Clear fiber bundle + //------------------- + case cimg::keyC : { + std::fprintf(stderr,"\n- Fibers removed."); + fibers.assign(); + } break; + + // Save fibers + //------------- + case cimg::keyS : { + fibers.save("fibers.cimg"); + std::fprintf(stderr,"\n- Fibers saved."); + } break; + + } + } + + std::fprintf(stderr,"\n- Exit.\n\n\n"); + return 0; +} diff --git a/examples/edge_explorer2d.cpp b/examples/edge_explorer2d.cpp new file mode 100644 index 000000000..9d32ece44 --- /dev/null +++ b/examples/edge_explorer2d.cpp @@ -0,0 +1,218 @@ +/* + # + # File : edge_explorer2d.cpp + # ( C++ source file ) + # + # Description : Real time edge detection while moving a ROI + # (rectangle of interest) over the original image. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Orges Leka + # ( oleka(at)students.uni-mainz.de ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc, char** argv) { + + // Usage of the program displayed at the command line + cimg_usage("Real time edge detection with CImg. (c) Orges Leka"); + + // Read command line arguments + // With cimg_option we can get a new name for the image which is to be loaded from the command line. + const char* img_name = cimg_option("-i", cimg_imagepath "parrot.ppm","Input image."); + double + alpha = cimg_option("-a",1.0,"Blurring the gradient image."), + thresL = cimg_option("-tl",13.5,"Lower thresholding used in Hysteresis."), + thresH = cimg_option("-th",13.6,"Higher thresholding used in Hysteresis."); + const unsigned int + mode = cimg_option("-m",1,"Detection mode: 1 = Hysteresis, 2 = Gradient angle."), + factor = cimg_option("-s",80,"Half-size of edge-explorer window."); + + cimg_help("\nAdditional notes : user can press following keys on main display window :\n" + " - Left arrow : Decrease alpha.\n" + " - Right arrow : Increase alpha.\n"); + + // Construct a new image called 'edge' of size (2*factor,2*factor) + // and of type 'unsigned char'. + CImg edge(2*factor,2*factor); + CImgDisplay disp_edge(512,512,"Edge Explorer"); + + // Load the image with the name 'img_name' into the CImg 'img'. + // and create a display window 'disp' for the image 'img'. + const CImg img = CImg::get_load(img_name).norm().normalize(0,255); + CImgDisplay disp(img,"Original Image"); + + // Begin main interaction loop. + int x = 0, y = 0; + bool redraw = false; + while (!disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC()) { + disp.wait(100); + if (disp.button()&1) { alpha+=0.05; redraw = true; } + if (disp.button()&2) { alpha-=0.05; redraw = true; } + if (disp.wheel()) { alpha+=0.05*disp.wheel(); disp.set_wheel(); redraw = true; } + if (alpha<0) alpha = 0; + if (disp_edge.is_resized()) { disp_edge.resize(); redraw = true; } + if (disp_edge.is_closed()) disp_edge.show(); + if (disp.is_resized()) disp.resize(disp); + if (disp.mouse_x()>=0) { + x = disp.mouse_x(); // Getting the current position of the mouse + y = disp.mouse_y(); // + redraw = true; // The image should be redrawn + } + if (redraw) { + disp_edge.set_title("Edge explorer (alpha=%g)",alpha); + const int + x0 = x - factor, y0 = y - factor, // These are the coordinates for the red rectangle + x1 = x + factor, y1 = y + factor; // to be drawn on the original image + const unsigned char + red[3] = { 255,0,0 }, // + black[3] = { 0,0,0 }; // Defining the colors we need for drawing + + (+img).draw_rectangle(x0,y0,x1,y1,red,1.0f,0x55555555U).display(disp); + //^ We draw the red rectangle on the original window using 'draw_line'. + // Then we display the result via '.display(disp)' . + // Observe, that the color 'red' has to be of type 'const unsigned char', + // since the image 'img' is of type 'const CImg'. + + //'normalize' is used to get a greyscaled image. + CImg<> visu_bw = CImg<>(img).get_crop(x0,y0,x1,y1).get_norm().normalize(0,255).resize(-100,-100,1,2,2); + // get_crop(x0,y0,x1,y1) gets the rectangle we are interested in. + + edge.fill(255); // Background color in the edge-detection window is white + + // grad[0] is the gradient image of 'visu_bw' in x-direction. + // grad[1] is the gradient image of 'visu_bw' in y-direction. + CImgList<> grad(visu_bw.blur((float)alpha).normalize(0,255).get_gradient()); + + // To avoid unnecessary calculations in the image loops: + const double + pi = cimg::PI, + p8 = pi/8.0, p38 = 3.0*p8, + p58 = 5.0*p8, p78 = 7.0*p8; + + cimg_forXY(visu_bw,s,t) { + // We take s,t instead of x,y, since x,y are already used. + // s corresponds to the x-ordinate of the pixel while t corresponds to the y-ordinate. + if ( 1 <= s && s <= visu_bw.width() - 1 && 1 <= t && t <=visu_bw.height() - 1) { // if - good points + double + Gs = grad[0](s,t), // + Gt = grad[1](s,t), // The actual pixel is (s,t) + Gst = cimg::abs(Gs) + cimg::abs(Gt), // + // ^-- For efficient computation we observe that |Gs|+ |Gt| ~=~ sqrt( Gs^2 + Gt^2) + Gr, Gur, Gu, Gul, Gl, Gdl, Gd, Gdr; + // ^-- right, up right, up, up left, left, down left, down, down right. + double theta = std::atan2(std::max(1e-8,Gt),Gs) + pi; // theta is from the interval [0,Pi] + switch(mode) { + case 1: // Hysterese is applied + if (Gst>=thresH) { edge.draw_point(s,t,black); } + else if (thresL <= Gst && Gst < thresH) { + // Neighbourhood of the actual pixel: + Gr = cimg::abs(grad[0](s + 1,t)) + cimg::abs(grad[1](s + 1,t)); // right + Gl = cimg::abs(grad[0](s - 1,t)) + cimg::abs(grad[1](s - 1,t)); // left + Gur = cimg::abs(grad[0](s + 1,t + 1)) + cimg::abs(grad[1](s + 1,t + 1)); // up right + Gdl = cimg::abs(grad[0](s - 1,t - 1)) + cimg::abs(grad[1](s - 1,t - 1)); // down left + Gu = cimg::abs(grad[0](s,t + 1)) + cimg::abs(grad[1](s,t + 1)); // up + Gd = cimg::abs(grad[0](s,t - 1)) + cimg::abs(grad[1](s,t - 1)); // down + Gul = cimg::abs(grad[0](s - 1,t + 1)) + cimg::abs(grad[1](s - 1,t + 1)); // up left + Gdr = cimg::abs(grad[0](s + 1,t - 1)) + cimg::abs(grad[1](s + 1,t - 1)); // down right + if (Gr>=thresH || Gur>=thresH || Gu>=thresH || Gul>=thresH + || Gl>=thresH || Gdl >=thresH || Gu >=thresH || Gdr >=thresH) { + edge.draw_point(s,t,black); + } + }; + break; + case 2: // Angle 'theta' of the gradient (Gs,Gt) at the point (s,t) + if(theta >= pi)theta-=pi; + //rounding theta: + if ((p8 < theta && theta <= p38 ) || (p78 < theta && theta <= pi)) { + // See (*) below for explanation of the vocabulary used. + // Direction-pixel is (s + 1,t) with corresponding gradient value Gr. + Gr = cimg::abs(grad[0](s + 1,t)) + cimg::abs(grad[1](s + 1,t)); // right + // Contra-direction-pixel is (s - 1,t) with corresponding gradient value Gl. + Gl = cimg::abs(grad[0](s - 1,t)) + cimg::abs(grad[1](s - 1,t)); // left + if (Gr < Gst && Gl < Gst) { + edge.draw_point(s,t,black); + } + } + else if ( p8 < theta && theta <= p38) { + // Direction-pixel is (s + 1,t + 1) with corresponding gradient value Gur. + Gur = cimg::abs(grad[0](s + 1,t + 1)) + cimg::abs(grad[1](s + 1,t + 1)); // up right + // Contra-direction-pixel is (s-1,t-1) with corresponding gradient value Gdl. + Gdl = cimg::abs(grad[0](s - 1,t - 1)) + cimg::abs(grad[1](s - 1,t - 1)); // down left + if (Gur < Gst && Gdl < Gst) { + edge.draw_point(s,t,black); + } + } + else if ( p38 < theta && theta <= p58) { + // Direction-pixel is (s,t + 1) with corresponding gradient value Gu. + Gu = cimg::abs(grad[0](s,t + 1)) + cimg::abs(grad[1](s,t + 1)); // up + // Contra-direction-pixel is (s,t - 1) with corresponding gradient value Gd. + Gd = cimg::abs(grad[0](s,t - 1)) + cimg::abs(grad[1](s,t - 1)); // down + if (Gu < Gst && Gd < Gst) { + edge.draw_point(s,t,black); + } + } + else if (p58 < theta && theta <= p78) { + // Direction-pixel is (s - 1,t + 1) with corresponding gradient value Gul. + Gul = cimg::abs(grad[0](s - 1,t + 1)) + cimg::abs(grad[1](s - 1,t + 1)); // up left + // Contra-direction-pixel is (s + 1,t - 1) with corresponding gradient value Gdr. + Gdr = cimg::abs(grad[0](s + 1,t - 1)) + cimg::abs(grad[1](s + 1,t - 1)); // down right + if (Gul < Gst && Gdr < Gst) { + edge.draw_point(s,t,black); + } + }; + break; + } // switch + } // if good-points + } // cimg_forXY */ + edge.display(disp_edge); + }// if redraw + } // while + return 0; +} + +// (*) Comments to the vocabulary used: +// If (s,t) is the current pixel, and G=(Gs,Gt) is the gradient at (s,t), +// then the _direction_pixel_ of (s,t) shall be the one of the eight neighbour pixels +// of (s,t) in whose direction the gradient G shows. +// The _contra_direction_pixel is the pixel in the opposite direction in which the gradient G shows. +// The _corresponding_gradient_value_ of the pixel (x,y) with gradient G = (Gx,Gy) +// shall be |Gx| + |Gy| ~=~ sqrt(Gx^2 + Gy^2). diff --git a/examples/fade_images.cpp b/examples/fade_images.cpp new file mode 100644 index 000000000..d11bafc43 --- /dev/null +++ b/examples/fade_images.cpp @@ -0,0 +1,94 @@ +/* + # + # File : fade_images.cpp + # ( C++ source file ) + # + # Description : Compute a linear fading between two images. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif +#undef min +#undef max + +// Main procedure +//--------------- +int main(int argc,char **argv) { + + // Read and check command line parameters. + cimg_usage("Compute a linear fading between two 2D images"); + const char *file_i1 = cimg_option("-i1",cimg_imagepath "sh0r.pgm","Input Image 1"); + const char *file_i2 = cimg_option("-i2",cimg_imagepath "milla.bmp","Input Image 2"); + const char *file_o = cimg_option("-o",(char*)0,"Output Image"); + const bool visu = cimg_option("-visu",true,"Visualization mode"); + const double pmin = cimg_option("-min",40.0,"Begin of the fade (in %)")/100.0; + const double pmax = cimg_option("-max",60.0,"End of the fade (in %)")/100.0; + const double angle = cimg_option("-angle",0.0,"Fade angle")*cil::cimg::PI/180; + + // Init images. + cil::CImg img1(file_i1), img2(file_i2); + if (!img2.is_sameXYZC(img1)) { + int + dx = std::max(img1.width(),img2.width()), + dy = std::max(img1.height(),img2.height()), + dz = std::max(img1.depth(),img2.depth()), + dv = std::max(img1.spectrum(),img2.spectrum()); + img1.resize(dx,dy,dz,dv,3); + img2.resize(dx,dy,dz,dv,3); + } + cil::CImg dest(img1); + + // Compute the faded image. + const double ca = std::cos(angle), sa = std::sin(angle); + double alpha; + cimg_forXYZC(dest,x,y,z,k) { + const double X = ((double)x/img1.width() - 0.5)*ca + ((double)y/img1.height() - 0.5)*sa; + if (X + 0.5pmax) alpha = 1; else + alpha = (X + 0.5 - pmin)/(pmax - pmin); + } + dest(x,y,z,k) = (unsigned char)((1 - alpha)*img1(x,y,z,k) + alpha*img2(x,y,z,k)); + } + + // Save and exit + if (file_o) dest.save(file_o); + if (visu) dest.display("Image fading"); + return 0; +} diff --git a/examples/gaussian_fit1d.cpp b/examples/gaussian_fit1d.cpp new file mode 100644 index 000000000..bfcce568d --- /dev/null +++ b/examples/gaussian_fit1d.cpp @@ -0,0 +1,172 @@ +/* + # + # File : gaussian_fit1d.cpp + # ( C++ source file ) + # + # Description : Fit a gaussian function on a set of sample points, + # using the Levenberg-Marquardt algorithm. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin +#define cimg_plugin "examples/gaussian_fit1d.cpp" +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Fit gaussian function on sample points, using Levenberg-Marquardt algorithm."); + + // Read command line arguments. + const char *s_params = cimg_option("-p","10,3,4","Amplitude, Mean and Std of the ground truth"); + const unsigned int s_nb = cimg_option("-N",40,"Number of sample points"); + const float s_noise = cimg_option("-n",10.0f,"Pourcentage of noise on the samples points"); + const char *s_xrange = cimg_option("-x","-10,10","X-range allowed for the sample points"); + const char *f_params = cimg_option("-p0",(char*)0,"Amplitude, Mean and Std of the first estimate"); + const float f_lambda0 = cimg_option("-l",100.0f,"Initial damping factor"); + const float f_dlambda = cimg_option("-dl",0.9f,"Damping attenuation"); + float s_xmin = -10, s_xmax = 10, s_amp = 1, s_mean = 1, s_std = 1; + std::sscanf(s_xrange,"%f%*c%f",&s_xmin,&s_xmax); + std::sscanf(s_params,"%f%*c%f%*c%f",&s_amp,&s_mean,&s_std); + + // Create noisy samples of a Gaussian function. + const float s_std2 = 2*s_std*s_std, s_fact = s_amp/((float)std::sqrt(2*cimg::PI)*s_std); + CImg<> samples(s_nb,2); + cimg_forX(samples,i) { + const float + x = (float)(s_xmin + (s_xmax - s_xmin)*cimg::rand()), + y = s_fact*(float)(1 + s_noise*cimg::grand()/100)*std::exp(-cimg::sqr(x - s_mean)/s_std2); + samples(i,0) = x; + samples(i,1) = y; + } + + // Fit Gaussian function on the sample points and display curve iterations. + CImgDisplay disp(640,480,"Levenberg-Marquardt Gaussian Fitting",0); + float f_amp = 1, f_mean = 1, f_std = 1, f_lambda = f_lambda0; + if (f_params) std::sscanf(f_params,"%f%*c%f%*c%f",&f_amp,&f_mean,&f_std); + else { + const float& vmax = samples.get_shared_row(1).max(); + float cmax = 0; samples.contains(vmax,cmax); + f_mean = samples((int)cmax,0); + f_std = (s_xmax - s_xmin)/10; + f_amp = vmax*(float)std::sqrt(2*cimg::PI)*f_std; + } + CImg<> beta = CImg<>::vector(f_amp,f_mean,f_std); + for (unsigned int iter = 0; !disp.is_closed() && !disp.is_keyQ() && !disp.is_keyESC(); ++iter) { + + // Do one iteration of the Levenberg-Marquardt algorithm. + CImg<> YmF(1,s_nb), J(beta.height(),s_nb); + const float + _f_amp = beta(0), _f_mean = beta(1), _f_std = beta(2), + _f_std2 = 2*_f_std*_f_std, _f_fact = (float)std::sqrt(2*cimg::PI)*_f_std; + float _f_error = 0; + cimg_forY(J,i) { + const float + x = samples(i,0), + _f_exp = std::exp(-cimg::sqr(x - _f_mean)/_f_std2), + delta = samples(i,1) - _f_amp*_f_exp/_f_fact; + YmF(i) = delta; + J(0,i) = _f_exp/_f_fact; + J(1,i) = _f_amp*_f_exp/_f_fact*(x - _f_mean)*2/_f_std2; + J(2,i) = _f_amp*_f_exp/_f_fact*(cimg::sqr(x - _f_mean)/(_f_std*_f_std*_f_std)); + _f_error+=cimg::sqr(delta); + } + + CImg<> Jt = J.get_transpose(), M = Jt*J; + cimg_forX(M,x) M(x,x)*=1 + f_lambda; + beta+=M.get_invert()*Jt*YmF; + if (beta(0)<=0) beta(0) = 0.1f; + if (beta(2)<=0) beta(2) = 0.1f; + f_lambda*=f_dlambda; + + // Display fitting curves. + const unsigned char black[] = { 0,0,0 }, gray[] = { 228,228,228 }; + CImg(disp.width(),disp.height(),1,3,255). + draw_gaussfit(samples,beta(0),beta(1),beta(2),s_amp,s_mean,s_std). + draw_rectangle(5,7,150,100,gray,0.9f).draw_rectangle(5,7,150,100,black,1,~0U). + draw_text(10,10,"Iteration : %d",black,0,1,13,iter). + draw_text(10,25,"Amplitude : %.4g (%.4g)",black,0,1,13,beta(0),s_amp). + draw_text(10,40,"Mean : %.4g (%.4g)",black,0,1,13,beta(1),s_mean). + draw_text(10,55,"Std : %.4g (%.4g)",black,0,1,13,beta(2),s_std). + draw_text(10,70,"Error : %.4g",black,0,1,13,std::sqrt(_f_error)). + draw_text(10,85,"Lambda : %.4g",black,0,1,13,f_lambda). + display(disp.resize(false).wait(20)); + } + + return 0; +} + +#else + +// Draw sample points, ideal and fitted gaussian curves on the instance image. +// (defined as a CImg plug-in function). +template +CImg& draw_gaussfit(const CImg& samples, + const float f_amp, const float f_mean, const float f_std, + const float i_amp, const float i_mean, const float i_std) { + if (is_empty()) return *this; + const unsigned char black[] = { 0,0,0 }, green[] = { 10,155,20 }, orange[] = { 155,20,0 }, purple[] = { 200,10,200 }; + float + xmin, xmax = samples.get_shared_row(0).max_min(xmin), deltax = xmax - xmin, + ymin, ymax = samples.get_shared_row(1).max_min(ymin), deltay = ymax - ymin; + xmin-=0.2f*deltax; xmax+=0.2f*deltax; ymin-=0.2f*deltay; ymax+=0.2f*deltay; + deltax = xmax - xmin; deltay = ymax - ymin; + draw_grid(64,64,0,0,false,false,black,0.3f,0x55555555,0x55555555).draw_axes(xmin,xmax,ymax,ymin,black,0.8f); + CImg<> nsamples(samples); + (nsamples.get_shared_row(0)-=xmin)*=width()/deltax; + (nsamples.get_shared_row(1)-=ymax)*=-height()/deltay; + cimg_forX(nsamples,i) draw_circle((int)nsamples(i,0),(int)nsamples(i,1),3,orange,1,~0U); + CImg truth(width(),2), fit(width(),2); + const float + i_std2 = 2*i_std*i_std, i_fact = i_amp/((float)std::sqrt(2*cimg::PI)*i_std), + f_std2 = 2*f_std*f_std, f_fact = f_amp/((float)std::sqrt(2*cimg::PI)*f_std); + cimg_forX(*this,x) { + const float + x0 = xmin + x*deltax/width(), + ys0 = i_fact*std::exp(-cimg::sqr(x0 - i_mean)/i_std2), + yf0 = f_fact*std::exp(-cimg::sqr(x0 - f_mean)/f_std2); + fit(x,0) = truth(x,0) = x; + truth(x,1) = (int)((ymax - ys0)*height()/deltay); + fit(x,1) = (int)((ymax - yf0)*height()/deltay); + } + return draw_line(truth,green,0.7f,0xCCCCCCCC).draw_line(fit,purple); +} + +#endif diff --git a/examples/generate_loop_macros.cpp b/examples/generate_loop_macros.cpp new file mode 100644 index 000000000..7f8feb2e9 --- /dev/null +++ b/examples/generate_loop_macros.cpp @@ -0,0 +1,353 @@ +/* + # + # File : generate_loop_macros.cpp + # ( C++ source file ) + # + # Description : Generate C++ macros to deal with MxN[xP] neighborhood + # loops within the CImg Library. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; + +// Generate macro(s) 'cimg_forN(i,bound)' +//---------------------------------------- +void generate_forN(const unsigned int N) { + if (N>=2) { + const unsigned int Nn = N/2, Np = Nn - ((N + 1)%2); + std::printf("#define cimg_for%u(bound,i) for (int i = 0, \\\n",N); + for (unsigned int k = 0; k=(int)(bound)?(int)(bound) - 1:%u%c \\\n",k,k,k,k==Nn?';':','); + std::printf(" _n%u##i<(int)(bound) || ",Nn); + for (unsigned int k = Nn - 1; k>=1; --k) std::printf("_n%u##i==--_n%u##i || ",k,k + 1); + std::printf("\\\n i==("); + for (unsigned int k = Nn; k>=2; --k) std::printf("_n%u##i = ",k); + std::printf("--_n1##i); \\\n "); + for (unsigned int k = Np; k>=2; --k) std::printf("_p%u##i = _p%u##i, ",k,k - 1); + if (Np) std::printf("_p1##i = i++, \\\n "); + else std::printf(" ++i, "); + for (unsigned int k = 1; k=2) { + const unsigned int Nn = N/2, Np = Nn - ((N + 1)%2); + std::printf("#define cimg_for_in%u(bound,i0,i1,i) for (int i = (int)(i0)<0?0:(int)(i0), \\\n",N); + for (unsigned int k = 0; k=(int)(bound)?(int)(bound) - 1:i + %u%c \\\n",k,k,k,k==Nn?';':','); + std::printf(" i<=(int)(i1) && (_n%u##i<(int)(bound) || ",Nn); + for (unsigned int k = Nn - 1; k>=1; --k) std::printf("_n%u##i==--_n%u##i || ",k,k + 1); + std::printf("\\\n i==("); + for (unsigned int k = Nn; k>=2; --k) std::printf("_n%u##i = ",k); + std::printf("--_n1##i)); \\\n "); + for (unsigned int k = Np; k>=2; --k) std::printf("_p%u##i = _p%u##i, ",k,k - 1); + if (Np) std::printf("_p1##i = i++, \\\n "); + else std::printf(" ++i, "); + for (unsigned int k = 1; k1) std::printf("#define cimg_for%ux%ux%u(img,x,y,z,c,I,T) \\\n cimg_for%u((img)._depth,z)",M,N,P,P); + else std::printf("#define cimg_for%ux%u(img,x,y,z,c,I,T) \\\n",M,N); + if (N>1) std::printf(" cimg_for%u((img)._height,y) ",N); + else std::printf(" cimg_forY(img,y) "); + + std::printf("for (int x = 0%c \\\n",M>1?',':';'); + for (int k = Mp; k>=1; --k) std::printf(" _p%u##x = 0%s",k,k==1?", \\\n":","); + for (int k = 1; k=((img)._width)?(img).width() - 1:%u, \\\n",k,k,k); + + if (M>1) { + std::printf(" _n%u##x = (int)( \\\n ",Mn); + for (int k = 0, z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) { + for (int x = -Mp; x<=0; ++x) { std::printf("%sI[%d] =",k && x==-Mp?" (":(x==-Mp?"(":" "),k); ++k; } + k+=Mn; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (T)(img)(0,%sy,%sz,c))%s",indy,indz,k>=last?",":", \\\n"); + } + + std::printf(" \\\n"); + for (int x = 1; x0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(_n%d##x,%sy,%sz,c)), \\\n",(Mp + x) + (y + Np)*M + (z + Pp)*M*N,x,indy,indz); + } + std::printf(" %u>=((img)._width)?(img).width() - 1:%u); \\\n",Mn,Mn); + } + + if (M>1) std::printf(" (_n%u##x",Mn); else std::printf(" (x"); + std::printf("<(img).width() && ( \\\n"); + + for (int z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) { + if (M>1) std::sprintf(indx,"_n%d##",Mn); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(%sx,%sy,%sz,c))%s",M - 1 + (y + Np)*M + (z + Pp)*M*N,indx,indy,indz, + z==Pn && y==Nn?",1))":", \\\n"); + } + + if (M>1) { + std::printf(" || \\\n "); + for (int k = Mn - 1; k>=1; --k) std::printf("_n%d##x==--_n%u##x || ",k,k + 1); + std::printf("x==("); + for (int k = Mn; k>=2; --k) std::printf("_n%d##x = ",k); + std::printf("--_n1##x); \\\n"); + } else std::printf("; \\\n"); + + if (M>1) { + for (unsigned int k = 0, z = 0; z=2; --k) std::printf("_p%d##x = _p%d##x, ",k,k - 1); + if (M>2) std::printf("_p1##x = x++, "); else std::printf("++x, "); + for (int k = 1; k<=Mn - 1; ++k) std::printf("++_n%d##x, ",k); + std::printf("++_n%d##x)\n\n",Mn); + } else std::printf(" ++x)\n\n"); +} + +// Generate macro 'cimg_for_inMxN[xP](img,x,y,z,c,I,T)' +//----------------------------------------------------- +void generate_for_inMxNxP(const unsigned int M, const unsigned int N, const unsigned int P) { + char indx[16], indy[16], indz[16]; + const int + Mn = (int)(M/2), Mp = (int)(Mn - ((M + 1)%2)), + Nn = (int)(N/2), Np = (int)(Nn - ((N + 1)%2)), + Pn = (int)(P/2), Pp = (int)(Pn - ((P + 1)%2)); + + if (P>1) + std::printf("#define cimg_for_in%ux%ux%u(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \\\n " + "cimg_for_in%u((img)._depth,z0,z1,z)",M,N,P,P); + else std::printf("#define cimg_for_in%ux%u(img,x0,y0,x1,y1,x,y,z,c,I,T) \\\n",M,N); + if (N>1) std::printf(" cimg_for_in%u((img)._height,y0,y1,y) ",N); + else std::printf(" cimg_for_inY(img,y0,y1,y) "); + + std::printf("for (int x = (int)(x0)<0?0:(int)(x0)%c \\\n",M>1?',':';'); + for (int k = Mp; k>=1; --k) std::printf(" _p%u##x = x - %u<0?0:x - %u, \\\n",k,k,k); + for (int k = 1; k=(img).width()?(img).width() - 1:x + %u, \\\n",k,k,k); + + if (M>1) { + std::printf(" _n%u##x = (int)( \\\n",Mn); + for (int x = -Mp; x0) std::sprintf(indx,"_n%d##",x); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(%sx,%sy,%sz,c)), \\\n",(Mp + x) + (y + Np)*M + (z + Pp)*M*N,indx,indy,indz); + } + std::printf(" x + %u>=(img).width()?(img).width() - 1:x + %u); \\\n",Mn,Mn); + } + std::printf(" x<=(int)(x1) && ("); + if (M>1) std::printf("(_n%u##x",Mn); else std::printf("(x"); + std::printf("<(img).width() && ( \\\n"); + + for (int z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) { + if (M>1) std::sprintf(indx,"_n%d##",Mn); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" (I[%d] = (T)(img)(%sx,%sy,%sz,c))%s",M - 1 + (y + Np)*M + (z + Pp)*M*N,indx,indy,indz, + z==Pn && y==Nn?",1))":", \\\n"); + } + + if (M>1) { + std::printf(" || \\\n "); + for (int k = Mn - 1; k>=1; --k) std::printf("_n%d##x==--_n%u##x || ",k,k + 1); + std::printf("x==("); + for (int k = Mn; k>=2; --k) std::printf("_n%d##x = ",k); + std::printf("--_n1##x)); \\\n"); + } else std::printf("); \\\n"); + + if (M>1) { + for (unsigned int k = 0, z = 0; z=2; --k) std::printf("_p%d##x = _p%d##x, ",k,k - 1); + if (M>2) std::printf("_p1##x = x++, "); else std::printf("++x, "); + for (int k = 1; k<=Mn - 1; ++k) std::printf("++_n%d##x, ",k); + std::printf("++_n%d##x)\n\n",Mn); + } else std::printf(" ++x)\n\n"); +} + +// Generate macro 'cimg_getMxN[xP](img,x,y,z,c,I,T)' +//-------------------------------------------------- +void generate_getMxNxP(const unsigned int M, const unsigned int N, const unsigned int P) { + const int + Mn = (int)(M/2), Mp = (int)(Mn - ((M + 1)%2)), + Nn = (int)(N/2), Np = (int)(Nn - ((N + 1)%2)), + Pn = (int)(P/2), Pp = (int)(Pn - ((P + 1)%2)), + last = M*N*P - 1; + if (P>1) std::printf("#define cimg_get%ux%ux%u(img,x,y,z,c,I,T) \\\n",M,N,P); + else std::printf("#define cimg_get%ux%u(img,x,y,z,c,I,T) \\\n",M,N); + char indx[16], indy[16], indz[16]; + for (int k = 0, z = -Pp; z<=Pn; ++z) + for (int y = -Np; y<=Nn; ++y) + for (int x = -Mp; x<=Mn; ++x) { + if (x<0) std::sprintf(indx,"_p%d##",-x); else if (x>0) std::sprintf(indx,"_n%d##",x); else indx[0]='\0'; + if (y<0) std::sprintf(indy,"_p%d##",-y); else if (y>0) std::sprintf(indy,"_n%d##",y); else indy[0]='\0'; + if (z<0) std::sprintf(indz,"_p%d##",-z); else if (z>0) std::sprintf(indz,"_n%d##",z); else indz[0]='\0'; + std::printf(" I[%u] = (T)(img)(%sx,%sy,%sz,c)%s",k,indx,indy,indz, + k==last?";\n\n":(x==Mn?", \\\n":",")); + ++k; + } +} + +//----------------- +// Main Procedure +//----------------- +int main(int argc, char **argv) { + + cimg_usage("Generate C++ macros to deal with MxN[xP] neighborhood loops within the CImg Library"); + + // Read command line arguments + //---------------------------- + const char *const size = cimg_option("-s","5x4","Size of the neighborhood"); + const bool do_forN = cimg_option("-forN",true,"Generate 'cimg_forN()'"); + const bool do_for_inN = cimg_option("-for_inN",true,"Generate 'cimg_for_inN()'"); + const bool do_for = cimg_option("-for",true,"Generate 'cimg_forMxNxP()'"); + const bool do_for_in = cimg_option("-for_in",true,"Generate 'cimg_for_inMxNxP()'"); + const bool do_get = cimg_option("-get",true,"Generate 'cimg_getMxNxP()'"); + if (cimg_option("-h",false,0)) std::exit(0); + + unsigned int M = 1, N = 1 , P = 1; + std::sscanf(size,"%u%*c%u%*c%u",&M,&N,&P); + if (!M || !N || !P || (M==1 && N==1 && P==1)) { + std::fprintf(stderr,"\n%s : Error, bad neighborhood size '%s'\n",argv[0],size); + std::exit(0); + } + if (!do_forN && !do_get && !do_for) return 0; + + if (P>1) + std::printf("// Define %ux%ux%u loop macros\n" + "//----------------------------\n",M,N,P); + else + std::printf("// Define %ux%u loop macros\n" + "//-------------------------\n",M,N); + + if (do_forN) { + if (N>1) generate_forN(N); + if (P>1 && P!=N) generate_forN(P); + } + if (do_for_inN) { + if (N>1) generate_for_inN(N); + if (P>1 && P!=N) generate_for_inN(P); + } + if (do_for) generate_forMxNxP(M,N,P); + if (do_for_in) generate_for_inMxNxP(M,N,P); + if (do_get) generate_getMxNxP(M,N,P); + + return 0; +} diff --git a/examples/hough_transform2d.cpp b/examples/hough_transform2d.cpp new file mode 100644 index 000000000..91302ca6c --- /dev/null +++ b/examples/hough_transform2d.cpp @@ -0,0 +1,146 @@ +/* + # + # File : hough_transform2d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Hough transform. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Illustration of the Hough transform"); + CImg src(cimg_option("-i",cimg_imagepath "parrot.ppm","Input image")); + CImg<> vote(500,400,1,1,0), img = src.get_norm().normalize(0,255).resize(-100,-100,1,2,2); + + CImgDisplay disp(src,"Image"), dispvote(vote,"Hough Transform"); + const unsigned char col1[3]={255,255,255}, col2[3]={0,0,0}; + const double + alpha = cimg_option("-a",1.5,"Gradient smoothing"), + sigma = cimg_option("-s",0.5,"Hough Transform smoothing"), + rhomax = std::sqrt((double)(img.width()*img.width() + img.height()*img.height()))/2, + thetamax = 2*cimg::PI; + + if (cimg::dialog(cimg::basename(argv[0]), + "Instructions : \n" + "----------------\n\n" + "(1) When clicking on the color image, all lines crossing the selected point\n" + "will be voted in the Hough buffer.\n\n" + "(2) When clicking on the Hough buffer, the corresponding line is drawn\n" + "on the color image.\n\n" + "(3) When pressing the space bar, lines in the color image are detected from the\n" + "image gradients through votes in the Hough buffer.\n\n" + "Note that a logarithmic scaling is performed for displayin the vote image.\n" + "See also the available options (option '-h')\n","Start !","Quit",0,0,0,0, + src.get_resize(100,100,1,3),true)) std::exit(0); + + while (!disp.is_closed() && !dispvote.is_closed() && + !disp.is_keyQ() && !dispvote.is_keyQ() && !disp.is_keyESC() && !dispvote.is_keyESC()) { + + CImgDisplay::wait(disp,dispvote); + + // When pressing space bar, the vote is performed from the image gradients. + if (dispvote.is_keySPACE() || disp.is_keySPACE()) { + CImgList<> grad = img.get_gradient(); + cimglist_for(grad,l) grad[l].blur((float)alpha); + vote.fill(0); + cimg_forXY(img,x,y) { + const double + X = (double)x - img.width()/2, + Y = (double)y - img.height()/2, + gx = grad[0](x,y), + gy = grad[1](x,y); + double + theta = std::atan2(gy,gx), + rho = std::sqrt(X*X + Y*Y)*std::cos(std::atan2(Y,X) - theta); + if (rho<0) { rho=-rho; theta+=cimg::PI; } + theta = cimg::mod(theta,thetamax); + vote((int)(theta*dispvote.width()/thetamax),(int)(rho*dispvote.height()/rhomax))+= + (float)std::sqrt(gx*gx + gy*gy); + } + vote.blur((float)sigma); + CImg<> vote2(vote); cimg_forXY(vote2,x,y) vote2(x,y) = (float)std::log(1 + vote(x,y)); vote2.display(dispvote); + } + + // When clicking on the vote window. + if (dispvote.button()) { + const double + rho = dispvote.mouse_y()*rhomax/dispvote.height(), + theta = dispvote.mouse_x()*thetamax/dispvote.width(), + x = img.width()/2 + rho*std::cos(theta), + y = img.height()/2 + rho*std::sin(theta); + const int + x0 = (int)(x + 1000*std::sin(theta)), + y0 = (int)(y - 1000*std::cos(theta)), + x1 = (int)(x - 1000*std::sin(theta)), + y1 = (int)(y + 1000*std::cos(theta)); + CImg(src). + draw_line(x0,y0,x1,y1,col1,1.0f,0xF0F0F0F0).draw_line(x0,y0,x1,y1,col2,1.0f,0x0F0F0F0F). + draw_line(x0 + 1,y0,x1 + 1,y1,col1,1.0f,0xF0F0F0F0).draw_line(x0 + 1,y0,x1 + 1,y1,col2,1.0f,0x0F0F0F0F). + draw_line(x0,y0 + 1,x1,y1 + 1,col1,1.0f,0xF0F0F0F0).draw_line(x0,y0 + 1,x1,y1 + 1,col2,1.0f,0x0F0F0F0F). + display(disp); + } + + // When clicking on the image. + if (disp.button() && disp.mouse_x()>=0) { + const double + x0 = (double)disp.mouse_x() - disp.width()/2, + y0 = (double)disp.mouse_y() - disp.height()/2, + rho0 = std::sqrt(x0*x0 + y0*y0), + theta0 = std::atan2(y0,x0); + + for (double t=0; t vote2(vote); cimg_forXY(vote2,x,y) vote2(x,y) = (float)std::log(1 + vote(x,y)); vote2.display(dispvote); + } + dispvote.resize(dispvote); + disp.resize(disp); + } + + std::exit(0); + return 0; +} diff --git a/examples/image2ascii.cpp b/examples/image2ascii.cpp new file mode 100644 index 000000000..04a831479 --- /dev/null +++ b/examples/image2ascii.cpp @@ -0,0 +1,157 @@ +/* + # + # File : image2ascii.cpp + # ( C++ source file ) + # + # Description : A basic image to ASCII-art converter. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Tell CImg not to use display capabilities. +#undef cimg_display +#define cimg_display 0 +#include "CImg.h" +using namespace cimg_library; + +/*--------------------------- + + Main procedure + + --------------------------*/ +int main(int argc,char **argv) { + cimg_usage("A simple image to ASCII-art converter.\n\nUsage : image2ascii [options] image"); + + // Read command line parameters + const char *const file_i = cimg_option("-i",(char*)0,"Input image"); + const char *const geom = cimg_option("-g","79x40","Output size"); + const int alphabet = cimg_option("-a",0,"Alphabet type (0=full, 1=numbers, 2=letters, 3=signs, 4=minimal"); + const bool invert = cimg_option("-invert",false,"Invert image intensities"); + const float contour = (float)cimg_option("-contour",0.0f,"Use image contours higher than specified threshold"); + const float blur = (float)cimg_option("-blur",0.8f,"Image pre-blur"); + const float sigma = (float)cimg_option("-sigma",10.0f,"Font pre-blur"); + + int w = 79, h = 40; + std::sscanf(geom,"%d%*c%d",&w,&h); + if (cimg_option("-h",false,0)) std::exit(0); + + // Init fonts + CImgList<> font_full = CImgList<>::font(13,false); + font_full.remove(0,255); + const int fw = font_full[(int)'A'].width(), fh = font_full[(int)'A'].height(); + CImgList<> font, font_blur; + CImgList font_code; + + switch (alphabet) { + case 1: { + font_code.insert(CImg<>::vector(' ')); + for (unsigned char l='0'; l<='9'; l++) font_code.insert(CImg<>::vector(l)); + } break; + case 2: { + font_code.insert(CImg<>::vector(' ')); + for (unsigned char l='A'; l<='Z'; l++) font_code.insert(CImg<>::vector(l)); + } break; + case 3: { + font_code.insert(CImg<>::vector(' ')); + font_code.insert(CImg<>::vector('-')); + font_code.insert(CImg<>::vector('_')); + font_code.insert(CImg<>::vector('|')); + font_code.insert(CImg<>::vector('/')); + font_code.insert(CImg<>::vector('\\')); + font_code.insert(CImg<>::vector('+')); + font_code.insert(CImg<>::vector('.')); + font_code.insert(CImg<>::vector('*')); + font_code.insert(CImg<>::vector('=')); + font_code.insert(CImg<>::vector(']')); + font_code.insert(CImg<>::vector('[')); + font_code.insert(CImg<>::vector('(')); + font_code.insert(CImg<>::vector(')')); + font_code.insert(CImg<>::vector('{')); + font_code.insert(CImg<>::vector('}')); + font_code.insert(CImg<>::vector('"')); + font_code.insert(CImg<>::vector('!')); + font_code.insert(CImg<>::vector('$')); + } break; + case 4: { + font_code.insert(CImg<>::vector(' ')); + font_code.insert(CImg<>::vector('.')); + font_code.insert(CImg<>::vector('/')); + font_code.insert(CImg<>::vector('\\')); + font_code.insert(CImg<>::vector('_')); + font_code.insert(CImg<>::vector('_')); + font_code.insert(CImg<>::vector('|')); + } break; + default: { for (unsigned char l=' '; l<='~'; l++) font_code.insert(CImg<>::vector(l)); } break; + } + cimglist_for(font_code,l) { + font.insert(font_full(font_code[l](0))); + font_blur.insert(font[l].get_resize(fw,fh,1,1).blur(sigma).normalize(0,255)); + } + + // Init images + CImg<> img; + if (!file_i) { float white[3] = { 255,255,255 }; img.assign().draw_text(0,0," CImg\nRocks !",white); } + else img.assign(file_i); + img.norm().resize(fw*w,fh*h); + if (blur) img.blur(blur); + if (contour>0) { + CImgList<> grad = img.get_gradient("xy",4); + img = (grad[0].pow(2) + grad[1].pow(2)).sqrt().normalize(0,100).threshold(contour); + } + img.normalize(0,255); + if (invert) img = 255.0f - img; + CImg dest(w,h,1,1,0); + + // Render ASCII-art image, using a simple correlation method. + CImg<> neigh; + cimg_forY(dest,y) { cimg_forX(dest,x) { + neigh = img.get_crop(x*fw,y*fh,(x + 1)*fw,(y + 1)*fh); + float scoremin = 2e28f; + unsigned int best = 0; + cimglist_for(font_code,l) { + const CImg<>& letter = font_blur[l]; + const float score = (float)((letter - neigh).pow(2).sum()); + if (score& src, const CImg& dest, const CImg<>& U, + const bool morph, const bool imode, const char *filename,int nb, CImgDisplay& disp) { + CImg visu = (src,dest,src)>'x', warp(src); + float t = 0; + for (unsigned int iteration = 0; !disp || (!disp.is_closed() && !disp.is_keyQ()); ++iteration) { + if (morph) cimg_forXYC(warp,x,y,k) { + const float dx = U(x,y,0), dy = U(x,y,1), + I1 = (float)src.linear_atXY(x - t*dx, y - t*dy, k), + I2 = (float)dest.linear_atXY(x + (1 - t)*dx,y + (1 - t)*dy,k); + warp(x,y,k) = (unsigned char)((1 - t)*I1 + t*I2); + } else cimg_forXYC(warp,x,y,k) { + const float dx = U(x,y,0), dy = U(x,y,1), I1 = (float)src.linear_atXY(x - t*dx, y - t*dy, 0,k); + warp(x,y,k) = (unsigned char)I1; + } + if (disp) visu.draw_image(2*src.width(),warp).display(disp.resize().wait(30)); + if (filename && *filename && (imode || (int)iteration frame %d ",iteration); + warp.save(filename,iteration); + } + t+=1.0f/nb; + if (t<0) { t = 0; nb = -nb; } + if (t>1) { t = 1; nb = -nb; if (filename && *filename) std::exit(0); } + } +} + +// optflow() : multiscale version of the image registration algorithm +//----------- +CImg<> optflow(const CImg<>& source, const CImg<>& target, + const float smoothness, const float precision, const unsigned int nb_scales, CImgDisplay& disp) { + const unsigned int iteration_max = 100000; + const float _precision = (float)std::pow(10.0,-(double)precision); + const CImg<> + src = source.get_resize(target,3).normalize(0,1), + dest = target.get_normalize(0,1); + CImg<> U; + + const unsigned int _nb_scales = nb_scales>0?nb_scales: + (unsigned int)(2*std::log((double)(std::max(src.width(),src.height())))); + for (int scale = _nb_scales - 1; scale>=0; --scale) { + const float factor = (float)std::pow(1.5,(double)scale); + const unsigned int + _sw = (unsigned int)(src.width()/factor), sw = _sw?_sw:1, + _sh = (unsigned int)(src.height()/factor), sh = _sh?_sh:1; + const CImg<> + I1 = src.get_resize(sw,sh,1,-100,2), + I2 = dest.get_resize(I1,2); + std::fprintf(stderr," * Scale %d\n",scale); + if (U) (U*=1.5f).resize(I2.width(),I2.height(),1,-100,3); + else U.assign(I2.width(),I2.height(),1,2,0); + + float dt = 2, energy = cimg::type::max(); + const CImgList<> dI = I2.get_gradient(); + + for (unsigned int iteration = 0; iteration0) dt*=0.5f; + energy = _energy; + if (disp) disp.resize(); + if (disp && disp.is_closed()) std::exit(0); + if (disp && !(iteration%300)) { + const unsigned char white[] = { 255,255,255 }; + CImg tmp = I1.get_warp(U,true,true,1).normalize(0,200); + tmp.resize(disp.width(),disp.height()).draw_quiver(U,white,0.7f,15,-14,true).display(disp); + } + } + std::fprintf(stderr,"\n"); + } + return U; +} + +/*------------------------ + + Main function + + ------------------------*/ + +int main(int argc,char **argv) { + + // Read command line parameters + cimg_usage("Compute an optical flow between two 2D images, and create a warped animation"); + const char + *name_i1 = cimg_option("-i",cimg_imagepath "sh0r.pgm","Input Image 1 (Destination)"), + *name_i2 = cimg_option("-i2",cimg_imagepath "sh1r.pgm","Input Image 2 (Source)"), + *name_o = cimg_option("-o",(const char*)NULL,"Output 2D flow (inrimage)"), + *name_seq = cimg_option("-o2",(const char*)NULL,"Output Warping Sequence"); + const float + smoothness = cimg_option("-s",0.1f,"Flow Smoothness"), + precision = cimg_option("-p",6.0f,"Convergence precision"); + const unsigned int + nb = cimg_option("-n",40,"Number of warped frames"), + nb_scales = cimg_option("-scale",0,"Number of scales (0=auto)"); + const bool + normalize = cimg_option("-equalize",true,"Histogram normalization of the images"), + morph = cimg_option("-m",true,"Morphing mode"), + imode = cimg_option("-c",true,"Complete interpolation (or last frame is missing)"), + dispflag = !cimg_option("-novisu",false,"Visualization"); + + // Init images and display + std::fprintf(stderr," - Init images.\n"); + const CImg<> + src(name_i1), + dest(CImg<>(name_i2).resize(src,3)), + src_blur = normalize?src.get_blur(0.5f).equalize(256):src.get_blur(0.5f), + dest_blur = normalize?dest.get_blur(0.5f).equalize(256):dest.get_blur(0.5f); + + CImgDisplay disp; + if (dispflag) { + unsigned int w = src.width(), h = src.height(); + const unsigned int dmin = std::min(w,h), minsiz = 512; + if (dminmaxsiz) { w=w*maxsiz/dmax; h=h*maxsiz/dmax; } + disp.assign(w,h,"Estimated Motion",0); + } + + // Run Motion estimation algorithm + std::fprintf(stderr," - Compute optical flow.\n"); + const CImg<> U = optflow(src_blur,dest_blur,smoothness,precision,nb_scales,disp); + if (name_o) U.save(name_o); + U.print("Computed flow"); + + // Do morphing animation + std::fprintf(stderr," - Create warped animation.\n"); + CImgDisplay disp2; + if (dispflag) { + unsigned int w = src.width(), h = src.height(); + const unsigned int dmin = std::min(w,h), minsiz = 100; + if (dminmaxsiz) { w = w*maxsiz/dmax; h=h*maxsiz/dmax; } + disp2.assign(3*w,h,"Source/Destination images and Motion animation",0); + } + + animate_warp(src.get_normalize(0,255),dest.get_normalize(0,255),U,morph,imode,name_seq,nb,disp2); + + std::exit(0); + return 0; +} diff --git a/examples/image_surface3d.cpp b/examples/image_surface3d.cpp new file mode 100644 index 000000000..292125975 --- /dev/null +++ b/examples/image_surface3d.cpp @@ -0,0 +1,140 @@ +/* + # + # File : image_surface3d.cpp + # ( C++ source file ) + # + # Description : This tool allows to show an image as a 3D surface. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line arguments. + cimg_usage("Render an image as a surface"); + const char *file_i = cimg_option("-i",cimg_imagepath "logo.bmp","Input image"); + const char *file_o = cimg_option("-o",(char*)0,"Output 3D object"); + const float sigma = cimg_option("-smooth",1.0f,"Amount of image smoothing"); + const float ratioz = cimg_option("-z",0.25f,"Aspect ratio along z-axis"); + const unsigned int di = cimg_option("-di",10,"Step for isophote skipping"); + + // Load 2D image file. + std::fprintf(stderr,"\n- Load file '%s'",cimg::basename(file_i)); std::fflush(stderr); + const CImg + img = CImg<>(file_i).blur(sigma).resize(-100,-100,1,3), + norm = img.get_norm().normalize(0,255); + + // Compute surface with triangles. + std::fprintf(stderr,"\n- Create image surface"); std::fflush(stderr); + CImgList primitives; + CImgList colors; + const CImg<> points = img.get_elevation3d(primitives,colors,norm*-ratioz); + + // Compute image isophotes. + std::fprintf(stderr,"\n- Compute image isophotes"); std::fflush(stderr); + CImgList isoprimitives; + CImgList isocolors; + CImg<> isopoints; + for (unsigned int i = 0; i<255; i+=di) { + CImgList<> prims; + const CImg<> pts = norm.get_isoline3d(prims,(float)i); + isopoints.append_object3d(isoprimitives,pts,prims); + } + cimglist_for(isoprimitives,l) { + const unsigned int i0 = isoprimitives(l,0); + const float x0 = isopoints(i0,0), y0 = isopoints(i0,1); + const unsigned char + r = (unsigned char)img.linear_atXY(x0,y0,0), + g = (unsigned char)img.linear_atXY(x0,y0,1), + b = (unsigned char)img.linear_atXY(x0,y0,2); + isocolors.insert(CImg::vector(r,g,b)); + } + cimg_forX(isopoints,ll) isopoints(ll,2) = -ratioz*norm.linear_atXY(isopoints(ll,0),isopoints(ll,1)); + + // Save object if necessary + if (file_o) { + std::fprintf(stderr,"\n- Save 3d object as '%s'",cimg::basename(file_o)); std::fflush(stderr); + points.save_off(primitives,colors,file_o); + } + + // Enter event loop + std::fprintf(stderr, + "\n- Enter interactive loop.\n\n" + "Reminder : \n" + " + Use mouse to rotate and zoom object\n" + " + key 'F' : Toggle fullscreen\n" + " + key 'Q' or 'ESC' : Quit\n" + " + Any other key : Change rendering type\n\n"); std::fflush(stderr); + const char *const title = "Image viewed as a surface"; + CImgDisplay disp(800,600,title,0); + unsigned int rtype = 2; + CImg pose = CImg::identity_matrix(4); + + while (!disp.is_closed()) { + const unsigned char white[3]={ 255, 255, 255 }; + CImg visu(disp.width(),disp.height(),1,3,0); + visu.draw_text(10,10,"%s",white,0,1,24, + rtype==0?"Points":(rtype==1?"Lines":(rtype==2?"Faces":(rtype==3?"Flat-shaded faces": + (rtype==4?"Gouraud-shaded faces":(rtype==5?"Phong-shaded faces":"Isophotes")))))); + static bool first_time = true; + if (rtype==6) visu.display_object3d(disp,isopoints,isoprimitives,isocolors,first_time,1,-1,true, + 500.0f,0.0f,0.0f,-5000.0f,0.0f,0.0f,true,pose.data()); + else visu.display_object3d(disp,points,primitives,colors,first_time,rtype,-1,true, + 500.0f,0.0f,0.0f,-5000.0f,0.0f,0.0f,true,pose.data()); + first_time = false; + switch (disp.key()) { + case 0: break; + case cimg::keyBACKSPACE: rtype = (7 + rtype - 1)%7; break; + case cimg::keyQ: + case cimg::keyESC: disp.close(); break; + case cimg::keyF: + if (disp.is_fullscreen()) disp.resize(800,600); else disp.resize(disp.screen_width(),disp.screen_height()); + disp.toggle_fullscreen(); + break; + default: rtype = (rtype + 1)%7; break; + } + } + + return 0; +} diff --git a/examples/img/CImg_demo.h b/examples/img/CImg_demo.h new file mode 100644 index 000000000..7ca160c80 --- /dev/null +++ b/examples/img/CImg_demo.h @@ -0,0 +1,27810 @@ +/*------------------------------------------------------------ + + Define hard-coded color images used in the 'CImg_demo.cpp' + example file, so that the corresponding executable does not + depend on additional data files. + +--------------------------------------------------------------*/ + +/* Define image 'foot' of size 200x200x1x3 and type 'const unsigned char' */ +const unsigned char data_foot[] = { + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 154, 68, + 17, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 84, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 165, 84, 26, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 175, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 253, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 116, 26, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 254, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 194, 74, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 205, 133, 68, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 252, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 144, 85, 33, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 245, 194, 122, 67, 32, 5, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 111, 39, 9, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 205, 58, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 116, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 251, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 48, 105, 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 205, 72, 0, 0, 0, + 0, 0, 27, 66, 122, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, + 242, 0, 0, 0, 0, 0, 108, 120, 171, 233, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 0, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 22, 88, 194, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 0, 0, 0, 0, 0, + 13, 110, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, + 0, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 11, 92, 205, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 32, 0, 10, 47, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 149, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 1, 32, 145, 245, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 194, 245, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 0, 0, 0, 0, 0, + 0, 0, 2, 76, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 165, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 226, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 198, 152, 119, 119, 152, 198, 0, 0, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 198, 121, + 33, 5, 4, 24, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 11, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 205, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 164, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 152, 33, 0, 0, 0, 0, 0, 110, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, + 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 194, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 119, 3, + 0, 0, 0, 0, 0, 16, 178, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 147, 22, 0, 0, 0, 0, 0, 0, 0, 0, 58, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 119, 1, 0, 0, 0, 0, 0, 0, 70, 198, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 114, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 152, 2, + 0, 0, 0, 0, 0, 0, 5, 137, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, + 11, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 198, 22, 0, 0, 0, 0, 0, 0, 0, 88, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 217, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 176, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 230, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 210, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 210, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 205, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 210, 120, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 173, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 115, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 212, 0, 0, 0, 0, 0, 0, 0, 0, 4, 205, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 159, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 245, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 176, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 100, + 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 23, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 150, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 198, 152, 119, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 167, 62, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 198, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 186, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 137, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 110, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 146, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 198, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 179, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 178, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 178, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 185, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 5, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 178, 58, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 194, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 32, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 205, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 164, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 0, 0, 0, + 0, 0, 4, 213, 255, 255, 255, 255, 255, 255, 255, 255, 238, 51, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 106, 0, 0, 0, 0, 0, 76, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 120, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 0, 0, + 6, 81, 235, 255, 255, 255, 255, 255, 255, 255, 255, 205, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 230, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 160, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 161, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 57, 22, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 88, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 31, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 205, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 163, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 41, 198, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 86, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 28, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 34, 0, 0, 0, 0, + 0, 0, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 210, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 245, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 37, 4, 0, 0, 0, 0, 0, 0, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 151, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 253, 255, 255, 255, 255, 255, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 204, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, + 255, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 157, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 247, 255, 255, 255, 255, 255, 255, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 140, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 198, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 84, 170, 230, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 100, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 37, 111, 205, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 185, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 21, + 84, 165, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 39, 53, 72, 125, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 23, 87, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 48, 105, + 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, + 49, 72, 111, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 198, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 30, 74, 144, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 176, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 98, 20, 0, 98, 205, + 0, 0, 0, 0, 0, 0, 9, 1, 1, 1, 1, 1, 1, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 39, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 26, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 238, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 111, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 198, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 128, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 128, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 15, 79, 176, 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 245, 141, 24, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 47, 5, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 4, 23, 40, 57, 90, 146, 198, 219, 219, 219, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 230, 137, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 215, 124, 79, 54, 47, 51, 62, 95, 152, 198, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 238, 125, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 201, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 20, 31, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 105, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 198, 24, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 3, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 144, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 215, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 40, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 205, 133, 85, + 61, 63, 92, 144, 215, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 170, 255, + 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 185, 124, 73, 28, 4, 0, 0, 0, 0, 1, 6, 5, 9, 0, 142, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 110, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 230, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 217, 200, 155, 100, 54, 24, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 34, 170, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 198, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 176, 114, 60, 22, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 110, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 167, 105, 58, 25, 3, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 198, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 205, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 198, + 113, 27, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 210, 182, 148, + 125, 106, 79, 53, 33, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 163, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, + 219, 192, 114, 40, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 167, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 198, 142, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 164, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 64, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 159, 43, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 185, 219, 219, 219, 219, 219, 219, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 185, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 176, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 114, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 98, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 210, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 159, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 173, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 178, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 137, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 78, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 58, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 88, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 155, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 8, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 120, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 105, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 185, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 124, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 116, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 198, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 215, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 67, 198, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 56, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 25, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 83, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 238, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 84, 198, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 176, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 74, 190, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 128, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 82, 202, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 0, 0, 0, 0, 219, 113, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 69, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 73, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 109, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, 219, + 219, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 215, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 139, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 0, 0, 219, 219, 219, 219, 219, 219, 219, 148, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 185, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 146, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 182, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 151, 253, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 137, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 210, 125, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 167, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 155, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 188, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 229, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 210, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 22, 185, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 171, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 215, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 141, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 9, 40, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 214, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 200, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 159, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 250, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 217, 37, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 5, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, 219, 0, + 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 110, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 219, 0, 0, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 137, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 145, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 248, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 185, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 198, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 113, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 122, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 110, 1, + 0, 0, 0, 0, 0, 0, 0, 3, 113, 209, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 167, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 198, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 198, 37, 0, 0, 0, 0, 0, 0, 3, 94, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 210, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 159, + 39, 0, 0, 0, 1, 15, 106, 210, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 113, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 176, 107, 69, 66, 100, 167, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 168, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 149, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 204, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 176, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 113, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, + 247, 255, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 219, + 219, 219, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 149, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 47, 176, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 253, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 133, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 142, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 254, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 107, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 176, 114, 47, + 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 78, 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 251, 255, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 198, 142, 56, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 198, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 206, 126, 29, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 65, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 158, 46, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 70, 190, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 204, 140, 52, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 75, + 190, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 198, 110, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 65, 190, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 198, 142, 72, 22, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 70, 185, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 252, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 198, 122, 46, 5, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 90, 204, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 204, 168, 124, 80, 43, 17, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 98, 210, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 210, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 130, 210, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 185, + 0, 0, 0, 0, 0, 0, 0, 3, 50, 167, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 204, 140, 58, 0, 0, 0, 42, 122, + 198, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 251, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 254, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, 0, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 0, 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, 0, + 0, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 175, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 116, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 9, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 48, 105, 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 255, 205, 72, 0, 0, 0, + 0, 0, 27, 66, 122, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 6, 0, 0, 0, 0, 0, 108, 120, 171, 233, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 22, 88, 194, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 0, 0, 0, 0, 0, + 13, 110, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 11, 92, 205, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 149, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 194, 245, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 165, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 146, 114, 114, 146, 189, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 116, + 32, 5, 4, 23, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 11, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 205, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 32, 0, 0, 0, 0, 0, 105, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, + 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 114, 3, + 0, 0, 0, 0, 0, 16, 170, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 147, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 114, 1, 0, 0, 0, 0, 0, 0, 67, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 146, 2, + 0, 0, 0, 0, 0, 0, 5, 132, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 189, 21, 0, 0, 0, 0, 0, 0, 0, 88, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 208, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 169, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 230, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 202, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 202, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 202, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 166, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 210, 210, 210, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 169, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 107, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 23, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 189, 146, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 160, 59, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 189, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 131, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 140, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 189, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 170, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 170, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 185, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 170, 56, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 194, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 161, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 57, 22, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 163, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 40, 189, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 86, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 28, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 34, 0, 0, 0, 0, + 0, 0, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 202, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 245, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 37, 4, 0, 0, 0, 0, 0, 0, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 145, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 253, 255, 255, 255, 255, 255, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 196, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, + 255, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 151, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 247, 255, 255, 255, 255, 255, 255, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 84, 170, 230, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 37, 111, 205, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 21, + 84, 165, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 61, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 39, 53, 72, 125, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 23, 87, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 48, 105, + 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, + 49, 72, 111, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 189, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 30, 74, 144, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 76, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 169, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 98, 20, 0, 98, 205, + 0, 0, 0, 0, 0, 0, 9, 1, 1, 1, 1, 1, 1, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 39, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 26, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 238, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 111, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 128, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 128, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 14, 76, 169, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 245, 141, 24, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 47, 5, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 4, 22, 39, 54, 86, 140, 189, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 230, 137, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 215, 119, 76, 52, 45, 49, 59, 91, 146, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 238, 125, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 201, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 19, 30, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 105, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 189, 23, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 3, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 205, 133, 85, + 61, 63, 92, 144, 215, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 119, 70, 27, 4, 0, 0, 0, 0, 1, 6, 5, 9, 0, 142, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 208, 192, 148, 96, 52, 23, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 34, 170, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 189, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 169, 110, 58, 21, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 105, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 160, 100, 55, 24, 3, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 189, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, + 108, 26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 202, 175, 142, + 119, 101, 76, 51, 32, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 184, 110, 38, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 189, 136, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 157, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 41, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 177, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 177, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 169, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 110, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 94, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 152, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 166, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 170, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 75, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 84, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 149, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 177, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 64, 189, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 80, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 81, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 71, 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 78, 194, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 210, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 105, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, + 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 133, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 142, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 140, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 175, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 131, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 119, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 160, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 149, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 180, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 202, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 177, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 164, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 135, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 9, 39, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 205, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 192, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 208, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 5, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 132, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 139, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 11, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 189, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 109, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 117, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 105, 1, + 0, 0, 0, 0, 0, 0, 0, 3, 109, 200, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 189, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 189, 35, 0, 0, 0, 0, 0, 0, 2, 90, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, + 37, 0, 0, 0, 1, 15, 102, 202, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 169, 103, 66, 63, 96, 160, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 161, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 142, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 196, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 55, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 153, 255, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 142, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 255, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 136, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 110, 45, + 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 75, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 154, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 54, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 189, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 198, 121, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 63, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 44, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 67, 182, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 196, 134, 50, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 72, + 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 189, 105, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 63, 182, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 69, 21, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 68, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 11, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 117, 44, 5, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 86, 196, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 196, 161, 119, 77, 41, 16, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 94, 202, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 202, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 124, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 0, 0, 0, 0, 0, 0, 0, 3, 48, 160, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 196, 134, 55, 0, 0, 0, 40, 117, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 9, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 175, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 116, 215, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 48, 105, 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 255, 205, 72, 0, 0, 0, + 0, 0, 27, 66, 122, 194, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 5, 0, 0, 0, 0, 0, 108, 120, 171, 233, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 22, 88, 194, 245, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 0, 0, 0, 0, 0, 0, + 13, 110, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 42, 0, 0, 0, 0, 0, 0, 0, 0, 11, 92, 205, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 49, 0, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 149, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 245, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 194, 245, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 165, 230, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 146, 114, 114, 146, 189, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 116, + 32, 5, 4, 23, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 11, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 205, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 32, 0, 0, 0, 0, 0, 105, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 7, + 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 114, 3, + 0, 0, 0, 0, 0, 16, 170, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 238, 147, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 114, 1, 0, 0, 0, 0, 0, 0, 67, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 146, 2, + 0, 0, 0, 0, 0, 0, 5, 132, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 207, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 189, 21, 0, 0, 0, 0, 0, 0, 0, 88, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 133, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 208, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 207, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 169, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 230, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 202, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 202, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 245, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 202, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 166, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 245, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 210, 210, 210, 210, 210, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 169, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 170, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 122, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 107, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 23, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 189, 146, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 215, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 160, 59, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 189, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 131, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 140, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 189, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 170, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 94, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 170, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 185, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 170, 56, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 194, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 28, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 106, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 122, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 207, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 53, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 194, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 161, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 57, 22, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 245, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 229, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 163, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 57, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 55, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 221, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 40, 189, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 86, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 28, 0, 0, 0, 0, 0, 0, 52, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, + 255, 255, 255, 255, 255, 255, 255, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 34, 0, 0, 0, 0, + 0, 0, 41, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 202, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 245, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 37, 4, 0, 0, 0, 0, 0, 0, 23, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 145, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 250, 253, 255, 255, 255, 255, 255, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 6, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 196, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, + 255, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 151, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 250, 247, 255, 255, 255, 255, 255, 255, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 84, 170, 230, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 37, 111, 205, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 21, + 84, 165, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 61, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 11, 39, 53, 72, 125, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 23, 87, 170, 230, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 50, 111, 177, 230, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 48, 105, + 170, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 28, + 49, 72, 111, 177, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 189, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, + 0, 0, 30, 74, 144, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 76, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 169, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 98, 20, 0, 98, 205, + 0, 0, 0, 0, 0, 0, 9, 1, 1, 1, 1, 1, 1, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 176, 39, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 185, 26, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 238, 216, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 111, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 251, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 215, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 128, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 230, 128, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 14, 76, 169, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, + 255, 255, 255, 255, 255, 255, 255, 245, 141, 24, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 181, 47, 5, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 4, 22, 39, 54, 86, 140, 189, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 230, 137, 30, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 215, 119, 76, 52, 45, 49, 59, 91, 146, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 238, 125, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 201, 30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 19, 30, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 230, 105, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 189, 23, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 3, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 251, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 212, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 213, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 184, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 238, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 196, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 255, 205, 133, 85, + 61, 63, 92, 144, 215, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 119, 70, 27, 4, 0, 0, 0, 0, 1, 6, 5, 9, 0, 142, + 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 208, 192, 148, 96, 52, 23, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 34, 170, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 189, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 169, 110, 58, 21, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 170, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 105, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 160, 100, 55, 24, 3, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 185, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 189, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, + 108, 26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 205, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 202, 175, 142, + 119, 101, 76, 51, 32, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, + 210, 184, 110, 38, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 189, 136, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 157, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 41, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 177, 210, 210, 210, 210, 210, 210, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 177, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 169, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 110, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 94, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 152, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 166, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 170, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 75, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 84, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 149, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 177, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 189, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 64, 189, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 80, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 81, 189, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 71, 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 78, 194, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 210, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 105, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, + 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 133, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 0, 210, 210, 210, 210, 210, 210, 210, 142, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 140, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 175, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 131, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 202, 119, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 160, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 149, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 180, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 202, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 177, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 164, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 135, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 9, 39, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 205, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 192, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 45, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 208, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 5, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 132, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 139, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 189, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 109, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 61, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 117, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 105, 1, + 0, 0, 0, 0, 0, 0, 0, 3, 109, 200, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 189, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 189, 35, 0, 0, 0, 0, 0, 0, 2, 90, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 202, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, + 37, 0, 0, 0, 1, 15, 102, 202, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 169, 103, 66, 63, 96, 160, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 161, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 142, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 196, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 55, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 108, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, + 152, 255, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 142, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 45, 169, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 136, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 169, 110, 45, + 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 75, 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 255, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 54, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 189, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 198, 121, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 63, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 255, 255, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 152, 44, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 67, 182, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 196, 134, 50, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 72, + 182, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 255, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 189, 105, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 63, 182, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 189, 136, 69, 21, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 68, 177, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 189, 117, 44, 5, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 86, 196, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 196, 161, 119, 77, 41, 16, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 94, 202, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 202, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 124, 202, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 177, + 0, 0, 0, 0, 0, 0, 0, 3, 48, 160, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 196, 134, 55, 0, 0, 0, 40, 117, + 189, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 8, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 255, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +/* Define image 'milla' of size 211x242x1x3 and type 'const unsigned char' */ +const unsigned char data_milla[] = { + 93, 92, 92, 91, 91, 90, 90, 90, 92, 90, 92, 91, 91, 92, 92, 92, + 93, 99, 97, 95, 101, 95, 89, 93, 92, 92, 94, 96, 97, 95, 95, 94, + 96, 96, 96, 96, 96, 96, 96, 96, 93, 94, 95, 96, 97, 98, 98, 98, + 94, 98, 98, 95, 96, 99, 99, 97, 99, 98, 98, 97, 97, 98, 98, 100, + 103, 103, 103, 102, 102, 103, 102, 102, 100, 101, 102, 101, 101, 101, 101, 100, + 102, 103, 103, 104, 103, 104, 104, 104, 104, 102, 104, 103, 103, 104, 104, 104, + 103, 103, 105, 104, 106, 105, 107, 105, 110, 107, 108, 105, 108, 107, 111, 110, + 108, 111, 108, 104, 112, 109, 108, 112, 112, 111, 115, 113, 113, 111, 115, 114, + 109, 108, 109, 110, 110, 110, 110, 109, 104, 111, 109, 105, 111, 108, 106, 112, + 107, 105, 104, 103, 104, 106, 109, 110, 110, 112, 108, 116, 112, 106, 108, 84, + 14, 31, 62, 66, 85, 85, 103, 106, 107, 109, 103, 105, 116, 114, 105, 109, + 112, 110, 110, 113, 113, 111, 112, 115, 116, 115, 113, 113, 115, 115, 113, 112, + 111, 112, 112, 112, 112, 111, 110, 109, 113, 113, 113, 112, 112, 111, 111, 111, + 114, 113, 113, 94, 94, 94, 93, 92, 91, 91, 91, 85, 85, 88, 88, 89, + 90, 88, 89, 93, 94, 94, 93, 92, 93, 95, 97, 93, 94, 96, 94, 93, + 92, 94, 94, 95, 95, 96, 95, 94, 92, 89, 88, 93, 93, 93, 93, 93, + 94, 96, 96, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, 98, 98, + 99, 99, 100, 98, 100, 102, 100, 99, 98, 98, 99, 100, 103, 104, 100, 100, + 103, 102, 99, 101, 101, 101, 102, 102, 103, 103, 103, 105, 104, 105, 105, 105, + 106, 106, 106, 102, 105, 106, 102, 104, 106, 107, 104, 104, 103, 104, 104, 105, + 105, 106, 105, 105, 106, 109, 108, 108, 106, 108, 108, 106, 109, 110, 106, 108, + 110, 111, 108, 112, 110, 106, 107, 111, 112, 109, 107, 110, 109, 107, 105, 106, + 106, 109, 110, 106, 109, 109, 106, 106, 109, 109, 106, 114, 109, 111, 110, 116, + 99, 108, 78, 9, 30, 59, 64, 90, 88, 99, 105, 107, 111, 104, 104, 114, + 112, 104, 104, 109, 107, 107, 110, 111, 108, 108, 112, 113, 113, 113, 113, 113, + 113, 113, 113, 110, 112, 114, 114, 112, 111, 111, 112, 114, 114, 112, 111, 111, + 111, 111, 111, 109, 116, 113, 93, 94, 92, 92, 91, 90, 90, 88, 89, 88, + 89, 90, 89, 89, 89, 91, 92, 94, 94, 93, 92, 93, 94, 97, 91, 92, + 92, 92, 90, 90, 91, 92, 93, 93, 94, 94, 94, 93, 92, 92, 96, 95, + 94, 93, 93, 93, 94, 94, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, + 99, 98, 98, 99, 99, 100, 98, 99, 101, 101, 100, 98, 99, 100, 100, 104, + 104, 101, 101, 104, 103, 99, 101, 101, 102, 102, 102, 103, 103, 103, 105, 105, + 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, 103, 103, + 104, 104, 104, 105, 105, 105, 104, 107, 109, 109, 108, 107, 108, 109, 106, 109, + 109, 106, 107, 110, 111, 108, 111, 110, 107, 108, 110, 111, 109, 108, 109, 109, + 107, 106, 106, 107, 108, 108, 108, 111, 111, 108, 108, 111, 111, 108, 113, 109, + 111, 109, 116, 100, 109, 78, 9, 30, 58, 62, 90, 88, 99, 105, 107, 109, + 103, 103, 114, 113, 104, 107, 110, 108, 108, 112, 112, 109, 110, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 110, 112, 114, 114, 112, 111, 111, 112, 114, 113, + 112, 111, 111, 111, 111, 112, 109, 116, 113, 92, 91, 91, 91, 90, 89, 87, + 87, 91, 91, 89, 89, 87, 89, 91, 92, 92, 94, 94, 94, 93, 93, 94, + 96, 91, 93, 92, 92, 91, 90, 91, 92, 92, 92, 92, 92, 93, 93, 94, + 95, 97, 96, 95, 94, 93, 93, 93, 93, 96, 96, 96, 97, 97, 98, 98, + 98, 100, 99, 99, 98, 98, 99, 99, 100, 98, 100, 102, 102, 100, 99, 100, + 101, 101, 104, 105, 102, 101, 103, 102, 98, 101, 102, 102, 102, 103, 103, 103, + 103, 105, 105, 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, + 104, 103, 104, 104, 104, 105, 105, 105, 105, 105, 108, 110, 110, 109, 108, 109, + 110, 106, 109, 109, 107, 107, 110, 111, 108, 109, 110, 110, 109, 109, 108, 109, + 110, 109, 109, 107, 107, 107, 107, 108, 108, 109, 112, 112, 109, 109, 112, 112, + 109, 111, 108, 110, 108, 116, 102, 110, 77, 10, 30, 59, 63, 90, 88, 99, + 105, 105, 108, 102, 102, 115, 114, 106, 108, 111, 109, 109, 113, 113, 110, 111, + 114, 113, 113, 113, 113, 113, 113, 113, 113, 110, 112, 114, 114, 112, 111, 111, + 112, 114, 113, 112, 111, 111, 111, 112, 112, 109, 116, 113, 92, 92, 91, 91, + 90, 90, 88, 88, 91, 90, 87, 86, 84, 86, 89, 91, 92, 94, 95, 94, + 93, 93, 94, 96, 94, 95, 95, 94, 93, 93, 94, 95, 94, 93, 92, 91, + 91, 93, 95, 96, 96, 96, 95, 94, 94, 94, 95, 95, 96, 96, 96, 97, + 97, 98, 98, 98, 100, 99, 99, 98, 98, 99, 99, 100, 99, 101, 103, 103, + 101, 100, 101, 102, 102, 105, 105, 102, 101, 103, 102, 98, 102, 102, 102, 103, + 103, 103, 104, 104, 105, 105, 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, + 103, 106, 106, 104, 104, 104, 104, 105, 105, 105, 106, 106, 106, 108, 110, 111, + 109, 109, 109, 111, 106, 109, 110, 107, 107, 111, 111, 108, 108, 111, 111, 110, + 108, 107, 108, 111, 109, 109, 108, 107, 107, 108, 108, 108, 108, 111, 111, 108, + 108, 111, 111, 108, 110, 108, 109, 107, 116, 103, 111, 75, 11, 31, 60, 63, + 90, 88, 99, 105, 106, 109, 103, 102, 114, 113, 105, 107, 110, 108, 109, 112, + 112, 110, 110, 113, 114, 114, 113, 113, 113, 113, 112, 112, 110, 112, 114, 114, + 112, 111, 111, 112, 113, 113, 112, 111, 111, 111, 112, 113, 109, 116, 113, 92, + 92, 92, 92, 92, 92, 90, 90, 92, 91, 88, 86, 87, 88, 89, 90, 91, + 93, 95, 95, 94, 93, 93, 95, 94, 96, 95, 95, 94, 94, 94, 96, 96, + 95, 93, 91, 91, 92, 93, 94, 93, 93, 93, 94, 95, 96, 98, 99, 96, + 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, 98, 98, 99, 99, 100, 99, + 101, 103, 103, 101, 100, 101, 102, 101, 104, 105, 102, 101, 103, 102, 98, 102, + 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 107, 107, 106, 102, + 105, 105, 102, 103, 106, 106, 104, 104, 104, 105, 105, 105, 106, 106, 106, 106, + 108, 110, 111, 109, 109, 109, 111, 107, 110, 110, 108, 108, 111, 112, 109, 108, + 111, 111, 110, 108, 107, 108, 111, 109, 109, 108, 109, 109, 108, 108, 108, 107, + 110, 110, 107, 107, 110, 110, 107, 109, 108, 110, 106, 116, 105, 110, 72, 12, + 32, 60, 64, 91, 88, 98, 105, 108, 111, 104, 103, 114, 112, 103, 105, 109, + 107, 107, 111, 111, 108, 109, 112, 114, 114, 114, 113, 113, 112, 112, 112, 110, + 112, 114, 114, 112, 111, 111, 112, 113, 112, 111, 111, 111, 112, 113, 113, 109, + 116, 113, 91, 92, 92, 92, 92, 93, 91, 91, 94, 93, 91, 90, 90, 91, + 93, 93, 91, 93, 95, 95, 94, 94, 93, 94, 92, 94, 93, 93, 92, 92, + 92, 94, 95, 94, 93, 93, 92, 92, 92, 92, 92, 93, 93, 94, 96, 98, + 99, 100, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, 98, 98, 99, + 99, 100, 98, 100, 102, 102, 100, 99, 100, 101, 100, 103, 104, 101, 101, 104, + 103, 100, 103, 103, 103, 103, 104, 104, 104, 105, 105, 105, 105, 106, 106, 107, + 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, 105, 105, 105, 105, 106, 106, + 106, 107, 105, 108, 110, 110, 109, 108, 109, 110, 107, 110, 111, 108, 108, 112, + 112, 109, 109, 110, 110, 109, 109, 108, 109, 110, 109, 109, 109, 109, 109, 109, + 108, 108, 106, 109, 109, 106, 106, 109, 109, 106, 110, 109, 110, 105, 115, 105, + 110, 68, 13, 33, 61, 64, 91, 88, 98, 105, 109, 111, 105, 103, 114, 111, + 102, 104, 108, 106, 107, 110, 110, 108, 108, 111, 115, 115, 114, 113, 113, 112, + 111, 111, 110, 112, 114, 114, 112, 111, 111, 112, 112, 112, 111, 111, 111, 112, + 113, 114, 109, 116, 113, 90, 90, 91, 89, 89, 90, 90, 90, 93, 93, 93, + 93, 93, 92, 92, 92, 90, 93, 95, 96, 95, 94, 93, 94, 93, 94, 94, + 93, 92, 92, 92, 94, 92, 92, 93, 94, 94, 94, 93, 93, 94, 94, 94, + 95, 96, 97, 98, 99, 96, 96, 96, 97, 97, 98, 98, 98, 100, 99, 99, + 98, 98, 99, 99, 100, 98, 99, 101, 101, 100, 98, 99, 100, 98, 102, 103, + 101, 102, 105, 105, 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 105, 105, + 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, 105, 105, 105, + 106, 106, 106, 107, 107, 104, 107, 109, 109, 108, 107, 108, 109, 107, 110, 111, + 108, 109, 112, 112, 109, 111, 110, 107, 108, 110, 111, 109, 108, 109, 109, 109, + 110, 110, 109, 108, 108, 107, 110, 110, 107, 107, 110, 110, 107, 111, 111, 111, + 104, 115, 106, 108, 64, 13, 34, 62, 65, 91, 88, 98, 104, 108, 110, 104, + 103, 114, 112, 103, 106, 109, 107, 108, 111, 111, 109, 109, 112, 115, 115, 114, + 113, 113, 112, 111, 111, 110, 112, 114, 114, 112, 111, 111, 112, 112, 111, 111, + 111, 111, 112, 113, 114, 109, 116, 113, 87, 87, 87, 88, 88, 89, 89, 89, + 90, 91, 91, 92, 92, 91, 90, 90, 90, 93, 95, 96, 95, 94, 93, 94, + 95, 97, 96, 96, 95, 94, 95, 96, 88, 89, 92, 94, 95, 96, 95, 95, + 96, 96, 95, 95, 95, 96, 97, 97, 96, 96, 96, 97, 97, 98, 98, 98, + 100, 99, 99, 98, 98, 99, 99, 100, 97, 99, 101, 100, 99, 98, 98, 99, + 97, 101, 102, 101, 102, 106, 106, 103, 103, 103, 103, 104, 104, 105, 105, 105, + 105, 105, 105, 106, 106, 107, 107, 106, 102, 105, 105, 102, 103, 106, 106, 104, + 105, 105, 105, 106, 106, 107, 107, 107, 104, 106, 108, 108, 107, 106, 107, 108, + 107, 111, 111, 108, 109, 112, 112, 110, 112, 110, 106, 107, 111, 112, 109, 107, + 108, 109, 110, 111, 111, 110, 108, 107, 109, 112, 112, 109, 109, 112, 112, 109, + 111, 112, 112, 104, 115, 106, 108, 62, 14, 34, 62, 65, 91, 88, 98, 104, + 105, 108, 102, 102, 114, 113, 105, 108, 110, 109, 109, 112, 113, 110, 110, 114, + 115, 115, 114, 113, 113, 112, 111, 111, 110, 112, 114, 114, 112, 111, 111, 112, + 111, 111, 111, 111, 111, 112, 114, 114, 109, 116, 113, 91, 91, 92, 92, 92, + 91, 90, 90, 92, 91, 90, 91, 93, 94, 93, 92, 94, 94, 94, 94, 94, + 94, 93, 93, 95, 96, 94, 95, 95, 94, 93, 92, 94, 91, 91, 94, 94, + 91, 91, 94, 97, 96, 96, 96, 96, 97, 98, 99, 101, 100, 98, 96, 95, + 95, 96, 96, 99, 100, 101, 102, 102, 100, 99, 98, 100, 99, 99, 99, 99, + 100, 101, 102, 106, 105, 103, 102, 101, 101, 102, 103, 104, 104, 104, 105, 105, + 106, 106, 106, 106, 106, 107, 107, 107, 108, 108, 107, 107, 105, 104, 104, 106, + 106, 105, 104, 110, 104, 107, 109, 103, 106, 111, 106, 108, 108, 108, 109, 109, + 110, 110, 110, 111, 110, 110, 110, 110, 110, 109, 109, 115, 114, 110, 110, 110, + 110, 111, 112, 110, 110, 109, 109, 109, 109, 109, 109, 110, 112, 111, 107, 107, + 111, 112, 110, 117, 109, 114, 111, 113, 102, 107, 58, 13, 37, 65, 65, 92, + 92, 102, 106, 113, 106, 104, 108, 113, 111, 106, 106, 110, 109, 110, 112, 111, + 107, 108, 112, 116, 115, 113, 111, 109, 108, 108, 107, 110, 114, 115, 112, 112, + 114, 112, 108, 117, 115, 111, 108, 108, 110, 113, 115, 108, 117, 115, 90, 90, + 91, 92, 91, 91, 91, 90, 92, 91, 90, 91, 93, 94, 95, 94, 94, 94, + 94, 94, 94, 94, 93, 93, 95, 96, 94, 95, 95, 94, 93, 92, 95, 92, + 92, 95, 95, 92, 92, 95, 97, 96, 96, 96, 96, 97, 98, 99, 96, 96, + 96, 96, 97, 98, 99, 100, 99, 100, 100, 101, 101, 100, 100, 99, 100, 100, + 99, 99, 100, 100, 101, 102, 104, 103, 102, 102, 102, 103, 104, 105, 104, 104, + 104, 105, 105, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 106, 104, + 102, 103, 105, 105, 104, 103, 109, 103, 107, 109, 103, 106, 110, 105, 108, 108, + 108, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 112, 111, + 108, 108, 108, 108, 108, 109, 110, 110, 109, 109, 109, 109, 109, 109, 109, 112, + 111, 108, 108, 111, 112, 109, 113, 107, 112, 109, 114, 104, 109, 60, 14, 37, + 65, 65, 92, 92, 102, 106, 113, 106, 104, 108, 113, 111, 106, 106, 110, 109, + 110, 112, 111, 107, 108, 113, 114, 114, 113, 112, 111, 111, 112, 112, 111, 114, + 114, 111, 111, 113, 112, 109, 116, 114, 111, 109, 109, 110, 112, 114, 112, 116, + 112, 90, 88, 90, 90, 90, 90, 91, 91, 92, 91, 92, 93, 95, 96, 96, + 94, 94, 94, 94, 94, 94, 95, 94, 94, 95, 96, 94, 95, 95, 94, 93, + 92, 95, 92, 92, 95, 95, 92, 92, 95, 97, 96, 96, 96, 96, 97, 98, + 99, 95, 95, 96, 98, 99, 99, 99, 99, 100, 100, 100, 99, 99, 100, 100, + 101, 100, 100, 99, 99, 100, 101, 102, 102, 102, 102, 101, 102, 103, 104, 105, + 106, 104, 104, 104, 105, 105, 106, 106, 106, 105, 105, 105, 106, 106, 107, 107, + 106, 105, 103, 102, 102, 104, 105, 103, 102, 109, 103, 106, 108, 102, 105, 110, + 105, 108, 108, 108, 109, 109, 110, 110, 110, 109, 109, 109, 110, 111, 111, 112, + 112, 112, 111, 109, 108, 108, 109, 108, 109, 110, 110, 109, 109, 109, 109, 109, + 109, 108, 111, 112, 109, 109, 112, 111, 108, 110, 105, 110, 108, 114, 107, 112, + 60, 14, 38, 66, 66, 92, 92, 102, 105, 113, 106, 104, 108, 113, 111, 106, + 106, 110, 109, 110, 113, 111, 108, 109, 113, 112, 112, 112, 112, 113, 114, 115, + 116, 112, 115, 114, 110, 110, 113, 113, 110, 114, 113, 112, 111, 111, 111, 112, + 112, 114, 116, 109, 90, 88, 89, 89, 90, 90, 92, 92, 92, 91, 92, 93, + 95, 96, 96, 94, 96, 94, 94, 95, 95, 95, 94, 95, 95, 96, 94, 95, + 95, 94, 93, 92, 95, 92, 92, 95, 95, 92, 92, 95, 97, 96, 96, 96, + 96, 97, 98, 99, 97, 98, 99, 100, 99, 98, 96, 95, 101, 100, 99, 98, + 98, 100, 101, 102, 101, 100, 100, 100, 100, 101, 102, 103, 102, 102, 102, 102, + 103, 104, 104, 105, 104, 104, 104, 105, 105, 106, 106, 106, 105, 105, 105, 105, + 106, 106, 107, 106, 106, 104, 103, 103, 105, 105, 104, 103, 108, 103, 106, 108, + 102, 105, 109, 105, 108, 108, 108, 109, 109, 110, 110, 110, 108, 109, 109, 110, + 111, 112, 113, 113, 113, 113, 111, 111, 111, 111, 110, 110, 111, 111, 110, 110, + 110, 110, 110, 110, 107, 111, 112, 110, 110, 112, 111, 107, 109, 105, 110, 107, + 114, 108, 112, 57, 15, 38, 66, 66, 93, 92, 102, 105, 113, 106, 104, 108, + 113, 111, 106, 106, 109, 109, 110, 113, 112, 108, 110, 114, 112, 112, 111, 112, + 112, 113, 115, 115, 113, 115, 113, 109, 109, 112, 113, 111, 112, 113, 113, 113, + 112, 112, 111, 110, 113, 116, 110, 90, 87, 87, 87, 89, 90, 93, 93, 92, + 91, 92, 93, 96, 97, 96, 94, 96, 94, 94, 95, 95, 96, 95, 96, 95, + 96, 94, 95, 95, 94, 93, 92, 96, 93, 93, 96, 96, 93, 93, 96, 97, + 96, 96, 96, 96, 97, 98, 99, 97, 98, 99, 100, 100, 99, 97, 96, 100, + 100, 99, 98, 99, 100, 102, 103, 101, 101, 100, 100, 101, 101, 102, 103, 104, + 104, 104, 104, 103, 102, 102, 101, 104, 104, 104, 105, 105, 106, 106, 106, 105, + 105, 105, 106, 106, 107, 107, 106, 108, 106, 105, 105, 107, 107, 106, 105, 109, + 103, 106, 108, 102, 105, 110, 105, 108, 108, 108, 109, 109, 110, 110, 110, 109, + 109, 110, 111, 112, 113, 113, 114, 113, 113, 111, 111, 111, 111, 110, 110, 111, + 111, 110, 110, 110, 110, 110, 110, 107, 111, 112, 110, 110, 112, 111, 107, 111, + 108, 112, 106, 113, 108, 109, 52, 16, 39, 67, 67, 93, 92, 102, 105, 113, + 106, 104, 108, 113, 111, 106, 106, 109, 109, 110, 113, 112, 109, 111, 115, 113, + 112, 111, 111, 110, 111, 111, 111, 113, 115, 113, 109, 109, 112, 113, 111, 112, + 112, 113, 113, 113, 112, 111, 110, 109, 117, 114, 88, 87, 86, 86, 89, 90, + 93, 95, 92, 91, 92, 93, 96, 97, 96, 95, 96, 94, 95, 95, 96, 97, + 96, 96, 95, 96, 94, 95, 95, 94, 93, 92, 96, 93, 93, 96, 96, 93, + 93, 96, 97, 96, 96, 96, 96, 97, 98, 99, 94, 95, 97, 99, 100, 101, + 102, 102, 99, 99, 99, 99, 100, 101, 102, 103, 101, 101, 101, 101, 101, 102, + 103, 103, 104, 104, 105, 104, 103, 102, 101, 100, 104, 104, 104, 105, 105, 106, + 106, 106, 106, 106, 107, 107, 107, 108, 108, 107, 109, 107, 105, 106, 108, 108, + 107, 106, 110, 104, 107, 109, 103, 106, 111, 106, 108, 108, 108, 109, 109, 110, + 110, 110, 110, 110, 111, 111, 112, 113, 113, 113, 110, 111, 109, 110, 110, 109, + 108, 107, 112, 112, 111, 111, 111, 111, 111, 111, 108, 111, 112, 109, 109, 112, + 111, 108, 112, 110, 113, 106, 113, 108, 108, 47, 17, 40, 68, 67, 93, 92, + 102, 105, 113, 106, 104, 108, 113, 111, 106, 106, 109, 109, 110, 114, 113, 110, + 111, 116, 114, 113, 112, 110, 109, 109, 109, 109, 112, 115, 114, 110, 110, 113, + 113, 110, 112, 113, 113, 113, 113, 112, 111, 110, 108, 117, 116, 88, 86, 86, + 85, 88, 90, 93, 95, 92, 93, 92, 93, 96, 97, 97, 95, 96, 94, 95, + 95, 96, 97, 97, 97, 95, 96, 94, 95, 95, 94, 93, 92, 96, 93, 93, + 96, 96, 93, 93, 96, 97, 96, 96, 96, 96, 97, 98, 99, 95, 96, 96, + 97, 99, 101, 103, 104, 97, 98, 99, 100, 101, 102, 102, 102, 102, 101, 101, + 101, 101, 102, 103, 104, 102, 103, 104, 104, 104, 103, 102, 101, 104, 104, 104, + 105, 105, 106, 106, 106, 107, 107, 108, 108, 109, 109, 109, 108, 108, 106, 105, + 105, 107, 108, 106, 105, 111, 105, 109, 110, 105, 107, 112, 107, 108, 108, 108, + 109, 109, 110, 110, 110, 111, 112, 112, 112, 112, 112, 112, 112, 110, 110, 109, + 110, 110, 109, 107, 107, 112, 112, 111, 111, 111, 111, 111, 111, 109, 112, 111, + 108, 108, 111, 112, 109, 112, 110, 113, 105, 113, 109, 108, 45, 18, 41, 68, + 68, 93, 92, 102, 105, 113, 106, 104, 108, 113, 111, 106, 106, 109, 109, 110, + 114, 113, 110, 112, 117, 115, 114, 113, 111, 111, 110, 110, 110, 111, 114, 114, + 111, 111, 113, 112, 109, 113, 113, 113, 112, 112, 111, 111, 111, 110, 117, 113, + 90, 87, 88, 87, 88, 90, 93, 96, 92, 93, 92, 93, 95, 96, 96, 94, + 94, 94, 95, 96, 97, 97, 97, 98, 95, 96, 94, 95, 95, 94, 94, 92, + 97, 94, 94, 97, 97, 94, 94, 97, 97, 96, 96, 97, 97, 98, 99, 100, + 100, 99, 98, 97, 97, 99, 100, 101, 96, 97, 99, 101, 102, 102, 101, 101, + 102, 101, 101, 100, 101, 101, 103, 103, 99, 100, 102, 103, 104, 104, 103, 103, + 105, 105, 105, 106, 106, 107, 107, 106, 108, 108, 108, 108, 108, 109, 109, 107, + 107, 106, 105, 104, 107, 106, 105, 104, 112, 106, 110, 111, 105, 108, 113, 108, + 108, 108, 108, 109, 109, 110, 111, 111, 114, 114, 113, 113, 113, 112, 112, 111, + 112, 112, 112, 113, 113, 112, 109, 109, 112, 112, 111, 111, 111, 111, 111, 111, + 110, 112, 111, 107, 107, 111, 112, 110, 110, 109, 112, 104, 113, 111, 109, 45, + 17, 41, 69, 70, 94, 93, 104, 106, 113, 105, 104, 108, 111, 111, 108, 108, + 110, 109, 111, 114, 113, 111, 112, 117, 115, 114, 113, 112, 112, 112, 113, 113, + 110, 114, 115, 112, 112, 114, 112, 108, 114, 113, 112, 111, 111, 111, 112, 112, + 114, 116, 109, 91, 91, 89, 90, 90, 91, 91, 91, 92, 91, 91, 91, 91, + 92, 92, 93, 92, 92, 92, 93, 93, 94, 94, 94, 96, 96, 96, 97, 97, + 98, 98, 96, 92, 93, 94, 95, 95, 95, 96, 95, 95, 96, 98, 100, 98, + 98, 100, 101, 99, 98, 98, 99, 99, 100, 100, 100, 102, 102, 102, 101, 101, + 100, 100, 100, 99, 106, 103, 98, 104, 99, 98, 103, 98, 102, 100, 96, 96, + 103, 105, 105, 109, 112, 112, 113, 111, 110, 109, 106, 106, 113, 108, 104, 106, + 103, 98, 108, 103, 108, 109, 105, 108, 110, 106, 98, 114, 110, 108, 110, 110, + 107, 107, 111, 109, 108, 107, 109, 110, 112, 113, 113, 113, 114, 114, 114, 115, + 112, 112, 111, 112, 112, 113, 113, 111, 111, 111, 112, 110, 111, 111, 110, 109, + 110, 112, 115, 107, 110, 112, 111, 108, 106, 107, 109, 112, 104, 112, 107, 108, + 105, 108, 41, 16, 44, 67, 77, 94, 102, 105, 109, 115, 104, 100, 108, 113, + 110, 107, 110, 112, 110, 110, 113, 114, 111, 111, 115, 112, 114, 116, 115, 113, + 112, 114, 116, 111, 115, 115, 112, 111, 113, 112, 108, 114, 113, 112, 111, 111, + 111, 111, 112, 110, 111, 112, 92, 92, 92, 92, 92, 93, 91, 91, 93, 93, + 91, 91, 92, 93, 92, 92, 92, 92, 93, 93, 93, 94, 94, 94, 96, 96, + 96, 97, 97, 98, 98, 96, 93, 91, 93, 94, 94, 95, 96, 96, 95, 97, + 100, 100, 100, 99, 101, 101, 99, 98, 98, 99, 99, 100, 100, 100, 102, 102, + 102, 101, 101, 100, 100, 100, 100, 107, 103, 100, 104, 101, 98, 105, 98, 101, + 100, 97, 98, 103, 104, 104, 109, 110, 110, 109, 109, 107, 107, 106, 99, 105, + 102, 98, 102, 99, 96, 105, 101, 104, 104, 100, 103, 106, 105, 100, 108, 104, + 101, 103, 102, 98, 98, 101, 105, 105, 106, 108, 111, 111, 112, 110, 115, 115, + 115, 113, 114, 113, 113, 114, 109, 110, 111, 110, 107, 107, 108, 109, 110, 111, + 111, 110, 110, 111, 113, 116, 108, 111, 113, 112, 109, 107, 108, 109, 114, 107, + 114, 108, 108, 104, 106, 37, 17, 44, 67, 78, 96, 104, 106, 109, 114, 103, + 99, 106, 112, 109, 108, 110, 112, 110, 110, 113, 114, 111, 111, 115, 112, 114, + 116, 115, 113, 112, 114, 116, 110, 114, 114, 111, 111, 113, 113, 109, 114, 113, + 112, 111, 111, 111, 111, 112, 112, 113, 113, 92, 93, 92, 92, 93, 93, 91, + 91, 94, 94, 93, 93, 93, 94, 93, 93, 92, 93, 93, 93, 94, 94, 94, + 94, 96, 96, 96, 97, 97, 98, 98, 96, 94, 92, 93, 92, 93, 94, 97, + 98, 95, 97, 100, 100, 100, 100, 101, 102, 99, 98, 98, 99, 99, 100, 100, + 100, 102, 102, 101, 101, 101, 101, 100, 100, 103, 110, 107, 104, 108, 105, 100, + 107, 101, 104, 105, 103, 103, 106, 106, 103, 107, 104, 102, 100, 100, 101, 103, + 104, 97, 104, 102, 98, 103, 101, 98, 105, 106, 106, 104, 101, 104, 108, 108, + 106, 110, 107, 106, 108, 108, 105, 106, 108, 102, 104, 105, 107, 108, 109, 108, + 108, 113, 113, 111, 108, 108, 107, 108, 108, 111, 111, 111, 110, 108, 109, 112, + 112, 109, 110, 111, 112, 113, 114, 116, 118, 111, 112, 113, 113, 111, 109, 110, + 110, 117, 109, 116, 110, 109, 104, 105, 35, 17, 44, 67, 79, 96, 104, 106, + 109, 112, 101, 98, 105, 112, 109, 107, 110, 112, 110, 110, 113, 114, 111, 111, + 115, 113, 114, 115, 115, 113, 113, 114, 115, 109, 113, 113, 111, 111, 114, 114, + 110, 114, 113, 112, 111, 111, 111, 111, 112, 114, 114, 114, 93, 93, 92, 93, + 93, 93, 92, 92, 94, 94, 93, 92, 93, 94, 93, 93, 93, 93, 93, 94, + 94, 94, 95, 95, 96, 96, 96, 97, 97, 98, 98, 96, 95, 92, 92, 91, + 92, 94, 97, 99, 96, 97, 101, 100, 100, 100, 101, 102, 99, 98, 98, 99, + 99, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 102, 103, 111, 108, 105, + 109, 106, 103, 109, 104, 104, 108, 107, 107, 108, 107, 103, 103, 99, 97, 95, + 95, 97, 100, 102, 101, 108, 104, 101, 106, 105, 101, 106, 102, 99, 100, 100, + 103, 105, 105, 104, 108, 105, 105, 108, 109, 108, 111, 113, 111, 112, 114, 114, + 114, 115, 116, 117, 118, 117, 115, 113, 111, 110, 111, 111, 113, 114, 113, 111, + 108, 108, 112, 115, 106, 108, 112, 112, 114, 116, 119, 120, 112, 112, 113, 113, + 112, 112, 111, 111, 116, 109, 116, 110, 109, 105, 106, 35, 18, 45, 68, 79, + 96, 104, 106, 109, 111, 100, 97, 105, 111, 108, 107, 110, 112, 110, 110, 113, + 114, 111, 111, 115, 114, 114, 114, 114, 114, 114, 114, 114, 108, 112, 113, 111, + 112, 115, 115, 111, 114, 113, 112, 111, 111, 111, 111, 112, 114, 114, 113, 93, + 93, 93, 93, 93, 94, 92, 92, 93, 93, 92, 92, 92, 93, 92, 92, 93, + 93, 94, 94, 94, 95, 95, 95, 96, 96, 96, 97, 97, 98, 98, 96, 96, + 94, 92, 91, 93, 95, 97, 99, 96, 98, 101, 101, 100, 99, 101, 102, 99, + 98, 98, 99, 99, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 102, 104, + 113, 110, 107, 111, 108, 105, 110, 107, 106, 109, 110, 111, 109, 108, 104, 99, + 93, 91, 90, 92, 95, 99, 102, 101, 107, 104, 102, 110, 109, 104, 110, 112, + 112, 115, 118, 120, 119, 117, 116, 121, 117, 118, 121, 121, 118, 119, 123, 122, + 122, 123, 121, 120, 121, 125, 128, 123, 123, 121, 122, 122, 123, 124, 124, 120, + 120, 117, 112, 108, 106, 107, 108, 104, 107, 112, 113, 115, 116, 119, 120, 115, + 112, 112, 113, 113, 113, 112, 111, 113, 106, 115, 110, 110, 106, 106, 36, 19, + 46, 69, 80, 97, 104, 106, 109, 111, 100, 97, 104, 111, 109, 107, 110, 112, + 110, 110, 113, 114, 111, 111, 115, 114, 114, 114, 114, 114, 114, 114, 114, 108, + 112, 113, 111, 112, 115, 115, 111, 114, 113, 112, 111, 111, 111, 111, 112, 112, + 112, 112, 94, 94, 93, 93, 94, 94, 92, 93, 93, 93, 91, 91, 92, 93, + 92, 92, 94, 94, 94, 94, 95, 95, 95, 96, 96, 96, 96, 97, 97, 98, + 98, 96, 95, 94, 93, 92, 94, 95, 97, 98, 96, 98, 101, 101, 100, 100, + 101, 101, 98, 98, 98, 99, 99, 100, 100, 100, 100, 100, 101, 101, 101, 101, + 102, 103, 103, 110, 108, 105, 109, 106, 103, 110, 109, 107, 107, 111, 111, 108, + 107, 105, 98, 94, 92, 93, 94, 98, 101, 105, 107, 112, 110, 110, 119, 119, + 116, 123, 125, 126, 128, 133, 135, 131, 130, 130, 132, 130, 128, 130, 129, 124, + 123, 126, 123, 124, 124, 121, 120, 121, 125, 128, 121, 122, 123, 126, 127, 129, + 131, 129, 133, 132, 128, 125, 117, 112, 108, 106, 105, 107, 111, 112, 114, 117, + 118, 118, 113, 111, 111, 112, 114, 114, 113, 111, 111, 105, 114, 110, 110, 105, + 105, 35, 20, 47, 70, 80, 97, 104, 106, 109, 111, 100, 97, 105, 112, 110, + 108, 112, 112, 110, 110, 113, 114, 111, 111, 115, 115, 114, 113, 113, 115, 115, + 114, 113, 109, 113, 113, 111, 111, 114, 114, 110, 114, 113, 112, 111, 111, 111, + 111, 112, 112, 111, 111, 94, 94, 93, 94, 94, 94, 93, 93, 94, 94, 93, + 93, 93, 94, 93, 94, 94, 94, 94, 95, 95, 95, 96, 96, 96, 96, 96, + 97, 97, 98, 98, 96, 94, 94, 94, 95, 95, 96, 97, 97, 97, 98, 100, + 99, 98, 98, 99, 101, 98, 98, 98, 99, 99, 100, 100, 100, 100, 100, 100, + 101, 101, 102, 102, 102, 100, 106, 104, 101, 105, 102, 99, 106, 110, 105, 105, + 108, 108, 105, 105, 107, 102, 100, 102, 103, 105, 107, 110, 113, 117, 123, 118, + 117, 126, 125, 120, 126, 124, 123, 122, 127, 130, 126, 125, 127, 132, 130, 129, + 131, 130, 127, 128, 131, 131, 137, 141, 140, 136, 134, 136, 139, 134, 135, 136, + 138, 138, 137, 134, 128, 137, 134, 134, 133, 126, 120, 116, 112, 106, 107, 111, + 112, 112, 114, 115, 115, 112, 110, 109, 111, 114, 114, 113, 110, 111, 105, 114, + 109, 109, 103, 102, 31, 21, 47, 70, 81, 97, 105, 105, 109, 111, 101, 98, + 106, 113, 111, 110, 113, 112, 110, 110, 113, 114, 111, 111, 115, 116, 114, 112, + 113, 115, 116, 114, 112, 110, 114, 114, 111, 111, 113, 113, 109, 114, 113, 112, + 111, 111, 111, 111, 112, 114, 113, 112, 94, 94, 93, 94, 94, 95, 93, 93, + 96, 96, 94, 94, 94, 95, 94, 95, 94, 94, 94, 95, 95, 96, 96, 96, + 96, 96, 96, 97, 97, 98, 98, 98, 94, 94, 95, 96, 96, 96, 97, 96, + 97, 98, 100, 100, 98, 98, 100, 101, 98, 98, 98, 99, 99, 100, 100, 100, + 100, 100, 100, 101, 101, 102, 102, 101, 96, 101, 98, 97, 101, 99, 96, 105, + 109, 105, 103, 107, 106, 103, 104, 111, 109, 112, 113, 117, 118, 120, 123, 125, + 127, 131, 123, 120, 126, 121, 114, 121, 139, 137, 134, 138, 139, 137, 136, 140, + 149, 148, 149, 155, 156, 155, 157, 161, 152, 159, 165, 166, 164, 158, 158, 158, + 157, 157, 157, 156, 152, 147, 142, 133, 130, 127, 132, 133, 131, 126, 122, 118, + 111, 111, 111, 112, 111, 110, 111, 112, 111, 109, 108, 110, 113, 114, 112, 109, + 113, 106, 115, 109, 107, 101, 99, 28, 21, 48, 70, 81, 97, 105, 105, 109, + 112, 101, 98, 106, 114, 112, 111, 114, 112, 110, 110, 113, 114, 111, 111, 115, + 116, 114, 112, 113, 115, 116, 114, 112, 111, 115, 115, 112, 111, 113, 112, 108, + 114, 113, 112, 111, 111, 111, 111, 112, 116, 115, 113, 95, 97, 97, 96, 94, + 93, 92, 94, 92, 93, 94, 96, 96, 96, 93, 92, 93, 92, 90, 90, 91, + 93, 96, 98, 99, 98, 97, 95, 95, 96, 97, 98, 99, 97, 95, 96, 100, + 101, 99, 97, 97, 98, 99, 99, 97, 97, 99, 100, 100, 101, 101, 102, 102, + 101, 101, 100, 96, 99, 102, 102, 99, 98, 99, 99, 98, 94, 94, 96, 97, + 99, 100, 103, 97, 103, 107, 106, 103, 101, 102, 110, 120, 121, 127, 129, 122, + 125, 131, 128, 119, 121, 117, 119, 128, 124, 123, 137, 147, 148, 152, 155, 150, + 158, 164, 155, 172, 171, 169, 172, 173, 169, 169, 173, 166, 179, 177, 184, 178, + 167, 183, 188, 186, 178, 179, 160, 170, 157, 161, 144, 139, 138, 133, 122, 121, + 134, 138, 133, 121, 122, 112, 106, 108, 106, 103, 113, 109, 110, 111, 112, 112, + 113, 114, 114, 114, 108, 115, 107, 108, 107, 106, 32, 20, 53, 67, 84, 101, + 101, 110, 107, 113, 96, 97, 109, 111, 112, 115, 112, 111, 114, 107, 116, 116, + 107, 114, 111, 113, 113, 114, 114, 114, 113, 112, 112, 112, 113, 113, 114, 114, + 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 109, 111, 112, 92, 94, + 94, 93, 91, 91, 90, 91, 94, 95, 94, 94, 94, 93, 91, 90, 95, 94, + 93, 93, 94, 96, 98, 99, 98, 97, 97, 96, 96, 97, 97, 98, 99, 97, + 95, 97, 99, 101, 99, 97, 97, 98, 99, 99, 97, 97, 99, 100, 100, 100, + 101, 101, 101, 101, 100, 100, 102, 104, 105, 104, 101, 100, 101, 100, 95, 92, + 93, 95, 96, 97, 99, 102, 100, 103, 110, 113, 112, 111, 111, 118, 136, 133, + 130, 126, 118, 119, 127, 125, 125, 133, 134, 139, 148, 145, 143, 157, 157, 157, + 162, 162, 158, 164, 169, 161, 181, 178, 177, 180, 181, 178, 178, 182, 175, 180, + 173, 182, 181, 173, 185, 185, 178, 173, 176, 161, 172, 162, 169, 157, 151, 147, + 141, 137, 130, 127, 130, 132, 138, 132, 117, 111, 116, 111, 104, 108, 112, 112, + 112, 112, 112, 112, 112, 112, 115, 110, 117, 109, 108, 105, 103, 28, 21, 53, + 68, 84, 101, 101, 110, 107, 113, 96, 98, 109, 111, 112, 115, 112, 111, 114, + 107, 116, 116, 107, 114, 111, 112, 113, 113, 114, 114, 113, 113, 112, 112, 113, + 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 110, 112, + 113, 92, 93, 93, 93, 91, 91, 90, 92, 96, 95, 93, 92, 91, 91, 89, + 89, 94, 94, 94, 95, 96, 97, 97, 98, 96, 97, 97, 98, 98, 97, 97, + 97, 100, 99, 98, 99, 101, 102, 99, 98, 96, 97, 99, 99, 96, 96, 98, + 99, 99, 99, 100, 100, 100, 100, 99, 99, 105, 105, 105, 104, 101, 101, 102, + 100, 95, 94, 96, 98, 101, 103, 105, 108, 114, 116, 117, 117, 117, 112, 107, + 113, 137, 135, 133, 133, 128, 134, 140, 137, 135, 144, 147, 153, 161, 157, 156, + 167, 159, 156, 160, 159, 155, 160, 165, 158, 168, 166, 166, 169, 169, 168, 169, + 172, 172, 171, 158, 168, 174, 168, 176, 170, 163, 164, 169, 156, 163, 156, 164, + 159, 163, 153, 150, 151, 140, 124, 124, 131, 141, 139, 130, 122, 120, 111, 104, + 111, 114, 114, 114, 113, 112, 111, 111, 110, 115, 111, 119, 111, 109, 105, 100, + 23, 22, 54, 68, 84, 100, 101, 110, 107, 112, 97, 99, 110, 111, 111, 114, + 111, 111, 114, 107, 116, 116, 107, 114, 111, 112, 112, 113, 114, 114, 113, 113, + 112, 112, 113, 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, + 114, 111, 113, 114, 95, 96, 97, 96, 95, 95, 94, 96, 95, 94, 91, 90, + 90, 91, 90, 91, 91, 92, 93, 94, 95, 95, 94, 94, 95, 96, 97, 99, + 99, 98, 97, 96, 99, 99, 99, 100, 100, 101, 99, 99, 96, 97, 99, 99, + 96, 96, 98, 99, 98, 99, 99, 100, 100, 99, 99, 98, 102, 102, 101, 100, + 100, 100, 101, 102, 102, 103, 106, 109, 112, 113, 115, 118, 121, 119, 117, 116, + 114, 113, 107, 112, 137, 139, 142, 151, 151, 156, 157, 148, 149, 154, 150, 153, + 162, 158, 156, 163, 156, 153, 157, 156, 148, 153, 158, 150, 155, 152, 152, 155, + 156, 154, 155, 158, 165, 163, 149, 159, 163, 159, 167, 162, 159, 162, 165, 156, + 154, 153, 155, 157, 167, 163, 159, 158, 152, 140, 135, 132, 127, 139, 141, 133, + 122, 109, 107, 119, 114, 114, 113, 113, 113, 112, 112, 112, 113, 110, 119, 112, + 111, 105, 99, 21, 23, 55, 68, 84, 100, 101, 110, 108, 112, 97, 100, 111, + 111, 110, 113, 111, 111, 114, 107, 116, 116, 107, 114, 111, 111, 112, 113, 114, + 114, 114, 113, 113, 112, 113, 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, + 112, 113, 113, 114, 112, 114, 114, 95, 97, 98, 97, 96, 96, 96, 97, 92, + 91, 90, 90, 91, 93, 93, 94, 92, 93, 94, 95, 95, 95, 94, 94, 94, + 95, 97, 98, 99, 98, 97, 97, 100, 100, 101, 101, 100, 100, 99, 99, 96, + 97, 98, 98, 96, 96, 96, 99, 98, 99, 99, 100, 100, 99, 99, 98, 100, + 100, 99, 100, 101, 102, 102, 105, 112, 116, 116, 116, 117, 117, 119, 122, 119, + 117, 115, 117, 122, 125, 128, 134, 156, 155, 157, 162, 159, 161, 159, 147, 162, + 157, 147, 148, 161, 160, 155, 158, 154, 150, 155, 153, 144, 150, 155, 149, 151, + 148, 149, 151, 152, 149, 150, 154, 153, 156, 148, 155, 155, 147, 158, 157, 158, + 163, 162, 158, 150, 153, 151, 154, 164, 168, 163, 158, 159, 162, 155, 139, 127, + 135, 137, 134, 132, 123, 117, 123, 113, 112, 113, 113, 113, 114, 114, 114, 111, + 108, 118, 112, 111, 105, 99, 21, 25, 56, 69, 84, 100, 101, 111, 108, 111, + 98, 102, 112, 111, 109, 112, 111, 111, 114, 107, 116, 116, 107, 114, 111, 111, + 112, 113, 114, 114, 114, 114, 114, 112, 113, 113, 114, 114, 113, 113, 112, 114, + 113, 113, 112, 112, 113, 113, 114, 112, 114, 114, 93, 94, 95, 95, 94, 94, + 94, 96, 90, 90, 90, 91, 93, 95, 94, 95, 97, 97, 97, 97, 97, 97, + 97, 97, 94, 95, 96, 97, 98, 98, 98, 98, 99, 100, 102, 102, 99, 99, + 99, 100, 96, 97, 98, 98, 96, 96, 96, 97, 99, 99, 100, 100, 100, 100, + 99, 99, 101, 101, 101, 102, 104, 104, 103, 107, 117, 120, 119, 117, 114, 115, + 116, 119, 126, 127, 126, 129, 133, 140, 145, 151, 173, 168, 167, 167, 161, 165, + 168, 161, 166, 159, 147, 147, 159, 159, 156, 162, 156, 155, 161, 159, 149, 153, + 159, 154, 155, 152, 151, 153, 153, 150, 151, 154, 150, 156, 151, 158, 157, 146, + 159, 160, 158, 165, 159, 162, 153, 162, 157, 160, 157, 165, 165, 159, 164, 174, + 168, 150, 146, 139, 126, 127, 142, 143, 129, 121, 115, 112, 112, 113, 114, 115, + 115, 116, 111, 108, 118, 111, 110, 105, 99, 21, 26, 57, 69, 84, 99, 101, + 111, 109, 110, 98, 103, 114, 111, 108, 111, 110, 111, 114, 107, 116, 116, 107, + 114, 111, 110, 111, 112, 113, 114, 114, 114, 114, 112, 113, 113, 114, 114, 113, + 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 111, 113, 114, 90, 92, 93, + 93, 92, 93, 92, 94, 91, 92, 92, 94, 95, 95, 93, 93, 99, 98, 96, + 96, 95, 96, 97, 98, 95, 95, 95, 96, 97, 98, 99, 100, 98, 101, 102, + 102, 99, 99, 98, 101, 96, 97, 98, 98, 96, 96, 96, 97, 100, 100, 101, + 101, 101, 101, 100, 100, 102, 101, 101, 103, 104, 103, 98, 102, 113, 118, 116, + 114, 113, 116, 122, 126, 136, 143, 147, 149, 153, 155, 160, 164, 175, 170, 171, + 173, 167, 170, 176, 172, 159, 159, 152, 151, 155, 151, 152, 165, 158, 162, 169, + 167, 157, 161, 166, 161, 163, 160, 159, 160, 160, 157, 156, 159, 156, 163, 159, + 168, 167, 156, 167, 169, 166, 172, 161, 169, 159, 172, 164, 164, 157, 160, 166, + 167, 168, 170, 171, 167, 161, 149, 129, 125, 138, 141, 134, 129, 119, 114, 114, + 114, 114, 114, 114, 114, 114, 110, 119, 110, 109, 103, 97, 19, 27, 58, 70, + 84, 99, 101, 111, 109, 109, 98, 104, 114, 111, 108, 111, 110, 111, 114, 107, + 116, 116, 107, 114, 111, 110, 111, 112, 113, 114, 115, 115, 114, 112, 113, 113, + 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, 110, 112, 113, + 89, 91, 93, 93, 93, 91, 93, 95, 93, 93, 94, 96, 96, 93, 92, 91, + 98, 96, 94, 92, 92, 94, 96, 97, 96, 96, 95, 95, 96, 98, 100, 101, + 97, 101, 103, 102, 100, 98, 100, 103, 97, 98, 99, 98, 96, 94, 96, 97, + 100, 102, 102, 103, 102, 101, 100, 99, 100, 100, 101, 105, 108, 106, 101, 106, + 112, 119, 116, 117, 120, 126, 133, 140, 134, 144, 155, 161, 164, 168, 172, 177, + 171, 170, 178, 179, 171, 169, 168, 162, 156, 161, 160, 156, 153, 145, 146, 163, + 159, 161, 169, 167, 158, 162, 170, 165, 174, 170, 168, 169, 169, 164, 164, 167, + 162, 168, 164, 175, 175, 167, 175, 172, 171, 175, 163, 173, 162, 177, 168, 165, + 161, 161, 170, 177, 172, 163, 169, 181, 165, 161, 144, 131, 131, 133, 140, 147, + 127, 119, 116, 115, 114, 113, 111, 111, 117, 112, 120, 110, 108, 102, 96, 18, + 27, 59, 69, 84, 99, 101, 111, 111, 109, 99, 105, 115, 111, 107, 110, 110, + 111, 114, 107, 116, 116, 107, 114, 111, 110, 111, 112, 113, 114, 115, 115, 115, + 112, 113, 113, 114, 114, 113, 113, 112, 114, 113, 113, 112, 112, 113, 113, 114, + 109, 111, 112, 92, 92, 92, 92, 93, 94, 95, 94, 94, 94, 94, 91, 90, + 92, 96, 98, 94, 94, 94, 95, 95, 96, 96, 96, 92, 93, 94, 94, 95, + 96, 97, 97, 99, 101, 102, 103, 103, 104, 103, 103, 105, 103, 99, 97, 96, + 95, 95, 97, 97, 100, 101, 102, 101, 99, 97, 95, 105, 93, 102, 117, 118, + 112, 110, 110, 127, 131, 131, 133, 137, 137, 137, 136, 141, 148, 156, 160, 163, + 166, 173, 181, 176, 175, 179, 198, 170, 178, 176, 176, 166, 173, 159, 163, 167, + 154, 161, 166, 156, 171, 174, 164, 161, 168, 169, 161, 177, 172, 175, 175, 167, + 164, 168, 163, 173, 180, 176, 173, 177, 175, 171, 178, 181, 177, 173, 172, 174, + 176, 178, 174, 158, 167, 173, 169, 167, 170, 172, 167, 160, 159, 158, 150, 139, + 136, 150, 154, 142, 116, 110, 115, 119, 116, 110, 109, 112, 109, 110, 112, 104, + 111, 98, 24, 30, 60, 70, 85, 101, 103, 112, 109, 111, 93, 106, 112, 110, + 115, 108, 112, 111, 107, 114, 116, 109, 111, 116, 112, 114, 114, 115, 115, 115, + 114, 113, 113, 113, 114, 114, 114, 114, 113, 112, 111, 115, 115, 115, 114, 114, + 113, 113, 113, 111, 111, 112, 92, 92, 91, 90, 90, 90, 90, 90, 94, 94, + 93, 92, 91, 92, 94, 96, 94, 94, 94, 95, 95, 96, 96, 96, 93, 93, + 94, 95, 96, 96, 97, 97, 99, 99, 101, 101, 101, 103, 103, 104, 106, 104, + 100, 98, 97, 95, 93, 97, 102, 104, 105, 105, 103, 101, 99, 98, 98, 96, + 106, 116, 114, 112, 118, 120, 136, 140, 138, 140, 143, 146, 146, 145, 151, 153, + 157, 160, 165, 167, 170, 172, 177, 173, 181, 183, 177, 173, 180, 182, 169, 177, + 164, 167, 170, 157, 161, 165, 155, 163, 167, 164, 168, 175, 176, 172, 172, 168, + 175, 176, 168, 170, 175, 171, 176, 183, 179, 176, 180, 176, 173, 179, 177, 173, + 169, 171, 174, 176, 172, 167, 173, 174, 174, 173, 174, 177, 174, 166, 162, 162, + 161, 157, 147, 142, 152, 150, 138, 130, 129, 121, 117, 118, 118, 110, 110, 109, + 109, 113, 104, 112, 100, 23, 30, 57, 69, 84, 101, 104, 113, 110, 114, 95, + 107, 113, 110, 114, 106, 109, 111, 108, 114, 116, 109, 111, 116, 112, 111, 112, + 112, 113, 113, 112, 111, 111, 114, 115, 115, 115, 115, 114, 113, 112, 115, 115, + 115, 114, 114, 113, 113, 113, 111, 111, 112, 94, 93, 92, 91, 90, 90, 89, + 89, 94, 95, 94, 94, 92, 92, 92, 94, 94, 94, 94, 95, 95, 96, 96, + 96, 94, 94, 94, 95, 96, 96, 97, 97, 98, 97, 97, 98, 99, 100, 102, + 103, 102, 102, 101, 99, 97, 96, 93, 95, 104, 105, 104, 103, 103, 102, 101, + 102, 98, 103, 112, 111, 103, 107, 121, 125, 137, 140, 139, 140, 145, 149, 152, + 154, 156, 156, 157, 162, 169, 170, 167, 165, 176, 174, 181, 167, 184, 168, 180, + 187, 168, 177, 166, 170, 173, 159, 163, 166, 159, 160, 163, 167, 173, 177, 179, + 178, 172, 168, 174, 176, 169, 171, 178, 175, 176, 183, 179, 175, 179, 175, 171, + 178, 173, 171, 169, 172, 176, 175, 170, 163, 181, 176, 172, 172, 178, 180, 173, + 162, 165, 161, 160, 158, 151, 143, 144, 139, 125, 134, 142, 125, 115, 117, 117, + 108, 110, 109, 109, 113, 105, 110, 98, 22, 29, 57, 69, 84, 102, 105, 114, + 111, 115, 96, 108, 113, 110, 113, 105, 108, 112, 108, 114, 117, 110, 111, 116, + 112, 111, 111, 112, 113, 113, 112, 112, 111, 115, 116, 116, 116, 116, 115, 114, + 113, 115, 115, 115, 114, 114, 113, 113, 113, 111, 111, 112, 95, 95, 94, 93, + 93, 93, 93, 93, 93, 95, 95, 95, 93, 92, 91, 92, 94, 94, 94, 95, + 95, 96, 96, 96, 94, 95, 95, 96, 96, 97, 97, 97, 98, 97, 96, 95, + 97, 99, 102, 103, 100, 99, 100, 100, 99, 97, 94, 95, 99, 100, 100, 101, + 103, 102, 103, 104, 107, 111, 114, 104, 98, 110, 129, 131, 139, 143, 142, 142, + 146, 150, 155, 158, 157, 158, 160, 165, 168, 168, 164, 163, 174, 179, 176, 164, + 183, 168, 172, 185, 165, 174, 164, 170, 175, 162, 166, 169, 165, 160, 159, 167, + 172, 172, 172, 174, 175, 170, 176, 176, 168, 170, 177, 173, 173, 180, 176, 172, + 175, 171, 167, 174, 170, 172, 174, 175, 176, 175, 174, 172, 179, 174, 171, 170, + 175, 176, 170, 162, 168, 162, 160, 158, 153, 146, 143, 134, 118, 130, 142, 133, + 122, 121, 117, 110, 110, 107, 108, 113, 105, 109, 96, 19, 29, 57, 69, 85, + 102, 105, 115, 112, 115, 95, 108, 113, 110, 113, 106, 109, 112, 109, 115, 117, + 110, 111, 116, 111, 113, 113, 114, 115, 115, 115, 114, 114, 115, 115, 116, 116, + 115, 114, 113, 113, 115, 115, 115, 114, 114, 113, 113, 113, 112, 112, 112, 93, + 93, 93, 93, 94, 95, 96, 97, 93, 95, 95, 95, 93, 92, 91, 92, 94, + 94, 94, 95, 95, 96, 96, 96, 95, 96, 96, 96, 96, 97, 97, 97, 98, + 96, 95, 95, 96, 98, 102, 102, 98, 98, 100, 101, 99, 98, 95, 94, 95, + 96, 98, 101, 105, 106, 109, 111, 116, 111, 108, 98, 99, 118, 137, 137, 143, + 146, 145, 145, 146, 150, 154, 159, 152, 158, 165, 167, 166, 166, 165, 167, 172, + 183, 169, 174, 175, 174, 162, 179, 168, 177, 166, 172, 175, 160, 163, 166, 169, + 162, 161, 166, 171, 170, 169, 170, 177, 171, 175, 175, 168, 170, 177, 174, 172, + 179, 175, 172, 175, 171, 168, 174, 167, 173, 178, 177, 173, 173, 178, 183, 175, + 171, 172, 172, 172, 172, 171, 171, 174, 165, 159, 158, 157, 151, 147, 140, 128, + 128, 138, 145, 141, 129, 122, 116, 111, 107, 108, 111, 101, 105, 92, 16, 28, + 58, 70, 85, 103, 105, 115, 112, 112, 93, 106, 112, 110, 114, 108, 111, 113, + 110, 116, 118, 110, 111, 116, 111, 112, 113, 114, 115, 115, 115, 115, 115, 114, + 114, 114, 114, 114, 113, 112, 111, 115, 115, 115, 114, 114, 113, 113, 113, 112, + 112, 113, 89, 89, 90, 91, 92, 94, 95, 96, 94, 95, 94, 94, 92, 92, + 92, 94, 94, 94, 94, 95, 95, 96, 96, 96, 96, 96, 96, 97, 97, 97, + 97, 96, 97, 96, 96, 96, 97, 99, 101, 101, 98, 98, 99, 98, 99, 98, + 98, 96, 94, 96, 101, 106, 110, 112, 115, 117, 117, 105, 101, 101, 105, 125, + 141, 141, 147, 148, 150, 150, 150, 150, 155, 159, 153, 161, 167, 168, 167, 165, + 167, 170, 170, 179, 166, 179, 168, 174, 159, 170, 171, 179, 167, 169, 172, 158, + 161, 164, 167, 166, 165, 166, 169, 171, 172, 171, 173, 168, 172, 173, 167, 171, + 179, 177, 172, 179, 176, 172, 176, 173, 170, 177, 164, 171, 177, 175, 170, 170, + 177, 183, 172, 171, 176, 176, 173, 170, 174, 180, 176, 167, 160, 159, 159, 155, + 152, 148, 137, 128, 130, 142, 147, 137, 126, 120, 114, 109, 107, 109, 97, 103, + 90, 13, 30, 59, 71, 86, 103, 105, 114, 111, 111, 93, 106, 112, 111, 115, + 109, 112, 114, 111, 116, 118, 111, 111, 116, 111, 109, 110, 111, 112, 113, 113, + 113, 113, 113, 113, 114, 114, 113, 113, 112, 111, 115, 115, 115, 114, 114, 113, + 113, 113, 113, 113, 113, 91, 91, 91, 91, 92, 94, 94, 95, 94, 94, 93, + 92, 91, 92, 94, 96, 94, 94, 94, 95, 95, 96, 96, 96, 97, 97, 97, + 97, 97, 97, 97, 96, 96, 94, 97, 98, 99, 100, 101, 101, 98, 98, 98, + 97, 98, 98, 99, 98, 94, 98, 104, 109, 112, 115, 116, 117, 113, 101, 103, + 113, 120, 133, 145, 146, 149, 151, 154, 154, 155, 156, 158, 161, 161, 164, 167, + 169, 170, 169, 169, 169, 173, 166, 167, 175, 168, 168, 167, 164, 168, 176, 164, + 167, 171, 158, 163, 167, 162, 168, 170, 163, 162, 168, 172, 168, 171, 165, 171, + 171, 164, 168, 176, 174, 169, 176, 173, 170, 175, 172, 169, 176, 166, 169, 172, + 173, 172, 171, 172, 173, 175, 174, 176, 178, 174, 170, 174, 183, 175, 168, 163, + 164, 162, 157, 154, 153, 144, 138, 133, 133, 138, 140, 134, 122, 119, 112, 107, + 107, 94, 100, 86, 12, 31, 61, 73, 86, 103, 104, 113, 110, 113, 94, 107, + 113, 110, 114, 107, 110, 115, 111, 117, 119, 111, 111, 116, 111, 109, 110, 111, + 112, 113, 113, 113, 113, 114, 114, 115, 115, 114, 113, 113, 112, 115, 115, 115, + 114, 114, 113, 113, 113, 113, 113, 113, 95, 95, 94, 94, 94, 95, 95, 96, + 94, 94, 92, 91, 90, 92, 95, 98, 94, 94, 94, 95, 95, 96, 96, 96, + 97, 97, 97, 97, 97, 97, 97, 96, 96, 95, 98, 100, 101, 101, 101, 101, + 99, 99, 96, 96, 97, 99, 101, 101, 95, 98, 106, 112, 116, 116, 115, 117, + 112, 102, 111, 128, 134, 139, 149, 152, 150, 154, 158, 159, 158, 158, 162, 164, + 171, 169, 168, 169, 173, 173, 171, 167, 176, 156, 172, 167, 170, 160, 175, 162, + 161, 168, 157, 163, 170, 161, 170, 175, 158, 170, 170, 157, 155, 163, 166, 160, + 175, 169, 170, 169, 162, 165, 172, 169, 164, 171, 169, 166, 172, 169, 168, 174, + 171, 169, 171, 174, 178, 176, 170, 163, 177, 173, 174, 176, 174, 169, 172, 179, + 174, 169, 168, 168, 166, 158, 153, 154, 155, 158, 147, 132, 134, 149, 148, 130, + 125, 116, 109, 107, 95, 97, 83, 11, 32, 62, 73, 87, 103, 104, 112, 109, + 115, 96, 108, 113, 110, 113, 105, 108, 115, 112, 117, 119, 111, 111, 116, 111, + 111, 112, 113, 114, 115, 116, 116, 116, 115, 116, 116, 116, 116, 115, 114, 113, + 115, 115, 115, 114, 114, 113, 113, 113, 113, 113, 113, 89, 94, 95, 92, 91, + 94, 94, 93, 95, 95, 93, 94, 94, 95, 94, 94, 97, 96, 95, 94, 94, + 94, 95, 95, 91, 96, 99, 99, 100, 102, 101, 95, 97, 95, 95, 98, 99, + 96, 94, 98, 99, 97, 96, 96, 98, 99, 98, 97, 102, 107, 110, 111, 119, + 125, 119, 105, 109, 113, 118, 125, 135, 144, 151, 155, 158, 156, 154, 154, 158, + 160, 162, 162, 166, 172, 176, 170, 167, 168, 168, 164, 179, 170, 164, 165, 169, + 166, 164, 163, 165, 162, 163, 164, 164, 161, 165, 171, 169, 165, 169, 169, 160, + 158, 163, 161, 170, 166, 166, 169, 168, 164, 166, 172, 166, 171, 173, 165, 164, + 165, 173, 173, 167, 170, 174, 171, 174, 175, 176, 171, 175, 178, 166, 175, 181, + 178, 183, 174, 168, 174, 171, 165, 165, 159, 153, 161, 161, 156, 148, 140, 136, + 137, 140, 140, 135, 119, 111, 124, 96, 98, 71, 11, 33, 60, 72, 88, 104, + 102, 111, 110, 112, 98, 111, 113, 109, 115, 109, 110, 113, 114, 116, 115, 113, + 111, 111, 112, 116, 116, 115, 114, 114, 113, 112, 112, 115, 115, 115, 114, 114, + 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 116, 115, 115, 89, 94, + 95, 92, 91, 94, 94, 93, 95, 95, 93, 94, 94, 95, 94, 94, 94, 94, + 94, 94, 94, 95, 97, 97, 93, 97, 99, 98, 98, 101, 101, 97, 99, 95, + 95, 98, 99, 96, 95, 98, 96, 97, 98, 101, 103, 104, 104, 103, 100, 108, + 117, 121, 123, 121, 112, 103, 116, 121, 124, 129, 137, 144, 151, 153, 156, 156, + 155, 155, 157, 158, 162, 163, 157, 164, 169, 167, 166, 170, 170, 168, 174, 166, + 162, 163, 165, 162, 161, 160, 167, 163, 162, 164, 164, 163, 165, 168, 168, 165, + 171, 173, 163, 160, 163, 158, 163, 161, 164, 168, 167, 162, 164, 169, 164, 167, + 167, 165, 167, 171, 171, 168, 168, 171, 172, 170, 170, 173, 172, 169, 175, 177, + 167, 174, 178, 173, 179, 169, 176, 179, 171, 168, 172, 168, 161, 166, 157, 158, + 155, 148, 138, 135, 136, 136, 146, 132, 119, 125, 100, 107, 74, 11, 33, 60, + 72, 89, 105, 103, 110, 110, 111, 97, 111, 113, 109, 115, 109, 111, 112, 113, + 115, 115, 113, 112, 112, 113, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, + 115, 114, 114, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, + 114, 90, 94, 96, 92, 91, 94, 95, 93, 95, 95, 93, 94, 94, 95, 94, + 94, 93, 93, 93, 94, 95, 96, 98, 99, 95, 98, 98, 96, 97, 101, 101, + 98, 100, 96, 96, 100, 99, 96, 97, 100, 94, 97, 102, 105, 106, 105, 106, + 108, 107, 112, 118, 122, 119, 111, 107, 112, 123, 126, 128, 132, 136, 143, 148, + 151, 153, 156, 158, 157, 156, 156, 160, 163, 154, 160, 165, 165, 165, 168, 170, + 170, 168, 164, 164, 165, 165, 161, 161, 162, 167, 161, 159, 160, 162, 158, 158, + 160, 163, 162, 171, 175, 166, 163, 165, 156, 157, 158, 163, 167, 166, 162, 162, + 165, 162, 163, 162, 163, 169, 174, 171, 164, 168, 171, 170, 166, 165, 168, 169, + 166, 172, 175, 165, 172, 174, 169, 174, 165, 175, 174, 166, 164, 172, 169, 160, + 161, 154, 159, 162, 154, 142, 134, 133, 131, 150, 139, 129, 126, 102, 115, 74, + 13, 33, 61, 73, 90, 106, 103, 110, 109, 110, 95, 110, 112, 109, 115, 110, + 112, 110, 112, 114, 114, 113, 112, 113, 114, 112, 112, 113, 114, 114, 115, 116, + 116, 115, 115, 114, 114, 114, 114, 113, 113, 114, 114, 114, 114, 114, 114, 114, + 114, 113, 113, 114, 90, 95, 96, 93, 92, 94, 95, 93, 95, 95, 93, 94, + 94, 95, 94, 94, 94, 93, 93, 94, 95, 96, 97, 98, 96, 99, 98, 95, + 96, 100, 101, 99, 100, 97, 98, 100, 100, 97, 97, 100, 96, 100, 103, 105, + 104, 104, 106, 110, 125, 118, 113, 114, 112, 108, 116, 129, 129, 130, 131, 134, + 136, 142, 144, 147, 150, 156, 160, 159, 156, 156, 160, 165, 162, 165, 168, 168, + 168, 167, 168, 168, 165, 164, 166, 168, 167, 161, 162, 165, 168, 161, 158, 158, + 159, 156, 155, 157, 157, 157, 166, 169, 163, 164, 166, 157, 154, 156, 159, 160, + 160, 161, 162, 164, 161, 163, 163, 162, 165, 170, 168, 163, 164, 166, 165, 161, + 161, 165, 166, 164, 167, 171, 161, 167, 169, 164, 171, 163, 165, 169, 162, 160, + 167, 166, 159, 163, 158, 162, 163, 157, 148, 142, 138, 134, 142, 143, 139, 128, + 105, 116, 67, 12, 33, 61, 74, 91, 107, 103, 110, 108, 108, 94, 109, 112, + 109, 116, 110, 112, 109, 112, 114, 114, 113, 113, 114, 115, 113, 113, 113, 114, + 114, 115, 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 112, 113, 113, 91, 95, 97, 93, 92, 95, 95, 94, 95, + 95, 93, 94, 94, 95, 94, 94, 96, 95, 95, 94, 94, 95, 95, 96, 97, + 99, 99, 95, 96, 100, 100, 98, 103, 100, 100, 102, 102, 98, 99, 102, 100, + 102, 103, 104, 106, 107, 111, 117, 130, 119, 110, 111, 116, 117, 127, 140, 132, + 132, 135, 135, 138, 140, 143, 145, 150, 156, 161, 160, 157, 156, 160, 165, 165, + 166, 168, 169, 169, 163, 165, 166, 166, 166, 167, 170, 168, 162, 163, 166, 171, + 165, 162, 161, 161, 157, 157, 157, 154, 154, 160, 161, 157, 164, 169, 158, 154, + 157, 157, 155, 155, 158, 162, 165, 161, 165, 165, 159, 157, 160, 164, 164, 158, + 160, 159, 156, 157, 162, 164, 162, 161, 166, 158, 165, 167, 162, 171, 164, 162, + 170, 167, 163, 168, 166, 165, 172, 163, 158, 156, 153, 153, 150, 146, 140, 136, + 142, 148, 135, 111, 117, 59, 16, 35, 62, 75, 91, 106, 103, 110, 108, 108, + 94, 108, 111, 108, 115, 110, 112, 109, 112, 114, 114, 113, 113, 114, 115, 115, + 115, 115, 114, 114, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 112, 113, 113, 91, 95, 97, 94, 93, 95, + 96, 94, 95, 95, 93, 94, 94, 95, 94, 94, 97, 96, 95, 94, 94, 94, + 94, 95, 96, 99, 99, 97, 97, 100, 100, 99, 104, 101, 102, 104, 104, 100, + 100, 102, 102, 102, 102, 105, 110, 114, 114, 119, 118, 117, 115, 119, 127, 132, + 137, 140, 135, 135, 135, 137, 138, 140, 142, 145, 150, 157, 161, 162, 161, 160, + 163, 165, 164, 164, 166, 169, 167, 163, 163, 166, 168, 166, 165, 167, 166, 163, + 161, 164, 166, 163, 160, 159, 156, 152, 152, 156, 155, 151, 157, 153, 152, 163, + 168, 158, 156, 157, 157, 151, 151, 156, 163, 164, 161, 165, 165, 157, 153, 155, + 160, 163, 154, 157, 158, 155, 157, 161, 163, 161, 156, 163, 155, 163, 164, 160, + 169, 164, 160, 170, 168, 165, 168, 166, 166, 176, 162, 154, 149, 149, 153, 155, + 150, 144, 136, 139, 151, 140, 119, 120, 53, 23, 37, 64, 75, 90, 105, 102, + 111, 110, 108, 94, 108, 111, 108, 114, 109, 111, 110, 112, 114, 114, 113, 112, + 113, 114, 116, 116, 115, 114, 114, 113, 112, 112, 113, 113, 114, 114, 114, 114, + 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, 113, 113, 114, 91, 96, 97, + 94, 93, 96, 96, 95, 95, 95, 93, 94, 94, 95, 94, 94, 95, 95, 94, + 94, 94, 95, 96, 96, 95, 99, 100, 98, 98, 100, 99, 97, 106, 103, 102, + 104, 105, 100, 100, 103, 105, 102, 103, 106, 113, 112, 107, 107, 101, 113, 121, + 125, 132, 137, 142, 140, 137, 135, 137, 138, 139, 140, 141, 145, 152, 157, 159, + 162, 163, 164, 164, 164, 165, 164, 166, 170, 169, 163, 163, 168, 175, 168, 164, + 167, 167, 165, 163, 164, 163, 164, 163, 161, 155, 148, 152, 160, 156, 154, 157, + 152, 149, 160, 163, 152, 155, 158, 158, 153, 151, 156, 161, 160, 156, 159, 159, + 154, 153, 157, 158, 156, 154, 157, 158, 156, 157, 160, 160, 157, 156, 163, 156, + 162, 163, 157, 167, 162, 162, 167, 164, 160, 165, 163, 162, 168, 157, 153, 151, + 152, 155, 155, 153, 147, 142, 134, 141, 135, 123, 121, 47, 26, 40, 65, 74, + 89, 103, 102, 111, 112, 109, 95, 109, 111, 107, 113, 107, 109, 112, 113, 115, + 115, 113, 112, 112, 113, 114, 114, 114, 114, 114, 114, 114, 114, 113, 113, 113, + 114, 114, 115, 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 114, + 91, 95, 97, 93, 93, 95, 96, 95, 95, 95, 93, 94, 94, 95, 94, 94, + 92, 93, 93, 94, 95, 96, 98, 99, 94, 99, 101, 99, 99, 99, 97, 96, + 106, 105, 102, 102, 102, 98, 96, 100, 103, 102, 103, 109, 118, 116, 104, 99, + 102, 124, 132, 127, 126, 134, 139, 139, 133, 134, 136, 137, 141, 143, 144, 149, + 154, 157, 159, 162, 166, 167, 166, 164, 172, 169, 171, 175, 172, 165, 164, 169, + 182, 173, 167, 169, 172, 169, 167, 166, 170, 170, 172, 169, 159, 154, 160, 169, + 159, 157, 160, 154, 150, 160, 161, 145, 154, 159, 160, 155, 154, 158, 159, 155, + 152, 151, 152, 152, 156, 160, 157, 150, 156, 160, 161, 158, 158, 160, 158, 154, + 155, 162, 154, 160, 159, 153, 164, 161, 169, 170, 163, 160, 169, 168, 164, 164, + 155, 154, 159, 158, 157, 155, 154, 152, 147, 131, 134, 133, 129, 132, 54, 36, + 49, 73, 78, 92, 103, 101, 110, 110, 108, 94, 107, 110, 107, 113, 107, 109, + 113, 114, 116, 115, 113, 111, 111, 112, 112, 112, 113, 114, 114, 115, 116, 116, + 113, 113, 113, 114, 114, 115, 115, 115, 114, 114, 114, 114, 114, 114, 114, 114, + 116, 115, 115, 92, 89, 91, 89, 92, 92, 94, 95, 96, 92, 90, 94, 95, + 93, 91, 92, 92, 98, 94, 92, 98, 96, 93, 99, 98, 101, 101, 98, 99, + 101, 102, 101, 102, 104, 103, 100, 94, 89, 86, 88, 96, 99, 105, 117, 125, + 122, 118, 120, 137, 143, 143, 136, 133, 131, 130, 130, 132, 128, 134, 139, 140, + 150, 158, 154, 157, 169, 168, 164, 170, 173, 171, 176, 175, 177, 176, 175, 176, + 177, 170, 162, 194, 174, 178, 185, 173, 169, 174, 166, 181, 169, 161, 164, 166, + 165, 162, 165, 170, 159, 154, 155, 163, 165, 163, 162, 169, 165, 159, 157, 158, + 160, 159, 156, 150, 149, 151, 148, 145, 145, 148, 153, 159, 159, 160, 152, 150, + 164, 167, 149, 155, 146, 155, 164, 155, 147, 152, 157, 168, 166, 166, 166, 169, + 171, 173, 170, 168, 160, 154, 153, 157, 159, 155, 151, 156, 140, 133, 132, 131, + 124, 98, 53, 74, 88, 99, 98, 104, 105, 100, 102, 103, 87, 102, 106, 106, + 112, 109, 113, 112, 112, 115, 115, 113, 113, 117, 118, 113, 113, 113, 114, 113, + 114, 114, 114, 116, 115, 113, 111, 110, 110, 110, 111, 113, 113, 113, 113, 113, + 113, 113, 113, 115, 115, 114, 93, 92, 92, 91, 92, 94, 95, 96, 96, 91, + 90, 94, 95, 93, 92, 93, 92, 97, 94, 92, 98, 96, 94, 98, 94, 97, + 98, 94, 94, 96, 96, 96, 104, 106, 102, 97, 92, 87, 86, 90, 91, 103, + 114, 117, 114, 114, 125, 146, 153, 155, 148, 140, 134, 131, 129, 127, 133, 126, + 133, 139, 139, 144, 149, 145, 160, 168, 163, 156, 162, 165, 167, 173, 161, 162, + 162, 162, 165, 168, 165, 159, 168, 154, 159, 165, 159, 163, 172, 164, 154, 153, + 156, 165, 165, 160, 158, 161, 157, 155, 154, 154, 150, 146, 149, 155, 148, 146, + 145, 146, 149, 150, 148, 145, 143, 144, 145, 144, 144, 144, 149, 153, 135, 139, + 149, 152, 149, 155, 152, 134, 150, 140, 146, 157, 151, 148, 156, 160, 157, 156, + 158, 159, 162, 163, 163, 159, 152, 152, 155, 159, 164, 164, 160, 156, 153, 148, + 148, 141, 127, 125, 122, 102, 95, 98, 103, 108, 116, 111, 103, 104, 98, 86, + 105, 110, 108, 113, 111, 116, 112, 112, 115, 115, 113, 113, 115, 116, 113, 113, + 113, 114, 113, 114, 113, 113, 116, 115, 113, 112, 111, 111, 111, 112, 113, 113, + 113, 113, 113, 113, 113, 113, 115, 114, 113, 94, 93, 93, 92, 92, 93, 94, + 94, 96, 91, 90, 94, 96, 93, 92, 94, 92, 98, 94, 92, 99, 97, 93, + 98, 93, 95, 96, 91, 91, 94, 94, 92, 104, 102, 99, 95, 92, 91, 92, + 97, 101, 107, 112, 111, 107, 112, 131, 154, 149, 146, 140, 135, 135, 133, 132, + 129, 139, 127, 128, 136, 134, 137, 148, 147, 141, 153, 158, 158, 163, 159, 150, + 149, 152, 153, 153, 153, 156, 160, 157, 152, 165, 158, 156, 150, 140, 143, 146, + 134, 142, 147, 155, 162, 163, 158, 160, 161, 157, 152, 153, 152, 147, 141, 142, + 147, 161, 160, 158, 156, 154, 148, 141, 137, 131, 134, 135, 134, 134, 135, 137, + 139, 136, 130, 133, 136, 131, 136, 139, 135, 137, 127, 128, 136, 132, 133, 141, + 142, 137, 141, 148, 154, 156, 152, 145, 140, 153, 152, 151, 152, 152, 154, 155, + 156, 154, 153, 156, 147, 130, 129, 139, 130, 111, 106, 108, 116, 128, 122, 113, + 115, 99, 89, 109, 112, 107, 112, 109, 113, 111, 111, 114, 114, 112, 112, 114, + 115, 112, 112, 113, 113, 113, 113, 114, 114, 116, 115, 114, 113, 112, 112, 112, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 114, 114, 113, 92, 91, 91, 91, + 90, 90, 91, 91, 96, 91, 90, 94, 96, 94, 93, 95, 93, 98, 95, 93, + 99, 97, 93, 98, 95, 96, 96, 93, 93, 97, 97, 94, 99, 96, 92, 91, + 92, 95, 99, 104, 116, 108, 103, 109, 121, 132, 142, 148, 143, 138, 135, 136, + 139, 137, 136, 134, 139, 122, 122, 133, 134, 143, 162, 171, 177, 190, 197, 199, + 205, 200, 189, 187, 189, 191, 191, 190, 191, 192, 186, 178, 185, 188, 186, 176, + 173, 182, 185, 177, 185, 186, 185, 184, 184, 187, 194, 199, 193, 183, 181, 183, + 186, 180, 176, 173, 177, 176, 179, 179, 180, 177, 175, 173, 178, 179, 181, 179, + 178, 175, 175, 175, 179, 166, 166, 166, 159, 158, 164, 168, 168, 156, 153, 156, + 155, 155, 159, 157, 169, 158, 144, 131, 126, 127, 132, 139, 148, 151, 150, 149, + 148, 150, 154, 155, 161, 153, 155, 154, 148, 148, 148, 130, 120, 121, 119, 118, + 128, 130, 127, 127, 110, 97, 110, 109, 105, 112, 108, 109, 110, 111, 113, 113, + 112, 112, 114, 115, 113, 113, 113, 113, 113, 113, 113, 113, 116, 115, 115, 114, + 114, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 112, 91, + 91, 91, 91, 91, 91, 90, 90, 96, 91, 91, 95, 97, 95, 94, 96, 94, + 100, 96, 94, 99, 97, 93, 96, 94, 96, 97, 94, 95, 96, 96, 93, 94, + 91, 90, 92, 98, 103, 109, 115, 117, 108, 106, 118, 137, 148, 148, 142, 141, + 134, 135, 142, 144, 140, 138, 136, 137, 125, 131, 143, 147, 158, 176, 183, 174, + 178, 171, 165, 172, 178, 182, 190, 198, 201, 203, 203, 204, 202, 193, 183, 195, + 204, 201, 191, 193, 201, 201, 199, 201, 198, 191, 187, 189, 194, 201, 204, 193, + 190, 193, 195, 193, 186, 186, 189, 192, 190, 189, 186, 184, 181, 181, 180, 176, + 174, 173, 172, 171, 170, 171, 170, 184, 177, 186, 191, 183, 175, 173, 172, 197, + 184, 180, 180, 179, 181, 184, 178, 178, 173, 164, 154, 142, 131, 119, 118, 123, + 134, 141, 148, 153, 155, 155, 155, 162, 152, 155, 160, 159, 159, 156, 138, 125, + 137, 134, 121, 125, 137, 138, 136, 127, 108, 114, 109, 105, 115, 107, 104, 108, + 109, 111, 111, 111, 111, 113, 114, 112, 112, 113, 113, 113, 113, 114, 114, 115, + 115, 115, 115, 114, 114, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 112, + 112, 111, 92, 92, 93, 94, 94, 94, 93, 93, 95, 91, 91, 95, 97, 96, + 95, 97, 95, 100, 96, 94, 100, 97, 91, 96, 92, 95, 95, 92, 91, 94, + 94, 91, 91, 89, 91, 98, 107, 113, 115, 119, 107, 113, 123, 135, 144, 145, + 147, 145, 134, 128, 133, 140, 138, 132, 129, 131, 136, 137, 151, 163, 163, 169, + 178, 173, 169, 174, 168, 162, 170, 176, 180, 189, 176, 180, 183, 184, 187, 187, + 179, 169, 187, 196, 190, 182, 186, 185, 182, 186, 185, 186, 185, 182, 182, 187, + 189, 187, 175, 186, 197, 196, 182, 173, 182, 197, 199, 197, 193, 188, 184, 183, + 185, 184, 179, 174, 172, 173, 175, 177, 178, 178, 174, 170, 176, 176, 168, 168, + 171, 169, 185, 175, 175, 176, 176, 179, 182, 174, 171, 177, 186, 189, 183, 167, + 146, 139, 128, 130, 123, 121, 126, 134, 142, 146, 151, 149, 155, 161, 154, 155, + 164, 160, 135, 148, 143, 128, 129, 137, 139, 139, 136, 119, 125, 115, 109, 118, + 110, 106, 108, 109, 111, 111, 109, 109, 113, 114, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 114, 114, 114, 114, 113, 112, 113, 113, 113, 113, 113, 113, + 113, 113, 111, 111, 111, 90, 91, 93, 94, 95, 95, 94, 93, 95, 91, 91, + 95, 98, 96, 96, 97, 97, 102, 97, 95, 100, 97, 91, 96, 91, 92, 92, + 89, 92, 95, 96, 90, 89, 87, 92, 100, 111, 116, 116, 117, 113, 126, 138, + 149, 150, 145, 146, 147, 129, 122, 127, 133, 131, 123, 127, 133, 145, 153, 167, + 169, 163, 170, 173, 159, 161, 173, 176, 175, 182, 182, 177, 180, 179, 181, 182, + 183, 187, 190, 186, 179, 179, 189, 187, 189, 200, 196, 193, 208, 192, 199, 202, + 197, 194, 196, 197, 195, 198, 204, 211, 211, 202, 196, 201, 212, 189, 191, 193, + 195, 198, 203, 211, 215, 187, 182, 178, 178, 181, 184, 187, 188, 191, 188, 188, + 177, 167, 178, 191, 185, 178, 171, 174, 176, 175, 179, 182, 174, 189, 183, 174, + 169, 171, 177, 182, 192, 169, 157, 136, 124, 124, 127, 131, 134, 139, 139, 149, + 158, 153, 154, 165, 167, 153, 153, 147, 144, 146, 137, 131, 139, 132, 122, 136, + 126, 112, 116, 111, 108, 110, 111, 113, 113, 109, 109, 111, 112, 111, 111, 113, + 112, 113, 112, 113, 113, 111, 112, 113, 114, 114, 113, 112, 111, 113, 113, 113, + 113, 113, 113, 113, 113, 111, 110, 110, 87, 88, 90, 92, 93, 93, 92, 92, + 95, 91, 91, 95, 98, 96, 96, 98, 97, 103, 97, 94, 100, 95, 91, 96, + 90, 93, 93, 92, 93, 97, 97, 94, 89, 88, 95, 105, 114, 117, 115, 115, + 133, 137, 146, 154, 156, 151, 147, 144, 130, 123, 127, 133, 127, 121, 129, 142, + 152, 158, 168, 159, 153, 164, 170, 157, 168, 178, 174, 169, 175, 178, 178, 184, + 185, 185, 182, 181, 185, 190, 189, 184, 193, 199, 193, 192, 199, 183, 174, 192, + 194, 203, 206, 195, 185, 185, 191, 194, 209, 199, 193, 198, 206, 205, 200, 196, + 208, 208, 206, 200, 194, 191, 192, 193, 200, 192, 188, 186, 188, 191, 193, 194, + 186, 195, 201, 191, 179, 186, 190, 174, 172, 168, 173, 176, 172, 177, 179, 169, + 168, 169, 171, 173, 175, 172, 166, 166, 190, 184, 174, 168, 165, 155, 138, 127, + 130, 125, 134, 149, 153, 155, 155, 151, 167, 152, 144, 160, 163, 136, 126, 140, + 125, 125, 147, 134, 115, 116, 111, 111, 112, 113, 114, 113, 111, 109, 111, 112, + 111, 111, 113, 112, 113, 112, 113, 113, 110, 111, 112, 113, 114, 113, 112, 111, + 113, 113, 113, 113, 113, 113, 113, 113, 110, 110, 110, 90, 94, 94, 91, 92, + 95, 95, 93, 96, 96, 97, 97, 97, 98, 98, 98, 102, 101, 98, 96, 95, + 91, 91, 90, 96, 94, 92, 92, 94, 97, 100, 101, 93, 97, 110, 113, 107, + 111, 129, 137, 138, 152, 161, 157, 150, 147, 139, 130, 126, 134, 136, 124, 115, + 123, 142, 156, 164, 160, 163, 165, 166, 165, 168, 170, 166, 170, 176, 183, 184, + 181, 181, 185, 190, 182, 177, 181, 192, 199, 199, 195, 194, 193, 194, 192, 190, + 191, 196, 198, 198, 199, 201, 203, 205, 206, 208, 205, 203, 194, 190, 194, 199, + 199, 197, 195, 208, 201, 208, 203, 184, 191, 205, 200, 197, 206, 209, 203, 198, + 197, 195, 192, 194, 204, 203, 190, 184, 191, 198, 193, 182, 169, 167, 169, 168, + 176, 184, 180, 180, 175, 168, 170, 180, 184, 177, 168, 166, 164, 164, 172, 178, + 175, 160, 149, 129, 121, 120, 131, 138, 134, 138, 153, 155, 160, 158, 153, 149, + 147, 145, 142, 136, 117, 114, 132, 135, 122, 114, 117, 119, 120, 116, 108, 107, + 110, 111, 110, 110, 111, 113, 112, 111, 111, 114, 116, 113, 114, 114, 114, 114, + 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, 91, 94, + 94, 91, 92, 95, 96, 93, 94, 94, 94, 95, 95, 96, 96, 96, 99, 99, + 96, 95, 94, 93, 93, 94, 89, 94, 99, 101, 100, 101, 102, 102, 104, 99, + 105, 108, 105, 115, 130, 134, 146, 153, 153, 148, 143, 140, 136, 129, 129, 128, + 128, 130, 139, 149, 153, 148, 156, 155, 160, 163, 168, 170, 174, 176, 172, 171, + 176, 182, 187, 183, 185, 185, 185, 179, 179, 181, 191, 194, 194, 188, 194, 195, + 197, 196, 194, 192, 194, 195, 196, 198, 200, 202, 205, 207, 211, 207, 196, 195, + 197, 200, 201, 200, 199, 199, 201, 196, 204, 205, 195, 201, 208, 198, 202, 208, + 207, 201, 199, 204, 206, 204, 183, 199, 210, 204, 200, 197, 190, 178, 187, 176, + 178, 174, 162, 164, 173, 172, 187, 183, 179, 179, 180, 179, 173, 162, 155, 151, + 151, 157, 166, 171, 168, 165, 177, 150, 126, 120, 126, 127, 124, 130, 145, 148, + 147, 152, 158, 158, 147, 135, 139, 129, 124, 131, 136, 135, 129, 124, 119, 121, + 121, 115, 111, 110, 112, 110, 110, 111, 113, 112, 111, 111, 114, 116, 113, 114, + 114, 114, 114, 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, + 113, 91, 94, 94, 92, 92, 95, 96, 93, 94, 94, 95, 95, 95, 96, 96, + 96, 96, 96, 95, 95, 95, 95, 96, 97, 91, 97, 102, 105, 106, 105, 108, + 111, 116, 107, 106, 110, 115, 130, 143, 144, 156, 157, 154, 146, 139, 135, 128, + 120, 121, 123, 129, 140, 154, 163, 157, 143, 149, 151, 155, 161, 167, 171, 176, + 177, 175, 169, 173, 177, 183, 180, 182, 182, 179, 177, 181, 182, 187, 186, 187, + 182, 188, 191, 193, 193, 190, 187, 188, 187, 190, 192, 193, 196, 199, 203, 207, + 207, 191, 195, 202, 203, 199, 196, 195, 196, 209, 203, 204, 202, 196, 200, 202, + 190, 204, 209, 211, 212, 213, 214, 210, 204, 187, 195, 199, 190, 189, 194, 196, + 194, 183, 182, 187, 180, 164, 164, 178, 183, 176, 177, 178, 179, 179, 177, 174, + 168, 162, 155, 153, 154, 160, 162, 163, 162, 166, 175, 174, 156, 129, 109, 108, + 121, 142, 142, 138, 138, 145, 148, 144, 138, 139, 138, 133, 127, 132, 143, 143, + 134, 122, 126, 127, 122, 115, 113, 112, 112, 110, 111, 111, 112, 111, 111, 114, + 116, 113, 114, 114, 114, 114, 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, + 112, 113, 113, 113, 91, 94, 95, 92, 92, 96, 96, 93, 97, 97, 97, 98, + 98, 98, 99, 99, 97, 95, 94, 94, 96, 96, 96, 98, 101, 101, 102, 104, + 106, 110, 113, 117, 117, 110, 112, 120, 126, 143, 159, 160, 159, 159, 154, 145, + 133, 123, 114, 108, 116, 131, 147, 154, 154, 154, 150, 145, 149, 150, 156, 162, + 167, 171, 175, 176, 173, 169, 173, 174, 175, 170, 175, 178, 179, 178, 182, 180, + 182, 180, 182, 183, 183, 185, 187, 187, 185, 184, 183, 184, 188, 188, 189, 191, + 193, 197, 199, 201, 194, 199, 203, 201, 197, 195, 194, 193, 217, 212, 206, 198, + 194, 199, 204, 201, 198, 195, 195, 192, 196, 195, 194, 188, 202, 200, 190, 177, + 173, 182, 193, 200, 187, 187, 192, 187, 171, 173, 187, 192, 177, 174, 174, 177, + 179, 178, 177, 175, 165, 162, 162, 161, 159, 155, 152, 150, 160, 165, 169, 166, + 158, 144, 121, 107, 121, 130, 131, 132, 134, 138, 143, 146, 140, 142, 141, 131, + 129, 137, 145, 144, 132, 130, 131, 126, 120, 119, 116, 110, 112, 111, 111, 110, + 111, 111, 114, 116, 113, 114, 114, 114, 114, 113, 112, 111, 114, 114, 114, 113, + 113, 112, 112, 112, 113, 113, 113, 92, 95, 95, 93, 93, 96, 97, 94, 97, + 97, 98, 98, 99, 99, 99, 99, 98, 97, 96, 95, 96, 95, 96, 96, 105, + 103, 103, 108, 114, 116, 112, 112, 112, 113, 122, 129, 133, 147, 161, 164, 152, + 150, 144, 133, 120, 110, 110, 111, 129, 143, 159, 164, 157, 154, 155, 153, 157, + 160, 164, 168, 171, 174, 176, 176, 172, 173, 178, 178, 171, 165, 170, 179, 179, + 179, 179, 176, 175, 174, 179, 182, 182, 183, 184, 183, 181, 182, 185, 188, 188, + 188, 188, 188, 190, 191, 192, 194, 202, 207, 207, 203, 203, 207, 207, 203, 209, + 215, 212, 205, 205, 211, 218, 224, 227, 214, 202, 196, 199, 204, 212, 215, 203, + 203, 198, 189, 183, 181, 179, 178, 199, 197, 198, 194, 181, 182, 188, 188, 195, + 184, 176, 179, 181, 179, 175, 175, 169, 168, 167, 167, 162, 159, 159, 158, 159, + 159, 156, 156, 160, 160, 147, 137, 102, 109, 115, 125, 137, 143, 144, 144, 144, + 144, 144, 140, 130, 127, 140, 149, 142, 135, 133, 128, 126, 124, 117, 109, 113, + 113, 111, 110, 111, 111, 114, 116, 113, 114, 114, 114, 114, 113, 112, 111, 114, + 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, 92, 95, 96, 93, 93, 97, + 97, 94, 95, 96, 96, 96, 97, 97, 97, 98, 100, 99, 98, 96, 96, 94, + 95, 97, 100, 101, 106, 114, 119, 115, 103, 101, 117, 126, 138, 143, 142, 148, + 162, 161, 154, 144, 134, 126, 119, 121, 133, 139, 146, 145, 151, 156, 160, 166, + 163, 155, 162, 165, 169, 171, 171, 172, 174, 175, 174, 176, 184, 183, 178, 170, + 176, 183, 182, 179, 178, 174, 174, 173, 178, 181, 185, 187, 188, 185, 186, 188, + 193, 197, 189, 189, 189, 190, 189, 188, 187, 188, 196, 202, 202, 198, 201, 209, + 211, 206, 195, 211, 212, 207, 210, 208, 207, 214, 201, 195, 196, 197, 201, 197, + 197, 199, 198, 197, 197, 195, 192, 188, 184, 184, 197, 191, 195, 193, 186, 189, + 194, 189, 192, 180, 173, 178, 183, 180, 177, 179, 184, 180, 174, 167, 164, 163, + 165, 167, 153, 161, 167, 164, 156, 151, 154, 165, 138, 122, 105, 105, 123, 139, + 142, 140, 146, 147, 148, 147, 137, 128, 136, 144, 139, 135, 135, 132, 129, 126, + 120, 111, 113, 113, 111, 110, 110, 111, 114, 116, 113, 114, 114, 114, 114, 113, + 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, 92, 95, 96, + 93, 94, 97, 97, 94, 96, 96, 96, 97, 97, 97, 98, 98, 100, 99, 98, + 96, 96, 95, 97, 99, 99, 103, 108, 109, 107, 101, 97, 101, 131, 140, 151, + 156, 151, 156, 164, 162, 154, 140, 131, 133, 141, 149, 159, 160, 146, 139, 142, + 147, 159, 168, 167, 160, 169, 171, 172, 174, 172, 170, 169, 171, 177, 177, 182, + 186, 188, 183, 184, 187, 187, 184, 184, 182, 183, 182, 184, 184, 190, 192, 194, + 194, 194, 193, 196, 198, 193, 194, 196, 197, 196, 194, 190, 186, 187, 196, 200, + 194, 193, 199, 201, 197, 192, 208, 205, 199, 205, 201, 192, 200, 202, 204, 212, + 219, 218, 208, 202, 202, 204, 199, 196, 196, 197, 198, 200, 201, 192, 188, 195, + 197, 191, 193, 199, 194, 179, 170, 171, 180, 182, 176, 175, 185, 196, 193, 183, + 175, 170, 168, 166, 163, 172, 159, 152, 163, 173, 167, 155, 149, 171, 151, 124, + 111, 116, 127, 139, 145, 147, 152, 151, 146, 143, 143, 142, 132, 124, 127, 139, + 137, 130, 125, 118, 114, 114, 113, 111, 110, 110, 110, 113, 115, 113, 114, 114, + 114, 114, 113, 112, 111, 114, 114, 114, 113, 113, 112, 112, 112, 113, 113, 113, + 91, 95, 95, 92, 94, 97, 99, 97, 100, 100, 101, 101, 101, 100, 100, 100, + 99, 97, 97, 96, 94, 95, 98, 101, 103, 110, 111, 106, 97, 95, 101, 116, + 140, 144, 153, 156, 153, 158, 164, 155, 144, 128, 123, 136, 153, 161, 162, 153, + 144, 143, 149, 151, 155, 164, 169, 171, 175, 177, 180, 180, 179, 176, 174, 177, + 175, 172, 173, 183, 191, 191, 187, 184, 189, 188, 188, 189, 190, 190, 188, 186, + 188, 191, 195, 195, 195, 194, 194, 194, 193, 195, 197, 199, 199, 196, 193, 187, + 190, 205, 213, 204, 195, 196, 198, 195, 200, 212, 202, 195, 210, 211, 203, 211, + 218, 212, 206, 203, 198, 194, 200, 211, 209, 208, 205, 206, 204, 199, 193, 191, + 199, 197, 203, 203, 189, 187, 191, 187, 181, 179, 183, 191, 187, 174, 172, 183, + 184, 185, 180, 178, 179, 175, 167, 161, 168, 164, 166, 168, 156, 143, 149, 168, + 152, 155, 152, 140, 124, 118, 126, 139, 134, 146, 143, 137, 144, 159, 153, 125, + 115, 129, 149, 147, 134, 123, 120, 119, 117, 117, 114, 112, 108, 108, 109, 111, + 112, 113, 113, 113, 113, 112, 111, 110, 113, 113, 113, 112, 112, 111, 111, 111, + 113, 113, 113, 90, 90, 90, 92, 94, 96, 99, 100, 101, 101, 100, 101, 99, + 99, 97, 97, 100, 100, 99, 97, 94, 97, 99, 104, 114, 110, 105, 104, 112, + 121, 128, 132, 137, 145, 157, 157, 150, 153, 152, 136, 125, 125, 129, 144, 163, + 160, 147, 144, 147, 148, 154, 158, 161, 165, 169, 171, 173, 173, 174, 175, 177, + 179, 182, 181, 170, 175, 181, 182, 180, 179, 182, 186, 193, 185, 187, 189, 184, + 184, 183, 173, 181, 186, 192, 191, 187, 185, 189, 193, 185, 198, 206, 199, 187, + 186, 193, 197, 197, 198, 195, 192, 195, 203, 207, 206, 206, 202, 199, 200, 206, + 209, 208, 206, 203, 199, 201, 208, 205, 196, 195, 202, 207, 211, 211, 205, 200, + 200, 200, 198, 204, 203, 202, 199, 192, 187, 193, 203, 188, 189, 186, 180, 178, + 181, 182, 182, 187, 180, 171, 167, 169, 171, 167, 163, 169, 168, 165, 164, 162, + 158, 156, 153, 156, 159, 157, 153, 151, 141, 118, 99, 106, 122, 130, 131, 140, + 152, 153, 136, 143, 131, 134, 142, 144, 135, 125, 123, 121, 120, 118, 114, 110, + 106, 101, 104, 107, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 110, 110, + 109, 109, 109, 113, 113, 113, 89, 89, 90, 92, 94, 97, 100, 101, 103, 103, + 103, 102, 101, 100, 98, 97, 101, 98, 96, 97, 100, 102, 106, 110, 108, 108, + 107, 110, 120, 130, 137, 141, 153, 150, 153, 151, 145, 146, 147, 133, 120, 130, + 137, 146, 155, 152, 143, 145, 148, 150, 152, 156, 160, 163, 165, 166, 175, 175, + 176, 177, 179, 180, 180, 180, 173, 175, 178, 179, 180, 180, 183, 186, 182, 174, + 176, 182, 181, 185, 186, 177, 183, 185, 186, 186, 185, 184, 184, 184, 184, 191, + 193, 189, 185, 188, 192, 194, 195, 200, 205, 205, 207, 207, 203, 196, 203, 205, + 209, 215, 220, 221, 217, 213, 198, 198, 203, 210, 211, 208, 209, 212, 199, 207, + 210, 206, 202, 203, 205, 206, 204, 197, 193, 198, 201, 196, 190, 186, 190, 193, + 192, 185, 183, 184, 185, 184, 181, 175, 170, 170, 173, 173, 168, 162, 171, 168, + 165, 164, 164, 162, 156, 153, 150, 152, 151, 149, 148, 144, 134, 124, 106, 105, + 111, 129, 139, 138, 141, 146, 138, 130, 127, 133, 138, 136, 133, 126, 123, 120, + 119, 114, 110, 105, 101, 103, 107, 110, 110, 110, 110, 110, 110, 110, 111, 111, + 111, 110, 110, 109, 109, 109, 112, 112, 112, 90, 89, 90, 93, 94, 97, 99, + 100, 104, 103, 101, 100, 99, 98, 98, 96, 96, 93, 93, 97, 104, 109, 110, + 114, 103, 107, 109, 117, 128, 138, 144, 147, 152, 148, 156, 162, 156, 146, 137, + 119, 123, 146, 158, 156, 155, 151, 146, 148, 155, 153, 153, 157, 163, 166, 166, + 164, 174, 175, 177, 178, 178, 177, 176, 174, 177, 176, 177, 178, 179, 181, 183, + 184, 181, 171, 173, 180, 182, 189, 191, 181, 191, 189, 187, 188, 189, 189, 186, + 183, 193, 193, 191, 188, 191, 197, 197, 193, 197, 199, 198, 195, 195, 199, 201, + 199, 201, 205, 209, 211, 209, 207, 204, 202, 212, 214, 214, 207, 201, 196, 192, + 187, 200, 208, 212, 207, 202, 202, 203, 203, 204, 197, 194, 198, 203, 198, 189, + 184, 186, 193, 195, 188, 184, 183, 184, 184, 179, 175, 173, 175, 178, 176, 169, + 162, 172, 168, 164, 165, 167, 167, 161, 156, 152, 153, 151, 150, 152, 155, 157, + 157, 136, 115, 104, 114, 130, 134, 133, 136, 132, 129, 123, 121, 126, 133, 134, + 128, 121, 117, 114, 112, 110, 109, 108, 108, 112, 112, 112, 112, 112, 112, 113, + 113, 114, 114, 114, 113, 114, 113, 113, 112, 111, 111, 111, 91, 91, 93, 94, + 95, 97, 98, 98, 100, 100, 100, 97, 98, 97, 95, 93, 90, 87, 92, 100, + 106, 110, 108, 110, 107, 112, 120, 127, 138, 146, 151, 153, 166, 154, 152, 152, + 140, 134, 136, 131, 130, 158, 170, 161, 156, 153, 149, 149, 161, 158, 156, 160, + 168, 172, 171, 168, 170, 171, 174, 176, 176, 175, 173, 171, 177, 174, 173, 174, + 177, 180, 181, 181, 191, 180, 179, 184, 185, 191, 191, 180, 190, 190, 190, 190, + 189, 189, 187, 185, 195, 195, 193, 192, 195, 200, 197, 191, 190, 193, 193, 190, + 191, 197, 201, 202, 202, 204, 204, 200, 195, 194, 198, 203, 203, 209, 210, 204, + 204, 212, 214, 210, 198, 201, 203, 201, 201, 203, 201, 197, 201, 200, 201, 198, + 193, 187, 192, 201, 177, 187, 192, 187, 181, 180, 181, 182, 177, 175, 174, 176, + 178, 177, 170, 165, 172, 167, 163, 164, 168, 169, 164, 158, 161, 158, 156, 151, + 149, 150, 155, 161, 149, 147, 129, 108, 106, 121, 126, 124, 135, 139, 130, 119, + 119, 127, 133, 130, 119, 113, 110, 109, 110, 112, 115, 114, 114, 113, 113, 113, + 113, 114, 114, 116, 117, 117, 117, 116, 117, 116, 116, 115, 112, 111, 111, 93, + 93, 94, 94, 95, 95, 97, 97, 96, 96, 96, 93, 94, 93, 91, 90, 87, + 88, 94, 103, 109, 111, 109, 109, 118, 125, 133, 139, 146, 150, 152, 153, 153, + 149, 156, 153, 135, 125, 125, 121, 137, 159, 166, 158, 158, 159, 153, 153, 162, + 159, 156, 160, 168, 172, 172, 169, 166, 168, 171, 174, 176, 176, 175, 173, 178, + 176, 174, 175, 178, 180, 181, 181, 196, 185, 185, 188, 187, 190, 189, 178, 184, + 188, 191, 190, 186, 184, 186, 189, 183, 189, 193, 192, 194, 196, 194, 190, 178, + 190, 202, 207, 206, 204, 198, 191, 199, 203, 205, 204, 201, 204, 212, 220, 221, + 224, 217, 202, 194, 197, 197, 192, 197, 196, 195, 197, 205, 211, 207, 199, 198, + 199, 203, 201, 195, 190, 196, 205, 172, 182, 191, 188, 181, 180, 183, 184, 178, + 176, 173, 173, 175, 175, 172, 169, 169, 165, 161, 162, 166, 168, 165, 160, 161, + 157, 156, 152, 147, 144, 146, 152, 145, 163, 160, 129, 102, 96, 105, 116, 134, + 144, 139, 127, 117, 121, 130, 133, 119, 110, 106, 105, 110, 115, 122, 121, 117, + 114, 114, 114, 114, 116, 116, 117, 118, 118, 120, 119, 120, 119, 119, 116, 114, + 111, 111, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 93, 92, 91, 91, + 90, 90, 90, 94, 102, 107, 111, 111, 112, 116, 126, 134, 139, 144, 147, 148, + 147, 147, 136, 137, 144, 138, 122, 121, 127, 117, 145, 157, 157, 153, 161, 164, + 159, 160, 158, 156, 154, 156, 160, 164, 165, 164, 165, 167, 170, 173, 176, 177, + 178, 178, 179, 177, 178, 178, 179, 180, 181, 182, 189, 181, 185, 189, 186, 188, + 188, 179, 186, 192, 197, 195, 190, 187, 190, 195, 178, 186, 193, 194, 194, 197, + 198, 197, 184, 194, 201, 201, 198, 197, 195, 191, 193, 199, 205, 207, 204, 203, + 205, 208, 194, 196, 196, 194, 197, 207, 216, 220, 210, 206, 200, 198, 204, 209, + 203, 194, 199, 194, 195, 202, 207, 202, 195, 189, 176, 184, 192, 188, 184, 184, + 187, 186, 179, 176, 173, 172, 173, 174, 174, 174, 166, 164, 162, 162, 164, 165, + 164, 163, 157, 153, 153, 156, 152, 149, 149, 155, 159, 151, 147, 148, 134, 108, + 90, 97, 126, 136, 137, 130, 121, 117, 126, 134, 122, 111, 105, 103, 110, 117, + 125, 125, 117, 113, 113, 114, 114, 116, 116, 117, 118, 120, 120, 120, 120, 120, + 120, 118, 114, 111, 111, 96, 96, 96, 95, 95, 94, 94, 92, 94, 93, 93, + 91, 92, 92, 93, 93, 97, 102, 106, 107, 108, 110, 118, 127, 134, 140, 143, + 144, 144, 141, 140, 139, 148, 140, 128, 111, 110, 142, 170, 167, 160, 162, 157, + 156, 163, 163, 158, 163, 156, 155, 153, 152, 152, 154, 155, 156, 163, 164, 166, + 168, 171, 173, 175, 176, 175, 177, 180, 180, 178, 177, 179, 182, 179, 177, 185, + 191, 186, 187, 189, 182, 192, 194, 196, 195, 192, 190, 190, 192, 186, 191, 193, + 192, 192, 197, 199, 198, 194, 197, 194, 186, 183, 189, 197, 202, 194, 197, 199, + 198, 194, 191, 191, 192, 219, 216, 214, 213, 210, 208, 211, 217, 214, 213, 208, + 201, 200, 203, 201, 196, 202, 196, 195, 201, 205, 199, 190, 184, 185, 190, 192, + 189, 187, 188, 187, 185, 178, 176, 175, 174, 175, 175, 175, 175, 163, 164, 164, + 163, 161, 161, 163, 166, 159, 155, 156, 160, 159, 155, 154, 157, 165, 145, 136, + 147, 154, 135, 103, 94, 119, 123, 127, 134, 132, 122, 123, 130, 130, 116, 107, + 105, 109, 116, 125, 125, 116, 112, 112, 113, 113, 114, 114, 116, 117, 118, 118, + 119, 119, 119, 119, 116, 113, 110, 110, 98, 98, 96, 95, 94, 92, 92, 92, + 94, 94, 94, 95, 95, 97, 97, 100, 104, 109, 110, 108, 104, 108, 120, 133, + 138, 140, 141, 140, 136, 133, 130, 127, 117, 127, 141, 150, 163, 195, 201, 176, + 171, 167, 159, 158, 163, 157, 153, 163, 158, 157, 155, 152, 148, 148, 150, 152, + 160, 160, 161, 163, 165, 167, 169, 171, 168, 173, 178, 177, 173, 171, 173, 177, + 178, 176, 188, 193, 187, 186, 190, 184, 191, 189, 187, 186, 187, 185, 182, 179, + 195, 194, 189, 184, 185, 190, 192, 189, 188, 195, 198, 195, 192, 196, 202, 204, + 198, 197, 194, 191, 191, 193, 199, 203, 203, 198, 200, 206, 206, 199, 201, 210, + 198, 203, 205, 200, 198, 204, 210, 214, 200, 201, 202, 199, 191, 183, 185, 192, + 190, 193, 192, 187, 186, 187, 185, 181, 177, 177, 177, 177, 178, 178, 177, 176, + 163, 166, 167, 165, 160, 159, 164, 168, 166, 160, 159, 163, 163, 156, 152, 155, + 145, 157, 158, 146, 138, 135, 124, 119, 116, 110, 115, 133, 139, 127, 124, 129, + 139, 125, 112, 107, 109, 114, 122, 123, 113, 110, 110, 110, 112, 112, 113, 113, + 115, 115, 117, 116, 117, 116, 118, 115, 112, 109, 109, 99, 98, 96, 95, 94, + 92, 92, 90, 90, 91, 94, 99, 102, 101, 99, 100, 119, 113, 106, 105, 111, + 120, 128, 136, 136, 137, 135, 128, 127, 132, 139, 138, 167, 171, 181, 185, 183, + 180, 180, 179, 164, 161, 160, 160, 162, 163, 165, 166, 163, 164, 163, 160, 155, + 151, 149, 150, 143, 147, 152, 154, 155, 158, 162, 166, 170, 164, 165, 173, 178, + 175, 178, 185, 182, 178, 175, 180, 188, 191, 187, 182, 206, 202, 198, 193, 190, + 190, 191, 193, 193, 194, 196, 197, 192, 186, 189, 195, 184, 190, 197, 201, 199, + 195, 191, 189, 192, 195, 197, 197, 195, 195, 197, 200, 199, 204, 204, 202, 212, + 225, 224, 213, 203, 195, 191, 200, 210, 210, 203, 198, 211, 194, 184, 189, 194, + 190, 189, 193, 191, 189, 182, 182, 188, 181, 175, 184, 159, 174, 180, 171, 166, + 171, 173, 168, 176, 171, 167, 169, 172, 169, 157, 146, 161, 158, 162, 170, 170, + 163, 158, 159, 155, 155, 153, 152, 149, 146, 145, 148, 134, 104, 105, 132, 139, + 127, 129, 137, 139, 139, 124, 105, 105, 112, 117, 119, 111, 109, 107, 105, 109, + 113, 113, 107, 112, 112, 112, 112, 113, 114, 114, 114, 106, 113, 111, 98, 98, + 98, 95, 94, 92, 91, 91, 95, 97, 101, 102, 101, 101, 106, 119, 118, 115, + 109, 115, 123, 128, 129, 130, 122, 133, 143, 148, 152, 164, 175, 178, 179, 179, + 183, 182, 174, 169, 164, 164, 157, 155, 154, 156, 157, 158, 159, 159, 161, 159, + 157, 157, 158, 156, 152, 148, 143, 145, 145, 143, 142, 143, 148, 151, 158, 163, + 173, 179, 175, 168, 172, 181, 181, 179, 179, 184, 190, 193, 192, 189, 189, 189, + 189, 190, 191, 192, 194, 195, 193, 194, 197, 199, 196, 191, 193, 199, 198, 196, + 193, 190, 188, 191, 197, 201, 195, 198, 200, 200, 198, 197, 198, 200, 203, 210, + 210, 202, 201, 208, 210, 204, 194, 192, 195, 203, 206, 203, 199, 198, 196, 189, + 191, 200, 202, 193, 190, 192, 203, 197, 186, 181, 186, 183, 178, 181, 179, 172, + 175, 185, 182, 167, 159, 162, 164, 165, 163, 159, 154, 154, 159, 164, 165, 163, + 165, 170, 170, 163, 161, 164, 166, 156, 147, 145, 150, 149, 142, 134, 141, 137, + 134, 120, 116, 129, 136, 117, 133, 144, 138, 124, 118, 113, 107, 104, 106, 110, + 111, 107, 106, 108, 106, 103, 108, 108, 109, 109, 109, 109, 110, 110, 109, 116, + 112, 96, 97, 97, 95, 94, 93, 92, 94, 99, 99, 101, 105, 108, 110, 111, + 116, 112, 117, 116, 117, 120, 122, 133, 141, 169, 181, 191, 189, 181, 180, 184, + 183, 172, 172, 174, 171, 166, 159, 158, 160, 161, 161, 160, 160, 160, 161, 163, + 163, 166, 161, 159, 162, 167, 167, 161, 154, 153, 151, 148, 142, 138, 137, 139, + 142, 153, 152, 154, 158, 164, 171, 176, 181, 179, 180, 182, 186, 188, 190, 191, + 191, 186, 187, 189, 190, 190, 190, 189, 188, 191, 192, 196, 200, 198, 194, 195, + 200, 194, 202, 212, 218, 216, 209, 201, 196, 197, 199, 201, 201, 199, 198, 197, + 197, 197, 208, 213, 205, 198, 203, 209, 211, 212, 208, 204, 199, 193, 189, 194, + 202, 205, 196, 190, 189, 185, 176, 176, 182, 185, 182, 177, 174, 179, 183, 180, + 175, 190, 171, 162, 167, 166, 156, 149, 151, 158, 163, 168, 168, 163, 158, 157, + 160, 163, 165, 167, 169, 166, 160, 162, 168, 171, 163, 154, 150, 152, 149, 142, + 135, 142, 154, 152, 125, 113, 132, 136, 108, 120, 134, 133, 125, 123, 119, 118, + 121, 105, 111, 116, 113, 108, 110, 110, 109, 109, 109, 109, 109, 109, 109, 111, + 111, 111, 117, 114, 95, 96, 95, 94, 95, 93, 94, 95, 98, 96, 98, 111, + 123, 122, 106, 98, 116, 128, 130, 123, 113, 120, 147, 172, 173, 181, 188, 185, + 177, 172, 172, 165, 161, 160, 162, 161, 158, 157, 158, 160, 166, 168, 166, 166, + 166, 166, 168, 168, 167, 164, 164, 167, 170, 170, 165, 159, 161, 159, 155, 149, + 143, 139, 137, 137, 133, 138, 145, 152, 158, 162, 168, 173, 173, 177, 180, 183, + 182, 182, 184, 187, 190, 190, 191, 191, 190, 189, 188, 187, 189, 190, 194, 198, + 196, 192, 192, 196, 198, 198, 198, 196, 194, 194, 196, 198, 196, 198, 199, 199, + 198, 195, 194, 192, 191, 203, 211, 207, 203, 205, 210, 213, 194, 201, 212, 218, + 211, 195, 184, 181, 197, 191, 188, 191, 195, 195, 199, 205, 202, 204, 209, 208, + 205, 209, 209, 197, 187, 188, 183, 174, 176, 185, 181, 169, 166, 162, 161, 166, + 172, 170, 160, 151, 156, 161, 165, 164, 160, 157, 159, 164, 162, 168, 172, 164, + 152, 142, 144, 147, 143, 141, 149, 148, 137, 133, 126, 108, 122, 131, 129, 121, + 121, 117, 113, 113, 108, 112, 115, 113, 111, 113, 115, 112, 113, 112, 112, 111, + 111, 111, 111, 112, 110, 117, 115, 95, 96, 95, 94, 95, 93, 94, 98, 97, + 100, 109, 118, 123, 120, 105, 99, 131, 135, 134, 129, 124, 135, 160, 181, 166, + 167, 167, 166, 166, 168, 165, 158, 169, 166, 166, 163, 159, 158, 157, 158, 164, + 164, 164, 164, 164, 165, 166, 167, 162, 164, 166, 166, 164, 162, 160, 159, 160, + 159, 157, 153, 148, 142, 135, 132, 117, 128, 144, 154, 152, 145, 150, 160, 163, + 169, 174, 177, 177, 178, 180, 186, 185, 185, 185, 187, 189, 191, 194, 195, 192, + 191, 193, 196, 195, 191, 190, 194, 193, 193, 193, 191, 189, 190, 192, 195, 198, + 197, 197, 197, 197, 195, 193, 191, 194, 201, 207, 208, 206, 205, 203, 200, 217, + 204, 190, 185, 187, 194, 208, 220, 202, 200, 203, 212, 215, 206, 193, 183, 175, + 170, 173, 165, 147, 146, 150, 139, 136, 151, 163, 165, 172, 182, 182, 174, 174, + 163, 152, 150, 157, 162, 162, 159, 152, 160, 165, 164, 159, 157, 158, 160, 154, + 164, 172, 168, 156, 145, 146, 149, 148, 137, 145, 159, 151, 135, 122, 112, 99, + 111, 113, 115, 125, 124, 118, 118, 117, 117, 114, 111, 113, 118, 117, 111, 113, + 112, 109, 109, 107, 107, 106, 107, 109, 116, 115, 94, 95, 94, 94, 92, 93, + 95, 98, 97, 110, 121, 118, 109, 105, 111, 125, 135, 129, 124, 133, 144, 155, + 161, 160, 173, 168, 164, 160, 163, 167, 165, 158, 167, 166, 165, 165, 164, 164, + 163, 162, 165, 165, 165, 165, 164, 165, 165, 166, 166, 168, 169, 167, 163, 161, + 161, 162, 160, 160, 159, 158, 155, 148, 139, 133, 137, 109, 93, 108, 132, 142, + 148, 159, 153, 158, 164, 170, 173, 177, 181, 185, 183, 183, 183, 183, 184, 186, + 189, 190, 195, 192, 192, 195, 195, 192, 192, 195, 186, 193, 202, 207, 206, 200, + 194, 191, 200, 198, 196, 196, 196, 196, 195, 193, 188, 192, 197, 201, 204, 203, + 199, 194, 191, 192, 202, 215, 219, 208, 192, 182, 193, 186, 179, 175, 170, 156, + 137, 122, 132, 111, 107, 98, 74, 72, 85, 81, 74, 70, 79, 94, 101, 107, + 126, 149, 166, 169, 170, 166, 159, 155, 157, 159, 152, 160, 164, 162, 160, 159, + 161, 159, 156, 156, 158, 158, 161, 154, 146, 142, 147, 141, 144, 148, 144, 147, + 144, 131, 110, 115, 106, 101, 112, 119, 124, 133, 132, 130, 125, 122, 123, 127, + 124, 115, 119, 117, 116, 113, 113, 111, 110, 111, 112, 118, 115, 96, 96, 95, + 94, 92, 92, 94, 96, 103, 111, 115, 109, 101, 104, 119, 136, 133, 130, 129, + 141, 156, 161, 158, 151, 148, 146, 146, 144, 150, 159, 165, 165, 161, 162, 165, + 167, 171, 172, 173, 171, 173, 171, 170, 168, 166, 166, 165, 166, 173, 172, 169, + 168, 167, 167, 167, 166, 165, 163, 162, 161, 158, 153, 144, 139, 145, 83, 40, + 54, 90, 110, 128, 148, 147, 150, 155, 162, 166, 171, 173, 175, 181, 182, 183, + 183, 184, 184, 183, 183, 194, 190, 188, 191, 192, 191, 193, 197, 195, 192, 187, + 183, 183, 188, 196, 203, 200, 197, 193, 192, 194, 195, 195, 194, 188, 189, 191, + 195, 197, 196, 194, 193, 194, 189, 187, 189, 186, 176, 165, 159, 148, 142, 135, + 130, 131, 130, 126, 121, 89, 54, 50, 54, 35, 33, 47, 42, 46, 36, 33, + 38, 42, 51, 76, 104, 129, 141, 158, 167, 167, 161, 155, 152, 154, 157, 159, + 156, 157, 161, 161, 157, 159, 156, 154, 154, 158, 155, 149, 145, 148, 145, 145, + 141, 136, 142, 149, 143, 155, 157, 142, 121, 110, 103, 103, 116, 133, 135, 136, + 135, 136, 136, 132, 126, 127, 125, 123, 121, 120, 119, 117, 117, 113, 119, 116, + 93, 91, 91, 91, 91, 94, 96, 100, 110, 107, 103, 103, 111, 121, 130, 133, + 138, 142, 146, 151, 152, 152, 161, 167, 161, 162, 160, 152, 150, 153, 160, 163, + 169, 170, 170, 172, 175, 176, 174, 171, 172, 170, 169, 169, 167, 165, 165, 164, + 175, 168, 162, 162, 167, 170, 168, 164, 166, 163, 159, 157, 155, 151, 144, 140, + 110, 69, 42, 51, 55, 52, 81, 124, 147, 149, 153, 157, 162, 165, 164, 167, + 170, 174, 181, 186, 192, 193, 192, 192, 192, 187, 184, 187, 190, 191, 194, 199, + 191, 195, 200, 203, 203, 202, 201, 201, 200, 195, 190, 189, 192, 194, 195, 194, + 201, 200, 198, 195, 189, 183, 182, 184, 176, 166, 156, 150, 145, 139, 137, 140, + 141, 145, 149, 149, 148, 145, 141, 137, 80, 38, 38, 55, 42, 35, 41, 29, + 29, 38, 40, 31, 30, 41, 48, 46, 86, 91, 105, 128, 152, 166, 166, 160, + 156, 157, 155, 150, 153, 160, 160, 156, 159, 162, 164, 159, 153, 148, 151, 158, + 160, 148, 148, 151, 135, 126, 130, 137, 137, 157, 163, 153, 136, 112, 99, 106, + 116, 127, 139, 142, 144, 143, 140, 135, 129, 127, 123, 120, 120, 119, 118, 120, + 115, 122, 119, 80, 84, 89, 89, 89, 94, 99, 104, 119, 108, 101, 109, 126, + 138, 145, 145, 135, 145, 143, 138, 147, 156, 163, 171, 157, 160, 161, 159, 155, + 158, 169, 174, 180, 176, 173, 170, 170, 169, 170, 170, 167, 172, 167, 163, 170, + 169, 167, 171, 172, 168, 163, 161, 161, 163, 163, 163, 159, 165, 157, 149, 162, + 139, 159, 133, 65, 31, 38, 43, 41, 37, 35, 75, 107, 128, 149, 157, 160, + 166, 173, 175, 183, 176, 185, 192, 188, 187, 192, 190, 197, 190, 202, 202, 174, + 171, 193, 204, 207, 194, 187, 192, 198, 194, 188, 186, 189, 188, 187, 185, 183, + 180, 178, 177, 169, 168, 166, 164, 163, 162, 161, 161, 161, 159, 156, 155, 156, + 157, 156, 155, 154, 177, 135, 157, 160, 133, 158, 114, 32, 32, 33, 33, 32, + 30, 28, 27, 29, 32, 35, 33, 28, 28, 33, 39, 47, 52, 70, 88, 124, + 153, 154, 169, 159, 169, 165, 154, 153, 153, 156, 166, 157, 163, 170, 164, 160, + 156, 156, 156, 152, 151, 154, 156, 151, 143, 138, 141, 146, 157, 151, 147, 150, + 136, 103, 84, 90, 93, 115, 140, 149, 152, 150, 140, 137, 123, 124, 127, 118, + 114, 123, 125, 121, 121, 120, 79, 80, 83, 90, 96, 100, 104, 107, 100, 103, + 112, 126, 138, 144, 147, 146, 148, 156, 151, 144, 148, 151, 155, 162, 170, 169, + 166, 163, 164, 168, 176, 179, 179, 176, 173, 171, 169, 168, 168, 168, 168, 173, + 168, 165, 171, 170, 168, 173, 168, 165, 161, 160, 160, 161, 160, 160, 162, 143, + 177, 149, 146, 147, 144, 64, 42, 28, 40, 38, 36, 35, 27, 45, 46, 75, + 115, 143, 161, 168, 165, 158, 159, 158, 170, 179, 173, 174, 182, 185, 192, 177, + 181, 187, 175, 173, 171, 156, 163, 165, 169, 171, 171, 173, 177, 182, 173, 173, + 173, 172, 171, 170, 169, 167, 166, 166, 165, 164, 164, 164, 164, 165, 170, 167, + 165, 164, 165, 166, 165, 165, 167, 155, 169, 154, 161, 143, 156, 52, 36, 36, + 36, 35, 34, 32, 30, 30, 33, 33, 32, 31, 30, 30, 32, 33, 37, 42, + 52, 53, 84, 121, 133, 153, 159, 168, 164, 161, 167, 164, 152, 148, 155, 161, + 164, 162, 159, 159, 158, 155, 157, 153, 152, 151, 150, 144, 144, 150, 139, 150, + 149, 147, 151, 146, 131, 130, 121, 104, 102, 119, 135, 150, 155, 145, 145, 124, + 117, 114, 106, 112, 123, 123, 133, 129, 125, 84, 85, 90, 101, 109, 111, 104, + 100, 91, 104, 120, 134, 141, 140, 145, 146, 142, 151, 151, 152, 158, 159, 161, + 167, 176, 172, 164, 161, 164, 168, 174, 174, 176, 174, 172, 170, 169, 168, 168, + 168, 168, 173, 167, 164, 169, 167, 163, 169, 163, 161, 159, 159, 159, 158, 157, + 155, 159, 142, 160, 154, 129, 150, 85, 25, 33, 37, 47, 35, 33, 40, 31, + 28, 38, 43, 52, 62, 80, 102, 119, 126, 122, 121, 132, 136, 122, 119, 128, + 133, 136, 111, 93, 87, 86, 101, 106, 93, 69, 105, 141, 155, 155, 158, 162, + 163, 170, 170, 170, 171, 171, 171, 172, 172, 178, 177, 176, 175, 174, 174, 174, + 174, 177, 175, 173, 173, 174, 175, 174, 173, 174, 161, 163, 168, 153, 159, 104, + 22, 37, 36, 35, 33, 32, 31, 30, 30, 35, 32, 29, 28, 30, 31, 29, + 27, 31, 37, 42, 31, 50, 84, 101, 128, 150, 160, 160, 160, 169, 169, 162, + 161, 154, 157, 158, 157, 159, 161, 157, 152, 157, 152, 151, 151, 150, 148, 147, + 151, 144, 156, 153, 147, 148, 149, 148, 159, 156, 133, 118, 113, 113, 124, 132, + 127, 131, 123, 125, 127, 124, 129, 131, 121, 120, 118, 116, 97, 98, 104, 113, + 117, 111, 102, 99, 109, 117, 126, 134, 137, 136, 144, 148, 132, 141, 147, 152, + 161, 162, 165, 174, 175, 173, 165, 161, 161, 164, 169, 171, 174, 173, 172, 171, + 170, 170, 169, 169, 167, 172, 166, 162, 167, 163, 158, 163, 160, 159, 158, 158, + 158, 157, 154, 151, 155, 150, 139, 135, 142, 101, 32, 42, 39, 44, 44, 32, + 30, 38, 37, 32, 30, 31, 34, 36, 40, 45, 50, 51, 57, 52, 59, 61, + 47, 42, 48, 49, 52, 52, 52, 49, 47, 54, 55, 46, 46, 99, 152, 168, + 170, 174, 178, 173, 182, 180, 181, 181, 182, 182, 184, 183, 192, 191, 189, 186, + 184, 182, 181, 181, 179, 178, 176, 176, 177, 178, 177, 175, 175, 178, 147, 164, + 166, 123, 46, 40, 32, 30, 29, 27, 27, 28, 29, 30, 32, 31, 30, 29, + 30, 30, 29, 28, 32, 33, 40, 34, 42, 56, 67, 102, 122, 144, 156, 159, + 164, 163, 162, 168, 158, 158, 156, 155, 159, 161, 156, 148, 152, 150, 153, 157, + 157, 152, 147, 148, 150, 159, 153, 144, 143, 143, 146, 163, 159, 157, 156, 140, + 112, 100, 106, 106, 105, 105, 117, 121, 119, 126, 131, 119, 128, 129, 128, 119, + 117, 115, 114, 111, 104, 105, 111, 126, 127, 129, 133, 136, 136, 142, 141, 140, + 144, 145, 149, 156, 155, 158, 169, 175, 177, 174, 168, 161, 160, 167, 174, 171, + 171, 171, 172, 172, 171, 171, 171, 168, 173, 167, 163, 167, 162, 156, 161, 158, + 157, 156, 157, 157, 156, 152, 149, 149, 148, 144, 121, 137, 37, 34, 53, 40, + 38, 32, 31, 30, 28, 34, 33, 24, 31, 41, 45, 42, 34, 27, 25, 43, + 34, 36, 43, 40, 41, 45, 42, 31, 41, 43, 41, 42, 44, 45, 48, 85, + 126, 163, 166, 167, 176, 186, 180, 187, 184, 185, 182, 184, 182, 185, 186, 192, + 191, 188, 186, 184, 182, 182, 181, 181, 179, 178, 178, 179, 178, 176, 174, 175, + 173, 169, 145, 169, 49, 43, 43, 26, 26, 25, 25, 25, 27, 29, 30, 26, + 30, 33, 32, 29, 28, 30, 34, 34, 25, 34, 39, 42, 37, 42, 86, 100, + 124, 140, 150, 161, 159, 151, 151, 163, 161, 157, 155, 159, 161, 155, 146, 151, + 148, 151, 156, 158, 153, 149, 150, 151, 154, 147, 144, 148, 148, 149, 160, 147, + 159, 172, 162, 126, 105, 101, 95, 78, 75, 78, 77, 74, 86, 107, 109, 112, + 119, 126, 132, 123, 112, 106, 102, 101, 114, 130, 129, 128, 131, 137, 141, 140, + 140, 134, 143, 142, 141, 145, 152, 150, 156, 171, 170, 175, 174, 167, 159, 156, + 164, 171, 169, 170, 171, 172, 173, 173, 172, 172, 171, 176, 171, 167, 170, 165, + 159, 162, 156, 155, 154, 155, 155, 153, 150, 147, 139, 153, 138, 148, 63, 31, + 46, 40, 34, 33, 25, 38, 39, 25, 31, 29, 37, 34, 33, 30, 28, 27, + 34, 44, 32, 20, 20, 29, 29, 33, 35, 30, 40, 37, 22, 18, 28, 31, + 35, 50, 106, 138, 163, 166, 167, 177, 179, 173, 186, 185, 183, 181, 180, 181, + 182, 182, 187, 187, 186, 185, 185, 186, 187, 187, 184, 183, 181, 181, 181, 179, + 176, 175, 169, 171, 180, 157, 100, 26, 52, 24, 26, 26, 26, 27, 28, 29, + 31, 32, 24, 29, 34, 33, 29, 27, 31, 36, 37, 24, 31, 38, 42, 35, + 37, 78, 108, 114, 113, 120, 145, 160, 162, 164, 165, 164, 160, 156, 158, 160, + 155, 147, 159, 151, 148, 149, 152, 151, 152, 155, 151, 153, 145, 145, 150, 145, + 139, 148, 151, 157, 164, 163, 143, 126, 109, 87, 63, 56, 61, 65, 59, 63, + 79, 84, 72, 84, 97, 122, 113, 106, 109, 113, 113, 124, 138, 136, 136, 137, + 141, 142, 140, 141, 136, 134, 133, 133, 140, 151, 150, 157, 174, 169, 171, 169, + 165, 160, 158, 161, 164, 166, 167, 169, 171, 172, 172, 172, 171, 169, 175, 170, + 166, 170, 164, 157, 161, 154, 152, 151, 151, 151, 150, 147, 145, 137, 153, 128, + 137, 15, 48, 39, 34, 35, 39, 28, 42, 43, 28, 34, 25, 29, 26, 29, + 34, 33, 27, 24, 26, 41, 30, 32, 37, 31, 32, 36, 32, 23, 27, 26, + 36, 48, 37, 33, 53, 131, 153, 175, 181, 184, 189, 187, 180, 187, 186, 184, + 182, 182, 183, 184, 186, 189, 188, 188, 188, 189, 190, 191, 192, 187, 185, 183, + 182, 182, 179, 175, 173, 168, 180, 165, 155, 32, 46, 36, 26, 31, 31, 32, + 32, 32, 32, 31, 29, 26, 29, 32, 32, 30, 28, 29, 30, 37, 33, 39, + 37, 43, 43, 36, 58, 113, 118, 110, 107, 124, 143, 158, 173, 163, 163, 160, + 156, 157, 159, 156, 149, 161, 151, 145, 147, 150, 151, 151, 153, 151, 153, 147, + 148, 149, 139, 132, 141, 153, 150, 156, 160, 156, 149, 126, 94, 70, 55, 62, + 77, 76, 71, 72, 72, 76, 79, 82, 106, 101, 104, 119, 132, 131, 131, 138, + 151, 149, 145, 142, 137, 137, 144, 143, 134, 130, 132, 138, 146, 145, 151, 169, + 175, 175, 171, 168, 168, 165, 166, 163, 165, 167, 169, 171, 172, 173, 172, 172, + 167, 173, 168, 165, 168, 163, 156, 160, 152, 150, 148, 147, 148, 147, 145, 144, + 146, 136, 141, 70, 42, 33, 33, 40, 35, 44, 27, 33, 33, 26, 36, 21, + 40, 30, 27, 32, 36, 33, 30, 30, 30, 23, 27, 31, 22, 22, 29, 29, + 28, 32, 27, 31, 40, 33, 52, 99, 159, 168, 173, 171, 170, 176, 182, 184, + 187, 186, 184, 183, 183, 185, 187, 189, 191, 190, 189, 188, 188, 188, 188, 189, + 187, 185, 183, 182, 181, 177, 173, 170, 175, 178, 158, 109, 28, 49, 15, 44, + 32, 33, 33, 33, 32, 30, 28, 26, 30, 28, 28, 29, 30, 29, 26, 23, + 28, 37, 46, 34, 40, 47, 28, 28, 98, 123, 134, 125, 116, 112, 123, 143, + 159, 161, 159, 156, 156, 158, 156, 152, 155, 148, 147, 152, 155, 152, 148, 145, + 146, 150, 149, 151, 152, 142, 138, 150, 136, 138, 150, 161, 163, 163, 148, 119, + 89, 59, 55, 73, 77, 74, 77, 80, 80, 75, 71, 113, 119, 123, 128, 134, + 139, 146, 149, 154, 153, 151, 148, 141, 136, 138, 137, 148, 144, 135, 133, 148, + 159, 166, 174, 176, 179, 175, 170, 171, 170, 167, 162, 157, 158, 162, 168, 173, + 176, 175, 173, 171, 168, 166, 165, 164, 162, 156, 151, 155, 148, 151, 154, 146, + 145, 146, 140, 162, 119, 125, 48, 34, 46, 28, 35, 38, 36, 35, 38, 41, + 40, 33, 26, 22, 31, 32, 30, 31, 26, 26, 38, 30, 31, 30, 28, 26, + 27, 27, 30, 30, 26, 25, 40, 57, 67, 100, 148, 172, 175, 179, 181, 182, + 183, 184, 186, 187, 187, 187, 187, 187, 187, 186, 186, 192, 192, 191, 190, 190, + 189, 188, 188, 188, 191, 189, 182, 176, 176, 175, 174, 186, 160, 164, 58, 44, + 33, 31, 32, 32, 30, 38, 42, 32, 30, 32, 26, 33, 25, 32, 32, 23, + 34, 42, 27, 34, 36, 38, 40, 41, 40, 38, 36, 81, 126, 122, 130, 134, + 130, 103, 129, 136, 154, 166, 163, 157, 157, 163, 165, 160, 154, 152, 155, 154, + 148, 147, 150, 152, 150, 148, 149, 148, 144, 141, 141, 130, 139, 143, 141, 147, + 151, 146, 136, 81, 53, 66, 89, 81, 80, 84, 70, 78, 74, 71, 118, 121, + 124, 128, 133, 139, 146, 148, 154, 154, 152, 150, 143, 138, 141, 140, 140, 148, + 147, 142, 144, 145, 154, 167, 187, 186, 175, 167, 164, 168, 171, 169, 171, 170, + 167, 166, 168, 170, 171, 171, 170, 168, 166, 166, 166, 163, 158, 154, 149, 143, + 147, 150, 145, 146, 149, 143, 145, 139, 97, 38, 39, 39, 32, 35, 34, 32, + 31, 33, 36, 35, 28, 23, 26, 31, 28, 26, 28, 23, 21, 31, 27, 29, + 31, 32, 32, 32, 29, 29, 34, 27, 35, 79, 132, 153, 156, 166, 168, 171, + 175, 178, 179, 180, 182, 183, 190, 190, 190, 190, 189, 189, 189, 190, 190, 190, + 189, 189, 189, 188, 188, 188, 185, 185, 181, 177, 177, 179, 176, 172, 174, 164, + 132, 31, 31, 31, 27, 37, 28, 28, 30, 26, 20, 28, 37, 36, 19, 26, + 40, 40, 30, 30, 31, 24, 32, 34, 36, 38, 39, 39, 38, 37, 60, 119, + 123, 128, 132, 129, 124, 122, 125, 137, 147, 151, 153, 159, 162, 161, 156, 149, + 146, 149, 150, 147, 146, 148, 148, 150, 151, 149, 145, 140, 140, 143, 137, 139, + 140, 142, 146, 149, 142, 135, 123, 90, 80, 83, 73, 72, 81, 81, 83, 80, + 77, 125, 128, 131, 133, 137, 143, 149, 151, 148, 147, 147, 146, 141, 137, 142, + 142, 170, 175, 171, 162, 163, 161, 164, 172, 178, 182, 181, 178, 174, 171, 167, + 157, 165, 164, 164, 166, 170, 173, 174, 174, 166, 165, 164, 164, 164, 161, 156, + 153, 148, 142, 145, 148, 144, 147, 149, 141, 135, 153, 62, 34, 45, 36, 40, + 36, 31, 31, 31, 33, 33, 32, 27, 23, 29, 29, 21, 22, 28, 22, 18, + 26, 41, 37, 32, 29, 27, 29, 31, 33, 28, 47, 75, 115, 157, 169, 164, + 166, 170, 174, 179, 182, 183, 184, 186, 188, 191, 191, 191, 191, 191, 191, 191, + 191, 188, 188, 188, 188, 188, 187, 187, 187, 184, 181, 177, 175, 180, 184, 179, + 172, 174, 170, 99, 24, 31, 37, 25, 36, 42, 42, 35, 28, 35, 46, 41, + 23, 26, 32, 28, 26, 33, 36, 34, 35, 32, 33, 36, 38, 40, 40, 40, + 37, 37, 99, 127, 126, 131, 130, 144, 118, 126, 131, 137, 145, 155, 164, 165, + 162, 162, 154, 149, 151, 155, 154, 152, 151, 146, 152, 155, 151, 143, 139, 141, + 146, 142, 137, 136, 141, 147, 144, 137, 134, 123, 98, 77, 74, 71, 67, 69, + 75, 67, 67, 66, 128, 133, 136, 140, 145, 147, 149, 151, 148, 144, 145, 146, + 142, 139, 143, 144, 163, 174, 172, 160, 152, 149, 155, 169, 168, 175, 178, 179, + 174, 171, 164, 154, 156, 159, 166, 172, 177, 176, 171, 167, 165, 165, 165, 164, + 162, 158, 153, 150, 153, 147, 149, 149, 144, 147, 147, 136, 140, 129, 34, 36, + 41, 37, 40, 31, 32, 33, 32, 34, 33, 33, 29, 26, 27, 26, 19, 23, + 32, 26, 21, 29, 29, 29, 31, 35, 39, 42, 42, 41, 73, 110, 139, 152, + 159, 159, 164, 177, 174, 175, 182, 183, 187, 186, 190, 190, 190, 189, 191, 189, + 191, 190, 192, 192, 191, 190, 190, 189, 188, 187, 186, 186, 184, 184, 181, 179, + 182, 185, 181, 175, 167, 144, 61, 33, 34, 42, 29, 33, 18, 38, 40, 29, + 32, 40, 34, 22, 32, 43, 34, 27, 36, 34, 31, 44, 32, 33, 35, 38, + 40, 41, 41, 39, 30, 66, 131, 127, 132, 137, 147, 125, 137, 137, 139, 143, + 152, 160, 163, 164, 166, 159, 154, 153, 158, 158, 157, 152, 149, 154, 155, 151, + 146, 145, 145, 145, 143, 134, 130, 140, 145, 139, 133, 135, 133, 111, 82, 75, + 83, 80, 72, 79, 67, 70, 70, 126, 130, 137, 141, 144, 144, 141, 142, 150, + 147, 146, 148, 147, 144, 146, 145, 150, 174, 181, 171, 159, 153, 166, 188, 173, + 173, 168, 160, 160, 165, 172, 173, 173, 173, 175, 177, 176, 170, 161, 155, 168, + 169, 170, 169, 165, 159, 154, 151, 156, 152, 154, 153, 148, 151, 148, 132, 144, + 78, 23, 42, 30, 38, 32, 25, 33, 34, 33, 34, 35, 34, 30, 28, 26, + 25, 19, 26, 32, 25, 22, 34, 34, 47, 68, 89, 103, 106, 101, 96, 133, + 154, 162, 163, 168, 172, 172, 180, 171, 175, 180, 182, 185, 185, 188, 189, 190, + 190, 191, 191, 192, 192, 193, 192, 195, 194, 192, 191, 189, 187, 186, 185, 183, + 186, 186, 182, 179, 180, 178, 175, 162, 108, 33, 39, 29, 40, 39, 48, 87, + 111, 97, 51, 25, 22, 32, 46, 19, 44, 51, 47, 45, 29, 21, 38, 33, + 34, 36, 38, 40, 41, 42, 41, 37, 37, 126, 128, 134, 144, 137, 139, 140, + 140, 139, 139, 140, 145, 153, 161, 165, 160, 156, 153, 157, 158, 156, 150, 152, + 153, 151, 147, 148, 151, 147, 141, 143, 134, 132, 140, 146, 140, 134, 138, 155, + 126, 84, 66, 74, 73, 67, 73, 71, 74, 72, 132, 135, 140, 145, 144, 143, + 140, 137, 144, 140, 139, 142, 143, 141, 141, 143, 133, 138, 133, 134, 149, 154, + 152, 152, 165, 167, 164, 160, 160, 166, 175, 175, 185, 181, 176, 173, 170, 168, + 165, 162, 171, 173, 175, 174, 169, 163, 159, 156, 156, 154, 158, 157, 153, 156, + 149, 129, 131, 43, 31, 48, 31, 40, 32, 28, 31, 32, 32, 32, 32, 32, + 29, 28, 26, 26, 22, 26, 29, 21, 27, 49, 91, 101, 116, 130, 142, 151, + 157, 161, 154, 164, 164, 162, 168, 169, 167, 173, 175, 179, 183, 185, 186, 187, + 188, 190, 191, 191, 192, 193, 193, 194, 195, 195, 195, 194, 193, 191, 189, 187, + 186, 185, 181, 186, 187, 182, 177, 175, 174, 172, 184, 122, 53, 45, 30, 38, + 43, 82, 130, 167, 177, 164, 148, 104, 45, 18, 43, 39, 32, 35, 45, 42, + 32, 32, 35, 35, 36, 38, 39, 41, 42, 40, 43, 29, 103, 127, 136, 146, + 133, 149, 141, 141, 142, 140, 136, 136, 146, 159, 162, 163, 161, 158, 158, 160, + 158, 154, 151, 151, 146, 142, 146, 152, 147, 136, 144, 142, 140, 144, 145, 140, + 138, 140, 144, 117, 90, 76, 74, 70, 65, 60, 68, 72, 72, 139, 139, 142, + 142, 142, 140, 140, 137, 135, 132, 132, 137, 142, 140, 141, 144, 152, 138, 110, + 109, 133, 149, 147, 142, 150, 159, 163, 163, 164, 167, 169, 167, 175, 171, 168, + 168, 169, 171, 172, 172, 167, 171, 175, 175, 171, 166, 162, 161, 159, 159, 163, + 161, 155, 156, 146, 121, 89, 37, 41, 41, 37, 34, 33, 34, 30, 32, 31, + 31, 31, 30, 29, 29, 27, 28, 24, 26, 26, 23, 44, 80, 129, 132, 134, + 134, 135, 143, 158, 170, 165, 176, 178, 177, 176, 169, 169, 184, 180, 184, 188, + 190, 190, 190, 191, 192, 191, 191, 192, 192, 193, 194, 195, 194, 191, 191, 190, + 190, 189, 188, 188, 187, 182, 185, 184, 180, 179, 178, 174, 169, 191, 163, 98, + 43, 39, 41, 37, 121, 161, 172, 159, 156, 178, 164, 126, 114, 110, 78, 55, + 49, 48, 49, 45, 36, 36, 36, 37, 37, 38, 40, 41, 40, 39, 42, 69, + 123, 137, 140, 144, 149, 146, 145, 147, 147, 140, 135, 139, 150, 157, 164, 167, + 164, 162, 164, 164, 159, 150, 154, 151, 145, 147, 153, 149, 141, 144, 150, 148, + 144, 140, 139, 138, 139, 139, 121, 118, 111, 92, 84, 82, 71, 85, 87, 88, + 141, 138, 136, 134, 134, 135, 136, 137, 138, 135, 136, 142, 146, 145, 146, 148, + 137, 137, 115, 93, 91, 105, 131, 157, 163, 166, 162, 154, 153, 158, 165, 168, + 165, 164, 166, 169, 172, 172, 169, 167, 162, 167, 172, 174, 170, 166, 163, 163, + 164, 164, 167, 163, 155, 154, 140, 112, 45, 38, 40, 25, 37, 20, 28, 31, + 29, 30, 31, 31, 30, 29, 29, 30, 26, 29, 26, 27, 28, 30, 63, 110, + 136, 146, 158, 161, 157, 155, 160, 165, 175, 174, 171, 175, 185, 181, 177, 187, + 179, 182, 185, 187, 186, 186, 187, 188, 186, 187, 187, 188, 189, 190, 191, 191, + 188, 188, 188, 188, 189, 189, 189, 189, 186, 185, 182, 180, 184, 185, 178, 169, + 159, 173, 114, 25, 41, 43, 27, 145, 149, 175, 174, 171, 185, 173, 159, 178, + 162, 147, 140, 114, 60, 32, 38, 40, 36, 36, 36, 36, 36, 36, 39, 36, + 30, 56, 41, 117, 134, 132, 157, 145, 148, 146, 147, 149, 142, 132, 129, 135, + 143, 154, 163, 160, 158, 160, 159, 158, 149, 156, 157, 149, 147, 154, 153, 147, + 142, 152, 152, 142, 135, 137, 137, 134, 145, 125, 123, 109, 74, 72, 87, 82, + 93, 93, 89, 141, 138, 132, 133, 137, 142, 143, 140, 137, 131, 137, 140, 137, + 141, 146, 138, 143, 136, 122, 112, 98, 84, 98, 129, 174, 168, 161, 158, 154, + 149, 149, 154, 169, 168, 164, 165, 168, 171, 171, 169, 166, 168, 170, 169, 168, + 167, 172, 173, 172, 167, 160, 152, 157, 166, 134, 79, 33, 38, 36, 28, 28, + 34, 34, 29, 30, 26, 23, 22, 25, 30, 35, 37, 34, 32, 29, 31, 51, + 82, 112, 123, 142, 146, 150, 154, 155, 159, 166, 172, 173, 181, 186, 182, 181, + 183, 182, 177, 185, 190, 188, 184, 183, 188, 190, 190, 184, 188, 188, 187, 185, + 186, 188, 190, 190, 189, 186, 186, 190, 190, 189, 187, 187, 181, 183, 186, 180, + 181, 179, 173, 163, 112, 81, 44, 40, 33, 32, 121, 164, 163, 170, 182, 188, + 184, 186, 194, 173, 185, 183, 171, 145, 84, 36, 33, 34, 34, 43, 47, 37, + 31, 39, 36, 38, 33, 47, 94, 135, 136, 137, 151, 143, 151, 156, 151, 142, + 138, 135, 132, 133, 146, 160, 163, 161, 159, 158, 155, 149, 148, 149, 146, 144, + 142, 143, 142, 148, 143, 144, 149, 148, 143, 139, 141, 147, 131, 128, 93, 81, + 87, 78, 93, 94, 92, 91, 142, 145, 145, 145, 142, 140, 140, 140, 144, 137, + 140, 143, 138, 141, 144, 137, 128, 133, 133, 133, 125, 103, 89, 94, 121, 152, + 166, 147, 139, 154, 155, 141, 159, 163, 163, 161, 160, 160, 163, 166, 165, 169, + 170, 167, 162, 161, 169, 173, 179, 172, 168, 162, 157, 147, 100, 40, 47, 45, + 44, 42, 37, 29, 28, 32, 28, 26, 28, 30, 32, 29, 23, 19, 41, 30, + 43, 80, 111, 121, 130, 141, 142, 148, 158, 164, 164, 166, 168, 170, 176, 181, + 183, 180, 181, 183, 185, 183, 183, 186, 184, 182, 185, 189, 189, 184, 193, 184, + 177, 174, 176, 180, 178, 176, 190, 189, 185, 185, 187, 189, 188, 187, 188, 181, + 183, 184, 178, 179, 178, 170, 174, 128, 86, 33, 32, 39, 36, 99, 164, 153, + 156, 174, 182, 173, 169, 174, 164, 174, 179, 184, 183, 149, 85, 38, 57, 37, + 26, 31, 38, 36, 36, 37, 37, 23, 41, 67, 121, 136, 137, 141, 142, 148, + 152, 147, 142, 139, 135, 130, 137, 127, 142, 165, 167, 160, 160, 159, 151, 149, + 148, 147, 149, 149, 150, 149, 147, 143, 145, 150, 150, 145, 141, 141, 147, 136, + 123, 90, 63, 80, 77, 97, 100, 99, 97, 138, 146, 151, 151, 144, 139, 138, + 139, 145, 138, 139, 142, 138, 141, 144, 136, 131, 136, 130, 126, 126, 116, 101, + 95, 91, 114, 143, 160, 161, 155, 147, 139, 151, 156, 160, 156, 152, 152, 158, + 165, 158, 162, 165, 161, 156, 156, 164, 172, 157, 165, 172, 157, 128, 112, 102, + 86, 47, 46, 38, 30, 35, 45, 37, 19, 33, 27, 23, 23, 29, 35, 40, + 43, 40, 44, 73, 115, 140, 139, 140, 145, 150, 156, 163, 169, 170, 172, 175, + 178, 178, 181, 182, 178, 178, 181, 185, 186, 186, 188, 187, 186, 189, 190, 187, + 181, 176, 177, 181, 184, 186, 184, 179, 176, 188, 187, 183, 183, 185, 188, 188, + 187, 189, 181, 182, 182, 176, 177, 176, 168, 168, 129, 82, 26, 33, 47, 24, + 40, 105, 152, 174, 152, 149, 175, 184, 167, 185, 182, 177, 169, 170, 165, 113, + 42, 27, 45, 45, 32, 37, 44, 38, 26, 38, 18, 38, 40, 97, 138, 140, + 136, 144, 147, 149, 146, 145, 144, 139, 132, 137, 118, 131, 155, 160, 165, 168, + 154, 157, 152, 148, 149, 151, 154, 155, 152, 148, 144, 145, 149, 150, 145, 141, + 141, 144, 144, 124, 97, 45, 65, 60, 76, 81, 87, 89, 135, 142, 147, 148, + 144, 141, 139, 139, 142, 135, 137, 140, 136, 140, 143, 136, 135, 140, 128, 117, + 124, 126, 120, 116, 88, 83, 97, 126, 146, 148, 144, 143, 151, 152, 156, 153, + 149, 148, 153, 157, 153, 153, 156, 156, 155, 157, 164, 168, 176, 157, 149, 151, + 156, 163, 160, 145, 148, 117, 78, 48, 33, 31, 38, 46, 32, 34, 38, 37, + 34, 31, 31, 31, 58, 89, 120, 127, 128, 136, 145, 146, 154, 156, 158, 158, + 161, 166, 178, 185, 180, 180, 181, 180, 178, 180, 184, 186, 187, 189, 189, 185, + 184, 185, 183, 179, 181, 182, 181, 177, 171, 171, 183, 196, 185, 185, 184, 186, + 187, 188, 186, 186, 189, 181, 181, 181, 174, 175, 174, 167, 176, 158, 123, 64, + 48, 50, 32, 40, 54, 79, 124, 160, 164, 149, 151, 169, 167, 166, 170, 165, + 163, 182, 172, 127, 36, 52, 51, 41, 45, 41, 33, 30, 38, 24, 35, 30, + 65, 139, 142, 141, 149, 149, 149, 148, 151, 152, 146, 137, 133, 129, 135, 135, + 137, 165, 177, 148, 159, 153, 148, 147, 151, 154, 152, 147, 145, 141, 142, 147, + 148, 144, 142, 142, 134, 145, 128, 114, 44, 62, 54, 64, 66, 76, 82, 141, + 140, 139, 141, 143, 144, 140, 138, 139, 133, 135, 139, 136, 141, 144, 136, 125, + 140, 138, 126, 128, 126, 115, 109, 100, 101, 90, 80, 102, 144, 167, 160, 153, + 149, 150, 148, 146, 144, 142, 142, 148, 147, 146, 148, 154, 156, 155, 153, 163, + 153, 158, 171, 176, 178, 173, 158, 155, 138, 145, 156, 120, 51, 19, 30, 29, + 32, 36, 34, 35, 47, 69, 86, 115, 139, 154, 144, 134, 140, 152, 156, 151, + 152, 154, 152, 153, 156, 166, 173, 172, 175, 178, 180, 181, 181, 184, 185, 179, + 185, 186, 180, 176, 177, 180, 180, 179, 182, 189, 194, 191, 180, 176, 176, 178, + 182, 185, 189, 189, 188, 185, 184, 188, 181, 181, 181, 174, 175, 174, 165, 161, + 165, 149, 89, 37, 16, 20, 47, 39, 43, 78, 133, 168, 164, 152, 150, 167, + 167, 180, 180, 167, 170, 166, 141, 123, 78, 41, 40, 47, 35, 33, 45, 31, + 33, 31, 34, 36, 128, 142, 151, 151, 150, 150, 149, 153, 155, 149, 140, 139, + 137, 139, 130, 128, 153, 171, 157, 163, 156, 150, 149, 152, 152, 149, 144, 141, + 138, 139, 145, 147, 144, 143, 144, 129, 141, 128, 128, 54, 65, 65, 68, 67, + 75, 77, 149, 144, 140, 140, 143, 144, 141, 137, 141, 133, 137, 141, 137, 141, + 144, 137, 123, 138, 138, 129, 128, 126, 119, 117, 119, 119, 111, 100, 97, 114, + 138, 149, 153, 146, 149, 151, 148, 144, 141, 137, 149, 145, 143, 143, 145, 145, + 145, 143, 139, 158, 182, 182, 159, 150, 160, 165, 152, 152, 149, 144, 132, 106, + 68, 37, 41, 51, 64, 74, 89, 113, 145, 168, 160, 154, 155, 159, 158, 152, + 153, 159, 157, 161, 166, 166, 163, 159, 160, 160, 163, 164, 168, 175, 177, 177, + 181, 185, 177, 180, 182, 179, 177, 182, 184, 184, 181, 173, 176, 193, 204, 198, + 183, 173, 175, 179, 183, 187, 188, 186, 183, 183, 186, 179, 181, 183, 176, 176, + 174, 165, 174, 175, 167, 139, 100, 68, 51, 43, 34, 57, 63, 63, 97, 152, + 175, 162, 147, 145, 155, 166, 169, 172, 171, 162, 160, 137, 100, 55, 27, 39, + 50, 35, 26, 36, 27, 38, 25, 101, 144, 156, 151, 150, 150, 148, 151, 154, + 149, 141, 146, 140, 137, 143, 140, 132, 143, 167, 164, 161, 158, 157, 157, 153, + 147, 143, 142, 138, 139, 144, 147, 144, 143, 145, 142, 140, 125, 128, 57, 51, + 61, 58, 52, 60, 63, 144, 143, 141, 141, 140, 141, 140, 139, 141, 134, 137, + 139, 135, 137, 140, 132, 130, 136, 131, 124, 127, 129, 129, 139, 123, 114, 119, + 126, 111, 88, 91, 105, 132, 131, 143, 149, 148, 145, 144, 145, 148, 147, 146, + 142, 139, 140, 147, 153, 178, 170, 168, 168, 170, 179, 178, 160, 155, 172, 167, + 150, 155, 160, 118, 55, 94, 113, 138, 157, 164, 161, 157, 154, 166, 157, 155, + 161, 167, 164, 160, 161, 167, 171, 176, 176, 173, 169, 167, 167, 163, 160, 163, + 168, 169, 169, 172, 178, 177, 178, 179, 180, 184, 186, 179, 170, 170, 145, 127, + 127, 141, 157, 180, 195, 175, 176, 179, 181, 181, 181, 182, 184, 184, 178, 182, + 185, 179, 178, 175, 165, 164, 160, 152, 150, 144, 125, 86, 39, 52, 32, 26, + 39, 46, 59, 106, 159, 171, 173, 164, 158, 163, 162, 156, 156, 150, 162, 162, + 99, 29, 42, 64, 30, 26, 33, 29, 36, 35, 69, 153, 157, 152, 153, 153, + 150, 152, 154, 150, 143, 145, 149, 144, 149, 149, 117, 108, 147, 163, 163, 164, + 163, 160, 154, 147, 144, 145, 143, 143, 146, 147, 144, 142, 144, 152, 135, 125, + 132, 70, 41, 56, 43, 39, 46, 51, 131, 136, 140, 141, 138, 137, 140, 141, + 142, 134, 135, 137, 131, 132, 134, 126, 131, 133, 129, 127, 133, 128, 124, 131, + 137, 142, 137, 125, 120, 122, 120, 103, 104, 112, 132, 142, 142, 142, 148, 153, + 147, 151, 151, 145, 139, 142, 158, 172, 168, 166, 167, 164, 162, 172, 170, 152, + 152, 148, 154, 163, 158, 144, 144, 157, 165, 162, 157, 155, 158, 162, 166, 167, + 157, 174, 178, 165, 163, 176, 180, 171, 171, 173, 175, 173, 172, 172, 175, 177, + 168, 162, 160, 162, 162, 158, 163, 170, 176, 172, 170, 173, 181, 181, 164, 147, + 99, 95, 95, 99, 96, 100, 122, 145, 175, 175, 175, 175, 175, 177, 181, 185, + 182, 177, 182, 187, 181, 180, 176, 165, 165, 172, 165, 156, 149, 150, 137, 96, + 64, 47, 43, 52, 48, 39, 53, 83, 123, 148, 151, 145, 158, 161, 157, 163, + 170, 138, 149, 135, 61, 36, 57, 49, 31, 30, 34, 33, 51, 50, 162, 156, + 155, 157, 157, 154, 154, 155, 152, 147, 135, 162, 155, 145, 147, 112, 87, 112, + 161, 165, 168, 168, 161, 153, 147, 145, 150, 148, 146, 149, 148, 144, 142, 143, + 147, 124, 126, 143, 94, 51, 67, 47, 45, 53, 59, 137, 139, 139, 136, 136, + 141, 141, 139, 138, 137, 137, 136, 134, 133, 131, 131, 132, 132, 133, 131, 132, + 132, 134, 137, 138, 140, 140, 136, 135, 133, 126, 108, 104, 73, 117, 161, 139, + 139, 162, 152, 151, 159, 147, 135, 148, 167, 170, 165, 166, 161, 157, 159, 161, + 161, 152, 145, 161, 152, 145, 145, 146, 147, 156, 168, 160, 159, 158, 157, 158, + 161, 165, 167, 171, 173, 178, 179, 178, 174, 171, 168, 189, 181, 176, 177, 184, + 188, 184, 178, 181, 177, 170, 168, 167, 164, 162, 158, 158, 161, 155, 148, 161, + 169, 130, 79, 87, 99, 70, 79, 89, 102, 111, 117, 154, 173, 174, 165, 168, + 174, 177, 183, 177, 175, 174, 177, 182, 183, 175, 169, 171, 172, 168, 157, 151, + 151, 148, 142, 121, 92, 58, 42, 44, 48, 43, 37, 49, 108, 160, 159, 145, + 143, 153, 155, 155, 160, 170, 137, 123, 57, 30, 60, 41, 27, 34, 44, 32, + 73, 153, 167, 150, 162, 163, 151, 149, 158, 157, 146, 139, 149, 148, 145, 149, + 137, 108, 92, 132, 179, 178, 179, 170, 157, 155, 141, 149, 150, 146, 141, 141, + 143, 140, 135, 135, 129, 127, 139, 102, 56, 64, 78, 62, 72, 92, 138, 140, + 139, 136, 136, 138, 140, 138, 136, 136, 136, 136, 134, 133, 132, 129, 132, 131, + 132, 130, 131, 133, 137, 140, 136, 140, 143, 143, 145, 146, 144, 129, 121, 89, + 105, 131, 138, 160, 172, 143, 132, 121, 115, 138, 165, 171, 176, 192, 149, 145, + 145, 151, 155, 158, 157, 153, 154, 152, 154, 158, 158, 153, 152, 158, 162, 164, + 167, 168, 169, 170, 171, 171, 174, 175, 179, 179, 178, 176, 174, 172, 183, 178, + 174, 176, 184, 185, 183, 179, 183, 180, 177, 175, 175, 172, 166, 162, 160, 157, + 152, 142, 133, 122, 105, 88, 75, 92, 95, 83, 79, 89, 95, 100, 107, 137, + 160, 169, 179, 180, 172, 171, 183, 182, 180, 177, 175, 173, 170, 170, 169, 172, + 170, 162, 159, 160, 157, 152, 143, 144, 131, 96, 57, 34, 37, 48, 33, 50, + 81, 120, 153, 164, 153, 138, 170, 159, 158, 152, 164, 113, 41, 24, 31, 30, + 32, 39, 46, 95, 163, 169, 151, 158, 162, 156, 154, 158, 155, 146, 141, 146, + 143, 141, 144, 134, 107, 91, 55, 133, 163, 166, 159, 155, 164, 155, 145, 148, + 147, 143, 144, 145, 141, 135, 147, 133, 122, 135, 111, 76, 76, 75, 89, 92, + 100, 139, 142, 139, 135, 134, 138, 138, 135, 135, 135, 135, 135, 135, 134, 133, + 131, 132, 131, 131, 130, 131, 134, 139, 144, 138, 143, 145, 145, 149, 153, 153, + 143, 135, 122, 112, 98, 92, 106, 107, 80, 57, 81, 123, 169, 187, 164, 141, + 144, 148, 150, 154, 160, 165, 167, 169, 169, 157, 158, 163, 167, 166, 160, 156, + 156, 162, 166, 170, 173, 175, 174, 171, 169, 173, 174, 174, 174, 174, 173, 172, + 171, 175, 176, 174, 176, 180, 181, 181, 179, 181, 182, 184, 186, 186, 183, 176, + 172, 168, 160, 159, 156, 134, 101, 83, 82, 77, 79, 54, 70, 69, 90, 79, + 116, 123, 148, 165, 173, 184, 188, 185, 187, 184, 185, 183, 179, 173, 173, 175, + 181, 171, 173, 173, 169, 167, 167, 164, 159, 151, 156, 156, 140, 118, 102, 100, + 105, 92, 64, 50, 70, 98, 118, 139, 161, 149, 148, 145, 151, 159, 134, 59, + 34, 26, 36, 30, 41, 77, 128, 174, 171, 154, 154, 157, 159, 160, 157, 151, + 147, 146, 144, 140, 139, 140, 132, 112, 97, 71, 92, 116, 159, 183, 162, 162, + 166, 144, 148, 148, 145, 145, 145, 142, 136, 134, 126, 118, 130, 116, 94, 98, + 91, 103, 100, 94, 140, 143, 140, 136, 135, 137, 136, 132, 134, 134, 134, 135, + 135, 135, 134, 132, 131, 131, 131, 130, 132, 135, 142, 147, 142, 146, 147, 145, + 149, 153, 152, 145, 141, 145, 132, 105, 95, 97, 87, 73, 59, 120, 163, 164, + 158, 154, 150, 148, 160, 165, 171, 174, 173, 171, 171, 171, 167, 165, 166, 165, + 167, 166, 167, 169, 167, 171, 174, 177, 178, 177, 174, 172, 176, 177, 177, 176, + 176, 177, 178, 178, 175, 176, 178, 178, 178, 178, 178, 180, 178, 180, 185, 188, + 190, 189, 185, 183, 181, 167, 164, 165, 156, 129, 108, 99, 82, 100, 87, 60, + 76, 79, 118, 102, 142, 156, 160, 159, 167, 174, 178, 188, 189, 190, 188, 184, + 179, 177, 179, 183, 176, 178, 179, 178, 175, 172, 168, 165, 171, 164, 159, 159, + 162, 159, 149, 139, 141, 121, 107, 104, 97, 92, 108, 132, 145, 157, 156, 159, + 145, 133, 66, 43, 29, 38, 28, 58, 121, 160, 177, 172, 159, 150, 151, 158, + 160, 153, 147, 147, 148, 144, 144, 145, 139, 133, 125, 115, 112, 80, 78, 120, + 171, 153, 145, 153, 148, 150, 149, 145, 143, 143, 142, 138, 135, 139, 134, 133, + 104, 81, 88, 84, 94, 98, 94, 140, 141, 140, 136, 135, 137, 135, 131, 133, + 133, 134, 135, 133, 133, 132, 132, 130, 131, 131, 130, 132, 137, 142, 147, 146, + 149, 149, 146, 149, 153, 153, 148, 156, 155, 139, 127, 130, 115, 91, 77, 92, + 149, 172, 144, 135, 154, 166, 165, 159, 166, 172, 173, 169, 162, 159, 157, 167, + 166, 167, 165, 168, 172, 176, 178, 178, 179, 180, 181, 181, 183, 182, 182, 184, + 184, 183, 183, 183, 186, 187, 188, 180, 182, 184, 182, 180, 178, 179, 179, 178, + 179, 181, 182, 183, 184, 183, 183, 184, 175, 164, 159, 162, 165, 158, 148, 117, + 115, 52, 126, 65, 77, 121, 135, 135, 150, 157, 161, 170, 172, 171, 178, 196, + 194, 191, 189, 185, 182, 176, 174, 182, 183, 185, 187, 186, 182, 178, 176, 170, + 170, 169, 165, 160, 157, 158, 159, 159, 153, 148, 144, 136, 126, 114, 107, 121, + 126, 126, 140, 142, 143, 72, 28, 31, 36, 32, 85, 159, 177, 175, 174, 164, + 150, 146, 153, 157, 150, 145, 147, 145, 140, 147, 149, 137, 134, 138, 136, 105, + 103, 103, 91, 130, 143, 154, 151, 151, 153, 150, 143, 139, 140, 140, 138, 126, + 133, 130, 129, 102, 83, 90, 84, 89, 96, 96, 137, 140, 140, 137, 136, 137, + 135, 131, 134, 134, 135, 135, 133, 132, 131, 131, 130, 131, 132, 133, 134, 136, + 141, 144, 145, 148, 149, 149, 151, 158, 158, 155, 157, 157, 150, 142, 131, 104, + 87, 89, 117, 146, 160, 157, 160, 162, 154, 147, 159, 165, 169, 171, 166, 161, + 157, 156, 159, 164, 169, 171, 173, 178, 178, 178, 183, 182, 181, 181, 181, 183, + 183, 184, 182, 184, 184, 184, 185, 187, 188, 189, 188, 187, 188, 187, 185, 183, + 182, 181, 180, 181, 182, 180, 179, 176, 176, 177, 172, 182, 181, 169, 165, 172, + 172, 163, 170, 156, 179, 255, 90, 69, 131, 126, 148, 160, 163, 167, 176, 177, + 176, 185, 186, 187, 188, 191, 191, 190, 184, 181, 186, 186, 189, 194, 195, 192, + 190, 191, 175, 175, 172, 167, 163, 163, 167, 171, 164, 163, 159, 147, 144, 149, + 146, 138, 139, 130, 131, 137, 145, 151, 96, 54, 37, 45, 54, 116, 177, 176, + 172, 176, 169, 154, 146, 149, 154, 150, 145, 143, 143, 133, 144, 151, 137, 136, + 150, 149, 114, 108, 123, 104, 140, 139, 146, 148, 148, 151, 150, 143, 139, 139, + 139, 138, 128, 126, 118, 125, 108, 89, 90, 77, 71, 78, 77, 136, 139, 140, + 137, 136, 137, 136, 132, 135, 135, 135, 135, 132, 131, 130, 129, 129, 132, 134, + 135, 135, 136, 138, 142, 142, 146, 147, 148, 152, 156, 157, 155, 148, 155, 158, + 151, 133, 125, 138, 154, 169, 168, 161, 158, 168, 167, 161, 165, 162, 166, 165, + 164, 162, 161, 163, 165, 160, 168, 173, 174, 179, 184, 184, 181, 181, 181, 181, + 181, 180, 183, 183, 183, 182, 183, 184, 185, 186, 188, 189, 188, 191, 190, 190, + 190, 190, 189, 187, 184, 182, 185, 189, 188, 186, 181, 180, 180, 175, 188, 193, + 183, 175, 174, 167, 158, 159, 186, 150, 72, 167, 157, 169, 162, 159, 164, 158, + 158, 167, 172, 177, 191, 183, 189, 194, 196, 195, 193, 192, 193, 189, 187, 190, + 196, 197, 193, 190, 193, 201, 190, 177, 173, 175, 175, 168, 161, 153, 165, 172, + 166, 157, 157, 156, 154, 156, 138, 143, 121, 112, 97, 60, 27, 53, 76, 99, + 147, 176, 166, 170, 175, 170, 159, 150, 150, 155, 155, 146, 137, 148, 129, 140, + 152, 141, 144, 158, 151, 128, 91, 114, 120, 171, 144, 124, 128, 140, 145, 149, + 145, 141, 140, 139, 137, 146, 140, 128, 131, 102, 69, 63, 54, 60, 65, 73, + 135, 139, 140, 137, 136, 138, 136, 131, 136, 136, 136, 133, 132, 131, 129, 129, + 130, 133, 136, 138, 138, 137, 138, 141, 141, 145, 146, 147, 150, 153, 153, 149, + 169, 156, 143, 136, 132, 148, 169, 171, 158, 165, 161, 153, 160, 165, 165, 172, + 161, 158, 155, 152, 152, 154, 160, 162, 171, 176, 177, 174, 178, 187, 191, 188, + 183, 184, 187, 188, 187, 187, 185, 185, 188, 189, 190, 192, 194, 195, 195, 194, + 190, 188, 189, 190, 192, 192, 190, 185, 180, 187, 195, 198, 198, 194, 191, 192, + 195, 192, 183, 177, 179, 181, 180, 174, 180, 139, 166, 175, 155, 175, 157, 163, + 157, 164, 166, 172, 184, 189, 192, 205, 200, 206, 211, 205, 194, 185, 187, 192, + 189, 188, 189, 194, 194, 188, 185, 189, 182, 180, 178, 179, 183, 185, 184, 181, + 180, 174, 167, 163, 164, 164, 165, 168, 170, 150, 171, 155, 158, 130, 92, 49, + 71, 108, 139, 167, 169, 157, 169, 172, 171, 162, 155, 153, 158, 159, 147, 133, + 154, 128, 137, 155, 147, 154, 163, 149, 119, 99, 132, 128, 185, 171, 149, 133, + 133, 141, 149, 149, 145, 143, 140, 135, 118, 121, 126, 133, 100, 61, 69, 75, + 90, 89, 95, 138, 138, 138, 137, 136, 135, 134, 133, 133, 133, 134, 132, 129, + 128, 128, 128, 133, 136, 138, 140, 140, 140, 141, 144, 144, 151, 155, 151, 149, + 152, 152, 147, 145, 147, 123, 129, 144, 174, 164, 156, 161, 166, 156, 167, 150, + 137, 112, 126, 130, 138, 144, 145, 148, 159, 168, 173, 166, 171, 178, 181, 185, + 186, 188, 190, 182, 182, 184, 184, 185, 187, 189, 190, 185, 191, 194, 193, 193, + 195, 196, 193, 194, 193, 196, 192, 189, 188, 187, 188, 190, 197, 196, 195, 198, + 194, 190, 195, 200, 196, 190, 185, 182, 178, 175, 172, 171, 169, 167, 167, 170, + 170, 167, 164, 173, 176, 178, 172, 167, 169, 178, 188, 205, 211, 207, 191, 182, + 183, 185, 180, 174, 178, 184, 188, 184, 179, 182, 189, 187, 185, 182, 177, 177, + 176, 176, 177, 174, 184, 186, 177, 175, 183, 186, 184, 174, 169, 172, 172, 161, + 149, 127, 96, 116, 136, 158, 168, 172, 173, 170, 165, 179, 163, 153, 157, 165, + 161, 148, 137, 144, 150, 141, 130, 152, 185, 177, 142, 127, 70, 105, 147, 166, + 157, 168, 174, 146, 131, 144, 155, 144, 140, 139, 127, 126, 121, 125, 133, 84, + 89, 91, 85, 92, 102, 105, 137, 137, 137, 137, 137, 137, 136, 136, 130, 132, + 132, 131, 129, 128, 127, 130, 135, 139, 141, 142, 141, 141, 142, 143, 148, 153, + 154, 150, 149, 150, 149, 144, 157, 143, 133, 164, 162, 163, 148, 154, 138, 160, + 171, 129, 101, 72, 48, 67, 71, 95, 126, 147, 159, 166, 167, 164, 175, 178, + 183, 184, 185, 184, 184, 186, 185, 186, 186, 187, 188, 190, 191, 192, 191, 196, + 198, 196, 194, 196, 196, 193, 194, 194, 196, 196, 194, 191, 192, 191, 187, 193, + 193, 191, 197, 192, 188, 194, 192, 190, 188, 186, 183, 181, 175, 172, 171, 170, + 169, 171, 176, 177, 179, 178, 178, 179, 180, 179, 178, 175, 174, 174, 182, 195, + 200, 193, 187, 185, 181, 173, 178, 176, 180, 186, 188, 184, 181, 182, 185, 184, + 182, 181, 180, 180, 181, 181, 177, 186, 188, 180, 177, 183, 183, 178, 193, 185, + 183, 180, 172, 172, 165, 146, 146, 158, 169, 170, 170, 170, 170, 167, 177, 168, + 165, 169, 171, 164, 150, 139, 131, 142, 154, 155, 159, 162, 154, 142, 120, 74, + 113, 148, 165, 157, 165, 168, 187, 151, 137, 144, 147, 152, 146, 125, 122, 116, + 122, 134, 88, 87, 92, 91, 112, 116, 118, 136, 136, 137, 138, 137, 138, 138, + 138, 131, 132, 133, 133, 131, 131, 130, 134, 135, 140, 142, 142, 142, 142, 142, + 144, 147, 149, 150, 146, 146, 148, 149, 145, 155, 136, 146, 187, 172, 167, 158, + 160, 161, 167, 152, 62, 54, 54, 76, 120, 116, 135, 157, 165, 168, 168, 169, + 167, 174, 177, 180, 181, 181, 179, 180, 180, 188, 189, 190, 190, 192, 193, 195, + 196, 194, 199, 201, 198, 197, 199, 200, 197, 193, 195, 199, 200, 199, 195, 194, + 193, 186, 193, 191, 189, 194, 191, 187, 193, 185, 185, 185, 186, 186, 183, 176, + 172, 172, 170, 170, 173, 179, 184, 189, 191, 190, 184, 181, 180, 184, 183, 177, + 170, 170, 183, 191, 189, 187, 185, 181, 171, 179, 172, 172, 181, 190, 190, 185, + 180, 182, 182, 182, 183, 183, 183, 184, 184, 180, 188, 190, 184, 181, 184, 182, + 176, 187, 180, 178, 173, 167, 174, 179, 168, 166, 171, 176, 174, 172, 170, 168, + 166, 171, 168, 171, 176, 175, 164, 150, 141, 130, 137, 156, 169, 165, 149, 142, + 148, 111, 92, 139, 157, 160, 150, 164, 172, 186, 150, 129, 130, 139, 146, 139, + 119, 122, 118, 125, 131, 87, 80, 89, 93, 98, 101, 103, 138, 138, 138, 138, + 137, 138, 137, 137, 133, 134, 135, 135, 134, 134, 135, 139, 135, 140, 142, 143, + 144, 143, 145, 146, 142, 142, 143, 143, 146, 150, 152, 148, 149, 140, 156, 187, + 164, 177, 173, 156, 161, 160, 107, 49, 60, 59, 81, 106, 141, 153, 164, 164, + 163, 168, 177, 182, 170, 173, 177, 179, 181, 181, 183, 187, 191, 191, 192, 192, + 194, 195, 197, 198, 195, 200, 202, 199, 198, 201, 203, 201, 194, 196, 199, 200, + 199, 196, 192, 191, 191, 198, 195, 191, 195, 190, 187, 192, 186, 184, 186, 187, + 187, 185, 178, 174, 171, 170, 170, 173, 178, 185, 192, 195, 198, 189, 180, 177, + 180, 183, 182, 179, 180, 184, 186, 181, 179, 180, 181, 177, 177, 168, 166, 175, + 185, 187, 186, 183, 180, 181, 182, 182, 183, 183, 183, 183, 183, 189, 192, 189, + 188, 189, 185, 179, 188, 185, 188, 185, 177, 181, 186, 177, 166, 170, 177, 180, + 181, 178, 174, 170, 170, 166, 170, 177, 178, 168, 155, 145, 145, 137, 144, 161, + 167, 159, 153, 154, 119, 106, 143, 147, 156, 154, 161, 162, 143, 130, 125, 127, + 130, 131, 125, 117, 122, 126, 128, 110, 74, 71, 82, 81, 88, 95, 100, 139, + 139, 138, 137, 136, 135, 134, 133, 132, 133, 134, 134, 132, 134, 136, 139, 134, + 138, 141, 143, 144, 145, 148, 149, 142, 139, 140, 142, 147, 149, 151, 149, 151, + 142, 159, 188, 167, 179, 173, 152, 150, 140, 54, 55, 66, 58, 76, 85, 133, + 148, 162, 166, 167, 168, 172, 172, 175, 178, 182, 186, 188, 189, 192, 196, 192, + 193, 193, 194, 195, 197, 198, 199, 200, 204, 205, 200, 198, 201, 202, 199, 198, + 200, 203, 202, 201, 196, 193, 190, 194, 200, 196, 191, 194, 188, 186, 190, 188, + 185, 184, 182, 182, 180, 177, 174, 173, 172, 171, 172, 174, 180, 186, 191, 195, + 189, 183, 177, 177, 179, 180, 181, 185, 186, 183, 177, 176, 178, 181, 180, 177, + 171, 169, 173, 177, 179, 180, 184, 180, 180, 180, 180, 180, 180, 181, 181, 181, + 186, 189, 191, 192, 192, 188, 183, 188, 187, 192, 189, 179, 182, 186, 177, 167, + 166, 171, 177, 183, 183, 180, 179, 174, 165, 164, 171, 177, 173, 162, 152, 148, + 144, 146, 151, 162, 166, 161, 152, 130, 112, 134, 135, 160, 162, 150, 131, 116, + 123, 127, 129, 132, 129, 124, 124, 119, 131, 126, 87, 64, 71, 84, 76, 88, + 102, 113, 140, 139, 138, 137, 135, 134, 131, 131, 130, 131, 131, 130, 129, 130, + 133, 137, 134, 139, 141, 143, 144, 144, 147, 148, 146, 140, 140, 145, 149, 146, + 145, 142, 136, 126, 143, 186, 172, 173, 164, 161, 159, 119, 29, 54, 58, 69, + 107, 132, 151, 161, 169, 171, 171, 170, 170, 167, 180, 183, 187, 187, 188, 188, + 190, 194, 193, 194, 194, 195, 196, 198, 199, 200, 205, 208, 207, 201, 197, 198, + 199, 197, 203, 204, 206, 205, 202, 199, 195, 194, 193, 197, 194, 189, 192, 188, + 184, 188, 189, 185, 182, 181, 180, 178, 175, 173, 174, 173, 172, 171, 170, 172, + 179, 182, 188, 190, 192, 188, 184, 180, 180, 180, 179, 178, 178, 178, 179, 180, + 178, 177, 180, 175, 174, 173, 172, 170, 173, 179, 179, 178, 177, 176, 177, 178, + 180, 181, 178, 180, 184, 188, 191, 191, 188, 184, 183, 179, 181, 177, 169, 175, + 182, 174, 169, 161, 157, 162, 169, 172, 174, 177, 171, 160, 155, 160, 168, 167, + 160, 152, 138, 150, 157, 156, 156, 157, 153, 144, 115, 122, 155, 145, 153, 139, + 129, 125, 126, 130, 123, 123, 134, 134, 126, 127, 126, 134, 124, 80, 76, 86, + 102, 91, 89, 105, 116, 137, 136, 135, 134, 133, 132, 131, 131, 133, 134, 132, + 130, 129, 131, 134, 137, 137, 139, 143, 143, 143, 142, 143, 144, 149, 142, 138, + 145, 150, 147, 144, 137, 124, 130, 141, 169, 160, 166, 159, 167, 153, 89, 60, + 77, 89, 103, 120, 139, 152, 156, 159, 161, 169, 178, 184, 183, 182, 183, 186, + 185, 185, 185, 189, 190, 194, 195, 196, 196, 197, 199, 201, 202, 204, 208, 207, + 201, 199, 201, 202, 201, 202, 204, 205, 204, 201, 199, 199, 197, 190, 196, 193, + 189, 194, 191, 189, 193, 189, 186, 186, 186, 185, 182, 178, 175, 175, 176, 175, + 173, 170, 170, 174, 177, 179, 181, 185, 184, 184, 183, 186, 187, 179, 177, 178, + 178, 180, 179, 179, 179, 181, 175, 176, 177, 177, 173, 173, 177, 177, 175, 174, + 173, 175, 178, 183, 185, 180, 179, 181, 187, 191, 191, 188, 185, 188, 184, 186, + 184, 178, 184, 189, 179, 169, 157, 152, 156, 163, 164, 165, 167, 170, 161, 157, + 159, 162, 160, 156, 153, 143, 151, 158, 158, 153, 149, 145, 139, 107, 127, 165, + 147, 141, 121, 123, 140, 136, 144, 130, 121, 132, 132, 124, 130, 134, 128, 117, + 87, 101, 100, 113, 107, 105, 117, 125, 133, 133, 133, 133, 133, 132, 132, 132, + 137, 138, 135, 133, 132, 133, 137, 140, 140, 141, 144, 143, 141, 139, 140, 140, + 145, 139, 137, 145, 151, 149, 146, 137, 134, 162, 160, 151, 138, 160, 159, 161, + 152, 61, 87, 91, 127, 162, 161, 174, 168, 170, 173, 175, 181, 185, 182, 176, + 184, 186, 188, 188, 188, 189, 193, 196, 197, 197, 197, 198, 199, 201, 202, 203, + 199, 203, 204, 201, 201, 206, 209, 209, 200, 201, 201, 200, 199, 198, 199, 200, + 191, 196, 193, 192, 197, 197, 196, 202, 190, 189, 192, 194, 194, 190, 184, 180, + 177, 178, 179, 174, 171, 170, 172, 175, 170, 167, 165, 167, 174, 181, 189, 193, + 191, 183, 178, 176, 177, 177, 183, 183, 177, 172, 174, 181, 184, 181, 178, 178, + 177, 174, 172, 171, 174, 180, 186, 190, 184, 182, 183, 188, 192, 192, 189, 187, + 182, 180, 186, 188, 182, 185, 183, 168, 170, 160, 158, 167, 174, 170, 165, 163, + 175, 170, 169, 169, 166, 161, 160, 160, 157, 150, 148, 151, 156, 152, 144, 138, + 127, 122, 140, 125, 142, 135, 132, 141, 136, 153, 148, 131, 133, 127, 124, 139, + 135, 115, 103, 87, 111, 96, 104, 106, 112, 119, 121, 131, 133, 134, 132, 132, + 134, 135, 131, 136, 132, 130, 132, 137, 141, 140, 138, 142, 137, 136, 137, 143, + 144, 142, 137, 149, 147, 157, 149, 143, 145, 140, 140, 153, 168, 157, 146, 141, + 136, 151, 154, 145, 81, 100, 134, 142, 155, 156, 168, 167, 171, 176, 182, 186, + 186, 185, 183, 186, 188, 190, 191, 195, 196, 197, 198, 203, 207, 208, 207, 205, + 204, 205, 206, 210, 207, 205, 204, 205, 205, 204, 202, 210, 207, 203, 197, 194, + 192, 192, 191, 194, 195, 196, 195, 193, 192, 197, 200, 192, 195, 194, 194, 171, + 190, 180, 177, 175, 178, 181, 178, 176, 179, 186, 188, 183, 183, 174, 168, 172, + 170, 174, 186, 185, 188, 189, 183, 176, 173, 179, 183, 178, 185, 188, 180, 175, + 178, 181, 180, 173, 175, 175, 174, 174, 176, 177, 181, 182, 183, 186, 189, 192, + 192, 189, 186, 190, 187, 184, 181, 177, 175, 176, 178, 166, 158, 161, 175, 183, + 177, 174, 178, 163, 167, 173, 174, 171, 168, 167, 165, 159, 146, 152, 159, 154, + 147, 144, 136, 130, 116, 139, 137, 136, 149, 142, 147, 152, 154, 148, 133, 127, + 131, 134, 133, 129, 112, 102, 90, 97, 104, 99, 114, 107, 119, 125, 129, 133, + 134, 132, 132, 134, 135, 131, 136, 136, 136, 135, 136, 138, 142, 144, 143, 141, + 140, 138, 140, 140, 142, 142, 154, 147, 156, 146, 142, 147, 141, 139, 165, 175, + 159, 148, 142, 135, 145, 146, 145, 103, 123, 140, 142, 162, 167, 168, 172, 174, + 178, 182, 185, 184, 183, 182, 188, 188, 190, 192, 195, 196, 197, 198, 199, 202, + 204, 204, 203, 203, 205, 207, 207, 205, 203, 203, 204, 204, 203, 202, 209, 207, + 203, 198, 195, 193, 193, 193, 196, 193, 192, 194, 196, 197, 198, 196, 187, 189, + 185, 189, 175, 190, 174, 173, 180, 170, 172, 178, 182, 188, 187, 174, 171, 179, + 180, 180, 184, 176, 164, 167, 176, 180, 183, 182, 179, 176, 178, 180, 180, 185, + 189, 184, 181, 181, 183, 182, 178, 178, 176, 175, 175, 175, 175, 177, 178, 182, + 188, 194, 197, 198, 197, 197, 183, 184, 185, 184, 181, 176, 173, 170, 168, 159, + 162, 176, 183, 174, 164, 161, 173, 175, 178, 174, 168, 162, 159, 156, 156, 150, + 157, 163, 154, 145, 145, 140, 121, 116, 142, 145, 144, 155, 147, 153, 146, 149, + 145, 133, 130, 136, 138, 135, 131, 103, 95, 90, 96, 105, 100, 109, 110, 119, + 124, 129, 132, 133, 130, 131, 134, 133, 130, 137, 139, 142, 139, 136, 137, 143, + 148, 139, 140, 141, 139, 138, 140, 147, 152, 150, 142, 149, 141, 139, 146, 139, + 137, 175, 178, 159, 148, 145, 140, 145, 140, 135, 121, 139, 142, 140, 164, 173, + 167, 177, 180, 181, 183, 184, 183, 182, 181, 188, 189, 191, 192, 195, 196, 198, + 199, 197, 201, 203, 203, 204, 205, 208, 211, 206, 204, 203, 203, 205, 205, 204, + 203, 206, 205, 200, 198, 196, 194, 195, 194, 197, 192, 190, 194, 197, 200, 198, + 192, 184, 191, 182, 187, 183, 185, 169, 170, 172, 164, 176, 179, 166, 174, 192, + 190, 181, 186, 183, 181, 187, 181, 173, 175, 169, 172, 177, 181, 183, 182, 180, + 176, 181, 185, 189, 188, 185, 185, 184, 183, 184, 181, 177, 176, 174, 174, 174, + 173, 174, 180, 187, 190, 188, 185, 184, 184, 184, 184, 183, 181, 177, 174, 171, + 166, 167, 159, 163, 178, 188, 183, 174, 170, 169, 170, 172, 169, 165, 162, 160, + 160, 157, 155, 164, 168, 153, 144, 142, 137, 112, 121, 147, 152, 151, 157, 152, + 157, 146, 147, 144, 135, 132, 138, 138, 136, 132, 91, 90, 96, 95, 105, 105, + 108, 121, 126, 125, 128, 132, 132, 130, 131, 134, 134, 131, 137, 139, 142, 142, + 140, 140, 142, 143, 133, 133, 136, 140, 143, 149, 154, 157, 146, 141, 148, 141, + 138, 145, 142, 142, 172, 175, 154, 147, 151, 149, 152, 144, 133, 131, 142, 146, + 147, 165, 175, 167, 177, 179, 179, 180, 181, 181, 182, 182, 189, 189, 191, 192, + 195, 197, 198, 200, 204, 206, 208, 208, 208, 210, 212, 215, 205, 204, 204, 205, + 207, 207, 206, 204, 202, 199, 198, 196, 195, 194, 195, 193, 196, 194, 194, 195, + 197, 197, 194, 190, 187, 200, 186, 187, 188, 177, 169, 168, 175, 167, 184, 188, + 166, 165, 178, 172, 185, 190, 184, 179, 187, 189, 185, 187, 172, 172, 175, 180, + 184, 185, 182, 176, 179, 183, 188, 188, 187, 186, 185, 183, 187, 183, 178, 176, + 175, 176, 174, 173, 185, 192, 199, 200, 195, 189, 188, 189, 193, 189, 181, 172, + 168, 169, 169, 165, 152, 150, 156, 169, 179, 177, 174, 174, 163, 163, 165, 163, + 162, 161, 160, 160, 164, 160, 166, 167, 153, 144, 138, 128, 109, 130, 149, 153, + 153, 152, 149, 157, 149, 150, 145, 134, 133, 138, 136, 133, 128, 83, 93, 104, + 95, 103, 113, 113, 104, 108, 106, 128, 129, 132, 129, 129, 133, 135, 132, 136, + 136, 139, 142, 145, 144, 140, 135, 133, 131, 133, 142, 150, 155, 154, 150, 148, + 146, 155, 143, 136, 143, 140, 144, 168, 171, 155, 153, 160, 159, 161, 153, 149, + 143, 141, 155, 161, 165, 170, 168, 174, 176, 176, 177, 179, 181, 183, 183, 189, + 191, 193, 195, 197, 198, 199, 200, 209, 212, 214, 214, 213, 212, 213, 214, 204, + 203, 203, 204, 206, 206, 204, 201, 197, 196, 196, 196, 196, 196, 197, 196, 197, + 199, 202, 199, 196, 192, 191, 191, 187, 201, 190, 188, 188, 174, 178, 163, 124, + 115, 134, 165, 180, 187, 183, 164, 172, 183, 186, 185, 193, 192, 181, 178, 179, + 176, 173, 175, 180, 182, 181, 176, 177, 179, 184, 187, 186, 185, 183, 182, 186, + 183, 179, 178, 176, 177, 176, 177, 180, 187, 196, 198, 195, 192, 192, 194, 195, + 192, 182, 171, 167, 169, 167, 159, 155, 160, 174, 185, 188, 182, 177, 177, 169, + 167, 167, 164, 161, 159, 156, 156, 164, 157, 159, 160, 153, 148, 139, 123, 109, + 139, 149, 151, 156, 151, 152, 159, 150, 150, 144, 133, 132, 137, 135, 129, 116, + 81, 99, 107, 94, 101, 115, 120, 118, 123, 123, 129, 129, 131, 128, 129, 133, + 135, 133, 137, 135, 137, 140, 145, 144, 138, 131, 139, 136, 136, 143, 150, 153, + 148, 141, 148, 144, 152, 140, 131, 135, 130, 130, 165, 174, 164, 164, 166, 160, + 165, 158, 160, 152, 138, 158, 169, 158, 163, 165, 172, 174, 176, 177, 180, 182, + 184, 187, 190, 191, 194, 195, 197, 198, 199, 201, 208, 212, 215, 215, 213, 210, + 209, 208, 200, 200, 200, 201, 203, 202, 200, 196, 195, 195, 196, 197, 198, 198, + 199, 199, 199, 201, 203, 200, 194, 190, 191, 194, 184, 194, 187, 186, 186, 175, + 188, 143, 57, 60, 75, 105, 137, 154, 167, 178, 174, 188, 187, 180, 185, 187, + 183, 184, 183, 178, 173, 172, 175, 177, 177, 174, 176, 175, 178, 185, 186, 183, + 182, 184, 183, 183, 183, 180, 176, 176, 178, 180, 178, 182, 187, 187, 184, 181, + 180, 181, 188, 190, 187, 179, 175, 175, 165, 151, 153, 164, 182, 196, 202, 196, + 188, 184, 167, 166, 166, 166, 166, 165, 162, 160, 161, 153, 153, 153, 150, 151, + 144, 124, 108, 146, 148, 150, 160, 153, 156, 162, 146, 148, 143, 133, 131, 133, + 127, 117, 99, 81, 100, 102, 92, 102, 113, 122, 116, 120, 120, 129, 129, 131, + 128, 129, 133, 136, 134, 138, 138, 139, 139, 141, 140, 138, 135, 141, 140, 140, + 144, 146, 147, 144, 142, 146, 137, 142, 133, 131, 135, 126, 119, 158, 173, 169, + 167, 167, 157, 162, 158, 158, 159, 140, 157, 168, 159, 167, 168, 173, 176, 179, + 181, 184, 185, 187, 187, 191, 191, 194, 195, 197, 199, 200, 201, 204, 210, 214, + 216, 214, 210, 207, 205, 202, 201, 201, 203, 203, 202, 199, 195, 197, 197, 198, + 201, 203, 203, 204, 204, 202, 201, 200, 198, 197, 195, 196, 197, 190, 190, 187, + 188, 189, 181, 194, 108, 53, 69, 64, 64, 77, 77, 95, 140, 174, 188, 185, + 172, 174, 181, 186, 193, 183, 180, 177, 175, 176, 177, 178, 176, 178, 174, 175, + 183, 185, 182, 182, 186, 183, 185, 187, 183, 175, 174, 177, 183, 195, 195, 194, + 192, 189, 186, 183, 182, 184, 189, 187, 180, 179, 180, 170, 153, 148, 150, 158, + 170, 182, 186, 183, 177, 162, 161, 163, 165, 168, 167, 163, 161, 160, 155, 155, + 152, 147, 147, 143, 126, 108, 152, 147, 150, 163, 152, 153, 155, 143, 146, 145, + 137, 132, 125, 112, 94, 90, 87, 97, 94, 97, 112, 115, 124, 128, 134, 134, + 126, 128, 128, 125, 126, 131, 135, 134, 137, 139, 141, 138, 135, 134, 138, 141, + 140, 140, 141, 143, 141, 142, 143, 145, 148, 133, 135, 131, 140, 148, 133, 122, + 147, 168, 169, 168, 165, 154, 158, 157, 153, 165, 147, 158, 173, 168, 182, 181, + 175, 177, 181, 183, 186, 187, 186, 187, 190, 191, 194, 195, 198, 199, 200, 201, + 203, 209, 215, 218, 217, 212, 208, 206, 205, 205, 205, 206, 207, 205, 201, 197, + 197, 198, 199, 202, 204, 206, 207, 206, 203, 199, 195, 195, 199, 202, 201, 199, + 199, 191, 189, 191, 191, 187, 195, 80, 52, 70, 57, 56, 78, 65, 59, 96, + 147, 172, 182, 177, 180, 181, 179, 181, 184, 183, 182, 181, 180, 180, 180, 179, + 179, 173, 175, 182, 185, 182, 183, 186, 183, 187, 189, 185, 174, 171, 177, 185, + 187, 186, 184, 185, 186, 186, 185, 183, 187, 189, 184, 175, 176, 182, 177, 162, + 179, 168, 157, 158, 171, 183, 186, 181, 167, 165, 165, 165, 164, 159, 152, 147, + 165, 161, 162, 154, 140, 140, 138, 124, 109, 158, 149, 151, 166, 149, 146, 145, + 149, 156, 156, 147, 138, 124, 100, 78, 92, 96, 101, 90, 104, 121, 116, 123, + 121, 129, 133, 124, 124, 127, 129, 132, 132, 133, 132, 138, 137, 135, 133, 134, + 136, 139, 141, 139, 138, 140, 140, 141, 141, 142, 142, 138, 138, 136, 132, 129, + 127, 126, 117, 135, 170, 168, 157, 157, 152, 160, 162, 156, 156, 148, 149, 167, + 177, 180, 189, 178, 179, 182, 182, 181, 182, 184, 186, 191, 186, 187, 194, 199, + 200, 200, 204, 212, 211, 210, 209, 209, 208, 205, 203, 196, 196, 197, 199, 203, + 203, 201, 197, 192, 192, 195, 198, 200, 201, 201, 199, 209, 204, 198, 194, 193, + 195, 196, 196, 201, 183, 189, 184, 186, 181, 169, 51, 53, 75, 60, 57, 53, + 65, 52, 65, 119, 176, 185, 171, 171, 188, 166, 183, 180, 186, 184, 178, 178, + 185, 180, 168, 185, 183, 178, 174, 177, 183, 188, 189, 192, 189, 185, 181, 178, + 179, 183, 186, 186, 190, 194, 193, 188, 183, 181, 180, 187, 184, 181, 182, 183, + 179, 171, 164, 160, 171, 169, 146, 174, 171, 179, 181, 165, 161, 166, 167, 158, + 159, 163, 159, 168, 156, 155, 150, 135, 139, 140, 120, 121, 156, 154, 145, 158, + 155, 141, 153, 162, 159, 145, 126, 114, 109, 104, 99, 107, 105, 101, 101, 106, + 113, 122, 127, 131, 125, 121, 124, 125, 128, 129, 130, 131, 131, 132, 135, 137, + 137, 137, 138, 139, 142, 140, 135, 134, 135, 135, 135, 136, 137, 137, 136, 135, + 133, 129, 124, 121, 122, 113, 132, 165, 167, 159, 157, 155, 164, 167, 165, 164, + 155, 155, 169, 176, 178, 185, 181, 184, 187, 189, 187, 183, 184, 183, 192, 188, + 188, 192, 195, 195, 194, 196, 207, 205, 207, 205, 207, 204, 204, 200, 203, 203, + 206, 203, 201, 197, 199, 198, 197, 195, 195, 196, 197, 198, 199, 200, 202, 201, + 200, 200, 200, 198, 194, 190, 189, 180, 184, 183, 188, 178, 155, 52, 67, 65, + 50, 65, 66, 70, 48, 54, 95, 177, 187, 179, 178, 185, 166, 181, 181, 187, + 187, 183, 184, 189, 184, 172, 180, 177, 176, 174, 177, 181, 185, 184, 183, 181, + 179, 176, 174, 177, 186, 192, 195, 196, 196, 193, 188, 184, 184, 185, 191, 187, + 184, 184, 184, 181, 174, 167, 161, 168, 159, 145, 169, 177, 180, 181, 167, 161, + 163, 162, 153, 155, 161, 160, 168, 157, 155, 148, 134, 135, 136, 117, 119, 156, + 162, 156, 167, 156, 135, 142, 118, 121, 116, 107, 105, 108, 109, 107, 112, 109, + 105, 104, 108, 116, 127, 132, 134, 129, 126, 133, 131, 131, 131, 131, 132, 133, + 133, 133, 134, 136, 139, 140, 140, 139, 136, 133, 132, 133, 133, 133, 133, 132, + 131, 127, 126, 125, 122, 118, 116, 118, 110, 123, 152, 158, 157, 153, 149, 160, + 162, 166, 168, 161, 161, 173, 177, 176, 180, 182, 188, 193, 194, 192, 185, 182, + 179, 185, 181, 183, 191, 197, 199, 201, 204, 203, 202, 204, 204, 204, 201, 201, + 198, 193, 197, 202, 199, 196, 195, 202, 207, 200, 198, 196, 196, 196, 197, 199, + 200, 201, 200, 200, 200, 200, 198, 194, 190, 185, 184, 187, 188, 197, 178, 140, + 59, 75, 58, 52, 79, 70, 68, 54, 60, 80, 186, 184, 178, 177, 173, 167, + 180, 181, 186, 186, 184, 187, 193, 186, 175, 176, 174, 175, 175, 177, 179, 183, + 183, 179, 179, 178, 175, 173, 177, 188, 197, 201, 199, 195, 190, 185, 183, 185, + 187, 192, 188, 184, 183, 183, 181, 175, 171, 165, 167, 148, 145, 157, 178, 175, + 179, 169, 161, 161, 157, 148, 151, 160, 160, 166, 158, 154, 147, 134, 133, 131, + 118, 119, 146, 149, 140, 142, 128, 106, 107, 102, 108, 107, 102, 105, 110, 113, + 112, 111, 109, 105, 105, 110, 119, 129, 133, 132, 128, 126, 139, 137, 135, 134, + 134, 134, 135, 136, 135, 134, 135, 135, 136, 134, 133, 131, 130, 129, 128, 128, + 127, 126, 123, 121, 123, 122, 121, 119, 117, 116, 118, 113, 112, 138, 149, 157, + 152, 146, 157, 156, 157, 161, 159, 162, 174, 176, 174, 179, 183, 187, 192, 194, + 190, 187, 183, 180, 178, 178, 181, 188, 195, 197, 201, 206, 203, 204, 206, 204, + 202, 198, 197, 196, 190, 193, 196, 195, 195, 197, 205, 208, 197, 196, 196, 197, + 197, 198, 198, 198, 203, 199, 195, 192, 193, 194, 195, 195, 185, 189, 186, 187, + 198, 175, 121, 65, 73, 60, 65, 87, 60, 63, 66, 75, 89, 196, 174, 166, + 167, 161, 168, 181, 180, 182, 180, 179, 183, 188, 184, 177, 180, 176, 176, 175, + 177, 177, 182, 186, 184, 185, 184, 179, 176, 179, 191, 200, 196, 194, 190, 185, + 182, 181, 182, 184, 187, 184, 181, 180, 180, 179, 177, 174, 170, 170, 147, 149, + 145, 171, 169, 176, 169, 161, 161, 158, 148, 151, 159, 158, 160, 155, 150, 144, + 136, 131, 128, 124, 108, 124, 119, 106, 105, 95, 84, 87, 97, 103, 103, 100, + 101, 104, 106, 104, 107, 108, 108, 110, 114, 119, 125, 126, 126, 125, 124, 145, + 142, 139, 138, 136, 135, 136, 137, 138, 136, 133, 131, 130, 129, 129, 127, 117, + 117, 118, 120, 118, 118, 117, 113, 124, 123, 122, 121, 118, 116, 118, 114, 99, + 119, 137, 156, 154, 148, 161, 154, 150, 158, 160, 163, 174, 176, 173, 179, 183, + 186, 191, 192, 190, 187, 187, 187, 185, 182, 185, 188, 190, 188, 190, 194, 203, + 204, 206, 200, 196, 190, 191, 190, 202, 198, 199, 196, 199, 198, 201, 197, 190, + 192, 195, 198, 200, 199, 197, 195, 198, 195, 191, 189, 190, 192, 193, 193, 185, + 189, 183, 181, 188, 170, 103, 61, 67, 66, 76, 91, 64, 69, 69, 69, 107, + 196, 165, 162, 163, 162, 173, 182, 183, 181, 176, 174, 178, 184, 184, 181, 185, + 177, 175, 173, 172, 172, 180, 188, 187, 187, 186, 183, 180, 184, 195, 203, 189, + 188, 186, 185, 184, 183, 182, 181, 181, 180, 179, 179, 180, 180, 180, 179, 170, + 169, 152, 155, 139, 162, 168, 178, 166, 161, 163, 163, 153, 154, 160, 156, 154, + 153, 144, 140, 138, 133, 129, 133, 92, 99, 97, 92, 93, 93, 93, 98, 94, + 102, 104, 101, 102, 105, 109, 108, 104, 106, 111, 117, 122, 124, 126, 124, 123, + 122, 123, 140, 138, 137, 136, 135, 133, 131, 131, 129, 125, 122, 120, 118, 117, + 118, 115, 108, 107, 113, 115, 119, 120, 120, 119, 118, 118, 116, 113, 109, 108, + 107, 105, 91, 101, 120, 148, 149, 146, 160, 151, 153, 160, 163, 167, 177, 175, + 171, 176, 184, 188, 189, 189, 188, 189, 192, 194, 189, 187, 189, 194, 196, 193, + 199, 205, 205, 205, 203, 196, 189, 184, 186, 187, 196, 195, 196, 198, 202, 202, + 200, 195, 189, 192, 197, 201, 202, 201, 197, 195, 190, 191, 193, 195, 197, 195, + 190, 187, 189, 190, 184, 180, 180, 173, 103, 59, 68, 69, 72, 90, 78, 83, + 64, 53, 124, 182, 163, 169, 169, 175, 178, 183, 188, 184, 179, 176, 179, 183, + 183, 181, 183, 175, 171, 170, 169, 167, 178, 190, 186, 185, 184, 183, 185, 189, + 197, 202, 187, 187, 186, 187, 188, 187, 183, 181, 179, 180, 181, 182, 182, 182, + 182, 181, 167, 160, 155, 156, 141, 156, 172, 179, 163, 160, 165, 166, 157, 157, + 161, 156, 150, 151, 140, 135, 139, 133, 131, 144, 87, 92, 98, 99, 100, 101, + 100, 100, 99, 107, 109, 105, 104, 107, 111, 111, 109, 112, 118, 125, 132, 133, + 131, 128, 125, 125, 127, 127, 127, 128, 128, 126, 124, 121, 119, 113, 111, 110, + 110, 108, 107, 107, 104, 102, 102, 108, 112, 116, 116, 116, 115, 105, 105, 105, + 103, 100, 98, 100, 101, 102, 101, 114, 143, 144, 142, 157, 145, 153, 163, 165, + 168, 177, 173, 169, 176, 184, 186, 188, 188, 188, 188, 190, 192, 186, 187, 192, + 198, 202, 203, 210, 218, 206, 206, 204, 194, 188, 184, 189, 191, 192, 195, 204, + 207, 211, 207, 206, 203, 195, 196, 200, 202, 203, 201, 199, 197, 190, 191, 194, + 197, 199, 197, 192, 188, 194, 191, 189, 185, 178, 185, 110, 61, 67, 70, 65, + 88, 85, 80, 58, 69, 149, 173, 170, 180, 172, 185, 182, 188, 191, 185, 182, + 182, 184, 183, 179, 177, 179, 171, 170, 172, 172, 169, 180, 193, 190, 187, 184, + 185, 189, 193, 197, 197, 190, 188, 187, 187, 188, 187, 183, 180, 178, 180, 182, + 183, 182, 180, 178, 177, 169, 153, 158, 152, 148, 152, 173, 170, 162, 158, 164, + 166, 158, 158, 162, 158, 151, 152, 138, 133, 139, 132, 132, 153, 92, 92, 100, + 106, 102, 102, 101, 95, 95, 103, 105, 100, 97, 102, 107, 107, 121, 123, 127, + 131, 134, 134, 133, 130, 128, 130, 131, 113, 113, 115, 114, 113, 111, 107, 104, + 102, 102, 105, 106, 107, 106, 103, 100, 92, 91, 95, 98, 100, 99, 97, 95, + 93, 95, 95, 97, 98, 100, 102, 105, 124, 116, 121, 148, 146, 145, 161, 146, + 150, 160, 163, 166, 175, 174, 168, 176, 180, 183, 186, 186, 185, 185, 185, 186, + 187, 188, 191, 196, 198, 197, 203, 210, 210, 209, 206, 197, 190, 187, 194, 199, + 205, 213, 224, 225, 221, 212, 209, 208, 201, 202, 202, 203, 202, 201, 200, 199, + 197, 195, 193, 193, 195, 196, 197, 196, 189, 185, 187, 185, 173, 189, 113, 57, + 65, 68, 61, 85, 80, 67, 58, 101, 173, 173, 178, 185, 167, 186, 183, 196, + 189, 185, 183, 185, 186, 182, 175, 171, 176, 169, 172, 177, 177, 174, 184, 198, + 199, 193, 188, 189, 193, 195, 194, 191, 193, 189, 185, 184, 185, 184, 181, 178, + 176, 178, 181, 181, 179, 175, 172, 171, 175, 150, 159, 149, 152, 149, 171, 159, + 161, 157, 162, 163, 156, 158, 163, 160, 151, 153, 136, 131, 139, 131, 132, 156, + 92, 90, 97, 104, 101, 103, 109, 104, 100, 107, 113, 112, 112, 120, 128, 130, + 133, 133, 133, 131, 130, 129, 128, 126, 130, 131, 132, 104, 105, 106, 105, 103, + 97, 92, 88, 93, 100, 94, 84, 81, 74, 70, 75, 63, 71, 77, 82, 89, + 83, 82, 96, 97, 95, 94, 100, 109, 115, 118, 121, 138, 135, 135, 140, 143, + 144, 145, 149, 155, 159, 164, 167, 169, 168, 167, 169, 176, 179, 181, 183, 185, + 186, 187, 187, 190, 188, 189, 194, 196, 194, 196, 200, 202, 202, 204, 204, 207, + 206, 208, 207, 208, 208, 212, 213, 216, 216, 216, 215, 208, 204, 201, 198, 199, + 201, 205, 207, 202, 197, 191, 187, 187, 189, 191, 194, 198, 191, 176, 185, 186, + 188, 159, 58, 78, 59, 68, 85, 76, 67, 92, 126, 168, 176, 183, 187, 188, + 189, 191, 193, 182, 187, 191, 190, 184, 178, 175, 174, 179, 176, 177, 176, 179, + 179, 180, 178, 197, 191, 186, 186, 192, 197, 199, 198, 189, 187, 184, 182, 182, + 182, 180, 178, 178, 172, 175, 179, 175, 177, 180, 172, 166, 168, 166, 157, 159, + 140, 166, 170, 161, 161, 160, 158, 160, 162, 158, 149, 149, 142, 141, 137, 140, + 116, 149, 161, 99, 95, 111, 107, 100, 107, 102, 101, 113, 117, 123, 129, 134, + 136, 137, 135, 140, 139, 135, 130, 125, 122, 124, 127, 129, 129, 129, 86, 85, + 82, 78, 77, 76, 75, 75, 66, 74, 74, 69, 66, 57, 52, 54, 60, 65, + 66, 79, 96, 96, 91, 97, 97, 105, 115, 121, 122, 121, 120, 124, 126, 127, + 129, 133, 137, 139, 144, 151, 150, 154, 160, 164, 167, 167, 168, 170, 172, 174, + 179, 182, 184, 186, 188, 188, 187, 185, 187, 192, 194, 192, 192, 196, 197, 199, + 201, 203, 203, 202, 200, 199, 203, 204, 206, 208, 209, 211, 211, 211, 213, 211, + 208, 205, 204, 205, 207, 208, 210, 209, 206, 201, 196, 192, 189, 190, 187, 187, + 183, 195, 192, 190, 167, 87, 68, 70, 81, 75, 57, 72, 126, 171, 177, 182, + 187, 189, 188, 189, 192, 195, 190, 191, 191, 189, 183, 177, 173, 172, 176, 176, + 177, 175, 175, 178, 187, 192, 192, 188, 187, 190, 196, 199, 199, 196, 189, 186, + 184, 183, 182, 182, 180, 178, 179, 172, 176, 179, 174, 175, 177, 169, 171, 169, + 163, 154, 159, 145, 175, 180, 166, 166, 164, 161, 162, 164, 159, 150, 148, 146, + 136, 135, 134, 123, 148, 156, 101, 97, 115, 117, 120, 137, 137, 137, 147, 145, + 146, 146, 144, 141, 138, 136, 136, 136, 133, 130, 127, 126, 129, 131, 135, 136, + 135, 77, 76, 72, 68, 67, 64, 62, 62, 56, 58, 63, 62, 61, 56, 56, + 58, 73, 80, 83, 89, 100, 96, 91, 99, 93, 104, 116, 115, 107, 98, 100, + 108, 123, 124, 127, 130, 132, 134, 142, 151, 146, 150, 157, 162, 165, 167, 169, + 172, 171, 173, 176, 178, 180, 182, 182, 183, 183, 181, 185, 190, 192, 189, 189, + 192, 192, 194, 198, 200, 199, 196, 192, 190, 199, 199, 200, 201, 203, 204, 206, + 207, 216, 214, 212, 210, 208, 207, 207, 207, 204, 207, 209, 206, 197, 188, 182, + 182, 190, 191, 193, 201, 192, 188, 180, 131, 105, 100, 91, 76, 81, 120, 164, + 180, 181, 189, 193, 198, 199, 199, 199, 199, 201, 198, 191, 186, 181, 177, 173, + 169, 185, 184, 183, 174, 170, 172, 184, 192, 186, 186, 188, 194, 199, 200, 197, + 193, 188, 186, 184, 183, 183, 182, 180, 178, 179, 172, 176, 178, 173, 174, 174, + 166, 173, 170, 165, 158, 166, 151, 177, 178, 164, 164, 161, 158, 159, 160, 154, + 145, 145, 150, 131, 134, 125, 132, 148, 153, 106, 97, 112, 119, 129, 147, 145, + 144, 138, 136, 135, 134, 132, 130, 127, 126, 130, 129, 129, 127, 126, 125, 128, + 132, 134, 135, 134, 56, 58, 59, 61, 61, 61, 58, 57, 72, 65, 68, 71, + 67, 71, 82, 87, 93, 105, 106, 99, 93, 81, 78, 90, 82, 89, 95, 91, + 83, 83, 91, 103, 127, 130, 132, 133, 131, 131, 139, 149, 144, 149, 155, 160, + 163, 165, 168, 170, 173, 173, 174, 176, 176, 177, 176, 176, 180, 179, 183, 188, + 190, 188, 187, 189, 190, 190, 192, 193, 193, 192, 190, 188, 197, 197, 196, 197, + 198, 201, 204, 205, 211, 210, 210, 209, 208, 206, 205, 204, 213, 220, 226, 225, + 218, 210, 207, 209, 207, 200, 197, 197, 187, 185, 186, 170, 169, 151, 134, 127, + 144, 180, 189, 172, 183, 191, 197, 205, 209, 209, 207, 206, 204, 198, 187, 182, + 179, 177, 173, 169, 189, 184, 179, 172, 170, 173, 183, 189, 187, 187, 190, 195, + 198, 198, 194, 190, 188, 186, 184, 184, 183, 182, 180, 177, 178, 172, 176, 179, + 173, 174, 174, 166, 172, 172, 171, 168, 175, 153, 169, 162, 161, 161, 159, 156, + 156, 157, 152, 142, 138, 153, 131, 135, 118, 138, 152, 155, 105, 90, 105, 116, + 127, 142, 134, 128, 130, 127, 126, 125, 125, 126, 126, 126, 121, 122, 122, 121, + 119, 120, 122, 125, 121, 125, 127, 83, 82, 85, 89, 95, 100, 106, 109, 90, + 76, 80, 86, 81, 85, 99, 101, 96, 102, 97, 89, 90, 86, 83, 92, 86, + 90, 93, 95, 99, 106, 120, 130, 132, 132, 134, 135, 132, 131, 138, 148, 147, + 151, 156, 160, 161, 163, 166, 169, 171, 171, 172, 173, 173, 174, 173, 174, 181, + 179, 182, 188, 189, 188, 188, 190, 188, 188, 188, 188, 189, 190, 192, 193, 197, + 197, 196, 197, 198, 201, 204, 204, 203, 203, 204, 205, 205, 204, 203, 203, 197, + 203, 209, 209, 204, 200, 201, 207, 214, 204, 201, 196, 188, 189, 189, 190, 196, + 193, 198, 199, 194, 199, 203, 197, 194, 196, 197, 199, 201, 206, 209, 211, 200, + 194, 187, 182, 179, 178, 175, 171, 177, 170, 166, 166, 174, 182, 190, 191, 192, + 192, 192, 194, 194, 193, 191, 189, 187, 186, 184, 184, 184, 183, 179, 177, 177, + 171, 176, 180, 174, 175, 175, 166, 169, 170, 170, 168, 174, 150, 164, 155, 163, + 163, 161, 158, 159, 160, 155, 145, 132, 154, 135, 136, 119, 141, 156, 159, 99, + 83, 98, 114, 129, 143, 131, 123, 128, 123, 120, 116, 114, 112, 114, 114, 115, + 115, 115, 114, 112, 111, 112, 114, 113, 119, 121, 98, 92, 86, 82, 84, 91, + 100, 104, 94, 77, 86, 98, 86, 86, 94, 86, 86, 82, 72, 76, 98, 110, + 106, 103, 104, 108, 113, 119, 125, 129, 135, 136, 130, 129, 131, 134, 133, 132, + 137, 144, 148, 151, 155, 158, 159, 161, 164, 166, 165, 166, 168, 171, 172, 174, + 176, 176, 182, 180, 181, 185, 188, 186, 188, 190, 188, 186, 185, 185, 186, 189, + 192, 194, 194, 194, 195, 196, 198, 200, 201, 202, 199, 199, 201, 202, 203, 204, + 204, 204, 208, 211, 212, 211, 208, 207, 209, 213, 208, 201, 206, 200, 198, 200, + 190, 197, 195, 195, 210, 218, 207, 202, 209, 214, 207, 201, 191, 185, 185, 193, + 202, 208, 194, 191, 188, 185, 181, 179, 177, 174, 176, 167, 163, 164, 175, 183, + 187, 184, 195, 194, 194, 193, 191, 190, 189, 188, 187, 186, 185, 185, 185, 183, + 179, 176, 176, 171, 176, 179, 173, 173, 172, 163, 164, 164, 163, 158, 165, 146, + 166, 164, 162, 162, 159, 156, 156, 157, 151, 143, 133, 149, 136, 134, 129, 141, + 159, 157, 103, 84, 100, 116, 128, 137, 124, 117, 113, 111, 107, 104, 102, 100, + 101, 101, 108, 109, 111, 110, 107, 108, 108, 110, 112, 115, 117, 121, 114, 105, + 98, 95, 95, 97, 98, 97, 75, 86, 101, 86, 85, 94, 83, 83, 87, 83, + 88, 110, 122, 118, 117, 117, 122, 128, 133, 134, 134, 135, 132, 134, 129, 131, + 135, 136, 132, 133, 136, 145, 148, 152, 155, 157, 160, 162, 164, 163, 164, 166, + 170, 173, 175, 177, 177, 182, 179, 179, 184, 185, 184, 188, 191, 189, 186, 186, + 186, 187, 188, 189, 190, 190, 191, 193, 195, 197, 198, 198, 197, 197, 196, 197, + 198, 199, 201, 202, 203, 200, 199, 197, 196, 194, 194, 194, 196, 203, 203, 215, + 203, 203, 207, 191, 203, 197, 189, 195, 202, 204, 207, 208, 201, 206, 201, 191, + 185, 187, 192, 195, 197, 191, 193, 193, 191, 185, 181, 179, 176, 181, 172, 167, + 165, 170, 176, 181, 180, 193, 193, 194, 194, 192, 189, 189, 188, 186, 185, 185, + 185, 185, 183, 179, 175, 178, 172, 176, 178, 170, 168, 165, 155, 155, 158, 160, + 156, 162, 144, 167, 168, 163, 162, 158, 153, 152, 151, 144, 136, 141, 144, 132, + 129, 141, 140, 157, 148, 109, 86, 97, 109, 117, 124, 110, 107, 107, 106, 105, + 104, 103, 103, 104, 104, 101, 103, 105, 106, 104, 104, 106, 107, 108, 108, 109, + 117, 115, 116, 114, 112, 106, 102, 97, 105, 79, 89, 103, 88, 90, 105, 96, + 97, 114, 120, 116, 119, 119, 120, 126, 121, 125, 132, 134, 134, 135, 140, 142, + 141, 134, 133, 136, 137, 132, 129, 128, 141, 145, 149, 152, 155, 159, 163, 165, + 166, 166, 168, 171, 172, 172, 175, 175, 180, 177, 177, 181, 181, 182, 185, 190, + 187, 186, 187, 187, 187, 186, 185, 184, 186, 187, 190, 192, 194, 194, 195, 193, + 197, 194, 194, 195, 196, 197, 199, 200, 205, 203, 201, 200, 200, 200, 199, 199, + 207, 210, 221, 200, 197, 204, 191, 208, 201, 198, 202, 202, 199, 208, 208, 194, + 196, 196, 195, 196, 198, 196, 192, 187, 189, 194, 197, 194, 189, 182, 178, 178, + 174, 170, 167, 164, 168, 174, 185, 190, 188, 191, 194, 193, 194, 191, 188, 187, + 186, 185, 185, 185, 185, 183, 179, 175, 179, 172, 175, 176, 167, 163, 160, 149, + 146, 154, 162, 161, 166, 143, 164, 163, 169, 168, 163, 157, 154, 151, 144, 135, + 150, 139, 130, 125, 149, 139, 155, 137, 104, 79, 87, 98, 104, 113, 103, 103, + 99, 98, 97, 95, 93, 90, 89, 88, 89, 92, 96, 97, 97, 98, 99, 101, + 96, 97, 98, 131, 128, 126, 124, 123, 121, 122, 120, 124, 110, 108, 137, 124, + 138, 131, 122, 126, 124, 124, 125, 129, 135, 135, 134, 135, 138, 135, 131, 131, + 138, 140, 139, 139, 136, 133, 133, 136, 135, 134, 131, 130, 141, 148, 148, 152, + 159, 163, 161, 165, 160, 162, 165, 169, 169, 172, 172, 176, 177, 176, 176, 178, + 182, 186, 188, 189, 188, 187, 186, 185, 185, 184, 184, 188, 189, 190, 190, 192, + 192, 193, 192, 199, 199, 199, 199, 199, 197, 196, 195, 201, 200, 198, 198, 199, + 201, 204, 207, 211, 208, 203, 204, 206, 205, 201, 195, 204, 200, 197, 203, 211, + 213, 205, 197, 192, 191, 189, 192, 197, 198, 197, 193, 188, 186, 184, 181, 178, + 176, 172, 171, 180, 166, 159, 161, 166, 167, 176, 185, 184, 188, 193, 192, 188, + 183, 183, 187, 187, 186, 185, 184, 183, 181, 177, 173, 177, 176, 179, 176, 163, + 157, 150, 135, 144, 152, 149, 148, 160, 164, 163, 164, 169, 162, 156, 153, 150, + 147, 147, 147, 141, 160, 102, 143, 138, 157, 158, 151, 96, 83, 77, 85, 86, + 78, 78, 90, 88, 86, 88, 79, 85, 85, 70, 78, 79, 75, 83, 90, 86, + 88, 89, 82, 90, 91, 95, 126, 125, 127, 129, 130, 130, 129, 127, 124, 123, + 124, 130, 119, 127, 130, 131, 130, 128, 128, 129, 132, 135, 137, 136, 141, 141, + 140, 134, 132, 134, 133, 127, 133, 134, 137, 141, 144, 141, 134, 128, 130, 143, + 151, 147, 144, 152, 163, 170, 169, 165, 166, 168, 171, 171, 171, 172, 175, 174, + 174, 174, 176, 179, 184, 186, 187, 187, 186, 185, 185, 186, 185, 186, 186, 186, + 187, 189, 190, 191, 191, 192, 197, 198, 199, 200, 201, 201, 201, 200, 199, 199, + 199, 201, 204, 208, 212, 214, 213, 210, 206, 207, 209, 209, 203, 199, 203, 200, + 198, 203, 209, 211, 207, 201, 200, 198, 195, 196, 197, 198, 194, 192, 191, 190, + 188, 186, 181, 179, 177, 176, 173, 164, 160, 160, 165, 170, 181, 187, 187, 189, + 192, 191, 186, 183, 184, 186, 188, 186, 185, 184, 183, 181, 177, 173, 174, 170, + 173, 170, 160, 158, 155, 140, 143, 152, 151, 146, 152, 154, 156, 161, 165, 158, + 153, 151, 150, 147, 141, 137, 138, 146, 119, 145, 154, 153, 153, 143, 88, 73, + 69, 81, 82, 71, 62, 67, 74, 75, 89, 82, 76, 77, 69, 74, 77, 69, + 70, 71, 68, 76, 87, 87, 85, 87, 92, 128, 131, 134, 135, 136, 134, 132, + 128, 126, 131, 126, 109, 117, 121, 129, 131, 131, 131, 131, 131, 131, 130, 132, + 132, 129, 132, 134, 131, 131, 134, 133, 130, 131, 135, 139, 143, 145, 143, 137, + 132, 132, 140, 146, 146, 147, 154, 163, 166, 165, 165, 167, 168, 172, 173, 173, + 173, 173, 172, 173, 172, 173, 175, 179, 181, 182, 182, 182, 183, 184, 185, 186, + 187, 184, 185, 187, 189, 190, 191, 191, 191, 192, 193, 195, 197, 200, 201, 202, + 202, 200, 200, 200, 202, 205, 209, 212, 214, 211, 208, 206, 207, 209, 210, 205, + 202, 201, 200, 199, 202, 206, 208, 207, 206, 208, 204, 202, 201, 199, 198, 193, + 191, 190, 189, 187, 184, 180, 178, 175, 174, 170, 170, 168, 162, 166, 175, 184, + 188, 190, 190, 191, 189, 186, 184, 186, 188, 189, 187, 186, 185, 184, 181, 177, + 173, 170, 168, 173, 172, 163, 161, 156, 139, 137, 148, 148, 143, 149, 153, 159, + 169, 164, 160, 156, 155, 154, 150, 142, 134, 141, 132, 134, 141, 160, 148, 147, + 140, 79, 65, 63, 77, 87, 80, 71, 73, 68, 65, 93, 90, 72, 74, 73, + 74, 79, 69, 67, 66, 64, 74, 88, 92, 91, 91, 92, 123, 124, 127, 130, + 132, 131, 132, 130, 129, 131, 118, 87, 121, 126, 131, 122, 130, 130, 132, 133, + 131, 126, 127, 130, 127, 129, 130, 129, 131, 134, 134, 131, 134, 133, 133, 133, + 135, 137, 138, 139, 131, 131, 136, 143, 155, 162, 159, 154, 158, 160, 164, 165, + 169, 173, 174, 170, 172, 172, 171, 172, 172, 174, 176, 178, 176, 176, 177, 178, + 180, 183, 185, 186, 187, 187, 188, 189, 190, 189, 189, 189, 188, 190, 192, 195, + 197, 198, 199, 200, 203, 203, 202, 202, 202, 203, 205, 205, 206, 204, 203, 204, + 206, 207, 203, 201, 200, 201, 201, 201, 202, 205, 207, 209, 209, 207, 205, 202, + 199, 197, 193, 190, 191, 189, 187, 181, 178, 175, 172, 170, 172, 178, 176, 167, + 168, 179, 187, 186, 192, 191, 190, 187, 185, 185, 187, 189, 189, 188, 186, 185, + 184, 181, 176, 173, 170, 170, 177, 178, 169, 164, 153, 132, 142, 150, 148, 144, + 153, 159, 165, 172, 160, 161, 160, 155, 151, 149, 144, 138, 147, 127, 137, 139, + 148, 148, 146, 147, 81, 70, 66, 78, 84, 82, 79, 82, 73, 62, 93, 93, + 67, 73, 75, 69, 74, 68, 72, 75, 71, 76, 86, 87, 94, 95, 93, 103, + 102, 104, 108, 114, 119, 123, 124, 121, 128, 113, 80, 110, 114, 118, 109, 116, + 116, 121, 128, 129, 125, 125, 127, 134, 134, 130, 124, 122, 124, 124, 123, 131, + 132, 132, 132, 133, 135, 137, 139, 129, 128, 133, 140, 149, 155, 157, 158, 156, + 160, 163, 162, 167, 172, 171, 166, 171, 172, 171, 171, 171, 173, 174, 176, 174, + 174, 175, 177, 180, 183, 185, 187, 192, 192, 192, 192, 191, 190, 188, 188, 190, + 191, 193, 195, 197, 197, 198, 198, 205, 205, 204, 203, 202, 202, 201, 201, 203, + 202, 202, 202, 202, 202, 202, 201, 199, 200, 201, 201, 200, 202, 206, 210, 206, + 205, 203, 200, 196, 194, 192, 191, 196, 193, 190, 184, 180, 175, 172, 171, 172, + 178, 177, 168, 171, 182, 189, 186, 193, 191, 188, 186, 185, 185, 187, 189, 189, + 187, 185, 184, 183, 179, 175, 171, 172, 169, 172, 172, 165, 163, 156, 136, 152, + 155, 148, 145, 159, 165, 164, 165, 152, 157, 157, 148, 140, 140, 142, 141, 143, + 127, 134, 145, 138, 153, 146, 144, 85, 81, 84, 88, 86, 78, 76, 78, 86, + 66, 89, 87, 66, 74, 74, 63, 66, 63, 69, 71, 65, 67, 76, 77, 91, + 93, 93, 105, 104, 102, 101, 103, 106, 108, 110, 110, 123, 118, 87, 86, 88, + 97, 99, 97, 97, 104, 119, 126, 123, 120, 122, 119, 120, 117, 112, 110, 115, + 118, 117, 127, 133, 136, 139, 139, 137, 136, 135, 127, 132, 139, 138, 134, 134, + 148, 165, 158, 164, 166, 163, 167, 172, 169, 162, 170, 170, 169, 170, 169, 170, + 170, 173, 173, 174, 176, 178, 181, 184, 187, 189, 192, 192, 192, 192, 191, 189, + 188, 187, 193, 194, 196, 197, 198, 198, 198, 198, 203, 203, 203, 204, 204, 205, + 205, 205, 204, 204, 204, 204, 202, 203, 203, 203, 200, 201, 201, 201, 200, 201, + 204, 205, 201, 201, 199, 195, 192, 189, 190, 192, 192, 190, 186, 183, 178, 175, + 172, 171, 170, 169, 168, 169, 174, 185, 190, 189, 191, 189, 186, 185, 185, 185, + 186, 186, 188, 186, 184, 183, 181, 178, 173, 169, 173, 164, 161, 159, 156, 163, + 165, 151, 144, 147, 143, 146, 165, 173, 169, 167, 155, 160, 157, 144, 137, 140, + 144, 143, 131, 129, 135, 154, 143, 158, 151, 124, 79, 87, 101, 112, 109, 97, + 87, 85, 96, 76, 87, 82, 71, 77, 72, 63, 63, 58, 61, 60, 52, 57, + 68, 72, 93, 94, 95, 120, 117, 114, 111, 109, 107, 104, 104, 111, 117, 112, + 95, 68, 76, 86, 92, 92, 91, 99, 117, 127, 121, 114, 111, 103, 107, 108, + 107, 110, 117, 119, 121, 128, 135, 140, 142, 139, 137, 136, 136, 131, 131, 136, + 139, 136, 131, 138, 149, 150, 160, 162, 160, 164, 172, 170, 162, 167, 168, 167, + 167, 166, 167, 167, 166, 170, 170, 173, 175, 178, 181, 183, 185, 187, 188, 190, + 190, 190, 190, 189, 189, 190, 191, 192, 194, 195, 196, 196, 196, 197, 198, 200, + 202, 203, 204, 205, 205, 203, 204, 204, 203, 203, 202, 201, 202, 202, 201, 200, + 200, 201, 202, 201, 201, 199, 198, 197, 193, 189, 186, 188, 191, 186, 185, 182, + 180, 178, 176, 173, 172, 175, 168, 165, 172, 182, 187, 190, 192, 189, 188, 185, + 184, 185, 185, 186, 186, 187, 185, 183, 181, 179, 176, 171, 167, 168, 160, 158, + 159, 160, 170, 174, 160, 137, 145, 146, 151, 168, 175, 170, 169, 164, 164, 157, + 143, 140, 146, 144, 136, 127, 133, 142, 151, 153, 150, 161, 102, 75, 88, 105, + 123, 128, 121, 112, 104, 104, 93, 96, 87, 85, 88, 76, 74, 70, 66, 67, + 66, 58, 65, 78, 84, 99, 97, 94, 114, 115, 116, 118, 117, 118, 116, 115, + 119, 111, 98, 98, 64, 84, 88, 87, 99, 95, 101, 120, 129, 120, 107, 102, + 112, 117, 119, 119, 121, 125, 123, 123, 133, 137, 137, 133, 131, 132, 137, 139, + 136, 126, 127, 140, 150, 143, 128, 120, 139, 150, 155, 155, 161, 173, 173, 164, + 164, 165, 164, 164, 163, 162, 161, 162, 164, 164, 165, 169, 172, 175, 178, 180, + 183, 184, 187, 188, 189, 190, 190, 189, 184, 185, 187, 190, 191, 193, 193, 194, + 195, 196, 197, 199, 200, 201, 201, 201, 202, 203, 204, 203, 201, 200, 200, 201, + 203, 201, 199, 200, 202, 203, 199, 197, 198, 198, 197, 190, 186, 184, 186, 188, + 186, 184, 184, 183, 183, 183, 181, 181, 187, 172, 167, 177, 189, 190, 189, 191, + 188, 186, 184, 184, 185, 185, 185, 184, 186, 184, 182, 180, 178, 175, 170, 166, + 164, 159, 164, 170, 172, 179, 177, 159, 147, 158, 160, 160, 168, 167, 159, 158, + 166, 162, 150, 138, 140, 146, 138, 122, 131, 137, 148, 141, 158, 139, 171, 91, + 85, 91, 105, 120, 130, 128, 118, 111, 111, 108, 111, 99, 102, 101, 83, 89, + 81, 79, 85, 88, 80, 84, 93, 96, 100, 96, 93, 120, 117, 109, 104, 104, + 110, 110, 105, 110, 104, 101, 115, 99, 78, 87, 91, 100, 113, 116, 117, 121, + 115, 108, 113, 113, 115, 119, 118, 117, 119, 125, 131, 134, 133, 141, 142, 132, + 131, 135, 128, 130, 126, 129, 137, 146, 147, 144, 142, 124, 139, 143, 147, 163, + 172, 166, 164, 162, 167, 172, 174, 172, 170, 170, 172, 167, 169, 168, 168, 168, + 170, 175, 181, 178, 180, 184, 187, 189, 189, 188, 187, 195, 190, 188, 189, 189, + 188, 190, 194, 191, 189, 193, 199, 199, 194, 195, 201, 201, 202, 204, 204, 202, + 200, 197, 195, 199, 200, 200, 198, 198, 197, 196, 196, 191, 192, 190, 190, 189, + 190, 193, 195, 195, 192, 186, 179, 181, 184, 179, 170, 173, 165, 166, 177, 188, + 190, 188, 187, 188, 188, 189, 189, 189, 186, 185, 184, 182, 183, 184, 181, 175, + 171, 170, 171, 163, 169, 174, 180, 163, 160, 168, 137, 156, 156, 157, 161, 168, + 173, 173, 168, 160, 150, 149, 133, 134, 144, 131, 126, 141, 148, 140, 152, 171, + 129, 173, 92, 90, 95, 115, 132, 130, 127, 125, 116, 109, 112, 113, 112, 113, + 112, 106, 97, 97, 94, 93, 94, 97, 98, 97, 97, 95, 94, 93, 126, 124, + 116, 108, 103, 102, 96, 88, 98, 92, 85, 96, 88, 79, 97, 98, 101, 104, + 98, 95, 104, 105, 102, 108, 102, 104, 109, 112, 115, 119, 124, 128, 130, 128, + 135, 135, 129, 128, 133, 128, 132, 131, 126, 125, 133, 145, 147, 145, 143, 146, + 136, 128, 136, 144, 151, 163, 170, 172, 173, 171, 168, 166, 167, 170, 169, 170, + 170, 167, 165, 166, 172, 175, 172, 173, 178, 181, 183, 185, 186, 186, 190, 186, + 186, 188, 189, 187, 189, 193, 194, 192, 195, 200, 200, 196, 197, 203, 199, 201, + 203, 203, 201, 199, 197, 194, 199, 200, 198, 197, 197, 195, 194, 192, 191, 192, + 190, 189, 187, 188, 190, 193, 189, 188, 182, 175, 178, 184, 185, 180, 167, 165, + 173, 184, 187, 186, 184, 188, 185, 186, 187, 187, 187, 184, 184, 182, 181, 179, + 177, 175, 174, 172, 169, 166, 167, 187, 165, 170, 188, 160, 147, 161, 163, 160, + 161, 167, 172, 173, 171, 167, 164, 151, 149, 134, 131, 138, 127, 129, 142, 140, + 143, 145, 134, 146, 151, 79, 90, 99, 121, 135, 132, 128, 124, 119, 118, 121, + 121, 117, 116, 116, 110, 101, 97, 95, 92, 93, 96, 95, 95, 93, 94, 92, + 93, 123, 125, 122, 118, 114, 112, 104, 96, 96, 94, 86, 94, 91, 89, 104, + 94, 100, 99, 90, 88, 100, 103, 103, 108, 108, 108, 112, 117, 122, 126, 128, + 128, 129, 125, 130, 130, 124, 125, 131, 127, 122, 129, 129, 126, 131, 144, 149, + 145, 149, 151, 144, 138, 140, 136, 137, 149, 149, 156, 166, 174, 175, 174, 171, + 169, 167, 167, 168, 165, 163, 163, 166, 169, 168, 168, 171, 172, 174, 179, 181, + 182, 185, 182, 183, 187, 188, 186, 187, 191, 194, 193, 195, 197, 197, 195, 198, + 203, 198, 199, 200, 200, 199, 198, 195, 193, 198, 196, 196, 196, 194, 192, 191, + 190, 190, 189, 189, 187, 185, 185, 187, 189, 181, 183, 182, 177, 178, 180, 181, + 178, 163, 169, 181, 189, 188, 183, 183, 188, 186, 186, 187, 186, 186, 186, 184, + 182, 187, 182, 177, 175, 175, 174, 168, 163, 171, 178, 179, 187, 174, 159, 170, + 164, 170, 164, 167, 176, 179, 172, 167, 167, 167, 151, 149, 134, 128, 131, 124, + 135, 152, 154, 151, 151, 139, 171, 110, 89, 90, 107, 130, 139, 136, 130, 126, + 124, 119, 121, 118, 114, 113, 113, 109, 101, 98, 94, 93, 93, 96, 95, 95, + 92, 89, 86, 87, 118, 123, 124, 123, 124, 124, 120, 113, 107, 111, 106, 113, + 109, 106, 108, 80, 101, 107, 106, 108, 116, 115, 111, 114, 122, 122, 122, 125, + 129, 129, 126, 122, 130, 123, 126, 126, 119, 122, 129, 125, 121, 125, 126, 124, + 123, 131, 144, 157, 155, 158, 155, 155, 156, 144, 136, 144, 138, 143, 149, 155, + 160, 161, 164, 164, 162, 162, 164, 162, 162, 162, 167, 170, 167, 167, 166, 168, + 169, 172, 175, 177, 180, 179, 180, 186, 187, 186, 186, 189, 192, 192, 192, 192, + 191, 192, 195, 199, 196, 197, 197, 197, 197, 196, 193, 193, 192, 193, 193, 193, + 192, 191, 191, 190, 187, 188, 187, 185, 183, 182, 184, 185, 175, 178, 181, 181, + 177, 173, 169, 166, 166, 174, 183, 188, 186, 182, 183, 187, 188, 188, 188, 188, + 189, 188, 186, 185, 187, 184, 179, 175, 171, 168, 164, 161, 162, 182, 197, 188, + 155, 163, 192, 163, 173, 166, 170, 181, 182, 171, 166, 168, 166, 149, 147, 132, + 124, 127, 126, 145, 149, 158, 132, 144, 161, 156, 65, 91, 90, 116, 135, 142, + 141, 134, 129, 133, 129, 130, 125, 121, 119, 122, 118, 113, 115, 112, 111, 112, + 115, 116, 116, 112, 106, 102, 102, 121, 125, 125, 120, 119, 120, 117, 114, 120, + 125, 120, 126, 124, 120, 116, 81, 107, 120, 125, 125, 130, 124, 120, 127, 129, + 128, 126, 127, 128, 126, 122, 114, 124, 115, 117, 118, 114, 119, 126, 122, 129, + 122, 119, 117, 109, 108, 129, 155, 168, 165, 152, 147, 151, 148, 146, 155, 157, + 150, 139, 132, 131, 134, 144, 150, 153, 155, 157, 157, 158, 160, 166, 170, 168, + 167, 165, 165, 165, 168, 171, 172, 176, 174, 176, 182, 184, 182, 183, 186, 187, + 189, 189, 187, 186, 188, 191, 195, 194, 194, 195, 195, 193, 193, 192, 192, 189, + 189, 190, 191, 191, 192, 191, 191, 186, 187, 185, 184, 182, 181, 183, 183, 179, + 179, 178, 178, 174, 170, 169, 168, 176, 179, 181, 182, 184, 185, 185, 186, 187, + 187, 187, 186, 188, 186, 186, 185, 177, 179, 179, 173, 165, 161, 162, 165, 170, + 205, 179, 157, 170, 172, 174, 174, 170, 167, 172, 182, 183, 173, 168, 168, 162, + 147, 145, 129, 122, 129, 133, 153, 158, 153, 130, 147, 160, 134, 95, 88, 86, + 120, 138, 140, 143, 136, 129, 136, 124, 122, 118, 112, 108, 109, 105, 99, 107, + 104, 103, 102, 107, 110, 111, 107, 103, 101, 101, 120, 125, 125, 120, 117, 120, + 121, 120, 125, 124, 117, 124, 125, 126, 128, 100, 115, 126, 127, 123, 125, 120, + 123, 135, 127, 126, 127, 129, 129, 127, 124, 118, 114, 103, 108, 112, 110, 117, + 125, 121, 119, 117, 122, 125, 116, 103, 102, 109, 150, 159, 155, 151, 157, 159, + 156, 160, 160, 156, 151, 146, 144, 142, 139, 137, 139, 141, 145, 147, 147, 150, + 155, 160, 163, 163, 162, 162, 162, 164, 166, 167, 173, 172, 173, 177, 179, 178, + 179, 183, 186, 189, 190, 187, 186, 189, 191, 191, 192, 192, 192, 192, 191, 191, + 191, 191, 188, 189, 189, 190, 191, 191, 191, 191, 185, 185, 184, 183, 180, 181, + 181, 184, 186, 179, 172, 170, 170, 173, 179, 185, 185, 181, 178, 177, 181, 186, + 186, 183, 184, 183, 182, 181, 183, 182, 182, 182, 173, 178, 181, 176, 167, 164, + 170, 177, 204, 184, 151, 161, 178, 171, 173, 168, 168, 170, 176, 180, 180, 175, + 172, 168, 158, 148, 145, 124, 120, 136, 141, 156, 174, 150, 148, 156, 136, 129, + 164, 89, 86, 123, 136, 134, 141, 135, 126, 134, 117, 116, 109, 102, 97, 95, + 90, 83, 89, 85, 83, 84, 86, 91, 92, 89, 83, 83, 85, 119, 125, 128, + 126, 125, 128, 130, 130, 128, 123, 114, 125, 126, 127, 137, 116, 118, 124, 124, + 119, 121, 118, 120, 131, 124, 126, 129, 131, 131, 130, 130, 128, 116, 104, 108, + 111, 109, 115, 122, 116, 109, 119, 127, 127, 128, 121, 95, 67, 93, 130, 155, + 160, 167, 168, 158, 154, 150, 153, 159, 165, 167, 161, 152, 144, 139, 141, 143, + 143, 142, 144, 146, 149, 155, 155, 155, 157, 157, 160, 162, 164, 171, 169, 169, + 172, 173, 173, 175, 179, 182, 187, 189, 186, 184, 188, 188, 186, 191, 191, 189, + 189, 189, 189, 188, 188, 191, 192, 191, 191, 190, 189, 188, 188, 184, 184, 184, + 183, 181, 182, 183, 185, 186, 176, 168, 170, 175, 178, 183, 187, 185, 184, 180, + 176, 180, 185, 185, 181, 180, 180, 180, 179, 181, 180, 180, 180, 176, 178, 179, + 175, 169, 167, 171, 176, 192, 153, 152, 188, 181, 172, 185, 159, 168, 177, 182, + 178, 176, 178, 175, 166, 156, 151, 147, 121, 119, 143, 147, 155, 160, 145, 144, + 148, 131, 133, 168, 101, 94, 132, 138, 131, 143, 137, 124, 132, 129, 129, 123, + 117, 114, 111, 106, 99, 101, 98, 95, 94, 95, 98, 99, 97, 91, 90, 92, + 123, 129, 133, 129, 126, 126, 126, 124, 132, 125, 120, 132, 132, 128, 135, 118, + 117, 123, 122, 120, 125, 121, 116, 121, 117, 123, 127, 127, 126, 126, 129, 129, + 126, 114, 115, 117, 112, 117, 119, 111, 122, 130, 121, 105, 117, 133, 109, 64, + 47, 102, 141, 150, 157, 164, 159, 156, 161, 157, 153, 151, 154, 158, 160, 159, + 153, 154, 154, 152, 149, 147, 149, 151, 145, 146, 148, 150, 152, 155, 157, 160, + 168, 164, 162, 165, 168, 168, 171, 176, 176, 184, 187, 183, 181, 184, 184, 180, + 189, 189, 186, 186, 186, 187, 186, 187, 194, 193, 193, 190, 190, 186, 186, 183, + 183, 183, 183, 182, 181, 180, 184, 185, 179, 169, 168, 175, 182, 180, 179, 177, + 180, 185, 184, 179, 179, 183, 184, 181, 184, 183, 182, 181, 181, 181, 182, 182, + 176, 174, 171, 166, 162, 160, 161, 162, 131, 162, 171, 188, 202, 179, 168, 169, + 169, 183, 187, 177, 174, 180, 178, 164, 156, 154, 149, 119, 118, 147, 151, 152, + 147, 162, 144, 148, 170, 154, 139, 135, 100, 136, 139, 130, 143, 138, 125, 134, + 125, 126, 125, 120, 120, 119, 117, 110, 109, 106, 101, 99, 99, 100, 100, 98, + 98, 96, 96, 121, 123, 125, 126, 125, 124, 123, 124, 123, 121, 123, 121, 121, + 121, 121, 120, 110, 119, 118, 117, 120, 116, 113, 120, 105, 111, 114, 112, 114, + 122, 125, 124, 120, 120, 122, 121, 117, 116, 117, 120, 119, 122, 121, 108, 119, + 115, 115, 67, 35, 56, 90, 124, 148, 157, 153, 149, 157, 157, 157, 157, 159, + 160, 160, 159, 149, 148, 148, 151, 156, 158, 157, 157, 159, 161, 160, 155, 146, + 140, 137, 137, 151, 154, 158, 162, 166, 164, 160, 156, 170, 174, 178, 184, 183, + 181, 183, 186, 183, 183, 181, 177, 178, 184, 187, 187, 184, 185, 188, 188, 188, + 183, 179, 175, 183, 180, 178, 177, 180, 180, 178, 175, 151, 163, 176, 179, 177, + 176, 180, 185, 183, 181, 180, 182, 184, 185, 186, 185, 188, 185, 181, 179, 181, + 181, 180, 179, 180, 176, 169, 163, 161, 158, 150, 143, 164, 157, 177, 187, 175, + 179, 179, 154, 170, 182, 192, 189, 180, 172, 168, 164, 142, 149, 154, 139, 116, + 151, 151, 154, 164, 148, 145, 158, 162, 152, 144, 149, 104, 125, 120, 128, 133, + 122, 130, 129, 132, 130, 136, 134, 122, 121, 120, 105, 115, 110, 108, 107, 108, + 106, 103, 102, 101, 104, 102, 126, 127, 127, 125, 122, 120, 120, 120, 121, 120, + 119, 117, 116, 116, 116, 117, 116, 124, 123, 119, 123, 120, 116, 122, 116, 118, + 116, 108, 104, 107, 109, 108, 110, 113, 115, 115, 112, 112, 115, 117, 117, 116, + 115, 111, 121, 110, 117, 85, 37, 45, 54, 67, 86, 115, 145, 167, 166, 164, + 158, 154, 153, 156, 156, 152, 157, 156, 156, 157, 161, 164, 167, 167, 161, 161, + 159, 155, 152, 150, 150, 151, 152, 150, 146, 145, 150, 156, 159, 163, 159, 162, + 167, 176, 179, 180, 184, 190, 183, 183, 182, 177, 179, 182, 185, 182, 190, 189, + 188, 184, 181, 178, 178, 177, 176, 176, 178, 179, 181, 176, 169, 161, 169, 174, + 179, 181, 180, 179, 180, 180, 186, 185, 186, 188, 190, 190, 187, 184, 188, 185, + 182, 180, 180, 180, 179, 178, 167, 171, 172, 166, 159, 159, 164, 170, 160, 176, + 184, 185, 184, 179, 172, 170, 190, 195, 196, 187, 178, 174, 174, 171, 160, 155, + 145, 127, 111, 155, 163, 169, 150, 145, 151, 166, 173, 162, 151, 146, 125, 109, + 125, 112, 135, 126, 130, 130, 128, 124, 128, 128, 124, 128, 126, 112, 120, 115, + 107, 100, 96, 95, 101, 104, 95, 100, 102, 126, 126, 125, 124, 122, 119, 121, + 122, 125, 122, 119, 117, 116, 114, 115, 116, 115, 122, 120, 118, 123, 119, 116, + 121, 116, 118, 114, 106, 103, 106, 110, 111, 119, 121, 123, 123, 121, 122, 124, + 125, 119, 113, 115, 117, 127, 112, 123, 101, 32, 38, 41, 41, 44, 65, 98, + 123, 136, 145, 155, 161, 166, 169, 164, 156, 162, 161, 160, 158, 158, 160, 165, + 168, 163, 163, 163, 164, 164, 163, 160, 159, 157, 153, 146, 143, 145, 152, 157, + 161, 158, 157, 160, 165, 167, 169, 173, 178, 179, 178, 180, 174, 176, 177, 179, + 173, 182, 182, 184, 180, 178, 175, 178, 179, 180, 174, 168, 165, 166, 169, 170, + 170, 184, 182, 180, 180, 182, 181, 181, 180, 187, 188, 190, 192, 193, 191, 186, + 182, 187, 185, 182, 180, 180, 180, 178, 176, 169, 169, 167, 161, 156, 156, 161, + 168, 163, 193, 192, 182, 189, 179, 168, 186, 192, 193, 190, 182, 176, 174, 173, + 168, 157, 152, 147, 137, 125, 164, 158, 155, 142, 145, 153, 163, 171, 166, 154, + 143, 149, 99, 125, 104, 134, 127, 127, 127, 134, 125, 125, 122, 117, 120, 117, + 103, 95, 104, 113, 113, 109, 101, 95, 93, 95, 98, 101, 115, 116, 122, 122, + 123, 124, 125, 126, 127, 125, 122, 117, 117, 118, 121, 121, 117, 122, 120, 117, + 123, 120, 116, 122, 116, 115, 115, 114, 114, 116, 121, 124, 130, 131, 131, 131, + 128, 128, 128, 129, 121, 120, 120, 118, 129, 118, 125, 92, 27, 39, 49, 49, + 42, 41, 50, 60, 136, 143, 145, 142, 145, 159, 170, 174, 166, 167, 167, 164, + 159, 157, 160, 163, 165, 166, 169, 173, 174, 170, 160, 152, 162, 161, 158, 157, + 157, 156, 154, 154, 158, 155, 156, 159, 161, 162, 167, 172, 183, 186, 187, 184, + 184, 187, 185, 181, 177, 182, 185, 184, 178, 173, 172, 172, 172, 167, 161, 159, + 162, 168, 177, 182, 182, 179, 178, 176, 178, 181, 184, 184, 186, 186, 187, 190, + 191, 190, 186, 183, 186, 183, 181, 179, 179, 178, 176, 174, 178, 165, 154, 154, + 160, 162, 157, 155, 178, 196, 193, 181, 180, 176, 174, 187, 179, 181, 182, 179, + 179, 178, 172, 163, 151, 150, 152, 147, 132, 160, 146, 138, 164, 168, 169, 167, + 172, 175, 169, 157, 157, 110, 111, 112, 131, 123, 128, 123, 134, 128, 126, 120, + 112, 114, 112, 100, 108, 105, 99, 90, 86, 90, 95, 97, 95, 96, 96, 103, + 107, 115, 119, 121, 121, 121, 120, 120, 118, 116, 114, 114, 117, 120, 121, 119, + 123, 119, 116, 123, 120, 116, 121, 118, 118, 119, 120, 118, 113, 115, 117, 121, + 122, 122, 123, 121, 122, 121, 121, 119, 126, 123, 110, 123, 121, 117, 64, 32, + 38, 41, 43, 41, 40, 41, 44, 50, 85, 121, 144, 155, 160, 155, 147, 169, + 173, 175, 174, 169, 166, 166, 167, 168, 167, 167, 168, 169, 167, 160, 154, 165, + 166, 165, 167, 166, 163, 158, 155, 151, 149, 149, 154, 160, 163, 169, 173, 169, + 171, 174, 173, 174, 176, 175, 171, 184, 185, 183, 178, 171, 166, 165, 165, 155, + 160, 167, 172, 176, 177, 177, 175, 178, 179, 180, 177, 176, 177, 183, 189, 186, + 185, 184, 186, 188, 190, 189, 188, 183, 181, 179, 178, 177, 175, 172, 170, 168, + 157, 152, 159, 168, 170, 168, 169, 200, 191, 192, 186, 169, 176, 188, 180, 180, + 181, 181, 180, 182, 183, 178, 169, 162, 156, 150, 136, 114, 147, 148, 156, 166, + 171, 169, 162, 164, 170, 167, 156, 153, 139, 96, 132, 131, 121, 133, 123, 125, + 123, 127, 125, 118, 121, 124, 117, 121, 115, 104, 96, 94, 97, 91, 84, 87, + 84, 82, 102, 106, 112, 115, 115, 112, 111, 111, 111, 109, 108, 108, 109, 111, + 113, 115, 113, 117, 111, 107, 115, 114, 110, 114, 110, 111, 114, 115, 114, 109, + 108, 112, 115, 116, 116, 119, 120, 122, 123, 122, 114, 124, 120, 102, 115, 116, + 107, 44, 36, 38, 37, 40, 43, 44, 42, 41, 34, 47, 55, 61, 82, 120, + 150, 162, 160, 166, 171, 174, 174, 173, 172, 172, 171, 166, 161, 158, 159, 162, + 165, 166, 167, 165, 163, 163, 165, 166, 167, 165, 151, 145, 143, 146, 151, 151, + 154, 156, 165, 168, 172, 170, 172, 174, 175, 170, 171, 166, 161, 156, 158, 162, + 169, 172, 164, 167, 172, 176, 177, 177, 178, 178, 180, 181, 183, 181, 177, 177, + 180, 185, 186, 185, 184, 185, 188, 190, 191, 190, 180, 178, 176, 175, 174, 172, + 169, 166, 154, 155, 161, 166, 163, 160, 168, 183, 210, 189, 192, 190, 170, 183, + 197, 177, 190, 188, 183, 177, 177, 179, 179, 173, 163, 157, 151, 136, 111, 144, + 154, 170, 153, 160, 163, 162, 164, 166, 161, 150, 151, 164, 92, 140, 137, 128, + 137, 129, 128, 128, 134, 132, 126, 129, 130, 118, 69, 73, 78, 82, 86, 81, + 62, 40, 80, 72, 67, 110, 109, 111, 111, 110, 109, 110, 110, 110, 108, 108, + 108, 109, 108, 109, 110, 108, 111, 104, 102, 111, 110, 105, 109, 105, 102, 105, + 111, 111, 107, 108, 115, 116, 116, 116, 119, 121, 124, 124, 123, 110, 116, 113, + 101, 113, 109, 103, 49, 36, 38, 42, 45, 45, 42, 36, 31, 40, 42, 37, + 37, 61, 103, 128, 131, 154, 155, 158, 162, 167, 169, 169, 168, 166, 164, 161, + 158, 157, 160, 165, 169, 165, 164, 162, 163, 167, 168, 168, 168, 159, 152, 147, + 147, 147, 144, 143, 144, 136, 137, 140, 136, 139, 140, 142, 137, 153, 148, 148, + 151, 162, 170, 178, 177, 178, 175, 173, 171, 170, 174, 182, 186, 181, 180, 181, + 180, 180, 180, 179, 178, 184, 183, 184, 185, 188, 188, 186, 184, 177, 176, 174, + 173, 172, 170, 166, 162, 159, 160, 166, 168, 160, 154, 166, 186, 199, 194, 192, + 188, 184, 190, 191, 183, 190, 190, 186, 179, 176, 176, 176, 171, 156, 154, 155, + 145, 121, 148, 152, 165, 163, 168, 173, 177, 180, 176, 171, 164, 153, 169, 100, + 122, 143, 138, 133, 135, 140, 134, 135, 136, 130, 129, 119, 98, 95, 92, 84, + 75, 78, 87, 88, 77, 75, 65, 58, 117, 115, 114, 112, 110, 112, 114, 118, + 114, 114, 114, 114, 112, 112, 112, 112, 114, 116, 109, 107, 115, 115, 111, 115, + 112, 108, 108, 112, 109, 105, 107, 115, 113, 112, 111, 112, 114, 115, 114, 112, + 110, 110, 110, 105, 116, 104, 105, 63, 38, 40, 41, 41, 39, 39, 38, 38, + 38, 34, 28, 36, 79, 133, 160, 160, 156, 154, 154, 157, 163, 167, 168, 166, + 161, 165, 169, 169, 166, 162, 162, 163, 164, 165, 168, 170, 171, 169, 164, 162, + 162, 156, 153, 155, 157, 155, 153, 154, 155, 158, 157, 154, 154, 156, 156, 153, + 156, 155, 159, 169, 180, 184, 179, 172, 169, 173, 178, 180, 180, 177, 179, 181, + 178, 176, 174, 178, 183, 184, 179, 173, 180, 180, 182, 185, 186, 184, 180, 176, + 176, 174, 173, 172, 171, 168, 164, 160, 172, 163, 161, 166, 169, 169, 177, 193, + 181, 199, 190, 183, 197, 193, 180, 188, 184, 190, 193, 190, 185, 181, 176, 169, + 163, 156, 153, 142, 118, 146, 149, 162, 164, 163, 166, 169, 171, 166, 164, 163, + 156, 161, 109, 100, 146, 145, 127, 137, 143, 131, 129, 131, 130, 129, 111, 82, + 93, 94, 88, 73, 68, 73, 69, 59, 66, 57, 53, 109, 110, 109, 105, 103, + 108, 110, 110, 109, 112, 116, 118, 116, 115, 115, 115, 117, 120, 112, 107, 112, + 113, 113, 121, 113, 114, 112, 106, 104, 106, 107, 105, 109, 110, 109, 110, 111, + 112, 111, 110, 106, 120, 120, 110, 110, 117, 103, 78, 37, 38, 42, 44, 38, + 30, 32, 42, 38, 37, 33, 43, 84, 136, 164, 166, 171, 172, 171, 167, 162, + 159, 158, 158, 160, 161, 162, 163, 163, 165, 167, 169, 169, 168, 168, 167, 167, + 167, 168, 169, 165, 160, 152, 149, 152, 155, 156, 155, 159, 159, 159, 160, 161, + 161, 162, 162, 164, 164, 166, 169, 172, 176, 179, 181, 175, 173, 173, 173, 174, + 176, 178, 179, 180, 180, 178, 178, 178, 179, 180, 181, 181, 181, 182, 184, 185, + 184, 181, 178, 177, 177, 173, 167, 161, 159, 163, 167, 163, 166, 167, 165, 170, + 181, 187, 190, 191, 179, 180, 187, 189, 193, 190, 175, 191, 185, 180, 179, 181, + 180, 176, 171, 174, 162, 153, 141, 121, 154, 154, 162, 167, 164, 166, 170, 172, + 167, 167, 168, 156, 148, 119, 95, 128, 127, 137, 135, 139, 133, 128, 123, 121, + 116, 106, 96, 106, 90, 77, 75, 80, 78, 62, 46, 78, 104, 65, 106, 106, + 106, 102, 101, 106, 109, 108, 106, 109, 113, 115, 115, 113, 116, 118, 126, 129, + 122, 116, 118, 112, 106, 110, 110, 110, 110, 106, 106, 108, 109, 107, 115, 116, + 114, 115, 115, 116, 115, 114, 111, 120, 119, 113, 116, 123, 116, 100, 45, 40, + 37, 37, 36, 41, 55, 71, 80, 83, 81, 82, 105, 143, 164, 165, 177, 180, + 181, 179, 176, 173, 173, 173, 169, 174, 177, 175, 171, 169, 173, 176, 180, 178, + 178, 178, 179, 181, 183, 184, 181, 177, 170, 162, 156, 155, 157, 161, 153, 155, + 159, 162, 164, 163, 162, 160, 164, 165, 168, 172, 176, 179, 182, 184, 182, 181, + 179, 178, 177, 178, 177, 178, 181, 181, 181, 180, 182, 181, 183, 183, 181, 181, + 182, 184, 186, 186, 184, 182, 174, 172, 170, 166, 163, 162, 164, 167, 167, 168, + 168, 170, 180, 191, 193, 191, 192, 196, 206, 204, 185, 181, 190, 192, 187, 185, + 184, 181, 177, 174, 175, 174, 166, 167, 167, 149, 115, 139, 148, 168, 167, 165, + 166, 171, 173, 169, 167, 167, 153, 143, 116, 94, 132, 135, 139, 132, 128, 127, + 125, 127, 128, 127, 121, 114, 95, 87, 76, 74, 76, 74, 68, 59, 39, 62, + 63, 103, 106, 106, 103, 102, 105, 108, 108, 104, 108, 112, 111, 109, 108, 113, + 118, 111, 118, 116, 113, 118, 113, 105, 108, 106, 109, 111, 107, 109, 112, 113, + 112, 120, 120, 118, 118, 117, 118, 117, 116, 113, 113, 110, 110, 114, 118, 116, + 111, 79, 72, 66, 66, 69, 81, 100, 115, 117, 126, 127, 120, 127, 147, 162, + 163, 177, 180, 183, 184, 183, 181, 180, 180, 177, 184, 189, 187, 178, 173, 176, + 182, 183, 182, 182, 182, 184, 187, 190, 192, 188, 186, 181, 170, 159, 153, 153, + 157, 156, 157, 159, 161, 163, 165, 165, 166, 162, 164, 166, 170, 173, 175, 177, + 177, 180, 179, 177, 175, 174, 174, 175, 176, 178, 178, 179, 179, 180, 179, 180, + 179, 180, 179, 178, 179, 180, 181, 179, 178, 172, 170, 167, 166, 167, 168, 169, + 168, 167, 168, 170, 177, 189, 200, 198, 192, 201, 196, 200, 199, 186, 185, 190, + 186, 180, 182, 183, 178, 171, 166, 170, 172, 167, 161, 156, 143, 118, 145, 146, + 155, 166, 164, 166, 171, 174, 169, 167, 166, 159, 143, 115, 89, 131, 141, 144, + 139, 143, 142, 141, 135, 129, 121, 112, 108, 108, 103, 96, 88, 81, 78, 76, + 74, 58, 60, 84, 108, 109, 111, 106, 104, 108, 110, 107, 106, 110, 111, 107, + 102, 101, 106, 111, 99, 107, 108, 109, 117, 113, 108, 112, 108, 111, 113, 113, + 114, 116, 117, 114, 120, 120, 117, 116, 115, 116, 116, 115, 115, 110, 105, 108, + 110, 109, 109, 110, 114, 112, 111, 114, 117, 123, 131, 137, 134, 144, 146, 140, + 142, 155, 165, 167, 175, 179, 183, 185, 185, 183, 182, 181, 181, 186, 190, 189, + 183, 179, 179, 181, 183, 182, 180, 180, 181, 184, 187, 190, 185, 185, 182, 176, + 167, 160, 156, 157, 163, 160, 157, 154, 155, 159, 164, 167, 162, 164, 165, 167, + 168, 169, 169, 168, 173, 172, 171, 171, 171, 172, 174, 175, 175, 176, 177, 178, + 178, 178, 177, 177, 181, 179, 177, 176, 176, 177, 176, 174, 175, 171, 169, 169, + 172, 174, 173, 170, 164, 170, 177, 184, 194, 202, 199, 193, 200, 188, 187, 189, + 186, 191, 193, 184, 183, 184, 184, 178, 172, 168, 171, 173, 167, 157, 152, 143, + 124, 154, 151, 157, 165, 162, 163, 170, 174, 169, 165, 163, 167, 148, 122, 85, + 124, 142, 147, 150, 136, 137, 140, 138, 134, 130, 124, 122, 123, 119, 115, 106, + 98, 94, 91, 88, 91, 70, 79, 116, 117, 119, 112, 110, 112, 113, 110, 111, + 113, 114, 108, 104, 104, 109, 114, 115, 120, 118, 115, 121, 116, 110, 115, 115, + 117, 119, 118, 118, 120, 120, 116, 123, 120, 117, 116, 114, 116, 116, 115, 119, + 113, 110, 114, 115, 111, 110, 114, 123, 126, 130, 133, 136, 137, 135, 133, 143, + 150, 152, 150, 152, 164, 173, 176, 180, 183, 187, 189, 188, 186, 185, 184, 184, + 184, 185, 186, 186, 185, 181, 178, 187, 186, 184, 182, 182, 184, 184, 186, 181, + 181, 181, 183, 183, 179, 171, 167, 164, 163, 160, 157, 156, 156, 158, 159, 163, + 163, 165, 166, 167, 167, 168, 167, 172, 171, 170, 170, 170, 172, 176, 177, 176, + 176, 177, 178, 178, 178, 178, 176, 178, 177, 175, 175, 177, 178, 178, 177, 175, + 172, 169, 170, 173, 175, 173, 171, 166, 177, 188, 193, 196, 200, 199, 198, 193, + 191, 197, 196, 183, 186, 196, 197, 192, 190, 186, 181, 178, 176, 176, 176, 160, + 165, 172, 157, 123, 147, 155, 175, 164, 160, 160, 167, 172, 168, 164, 161, 163, + 148, 132, 87, 119, 139, 140, 149, 135, 136, 139, 140, 138, 136, 135, 133, 126, + 123, 121, 120, 118, 117, 114, 108, 99, 92, 82, 118, 122, 122, 118, 116, 115, + 116, 114, 115, 115, 115, 114, 115, 115, 120, 123, 122, 127, 122, 119, 124, 120, + 115, 119, 120, 123, 124, 119, 119, 122, 122, 118, 125, 121, 118, 117, 116, 118, + 119, 119, 115, 113, 112, 115, 116, 115, 116, 119, 127, 134, 139, 139, 140, 143, + 143, 141, 149, 154, 155, 155, 157, 167, 172, 172, 181, 184, 187, 188, 187, 185, + 185, 185, 186, 183, 181, 184, 188, 188, 184, 179, 186, 185, 183, 182, 181, 180, + 179, 178, 177, 176, 178, 183, 188, 188, 182, 176, 173, 175, 176, 175, 172, 167, + 162, 158, 159, 159, 159, 160, 161, 163, 165, 166, 171, 168, 166, 165, 165, 165, + 169, 170, 169, 169, 168, 168, 168, 169, 172, 171, 168, 166, 167, 170, 174, 176, + 177, 176, 174, 172, 170, 170, 171, 173, 174, 174, 176, 189, 199, 200, 198, 200, + 200, 201, 201, 192, 192, 193, 187, 191, 195, 188, 192, 188, 183, 179, 176, 174, + 174, 173, 166, 166, 168, 154, 123, 148, 152, 167, 167, 160, 159, 164, 171, 168, + 164, 161, 153, 142, 139, 92, 120, 138, 129, 137, 142, 142, 141, 141, 139, 138, + 135, 134, 137, 134, 131, 133, 136, 133, 129, 121, 109, 125, 113, 116, 120, 122, + 119, 118, 120, 121, 117, 118, 117, 116, 117, 121, 125, 126, 126, 119, 125, 122, + 119, 126, 124, 119, 123, 122, 123, 123, 120, 121, 125, 125, 123, 125, 121, 118, + 117, 117, 120, 121, 122, 113, 115, 113, 111, 113, 117, 120, 121, 131, 141, 149, + 148, 147, 152, 157, 158, 154, 160, 164, 164, 161, 164, 166, 167, 178, 181, 183, + 184, 184, 183, 184, 186, 186, 184, 183, 183, 184, 184, 183, 181, 182, 184, 184, + 183, 180, 178, 176, 174, 177, 177, 178, 180, 182, 183, 182, 183, 190, 191, 189, + 187, 183, 179, 175, 173, 168, 166, 163, 161, 161, 162, 164, 165, 165, 164, 163, + 162, 163, 164, 166, 167, 167, 165, 163, 162, 163, 165, 169, 169, 166, 165, 166, + 169, 173, 174, 173, 172, 173, 173, 173, 172, 173, 176, 180, 184, 188, 196, 202, + 201, 199, 200, 199, 198, 205, 190, 185, 189, 189, 194, 192, 178, 188, 187, 185, + 178, 171, 167, 171, 174, 172, 163, 157, 147, 126, 155, 153, 159, 171, 163, 159, + 164, 171, 169, 167, 164, 156, 141, 139, 89, 120, 143, 129, 137, 129, 126, 126, + 131, 138, 144, 146, 146, 147, 144, 141, 140, 140, 138, 135, 130, 122, 138, 129, + 111, 116, 119, 117, 118, 121, 122, 121, 124, 120, 117, 119, 122, 126, 124, 121, + 122, 129, 127, 126, 129, 124, 117, 121, 122, 123, 122, 119, 121, 126, 128, 126, + 124, 121, 117, 117, 119, 121, 124, 124, 122, 124, 122, 115, 114, 122, 128, 126, + 128, 141, 153, 153, 152, 155, 159, 160, 161, 170, 177, 176, 171, 165, 166, 170, + 179, 181, 185, 185, 186, 186, 189, 191, 184, 185, 186, 182, 180, 178, 180, 182, + 182, 185, 186, 187, 184, 181, 178, 177, 182, 184, 184, 181, 177, 178, 183, 189, + 202, 196, 188, 179, 177, 177, 182, 184, 188, 183, 178, 171, 169, 167, 168, 168, + 162, 160, 163, 162, 164, 167, 171, 172, 172, 170, 167, 164, 165, 168, 171, 174, + 176, 176, 177, 178, 179, 178, 174, 171, 175, 176, 177, 176, 176, 180, 188, 194, + 195, 198, 199, 197, 197, 200, 196, 191, 191, 193, 202, 200, 185, 181, 194, 196, + 190, 194, 194, 185, 175, 170, 175, 183, 163, 168, 172, 157, 124, 150, 159, 180, + 174, 165, 160, 164, 170, 170, 167, 165, 167, 145, 135, 81, 114, 148, 136, 146, + 142, 135, 129, 127, 130, 131, 130, 126, 135, 134, 133, 133, 134, 136, 138, 139, + 142, 142, 134, 122, 119, 119, 117, 114, 115, 119, 122, 126, 126, 124, 123, 124, + 126, 128, 128, 125, 123, 123, 122, 122, 123, 124, 124, 132, 124, 119, 119, 123, + 125, 123, 120, 122, 124, 125, 125, 128, 130, 126, 118, 122, 128, 131, 112, 114, + 125, 122, 136, 143, 147, 154, 158, 159, 159, 163, 165, 174, 174, 176, 177, 177, + 175, 170, 166, 171, 175, 181, 183, 186, 185, 188, 188, 183, 183, 189, 192, 198, + 195, 191, 183, 186, 183, 180, 177, 176, 176, 178, 180, 174, 179, 185, 186, 183, + 180, 178, 178, 181, 188, 192, 181, 173, 172, 181, 185, 189, 190, 195, 192, 189, + 181, 178, 173, 176, 174, 173, 169, 167, 165, 163, 163, 161, 162, 164, 168, 174, + 180, 185, 188, 193, 188, 185, 185, 182, 174, 168, 167, 174, 178, 183, 185, 186, + 187, 189, 192, 194, 198, 202, 200, 198, 198, 196, 192, 187, 194, 194, 189, 191, + 199, 199, 190, 198, 196, 189, 181, 181, 184, 185, 182, 171, 169, 167, 154, 137, + 143, 155, 154, 170, 165, 163, 162, 165, 166, 166, 166, 157, 146, 140, 94, 107, + 128, 142, 135, 138, 134, 133, 127, 127, 125, 127, 127, 129, 130, 133, 136, 139, + 140, 141, 141, 131, 133, 135, 132, 128, 128, 125, 122, 120, 122, 124, 122, 121, + 121, 121, 125, 127, 130, 130, 124, 122, 121, 121, 122, 123, 124, 124, 120, 118, + 116, 117, 119, 120, 116, 113, 124, 123, 119, 113, 114, 121, 125, 124, 126, 120, + 122, 120, 127, 129, 118, 133, 145, 150, 157, 160, 161, 162, 164, 167, 165, 166, + 169, 173, 173, 170, 165, 161, 166, 171, 176, 180, 184, 185, 184, 183, 183, 184, + 186, 190, 194, 194, 191, 187, 190, 188, 185, 183, 181, 181, 182, 182, 181, 180, + 178, 174, 172, 174, 179, 184, 181, 186, 187, 182, 179, 182, 186, 187, 191, 190, + 188, 184, 180, 179, 181, 183, 182, 181, 179, 178, 178, 180, 183, 185, 183, 182, + 182, 182, 182, 184, 186, 188, 195, 190, 189, 191, 191, 187, 185, 185, 186, 188, + 190, 190, 189, 190, 194, 197, 196, 201, 202, 198, 196, 197, 197, 195, 197, 202, + 200, 193, 193, 199, 198, 189, 195, 195, 190, 183, 181, 183, 181, 176, 169, 165, + 161, 146, 130, 137, 152, 153, 167, 163, 162, 162, 164, 165, 164, 163, 158, 150, + 142, 104, 109, 134, 143, 139, 137, 136, 136, 134, 132, 130, 127, 126, 129, 129, + 128, 128, 129, 131, 133, 134, 132, 133, 134, 128, 127, 130, 126, 124, 121, 121, + 121, 124, 124, 124, 124, 125, 126, 128, 130, 122, 121, 121, 122, 123, 124, 126, + 127, 127, 127, 128, 128, 126, 123, 118, 115, 116, 116, 113, 105, 104, 111, 118, + 120, 114, 109, 118, 119, 116, 105, 102, 135, 148, 153, 160, 163, 163, 164, 165, + 167, 165, 167, 171, 176, 178, 176, 170, 166, 158, 161, 166, 175, 184, 189, 189, + 187, 185, 185, 185, 187, 191, 193, 193, 192, 188, 187, 186, 184, 182, 181, 179, + 179, 183, 180, 176, 171, 169, 171, 177, 182, 178, 181, 182, 182, 184, 189, 189, + 185, 190, 189, 186, 182, 180, 180, 184, 187, 189, 187, 186, 186, 188, 193, 197, + 201, 196, 194, 192, 190, 187, 187, 187, 187, 193, 188, 186, 190, 192, 191, 192, + 194, 197, 197, 196, 194, 192, 193, 196, 199, 199, 202, 201, 196, 193, 196, 197, + 196, 200, 203, 200, 192, 193, 198, 197, 191, 192, 193, 190, 185, 183, 183, 179, + 173, 173, 166, 160, 145, 129, 137, 156, 160, 163, 160, 160, 162, 164, 165, 164, + 163, 156, 154, 142, 114, 106, 139, 140, 140, 142, 143, 144, 144, 142, 138, 134, + 132, 136, 134, 131, 129, 128, 130, 132, 133, 132, 131, 131, 120, 122, 127, 127, + 126, 123, 122, 123, 128, 126, 126, 124, 123, 122, 122, 122, 121, 122, 122, 123, + 125, 127, 129, 130, 125, 127, 127, 125, 119, 114, 110, 107, 113, 117, 122, 118, + 115, 117, 118, 118, 119, 114, 117, 111, 109, 106, 104, 133, 149, 154, 160, 164, + 164, 164, 164, 166, 170, 171, 173, 178, 182, 182, 178, 176, 165, 165, 165, 172, + 182, 190, 191, 189, 187, 186, 185, 186, 188, 192, 195, 196, 187, 187, 187, 186, + 184, 182, 179, 177, 180, 180, 180, 178, 176, 173, 172, 171, 171, 176, 179, 179, + 182, 186, 186, 182, 185, 187, 189, 189, 187, 184, 184, 184, 190, 190, 189, 189, + 190, 193, 196, 198, 193, 192, 190, 189, 187, 188, 189, 191, 194, 188, 185, 187, + 188, 188, 190, 193, 198, 198, 197, 196, 195, 195, 195, 196, 197, 200, 200, 194, + 192, 194, 195, 193, 193, 194, 191, 187, 189, 196, 197, 194, 191, 191, 189, 184, + 183, 185, 182, 176, 174, 166, 160, 148, 133, 139, 157, 163, 160, 158, 159, 162, + 165, 166, 164, 162, 159, 161, 144, 121, 103, 142, 139, 144, 143, 144, 145, 145, + 144, 141, 138, 135, 139, 137, 135, 133, 132, 132, 134, 135, 132, 128, 126, 124, + 128, 134, 134, 133, 131, 130, 128, 125, 125, 123, 121, 120, 119, 119, 118, 124, + 125, 125, 127, 129, 131, 133, 134, 131, 132, 132, 129, 125, 121, 120, 119, 124, + 130, 137, 135, 132, 131, 130, 127, 121, 120, 119, 110, 118, 129, 119, 127, 147, + 153, 160, 164, 163, 163, 164, 166, 170, 170, 170, 173, 177, 179, 179, 178, 182, + 177, 171, 171, 177, 182, 183, 182, 185, 184, 184, 183, 185, 188, 192, 195, 191, + 191, 192, 191, 190, 187, 184, 182, 180, 180, 181, 180, 178, 173, 167, 163, 161, + 169, 176, 176, 177, 181, 185, 186, 188, 190, 191, 191, 188, 186, 185, 185, 189, + 190, 190, 192, 193, 193, 192, 192, 192, 192, 189, 189, 190, 192, 194, 195, 198, + 191, 187, 189, 190, 190, 192, 195, 194, 195, 197, 199, 199, 198, 196, 194, 191, + 196, 197, 193, 191, 192, 191, 189, 189, 188, 186, 184, 187, 193, 195, 193, 188, + 188, 184, 179, 180, 183, 183, 179, 169, 161, 159, 150, 135, 137, 153, 158, 159, + 158, 159, 162, 165, 166, 165, 163, 165, 168, 149, 123, 102, 140, 140, 147, 140, + 140, 140, 140, 139, 138, 137, 137, 135, 136, 136, 136, 136, 135, 134, 134, 133, + 131, 128, 132, 135, 138, 138, 134, 132, 131, 130, 126, 127, 126, 126, 127, 126, + 126, 127, 125, 128, 128, 129, 131, 133, 135, 137, 139, 139, 139, 139, 140, 140, + 140, 138, 132, 136, 136, 133, 132, 134, 135, 133, 86, 108, 126, 110, 107, 114, + 110, 129, 144, 151, 159, 163, 163, 162, 163, 165, 171, 171, 171, 173, 176, 178, + 177, 176, 179, 174, 169, 168, 173, 179, 184, 185, 180, 181, 182, 182, 181, 183, + 186, 189, 189, 189, 190, 190, 189, 187, 184, 183, 185, 181, 177, 174, 173, 171, + 169, 168, 156, 164, 170, 170, 171, 178, 186, 190, 193, 192, 189, 186, 183, 184, + 188, 191, 187, 189, 191, 194, 195, 195, 194, 192, 191, 190, 187, 187, 187, 189, + 191, 192, 194, 188, 185, 187, 190, 190, 193, 196, 194, 195, 198, 201, 203, 201, + 197, 193, 187, 192, 194, 191, 190, 191, 190, 188, 192, 190, 187, 186, 187, 189, + 189, 188, 185, 184, 181, 176, 176, 180, 181, 177, 170, 162, 161, 156, 140, 139, + 152, 157, 161, 159, 159, 162, 165, 166, 166, 164, 161, 163, 151, 117, 99, 128, + 132, 138, 139, 139, 139, 140, 141, 141, 141, 142, 138, 139, 140, 141, 141, 140, + 139, 138, 136, 135, 133, 132, 134, 136, 136, 134, 130, 130, 130, 130, 131, 131, + 132, 130, 129, 130, 130, 126, 126, 126, 127, 129, 130, 132, 133, 126, 125, 126, + 129, 133, 133, 129, 125, 130, 133, 130, 128, 129, 133, 134, 130, 82, 98, 116, + 104, 96, 93, 97, 129, 142, 149, 158, 163, 164, 164, 164, 166, 172, 172, 175, + 179, 181, 180, 175, 171, 171, 170, 170, 171, 174, 179, 184, 187, 179, 182, 185, + 185, 183, 182, 183, 185, 186, 186, 186, 186, 185, 185, 184, 183, 188, 183, 177, + 175, 176, 178, 178, 177, 163, 165, 164, 162, 166, 175, 181, 182, 189, 189, 188, + 187, 186, 187, 190, 193, 185, 187, 188, 190, 192, 191, 191, 191, 189, 188, 187, + 186, 184, 185, 186, 187, 188, 183, 181, 184, 187, 187, 188, 192, 196, 196, 196, + 199, 201, 200, 196, 192, 188, 192, 192, 188, 187, 190, 192, 192, 193, 190, 188, + 187, 187, 185, 183, 182, 186, 187, 184, 180, 180, 181, 179, 173, 174, 164, 163, + 158, 142, 139, 152, 158, 165, 161, 160, 161, 164, 166, 166, 166, 156, 157, 156, + 113, 103, 118, 126, 126, 134, 136, 140, 143, 145, 145, 144, 143, 145, 145, 144, + 144, 143, 143, 143, 141, 136, 136, 136, 128, 130, 133, 136, 136, 134, 135, 136, + 129, 128, 128, 127, 124, 123, 122, 121, 123, 122, 123, 123, 125, 126, 128, 128, + 128, 125, 127, 130, 134, 131, 124, 116, 128, 131, 132, 131, 135, 138, 135, 128, + 132, 104, 91, 92, 112, 116, 104, 122, 142, 149, 158, 164, 165, 165, 166, 167, + 168, 171, 175, 180, 182, 178, 169, 164, 179, 180, 180, 178, 176, 174, 175, 176, + 181, 185, 189, 190, 187, 185, 185, 185, 188, 188, 188, 188, 188, 188, 188, 188, + 186, 184, 182, 183, 186, 187, 185, 183, 172, 167, 158, 153, 158, 168, 170, 167, + 177, 182, 188, 192, 192, 190, 188, 187, 187, 184, 183, 183, 183, 184, 184, 185, + 192, 190, 189, 188, 186, 187, 189, 190, 191, 186, 183, 186, 187, 186, 186, 189, + 198, 196, 194, 194, 196, 196, 193, 190, 190, 192, 191, 186, 185, 191, 195, 196, + 190, 187, 185, 186, 186, 183, 180, 179, 190, 192, 191, 187, 186, 185, 179, 171, + 172, 160, 158, 153, 136, 133, 147, 154, 167, 163, 161, 161, 164, 166, 167, 167, + 159, 160, 168, 119, 115, 120, 130, 125, 121, 126, 132, 137, 140, 139, 136, 134, + 145, 143, 140, 137, 135, 136, 138, 139, 134, 135, 137, 131, 133, 134, 136, 135, + 133, 131, 128, 138, 132, 116, 129, 117, 122, 115, 123, 116, 104, 97, 97, 104, + 107, 106, 101, 113, 120, 124, 116, 111, 112, 116, 118, 126, 127, 128, 129, 132, + 132, 132, 133, 140, 140, 132, 120, 107, 91, 94, 116, 140, 152, 156, 161, 167, + 163, 159, 166, 167, 172, 178, 181, 178, 175, 171, 170, 177, 178, 178, 177, 175, + 175, 177, 179, 178, 183, 189, 194, 195, 191, 186, 182, 181, 182, 184, 188, 190, + 188, 183, 179, 179, 186, 191, 188, 179, 173, 173, 176, 181, 177, 163, 159, 164, + 161, 158, 167, 172, 178, 187, 193, 190, 182, 178, 178, 180, 182, 188, 194, 188, + 179, 178, 182, 192, 187, 181, 181, 186, 190, 191, 191, 192, 187, 183, 183, 187, + 192, 194, 194, 198, 199, 198, 196, 193, 191, 192, 194, 192, 192, 191, 190, 190, + 189, 188, 188, 190, 189, 189, 190, 189, 186, 180, 176, 185, 181, 179, 182, 183, + 179, 176, 177, 171, 168, 163, 155, 142, 135, 140, 149, 161, 158, 158, 160, 163, + 165, 166, 166, 153, 154, 163, 98, 132, 121, 121, 133, 127, 128, 129, 133, 135, + 135, 133, 130, 133, 130, 127, 126, 127, 131, 135, 139, 131, 133, 135, 129, 128, + 128, 129, 130, 128, 126, 123, 122, 127, 116, 119, 105, 113, 103, 100, 113, 108, + 100, 91, 84, 83, 88, 93, 85, 90, 92, 91, 94, 100, 101, 98, 101, 109, + 121, 136, 140, 134, 133, 137, 119, 135, 138, 134, 135, 131, 125, 130, 140, 151, + 155, 159, 164, 161, 158, 165, 167, 171, 177, 179, 177, 174, 172, 172, 176, 178, + 179, 179, 178, 178, 179, 181, 175, 178, 183, 187, 190, 190, 189, 188, 187, 183, + 178, 177, 179, 182, 185, 186, 183, 177, 174, 178, 186, 187, 180, 172, 172, 180, + 180, 172, 163, 149, 144, 152, 163, 176, 179, 172, 179, 196, 194, 178, 182, 185, + 190, 192, 183, 179, 186, 198, 184, 184, 185, 184, 185, 187, 190, 192, 199, 194, + 187, 185, 186, 189, 190, 191, 192, 193, 194, 193, 192, 192, 194, 195, 192, 192, + 191, 190, 190, 189, 188, 188, 191, 190, 189, 187, 185, 180, 173, 168, 177, 173, + 173, 177, 178, 175, 172, 173, 175, 170, 163, 152, 141, 136, 144, 155, 160, 159, + 161, 164, 166, 166, 164, 162, 156, 158, 153, 110, 136, 124, 122, 130, 130, 129, + 128, 130, 132, 132, 131, 129, 132, 133, 134, 134, 132, 130, 128, 127, 131, 132, + 134, 124, 122, 123, 124, 125, 125, 126, 126, 119, 141, 137, 127, 96, 105, 101, + 103, 82, 77, 77, 77, 79, 83, 90, 95, 100, 99, 95, 93, 95, 96, 90, + 85, 104, 102, 109, 121, 123, 119, 124, 136, 138, 151, 145, 129, 131, 131, 124, + 120, 140, 153, 157, 159, 165, 163, 158, 165, 167, 171, 174, 177, 177, 176, 176, + 176, 176, 178, 181, 182, 181, 180, 180, 181, 177, 178, 179, 181, 183, 186, 188, + 190, 189, 184, 177, 173, 174, 178, 181, 183, 175, 179, 183, 183, 181, 180, 182, + 185, 183, 180, 175, 173, 173, 166, 152, 140, 146, 149, 160, 175, 180, 179, 188, + 202, 190, 182, 177, 179, 182, 181, 177, 177, 179, 183, 188, 189, 187, 188, 192, + 196, 201, 196, 189, 185, 185, 187, 190, 191, 191, 193, 194, 194, 193, 192, 194, + 196, 192, 192, 191, 190, 190, 189, 188, 188, 194, 193, 191, 189, 186, 181, 175, + 171, 176, 174, 175, 180, 182, 179, 176, 176, 182, 175, 164, 151, 138, 135, 145, + 158, 159, 160, 165, 168, 169, 166, 162, 160, 159, 162, 136, 127, 141, 129, 127, + 129, 130, 129, 126, 126, 129, 131, 132, 133, 130, 132, 134, 136, 137, 137, 136, + 134, 132, 134, 136, 114, 112, 113, 114, 117, 121, 126, 127, 122, 129, 116, 115, + 92, 98, 92, 93, 85, 75, 72, 80, 92, 95, 84, 72, 80, 81, 83, 89, + 96, 101, 100, 98, 114, 106, 108, 119, 125, 118, 121, 132, 132, 141, 133, 124, + 123, 119, 113, 116, 140, 155, 158, 158, 164, 164, 160, 167, 167, 170, 172, 174, + 175, 176, 178, 179, 177, 180, 183, 184, 182, 180, 179, 179, 184, 183, 182, 181, + 181, 182, 182, 183, 185, 184, 182, 181, 180, 178, 174, 172, 172, 180, 186, 182, + 172, 168, 174, 184, 185, 174, 167, 165, 168, 173, 162, 141, 133, 131, 142, 162, + 171, 169, 175, 190, 194, 189, 187, 189, 191, 189, 183, 179, 181, 184, 187, 188, + 190, 193, 197, 201, 197, 193, 187, 184, 184, 188, 193, 196, 196, 198, 199, 198, + 195, 193, 194, 194, 191, 191, 191, 190, 190, 189, 189, 189, 189, 188, 188, 188, + 188, 186, 182, 179, 181, 178, 179, 184, 186, 182, 179, 179, 185, 178, 166, 152, + 138, 133, 142, 155, 161, 163, 167, 169, 168, 165, 162, 160, 160, 163, 121, 141, + 143, 136, 136, 135, 132, 128, 125, 124, 127, 131, 134, 136, 133, 132, 130, 129, + 130, 134, 137, 140, 133, 135, 138, 99, 96, 97, 98, 100, 105, 109, 111, 125, + 106, 87, 111, 112, 114, 91, 82, 93, 84, 82, 90, 100, 102, 91, 80, 78, + 80, 85, 91, 96, 99, 101, 104, 104, 101, 113, 136, 145, 135, 125, 122, 127, + 132, 135, 139, 131, 104, 87, 96, 134, 152, 157, 155, 159, 162, 162, 169, 167, + 170, 173, 175, 175, 176, 179, 181, 179, 181, 184, 184, 181, 178, 176, 176, 187, + 187, 186, 185, 184, 181, 179, 178, 181, 181, 182, 184, 184, 181, 176, 172, 180, + 174, 169, 169, 174, 174, 169, 165, 169, 175, 182, 170, 147, 145, 144, 127, 130, + 147, 146, 132, 150, 187, 193, 169, 176, 185, 193, 191, 183, 182, 188, 195, 184, + 182, 181, 184, 191, 197, 200, 201, 194, 191, 187, 184, 184, 187, 192, 196, 196, + 198, 199, 199, 196, 195, 194, 195, 191, 191, 190, 190, 190, 190, 189, 189, 183, + 182, 182, 183, 184, 183, 181, 178, 180, 177, 177, 181, 181, 177, 173, 173, 179, + 173, 164, 152, 139, 133, 141, 152, 163, 164, 167, 168, 165, 163, 162, 163, 159, + 159, 118, 149, 144, 145, 146, 146, 139, 135, 130, 127, 128, 130, 132, 132, 140, + 138, 134, 131, 128, 128, 129, 130, 134, 136, 137, 86, 84, 83, 84, 84, 88, + 93, 94, 103, 97, 99, 133, 124, 112, 93, 99, 85, 86, 89, 89, 88, 91, + 98, 105, 101, 99, 99, 101, 100, 96, 97, 101, 98, 97, 105, 119, 129, 124, + 115, 110, 139, 136, 134, 137, 125, 94, 80, 96, 127, 147, 153, 150, 154, 159, + 161, 168, 168, 171, 175, 177, 176, 177, 179, 181, 180, 182, 184, 183, 180, 178, + 177, 177, 183, 184, 186, 187, 186, 184, 182, 180, 181, 179, 178, 178, 181, 183, + 184, 184, 177, 178, 178, 179, 178, 178, 177, 178, 180, 181, 188, 176, 149, 139, + 118, 75, 86, 106, 111, 98, 99, 128, 160, 174, 185, 182, 176, 175, 181, 187, + 185, 178, 183, 180, 178, 183, 192, 198, 200, 199, 198, 196, 193, 188, 185, 185, + 188, 191, 189, 192, 195, 196, 196, 195, 196, 197, 190, 190, 190, 190, 190, 190, + 190, 190, 188, 186, 184, 184, 184, 182, 179, 177, 182, 177, 176, 178, 179, 175, + 172, 173, 171, 167, 161, 152, 140, 135, 142, 152, 162, 164, 167, 167, 164, 161, + 162, 164, 155, 151, 130, 153, 145, 153, 152, 156, 150, 145, 139, 135, 132, 130, + 128, 126, 136, 139, 142, 144, 144, 141, 138, 135, 133, 134, 135, 84, 84, 84, + 86, 90, 94, 98, 99, 87, 101, 111, 131, 107, 97, 87, 100, 98, 98, 98, + 91, 81, 80, 88, 97, 84, 79, 79, 87, 96, 99, 103, 107, 98, 101, 105, + 104, 106, 113, 117, 118, 130, 128, 122, 124, 126, 117, 115, 133, 125, 146, 153, + 149, 154, 161, 164, 171, 172, 175, 177, 179, 178, 178, 179, 180, 180, 182, 183, + 182, 181, 180, 181, 183, 182, 183, 184, 185, 186, 185, 184, 183, 183, 180, 177, + 176, 179, 182, 184, 185, 175, 186, 196, 194, 184, 179, 185, 195, 195, 182, 183, + 180, 164, 157, 116, 43, 52, 46, 54, 64, 53, 46, 82, 133, 178, 179, 180, + 184, 191, 195, 186, 173, 179, 182, 187, 193, 197, 200, 200, 200, 202, 202, 199, + 194, 188, 185, 186, 188, 188, 191, 195, 197, 197, 196, 196, 197, 190, 190, 190, + 190, 190, 190, 190, 190, 193, 191, 188, 186, 185, 183, 179, 177, 184, 179, 176, + 179, 180, 178, 177, 179, 173, 169, 162, 152, 139, 133, 140, 151, 157, 161, 167, + 168, 165, 161, 161, 162, 150, 143, 150, 157, 148, 159, 153, 158, 153, 151, 147, + 143, 140, 136, 131, 127, 129, 133, 140, 146, 150, 151, 150, 149, 136, 137, 137, + 96, 96, 99, 103, 109, 114, 119, 121, 129, 126, 111, 124, 118, 126, 104, 95, + 91, 90, 92, 96, 104, 109, 112, 114, 104, 91, 85, 92, 103, 106, 105, 103, + 94, 113, 128, 128, 129, 138, 143, 142, 134, 141, 138, 136, 144, 139, 129, 127, + 126, 148, 156, 151, 157, 165, 170, 175, 172, 176, 180, 181, 181, 179, 179, 180, + 179, 181, 182, 182, 182, 183, 186, 189, 184, 184, 183, 183, 183, 183, 183, 183, + 186, 182, 183, 180, 182, 180, 180, 176, 187, 184, 187, 188, 194, 191, 188, 183, + 182, 175, 185, 181, 159, 155, 121, 50, 89, 64, 49, 54, 60, 57, 58, 66, + 105, 147, 187, 190, 171, 162, 171, 181, 177, 186, 197, 203, 204, 201, 201, 202, + 203, 204, 202, 198, 191, 187, 187, 189, 194, 197, 200, 200, 199, 196, 195, 195, + 192, 190, 190, 190, 190, 190, 190, 190, 189, 187, 184, 182, 181, 180, 177, 176, + 182, 177, 174, 176, 178, 177, 178, 182, 182, 175, 165, 152, 137, 129, 136, 146, + 149, 158, 167, 171, 167, 162, 161, 161, 147, 140, 166, 160, 150, 161, 148, 153, + 146, 145, 144, 143, 141, 136, 132, 128, 125, 127, 128, 131, 135, 138, 144, 144, + 141, 141, 140, 127, 126, 126, 125, 126, 126, 126, 126, 131, 128, 125, 120, 120, + 121, 126, 127, 121, 120, 112, 109, 119, 123, 125, 135, 127, 121, 114, 109, 108, + 108, 111, 115, 137, 136, 133, 131, 127, 129, 138, 148, 143, 135, 132, 141, 142, + 132, 128, 128, 129, 150, 153, 144, 151, 162, 166, 167, 171, 176, 182, 183, 179, + 174, 175, 177, 177, 181, 185, 187, 186, 185, 185, 186, 184, 185, 186, 186, 187, + 187, 186, 186, 183, 182, 182, 179, 180, 180, 182, 182, 180, 185, 192, 192, 189, + 183, 179, 177, 186, 166, 167, 160, 157, 144, 99, 69, 116, 101, 76, 55, 43, + 40, 42, 48, 48, 83, 88, 143, 158, 180, 189, 183, 190, 195, 199, 196, 196, + 197, 197, 195, 207, 207, 206, 201, 192, 186, 191, 200, 191, 192, 193, 195, 196, + 197, 198, 198, 192, 193, 194, 194, 192, 192, 193, 195, 197, 189, 182, 184, 186, + 183, 180, 179, 181, 184, 178, 179, 184, 178, 172, 179, 177, 164, 171, 150, 145, + 129, 150, 145, 146, 152, 161, 159, 156, 169, 173, 158, 138, 156, 163, 148, 140, + 150, 153, 145, 149, 151, 149, 141, 129, 122, 122, 125, 125, 124, 125, 131, 135, + 135, 144, 152, 137, 160, 140, 129, 130, 129, 129, 128, 127, 126, 125, 120, 121, + 124, 125, 126, 127, 128, 126, 116, 120, 120, 119, 128, 129, 131, 140, 127, 133, + 139, 141, 139, 133, 129, 132, 133, 132, 136, 140, 144, 137, 133, 132, 132, 130, + 133, 141, 141, 135, 139, 147, 130, 149, 153, 145, 152, 162, 165, 167, 173, 177, + 183, 183, 179, 174, 175, 176, 176, 179, 183, 185, 185, 184, 185, 186, 187, 188, + 188, 188, 187, 186, 185, 184, 186, 185, 183, 182, 181, 182, 183, 183, 180, 183, + 187, 187, 184, 182, 181, 182, 188, 166, 166, 154, 153, 142, 122, 65, 97, 100, + 105, 107, 100, 84, 62, 51, 44, 48, 56, 142, 184, 195, 196, 197, 194, 200, + 202, 200, 198, 201, 201, 201, 201, 204, 206, 205, 198, 190, 191, 198, 191, 191, + 192, 192, 192, 192, 192, 192, 190, 192, 193, 192, 191, 190, 191, 193, 196, 189, + 184, 186, 188, 185, 181, 180, 174, 180, 177, 176, 178, 170, 168, 178, 176, 163, + 167, 144, 135, 123, 144, 146, 170, 169, 171, 165, 156, 159, 160, 148, 161, 154, + 157, 165, 158, 142, 141, 153, 148, 118, 97, 96, 102, 102, 105, 111, 125, 119, + 116, 120, 126, 131, 141, 147, 138, 156, 147, 129, 130, 131, 131, 128, 127, 125, + 124, 128, 128, 126, 124, 123, 122, 121, 117, 115, 108, 100, 105, 127, 134, 127, + 125, 123, 128, 131, 127, 119, 116, 120, 125, 141, 131, 125, 129, 137, 137, 134, + 132, 138, 140, 144, 142, 127, 110, 109, 118, 129, 148, 151, 144, 151, 160, 163, + 165, 172, 177, 181, 180, 178, 175, 176, 176, 175, 178, 182, 184, 184, 184, 185, + 186, 190, 190, 190, 189, 188, 186, 185, 184, 187, 186, 184, 182, 181, 181, 182, + 182, 181, 181, 182, 181, 180, 180, 183, 185, 183, 168, 174, 161, 161, 147, 122, + 48, 110, 101, 93, 90, 93, 97, 97, 98, 122, 96, 84, 143, 173, 173, 168, + 173, 190, 195, 198, 196, 194, 198, 199, 198, 195, 200, 207, 210, 204, 194, 192, + 195, 196, 196, 196, 195, 194, 193, 191, 190, 189, 190, 191, 190, 189, 188, 189, + 191, 194, 188, 186, 189, 190, 186, 181, 180, 179, 185, 183, 180, 178, 168, 167, + 179, 178, 169, 169, 145, 131, 126, 152, 158, 151, 150, 160, 167, 160, 156, 153, + 142, 151, 158, 160, 154, 152, 155, 150, 143, 126, 91, 74, 85, 96, 89, 87, + 95, 110, 111, 113, 123, 129, 130, 132, 133, 134, 139, 139, 129, 130, 133, 132, + 132, 128, 126, 125, 134, 127, 120, 112, 111, 113, 116, 115, 99, 112, 114, 108, + 107, 108, 118, 137, 125, 128, 126, 121, 117, 120, 125, 127, 123, 113, 104, 106, + 112, 113, 113, 114, 114, 121, 129, 132, 122, 110, 109, 114, 125, 144, 148, 144, + 151, 158, 160, 165, 171, 172, 177, 179, 179, 177, 179, 180, 176, 179, 182, 184, + 184, 185, 187, 188, 190, 191, 191, 190, 189, 188, 187, 186, 187, 186, 184, 182, + 180, 180, 181, 181, 183, 182, 181, 179, 179, 179, 181, 183, 179, 175, 177, 164, + 161, 157, 96, 69, 113, 105, 99, 97, 102, 106, 107, 106, 105, 102, 104, 138, + 165, 183, 197, 207, 185, 190, 193, 191, 189, 193, 195, 196, 196, 200, 206, 210, + 205, 195, 191, 193, 197, 197, 198, 197, 196, 193, 191, 190, 188, 190, 191, 190, + 188, 187, 188, 189, 191, 187, 187, 191, 192, 186, 181, 180, 187, 191, 185, 181, + 180, 171, 166, 176, 176, 172, 170, 149, 129, 132, 157, 168, 169, 160, 165, 169, + 157, 149, 146, 140, 142, 153, 152, 140, 139, 147, 142, 121, 104, 89, 85, 89, + 84, 75, 77, 89, 91, 98, 106, 112, 116, 117, 121, 123, 123, 120, 125, 132, + 133, 136, 134, 133, 132, 129, 128, 120, 115, 107, 105, 109, 115, 120, 121, 118, + 119, 112, 112, 124, 126, 122, 125, 111, 119, 124, 129, 135, 139, 131, 120, 126, + 125, 129, 133, 133, 126, 122, 121, 113, 114, 116, 119, 119, 117, 121, 125, 121, + 139, 145, 143, 151, 157, 159, 163, 166, 169, 174, 176, 179, 179, 181, 183, 177, + 179, 182, 183, 183, 184, 186, 188, 186, 187, 188, 188, 188, 188, 187, 187, 188, + 187, 185, 183, 182, 182, 183, 183, 185, 184, 182, 181, 180, 178, 176, 176, 177, + 181, 172, 157, 153, 160, 69, 118, 109, 105, 104, 106, 105, 102, 94, 88, 107, + 110, 132, 153, 170, 170, 174, 181, 190, 195, 196, 194, 193, 197, 199, 199, 201, + 201, 205, 206, 201, 193, 190, 192, 191, 192, 193, 193, 193, 191, 189, 187, 189, + 190, 191, 190, 188, 187, 188, 189, 188, 186, 187, 192, 192, 186, 182, 181, 189, + 187, 178, 176, 182, 175, 168, 173, 169, 170, 166, 149, 122, 129, 148, 157, 172, + 156, 150, 147, 139, 141, 152, 154, 154, 135, 129, 140, 138, 119, 111, 112, 99, + 96, 90, 73, 59, 61, 71, 80, 80, 87, 91, 87, 85, 88, 100, 110, 111, + 114, 119, 136, 136, 136, 136, 134, 133, 131, 130, 120, 117, 116, 118, 123, 124, + 121, 118, 127, 122, 114, 120, 141, 141, 122, 110, 120, 123, 122, 119, 125, 131, + 122, 109, 114, 114, 117, 117, 113, 108, 110, 117, 135, 128, 118, 111, 109, 110, + 112, 112, 117, 135, 141, 143, 151, 157, 157, 165, 166, 167, 171, 175, 177, 181, + 183, 184, 180, 182, 183, 184, 184, 184, 186, 188, 185, 186, 187, 188, 188, 188, + 188, 187, 191, 190, 188, 187, 186, 187, 188, 189, 187, 185, 183, 182, 180, 177, + 172, 169, 163, 175, 171, 157, 149, 135, 45, 111, 105, 99, 93, 88, 90, 95, + 101, 106, 109, 92, 124, 152, 182, 177, 177, 194, 194, 198, 198, 195, 194, 197, + 200, 199, 204, 201, 201, 201, 197, 191, 190, 193, 190, 191, 193, 195, 194, 193, + 191, 189, 189, 190, 191, 190, 187, 186, 187, 188, 188, 186, 189, 193, 193, 187, + 184, 185, 189, 185, 175, 176, 186, 183, 175, 179, 170, 173, 164, 149, 117, 128, + 139, 144, 142, 138, 143, 146, 143, 147, 153, 148, 132, 123, 118, 122, 122, 114, + 110, 108, 94, 93, 85, 71, 66, 72, 69, 60, 67, 81, 92, 90, 83, 80, + 82, 84, 93, 108, 114, 137, 137, 134, 133, 131, 131, 131, 131, 133, 130, 129, + 130, 132, 130, 124, 119, 106, 130, 141, 133, 120, 109, 116, 137, 136, 137, 128, + 115, 116, 124, 125, 114, 118, 113, 109, 105, 101, 102, 114, 127, 118, 116, 113, + 111, 114, 116, 115, 112, 114, 131, 139, 142, 150, 155, 158, 167, 169, 169, 171, + 173, 177, 181, 182, 183, 181, 183, 184, 183, 182, 182, 184, 186, 186, 187, 187, + 187, 187, 186, 186, 185, 189, 188, 187, 186, 187, 188, 189, 190, 188, 184, 181, + 179, 178, 175, 170, 167, 154, 164, 164, 147, 138, 97, 67, 88, 93, 96, 100, + 102, 104, 105, 107, 111, 124, 107, 138, 147, 176, 177, 179, 195, 192, 196, 198, + 193, 192, 195, 198, 197, 201, 198, 197, 198, 196, 191, 190, 194, 192, 194, 196, + 197, 197, 195, 192, 190, 188, 189, 189, 188, 185, 184, 184, 186, 190, 189, 191, + 195, 194, 189, 188, 190, 191, 188, 179, 179, 186, 182, 178, 184, 175, 177, 163, + 151, 117, 134, 143, 146, 154, 158, 167, 163, 151, 147, 138, 117, 104, 112, 108, + 97, 97, 107, 108, 95, 84, 83, 81, 81, 82, 81, 73, 63, 70, 80, 88, + 90, 88, 88, 82, 74, 83, 91, 90, 137, 136, 132, 131, 129, 130, 131, 132, + 133, 125, 121, 122, 127, 131, 129, 126, 139, 130, 112, 110, 127, 132, 125, 124, + 107, 116, 121, 116, 116, 122, 120, 108, 95, 91, 95, 98, 98, 95, 98, 105, + 105, 112, 121, 126, 126, 120, 109, 102, 110, 129, 137, 142, 151, 155, 158, 168, + 172, 172, 173, 173, 177, 180, 180, 180, 182, 183, 183, 182, 180, 180, 182, 184, + 188, 188, 188, 187, 186, 185, 183, 182, 185, 184, 183, 183, 184, 185, 187, 189, + 187, 183, 178, 175, 174, 173, 170, 168, 166, 159, 149, 122, 116, 72, 126, 106, + 98, 98, 94, 88, 82, 81, 87, 94, 98, 115, 164, 150, 172, 183, 185, 183, + 195, 199, 200, 194, 193, 195, 198, 197, 198, 195, 195, 197, 196, 192, 191, 194, + 190, 192, 194, 195, 193, 191, 187, 185, 186, 187, 188, 186, 184, 182, 182, 184, + 193, 192, 194, 197, 196, 191, 191, 194, 189, 189, 181, 177, 179, 171, 168, 178, + 172, 174, 156, 149, 117, 140, 148, 150, 146, 145, 144, 130, 121, 128, 130, 114, + 112, 94, 88, 94, 90, 74, 74, 87, 86, 79, 77, 77, 75, 72, 82, 95, + 90, 84, 73, 65, 72, 87, 94, 95, 84, 77, 66, 137, 138, 137, 137, 135, + 134, 132, 130, 131, 128, 125, 113, 98, 103, 108, 102, 96, 112, 118, 119, 119, + 113, 111, 118, 127, 120, 121, 125, 119, 101, 89, 90, 103, 97, 94, 90, 91, + 95, 102, 108, 102, 108, 115, 119, 121, 122, 127, 132, 118, 127, 138, 147, 152, + 156, 157, 160, 173, 173, 175, 176, 178, 182, 185, 189, 186, 185, 184, 183, 183, + 184, 185, 186, 185, 185, 186, 187, 188, 190, 191, 192, 184, 181, 187, 188, 179, + 181, 188, 187, 183, 186, 186, 180, 176, 174, 170, 165, 168, 133, 144, 124, 90, + 111, 123, 98, 111, 105, 101, 96, 93, 90, 92, 94, 84, 126, 154, 162, 172, + 177, 180, 186, 193, 196, 199, 198, 195, 194, 196, 199, 207, 202, 196, 194, 194, + 193, 190, 186, 187, 189, 192, 194, 194, 193, 191, 190, 194, 190, 186, 186, 189, + 191, 189, 187, 198, 197, 196, 197, 197, 194, 188, 183, 192, 189, 185, 179, 174, + 172, 173, 174, 174, 156, 165, 139, 95, 150, 150, 160, 145, 143, 142, 137, 126, + 116, 110, 107, 107, 102, 97, 92, 86, 79, 81, 88, 82, 79, 75, 75, 80, + 83, 82, 79, 86, 89, 92, 89, 77, 70, 79, 92, 80, 73, 68, 138, 138, + 137, 135, 133, 131, 129, 128, 129, 125, 124, 117, 107, 114, 119, 112, 104, 111, + 107, 105, 114, 117, 121, 132, 116, 118, 117, 115, 114, 115, 114, 108, 92, 97, + 104, 105, 102, 96, 93, 93, 104, 114, 130, 136, 130, 115, 99, 91, 130, 125, + 128, 137, 144, 145, 150, 156, 166, 169, 174, 176, 178, 180, 182, 184, 188, 187, + 187, 185, 186, 186, 188, 188, 187, 187, 188, 187, 187, 184, 183, 182, 193, 186, + 192, 192, 190, 190, 196, 188, 191, 187, 182, 173, 173, 172, 169, 161, 149, 145, + 144, 118, 105, 114, 111, 114, 110, 109, 108, 106, 102, 100, 98, 98, 97, 133, + 159, 166, 175, 181, 182, 188, 192, 194, 198, 199, 199, 198, 198, 199, 197, 196, + 195, 195, 195, 192, 189, 186, 190, 189, 188, 187, 187, 188, 190, 191, 192, 186, + 179, 177, 180, 188, 196, 200, 200, 200, 199, 195, 190, 187, 186, 186, 188, 183, + 177, 175, 175, 176, 176, 174, 191, 171, 170, 126, 102, 149, 145, 146, 136, 130, + 126, 120, 118, 125, 135, 142, 121, 112, 107, 104, 102, 94, 90, 93, 91, 90, + 88, 89, 92, 97, 101, 105, 110, 109, 110, 107, 96, 80, 73, 70, 80, 98, + 91, 138, 137, 137, 136, 135, 133, 131, 130, 132, 125, 125, 123, 118, 124, 129, + 121, 116, 113, 98, 91, 97, 97, 95, 101, 108, 119, 123, 116, 115, 120, 114, + 100, 108, 101, 89, 78, 78, 88, 108, 121, 132, 124, 112, 102, 104, 115, 132, + 146, 123, 117, 121, 133, 143, 148, 157, 166, 164, 169, 177, 180, 182, 182, 181, + 181, 188, 187, 189, 186, 188, 187, 189, 188, 185, 184, 189, 188, 190, 186, 186, + 185, 191, 182, 185, 188, 187, 190, 191, 180, 186, 185, 183, 180, 181, 176, 164, + 148, 145, 156, 134, 103, 121, 124, 103, 126, 121, 122, 124, 123, 123, 119, 115, + 113, 110, 142, 160, 167, 178, 185, 184, 188, 191, 192, 197, 200, 203, 202, 199, + 196, 187, 191, 195, 196, 195, 191, 188, 187, 190, 190, 188, 187, 187, 188, 189, + 189, 182, 185, 189, 192, 193, 195, 197, 198, 204, 205, 203, 197, 190, 188, 191, + 196, 189, 181, 174, 173, 178, 180, 177, 173, 171, 162, 160, 108, 124, 160, 156, + 149, 143, 135, 126, 113, 100, 91, 87, 84, 112, 106, 102, 107, 111, 107, 103, + 104, 105, 111, 113, 114, 113, 116, 119, 125, 100, 97, 98, 104, 105, 97, 88, + 78, 75, 103, 98, 137, 135, 136, 136, 136, 136, 135, 133, 136, 128, 128, 129, + 125, 127, 130, 120, 126, 125, 115, 107, 109, 103, 95, 98, 83, 91, 97, 100, + 107, 117, 123, 117, 119, 115, 111, 108, 105, 101, 95, 93, 102, 111, 122, 128, + 128, 119, 108, 101, 104, 113, 122, 123, 130, 142, 152, 154, 161, 166, 175, 179, + 181, 179, 181, 181, 187, 187, 187, 187, 187, 187, 187, 188, 184, 185, 186, 186, + 186, 186, 185, 185, 191, 184, 188, 192, 188, 190, 192, 184, 198, 193, 183, 175, + 174, 180, 181, 177, 158, 153, 123, 96, 125, 135, 111, 126, 128, 130, 132, 134, + 133, 130, 126, 125, 122, 145, 160, 168, 181, 186, 184, 188, 192, 192, 195, 200, + 204, 202, 196, 190, 187, 191, 195, 196, 192, 189, 189, 190, 189, 191, 193, 194, + 194, 192, 190, 188, 183, 189, 196, 199, 197, 194, 193, 194, 205, 204, 201, 197, + 194, 193, 195, 197, 191, 186, 181, 178, 179, 179, 177, 177, 171, 172, 168, 103, + 144, 155, 147, 131, 123, 122, 124, 125, 123, 119, 116, 112, 98, 94, 93, 98, + 103, 101, 102, 106, 107, 113, 117, 119, 119, 115, 112, 109, 119, 113, 109, 112, + 113, 110, 102, 93, 84, 94, 93, 132, 132, 133, 134, 136, 136, 138, 136, 137, + 128, 130, 131, 127, 128, 129, 120, 107, 114, 114, 112, 117, 114, 111, 118, 128, + 114, 102, 95, 89, 84, 88, 96, 109, 113, 122, 135, 142, 133, 112, 94, 125, + 122, 116, 113, 114, 119, 124, 128, 127, 146, 148, 127, 122, 140, 151, 144, 157, + 161, 167, 171, 173, 175, 178, 180, 186, 186, 186, 187, 187, 186, 186, 186, 188, + 187, 184, 182, 181, 180, 179, 180, 183, 180, 187, 189, 181, 183, 188, 185, 186, + 195, 200, 196, 190, 185, 179, 174, 156, 140, 133, 120, 128, 142, 132, 133, 131, + 131, 132, 132, 132, 131, 130, 129, 130, 149, 162, 172, 187, 191, 191, 194, 196, + 194, 195, 199, 201, 199, 192, 187, 194, 196, 196, 193, 189, 188, 190, 194, 193, + 193, 193, 193, 193, 192, 192, 192, 195, 193, 189, 184, 181, 185, 194, 202, 206, + 201, 197, 196, 198, 197, 191, 185, 185, 186, 185, 181, 178, 175, 178, 183, 170, + 176, 166, 101, 151, 152, 154, 142, 155, 146, 136, 124, 113, 106, 102, 97, 107, + 105, 103, 103, 101, 98, 102, 108, 120, 117, 115, 115, 119, 118, 113, 108, 114, + 115, 118, 119, 119, 118, 114, 107, 96, 90, 82, 129, 128, 130, 132, 133, 133, + 134, 135, 134, 125, 128, 134, 128, 128, 132, 127, 106, 109, 104, 98, 100, 99, + 98, 107, 106, 100, 105, 119, 123, 115, 114, 123, 116, 108, 104, 108, 121, 127, + 125, 120, 98, 103, 112, 125, 137, 145, 149, 149, 144, 159, 153, 124, 116, 135, + 149, 144, 157, 158, 163, 167, 171, 174, 179, 183, 185, 186, 186, 187, 187, 186, + 186, 185, 184, 184, 183, 183, 183, 184, 184, 186, 179, 177, 186, 185, 179, 179, + 190, 187, 181, 192, 203, 195, 181, 162, 149, 137, 143, 133, 157, 154, 136, 144, + 148, 147, 139, 138, 138, 137, 136, 137, 137, 137, 136, 154, 167, 179, 194, 195, + 195, 202, 199, 199, 199, 197, 198, 196, 192, 189, 201, 199, 195, 191, 188, 189, + 192, 195, 197, 194, 189, 186, 186, 190, 196, 200, 193, 192, 190, 189, 190, 194, + 199, 204, 212, 205, 200, 201, 205, 202, 191, 180, 175, 180, 183, 181, 176, 174, + 182, 188, 164, 166, 147, 92, 141, 144, 160, 158, 152, 150, 149, 147, 146, 141, + 136, 131, 121, 119, 120, 121, 118, 117, 123, 132, 112, 102, 92, 89, 95, 101, + 103, 102, 108, 119, 129, 134, 136, 134, 129, 122, 121, 118, 102, 132, 131, 131, + 132, 133, 133, 134, 133, 134, 126, 131, 137, 131, 130, 137, 135, 134, 133, 120, + 109, 110, 104, 98, 102, 113, 118, 131, 141, 142, 133, 123, 117, 133, 128, 123, + 117, 115, 108, 100, 93, 100, 103, 108, 118, 127, 132, 132, 131, 133, 135, 130, + 119, 118, 127, 135, 135, 148, 152, 157, 163, 168, 171, 176, 179, 179, 180, 181, + 182, 182, 181, 180, 180, 174, 175, 177, 178, 177, 175, 171, 169, 173, 167, 172, + 173, 170, 174, 184, 181, 184, 179, 166, 147, 138, 141, 150, 155, 149, 142, 164, + 161, 148, 151, 150, 153, 150, 149, 149, 150, 149, 149, 148, 147, 140, 156, 171, + 183, 195, 195, 195, 204, 202, 201, 201, 199, 195, 195, 196, 198, 202, 198, 192, + 189, 189, 191, 193, 194, 194, 193, 191, 191, 192, 194, 198, 200, 188, 191, 197, + 203, 207, 207, 203, 200, 206, 203, 200, 202, 204, 201, 193, 186, 173, 176, 181, + 180, 178, 178, 184, 187, 182, 172, 143, 101, 133, 129, 143, 135, 132, 135, 139, + 143, 144, 140, 129, 122, 129, 127, 130, 136, 140, 142, 147, 151, 145, 135, 129, + 126, 129, 134, 140, 142, 151, 158, 161, 158, 154, 147, 136, 125, 148, 155, 140, + 139, 136, 137, 135, 136, 135, 134, 134, 138, 130, 135, 140, 132, 129, 138, 138, + 135, 132, 122, 121, 129, 126, 115, 115, 121, 129, 131, 124, 126, 135, 138, 132, + 138, 139, 137, 132, 125, 122, 121, 123, 122, 120, 119, 124, 132, 139, 143, 143, + 149, 139, 137, 148, 154, 149, 144, 144, 136, 140, 148, 155, 160, 165, 167, 170, + 175, 176, 178, 179, 179, 178, 176, 176, 172, 173, 173, 170, 162, 151, 139, 132, + 135, 127, 127, 130, 131, 137, 146, 139, 129, 137, 146, 153, 161, 168, 169, 165, + 171, 158, 154, 147, 154, 161, 145, 151, 154, 154, 155, 156, 154, 153, 151, 148, + 140, 158, 174, 184, 194, 191, 191, 203, 203, 203, 202, 197, 194, 194, 199, 204, + 201, 196, 191, 189, 192, 195, 195, 193, 186, 191, 198, 204, 205, 203, 198, 195, + 197, 195, 193, 195, 200, 204, 205, 204, 190, 190, 191, 193, 194, 193, 191, 189, + 181, 181, 181, 181, 181, 182, 182, 181, 177, 162, 137, 118, 146, 144, 150, 138, + 148, 144, 138, 137, 138, 140, 141, 140, 139, 134, 134, 142, 149, 148, 147, 144, + 144, 143, 145, 144, 143, 142, 142, 146, 150, 152, 151, 147, 148, 151, 145, 137, + 134, 142, 138, 138, 129, 128, 130, 136, 134, 133, 133, 139, 136, 135, 138, 140, + 135, 138, 138, 136, 135, 134, 130, 127, 126, 129, 133, 137, 138, 135, 134, 135, + 140, 142, 144, 141, 144, 148, 150, 148, 144, 138, 134, 127, 135, 134, 130, 136, + 139, 145, 157, 148, 149, 151, 153, 154, 155, 155, 153, 160, 154, 147, 142, 144, + 152, 161, 168, 172, 172, 170, 165, 161, 163, 171, 179, 168, 161, 146, 130, 126, + 133, 142, 148, 161, 164, 167, 167, 164, 161, 164, 165, 170, 170, 170, 171, 169, + 169, 170, 170, 166, 166, 166, 166, 165, 164, 162, 161, 163, 158, 156, 157, 157, + 154, 156, 158, 151, 161, 173, 180, 188, 200, 203, 201, 199, 195, 195, 200, 200, + 196, 194, 201, 205, 198, 189, 187, 192, 195, 193, 188, 191, 197, 199, 195, 194, + 197, 195, 189, 187, 196, 203, 202, 196, 194, 200, 207, 201, 194, 188, 191, 198, + 200, 194, 187, 180, 180, 180, 182, 183, 181, 179, 175, 165, 172, 101, 150, 140, + 142, 152, 155, 153, 151, 150, 148, 147, 144, 143, 140, 145, 143, 141, 141, 143, + 148, 154, 156, 150, 149, 150, 150, 150, 149, 147, 147, 149, 150, 158, 162, 158, + 157, 147, 125, 122, 130, 153, 136, 134, 136, 140, 139, 135, 134, 138, 139, 136, + 137, 139, 139, 136, 136, 137, 132, 134, 136, 138, 136, 136, 138, 139, 143, 143, + 143, 143, 144, 148, 150, 150, 145, 146, 148, 149, 148, 147, 148, 147, 138, 149, + 151, 149, 152, 148, 146, 154, 154, 154, 154, 155, 156, 158, 160, 161, 159, 159, + 159, 159, 159, 159, 159, 159, 150, 152, 153, 149, 145, 145, 150, 154, 143, 152, + 161, 166, 172, 176, 174, 169, 171, 172, 173, 173, 170, 170, 172, 173, 173, 173, + 172, 171, 170, 169, 168, 168, 168, 167, 166, 165, 163, 162, 159, 159, 166, 163, + 162, 165, 162, 158, 158, 160, 157, 157, 169, 186, 198, 200, 203, 208, 199, 195, + 194, 197, 197, 192, 192, 198, 199, 196, 190, 187, 189, 193, 196, 198, 195, 199, + 200, 197, 197, 200, 199, 194, 191, 195, 198, 199, 198, 198, 201, 205, 203, 197, + 191, 190, 192, 191, 185, 179, 179, 179, 180, 179, 179, 177, 173, 171, 171, 159, + 112, 149, 145, 148, 154, 149, 153, 153, 151, 152, 154, 155, 155, 155, 152, 150, + 145, 142, 142, 144, 146, 148, 152, 150, 152, 149, 150, 149, 153, 153, 168, 157, + 153, 144, 141, 149, 158, 148, 107, 136, 159, 128, 129, 135, 139, 135, 129, 130, + 137, 138, 135, 135, 139, 141, 138, 139, 141, 133, 137, 142, 145, 143, 140, 140, + 139, 142, 143, 146, 147, 148, 150, 151, 152, 144, 143, 142, 142, 144, 147, 149, + 151, 145, 156, 157, 156, 158, 152, 147, 153, 156, 155, 154, 153, 155, 157, 160, + 162, 162, 164, 167, 170, 170, 167, 164, 162, 173, 176, 179, 178, 175, 172, 173, + 174, 173, 178, 180, 178, 177, 176, 172, 166, 180, 179, 175, 175, 177, 179, 178, + 178, 181, 180, 178, 176, 174, 173, 169, 169, 177, 175, 172, 170, 166, 165, 164, + 164, 166, 164, 166, 170, 168, 163, 161, 162, 162, 153, 163, 187, 200, 195, 197, + 208, 199, 195, 193, 194, 194, 191, 192, 196, 194, 194, 192, 188, 185, 188, 195, + 201, 196, 199, 198, 195, 196, 200, 200, 199, 199, 198, 197, 197, 198, 199, 200, + 199, 205, 202, 197, 194, 192, 188, 184, 181, 181, 179, 180, 181, 181, 180, 176, + 172, 166, 135, 126, 145, 149, 155, 160, 148, 155, 155, 154, 154, 156, 158, 160, + 161, 160, 158, 154, 151, 150, 150, 149, 150, 157, 157, 158, 154, 152, 152, 158, + 161, 153, 152, 161, 162, 155, 152, 150, 135, 142, 104, 137, 124, 125, 129, 134, + 134, 131, 132, 136, 136, 133, 135, 140, 143, 141, 142, 145, 139, 142, 145, 145, + 144, 140, 138, 137, 138, 140, 143, 147, 148, 149, 149, 149, 146, 145, 143, 143, + 146, 149, 152, 154, 151, 159, 157, 154, 159, 158, 156, 165, 159, 159, 160, 160, + 161, 163, 165, 166, 172, 171, 170, 170, 172, 174, 176, 178, 170, 173, 175, 175, + 172, 170, 169, 169, 180, 180, 177, 171, 172, 178, 182, 182, 187, 182, 177, 177, + 179, 181, 180, 179, 183, 181, 180, 179, 177, 176, 172, 172, 182, 180, 177, 174, + 170, 171, 172, 173, 166, 164, 165, 169, 167, 163, 161, 163, 166, 157, 161, 178, + 189, 190, 193, 201, 201, 197, 195, 192, 192, 190, 191, 193, 194, 195, 193, 190, + 187, 188, 192, 195, 194, 194, 192, 191, 192, 195, 198, 198, 203, 201, 199, 197, + 196, 196, 195, 195, 199, 199, 197, 195, 191, 188, 187, 187, 179, 178, 178, 178, + 180, 179, 175, 173, 160, 117, 142, 142, 148, 155, 157, 145, 159, 158, 156, 154, + 153, 154, 155, 157, 161, 161, 159, 159, 159, 159, 158, 158, 159, 161, 161, 157, + 152, 152, 155, 160, 161, 157, 159, 157, 146, 145, 148, 139, 135, 127, 120, 133, + 128, 127, 133, 138, 140, 142, 144, 140, 137, 138, 143, 144, 141, 140, 143, 142, + 143, 143, 142, 140, 139, 139, 140, 137, 139, 143, 145, 147, 147, 146, 147, 153, + 152, 152, 153, 153, 154, 156, 157, 156, 163, 160, 159, 167, 166, 164, 171, 163, + 165, 168, 171, 172, 172, 171, 170, 176, 174, 171, 170, 171, 174, 178, 181, 180, + 181, 181, 180, 179, 178, 178, 179, 167, 173, 178, 180, 183, 186, 184, 181, 189, + 184, 179, 176, 177, 179, 177, 174, 175, 175, 175, 173, 172, 172, 171, 171, 176, + 174, 170, 168, 168, 169, 170, 172, 169, 165, 162, 164, 165, 162, 164, 168, 165, + 164, 163, 166, 177, 190, 197, 198, 200, 200, 198, 194, 193, 193, 192, 192, 192, + 191, 189, 190, 192, 193, 190, 189, 193, 191, 189, 189, 190, 192, 194, 197, 196, + 199, 200, 198, 194, 192, 195, 198, 189, 191, 191, 189, 186, 184, 184, 186, 179, + 178, 176, 173, 173, 170, 166, 164, 161, 121, 160, 145, 147, 147, 149, 143, 160, + 161, 159, 156, 153, 152, 153, 155, 155, 156, 155, 156, 157, 158, 157, 157, 152, + 154, 156, 156, 153, 151, 153, 154, 160, 154, 157, 157, 148, 147, 151, 145, 138, + 131, 162, 140, 132, 128, 134, 141, 144, 146, 146, 145, 142, 142, 144, 142, 137, + 134, 136, 139, 139, 139, 137, 137, 138, 141, 145, 140, 142, 145, 147, 148, 148, + 147, 147, 153, 153, 154, 155, 155, 155, 155, 155, 152, 161, 162, 164, 171, 166, + 158, 161, 160, 163, 167, 171, 172, 171, 168, 166, 173, 173, 173, 173, 172, 171, + 170, 169, 172, 171, 169, 168, 168, 170, 171, 172, 176, 180, 182, 180, 178, 177, + 174, 168, 186, 183, 179, 177, 177, 175, 174, 173, 174, 173, 173, 173, 174, 174, + 175, 175, 171, 173, 170, 169, 169, 171, 171, 172, 173, 168, 164, 166, 167, 165, + 168, 172, 166, 170, 169, 162, 169, 186, 197, 197, 197, 198, 197, 194, 193, 194, + 191, 188, 185, 184, 184, 188, 193, 196, 193, 191, 196, 192, 189, 191, 192, 191, + 193, 197, 187, 192, 197, 197, 194, 194, 197, 200, 190, 190, 190, 188, 185, 182, + 182, 183, 186, 185, 180, 175, 170, 164, 158, 154, 150, 126, 161, 149, 153, 152, + 157, 157, 157, 160, 162, 161, 157, 156, 157, 160, 157, 157, 155, 155, 155, 156, + 155, 155, 149, 150, 152, 155, 156, 156, 155, 155, 148, 143, 151, 159, 154, 150, + 150, 139, 134, 126, 139, 137, 133, 132, 136, 138, 136, 138, 142, 142, 140, 141, + 143, 141, 135, 132, 133, 138, 138, 140, 137, 138, 138, 141, 145, 144, 145, 145, + 146, 146, 146, 146, 146, 148, 148, 148, 149, 151, 152, 152, 152, 150, 157, 159, + 160, 167, 163, 154, 157, 158, 160, 163, 165, 167, 166, 165, 164, 171, 172, 173, + 173, 172, 170, 168, 167, 173, 172, 171, 172, 174, 175, 175, 175, 172, 173, 171, + 167, 170, 178, 183, 184, 181, 181, 182, 179, 177, 176, 176, 175, 176, 176, 176, + 176, 176, 177, 177, 177, 175, 175, 175, 175, 173, 173, 173, 173, 170, 166, 166, + 170, 169, 167, 168, 172, 171, 171, 170, 167, 168, 171, 182, 191, 190, 195, 197, + 193, 192, 193, 191, 184, 183, 182, 183, 184, 185, 188, 193, 197, 197, 192, 191, + 194, 194, 191, 192, 197, 188, 190, 194, 196, 197, 197, 195, 194, 192, 191, 189, + 188, 187, 185, 183, 183, 184, 181, 175, 169, 163, 156, 152, 148, 144, 139, 152, + 148, 157, 156, 160, 165, 155, 160, 163, 164, 160, 158, 159, 161, 161, 160, 158, + 157, 157, 158, 158, 156, 152, 147, 144, 145, 149, 150, 148, 144, 155, 137, 130, + 130, 127, 132, 142, 140, 135, 57, 89, 136, 136, 139, 140, 136, 131, 133, 137, + 135, 134, 136, 140, 140, 136, 134, 136, 142, 143, 142, 141, 138, 138, 138, 140, + 144, 144, 144, 144, 144, 144, 144, 144, 150, 150, 149, 149, 152, 154, 156, 158, + 158, 161, 157, 155, 164, 165, 163, 169, 164, 164, 166, 167, 168, 169, 170, 170, + 174, 173, 171, 170, 170, 173, 175, 177, 169, 169, 170, 172, 175, 175, 174, 173, + 176, 179, 179, 176, 176, 179, 179, 176, 176, 179, 182, 182, 179, 176, 178, 180, + 175, 174, 174, 174, 174, 172, 172, 172, 176, 177, 177, 176, 174, 173, 172, 171, + 166, 164, 167, 171, 171, 167, 166, 169, 178, 171, 170, 176, 169, 156, 163, 180, + 187, 192, 195, 192, 192, 193, 191, 182, 183, 184, 187, 181, 177, 178, 190, 198, + 198, 191, 193, 194, 194, 189, 190, 195, 196, 193, 193, 196, 200, 198, 191, 184, + 187, 185, 183, 183, 184, 184, 182, 182, 170, 168, 163, 158, 153, 149, 144, 140, + 154, 156, 151, 149, 156, 151, 149, 152, 154, 159, 164, 164, 160, 156, 156, 158, + 159, 158, 156, 156, 157, 159, 160, 159, 151, 142, 133, 131, 134, 135, 131, 126, + 131, 120, 126, 137, 132, 124, 116, 102, 117, 84, 109, 134, 134, 136, 136, 137, + 135, 130, 123, 126, 128, 132, 135, 137, 137, 136, 136, 140, 141, 141, 142, 141, + 141, 142, 142, 137, 142, 146, 147, 144, 144, 147, 150, 148, 148, 149, 150, 150, + 151, 154, 154, 154, 152, 151, 150, 152, 155, 161, 164, 158, 162, 166, 168, 167, + 166, 166, 167, 166, 167, 167, 168, 170, 171, 172, 172, 168, 169, 170, 170, 170, + 172, 176, 179, 179, 175, 171, 172, 176, 178, 176, 173, 179, 170, 174, 178, 170, + 168, 175, 176, 180, 176, 172, 170, 169, 169, 171, 173, 171, 172, 173, 173, 172, + 170, 166, 164, 165, 163, 165, 170, 172, 169, 168, 172, 172, 172, 171, 172, 175, + 172, 168, 163, 182, 177, 175, 176, 182, 186, 186, 183, 180, 179, 180, 169, 166, + 181, 189, 171, 184, 191, 191, 187, 190, 186, 187, 196, 195, 194, 192, 190, 188, + 187, 187, 187, 187, 185, 183, 181, 179, 177, 175, 174, 172, 166, 155, 147, 146, + 149, 157, 162, 161, 161, 161, 157, 155, 155, 160, 164, 160, 158, 156, 160, 164, + 164, 157, 151, 155, 156, 157, 160, 160, 153, 140, 128, 114, 115, 115, 116, 120, + 125, 122, 116, 120, 118, 120, 126, 134, 134, 127, 117, 107, 93, 88, 138, 135, + 133, 132, 133, 134, 133, 130, 140, 138, 135, 131, 133, 134, 136, 139, 141, 142, + 143, 144, 143, 144, 144, 144, 141, 141, 142, 144, 146, 146, 146, 145, 148, 148, + 149, 150, 151, 151, 154, 154, 152, 152, 153, 154, 155, 157, 161, 162, 158, 161, + 165, 166, 167, 167, 168, 169, 170, 170, 170, 170, 170, 171, 171, 171, 170, 171, + 172, 172, 171, 172, 174, 176, 177, 174, 170, 172, 175, 177, 175, 172, 180, 169, + 172, 179, 175, 173, 174, 168, 172, 171, 168, 166, 166, 168, 170, 172, 173, 175, + 174, 173, 172, 171, 169, 169, 169, 166, 168, 172, 172, 169, 167, 170, 174, 176, + 177, 179, 181, 181, 177, 175, 174, 165, 155, 153, 158, 166, 172, 175, 179, 173, + 169, 161, 159, 175, 186, 177, 185, 193, 193, 190, 194, 190, 185, 190, 188, 188, + 188, 189, 189, 190, 190, 190, 185, 181, 178, 180, 186, 188, 185, 181, 162, 161, + 156, 152, 151, 155, 160, 162, 164, 165, 164, 161, 157, 154, 155, 157, 161, 159, + 158, 162, 167, 168, 164, 159, 163, 161, 157, 156, 157, 158, 157, 154, 131, 126, + 119, 114, 116, 123, 126, 124, 136, 135, 137, 140, 141, 132, 116, 102, 116, 118, + 116, 133, 129, 128, 129, 130, 130, 130, 129, 138, 135, 132, 129, 129, 130, 131, + 135, 138, 140, 141, 142, 143, 144, 145, 145, 146, 143, 141, 144, 148, 148, 147, + 141, 148, 148, 148, 149, 151, 152, 152, 152, 151, 153, 155, 157, 159, 159, 159, + 158, 159, 161, 164, 165, 165, 166, 169, 171, 171, 171, 170, 169, 168, 168, 169, + 169, 171, 173, 175, 174, 173, 171, 172, 173, 176, 173, 171, 172, 175, 176, 174, + 171, 179, 167, 170, 178, 177, 175, 172, 162, 167, 165, 163, 163, 164, 165, 168, + 171, 175, 176, 174, 172, 169, 170, 171, 171, 173, 170, 171, 173, 172, 168, 167, + 170, 168, 173, 177, 179, 179, 178, 178, 179, 181, 177, 174, 173, 175, 174, 171, + 165, 173, 161, 159, 159, 156, 161, 170, 168, 167, 175, 177, 181, 192, 191, 184, + 186, 183, 184, 186, 187, 188, 188, 187, 186, 184, 176, 170, 171, 176, 177, 170, + 163, 156, 157, 158, 161, 163, 164, 166, 166, 166, 168, 169, 167, 164, 161, 157, + 157, 157, 156, 154, 158, 163, 166, 164, 162, 165, 164, 160, 158, 158, 161, 166, + 167, 162, 157, 149, 142, 142, 147, 149, 148, 145, 137, 128, 123, 122, 120, 115, + 110, 120, 129, 125, 116, 114, 116, 121, 124, 121, 119, 118, 119, 121, 125, 128, + 129, 130, 128, 128, 135, 136, 139, 140, 141, 142, 143, 143, 147, 146, 145, 147, + 149, 149, 147, 143, 149, 148, 149, 149, 151, 152, 153, 153, 153, 154, 156, 158, + 160, 160, 160, 159, 162, 163, 164, 164, 164, 165, 167, 170, 167, 167, 165, 165, + 165, 165, 166, 167, 170, 172, 175, 175, 174, 172, 172, 172, 175, 173, 172, 173, + 175, 176, 174, 171, 177, 169, 172, 177, 173, 173, 172, 161, 164, 163, 162, 161, + 161, 163, 166, 167, 172, 174, 173, 173, 170, 170, 170, 169, 174, 171, 170, 173, + 173, 169, 169, 171, 167, 173, 178, 177, 175, 175, 177, 180, 176, 177, 180, 183, + 182, 178, 170, 164, 172, 161, 165, 171, 164, 159, 160, 157, 160, 165, 166, 171, + 185, 184, 177, 178, 182, 183, 184, 183, 182, 179, 175, 173, 179, 173, 167, 165, + 165, 163, 157, 152, 159, 163, 166, 169, 171, 172, 172, 173, 169, 170, 171, 169, + 168, 166, 166, 164, 158, 156, 154, 156, 160, 163, 163, 163, 164, 168, 170, 170, + 167, 165, 165, 163, 157, 158, 160, 156, 155, 153, 150, 143, 143, 132, 121, 112, + 112, 114, 116, 114, 109, 115, 117, 108, 101, 102, 107, 110, 108, 109, 114, 113, + 115, 122, 127, 130, 131, 131, 132, 136, 136, 138, 139, 140, 140, 143, 143, 147, + 150, 152, 153, 150, 149, 149, 149, 149, 148, 149, 150, 151, 151, 153, 153, 155, + 154, 156, 156, 157, 158, 160, 161, 164, 165, 166, 165, 163, 163, 165, 167, 165, + 164, 163, 163, 164, 166, 168, 170, 167, 169, 172, 173, 172, 171, 171, 172, 173, + 173, 173, 174, 175, 175, 173, 171, 174, 168, 173, 173, 166, 167, 170, 164, 165, + 163, 162, 161, 161, 160, 161, 164, 169, 171, 173, 175, 175, 173, 169, 167, 172, + 169, 169, 172, 173, 171, 170, 175, 176, 179, 182, 181, 178, 177, 179, 182, 176, + 174, 171, 171, 174, 178, 181, 183, 196, 185, 191, 200, 192, 183, 184, 184, 176, + 177, 172, 169, 177, 174, 165, 167, 174, 175, 175, 174, 171, 167, 163, 161, 164, + 165, 166, 166, 166, 165, 167, 170, 168, 169, 170, 172, 175, 176, 175, 176, 171, + 170, 169, 167, 166, 166, 166, 167, 165, 163, 160, 160, 162, 164, 165, 165, 165, + 170, 174, 175, 172, 167, 165, 163, 151, 155, 161, 160, 159, 156, 151, 143, 148, + 145, 143, 139, 136, 126, 117, 108, 106, 105, 113, 114, 102, 96, 99, 103, 104, + 111, 120, 121, 122, 122, 125, 127, 132, 137, 142, 140, 141, 141, 142, 143, 143, + 146, 146, 146, 151, 156, 156, 152, 149, 152, 154, 150, 149, 149, 150, 151, 152, + 153, 154, 155, 155, 156, 155, 156, 157, 160, 161, 163, 165, 166, 166, 164, 164, + 165, 166, 167, 166, 165, 165, 166, 169, 172, 172, 166, 167, 170, 170, 170, 170, + 171, 172, 171, 172, 173, 174, 174, 173, 172, 171, 169, 168, 174, 171, 162, 164, + 169, 162, 163, 163, 162, 162, 160, 160, 160, 163, 167, 171, 175, 178, 178, 175, + 169, 166, 169, 166, 166, 170, 171, 171, 171, 177, 179, 180, 181, 180, 178, 177, + 177, 178, 180, 180, 180, 180, 180, 179, 177, 178, 172, 161, 164, 169, 162, 160, + 167, 171, 176, 178, 171, 165, 173, 168, 165, 169, 173, 174, 175, 174, 173, 171, + 169, 168, 162, 166, 171, 171, 169, 170, 175, 179, 172, 172, 170, 171, 172, 173, + 173, 174, 174, 171, 168, 165, 164, 163, 161, 160, 165, 164, 161, 160, 160, 161, + 161, 162, 162, 163, 163, 164, 163, 163, 163, 165, 161, 165, 168, 164, 164, 164, + 166, 162, 163, 160, 158, 153, 149, 141, 134, 127, 125, 110, 107, 104, 92, 89, + 96, 99, 96, 101, 110, 118, 118, 119, 121, 126, 130, 136, 140, 141, 143, 143, + 143, 143, 144, 146, 146, 147, 151, 153, 153, 154, 153, 155, 152, 150, 148, 149, + 149, 151, 152, 154, 154, 153, 153, 156, 157, 157, 157, 157, 157, 159, 162, 165, + 167, 166, 166, 167, 168, 170, 169, 167, 165, 166, 168, 171, 171, 168, 168, 169, + 168, 166, 166, 168, 170, 167, 169, 172, 173, 172, 170, 169, 168, 167, 166, 171, + 170, 162, 166, 167, 155, 160, 160, 158, 159, 159, 160, 161, 163, 165, 168, 171, + 173, 173, 171, 167, 165, 167, 163, 164, 167, 167, 166, 169, 175, 175, 174, 172, + 171, 172, 172, 171, 170, 168, 172, 178, 179, 176, 168, 159, 155, 180, 174, 177, + 178, 171, 171, 180, 181, 168, 174, 170, 167, 173, 171, 170, 178, 175, 175, 175, + 175, 175, 175, 175, 175, 169, 171, 173, 172, 171, 171, 173, 174, 171, 170, 171, + 170, 170, 170, 171, 173, 174, 170, 168, 167, 167, 165, 161, 158, 161, 161, 160, + 160, 159, 159, 159, 160, 160, 159, 157, 158, 161, 163, 162, 162, 159, 164, 166, + 159, 159, 160, 166, 164, 172, 165, 160, 152, 151, 148, 150, 147, 136, 127, 117, + 77, 71, 77, 88, 90, 80, 78, 82, 98, 103, 110, 117, 122, 126, 126, 127, + 138, 140, 139, 139, 139, 140, 140, 141, 148, 146, 145, 149, 154, 155, 152, 148, + 150, 148, 150, 151, 152, 155, 156, 156, 153, 155, 158, 160, 160, 158, 155, 153, + 153, 157, 162, 165, 166, 166, 167, 168, 171, 169, 166, 164, 164, 165, 168, 169, + 171, 170, 169, 166, 164, 163, 165, 167, 164, 167, 170, 171, 170, 168, 167, 166, + 168, 165, 169, 171, 169, 171, 166, 148, 157, 156, 157, 157, 159, 160, 162, 164, + 163, 166, 167, 166, 168, 165, 164, 163, 168, 163, 163, 166, 167, 164, 167, 173, + 174, 171, 167, 167, 170, 172, 170, 168, 172, 172, 171, 170, 169, 170, 173, 177, + 175, 177, 183, 183, 173, 175, 177, 171, 177, 185, 181, 178, 180, 176, 173, 181, + 174, 173, 173, 172, 172, 172, 172, 173, 176, 174, 173, 176, 179, 182, 181, 179, + 172, 172, 172, 173, 173, 171, 171, 170, 170, 168, 170, 172, 174, 172, 167, 162, + 164, 164, 165, 164, 164, 163, 164, 165, 166, 166, 166, 170, 174, 173, 166, 163, + 161, 167, 171, 166, 165, 165, 168, 166, 166, 166, 167, 164, 160, 152, 144, 138, + 130, 143, 145, 86, 83, 84, 85, 84, 86, 72, 45, 91, 100, 104, 104, 104, + 107, 111, 113, 116, 129, 129, 129, 134, 132, 133, 143, 135, 144, 152, 153, 149, + 147, 147, 150, 151, 147, 148, 155, 156, 154, 156, 160, 161, 163, 166, 166, 163, + 161, 160, 158, 161, 160, 158, 159, 160, 160, 158, 157, 163, 164, 165, 167, 168, + 170, 173, 173, 167, 166, 164, 163, 163, 164, 165, 166, 166, 168, 167, 163, 163, + 168, 170, 168, 169, 175, 179, 175, 169, 168, 171, 177, 168, 167, 165, 162, 159, + 159, 160, 165, 166, 171, 172, 169, 170, 170, 166, 159, 163, 165, 168, 167, 165, + 166, 170, 175, 176, 174, 173, 175, 177, 176, 172, 169, 165, 168, 172, 175, 177, + 177, 175, 175, 178, 180, 180, 180, 179, 180, 182, 184, 184, 184, 183, 182, 180, + 179, 179, 176, 179, 179, 179, 178, 176, 174, 172, 171, 173, 171, 170, 172, 175, + 178, 179, 179, 177, 175, 173, 171, 170, 170, 171, 172, 173, 171, 169, 167, 166, + 165, 166, 166, 169, 172, 168, 159, 160, 164, 166, 163, 168, 165, 163, 165, 169, + 171, 169, 166, 167, 168, 170, 165, 164, 161, 166, 167, 161, 160, 163, 160, 158, + 149, 143, 138, 141, 144, 149, 79, 76, 82, 83, 78, 73, 62, 40, 88, 98, + 104, 102, 98, 101, 105, 109, 121, 130, 127, 127, 138, 138, 135, 139, 146, 147, + 149, 147, 146, 144, 144, 144, 152, 149, 150, 156, 159, 156, 157, 161, 159, 160, + 162, 161, 158, 156, 154, 155, 155, 154, 153, 155, 157, 158, 159, 158, 158, 159, + 161, 162, 163, 164, 167, 167, 170, 169, 167, 166, 165, 166, 166, 167, 164, 167, + 168, 165, 166, 169, 169, 168, 170, 173, 176, 173, 169, 168, 171, 173, 166, 165, + 165, 162, 160, 158, 161, 165, 165, 175, 175, 171, 168, 170, 171, 171, 171, 170, + 168, 168, 168, 170, 170, 170, 171, 170, 170, 171, 174, 174, 172, 169, 169, 170, + 173, 174, 175, 175, 174, 174, 178, 181, 183, 182, 181, 179, 178, 178, 180, 180, + 181, 181, 181, 180, 179, 179, 176, 176, 176, 175, 175, 175, 175, 175, 184, 181, + 178, 177, 178, 178, 177, 176, 178, 178, 178, 177, 175, 173, 170, 169, 169, 168, + 167, 166, 165, 166, 167, 168, 165, 168, 169, 165, 165, 169, 169, 165, 166, 165, + 164, 165, 167, 169, 169, 166, 170, 171, 172, 170, 167, 165, 167, 169, 173, 168, + 165, 165, 166, 163, 155, 150, 153, 152, 149, 81, 78, 89, 96, 87, 79, 74, + 67, 84, 95, 106, 107, 107, 112, 118, 125, 130, 136, 132, 134, 148, 149, 145, + 149, 145, 142, 141, 144, 151, 157, 160, 160, 157, 155, 156, 160, 161, 160, 161, + 163, 157, 158, 159, 158, 155, 154, 153, 155, 151, 150, 150, 152, 156, 158, 158, + 157, 161, 161, 162, 163, 163, 164, 164, 164, 166, 165, 164, 163, 163, 163, 163, + 163, 162, 167, 169, 168, 168, 170, 168, 164, 172, 172, 172, 171, 170, 169, 169, + 170, 166, 165, 165, 163, 161, 160, 163, 168, 166, 176, 178, 172, 168, 170, 175, + 179, 178, 173, 168, 169, 171, 172, 170, 166, 173, 172, 172, 174, 177, 177, 176, + 175, 174, 174, 174, 174, 174, 174, 173, 173, 174, 176, 180, 181, 180, 178, 174, + 172, 176, 177, 179, 180, 181, 180, 179, 178, 176, 175, 175, 175, 176, 178, 180, + 182, 188, 185, 182, 180, 179, 178, 176, 174, 173, 175, 177, 178, 176, 172, 167, + 164, 164, 163, 163, 163, 163, 164, 165, 166, 160, 165, 171, 169, 170, 171, 169, + 165, 166, 167, 166, 165, 165, 166, 168, 169, 163, 164, 165, 164, 162, 160, 160, + 160, 170, 162, 155, 155, 160, 160, 153, 146, 149, 145, 140, 94, 90, 101, 108, + 95, 82, 85, 88, 97, 103, 104, 99, 93, 90, 87, 87, 93, 101, 99, 102, + 115, 118, 116, 120, 117, 119, 121, 126, 134, 142, 149, 152, 156, 155, 155, 157, + 159, 158, 160, 161, 159, 160, 161, 158, 156, 154, 156, 157, 153, 152, 151, 153, + 157, 159, 158, 157, 164, 164, 165, 165, 165, 165, 164, 164, 163, 163, 163, 163, + 163, 164, 164, 165, 165, 169, 171, 169, 169, 172, 171, 167, 175, 172, 170, 170, + 172, 172, 172, 169, 167, 166, 165, 164, 164, 164, 167, 171, 169, 176, 176, 173, + 170, 173, 176, 176, 177, 174, 170, 170, 170, 171, 170, 168, 175, 175, 175, 176, + 177, 177, 177, 177, 177, 176, 175, 174, 174, 175, 176, 177, 171, 172, 173, 175, + 178, 177, 175, 173, 175, 176, 178, 181, 181, 180, 178, 177, 178, 177, 176, 176, + 177, 180, 183, 185, 181, 179, 177, 177, 178, 178, 177, 174, 168, 168, 171, 172, + 171, 168, 165, 163, 162, 162, 161, 161, 161, 161, 161, 162, 163, 166, 169, 170, + 170, 168, 167, 165, 164, 165, 167, 166, 165, 164, 167, 170, 167, 168, 169, 169, + 167, 165, 163, 162, 167, 162, 157, 157, 158, 157, 152, 146, 147, 146, 145, 103, + 97, 103, 103, 85, 74, 80, 86, 77, 82, 88, 96, 106, 117, 122, 121, 115, + 127, 128, 128, 135, 134, 135, 143, 139, 145, 150, 151, 150, 151, 156, 160, 148, + 148, 148, 149, 150, 152, 154, 153, 159, 159, 159, 157, 155, 155, 157, 159, 157, + 155, 154, 155, 158, 159, 158, 157, 161, 161, 162, 162, 162, 162, 161, 161, 163, + 164, 165, 167, 169, 170, 171, 171, 169, 171, 171, 167, 168, 172, 173, 171, 176, + 172, 169, 169, 172, 171, 171, 166, 163, 163, 164, 163, 163, 164, 167, 171, 171, + 173, 173, 172, 174, 177, 173, 166, 170, 172, 172, 171, 169, 169, 171, 174, 173, + 173, 173, 172, 171, 171, 171, 172, 177, 176, 175, 175, 175, 177, 180, 180, 174, + 171, 169, 169, 173, 174, 175, 174, 174, 174, 175, 176, 175, 173, 171, 172, 178, + 179, 177, 177, 177, 179, 182, 184, 178, 177, 177, 178, 179, 180, 179, 174, 167, + 166, 166, 167, 167, 168, 168, 168, 165, 164, 164, 163, 161, 160, 158, 160, 167, + 168, 167, 167, 167, 165, 164, 165, 161, 163, 166, 166, 164, 163, 165, 166, 163, + 162, 162, 162, 161, 159, 156, 154, 154, 155, 157, 155, 151, 147, 143, 143, 139, + 139, 140, 99, 92, 97, 98, 85, 83, 92, 94, 116, 119, 120, 119, 121, 125, + 123, 119, 128, 141, 141, 138, 141, 137, 137, 146, 135, 143, 149, 149, 143, 140, + 143, 146, 147, 148, 150, 148, 150, 155, 156, 153, 154, 156, 156, 156, 155, 153, + 156, 156, 159, 158, 157, 158, 160, 161, 160, 159, 163, 163, 165, 165, 165, 165, + 165, 164, 162, 163, 165, 167, 169, 170, 171, 171, 171, 173, 171, 167, 167, 172, + 174, 173, 172, 169, 166, 165, 167, 168, 166, 163, 160, 161, 161, 160, 161, 162, + 164, 169, 171, 171, 170, 171, 175, 179, 172, 162, 167, 171, 173, 172, 169, 168, + 173, 177, 174, 175, 175, 173, 170, 170, 171, 172, 175, 175, 174, 174, 175, 177, + 179, 179, 179, 173, 168, 167, 171, 171, 171, 168, 170, 170, 170, 168, 168, 167, + 166, 168, 175, 176, 175, 174, 174, 175, 176, 177, 180, 179, 179, 179, 180, 180, + 177, 172, 171, 166, 167, 164, 166, 166, 171, 171, 167, 165, 167, 163, 163, 159, + 159, 159, 172, 170, 165, 166, 164, 163, 164, 167, 164, 166, 170, 172, 172, 169, + 169, 166, 159, 156, 154, 153, 153, 152, 149, 147, 146, 151, 156, 154, 148, 143, + 142, 143, 143, 144, 143, 89, 88, 93, 94, 92, 99, 106, 100, 91, 102, 109, + 110, 112, 118, 123, 127, 131, 141, 138, 136, 143, 140, 136, 144, 144, 148, 151, + 153, 151, 150, 152, 151, 145, 148, 150, 147, 149, 154, 157, 153, 149, 151, 156, + 157, 155, 152, 154, 153, 156, 155, 154, 156, 161, 162, 162, 161, 164, 164, 165, + 166, 166, 166, 166, 166, 161, 162, 163, 165, 166, 166, 165, 165, 167, 170, 170, + 167, 168, 171, 172, 170, 172, 169, 167, 165, 165, 165, 164, 164, 162, 162, 163, + 162, 161, 162, 166, 169, 169, 170, 169, 169, 173, 177, 172, 166, 172, 172, 173, + 173, 173, 174, 176, 177, 174, 175, 175, 174, 171, 171, 174, 176, 174, 173, 173, + 173, 173, 173, 174, 173, 179, 173, 171, 171, 174, 174, 172, 167, 170, 169, 168, + 166, 167, 168, 169, 171, 172, 172, 173, 173, 173, 174, 174, 175, 178, 177, 177, + 177, 178, 177, 175, 171, 172, 170, 168, 165, 166, 166, 169, 169, 169, 168, 169, + 167, 167, 164, 162, 162, 172, 169, 165, 168, 167, 165, 166, 171, 166, 168, 171, + 174, 176, 173, 169, 165, 163, 158, 155, 154, 154, 154, 152, 149, 150, 151, 153, + 153, 151, 150, 151, 152, 156, 157, 157, 87, 87, 90, 88, 86, 96, 95, 79, + 83, 97, 109, 107, 105, 107, 118, 125, 128, 134, 129, 131, 144, 144, 139, 141, + 145, 143, 142, 141, 143, 143, 141, 136, 137, 139, 142, 139, 142, 148, 150, 146, + 147, 150, 155, 156, 155, 155, 154, 154, 153, 152, 153, 155, 159, 164, 164, 163, + 160, 160, 160, 162, 162, 163, 163, 163, 166, 166, 167, 168, 168, 166, 165, 164, + 163, 168, 170, 168, 169, 171, 169, 163, 172, 172, 170, 166, 165, 164, 164, 165, + 164, 167, 166, 165, 165, 165, 169, 171, 167, 170, 171, 169, 170, 175, 176, 175, + 178, 174, 171, 172, 176, 178, 177, 174, 167, 169, 170, 169, 167, 168, 171, 175, + 173, 173, 172, 171, 170, 169, 169, 167, 174, 171, 171, 174, 180, 180, 175, 169, + 172, 171, 170, 168, 169, 172, 175, 177, 172, 172, 175, 175, 177, 177, 178, 177, + 174, 172, 174, 174, 177, 176, 175, 172, 172, 170, 169, 165, 165, 163, 164, 163, + 168, 168, 170, 169, 170, 167, 166, 167, 170, 166, 166, 170, 171, 169, 168, 173, + 159, 160, 162, 168, 171, 169, 163, 154, 147, 142, 137, 135, 136, 137, 135, 133, + 131, 128, 126, 127, 131, 135, 136, 136, 132, 137, 142, 85, 88, 92, 100, 105, + 107, 102, 99, 78, 106, 120, 106, 100, 109, 116, 111, 126, 128, 130, 131, 134, + 134, 134, 134, 137, 141, 141, 136, 134, 138, 137, 131, 132, 133, 135, 134, 132, + 131, 137, 141, 141, 144, 148, 149, 150, 152, 153, 154, 153, 153, 152, 153, 154, + 158, 160, 162, 161, 165, 164, 158, 156, 162, 165, 164, 162, 160, 159, 163, 169, + 171, 170, 167, 173, 167, 166, 171, 173, 169, 168, 172, 169, 168, 165, 162, 161, + 158, 156, 154, 163, 163, 164, 163, 162, 164, 171, 176, 171, 171, 172, 172, 172, + 170, 168, 167, 170, 171, 174, 175, 175, 174, 172, 169, 168, 172, 175, 174, 169, + 167, 170, 174, 171, 172, 173, 174, 174, 173, 171, 170, 175, 175, 176, 177, 177, + 176, 176, 174, 175, 174, 174, 174, 175, 180, 183, 184, 176, 173, 174, 175, 180, + 179, 178, 173, 179, 172, 169, 168, 173, 173, 173, 167, 171, 168, 169, 167, 171, + 170, 172, 170, 172, 171, 175, 173, 173, 166, 163, 159, 169, 162, 166, 168, 159, + 159, 166, 168, 166, 164, 153, 139, 133, 142, 151, 152, 146, 143, 141, 139, 135, + 132, 135, 140, 132, 132, 132, 132, 131, 131, 131, 131, 131, 129, 129, 90, 90, + 91, 92, 93, 88, 82, 76, 83, 102, 110, 105, 104, 114, 117, 113, 118, 120, + 122, 124, 125, 126, 128, 127, 119, 124, 126, 124, 126, 132, 133, 127, 122, 122, + 124, 124, 125, 126, 130, 132, 132, 135, 138, 141, 142, 145, 149, 153, 153, 152, + 152, 151, 152, 153, 156, 157, 161, 165, 165, 159, 158, 160, 160, 157, 161, 163, + 165, 166, 167, 168, 169, 170, 172, 167, 166, 170, 172, 169, 168, 170, 168, 167, + 164, 161, 159, 157, 156, 155, 157, 159, 162, 162, 164, 166, 169, 173, 168, 168, + 169, 169, 168, 166, 164, 163, 171, 171, 174, 174, 174, 173, 171, 170, 166, 170, + 175, 175, 171, 168, 168, 170, 165, 166, 167, 169, 169, 170, 170, 170, 173, 173, + 176, 177, 177, 177, 178, 177, 174, 174, 173, 172, 173, 175, 179, 179, 176, 174, + 172, 173, 175, 176, 173, 171, 169, 167, 165, 168, 173, 174, 171, 168, 168, 172, + 173, 170, 166, 165, 167, 170, 169, 171, 173, 175, 175, 173, 171, 169, 177, 169, + 171, 171, 160, 158, 165, 163, 148, 152, 160, 160, 147, 134, 138, 148, 143, 137, + 136, 140, 145, 143, 136, 129, 131, 131, 130, 129, 128, 127, 126, 126, 130, 130, + 131, 102, 103, 104, 106, 104, 101, 97, 93, 96, 100, 103, 105, 110, 117, 116, + 111, 118, 118, 119, 121, 121, 121, 123, 121, 116, 119, 121, 120, 120, 122, 121, + 115, 118, 117, 116, 117, 120, 122, 124, 124, 132, 134, 136, 138, 142, 146, 151, + 156, 155, 155, 154, 153, 153, 154, 157, 157, 158, 162, 164, 161, 161, 161, 160, + 157, 160, 165, 168, 167, 164, 164, 167, 171, 167, 163, 161, 165, 166, 164, 163, + 164, 169, 167, 163, 159, 156, 153, 153, 152, 153, 155, 159, 161, 161, 162, 164, + 165, 163, 162, 163, 164, 165, 165, 165, 165, 173, 173, 174, 174, 174, 173, 172, + 170, 167, 171, 177, 178, 175, 172, 170, 171, 170, 170, 170, 170, 170, 171, 172, + 173, 172, 172, 176, 175, 175, 176, 175, 175, 177, 178, 176, 175, 175, 176, 178, + 177, 180, 177, 175, 175, 175, 176, 175, 173, 174, 173, 172, 174, 176, 175, 170, + 165, 170, 174, 176, 171, 164, 161, 164, 169, 163, 164, 166, 167, 168, 168, 168, + 168, 171, 161, 163, 164, 154, 150, 156, 152, 156, 147, 150, 158, 152, 136, 141, + 156, 157, 150, 144, 141, 143, 143, 140, 136, 140, 139, 138, 137, 135, 134, 132, + 132, 125, 127, 129, 99, 101, 103, 104, 106, 106, 105, 104, 108, 103, 101, 107, + 112, 111, 111, 110, 116, 116, 116, 116, 115, 114, 113, 112, 114, 114, 116, 114, + 114, 111, 110, 106, 118, 114, 111, 112, 115, 117, 117, 115, 132, 135, 140, 141, + 145, 148, 151, 155, 155, 155, 155, 155, 156, 156, 159, 159, 158, 161, 163, 162, + 163, 164, 165, 165, 163, 165, 166, 165, 163, 163, 165, 168, 167, 164, 163, 164, + 165, 165, 163, 163, 169, 168, 164, 159, 152, 148, 147, 146, 148, 152, 156, 158, + 158, 156, 156, 155, 158, 159, 161, 163, 165, 167, 170, 170, 171, 171, 172, 172, + 174, 174, 174, 173, 168, 170, 174, 175, 173, 171, 171, 171, 176, 175, 173, 172, + 171, 172, 173, 174, 173, 174, 174, 174, 173, 172, 172, 172, 176, 175, 174, 173, + 172, 172, 173, 171, 174, 172, 170, 169, 169, 170, 171, 172, 171, 170, 169, 170, + 171, 171, 169, 167, 173, 174, 176, 171, 168, 165, 167, 169, 166, 164, 164, 162, + 162, 161, 162, 161, 168, 159, 162, 164, 158, 156, 161, 160, 164, 141, 130, 138, + 147, 149, 149, 151, 147, 151, 154, 147, 143, 142, 146, 146, 149, 147, 148, 146, + 146, 144, 144, 144, 144, 146, 147, 105, 104, 104, 103, 102, 99, 98, 98, 107, + 104, 105, 111, 111, 108, 108, 113, 106, 104, 105, 105, 105, 105, 104, 104, 104, + 103, 106, 108, 109, 108, 108, 108, 112, 110, 107, 109, 111, 114, 115, 113, 128, + 134, 141, 144, 146, 146, 148, 148, 147, 148, 149, 151, 152, 153, 155, 155, 160, + 159, 159, 158, 158, 159, 162, 168, 166, 163, 160, 161, 163, 165, 164, 163, 170, + 169, 168, 167, 168, 169, 168, 166, 168, 169, 166, 161, 154, 150, 149, 150, 145, + 147, 151, 155, 158, 158, 156, 155, 159, 160, 160, 162, 164, 166, 168, 169, 168, + 168, 170, 172, 173, 175, 178, 177, 168, 168, 168, 167, 167, 168, 169, 171, 172, + 171, 170, 169, 169, 171, 172, 173, 176, 175, 173, 171, 168, 166, 165, 164, 165, + 164, 162, 161, 159, 159, 159, 160, 160, 161, 160, 160, 160, 162, 165, 167, 161, + 159, 158, 159, 162, 167, 170, 171, 168, 165, 164, 162, 167, 166, 166, 162, 166, + 163, 163, 159, 159, 157, 158, 157, 158, 147, 151, 155, 151, 152, 155, 153, 141, + 134, 127, 128, 141, 150, 147, 139, 126, 135, 145, 147, 150, 152, 150, 142, 148, + 147, 148, 147, 148, 147, 148, 149, 152, 154, 155, 109, 107, 108, 105, 103, 101, + 102, 103, 100, 101, 106, 109, 110, 109, 112, 117, 99, 98, 100, 102, 104, 105, + 105, 106, 106, 104, 103, 106, 106, 103, 103, 107, 110, 109, 109, 110, 114, 117, + 119, 120, 126, 132, 141, 146, 148, 148, 148, 149, 149, 150, 152, 154, 155, 156, + 158, 158, 165, 161, 158, 157, 155, 152, 155, 160, 165, 162, 158, 158, 163, 165, + 164, 161, 166, 166, 165, 162, 163, 165, 164, 160, 165, 168, 170, 166, 160, 156, + 156, 158, 144, 144, 147, 152, 158, 161, 162, 162, 164, 163, 162, 161, 161, 161, + 162, 163, 168, 168, 169, 171, 172, 175, 179, 178, 173, 171, 170, 169, 169, 172, + 174, 176, 169, 169, 170, 171, 172, 174, 176, 176, 174, 172, 169, 166, 162, 159, + 158, 157, 156, 155, 155, 152, 151, 150, 150, 150, 152, 156, 158, 158, 159, 159, + 163, 164, 168, 165, 161, 157, 157, 158, 162, 163, 160, 152, 150, 150, 158, 159, + 158, 152, 154, 151, 152, 150, 152, 150, 152, 151, 150, 139, 141, 146, 141, 141, + 145, 139, 133, 138, 136, 125, 122, 134, 147, 152, 150, 145, 137, 132, 144, 154, + 154, 141, 148, 146, 149, 147, 150, 149, 151, 152, 146, 146, 147, 96, 95, 96, + 94, 93, 93, 97, 99, 96, 101, 104, 106, 107, 112, 114, 113, 103, 103, 104, + 106, 105, 106, 106, 106, 105, 99, 95, 97, 96, 93, 94, 101, 107, 110, 111, + 109, 109, 110, 112, 116, 123, 129, 138, 142, 146, 149, 151, 154, 154, 155, 158, + 160, 161, 161, 162, 161, 164, 160, 161, 161, 157, 151, 152, 158, 163, 162, 160, + 160, 161, 164, 165, 166, 161, 163, 161, 157, 158, 161, 160, 155, 165, 170, 173, + 169, 161, 156, 154, 155, 148, 146, 144, 147, 154, 158, 159, 160, 163, 164, 163, + 162, 162, 163, 165, 166, 170, 170, 170, 170, 171, 173, 176, 176, 175, 173, 172, + 172, 174, 176, 177, 177, 172, 172, 173, 173, 174, 173, 173, 172, 167, 164, 162, + 159, 156, 153, 152, 150, 149, 148, 146, 145, 143, 142, 141, 143, 146, 152, 157, + 155, 156, 153, 157, 157, 168, 164, 162, 155, 152, 148, 150, 149, 147, 143, 141, + 141, 146, 147, 147, 144, 138, 138, 139, 139, 141, 140, 141, 142, 152, 141, 143, + 148, 143, 143, 145, 139, 138, 138, 134, 124, 115, 119, 138, 157, 161, 159, 149, + 134, 136, 147, 152, 147, 150, 149, 150, 149, 151, 150, 151, 151, 153, 151, 153, + 100, 98, 99, 95, 92, 91, 93, 97, 99, 103, 105, 102, 106, 112, 112, 103, + 108, 106, 106, 103, 100, 96, 93, 91, 76, 71, 69, 74, 78, 80, 85, 94, + 100, 104, 104, 98, 93, 90, 91, 95, 110, 115, 122, 129, 135, 141, 148, 152, + 155, 156, 159, 160, 160, 159, 159, 158, 163, 160, 162, 165, 164, 155, 156, 162, + 162, 165, 166, 164, 161, 162, 167, 172, 166, 168, 166, 162, 162, 166, 165, 158, + 164, 169, 171, 169, 158, 150, 147, 146, 155, 150, 145, 144, 147, 150, 151, 153, + 161, 163, 163, 164, 167, 169, 172, 175, 172, 170, 169, 168, 166, 167, 168, 169, + 165, 163, 164, 166, 168, 169, 167, 166, 170, 169, 168, 167, 164, 161, 157, 153, + 158, 156, 154, 152, 148, 147, 147, 145, 137, 136, 135, 136, 135, 133, 132, 134, + 136, 141, 145, 145, 142, 141, 141, 143, 141, 141, 142, 141, 140, 140, 141, 141, + 138, 138, 138, 137, 136, 136, 138, 139, 133, 134, 135, 133, 136, 133, 134, 134, + 130, 119, 120, 127, 124, 124, 126, 121, 126, 118, 119, 128, 125, 110, 109, 123, + 115, 145, 163, 157, 143, 141, 144, 146, 147, 147, 146, 146, 145, 145, 145, 145, + 149, 149, 147, 104, 98, 96, 98, 98, 93, 91, 94, 104, 98, 100, 108, 112, + 109, 105, 106, 102, 95, 104, 91, 87, 78, 54, 72, 62, 61, 61, 60, 60, + 61, 62, 67, 89, 84, 84, 88, 85, 78, 80, 87, 92, 89, 95, 112, 129, + 136, 140, 145, 150, 155, 158, 158, 156, 156, 160, 163, 167, 166, 164, 161, 161, + 160, 161, 163, 165, 167, 168, 168, 168, 168, 169, 169, 162, 161, 161, 165, 169, + 170, 167, 161, 168, 167, 164, 163, 162, 161, 161, 162, 153, 156, 158, 157, 153, + 152, 159, 165, 171, 168, 167, 164, 163, 164, 167, 169, 163, 162, 164, 164, 163, + 162, 158, 157, 153, 155, 157, 157, 155, 156, 159, 162, 159, 154, 151, 151, 153, + 154, 149, 145, 145, 140, 141, 144, 142, 136, 135, 137, 133, 131, 129, 130, 132, + 131, 129, 128, 136, 143, 143, 139, 139, 144, 143, 140, 144, 137, 134, 135, 133, + 128, 126, 132, 131, 132, 132, 132, 128, 126, 123, 122, 122, 120, 118, 115, 117, + 116, 120, 121, 118, 128, 110, 102, 116, 87, 113, 129, 123, 129, 129, 118, 112, + 107, 91, 78, 89, 108, 139, 170, 151, 146, 122, 143, 140, 137, 142, 151, 152, + 144, 144, 148, 151, 151, 151, 58, 59, 59, 58, 58, 57, 57, 57, 59, 60, + 59, 61, 61, 62, 62, 62, 60, 66, 64, 62, 68, 64, 58, 62, 61, 63, + 65, 67, 68, 68, 68, 68, 70, 70, 70, 70, 70, 70, 70, 70, 67, 68, + 69, 70, 71, 72, 72, 72, 69, 73, 73, 70, 71, 74, 74, 72, 74, 73, + 73, 72, 72, 73, 73, 73, 74, 74, 74, 76, 76, 77, 78, 78, 77, 78, + 79, 81, 81, 81, 81, 80, 79, 79, 78, 79, 80, 81, 81, 81, 81, 82, + 81, 83, 83, 84, 84, 84, 82, 82, 82, 83, 83, 84, 84, 84, 87, 86, + 85, 84, 85, 86, 88, 89, 85, 91, 85, 84, 89, 89, 85, 92, 89, 91, + 92, 93, 90, 91, 92, 93, 90, 92, 93, 94, 94, 94, 94, 93, 88, 95, + 93, 90, 95, 93, 90, 97, 92, 90, 88, 88, 88, 91, 93, 95, 94, 97, + 92, 101, 96, 91, 92, 69, 4, 24, 59, 67, 90, 92, 108, 108, 103, 102, + 91, 92, 102, 102, 97, 101, 104, 101, 101, 104, 104, 102, 103, 106, 107, 106, + 104, 104, 106, 106, 104, 103, 103, 104, 104, 104, 104, 103, 102, 101, 105, 105, + 105, 104, 104, 103, 103, 103, 104, 103, 103, 59, 59, 59, 58, 59, 58, 58, + 58, 55, 56, 58, 59, 60, 62, 62, 60, 62, 63, 63, 62, 61, 62, 64, + 68, 64, 65, 67, 67, 66, 65, 67, 69, 70, 71, 71, 71, 69, 68, 64, + 64, 68, 69, 68, 69, 68, 70, 71, 71, 71, 71, 71, 72, 72, 73, 73, + 73, 75, 74, 74, 73, 73, 74, 74, 75, 71, 73, 75, 75, 74, 73, 73, + 74, 75, 78, 79, 77, 77, 80, 79, 76, 77, 77, 77, 78, 78, 79, 79, + 79, 80, 81, 80, 82, 82, 83, 83, 83, 81, 86, 85, 83, 83, 87, 86, + 85, 83, 84, 83, 85, 84, 86, 85, 86, 84, 87, 88, 89, 87, 87, 87, + 89, 85, 90, 89, 87, 87, 91, 90, 89, 93, 91, 89, 90, 94, 95, 94, + 92, 95, 94, 92, 92, 91, 93, 94, 95, 91, 94, 94, 91, 91, 94, 94, + 91, 99, 94, 96, 95, 101, 84, 93, 66, 1, 25, 58, 67, 97, 95, 105, + 107, 103, 101, 92, 90, 102, 102, 98, 101, 102, 100, 100, 103, 104, 101, 101, + 105, 106, 106, 106, 106, 106, 106, 106, 106, 102, 104, 106, 106, 104, 103, 103, + 104, 106, 106, 104, 103, 103, 103, 103, 103, 101, 108, 105, 58, 58, 57, 57, + 58, 57, 57, 58, 59, 59, 60, 61, 63, 63, 65, 65, 63, 63, 63, 62, + 61, 62, 65, 68, 62, 63, 65, 65, 63, 63, 65, 67, 68, 68, 69, 69, + 69, 68, 67, 67, 71, 70, 69, 68, 68, 68, 69, 69, 71, 71, 71, 72, + 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 73, 74, 76, 76, + 75, 73, 74, 75, 75, 79, 79, 76, 76, 79, 78, 75, 77, 77, 78, 78, + 78, 79, 79, 79, 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, 86, 83, + 84, 87, 87, 85, 84, 84, 85, 85, 85, 86, 86, 86, 85, 88, 90, 90, + 89, 88, 89, 90, 87, 90, 90, 87, 88, 91, 92, 89, 92, 91, 90, 91, + 93, 94, 94, 93, 94, 94, 94, 93, 93, 94, 95, 95, 93, 96, 96, 93, + 93, 96, 96, 93, 98, 94, 96, 94, 101, 85, 94, 66, 1, 27, 59, 67, + 98, 96, 105, 107, 100, 99, 90, 90, 102, 105, 101, 104, 104, 101, 101, 105, + 105, 102, 103, 106, 106, 106, 106, 106, 106, 106, 106, 106, 102, 104, 106, 106, + 104, 103, 103, 104, 106, 105, 104, 103, 103, 103, 103, 104, 101, 108, 105, 57, + 56, 56, 56, 57, 56, 57, 57, 61, 61, 60, 60, 61, 63, 65, 66, 63, + 64, 63, 63, 62, 62, 65, 67, 62, 64, 65, 65, 64, 63, 66, 67, 67, + 67, 67, 67, 68, 68, 69, 70, 72, 71, 70, 69, 68, 68, 68, 68, 71, + 71, 71, 72, 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 73, + 75, 77, 77, 75, 74, 75, 76, 76, 79, 80, 77, 76, 78, 77, 74, 77, + 78, 78, 78, 79, 79, 79, 79, 80, 80, 80, 81, 81, 82, 82, 83, 81, + 86, 86, 83, 84, 87, 87, 85, 84, 85, 85, 85, 86, 86, 86, 86, 86, + 89, 91, 91, 90, 89, 90, 91, 87, 90, 90, 88, 88, 91, 92, 89, 90, + 91, 93, 92, 92, 91, 94, 95, 94, 94, 94, 94, 94, 94, 95, 95, 94, + 97, 97, 94, 94, 97, 97, 94, 96, 93, 95, 93, 101, 87, 95, 65, 2, + 27, 60, 68, 98, 96, 105, 107, 98, 98, 89, 89, 103, 106, 103, 105, 105, + 102, 102, 106, 106, 103, 104, 107, 106, 106, 106, 106, 106, 106, 106, 106, 102, + 104, 106, 106, 104, 103, 103, 104, 106, 105, 104, 103, 103, 103, 104, 104, 101, + 108, 105, 57, 57, 56, 56, 57, 57, 58, 58, 61, 60, 58, 57, 58, 60, + 63, 65, 62, 64, 64, 63, 62, 62, 65, 67, 65, 66, 68, 67, 66, 66, + 69, 70, 69, 68, 67, 66, 66, 68, 70, 71, 71, 71, 70, 69, 69, 69, + 70, 70, 71, 71, 71, 72, 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, + 74, 75, 74, 76, 78, 78, 76, 75, 76, 77, 77, 80, 80, 77, 76, 78, + 77, 74, 78, 78, 78, 79, 79, 79, 80, 80, 80, 80, 80, 81, 81, 82, + 82, 83, 81, 86, 86, 83, 84, 87, 87, 85, 85, 85, 85, 86, 86, 86, + 87, 87, 87, 89, 91, 92, 90, 90, 90, 92, 87, 90, 91, 88, 88, 92, + 92, 89, 89, 92, 94, 93, 91, 90, 93, 96, 94, 94, 95, 94, 94, 95, + 95, 95, 93, 96, 96, 93, 93, 96, 96, 93, 95, 93, 94, 92, 101, 88, + 96, 63, 3, 28, 61, 68, 98, 96, 105, 107, 99, 99, 90, 89, 102, 105, + 102, 104, 104, 101, 102, 105, 105, 103, 103, 106, 107, 107, 106, 106, 106, 106, + 105, 105, 102, 104, 106, 106, 104, 103, 103, 104, 105, 105, 104, 103, 103, 103, + 104, 105, 101, 108, 105, 57, 57, 59, 59, 59, 59, 60, 60, 62, 61, 59, + 57, 58, 59, 63, 64, 61, 63, 65, 65, 63, 62, 64, 66, 65, 67, 68, + 68, 67, 67, 69, 71, 71, 70, 68, 66, 66, 67, 68, 69, 68, 68, 68, + 69, 70, 71, 73, 74, 71, 71, 71, 72, 72, 73, 73, 73, 75, 74, 74, + 73, 73, 74, 74, 75, 74, 76, 78, 78, 76, 75, 76, 77, 76, 79, 80, + 77, 76, 78, 77, 74, 78, 78, 79, 79, 79, 80, 80, 80, 80, 80, 80, + 81, 81, 82, 82, 83, 81, 86, 86, 83, 84, 87, 87, 85, 85, 85, 86, + 86, 86, 87, 87, 87, 87, 89, 91, 92, 90, 90, 90, 92, 88, 91, 91, + 89, 89, 92, 93, 90, 89, 92, 94, 93, 91, 90, 93, 96, 94, 94, 95, + 96, 96, 95, 95, 95, 92, 95, 95, 92, 92, 95, 95, 92, 94, 93, 95, + 91, 101, 90, 95, 60, 4, 29, 61, 69, 99, 96, 104, 107, 101, 101, 91, + 90, 102, 104, 100, 102, 103, 100, 100, 104, 104, 101, 102, 105, 107, 107, 107, + 106, 106, 105, 105, 105, 102, 104, 106, 106, 104, 103, 103, 104, 105, 104, 103, + 103, 103, 104, 105, 105, 101, 108, 105, 58, 59, 59, 59, 59, 60, 61, 61, + 64, 63, 62, 61, 61, 62, 64, 64, 61, 63, 65, 65, 63, 63, 64, 65, + 63, 65, 66, 66, 65, 65, 67, 69, 70, 69, 68, 68, 67, 67, 67, 67, + 67, 68, 68, 69, 71, 73, 74, 75, 71, 71, 71, 72, 72, 73, 73, 73, + 75, 74, 74, 73, 73, 74, 74, 75, 73, 75, 77, 77, 75, 74, 75, 76, + 75, 78, 79, 76, 76, 79, 78, 76, 79, 79, 79, 79, 80, 80, 80, 81, + 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, 86, 83, 84, 87, 87, 85, + 86, 86, 86, 86, 87, 87, 87, 88, 86, 89, 91, 91, 90, 89, 90, 91, + 88, 91, 92, 89, 89, 93, 93, 90, 90, 91, 93, 92, 92, 91, 94, 95, + 94, 94, 96, 96, 96, 96, 95, 95, 91, 94, 94, 91, 91, 94, 94, 91, + 95, 94, 95, 90, 100, 90, 95, 56, 5, 30, 62, 69, 99, 96, 104, 107, + 102, 101, 92, 90, 102, 103, 99, 101, 102, 99, 100, 103, 103, 101, 101, 104, + 108, 108, 107, 106, 106, 105, 104, 104, 102, 104, 106, 106, 104, 103, 103, 104, + 104, 104, 103, 103, 103, 104, 105, 106, 101, 108, 105, 57, 57, 58, 59, 59, + 60, 60, 60, 63, 63, 63, 63, 63, 63, 63, 63, 60, 63, 65, 66, 65, + 64, 64, 65, 64, 65, 67, 66, 65, 65, 67, 69, 67, 67, 68, 69, 69, + 69, 68, 68, 69, 69, 69, 70, 71, 72, 73, 74, 71, 71, 71, 72, 72, + 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 73, 74, 76, 76, 75, + 73, 74, 75, 73, 77, 78, 76, 77, 80, 80, 78, 79, 79, 79, 80, 80, + 80, 81, 81, 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, 86, 83, 84, + 87, 87, 85, 86, 86, 86, 87, 87, 87, 88, 88, 85, 88, 90, 90, 89, + 88, 89, 90, 88, 91, 92, 89, 90, 93, 93, 90, 92, 91, 90, 91, 93, + 94, 94, 93, 94, 94, 96, 97, 97, 96, 95, 95, 92, 95, 95, 92, 92, + 95, 95, 92, 96, 96, 96, 89, 100, 91, 93, 52, 5, 31, 63, 70, 99, + 96, 104, 106, 101, 100, 91, 90, 102, 104, 100, 103, 103, 100, 101, 104, 104, + 102, 102, 105, 108, 108, 107, 106, 106, 105, 104, 104, 102, 104, 106, 106, 104, + 103, 103, 104, 104, 103, 103, 103, 103, 104, 105, 106, 101, 108, 105, 57, 57, + 57, 58, 58, 59, 59, 59, 60, 61, 61, 62, 62, 61, 60, 60, 60, 63, + 65, 66, 65, 64, 64, 65, 66, 68, 69, 69, 68, 67, 70, 71, 63, 64, + 67, 69, 70, 71, 70, 70, 71, 71, 70, 70, 70, 71, 72, 72, 71, 71, + 71, 72, 72, 73, 73, 73, 75, 74, 74, 73, 73, 74, 74, 75, 72, 74, + 76, 75, 74, 73, 73, 74, 72, 76, 77, 76, 77, 81, 81, 79, 79, 79, + 79, 80, 80, 81, 81, 81, 80, 80, 80, 81, 81, 82, 82, 83, 81, 86, + 86, 83, 84, 87, 87, 85, 86, 86, 86, 87, 87, 88, 88, 88, 85, 87, + 89, 89, 88, 87, 88, 89, 88, 92, 92, 89, 90, 93, 93, 91, 93, 91, + 89, 90, 94, 95, 94, 92, 93, 94, 97, 98, 98, 97, 95, 94, 94, 97, + 97, 94, 94, 97, 97, 94, 96, 97, 97, 89, 100, 91, 93, 50, 6, 31, + 63, 70, 99, 96, 104, 106, 98, 98, 89, 89, 102, 105, 102, 105, 104, 102, + 102, 105, 106, 103, 103, 107, 108, 108, 107, 106, 106, 105, 104, 104, 102, 104, + 106, 106, 104, 103, 103, 104, 103, 103, 103, 103, 103, 104, 106, 106, 101, 108, + 105, 61, 61, 62, 62, 62, 61, 60, 60, 62, 61, 60, 61, 63, 64, 63, + 62, 64, 64, 64, 64, 64, 64, 64, 64, 66, 67, 68, 69, 68, 67, 68, + 67, 69, 66, 66, 69, 69, 66, 66, 69, 72, 71, 71, 71, 71, 72, 73, + 74, 76, 75, 73, 71, 70, 70, 71, 71, 74, 75, 76, 77, 77, 75, 74, + 73, 75, 74, 74, 74, 74, 75, 76, 77, 81, 80, 78, 77, 76, 76, 77, + 79, 80, 80, 80, 81, 81, 82, 82, 82, 81, 81, 82, 82, 82, 83, 83, + 84, 86, 86, 85, 85, 87, 87, 86, 85, 91, 85, 88, 90, 84, 87, 92, + 87, 89, 89, 89, 90, 90, 91, 91, 91, 92, 91, 91, 91, 91, 91, 90, + 90, 96, 95, 93, 93, 93, 93, 96, 97, 95, 95, 96, 96, 96, 96, 96, + 96, 95, 97, 96, 92, 92, 96, 97, 95, 102, 94, 99, 96, 98, 87, 92, + 46, 5, 34, 66, 70, 100, 100, 108, 108, 106, 96, 91, 95, 101, 103, 103, + 103, 104, 102, 103, 105, 104, 100, 101, 105, 109, 108, 106, 104, 102, 101, 101, + 100, 102, 106, 107, 104, 104, 106, 104, 100, 109, 107, 103, 100, 100, 102, 105, + 107, 100, 109, 107, 61, 61, 61, 62, 61, 61, 61, 60, 62, 61, 60, 61, + 63, 64, 62, 61, 64, 64, 64, 64, 64, 64, 64, 64, 66, 67, 68, 69, + 68, 67, 68, 67, 70, 67, 67, 70, 70, 67, 67, 70, 72, 71, 71, 71, + 71, 72, 73, 74, 71, 71, 71, 71, 72, 73, 74, 75, 74, 75, 75, 76, + 76, 75, 75, 74, 75, 75, 74, 74, 75, 75, 76, 77, 79, 78, 77, 77, + 77, 78, 79, 81, 80, 80, 80, 81, 81, 82, 82, 82, 81, 81, 81, 81, + 82, 82, 82, 84, 85, 85, 83, 84, 86, 86, 85, 84, 90, 84, 88, 90, + 84, 87, 91, 86, 89, 89, 89, 90, 90, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 92, 93, 92, 91, 91, 91, 91, 93, 94, 95, 95, 96, 96, + 96, 96, 96, 96, 94, 97, 96, 93, 93, 96, 97, 94, 98, 92, 97, 94, + 99, 89, 94, 48, 6, 34, 66, 70, 100, 100, 108, 108, 106, 96, 91, 95, + 101, 103, 103, 103, 104, 102, 103, 105, 104, 100, 101, 106, 107, 107, 106, 105, + 104, 104, 105, 105, 103, 106, 106, 103, 103, 105, 104, 101, 108, 106, 103, 101, + 101, 102, 104, 106, 104, 108, 104, 61, 62, 61, 61, 61, 61, 61, 61, 62, + 61, 59, 60, 62, 63, 61, 61, 64, 64, 64, 64, 64, 65, 66, 66, 66, + 67, 68, 69, 69, 68, 69, 68, 70, 67, 67, 70, 70, 67, 67, 70, 72, + 71, 71, 71, 71, 72, 73, 74, 70, 70, 71, 73, 74, 74, 74, 74, 75, + 75, 75, 74, 74, 75, 75, 76, 75, 75, 74, 74, 75, 76, 77, 77, 77, + 77, 76, 77, 78, 79, 80, 82, 80, 80, 80, 81, 81, 82, 82, 82, 80, + 80, 80, 81, 81, 82, 82, 83, 84, 84, 83, 83, 85, 86, 84, 83, 90, + 84, 87, 89, 83, 86, 91, 86, 89, 89, 89, 90, 90, 91, 91, 91, 90, + 90, 90, 91, 92, 92, 93, 93, 93, 92, 92, 91, 91, 92, 93, 94, 95, + 95, 96, 96, 96, 96, 96, 96, 93, 96, 97, 94, 94, 97, 96, 93, 95, + 90, 95, 93, 99, 92, 97, 48, 6, 35, 67, 71, 100, 100, 108, 107, 106, + 96, 91, 95, 101, 103, 103, 103, 104, 102, 103, 106, 104, 101, 102, 106, 105, + 105, 105, 105, 106, 107, 108, 109, 104, 107, 106, 102, 102, 105, 105, 102, 106, + 105, 104, 103, 103, 103, 104, 104, 106, 108, 101, 61, 62, 60, 60, 61, 61, + 62, 62, 62, 61, 59, 60, 62, 63, 61, 61, 63, 64, 64, 65, 65, 65, + 66, 67, 66, 67, 68, 69, 69, 68, 69, 68, 70, 67, 67, 70, 70, 67, + 67, 70, 72, 71, 71, 71, 71, 72, 73, 74, 72, 73, 74, 75, 74, 73, + 71, 70, 76, 75, 74, 73, 73, 75, 76, 77, 76, 75, 75, 75, 75, 76, + 77, 78, 77, 77, 77, 77, 78, 79, 79, 81, 80, 80, 80, 81, 81, 82, + 82, 82, 80, 80, 80, 80, 81, 81, 82, 83, 85, 85, 84, 84, 86, 86, + 85, 84, 89, 84, 87, 89, 83, 86, 90, 86, 89, 89, 89, 90, 90, 91, + 91, 91, 89, 90, 90, 91, 92, 93, 94, 94, 94, 94, 94, 94, 94, 94, + 95, 95, 96, 96, 97, 97, 97, 97, 97, 97, 92, 96, 97, 95, 95, 97, + 96, 92, 94, 90, 95, 92, 99, 93, 97, 45, 7, 35, 67, 71, 101, 100, + 108, 107, 106, 96, 91, 95, 101, 103, 103, 103, 103, 102, 103, 106, 105, 101, + 103, 107, 105, 105, 104, 105, 105, 106, 108, 108, 105, 107, 105, 101, 101, 104, + 105, 103, 104, 105, 105, 105, 104, 104, 103, 102, 105, 108, 102, 61, 61, 61, + 61, 60, 61, 63, 63, 62, 61, 59, 60, 61, 62, 61, 61, 63, 64, 64, + 65, 65, 66, 67, 68, 66, 67, 68, 69, 69, 68, 69, 68, 71, 68, 68, + 71, 71, 68, 68, 71, 72, 71, 71, 71, 71, 72, 73, 74, 72, 73, 74, + 75, 75, 74, 72, 71, 75, 75, 74, 73, 74, 75, 77, 78, 76, 76, 75, + 75, 76, 76, 77, 78, 79, 79, 79, 79, 78, 77, 77, 77, 80, 80, 80, + 81, 81, 82, 82, 82, 80, 80, 80, 81, 81, 82, 82, 83, 87, 87, 86, + 86, 88, 88, 87, 86, 90, 84, 87, 89, 83, 86, 91, 86, 89, 89, 89, + 90, 90, 91, 91, 91, 90, 90, 91, 92, 93, 94, 94, 95, 94, 94, 94, + 94, 94, 94, 95, 95, 96, 96, 97, 97, 97, 97, 97, 97, 92, 96, 97, + 95, 95, 97, 96, 92, 96, 93, 97, 91, 98, 93, 94, 40, 8, 36, 68, + 72, 101, 100, 108, 107, 106, 96, 91, 95, 101, 103, 103, 103, 103, 102, 103, + 106, 105, 102, 104, 108, 106, 105, 104, 104, 103, 104, 104, 104, 105, 107, 105, + 101, 101, 104, 105, 103, 104, 104, 105, 105, 105, 104, 103, 102, 101, 109, 106, + 62, 61, 60, 60, 60, 61, 63, 65, 62, 61, 59, 60, 61, 62, 61, 61, + 63, 64, 65, 65, 66, 67, 68, 68, 66, 67, 68, 69, 69, 68, 69, 68, + 71, 68, 68, 71, 71, 68, 68, 71, 72, 71, 71, 71, 71, 72, 73, 74, + 69, 70, 72, 74, 75, 76, 77, 77, 74, 74, 74, 74, 75, 76, 77, 78, + 76, 76, 76, 76, 76, 77, 78, 78, 79, 79, 80, 79, 78, 77, 76, 76, + 80, 80, 80, 81, 81, 82, 82, 82, 81, 81, 82, 82, 82, 83, 83, 84, + 88, 88, 86, 87, 89, 89, 88, 87, 91, 85, 88, 90, 84, 87, 92, 87, + 89, 89, 89, 90, 90, 91, 91, 91, 91, 91, 92, 92, 93, 94, 94, 94, + 91, 92, 92, 93, 93, 92, 93, 92, 97, 97, 98, 98, 98, 98, 98, 98, + 93, 96, 97, 94, 94, 97, 96, 93, 97, 95, 98, 91, 98, 93, 93, 35, + 9, 37, 69, 72, 101, 100, 108, 107, 106, 96, 91, 95, 101, 103, 103, 103, + 103, 102, 103, 107, 106, 103, 104, 109, 107, 106, 105, 103, 102, 102, 102, 102, + 104, 107, 106, 102, 102, 105, 105, 102, 104, 105, 105, 105, 105, 104, 103, 102, + 100, 109, 108, 62, 62, 60, 59, 59, 61, 64, 65, 62, 60, 59, 60, 61, + 62, 61, 61, 63, 64, 65, 65, 66, 67, 69, 69, 67, 68, 68, 69, 69, + 68, 69, 68, 71, 68, 68, 71, 71, 68, 68, 71, 72, 71, 71, 71, 71, + 72, 73, 74, 70, 71, 71, 72, 74, 76, 78, 79, 72, 73, 74, 75, 76, + 77, 77, 77, 77, 76, 76, 76, 76, 77, 78, 79, 77, 78, 79, 79, 79, + 78, 77, 77, 80, 80, 80, 81, 81, 82, 82, 82, 82, 82, 83, 83, 84, + 84, 84, 85, 87, 87, 86, 86, 88, 89, 87, 86, 92, 86, 90, 91, 86, + 88, 93, 88, 89, 89, 89, 90, 90, 91, 91, 91, 92, 93, 93, 93, 93, + 93, 93, 93, 91, 91, 92, 93, 93, 92, 92, 92, 97, 97, 98, 98, 98, + 98, 98, 98, 94, 97, 96, 93, 93, 96, 97, 94, 97, 95, 98, 90, 98, + 94, 93, 33, 10, 38, 69, 73, 101, 100, 108, 107, 106, 96, 91, 95, 101, + 103, 103, 103, 103, 102, 103, 107, 106, 103, 105, 110, 108, 107, 106, 104, 104, + 103, 103, 103, 103, 106, 106, 103, 103, 105, 104, 101, 105, 105, 105, 104, 104, + 103, 103, 103, 102, 109, 105, 61, 61, 59, 58, 59, 61, 64, 66, 62, 60, + 59, 60, 62, 63, 61, 61, 64, 64, 65, 66, 67, 67, 69, 70, 67, 68, + 68, 69, 69, 68, 68, 68, 73, 69, 69, 72, 72, 69, 69, 72, 72, 71, + 71, 70, 70, 71, 72, 73, 75, 74, 73, 72, 72, 74, 75, 76, 71, 72, + 74, 76, 77, 77, 76, 76, 77, 76, 76, 77, 76, 78, 78, 80, 76, 77, + 79, 80, 81, 81, 80, 78, 79, 79, 79, 80, 80, 81, 81, 82, 83, 83, + 85, 85, 85, 86, 86, 86, 86, 85, 84, 85, 86, 87, 86, 85, 93, 87, + 91, 92, 86, 89, 94, 89, 89, 89, 89, 90, 90, 91, 90, 90, 93, 93, + 92, 92, 92, 93, 93, 92, 93, 93, 95, 96, 96, 95, 94, 94, 97, 97, + 98, 98, 98, 98, 97, 98, 95, 97, 96, 92, 92, 96, 97, 95, 95, 94, + 97, 89, 98, 96, 94, 33, 11, 38, 70, 73, 100, 99, 107, 106, 106, 97, + 91, 95, 101, 103, 102, 102, 103, 102, 104, 107, 106, 104, 105, 110, 108, 107, + 106, 105, 105, 105, 106, 106, 102, 106, 107, 104, 104, 106, 104, 100, 106, 105, + 104, 103, 103, 103, 104, 104, 106, 108, 101, 58, 58, 58, 59, 59, 60, 60, + 60, 61, 60, 60, 60, 60, 61, 63, 64, 64, 64, 64, 65, 65, 66, 66, + 66, 68, 68, 68, 69, 69, 70, 70, 70, 69, 70, 71, 72, 72, 72, 72, + 71, 69, 70, 72, 71, 69, 69, 71, 72, 72, 73, 73, 74, 74, 75, 75, + 75, 77, 77, 77, 76, 76, 75, 75, 75, 76, 83, 80, 78, 81, 79, 75, + 83, 78, 82, 81, 77, 77, 84, 86, 82, 78, 79, 79, 80, 80, 79, 80, + 79, 81, 90, 87, 83, 87, 84, 81, 89, 80, 85, 86, 84, 85, 89, 85, + 77, 93, 89, 89, 91, 91, 88, 88, 92, 93, 93, 91, 91, 92, 92, 90, + 90, 88, 89, 91, 91, 91, 91, 91, 92, 93, 96, 97, 97, 94, 94, 96, + 97, 95, 96, 96, 95, 94, 95, 96, 100, 92, 95, 97, 96, 93, 91, 92, + 94, 97, 89, 97, 92, 92, 89, 92, 29, 12, 43, 67, 79, 94, 103, 103, + 106, 109, 96, 92, 98, 103, 100, 99, 102, 102, 101, 101, 104, 105, 102, 102, + 106, 103, 105, 107, 106, 104, 103, 105, 107, 103, 107, 107, 104, 103, 105, 104, + 100, 106, 105, 104, 103, 103, 103, 103, 104, 102, 104, 104, 57, 57, 59, 59, + 59, 60, 60, 60, 62, 62, 62, 62, 63, 64, 66, 66, 63, 64, 65, 65, + 65, 66, 66, 66, 68, 68, 68, 69, 69, 70, 70, 70, 70, 71, 70, 71, + 71, 72, 72, 72, 69, 71, 71, 71, 69, 68, 70, 72, 72, 73, 73, 74, + 74, 75, 75, 75, 77, 77, 77, 76, 76, 75, 75, 75, 75, 82, 80, 77, + 81, 78, 75, 82, 78, 81, 81, 78, 79, 84, 85, 81, 80, 79, 79, 80, + 80, 81, 80, 81, 76, 85, 83, 82, 85, 82, 81, 88, 82, 83, 83, 81, + 82, 87, 86, 81, 89, 85, 85, 87, 86, 82, 82, 85, 91, 92, 92, 93, + 93, 91, 89, 87, 90, 90, 92, 92, 93, 94, 94, 95, 93, 94, 95, 94, + 92, 92, 93, 96, 95, 96, 96, 95, 93, 94, 96, 99, 93, 96, 98, 97, + 94, 92, 93, 94, 99, 92, 98, 92, 92, 88, 90, 26, 13, 45, 67, 78, + 94, 102, 103, 106, 108, 97, 91, 98, 102, 99, 98, 100, 102, 101, 101, 104, + 105, 102, 102, 106, 103, 105, 107, 106, 104, 103, 105, 107, 102, 106, 106, 103, + 103, 105, 105, 101, 106, 105, 104, 103, 103, 103, 103, 104, 105, 106, 106, 57, + 58, 59, 59, 60, 60, 60, 60, 63, 63, 64, 64, 64, 65, 67, 67, 63, + 65, 65, 65, 66, 66, 66, 66, 68, 68, 68, 69, 69, 70, 70, 70, 71, + 72, 70, 69, 70, 71, 73, 74, 69, 71, 71, 71, 69, 69, 70, 73, 72, + 73, 73, 74, 74, 75, 75, 75, 77, 77, 76, 76, 76, 76, 75, 75, 74, + 81, 78, 75, 79, 76, 73, 80, 76, 79, 80, 78, 80, 83, 83, 80, 84, + 84, 82, 82, 82, 83, 84, 85, 81, 88, 86, 83, 88, 86, 83, 90, 91, + 91, 89, 88, 89, 95, 95, 93, 95, 92, 91, 93, 93, 90, 91, 95, 90, + 92, 93, 93, 93, 91, 90, 88, 93, 93, 92, 92, 91, 92, 93, 93, 95, + 95, 96, 95, 95, 96, 99, 101, 96, 97, 96, 95, 93, 92, 94, 97, 94, + 97, 98, 98, 96, 94, 95, 95, 102, 94, 100, 94, 93, 88, 89, 24, 13, + 45, 67, 79, 94, 102, 103, 106, 106, 95, 90, 97, 102, 99, 97, 100, 102, + 101, 101, 104, 105, 102, 102, 106, 104, 105, 106, 106, 104, 104, 105, 106, 101, + 105, 105, 103, 103, 106, 106, 102, 106, 105, 104, 103, 103, 103, 103, 104, 107, + 107, 107, 58, 58, 59, 60, 60, 60, 61, 61, 63, 63, 64, 63, 64, 65, + 67, 67, 64, 65, 65, 66, 66, 66, 67, 67, 68, 68, 68, 69, 69, 70, + 70, 70, 72, 72, 69, 68, 69, 71, 73, 75, 70, 71, 72, 71, 69, 69, + 70, 73, 72, 73, 73, 74, 74, 75, 75, 75, 76, 76, 76, 76, 76, 76, + 76, 75, 74, 80, 77, 74, 78, 75, 72, 80, 75, 77, 79, 80, 80, 81, + 80, 80, 87, 87, 85, 83, 83, 85, 86, 88, 87, 92, 88, 85, 90, 86, + 82, 87, 83, 83, 81, 81, 84, 86, 86, 85, 87, 84, 84, 87, 88, 87, + 88, 93, 91, 93, 92, 92, 90, 89, 90, 91, 91, 90, 90, 90, 90, 91, + 92, 92, 92, 93, 94, 95, 95, 98, 101, 104, 95, 97, 97, 95, 92, 92, + 93, 96, 95, 97, 98, 98, 97, 97, 96, 96, 101, 94, 100, 94, 93, 89, + 90, 24, 14, 46, 68, 79, 94, 102, 103, 106, 105, 94, 89, 97, 101, 98, + 97, 100, 102, 101, 101, 104, 105, 102, 102, 106, 105, 105, 105, 105, 105, 105, + 105, 105, 100, 104, 105, 103, 104, 107, 107, 103, 106, 105, 104, 103, 103, 103, + 103, 104, 107, 107, 106, 58, 58, 60, 60, 60, 61, 61, 61, 62, 62, 63, + 63, 63, 64, 66, 66, 64, 64, 65, 65, 65, 66, 66, 66, 67, 67, 67, + 68, 68, 69, 69, 70, 72, 71, 69, 68, 69, 71, 73, 75, 70, 72, 72, + 72, 71, 70, 72, 73, 72, 73, 73, 74, 74, 75, 75, 75, 76, 76, 76, + 76, 76, 76, 76, 75, 73, 79, 76, 73, 77, 74, 71, 79, 76, 77, 78, + 81, 82, 80, 79, 81, 90, 90, 88, 85, 84, 86, 87, 88, 85, 88, 84, + 82, 87, 84, 79, 83, 81, 81, 81, 84, 86, 85, 81, 80, 84, 80, 78, + 81, 81, 78, 77, 81, 81, 81, 79, 77, 74, 75, 79, 82, 77, 79, 79, + 82, 85, 87, 88, 90, 89, 91, 92, 92, 92, 93, 97, 100, 95, 96, 97, + 96, 94, 92, 91, 94, 96, 97, 97, 98, 98, 98, 97, 96, 98, 91, 99, + 94, 94, 90, 90, 25, 15, 47, 69, 80, 95, 102, 103, 106, 105, 94, 89, + 96, 101, 99, 97, 100, 102, 101, 101, 104, 105, 102, 102, 106, 105, 105, 105, + 105, 105, 105, 105, 105, 100, 104, 105, 103, 104, 107, 107, 103, 106, 105, 104, + 103, 103, 103, 103, 104, 105, 105, 105, 59, 59, 60, 60, 61, 61, 61, 62, + 62, 62, 62, 62, 63, 64, 66, 66, 65, 65, 65, 65, 66, 66, 66, 67, + 67, 67, 67, 68, 68, 69, 69, 70, 71, 71, 70, 69, 70, 71, 73, 74, + 70, 72, 72, 72, 71, 71, 72, 75, 73, 73, 73, 74, 74, 75, 75, 75, + 75, 75, 76, 76, 76, 76, 77, 76, 74, 81, 77, 74, 78, 75, 72, 79, + 80, 78, 78, 82, 82, 79, 78, 82, 89, 89, 87, 86, 85, 84, 85, 85, + 82, 85, 79, 76, 83, 82, 76, 78, 73, 69, 71, 76, 76, 72, 69, 67, + 69, 64, 62, 63, 60, 55, 54, 57, 52, 53, 51, 48, 44, 45, 49, 55, + 48, 50, 54, 59, 64, 68, 70, 72, 85, 88, 91, 91, 90, 91, 93, 96, + 94, 96, 97, 97, 94, 93, 92, 94, 96, 96, 96, 97, 99, 99, 98, 96, + 96, 90, 98, 94, 94, 89, 89, 24, 16, 48, 70, 80, 95, 102, 103, 106, + 105, 94, 89, 97, 102, 100, 98, 102, 102, 101, 101, 104, 105, 102, 102, 106, + 106, 105, 104, 104, 106, 106, 105, 104, 101, 105, 105, 103, 103, 106, 106, 102, + 106, 105, 104, 103, 103, 103, 103, 104, 105, 104, 104, 59, 59, 60, 61, 61, + 61, 62, 62, 63, 63, 64, 64, 64, 65, 67, 68, 65, 65, 65, 66, 66, + 66, 67, 67, 67, 67, 67, 68, 68, 69, 69, 70, 70, 70, 70, 71, 71, + 72, 71, 71, 71, 72, 74, 73, 72, 72, 73, 75, 73, 73, 73, 74, 74, + 75, 75, 75, 75, 75, 75, 76, 76, 77, 77, 77, 75, 83, 79, 76, 80, + 77, 74, 81, 83, 78, 78, 81, 81, 78, 78, 84, 84, 85, 84, 83, 83, + 81, 79, 78, 78, 79, 70, 65, 71, 67, 59, 59, 40, 33, 32, 37, 37, + 32, 28, 30, 33, 28, 26, 28, 25, 22, 20, 23, 22, 25, 28, 27, 23, + 21, 24, 27, 22, 26, 31, 35, 39, 40, 40, 41, 64, 71, 77, 83, 86, + 89, 93, 96, 93, 97, 98, 99, 97, 94, 94, 95, 95, 95, 94, 96, 99, + 99, 98, 95, 96, 90, 98, 93, 93, 87, 86, 20, 17, 48, 70, 81, 95, + 103, 102, 106, 105, 95, 90, 98, 103, 101, 100, 103, 102, 101, 101, 104, 105, + 102, 102, 106, 107, 105, 103, 104, 106, 107, 105, 103, 102, 106, 106, 103, 103, + 105, 105, 101, 106, 105, 104, 103, 103, 103, 103, 104, 106, 105, 104, 59, 59, + 60, 61, 61, 62, 62, 62, 65, 65, 65, 65, 65, 66, 68, 69, 65, 65, + 65, 66, 66, 67, 67, 67, 67, 67, 67, 68, 68, 69, 69, 69, 68, 70, + 71, 72, 72, 72, 71, 70, 71, 72, 74, 74, 72, 72, 74, 75, 73, 73, + 73, 74, 74, 75, 75, 75, 75, 75, 75, 76, 76, 77, 77, 78, 77, 85, + 82, 78, 82, 79, 76, 82, 86, 80, 78, 82, 81, 78, 79, 85, 79, 79, + 78, 78, 77, 75, 73, 71, 66, 66, 54, 47, 48, 42, 32, 28, 30, 19, + 16, 20, 19, 14, 13, 16, 23, 19, 18, 22, 23, 20, 22, 24, 13, 18, + 24, 25, 21, 17, 17, 19, 18, 20, 24, 25, 26, 23, 19, 19, 33, 43, + 54, 64, 73, 80, 86, 91, 90, 95, 98, 99, 97, 96, 96, 97, 96, 94, + 93, 95, 98, 99, 97, 94, 98, 91, 99, 93, 91, 85, 83, 17, 17, 49, + 70, 81, 95, 103, 102, 106, 106, 95, 90, 98, 104, 102, 101, 104, 102, 101, + 101, 104, 105, 102, 102, 106, 107, 105, 103, 104, 106, 107, 105, 103, 103, 107, + 107, 104, 103, 105, 104, 100, 106, 105, 104, 103, 103, 103, 103, 104, 108, 107, + 105, 60, 62, 64, 63, 61, 60, 61, 63, 61, 62, 65, 67, 67, 67, 67, + 66, 64, 63, 61, 61, 62, 64, 67, 69, 70, 69, 68, 66, 66, 67, 68, + 69, 73, 71, 69, 70, 74, 75, 73, 71, 71, 72, 75, 75, 73, 73, 75, + 76, 76, 77, 77, 78, 78, 77, 77, 76, 72, 75, 78, 78, 75, 74, 75, + 79, 84, 84, 84, 83, 83, 83, 84, 84, 77, 80, 82, 81, 76, 74, 75, + 75, 70, 64, 67, 67, 56, 54, 56, 49, 33, 31, 23, 21, 25, 19, 15, + 21, 19, 12, 16, 16, 11, 17, 21, 10, 25, 21, 19, 21, 19, 15, 15, + 17, 8, 18, 16, 23, 16, 6, 22, 27, 28, 22, 28, 10, 25, 14, 20, + 11, 19, 29, 32, 30, 42, 67, 86, 91, 90, 99, 96, 93, 97, 97, 97, + 104, 96, 95, 96, 97, 97, 98, 99, 99, 99, 93, 99, 91, 92, 91, 90, + 21, 16, 54, 67, 84, 99, 99, 107, 104, 107, 90, 89, 101, 101, 102, 105, + 102, 101, 105, 98, 107, 107, 98, 105, 102, 104, 104, 105, 105, 105, 104, 103, + 103, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, 105, 105, + 106, 101, 103, 104, 57, 59, 61, 60, 58, 58, 59, 60, 63, 64, 65, 65, + 65, 64, 65, 64, 66, 65, 64, 64, 65, 67, 69, 70, 69, 68, 68, 67, + 67, 68, 68, 69, 73, 71, 69, 71, 73, 75, 73, 71, 71, 72, 75, 75, + 73, 73, 75, 76, 76, 76, 77, 77, 77, 77, 76, 76, 78, 80, 81, 80, + 77, 76, 77, 80, 82, 84, 83, 82, 82, 81, 80, 79, 75, 76, 79, 79, + 78, 76, 74, 71, 65, 50, 44, 39, 26, 26, 29, 22, 18, 21, 19, 19, + 24, 19, 17, 26, 18, 14, 17, 17, 11, 17, 19, 10, 27, 22, 21, 23, + 21, 18, 18, 20, 10, 15, 6, 15, 14, 6, 18, 18, 13, 11, 19, 5, + 18, 12, 19, 14, 16, 19, 21, 25, 31, 40, 58, 74, 92, 96, 92, 92, + 103, 105, 100, 102, 99, 97, 97, 97, 97, 97, 97, 97, 100, 95, 101, 93, + 92, 89, 87, 17, 17, 54, 68, 84, 99, 99, 107, 104, 107, 90, 90, 101, + 101, 102, 105, 102, 101, 105, 98, 107, 107, 98, 105, 102, 103, 104, 104, 105, + 105, 104, 104, 103, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, + 104, 105, 105, 106, 102, 104, 105, 57, 58, 60, 60, 58, 58, 59, 61, 65, + 64, 64, 63, 62, 62, 63, 63, 65, 65, 65, 66, 67, 68, 68, 69, 67, + 68, 68, 69, 69, 68, 68, 68, 71, 70, 69, 70, 72, 73, 73, 72, 72, + 73, 75, 75, 73, 73, 75, 76, 75, 75, 76, 76, 76, 76, 75, 75, 81, + 81, 81, 80, 77, 77, 78, 80, 79, 81, 82, 82, 81, 80, 78, 77, 79, + 76, 73, 71, 67, 62, 55, 46, 44, 27, 22, 21, 13, 17, 21, 14, 7, + 14, 14, 17, 22, 16, 15, 26, 18, 15, 19, 18, 12, 17, 20, 11, 21, + 16, 16, 18, 18, 14, 15, 18, 16, 13, 0, 10, 13, 7, 15, 12, 6, + 8, 15, 5, 14, 11, 19, 16, 18, 13, 14, 23, 22, 19, 31, 52, 76, + 87, 90, 92, 101, 101, 98, 105, 101, 99, 99, 98, 97, 96, 96, 95, 100, + 96, 103, 95, 93, 89, 84, 12, 18, 55, 68, 84, 98, 99, 107, 104, 106, + 91, 91, 102, 101, 101, 104, 101, 101, 105, 98, 107, 107, 98, 105, 102, 103, + 103, 104, 105, 105, 104, 104, 103, 104, 105, 105, 106, 106, 105, 105, 104, 106, + 105, 105, 104, 104, 105, 105, 106, 103, 105, 106, 60, 61, 64, 63, 62, 62, + 63, 65, 64, 63, 62, 61, 61, 62, 64, 65, 62, 63, 64, 65, 66, 66, + 65, 65, 66, 67, 68, 70, 70, 69, 68, 67, 70, 70, 70, 71, 71, 72, + 73, 73, 72, 73, 75, 75, 73, 73, 75, 76, 74, 75, 75, 76, 76, 75, + 75, 74, 78, 78, 77, 76, 76, 76, 77, 78, 79, 78, 79, 80, 78, 76, + 73, 72, 69, 62, 54, 49, 45, 40, 34, 24, 22, 10, 13, 19, 19, 22, + 21, 10, 9, 11, 7, 8, 15, 11, 6, 16, 15, 14, 18, 17, 9, 12, + 17, 9, 12, 9, 7, 10, 9, 7, 8, 11, 15, 13, 0, 7, 11, 4, + 13, 8, 8, 12, 15, 9, 9, 10, 15, 14, 20, 14, 14, 19, 19, 18, + 23, 33, 43, 67, 84, 88, 91, 88, 92, 108, 99, 99, 98, 98, 98, 97, + 97, 97, 98, 95, 103, 96, 95, 89, 83, 10, 19, 56, 68, 84, 98, 99, + 107, 105, 106, 91, 92, 103, 101, 100, 103, 101, 101, 105, 98, 107, 107, 98, + 105, 102, 102, 103, 104, 105, 105, 105, 104, 104, 104, 105, 105, 106, 106, 105, + 105, 104, 106, 105, 105, 104, 104, 105, 105, 106, 104, 106, 106, 60, 62, 65, + 64, 63, 63, 65, 66, 61, 60, 61, 61, 62, 64, 67, 68, 63, 64, 65, + 66, 66, 66, 65, 65, 65, 66, 68, 69, 70, 69, 68, 68, 69, 69, 70, + 70, 71, 71, 73, 73, 72, 73, 75, 75, 73, 73, 76, 76, 74, 75, 75, + 76, 76, 75, 75, 74, 76, 76, 75, 76, 77, 78, 78, 76, 77, 74, 72, + 68, 65, 60, 56, 53, 43, 35, 27, 24, 25, 26, 25, 21, 22, 11, 13, + 18, 15, 17, 14, 2, 15, 10, 0, 1, 11, 10, 5, 11, 14, 14, 19, + 17, 8, 11, 16, 10, 12, 9, 9, 11, 12, 9, 10, 13, 12, 14, 3, + 10, 9, 0, 11, 10, 11, 18, 17, 15, 10, 14, 15, 16, 17, 19, 16, + 13, 18, 27, 27, 21, 22, 45, 61, 73, 84, 87, 90, 102, 96, 97, 98, + 98, 98, 99, 99, 99, 96, 93, 102, 96, 95, 89, 83, 10, 21, 57, 69, + 84, 98, 99, 108, 105, 105, 92, 94, 104, 101, 99, 102, 101, 101, 105, 98, + 107, 107, 98, 105, 102, 102, 103, 104, 105, 105, 105, 105, 105, 104, 105, 105, + 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, 105, 105, 106, 104, 106, 106, + 58, 59, 62, 62, 61, 61, 63, 65, 59, 59, 61, 62, 64, 66, 68, 69, + 68, 68, 68, 68, 68, 68, 68, 68, 65, 66, 67, 68, 69, 69, 69, 69, + 68, 69, 71, 71, 70, 70, 73, 74, 72, 73, 75, 75, 73, 73, 76, 77, + 75, 75, 76, 76, 76, 76, 75, 75, 77, 77, 77, 78, 80, 80, 79, 74, + 69, 63, 58, 52, 45, 39, 34, 31, 29, 24, 17, 13, 13, 16, 16, 16, + 27, 15, 14, 14, 11, 15, 19, 12, 17, 12, 0, 0, 12, 14, 9, 17, + 13, 15, 21, 19, 9, 13, 19, 14, 15, 12, 11, 13, 13, 10, 11, 13, + 10, 16, 9, 16, 11, 0, 12, 13, 11, 18, 14, 19, 10, 22, 19, 20, + 14, 20, 18, 12, 17, 29, 27, 17, 23, 30, 33, 49, 79, 92, 89, 91, + 94, 97, 97, 98, 99, 100, 100, 101, 96, 93, 102, 95, 94, 89, 83, 10, + 22, 58, 69, 84, 97, 99, 108, 106, 104, 92, 95, 106, 101, 98, 101, 100, + 101, 105, 98, 107, 107, 98, 105, 102, 101, 102, 103, 104, 105, 105, 105, 105, + 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, 105, 105, 106, + 103, 105, 106, 55, 57, 60, 60, 59, 60, 61, 63, 60, 61, 63, 65, 66, + 66, 67, 67, 70, 69, 67, 67, 66, 67, 68, 69, 66, 66, 66, 67, 68, + 69, 70, 71, 67, 70, 71, 71, 70, 70, 72, 75, 72, 73, 75, 75, 73, + 73, 76, 77, 76, 76, 77, 77, 77, 77, 76, 76, 78, 77, 77, 79, 80, + 79, 74, 66, 52, 45, 38, 32, 26, 23, 20, 18, 20, 19, 16, 12, 9, + 9, 10, 10, 20, 14, 16, 18, 14, 20, 27, 23, 13, 14, 9, 8, 15, + 12, 11, 22, 11, 13, 20, 18, 8, 12, 19, 14, 16, 13, 12, 13, 13, + 10, 11, 14, 12, 18, 13, 22, 17, 6, 15, 15, 12, 18, 10, 18, 10, + 25, 18, 19, 17, 21, 23, 20, 19, 19, 21, 24, 26, 26, 21, 32, 62, + 78, 82, 89, 95, 99, 99, 99, 99, 99, 99, 99, 99, 95, 103, 94, 93, + 87, 81, 8, 23, 59, 70, 84, 97, 99, 108, 106, 103, 92, 96, 106, 101, + 98, 101, 100, 101, 105, 98, 107, 107, 98, 105, 102, 101, 102, 103, 104, 105, + 106, 106, 105, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, 105, 104, 104, + 105, 105, 106, 102, 103, 104, 56, 58, 60, 60, 60, 60, 62, 64, 62, 64, + 65, 67, 67, 67, 66, 65, 69, 67, 65, 63, 63, 65, 67, 68, 67, 67, + 66, 65, 66, 68, 70, 71, 68, 70, 72, 71, 69, 69, 71, 74, 71, 72, + 75, 75, 73, 74, 76, 77, 75, 75, 76, 77, 78, 77, 78, 77, 78, 78, + 75, 76, 75, 69, 62, 52, 33, 26, 22, 18, 15, 17, 17, 17, 3, 7, + 11, 14, 12, 12, 14, 17, 11, 11, 19, 23, 16, 16, 17, 11, 7, 15, + 15, 13, 13, 5, 5, 20, 10, 10, 18, 16, 7, 11, 19, 14, 23, 19, + 17, 19, 18, 14, 14, 17, 15, 20, 14, 25, 23, 13, 19, 16, 15, 19, + 7, 17, 8, 26, 14, 16, 20, 20, 27, 30, 21, 9, 15, 31, 21, 28, + 24, 23, 36, 50, 66, 90, 95, 99, 99, 98, 99, 98, 97, 97, 103, 98, + 104, 94, 90, 84, 78, 5, 24, 60, 70, 84, 97, 99, 107, 105, 103, 92, + 97, 107, 101, 97, 100, 100, 101, 105, 98, 107, 107, 98, 105, 102, 101, 102, + 102, 103, 104, 105, 105, 105, 104, 105, 105, 106, 106, 105, 105, 104, 106, 105, + 105, 104, 104, 105, 105, 106, 101, 103, 103, 61, 61, 61, 61, 62, 63, 64, + 65, 65, 65, 65, 65, 64, 66, 70, 74, 68, 68, 68, 69, 69, 70, 70, + 69, 65, 66, 67, 67, 68, 69, 69, 70, 72, 72, 73, 72, 73, 71, 70, + 70, 75, 74, 73, 73, 73, 75, 76, 76, 69, 70, 71, 73, 75, 77, 78, + 78, 88, 74, 74, 81, 68, 51, 38, 23, 22, 15, 12, 13, 14, 12, 8, + 3, 5, 7, 13, 15, 13, 17, 22, 26, 16, 14, 18, 38, 10, 21, 21, + 21, 12, 22, 8, 13, 17, 7, 14, 19, 10, 22, 25, 15, 12, 19, 20, + 12, 26, 21, 24, 23, 13, 12, 16, 11, 19, 26, 22, 19, 23, 19, 15, + 22, 25, 21, 17, 16, 18, 22, 22, 22, 10, 19, 23, 17, 13, 14, 16, + 16, 13, 18, 24, 25, 22, 27, 47, 73, 95, 90, 86, 94, 102, 102, 99, + 98, 101, 98, 96, 96, 83, 89, 75, 6, 27, 62, 71, 84, 98, 99, 106, + 101, 103, 83, 96, 102, 102, 107, 100, 104, 101, 98, 105, 107, 99, 101, 106, + 102, 104, 104, 105, 105, 105, 104, 103, 103, 103, 104, 104, 104, 104, 103, 102, + 101, 105, 105, 105, 104, 104, 103, 103, 103, 101, 101, 102, 61, 61, 60, 59, + 59, 59, 61, 61, 65, 65, 67, 66, 65, 66, 70, 72, 68, 69, 69, 70, + 69, 70, 70, 70, 66, 66, 67, 68, 68, 68, 69, 69, 72, 72, 72, 72, + 71, 70, 70, 71, 73, 74, 74, 74, 74, 77, 77, 76, 74, 73, 75, 75, + 77, 79, 80, 81, 81, 75, 76, 72, 52, 36, 27, 16, 15, 11, 9, 9, + 12, 12, 11, 8, 10, 10, 12, 15, 18, 20, 21, 19, 18, 12, 20, 22, + 17, 13, 23, 25, 14, 23, 10, 16, 19, 6, 11, 16, 9, 17, 21, 18, + 19, 26, 27, 23, 21, 17, 21, 22, 13, 15, 20, 17, 21, 28, 24, 21, + 25, 21, 17, 23, 21, 17, 13, 15, 18, 20, 16, 12, 21, 24, 22, 19, + 18, 21, 18, 12, 12, 16, 21, 23, 20, 21, 32, 54, 80, 93, 97, 93, + 96, 103, 105, 101, 101, 100, 97, 99, 86, 89, 74, 5, 27, 62, 70, 85, + 98, 100, 106, 102, 104, 85, 97, 103, 102, 106, 98, 101, 101, 99, 105, 107, + 99, 101, 106, 102, 101, 102, 102, 103, 103, 102, 101, 101, 104, 105, 105, 105, + 105, 104, 103, 102, 105, 105, 105, 104, 104, 103, 103, 103, 101, 101, 102, 63, + 62, 61, 60, 59, 59, 60, 60, 65, 66, 68, 68, 66, 66, 68, 70, 68, + 69, 68, 69, 69, 70, 70, 70, 67, 67, 67, 68, 68, 68, 69, 69, 72, + 72, 70, 69, 69, 70, 72, 73, 72, 74, 75, 77, 77, 78, 77, 76, 78, + 77, 76, 76, 77, 78, 79, 81, 77, 75, 76, 61, 34, 25, 23, 15, 14, + 9, 8, 9, 11, 14, 15, 15, 15, 13, 12, 15, 20, 21, 16, 12, 17, + 13, 20, 6, 25, 9, 23, 30, 13, 24, 12, 19, 22, 10, 13, 17, 10, + 11, 14, 18, 24, 28, 28, 27, 21, 17, 20, 22, 15, 17, 22, 19, 21, + 28, 24, 20, 24, 20, 16, 23, 17, 15, 13, 16, 20, 19, 14, 8, 29, + 26, 20, 18, 22, 24, 17, 8, 14, 15, 19, 22, 21, 19, 23, 36, 56, + 85, 96, 88, 85, 96, 102, 97, 101, 100, 99, 101, 88, 92, 75, 4, 26, + 62, 70, 85, 99, 101, 107, 103, 105, 86, 98, 103, 102, 105, 97, 100, 102, + 99, 105, 108, 101, 102, 106, 102, 101, 101, 102, 103, 103, 102, 102, 101, 105, + 106, 106, 106, 106, 105, 104, 103, 105, 105, 105, 104, 104, 103, 103, 103, 101, + 101, 102, 64, 64, 63, 62, 62, 62, 64, 64, 64, 66, 69, 69, 67, 66, + 67, 68, 68, 69, 68, 69, 69, 70, 70, 70, 67, 68, 68, 69, 68, 69, + 69, 69, 72, 72, 69, 69, 68, 70, 72, 75, 72, 73, 76, 78, 79, 79, + 78, 76, 77, 76, 74, 74, 74, 76, 78, 79, 78, 75, 69, 46, 20, 19, + 23, 14, 12, 9, 8, 8, 11, 13, 16, 17, 14, 13, 13, 15, 19, 17, + 13, 8, 15, 18, 15, 5, 24, 12, 15, 30, 12, 23, 13, 21, 26, 13, + 17, 20, 16, 11, 10, 18, 23, 23, 21, 23, 24, 19, 22, 22, 14, 16, + 21, 17, 18, 25, 21, 17, 20, 16, 12, 19, 15, 16, 18, 19, 20, 19, + 18, 18, 27, 22, 17, 16, 19, 21, 15, 8, 17, 15, 16, 21, 22, 19, + 19, 25, 37, 66, 84, 84, 84, 91, 98, 97, 101, 101, 101, 103, 90, 92, + 75, 3, 26, 62, 70, 86, 99, 101, 108, 104, 105, 85, 98, 103, 102, 105, + 98, 101, 103, 100, 106, 108, 101, 102, 106, 101, 103, 103, 104, 105, 105, 105, + 104, 104, 105, 105, 106, 106, 105, 104, 103, 103, 105, 105, 105, 104, 104, 103, + 103, 103, 102, 102, 102, 62, 62, 62, 62, 63, 64, 67, 68, 64, 66, 69, + 69, 67, 66, 67, 68, 68, 68, 68, 69, 69, 70, 70, 70, 68, 69, 69, + 69, 69, 70, 69, 69, 72, 73, 70, 69, 70, 72, 74, 76, 72, 74, 76, + 79, 79, 80, 79, 77, 75, 75, 74, 74, 74, 76, 77, 77, 78, 66, 52, + 30, 10, 16, 20, 12, 12, 11, 10, 8, 9, 10, 13, 15, 7, 11, 15, + 16, 15, 12, 11, 12, 13, 25, 11, 15, 16, 18, 6, 24, 15, 27, 15, + 23, 26, 14, 17, 20, 20, 13, 12, 17, 21, 20, 18, 19, 24, 18, 21, + 21, 13, 14, 21, 19, 16, 23, 19, 16, 19, 15, 11, 17, 10, 16, 21, + 20, 16, 16, 21, 27, 21, 20, 18, 18, 17, 15, 14, 16, 21, 16, 14, + 19, 22, 21, 20, 23, 30, 45, 63, 81, 90, 91, 95, 99, 100, 101, 101, + 104, 91, 93, 75, 2, 28, 63, 71, 86, 100, 101, 108, 104, 102, 83, 96, + 102, 102, 106, 100, 103, 104, 101, 107, 109, 101, 102, 106, 101, 102, 103, 104, + 105, 105, 105, 105, 105, 104, 104, 104, 104, 104, 103, 102, 101, 105, 105, 105, + 104, 104, 103, 103, 103, 102, 102, 103, 58, 58, 59, 60, 61, 63, 66, 67, + 65, 66, 68, 68, 66, 66, 68, 70, 68, 68, 68, 69, 69, 70, 70, 70, + 69, 69, 69, 70, 70, 70, 69, 70, 74, 73, 71, 72, 73, 75, 75, 77, + 74, 76, 77, 78, 79, 80, 79, 79, 77, 76, 77, 77, 77, 76, 74, 74, + 68, 49, 34, 19, 8, 12, 15, 7, 11, 11, 10, 10, 9, 9, 11, 13, + 6, 11, 16, 17, 13, 11, 12, 15, 14, 21, 8, 23, 12, 20, 4, 17, + 21, 30, 18, 23, 26, 12, 15, 18, 18, 17, 16, 17, 19, 21, 21, 20, + 20, 15, 18, 19, 12, 16, 23, 22, 16, 23, 20, 16, 20, 17, 13, 20, + 7, 14, 20, 18, 13, 13, 20, 28, 18, 20, 22, 23, 18, 13, 17, 25, + 23, 18, 15, 18, 22, 21, 21, 25, 24, 25, 39, 63, 81, 86, 90, 96, + 99, 100, 100, 102, 90, 93, 75, 4, 30, 64, 72, 87, 100, 101, 107, 103, + 101, 83, 96, 102, 103, 107, 101, 104, 105, 102, 107, 109, 102, 102, 106, 101, + 99, 100, 101, 102, 103, 103, 103, 103, 103, 103, 104, 104, 103, 103, 102, 101, + 105, 105, 105, 104, 104, 103, 103, 103, 103, 103, 103, 60, 60, 60, 60, 61, + 63, 65, 66, 65, 65, 67, 66, 65, 66, 70, 72, 68, 68, 68, 69, 69, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 73, 74, 74, 75, 77, + 78, 77, 79, 76, 76, 76, 77, 78, 80, 80, 82, 77, 79, 79, 78, 75, + 71, 66, 63, 53, 33, 24, 20, 12, 10, 10, 6, 9, 11, 13, 13, 11, + 10, 12, 14, 14, 14, 16, 15, 15, 14, 14, 14, 17, 10, 11, 19, 12, + 14, 14, 14, 18, 27, 15, 21, 25, 13, 18, 22, 16, 22, 21, 14, 13, + 19, 21, 17, 20, 14, 18, 18, 10, 14, 22, 20, 14, 21, 18, 15, 20, + 17, 14, 21, 11, 14, 17, 18, 17, 16, 17, 18, 21, 20, 22, 25, 19, + 15, 19, 28, 22, 17, 16, 21, 23, 20, 19, 22, 17, 18, 24, 38, 60, + 78, 88, 91, 98, 99, 98, 100, 87, 90, 75, 5, 32, 66, 74, 87, 100, + 100, 106, 102, 103, 84, 97, 103, 102, 106, 99, 102, 106, 102, 108, 110, 102, + 102, 107, 102, 99, 100, 101, 102, 103, 103, 103, 103, 104, 104, 105, 105, 104, + 103, 103, 102, 105, 105, 105, 104, 104, 103, 103, 103, 103, 103, 103, 64, 64, + 63, 63, 63, 64, 66, 67, 65, 65, 66, 65, 64, 66, 71, 74, 68, 68, + 68, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 73, 75, + 75, 77, 79, 79, 79, 79, 77, 77, 76, 76, 77, 79, 80, 82, 76, 77, + 76, 75, 70, 64, 57, 52, 41, 23, 21, 26, 18, 9, 8, 7, 5, 10, + 14, 15, 12, 12, 15, 17, 21, 18, 14, 15, 18, 18, 16, 12, 20, 0, + 16, 13, 16, 8, 25, 14, 12, 22, 11, 19, 25, 16, 25, 30, 13, 24, + 23, 11, 6, 14, 17, 11, 24, 18, 19, 18, 8, 11, 18, 15, 11, 18, + 14, 13, 17, 16, 13, 21, 16, 16, 16, 21, 23, 23, 15, 10, 23, 19, + 21, 23, 19, 14, 17, 26, 21, 19, 19, 23, 22, 19, 16, 17, 17, 24, + 23, 24, 43, 75, 91, 88, 95, 97, 95, 98, 85, 90, 75, 6, 33, 67, + 74, 88, 100, 100, 105, 101, 105, 86, 98, 103, 102, 105, 97, 100, 106, 103, + 108, 110, 102, 102, 107, 102, 101, 102, 103, 104, 105, 106, 106, 106, 105, 106, + 106, 106, 106, 105, 104, 103, 105, 105, 105, 104, 104, 103, 103, 103, 103, 103, + 103, 58, 63, 64, 61, 60, 63, 65, 64, 66, 66, 67, 68, 68, 69, 70, + 70, 71, 70, 69, 68, 68, 68, 68, 68, 64, 69, 72, 72, 73, 75, 74, + 70, 74, 72, 72, 75, 77, 74, 75, 79, 77, 75, 74, 74, 75, 76, 75, + 74, 79, 80, 75, 65, 65, 63, 48, 28, 26, 23, 19, 15, 11, 9, 9, + 8, 12, 10, 8, 8, 10, 12, 12, 12, 15, 21, 22, 16, 13, 14, 13, + 9, 25, 16, 10, 12, 16, 16, 14, 14, 16, 16, 17, 19, 19, 18, 22, + 28, 26, 20, 24, 24, 13, 11, 16, 14, 21, 17, 17, 20, 17, 13, 15, + 21, 15, 20, 20, 14, 11, 14, 20, 22, 14, 19, 21, 20, 21, 24, 23, + 20, 24, 27, 15, 24, 28, 25, 30, 21, 15, 24, 22, 18, 19, 15, 12, + 19, 14, 14, 14, 19, 32, 50, 71, 85, 95, 92, 90, 108, 84, 91, 64, + 6, 34, 65, 73, 89, 101, 98, 104, 102, 102, 88, 101, 103, 101, 107, 101, + 102, 104, 106, 108, 107, 104, 102, 102, 103, 107, 107, 105, 104, 104, 103, 102, + 102, 105, 105, 105, 104, 104, 103, 103, 103, 104, 104, 104, 104, 104, 104, 104, + 104, 106, 105, 105, 58, 63, 64, 61, 60, 63, 65, 64, 66, 66, 67, 68, + 68, 69, 70, 70, 68, 68, 68, 68, 68, 69, 70, 70, 66, 70, 72, 71, + 71, 74, 74, 70, 74, 72, 72, 75, 77, 74, 76, 79, 74, 75, 76, 77, + 79, 78, 77, 76, 71, 73, 73, 66, 58, 45, 30, 15, 22, 19, 16, 12, + 10, 8, 5, 6, 10, 10, 9, 9, 9, 10, 12, 13, 6, 13, 15, 13, + 12, 16, 16, 13, 20, 13, 9, 13, 15, 13, 12, 14, 21, 18, 17, 21, + 21, 20, 22, 28, 25, 21, 27, 29, 19, 16, 17, 13, 18, 16, 17, 21, + 20, 15, 15, 20, 15, 18, 18, 16, 18, 22, 22, 19, 19, 22, 23, 21, + 21, 24, 23, 20, 26, 28, 16, 23, 27, 23, 29, 19, 26, 30, 24, 21, + 26, 22, 17, 20, 6, 10, 15, 18, 24, 36, 54, 69, 94, 92, 89, 104, + 84, 97, 67, 9, 34, 65, 73, 90, 102, 99, 103, 102, 101, 87, 101, 103, + 101, 107, 101, 103, 103, 105, 107, 107, 104, 103, 103, 104, 105, 105, 104, 104, + 104, 104, 104, 104, 105, 105, 105, 104, 104, 103, 103, 103, 104, 104, 104, 104, + 104, 104, 104, 104, 105, 105, 104, 59, 63, 65, 61, 60, 63, 66, 64, 66, + 66, 67, 68, 68, 69, 70, 70, 66, 66, 66, 67, 68, 69, 71, 72, 68, + 71, 71, 69, 70, 74, 74, 71, 73, 71, 71, 76, 77, 74, 75, 78, 72, + 75, 78, 79, 77, 76, 75, 74, 70, 66, 64, 57, 41, 23, 13, 10, 18, + 16, 13, 11, 9, 7, 5, 4, 7, 10, 12, 11, 8, 8, 13, 16, 4, + 10, 14, 14, 14, 17, 19, 17, 15, 11, 11, 15, 15, 12, 12, 16, 21, + 16, 14, 17, 19, 18, 17, 21, 22, 21, 30, 34, 25, 22, 21, 12, 13, + 15, 17, 22, 21, 17, 15, 18, 15, 16, 15, 16, 22, 27, 24, 17, 21, + 24, 23, 19, 19, 22, 23, 20, 25, 28, 16, 23, 25, 20, 25, 16, 26, + 28, 19, 17, 25, 23, 14, 15, 3, 11, 17, 20, 19, 24, 39, 52, 83, + 87, 87, 96, 82, 101, 64, 8, 34, 66, 74, 91, 103, 99, 103, 101, 100, + 85, 100, 102, 101, 107, 102, 104, 101, 104, 106, 106, 105, 104, 104, 105, 103, + 103, 104, 105, 105, 106, 106, 106, 105, 105, 104, 104, 104, 104, 103, 103, 104, + 104, 104, 104, 104, 104, 104, 104, 103, 103, 104, 59, 64, 65, 62, 61, 63, + 66, 64, 66, 66, 67, 68, 68, 69, 70, 70, 67, 66, 66, 67, 68, 69, + 70, 71, 69, 72, 71, 68, 69, 73, 74, 72, 73, 70, 71, 76, 76, 75, + 75, 78, 74, 76, 77, 76, 73, 71, 70, 70, 78, 62, 46, 37, 22, 9, + 8, 17, 14, 13, 12, 10, 9, 7, 6, 5, 5, 10, 14, 13, 8, 8, + 13, 18, 12, 15, 18, 18, 17, 18, 17, 17, 14, 14, 15, 19, 18, 15, + 15, 20, 23, 18, 15, 17, 18, 17, 16, 18, 20, 19, 28, 31, 25, 27, + 26, 17, 14, 15, 18, 19, 19, 18, 18, 20, 17, 19, 19, 18, 21, 26, + 24, 20, 21, 23, 22, 18, 18, 22, 23, 21, 22, 26, 16, 22, 24, 19, + 26, 18, 20, 22, 15, 13, 19, 18, 13, 15, 10, 14, 18, 20, 19, 22, + 30, 40, 62, 76, 86, 90, 77, 99, 55, 7, 34, 66, 75, 92, 104, 99, + 103, 100, 98, 84, 99, 102, 101, 108, 102, 104, 100, 104, 106, 106, 105, 105, + 105, 106, 104, 104, 104, 105, 105, 106, 105, 105, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 102, 103, 103, 60, 64, 66, + 62, 61, 64, 66, 65, 66, 66, 67, 68, 68, 69, 70, 70, 69, 68, 68, + 67, 67, 68, 68, 69, 70, 72, 73, 69, 70, 74, 74, 71, 73, 71, 71, + 76, 76, 74, 75, 78, 76, 76, 74, 74, 71, 70, 71, 71, 74, 53, 33, + 23, 14, 8, 11, 19, 11, 11, 11, 11, 10, 9, 8, 7, 5, 10, 15, + 14, 11, 10, 14, 19, 18, 19, 21, 22, 20, 16, 16, 17, 15, 15, 16, + 21, 19, 15, 16, 21, 26, 21, 18, 20, 20, 18, 17, 20, 18, 18, 24, + 25, 21, 28, 31, 20, 16, 17, 17, 15, 15, 17, 21, 24, 19, 23, 23, + 17, 15, 19, 23, 23, 17, 19, 18, 15, 16, 22, 24, 22, 17, 22, 14, + 22, 24, 19, 28, 21, 19, 25, 21, 17, 20, 18, 17, 25, 18, 16, 14, + 16, 19, 24, 28, 32, 42, 62, 85, 87, 76, 95, 45, 9, 36, 67, 76, + 92, 103, 99, 103, 100, 98, 84, 98, 101, 100, 107, 102, 104, 101, 104, 106, + 106, 105, 105, 106, 107, 106, 106, 106, 105, 105, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 102, 103, 103, + 60, 64, 66, 63, 62, 64, 67, 65, 66, 66, 67, 68, 68, 69, 70, 70, + 70, 69, 68, 67, 67, 67, 67, 68, 69, 72, 73, 71, 71, 74, 74, 70, + 73, 70, 71, 75, 75, 74, 74, 78, 76, 74, 72, 72, 73, 75, 72, 69, + 53, 40, 27, 22, 18, 13, 12, 13, 8, 9, 11, 13, 12, 12, 11, 9, + 8, 11, 15, 16, 15, 14, 17, 19, 17, 17, 19, 22, 20, 16, 16, 19, + 19, 15, 16, 17, 19, 16, 16, 18, 22, 19, 19, 19, 16, 12, 15, 20, + 20, 19, 22, 21, 17, 28, 33, 22, 20, 21, 19, 14, 14, 19, 23, 24, + 21, 25, 25, 17, 13, 15, 20, 23, 14, 18, 19, 16, 18, 22, 24, 22, + 15, 22, 14, 22, 23, 19, 28, 24, 19, 26, 24, 19, 20, 18, 17, 29, + 22, 17, 12, 12, 16, 22, 24, 26, 31, 49, 77, 83, 78, 94, 37, 17, + 38, 69, 76, 91, 102, 98, 104, 102, 98, 84, 98, 101, 100, 106, 101, 103, + 102, 104, 106, 106, 105, 104, 105, 106, 107, 107, 106, 105, 105, 104, 103, 103, + 103, 103, 104, 104, 104, 104, 105, 105, 104, 104, 104, 104, 104, 104, 104, 104, + 103, 103, 104, 60, 65, 66, 63, 62, 65, 67, 66, 66, 66, 67, 68, 68, + 69, 70, 70, 68, 68, 67, 67, 67, 68, 69, 69, 68, 72, 74, 72, 72, + 74, 73, 68, 72, 69, 71, 75, 76, 74, 74, 77, 77, 74, 70, 71, 74, + 71, 62, 52, 30, 30, 27, 20, 14, 12, 11, 8, 5, 8, 11, 14, 14, + 15, 15, 13, 12, 13, 15, 18, 19, 20, 20, 20, 20, 19, 21, 25, 24, + 18, 18, 21, 25, 18, 14, 17, 20, 18, 17, 18, 19, 20, 21, 21, 15, + 11, 15, 24, 23, 23, 24, 21, 16, 28, 31, 17, 20, 24, 22, 17, 15, + 20, 24, 23, 18, 21, 21, 16, 15, 19, 20, 19, 17, 20, 21, 19, 20, + 23, 23, 20, 16, 23, 16, 23, 24, 18, 28, 23, 23, 26, 20, 15, 18, + 16, 13, 23, 21, 19, 16, 15, 16, 18, 20, 23, 28, 35, 61, 72, 77, + 93, 29, 20, 41, 70, 75, 90, 100, 98, 104, 104, 99, 85, 99, 101, 99, + 105, 99, 101, 104, 105, 107, 107, 105, 104, 104, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 103, 103, 103, 104, 104, 105, 105, 105, 104, 104, 104, 104, 104, + 104, 104, 104, 105, 105, 104, 60, 66, 66, 64, 62, 66, 67, 66, 66, 66, + 67, 68, 68, 69, 70, 70, 67, 66, 66, 67, 68, 69, 71, 72, 67, 72, + 75, 73, 73, 75, 73, 67, 72, 70, 71, 76, 78, 76, 77, 81, 79, 74, + 68, 68, 68, 60, 43, 27, 12, 21, 25, 14, 6, 9, 12, 12, 6, 8, + 11, 15, 16, 16, 15, 14, 13, 12, 14, 17, 21, 22, 21, 19, 26, 23, + 25, 29, 26, 19, 18, 22, 32, 21, 15, 18, 21, 21, 21, 20, 25, 28, + 32, 31, 23, 18, 24, 34, 26, 26, 27, 23, 17, 27, 28, 12, 19, 24, + 25, 20, 17, 22, 23, 20, 17, 18, 17, 17, 21, 25, 22, 15, 20, 24, + 25, 22, 22, 25, 22, 18, 19, 26, 18, 24, 24, 18, 27, 22, 30, 29, + 19, 14, 21, 20, 13, 17, 19, 23, 24, 21, 18, 16, 18, 22, 27, 23, + 44, 56, 71, 86, 19, 13, 39, 68, 73, 87, 99, 97, 106, 106, 102, 88, + 101, 102, 99, 105, 97, 99, 104, 106, 108, 107, 105, 102, 102, 103, 103, 103, + 104, 105, 105, 105, 106, 106, 103, 103, 103, 104, 104, 105, 105, 105, 104, 104, + 104, 104, 104, 104, 104, 104, 106, 105, 105, 63, 63, 62, 63, 63, 66, 68, + 69, 70, 66, 64, 68, 69, 67, 65, 68, 67, 73, 69, 67, 73, 71, 66, + 72, 73, 76, 76, 73, 74, 78, 79, 75, 67, 69, 74, 78, 79, 80, 81, + 81, 82, 75, 69, 66, 57, 40, 26, 15, 14, 14, 14, 11, 9, 12, 13, + 14, 16, 12, 16, 16, 11, 16, 20, 12, 11, 22, 20, 17, 22, 26, 24, + 29, 28, 30, 29, 28, 29, 30, 23, 13, 41, 18, 22, 32, 21, 20, 27, + 20, 38, 28, 24, 29, 33, 32, 31, 32, 37, 26, 18, 22, 27, 29, 27, + 26, 33, 29, 23, 21, 22, 24, 23, 23, 23, 26, 26, 23, 20, 18, 22, + 25, 28, 28, 28, 20, 15, 29, 32, 17, 27, 20, 28, 37, 23, 13, 16, + 20, 28, 25, 20, 19, 19, 19, 19, 20, 28, 25, 19, 17, 18, 20, 19, + 18, 32, 25, 28, 39, 48, 51, 31, 0, 41, 68, 82, 85, 96, 101, 101, + 105, 107, 89, 103, 104, 99, 102, 94, 99, 103, 105, 106, 106, 104, 104, 105, + 106, 104, 103, 103, 104, 105, 106, 106, 106, 108, 107, 105, 103, 102, 102, 102, + 103, 105, 105, 105, 105, 105, 105, 105, 105, 107, 107, 106, 67, 66, 66, 65, + 66, 68, 69, 70, 70, 65, 64, 68, 69, 67, 66, 67, 68, 74, 69, 67, + 73, 71, 67, 73, 69, 72, 73, 71, 71, 76, 76, 72, 74, 73, 76, 79, + 80, 83, 83, 83, 76, 74, 69, 55, 33, 16, 16, 23, 18, 15, 12, 10, + 8, 11, 13, 16, 21, 14, 18, 22, 15, 18, 19, 15, 32, 41, 36, 29, + 35, 38, 40, 46, 34, 35, 35, 35, 38, 41, 38, 30, 32, 18, 23, 31, + 27, 34, 43, 38, 31, 32, 39, 50, 53, 49, 47, 50, 49, 47, 45, 46, + 41, 38, 40, 47, 39, 38, 36, 38, 40, 42, 39, 38, 40, 43, 44, 43, + 42, 42, 44, 47, 27, 29, 39, 40, 37, 40, 37, 19, 38, 28, 34, 42, + 33, 28, 32, 34, 27, 25, 22, 22, 23, 22, 19, 18, 16, 18, 20, 24, + 28, 28, 24, 22, 23, 24, 32, 31, 24, 29, 32, 26, 42, 61, 70, 84, + 100, 101, 100, 107, 102, 90, 107, 108, 101, 103, 96, 102, 102, 105, 106, 106, + 104, 104, 105, 106, 103, 103, 103, 104, 105, 106, 106, 107, 108, 107, 105, 104, + 103, 103, 103, 104, 105, 105, 105, 105, 105, 105, 105, 105, 107, 106, 105, 68, + 67, 67, 66, 66, 67, 68, 68, 70, 65, 64, 68, 70, 67, 66, 68, 68, + 73, 69, 67, 74, 72, 68, 73, 68, 72, 73, 71, 71, 75, 75, 72, 78, + 76, 77, 77, 78, 79, 80, 79, 75, 68, 56, 38, 18, 8, 16, 30, 19, + 14, 10, 8, 8, 9, 10, 11, 22, 12, 17, 27, 27, 31, 42, 48, 50, + 67, 72, 72, 77, 73, 64, 63, 66, 67, 67, 67, 70, 74, 71, 64, 73, + 64, 62, 58, 49, 55, 58, 50, 60, 67, 78, 86, 87, 85, 87, 94, 98, + 97, 98, 97, 92, 86, 87, 92, 106, 105, 103, 101, 99, 93, 86, 80, 71, + 73, 74, 73, 71, 70, 72, 72, 66, 59, 62, 63, 58, 61, 64, 55, 51, + 37, 38, 44, 39, 37, 41, 40, 31, 34, 37, 40, 41, 35, 25, 19, 27, + 25, 21, 18, 17, 17, 18, 20, 19, 23, 30, 27, 14, 19, 33, 38, 41, + 53, 59, 75, 95, 98, 97, 106, 96, 87, 107, 108, 101, 104, 99, 103, 103, + 105, 107, 107, 105, 105, 106, 107, 104, 104, 105, 105, 105, 105, 105, 106, 108, + 107, 106, 105, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, + 106, 105, 66, 65, 65, 65, 64, 64, 65, 65, 70, 65, 64, 68, 70, 68, + 67, 69, 69, 73, 70, 68, 74, 72, 68, 75, 72, 76, 76, 74, 74, 78, + 78, 75, 79, 76, 74, 73, 74, 75, 75, 74, 75, 54, 32, 23, 20, 19, + 20, 22, 18, 13, 10, 10, 11, 11, 9, 11, 22, 11, 19, 36, 45, 60, + 85, 103, 121, 140, 147, 149, 155, 150, 139, 137, 139, 141, 141, 140, 141, 142, + 136, 127, 132, 132, 130, 123, 120, 131, 135, 127, 138, 141, 142, 143, 143, 146, + 155, 164, 169, 165, 161, 165, 166, 162, 156, 155, 157, 158, 159, 161, 160, 159, + 155, 153, 153, 152, 152, 150, 147, 144, 143, 143, 144, 130, 127, 127, 118, 117, + 123, 121, 111, 93, 87, 90, 85, 83, 86, 81, 89, 77, 58, 44, 36, 38, + 41, 42, 38, 33, 30, 25, 21, 19, 19, 18, 24, 18, 21, 23, 18, 23, + 24, 19, 31, 47, 51, 59, 77, 90, 94, 103, 94, 85, 102, 103, 99, 106, + 99, 101, 104, 105, 107, 107, 105, 105, 106, 107, 105, 105, 105, 105, 105, 105, + 104, 105, 108, 107, 107, 106, 106, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 104, 65, 65, 65, 65, 65, 65, 64, 64, 70, 65, 65, + 69, 71, 69, 68, 70, 68, 73, 69, 67, 74, 72, 70, 76, 74, 77, 78, + 75, 76, 80, 80, 77, 80, 77, 74, 74, 73, 72, 70, 65, 56, 35, 18, + 17, 24, 24, 18, 14, 18, 14, 14, 18, 18, 13, 11, 14, 21, 19, 38, + 65, 81, 102, 128, 146, 151, 161, 154, 148, 155, 161, 165, 173, 181, 184, 186, + 186, 187, 185, 176, 166, 176, 183, 180, 172, 174, 182, 184, 182, 186, 183, 179, + 175, 177, 183, 190, 195, 189, 190, 191, 195, 191, 186, 184, 189, 190, 190, 187, + 186, 182, 181, 179, 180, 177, 175, 173, 172, 169, 168, 167, 166, 178, 171, 177, + 182, 173, 165, 163, 156, 167, 148, 143, 143, 137, 138, 139, 131, 129, 122, 111, + 99, 85, 72, 58, 47, 33, 32, 35, 38, 37, 33, 28, 23, 26, 15, 15, + 20, 18, 19, 16, 8, 16, 41, 42, 37, 51, 74, 88, 96, 94, 84, 98, + 97, 97, 109, 103, 100, 105, 106, 108, 108, 105, 105, 107, 108, 106, 106, 105, + 105, 105, 105, 104, 104, 107, 107, 107, 107, 106, 106, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 104, 104, 103, 66, 66, 67, 68, 68, 68, 67, 67, + 69, 65, 65, 69, 71, 70, 69, 71, 68, 73, 69, 67, 75, 74, 71, 77, + 73, 76, 76, 73, 75, 78, 78, 77, 81, 79, 77, 75, 73, 69, 60, 52, + 28, 21, 18, 20, 20, 15, 11, 12, 13, 11, 13, 18, 16, 9, 10, 17, + 33, 45, 74, 102, 117, 136, 152, 158, 164, 173, 167, 161, 169, 175, 179, 188, + 175, 179, 182, 183, 186, 186, 178, 168, 186, 195, 189, 181, 185, 184, 181, 187, + 186, 187, 186, 183, 186, 191, 193, 191, 179, 190, 201, 200, 186, 177, 186, 201, + 203, 201, 197, 192, 188, 187, 189, 192, 190, 188, 186, 184, 186, 188, 188, 188, + 182, 179, 181, 182, 172, 172, 175, 169, 176, 162, 160, 161, 157, 160, 161, 152, + 146, 151, 157, 158, 151, 132, 111, 92, 60, 48, 37, 29, 29, 28, 28, 24, + 24, 15, 18, 20, 10, 9, 16, 20, 10, 31, 32, 23, 35, 53, 68, 80, + 87, 82, 98, 97, 97, 112, 107, 103, 105, 106, 108, 108, 106, 106, 107, 108, + 107, 107, 105, 105, 105, 105, 103, 103, 105, 105, 106, 106, 106, 106, 105, 104, + 105, 105, 105, 105, 105, 105, 105, 105, 103, 103, 103, 64, 65, 67, 68, 69, + 69, 68, 67, 69, 65, 65, 69, 72, 70, 70, 71, 68, 73, 70, 68, 75, + 74, 71, 77, 72, 76, 76, 73, 73, 76, 77, 76, 81, 79, 76, 73, 69, + 59, 44, 30, 14, 14, 18, 21, 17, 9, 7, 12, 5, 4, 9, 16, 16, + 12, 21, 39, 62, 82, 110, 127, 135, 153, 163, 157, 160, 174, 177, 176, 183, + 183, 178, 181, 180, 182, 183, 184, 188, 191, 187, 180, 180, 190, 188, 190, 201, + 197, 194, 209, 193, 200, 203, 198, 195, 197, 198, 196, 196, 202, 209, 209, 200, + 194, 199, 210, 187, 189, 191, 193, 196, 201, 209, 216, 196, 193, 189, 187, 190, + 193, 194, 196, 196, 193, 191, 181, 171, 182, 192, 186, 179, 172, 175, 177, 173, + 177, 177, 168, 180, 173, 164, 157, 157, 161, 166, 167, 123, 101, 74, 56, 48, + 44, 38, 33, 28, 19, 22, 24, 13, 10, 19, 23, 16, 19, 17, 23, 33, + 34, 41, 61, 67, 72, 98, 98, 94, 107, 105, 105, 104, 105, 107, 107, 106, + 106, 108, 109, 108, 108, 107, 106, 105, 104, 103, 103, 103, 104, 105, 106, 106, + 105, 104, 103, 105, 105, 105, 105, 105, 105, 105, 105, 103, 102, 102, 61, 62, + 64, 66, 67, 67, 66, 66, 69, 65, 65, 69, 72, 70, 70, 72, 68, 74, + 70, 69, 75, 75, 71, 77, 74, 77, 77, 73, 74, 77, 77, 75, 76, 75, + 72, 68, 62, 48, 28, 12, 17, 13, 12, 17, 19, 14, 10, 10, 4, 5, + 12, 22, 24, 27, 45, 70, 91, 112, 132, 136, 137, 157, 169, 158, 167, 177, + 173, 168, 174, 177, 177, 183, 184, 184, 181, 180, 184, 189, 188, 183, 194, 200, + 194, 193, 200, 184, 175, 193, 193, 202, 205, 194, 184, 184, 189, 192, 207, 197, + 191, 196, 204, 203, 198, 194, 206, 206, 204, 198, 192, 189, 190, 193, 205, 199, + 193, 191, 193, 196, 198, 197, 190, 196, 202, 192, 180, 187, 190, 175, 180, 178, + 183, 186, 181, 183, 183, 173, 170, 169, 171, 172, 171, 168, 162, 156, 168, 153, + 137, 125, 114, 96, 69, 48, 39, 24, 25, 32, 28, 24, 21, 14, 26, 11, + 7, 26, 38, 21, 20, 46, 45, 60, 94, 96, 87, 98, 99, 104, 103, 104, + 107, 107, 105, 106, 108, 109, 108, 108, 107, 106, 105, 104, 103, 103, 102, 103, + 104, 105, 106, 105, 104, 103, 105, 105, 105, 105, 105, 105, 105, 105, 102, 102, + 102, 64, 68, 68, 65, 66, 69, 69, 67, 70, 70, 71, 71, 71, 72, 72, + 72, 73, 72, 71, 71, 70, 71, 71, 71, 77, 75, 73, 72, 71, 72, 75, + 76, 74, 74, 76, 65, 40, 27, 27, 21, 9, 17, 21, 17, 13, 11, 8, + 3, 1, 15, 25, 23, 27, 49, 85, 111, 131, 139, 148, 155, 161, 164, 167, + 169, 164, 165, 171, 178, 179, 176, 176, 180, 185, 177, 172, 176, 187, 194, 194, + 190, 192, 193, 192, 190, 188, 189, 191, 193, 192, 193, 195, 197, 199, 200, 199, + 201, 208, 203, 199, 203, 208, 208, 206, 204, 217, 210, 217, 212, 193, 200, 214, + 206, 198, 205, 208, 202, 197, 196, 195, 190, 192, 199, 199, 186, 180, 187, 192, + 192, 188, 180, 178, 180, 177, 185, 190, 185, 185, 177, 170, 172, 181, 185, 178, + 167, 162, 155, 152, 153, 153, 141, 118, 97, 64, 45, 34, 37, 35, 25, 23, + 30, 20, 19, 18, 17, 17, 22, 28, 35, 41, 35, 49, 79, 97, 94, 92, + 101, 105, 106, 104, 99, 100, 104, 108, 107, 107, 108, 107, 106, 103, 103, 104, + 106, 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, 104, 104, + 104, 105, 105, 105, 65, 68, 68, 65, 66, 69, 70, 67, 68, 68, 68, 69, + 69, 70, 70, 70, 70, 70, 69, 70, 71, 73, 74, 75, 70, 74, 76, 76, + 73, 72, 71, 71, 73, 64, 57, 45, 25, 18, 16, 7, 9, 11, 11, 8, + 8, 13, 12, 9, 10, 17, 27, 42, 67, 96, 117, 126, 146, 153, 161, 167, + 169, 170, 171, 173, 170, 170, 172, 181, 183, 182, 181, 184, 181, 178, 175, 180, + 187, 193, 190, 187, 194, 195, 196, 195, 193, 191, 190, 191, 192, 192, 194, 196, + 199, 201, 202, 206, 206, 208, 210, 213, 214, 213, 212, 212, 214, 209, 217, 218, + 208, 214, 221, 208, 204, 206, 205, 199, 197, 202, 204, 203, 182, 198, 206, 203, + 196, 193, 186, 177, 192, 186, 184, 181, 168, 171, 178, 177, 189, 186, 181, 182, + 183, 182, 174, 167, 164, 160, 156, 157, 161, 157, 147, 135, 135, 99, 62, 48, + 46, 41, 33, 26, 22, 14, 13, 18, 26, 28, 23, 18, 32, 34, 44, 63, + 83, 92, 95, 96, 97, 103, 105, 101, 99, 103, 106, 107, 107, 108, 107, 106, + 103, 103, 104, 106, 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, + 105, 104, 104, 104, 105, 105, 105, 64, 67, 67, 65, 65, 68, 69, 66, 67, + 67, 68, 68, 68, 69, 69, 69, 67, 67, 68, 70, 72, 75, 77, 78, 71, + 74, 77, 76, 72, 70, 68, 69, 70, 53, 41, 31, 18, 18, 18, 8, 14, + 15, 13, 11, 13, 17, 16, 14, 16, 26, 42, 68, 101, 128, 139, 139, 155, + 162, 167, 171, 171, 170, 171, 172, 175, 174, 175, 182, 185, 185, 184, 187, 181, + 182, 183, 187, 189, 191, 189, 187, 193, 196, 198, 198, 195, 192, 190, 189, 192, + 193, 194, 197, 200, 204, 206, 210, 201, 209, 215, 217, 212, 210, 208, 210, 222, + 217, 217, 216, 209, 214, 215, 202, 210, 214, 216, 217, 218, 219, 215, 209, 192, + 200, 202, 195, 192, 197, 199, 197, 186, 185, 188, 181, 165, 165, 179, 184, 177, + 178, 179, 180, 180, 178, 174, 173, 175, 172, 168, 167, 166, 164, 158, 151, 147, + 145, 134, 106, 71, 45, 38, 40, 39, 27, 19, 17, 19, 21, 18, 14, 22, + 31, 38, 46, 63, 84, 93, 91, 89, 99, 105, 102, 99, 101, 104, 106, 107, + 108, 107, 106, 103, 103, 104, 106, 105, 106, 106, 106, 106, 105, 104, 103, 106, + 106, 106, 105, 105, 104, 104, 104, 105, 105, 105, 64, 67, 68, 65, 65, 69, + 69, 66, 70, 70, 70, 71, 71, 71, 72, 72, 68, 68, 69, 71, 73, 76, + 77, 78, 78, 76, 73, 70, 69, 68, 67, 65, 55, 38, 29, 23, 17, 20, + 25, 18, 14, 16, 19, 19, 16, 17, 17, 16, 29, 53, 81, 101, 118, 132, + 145, 150, 162, 167, 171, 174, 173, 170, 170, 171, 178, 179, 180, 184, 182, 180, + 182, 188, 186, 188, 189, 190, 189, 190, 189, 190, 190, 192, 194, 194, 192, 191, + 190, 191, 193, 193, 194, 196, 198, 202, 204, 206, 201, 209, 213, 211, 207, 205, + 204, 203, 227, 222, 216, 208, 204, 209, 214, 211, 208, 204, 202, 202, 203, 205, + 201, 198, 212, 210, 200, 187, 183, 192, 203, 208, 188, 186, 191, 186, 170, 172, + 186, 191, 176, 173, 173, 176, 178, 177, 176, 178, 176, 178, 178, 176, 172, 164, + 157, 151, 152, 151, 145, 135, 120, 100, 72, 46, 40, 36, 30, 25, 18, 16, + 17, 20, 16, 25, 31, 35, 43, 62, 78, 87, 89, 97, 101, 99, 100, 103, + 104, 102, 106, 108, 107, 106, 103, 103, 104, 106, 105, 106, 106, 106, 106, 105, + 104, 103, 106, 106, 106, 105, 105, 104, 104, 104, 105, 105, 105, 65, 68, 68, + 66, 66, 69, 70, 67, 70, 70, 71, 71, 72, 72, 72, 72, 71, 70, 71, + 72, 73, 75, 76, 76, 80, 74, 69, 68, 70, 68, 60, 50, 31, 20, 20, + 18, 9, 14, 21, 19, 10, 13, 15, 16, 15, 18, 27, 38, 67, 91, 116, + 129, 135, 142, 151, 158, 168, 173, 176, 179, 177, 175, 174, 176, 178, 184, 188, + 189, 181, 176, 180, 190, 189, 190, 189, 187, 185, 185, 189, 192, 189, 190, 191, + 190, 191, 192, 195, 198, 195, 195, 195, 195, 197, 198, 199, 199, 204, 208, 208, + 204, 204, 208, 208, 204, 210, 216, 213, 206, 206, 212, 219, 226, 233, 225, 211, + 207, 208, 215, 222, 226, 214, 215, 210, 201, 195, 193, 191, 188, 200, 193, 194, + 190, 177, 178, 187, 187, 194, 183, 177, 180, 182, 180, 176, 176, 172, 173, 174, + 174, 171, 168, 165, 163, 159, 154, 145, 138, 136, 130, 113, 93, 44, 39, 35, + 35, 33, 29, 22, 16, 13, 16, 24, 29, 29, 36, 54, 78, 89, 94, 96, + 95, 99, 104, 103, 99, 105, 107, 107, 106, 103, 103, 104, 106, 105, 106, 106, + 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, 104, 104, 104, 105, 105, 105, + 65, 68, 69, 66, 66, 70, 70, 67, 68, 69, 69, 69, 70, 70, 70, 71, + 73, 72, 73, 73, 73, 74, 75, 74, 73, 70, 69, 70, 69, 60, 45, 28, + 21, 16, 21, 20, 8, 9, 16, 16, 13, 11, 13, 18, 25, 39, 61, 82, + 106, 118, 129, 137, 148, 158, 159, 155, 167, 171, 175, 177, 177, 177, 176, 177, + 180, 186, 190, 193, 184, 180, 182, 193, 188, 189, 184, 184, 180, 183, 184, 188, + 190, 189, 190, 190, 191, 193, 198, 202, 194, 196, 195, 197, 195, 195, 193, 193, + 198, 202, 202, 198, 201, 209, 211, 206, 195, 211, 212, 207, 210, 208, 207, 216, + 207, 204, 202, 206, 207, 206, 206, 208, 207, 208, 208, 206, 203, 200, 196, 191, + 198, 190, 191, 192, 185, 188, 193, 189, 192, 180, 173, 180, 185, 182, 179, 179, + 179, 175, 171, 166, 166, 168, 171, 173, 157, 161, 163, 156, 142, 133, 133, 135, + 99, 73, 44, 31, 32, 33, 24, 12, 13, 12, 17, 23, 22, 22, 38, 60, + 78, 87, 91, 95, 99, 104, 102, 99, 105, 107, 107, 106, 104, 103, 104, 106, + 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, 104, 104, 104, + 105, 105, 105, 65, 68, 69, 66, 67, 70, 70, 67, 69, 69, 69, 70, 70, + 70, 71, 71, 73, 72, 73, 73, 73, 75, 74, 74, 70, 69, 68, 63, 55, + 43, 32, 22, 25, 18, 24, 23, 11, 11, 16, 15, 16, 11, 16, 32, 55, + 77, 98, 117, 130, 135, 136, 141, 153, 162, 161, 154, 164, 167, 173, 176, 177, + 177, 178, 177, 179, 179, 182, 188, 188, 185, 184, 189, 187, 186, 184, 184, 183, + 184, 184, 184, 186, 188, 190, 190, 190, 192, 194, 197, 191, 194, 196, 197, 196, + 194, 192, 190, 193, 205, 209, 203, 202, 208, 210, 206, 201, 217, 214, 208, 214, + 210, 201, 206, 203, 205, 212, 220, 218, 210, 204, 204, 206, 204, 201, 201, 202, + 203, 205, 206, 192, 188, 193, 197, 191, 193, 199, 196, 180, 174, 175, 184, 188, + 182, 181, 185, 182, 175, 168, 164, 165, 166, 167, 167, 176, 160, 152, 159, 164, + 155, 139, 129, 146, 119, 79, 50, 35, 30, 24, 19, 12, 14, 14, 14, 19, + 26, 32, 38, 56, 76, 91, 96, 97, 98, 100, 100, 104, 107, 107, 106, 104, + 104, 104, 107, 105, 106, 106, 106, 106, 105, 104, 103, 106, 106, 106, 105, 105, + 104, 104, 104, 105, 105, 105, 66, 70, 70, 67, 67, 70, 70, 68, 71, 71, + 72, 72, 72, 74, 74, 73, 72, 72, 72, 73, 74, 75, 75, 74, 72, 70, + 63, 49, 32, 22, 22, 22, 23, 15, 20, 21, 13, 14, 19, 17, 13, 10, + 20, 50, 83, 105, 117, 127, 138, 147, 151, 151, 154, 160, 163, 162, 167, 172, + 176, 181, 181, 183, 184, 183, 177, 172, 173, 183, 191, 191, 187, 184, 189, 188, + 188, 189, 190, 190, 188, 184, 184, 187, 189, 191, 191, 190, 190, 190, 191, 193, + 197, 199, 199, 196, 193, 191, 199, 215, 223, 214, 205, 206, 208, 205, 210, 222, + 212, 205, 220, 221, 213, 220, 219, 212, 205, 203, 198, 194, 201, 212, 211, 210, + 209, 210, 209, 204, 198, 196, 201, 199, 205, 205, 193, 191, 195, 191, 185, 183, + 189, 197, 193, 180, 178, 183, 170, 167, 165, 167, 171, 171, 167, 162, 169, 165, + 166, 166, 152, 134, 139, 156, 137, 135, 121, 94, 63, 41, 33, 33, 16, 21, + 17, 10, 19, 36, 32, 19, 33, 63, 89, 98, 93, 93, 96, 101, 103, 105, + 106, 106, 104, 104, 107, 109, 106, 107, 107, 107, 107, 106, 105, 104, 107, 107, + 107, 106, 106, 105, 105, 105, 105, 105, 105, 70, 70, 70, 69, 68, 67, 66, + 65, 66, 66, 67, 68, 69, 70, 71, 71, 75, 74, 73, 74, 73, 74, 74, + 75, 77, 63, 44, 31, 25, 24, 20, 16, 13, 15, 24, 22, 15, 17, 20, + 11, 13, 27, 46, 81, 117, 129, 126, 134, 146, 150, 154, 158, 161, 164, 168, + 170, 172, 172, 173, 175, 177, 181, 184, 186, 175, 181, 187, 188, 184, 183, 186, + 190, 194, 186, 188, 190, 185, 185, 184, 174, 183, 188, 192, 193, 189, 187, 191, + 195, 187, 200, 208, 201, 189, 188, 195, 201, 203, 204, 201, 198, 201, 209, 213, + 212, 212, 208, 205, 206, 212, 215, 214, 212, 209, 205, 207, 214, 211, 202, 201, + 208, 213, 217, 217, 211, 206, 206, 206, 204, 210, 209, 208, 205, 198, 193, 199, + 207, 192, 193, 190, 184, 182, 185, 186, 184, 183, 175, 166, 163, 168, 170, 167, + 163, 169, 168, 165, 164, 161, 157, 152, 147, 145, 144, 138, 128, 116, 96, 63, + 33, 27, 31, 29, 20, 21, 27, 22, 13, 38, 42, 55, 78, 93, 97, 95, + 96, 99, 100, 101, 104, 106, 110, 112, 113, 108, 107, 107, 107, 107, 107, 107, + 107, 108, 108, 108, 107, 107, 106, 106, 106, 106, 106, 106, 71, 70, 70, 69, + 68, 66, 65, 65, 67, 67, 69, 69, 71, 72, 72, 73, 78, 77, 75, 76, + 77, 77, 75, 73, 61, 47, 31, 22, 17, 16, 14, 12, 22, 17, 18, 17, + 11, 15, 22, 18, 17, 43, 69, 96, 124, 136, 137, 145, 148, 150, 152, 156, + 160, 163, 165, 166, 175, 175, 176, 177, 179, 180, 180, 182, 179, 184, 187, 188, + 186, 186, 189, 192, 186, 178, 180, 186, 185, 189, 190, 181, 187, 189, 190, 190, + 189, 188, 188, 188, 188, 195, 197, 193, 189, 192, 196, 198, 199, 204, 209, 209, + 211, 211, 207, 200, 207, 209, 213, 219, 224, 225, 221, 219, 204, 207, 212, 219, + 220, 217, 218, 221, 208, 216, 219, 215, 211, 212, 214, 215, 213, 206, 202, 207, + 210, 205, 196, 192, 195, 198, 197, 190, 185, 186, 187, 186, 181, 175, 170, 170, + 173, 173, 168, 162, 171, 168, 165, 164, 164, 162, 156, 151, 145, 145, 142, 137, + 132, 122, 102, 82, 52, 37, 29, 33, 30, 19, 14, 21, 22, 26, 37, 57, + 79, 92, 96, 98, 99, 100, 102, 104, 106, 109, 112, 112, 108, 107, 107, 107, + 107, 107, 107, 107, 108, 108, 108, 107, 107, 106, 106, 106, 105, 105, 105, 70, + 70, 70, 68, 68, 66, 66, 65, 69, 70, 71, 71, 73, 74, 76, 76, 80, + 78, 77, 77, 77, 75, 70, 64, 40, 31, 20, 15, 14, 15, 13, 11, 12, + 8, 16, 26, 21, 18, 16, 11, 29, 68, 98, 113, 130, 139, 144, 152, 155, + 153, 153, 157, 163, 166, 166, 164, 174, 175, 177, 178, 178, 177, 176, 176, 182, + 182, 183, 184, 185, 187, 189, 190, 185, 175, 177, 184, 186, 193, 195, 185, 195, + 193, 191, 192, 193, 193, 190, 187, 197, 197, 195, 192, 195, 201, 201, 197, 201, + 203, 202, 199, 199, 203, 205, 203, 205, 209, 213, 215, 213, 211, 208, 208, 218, + 223, 223, 216, 210, 205, 201, 196, 209, 217, 221, 216, 211, 211, 212, 212, 213, + 206, 203, 207, 209, 204, 195, 190, 191, 198, 200, 193, 186, 185, 186, 186, 179, + 175, 173, 175, 178, 176, 169, 162, 172, 168, 164, 165, 167, 167, 161, 156, 152, + 151, 149, 144, 142, 139, 133, 123, 92, 59, 34, 32, 35, 29, 22, 21, 16, + 18, 24, 37, 58, 83, 96, 102, 103, 105, 104, 106, 106, 107, 106, 106, 106, + 106, 106, 106, 106, 106, 105, 105, 106, 106, 106, 105, 104, 103, 103, 104, 105, + 104, 104, 71, 71, 70, 69, 69, 68, 67, 67, 70, 71, 71, 73, 74, 75, + 76, 78, 78, 78, 76, 77, 75, 68, 56, 45, 29, 22, 16, 14, 14, 16, + 15, 13, 24, 12, 14, 17, 9, 11, 25, 33, 46, 90, 119, 126, 137, 148, + 151, 155, 163, 158, 156, 160, 168, 172, 171, 168, 170, 171, 174, 176, 176, 175, + 173, 173, 182, 180, 179, 180, 183, 186, 187, 187, 195, 184, 183, 188, 189, 195, + 195, 184, 194, 194, 194, 194, 193, 193, 191, 189, 199, 199, 197, 196, 199, 204, + 201, 195, 194, 197, 197, 194, 195, 201, 205, 206, 206, 208, 208, 204, 199, 198, + 202, 207, 209, 218, 219, 213, 213, 221, 223, 219, 207, 210, 212, 210, 210, 212, + 210, 206, 210, 209, 210, 207, 199, 193, 198, 207, 182, 192, 197, 192, 183, 182, + 183, 184, 177, 175, 174, 176, 178, 177, 170, 165, 172, 167, 163, 164, 168, 169, + 164, 160, 162, 162, 157, 151, 145, 142, 140, 137, 118, 103, 73, 42, 30, 35, + 34, 23, 21, 24, 25, 27, 41, 66, 91, 102, 106, 108, 109, 107, 106, 104, + 102, 101, 104, 105, 105, 105, 105, 104, 104, 104, 104, 105, 104, 104, 103, 102, + 102, 103, 104, 105, 105, 70, 70, 69, 69, 68, 68, 68, 68, 70, 72, 72, + 73, 74, 75, 76, 78, 80, 79, 79, 77, 70, 56, 40, 27, 21, 17, 14, + 14, 14, 15, 16, 15, 11, 10, 20, 24, 14, 14, 27, 35, 67, 104, 127, + 134, 146, 158, 160, 159, 164, 159, 156, 160, 168, 172, 172, 169, 166, 168, 171, + 174, 176, 176, 175, 175, 183, 181, 179, 180, 183, 185, 186, 186, 200, 189, 189, + 192, 191, 194, 193, 182, 188, 192, 195, 194, 190, 188, 190, 193, 187, 193, 197, + 196, 198, 200, 198, 194, 182, 194, 206, 211, 210, 208, 202, 195, 203, 207, 209, + 208, 205, 208, 216, 224, 227, 230, 223, 208, 200, 203, 203, 198, 203, 202, 201, + 203, 211, 217, 213, 205, 207, 208, 209, 207, 201, 196, 201, 210, 177, 187, 193, + 190, 183, 182, 183, 184, 178, 176, 173, 173, 175, 175, 172, 169, 169, 165, 161, + 162, 166, 168, 165, 162, 167, 166, 162, 156, 149, 143, 141, 141, 126, 134, 120, + 81, 43, 32, 34, 34, 28, 29, 29, 24, 27, 47, 77, 101, 106, 109, 111, + 109, 106, 102, 98, 97, 102, 104, 104, 104, 104, 103, 103, 103, 103, 104, 103, + 102, 101, 100, 100, 102, 106, 108, 108, 70, 70, 70, 70, 70, 70, 71, 71, + 71, 71, 73, 74, 76, 76, 77, 77, 81, 81, 78, 71, 59, 44, 28, 18, + 16, 15, 13, 13, 14, 15, 16, 16, 4, 9, 20, 22, 16, 27, 45, 50, + 92, 116, 131, 139, 156, 166, 166, 167, 160, 156, 154, 156, 160, 164, 165, 164, + 165, 167, 170, 173, 176, 177, 178, 178, 181, 182, 183, 183, 184, 185, 186, 187, + 193, 185, 189, 193, 190, 192, 192, 183, 190, 196, 201, 199, 194, 191, 194, 199, + 182, 190, 197, 198, 198, 201, 202, 201, 188, 198, 205, 205, 202, 201, 199, 195, + 197, 203, 209, 211, 208, 207, 209, 212, 200, 202, 202, 200, 203, 213, 222, 226, + 216, 212, 206, 204, 210, 215, 209, 200, 208, 203, 201, 208, 213, 208, 200, 194, + 181, 189, 194, 190, 186, 186, 187, 186, 179, 176, 173, 172, 173, 174, 174, 174, + 166, 164, 162, 162, 164, 165, 164, 165, 163, 162, 162, 162, 158, 151, 150, 150, + 148, 133, 122, 114, 94, 62, 40, 31, 32, 28, 27, 24, 21, 31, 61, 90, + 103, 109, 110, 111, 107, 103, 97, 97, 102, 104, 104, 104, 104, 103, 103, 102, + 103, 103, 103, 101, 101, 99, 99, 101, 106, 108, 108, 69, 69, 69, 70, 70, + 71, 71, 72, 74, 75, 75, 75, 77, 77, 78, 78, 78, 77, 70, 58, 41, + 28, 20, 17, 14, 14, 14, 17, 19, 20, 22, 24, 36, 32, 26, 18, 27, + 70, 110, 120, 124, 136, 142, 149, 162, 166, 165, 170, 158, 156, 154, 153, 153, + 155, 156, 157, 164, 165, 167, 169, 172, 174, 176, 177, 176, 179, 182, 182, 180, + 179, 181, 184, 184, 182, 189, 195, 190, 191, 193, 186, 196, 198, 200, 199, 196, + 194, 194, 196, 190, 195, 197, 196, 196, 201, 203, 202, 198, 201, 198, 190, 187, + 193, 201, 206, 198, 201, 203, 202, 198, 195, 195, 196, 225, 222, 220, 219, 216, + 214, 217, 223, 220, 219, 214, 207, 206, 209, 207, 202, 208, 203, 202, 208, 210, + 204, 195, 189, 187, 192, 194, 191, 188, 189, 188, 186, 180, 178, 177, 176, 177, + 177, 177, 177, 165, 166, 166, 165, 163, 163, 165, 168, 165, 161, 162, 166, 165, + 160, 156, 158, 160, 135, 121, 127, 128, 105, 71, 46, 44, 30, 23, 25, 21, + 21, 42, 71, 96, 103, 108, 110, 107, 104, 100, 100, 103, 105, 105, 104, 104, + 103, 103, 103, 104, 103, 103, 101, 101, 100, 100, 101, 105, 107, 106, 68, 68, + 69, 70, 71, 72, 72, 72, 76, 76, 76, 77, 77, 77, 77, 76, 72, 69, + 59, 43, 25, 15, 14, 17, 16, 18, 20, 23, 25, 28, 32, 35, 30, 46, + 67, 82, 105, 146, 162, 147, 151, 156, 154, 158, 164, 160, 158, 168, 159, 158, + 156, 153, 149, 149, 151, 153, 161, 161, 162, 164, 166, 168, 170, 172, 169, 174, + 179, 179, 175, 173, 175, 179, 180, 181, 192, 197, 191, 190, 194, 188, 195, 193, + 191, 190, 191, 189, 186, 183, 199, 198, 193, 188, 189, 194, 196, 193, 192, 199, + 202, 199, 196, 200, 206, 208, 202, 201, 198, 195, 195, 197, 203, 207, 209, 204, + 206, 212, 212, 205, 207, 216, 204, 209, 211, 206, 204, 210, 216, 220, 207, 208, + 209, 206, 196, 188, 190, 197, 192, 195, 194, 189, 187, 188, 186, 182, 179, 179, + 179, 179, 180, 180, 179, 178, 165, 168, 169, 167, 162, 161, 166, 170, 171, 165, + 164, 168, 168, 161, 157, 157, 144, 152, 150, 134, 122, 116, 104, 85, 59, 36, + 24, 30, 26, 16, 28, 53, 90, 99, 105, 108, 107, 106, 102, 103, 104, 106, + 106, 106, 105, 105, 104, 104, 104, 105, 104, 103, 102, 101, 100, 102, 103, 105, + 105, 69, 68, 69, 70, 71, 71, 72, 71, 71, 72, 74, 76, 78, 75, 70, + 64, 68, 52, 35, 26, 21, 17, 19, 21, 19, 25, 28, 30, 37, 51, 64, + 71, 109, 121, 135, 145, 151, 156, 162, 168, 159, 160, 161, 163, 163, 164, 166, + 167, 164, 165, 164, 161, 156, 152, 150, 151, 144, 148, 153, 155, 156, 159, 163, + 167, 169, 163, 164, 174, 179, 176, 179, 187, 184, 180, 180, 185, 194, 197, 193, + 188, 210, 206, 202, 197, 194, 194, 195, 197, 197, 198, 200, 201, 196, 190, 193, + 199, 188, 194, 201, 205, 203, 199, 195, 193, 196, 199, 201, 201, 199, 199, 201, + 204, 204, 209, 209, 207, 217, 230, 229, 218, 208, 200, 196, 205, 215, 215, 208, + 203, 216, 199, 189, 194, 199, 195, 192, 196, 194, 192, 183, 183, 187, 180, 174, + 185, 161, 176, 182, 173, 168, 173, 175, 170, 178, 173, 169, 171, 174, 171, 159, + 148, 162, 159, 163, 171, 172, 165, 160, 159, 154, 151, 147, 143, 139, 134, 130, + 127, 100, 52, 32, 40, 30, 13, 22, 46, 73, 99, 105, 98, 102, 106, 103, + 106, 107, 107, 105, 103, 105, 109, 106, 101, 103, 104, 103, 104, 103, 104, 104, + 104, 99, 106, 104, 68, 68, 68, 70, 71, 71, 72, 72, 75, 77, 77, 73, + 68, 66, 69, 69, 50, 34, 23, 22, 25, 25, 23, 24, 19, 36, 56, 70, + 85, 105, 125, 136, 147, 154, 161, 163, 163, 161, 163, 165, 160, 160, 160, 159, + 158, 158, 159, 159, 162, 160, 158, 158, 159, 157, 153, 149, 144, 146, 146, 144, + 143, 144, 149, 152, 157, 162, 172, 178, 174, 169, 173, 182, 183, 181, 184, 189, + 196, 199, 198, 195, 193, 193, 193, 194, 195, 196, 198, 199, 197, 198, 201, 203, + 200, 195, 197, 203, 202, 200, 197, 194, 192, 195, 201, 205, 199, 202, 204, 204, + 202, 201, 202, 204, 208, 215, 215, 207, 206, 213, 215, 209, 199, 197, 200, 208, + 211, 208, 204, 203, 201, 194, 196, 205, 207, 198, 193, 195, 206, 200, 187, 182, + 185, 182, 177, 182, 181, 174, 177, 187, 184, 169, 161, 164, 166, 167, 165, 161, + 156, 156, 161, 166, 164, 162, 164, 169, 169, 163, 161, 164, 165, 155, 143, 141, + 144, 143, 133, 123, 125, 108, 80, 45, 16, 19, 26, 20, 57, 91, 108, 108, + 111, 107, 98, 96, 103, 108, 109, 105, 104, 105, 103, 100, 102, 102, 103, 103, + 103, 103, 102, 102, 100, 107, 103, 66, 67, 67, 69, 70, 72, 73, 73, 76, + 74, 70, 68, 67, 64, 61, 54, 26, 19, 17, 17, 19, 25, 37, 51, 87, + 107, 128, 136, 139, 146, 154, 162, 161, 167, 170, 170, 167, 164, 165, 167, 168, + 166, 166, 163, 161, 161, 160, 160, 165, 162, 160, 163, 168, 168, 162, 155, 154, + 152, 149, 143, 139, 138, 140, 141, 150, 149, 151, 157, 163, 170, 177, 182, 181, + 182, 187, 191, 194, 196, 197, 197, 190, 191, 193, 194, 194, 194, 193, 192, 195, + 196, 200, 204, 202, 198, 199, 204, 198, 206, 216, 222, 220, 213, 205, 200, 201, + 203, 205, 205, 203, 202, 201, 201, 199, 210, 215, 207, 200, 205, 211, 213, 214, + 210, 206, 201, 195, 191, 196, 204, 210, 201, 195, 194, 188, 179, 179, 185, 186, + 183, 176, 173, 178, 182, 179, 176, 192, 176, 167, 172, 171, 161, 154, 156, 163, + 168, 173, 173, 168, 163, 162, 162, 162, 161, 163, 165, 162, 159, 161, 167, 170, + 162, 152, 148, 148, 145, 138, 132, 140, 141, 118, 67, 32, 36, 36, 12, 41, + 72, 92, 98, 107, 110, 109, 114, 100, 108, 113, 110, 105, 105, 105, 104, 106, + 106, 106, 106, 106, 106, 106, 105, 101, 107, 104, 65, 66, 68, 68, 71, 72, + 73, 74, 73, 65, 61, 65, 71, 64, 44, 21, 17, 18, 21, 20, 16, 30, + 67, 102, 113, 131, 148, 155, 156, 157, 159, 161, 164, 167, 169, 168, 165, 164, + 165, 167, 171, 171, 169, 167, 166, 166, 165, 165, 166, 165, 165, 168, 171, 171, + 166, 160, 162, 160, 156, 150, 144, 140, 138, 136, 130, 133, 140, 149, 155, 161, + 167, 174, 175, 179, 185, 188, 188, 188, 190, 193, 194, 194, 195, 195, 194, 193, + 192, 191, 193, 194, 198, 202, 200, 196, 196, 200, 202, 202, 202, 200, 198, 198, + 200, 202, 200, 202, 203, 203, 202, 199, 198, 197, 193, 205, 213, 209, 205, 207, + 212, 215, 196, 203, 214, 220, 213, 197, 186, 183, 202, 196, 193, 196, 198, 198, + 202, 208, 203, 205, 208, 207, 204, 208, 208, 198, 189, 193, 188, 179, 181, 190, + 186, 174, 171, 167, 166, 171, 177, 175, 165, 153, 157, 160, 164, 163, 159, 156, + 158, 163, 161, 167, 170, 164, 150, 142, 142, 148, 147, 140, 129, 109, 77, 58, + 43, 25, 47, 69, 81, 87, 97, 100, 97, 102, 97, 104, 107, 105, 103, 105, + 107, 106, 107, 107, 107, 106, 106, 106, 106, 106, 99, 105, 102, 65, 66, 68, + 68, 71, 72, 73, 73, 67, 64, 63, 63, 60, 48, 29, 11, 21, 20, 25, + 29, 37, 59, 98, 134, 129, 140, 151, 156, 161, 165, 165, 161, 177, 176, 173, + 171, 164, 161, 160, 159, 165, 164, 164, 164, 164, 165, 166, 167, 163, 165, 167, + 167, 165, 163, 161, 160, 161, 160, 158, 154, 149, 143, 136, 132, 112, 123, 139, + 151, 149, 144, 149, 161, 165, 171, 179, 182, 183, 184, 189, 192, 189, 189, 189, + 191, 193, 195, 198, 199, 196, 195, 197, 200, 199, 195, 194, 198, 197, 197, 197, + 195, 193, 194, 196, 199, 202, 201, 201, 201, 201, 199, 197, 196, 196, 203, 209, + 210, 208, 207, 205, 202, 219, 206, 192, 187, 189, 196, 210, 222, 205, 203, 206, + 215, 218, 209, 194, 184, 176, 171, 173, 165, 144, 143, 147, 138, 138, 156, 168, + 170, 177, 187, 187, 179, 179, 168, 157, 155, 162, 167, 167, 164, 154, 161, 166, + 165, 160, 158, 159, 161, 155, 165, 172, 170, 156, 147, 146, 151, 154, 137, 134, + 135, 116, 89, 67, 51, 39, 52, 62, 72, 88, 95, 92, 95, 99, 99, 98, + 95, 99, 104, 103, 99, 101, 102, 102, 102, 102, 102, 101, 100, 97, 104, 100, + 67, 67, 68, 70, 71, 72, 72, 71, 66, 70, 69, 55, 36, 23, 23, 26, + 20, 11, 17, 37, 67, 93, 115, 131, 156, 162, 164, 165, 168, 172, 171, 166, + 175, 174, 171, 168, 164, 161, 158, 157, 160, 160, 160, 162, 164, 166, 168, 169, + 167, 169, 170, 168, 164, 162, 162, 163, 161, 161, 160, 159, 156, 149, 140, 133, + 132, 102, 86, 103, 127, 139, 147, 158, 154, 160, 169, 175, 179, 183, 190, 194, + 187, 187, 187, 187, 188, 190, 193, 194, 199, 196, 196, 199, 199, 196, 196, 199, + 190, 197, 206, 211, 210, 204, 198, 195, 204, 202, 200, 200, 200, 200, 199, 198, + 190, 194, 199, 203, 206, 205, 201, 196, 193, 194, 204, 217, 221, 210, 194, 185, + 196, 189, 182, 178, 173, 159, 138, 123, 133, 112, 107, 98, 71, 69, 82, 80, + 76, 75, 84, 99, 106, 112, 131, 154, 171, 174, 175, 171, 164, 160, 162, 164, + 157, 165, 169, 167, 165, 164, 163, 161, 158, 158, 160, 163, 163, 159, 151, 144, + 148, 140, 141, 139, 131, 126, 114, 93, 64, 65, 55, 52, 65, 76, 86, 100, + 104, 104, 101, 98, 102, 106, 104, 98, 102, 102, 102, 102, 102, 102, 101, 100, + 99, 105, 100, 69, 68, 69, 70, 71, 71, 70, 69, 67, 66, 58, 40, 22, + 14, 22, 30, 16, 12, 24, 53, 86, 111, 127, 136, 148, 155, 158, 159, 163, + 171, 173, 171, 163, 162, 162, 163, 162, 161, 160, 158, 159, 160, 161, 163, 166, + 169, 171, 172, 176, 173, 170, 169, 168, 168, 168, 167, 166, 164, 163, 162, 159, + 154, 145, 139, 138, 76, 33, 49, 85, 107, 127, 147, 148, 152, 160, 167, 172, + 177, 182, 184, 185, 186, 187, 187, 188, 188, 187, 187, 198, 194, 192, 195, 196, + 195, 197, 201, 199, 196, 191, 187, 187, 192, 200, 207, 204, 201, 197, 196, 198, + 199, 199, 199, 190, 192, 194, 198, 200, 199, 197, 196, 197, 192, 190, 192, 189, + 179, 168, 162, 151, 145, 138, 133, 132, 131, 127, 122, 89, 54, 50, 54, 32, + 30, 44, 41, 51, 42, 39, 44, 48, 57, 82, 110, 135, 147, 164, 173, 173, + 167, 161, 158, 163, 168, 169, 166, 164, 168, 166, 162, 164, 161, 159, 161, 163, + 162, 156, 147, 144, 139, 144, 143, 139, 143, 142, 126, 126, 118, 93, 68, 55, + 48, 53, 70, 95, 101, 104, 103, 106, 109, 106, 102, 106, 106, 106, 106, 105, + 104, 104, 104, 99, 105, 101, 72, 71, 71, 71, 71, 70, 69, 66, 68, 55, + 36, 24, 18, 18, 18, 17, 16, 27, 50, 78, 99, 120, 142, 161, 165, 172, + 175, 168, 163, 163, 162, 162, 166, 165, 165, 165, 164, 162, 159, 156, 158, 159, + 160, 162, 164, 166, 168, 170, 177, 170, 164, 163, 168, 171, 169, 165, 167, 164, + 160, 158, 157, 153, 146, 140, 106, 62, 38, 47, 50, 49, 78, 123, 146, 149, + 153, 159, 164, 167, 169, 169, 172, 176, 181, 188, 192, 195, 194, 194, 194, 189, + 186, 189, 192, 193, 196, 201, 193, 197, 202, 205, 205, 204, 203, 203, 202, 197, + 192, 191, 194, 196, 197, 196, 203, 203, 201, 198, 192, 186, 185, 187, 179, 169, + 159, 153, 148, 142, 140, 143, 144, 148, 150, 150, 149, 147, 143, 139, 80, 38, + 38, 55, 39, 32, 38, 28, 31, 43, 45, 36, 35, 46, 53, 51, 91, 96, + 110, 133, 157, 171, 171, 166, 165, 168, 165, 160, 160, 167, 167, 163, 164, 169, + 169, 166, 158, 155, 158, 160, 154, 142, 148, 156, 145, 133, 131, 130, 118, 128, + 123, 108, 88, 63, 52, 62, 75, 86, 97, 100, 99, 101, 103, 101, 102, 104, + 104, 104, 104, 103, 102, 102, 97, 105, 102, 73, 77, 80, 78, 74, 70, 67, + 62, 64, 41, 19, 12, 14, 15, 15, 14, 8, 36, 63, 85, 119, 142, 155, + 165, 152, 160, 166, 168, 164, 160, 160, 164, 172, 171, 168, 165, 162, 161, 160, + 161, 160, 165, 160, 158, 166, 166, 164, 171, 172, 168, 163, 161, 161, 163, 162, + 162, 158, 165, 157, 149, 162, 140, 160, 134, 66, 32, 39, 43, 41, 34, 31, + 71, 102, 123, 144, 152, 156, 162, 167, 169, 178, 172, 180, 188, 183, 184, 189, + 187, 197, 190, 202, 202, 175, 173, 194, 205, 208, 195, 188, 193, 199, 195, 189, + 187, 190, 188, 187, 185, 183, 180, 178, 178, 172, 171, 169, 167, 166, 165, 164, + 164, 164, 162, 159, 158, 159, 160, 159, 158, 155, 178, 134, 157, 160, 133, 159, + 115, 33, 33, 34, 34, 32, 30, 28, 26, 29, 34, 37, 35, 30, 30, 35, + 41, 49, 54, 72, 90, 126, 155, 156, 171, 164, 174, 170, 159, 158, 158, 161, + 171, 159, 168, 172, 169, 162, 161, 161, 158, 151, 150, 153, 157, 152, 142, 135, + 134, 135, 139, 130, 123, 125, 108, 75, 54, 50, 45, 62, 82, 87, 91, 96, + 94, 102, 97, 106, 112, 102, 95, 100, 101, 97, 98, 97, 74, 75, 76, 76, + 76, 72, 63, 54, 34, 25, 17, 18, 18, 13, 11, 10, 22, 53, 81, 105, + 133, 148, 151, 156, 161, 163, 167, 169, 168, 166, 163, 164, 170, 171, 168, 166, + 164, 163, 163, 163, 163, 168, 163, 160, 167, 166, 164, 171, 168, 166, 161, 160, + 160, 161, 159, 159, 161, 143, 177, 149, 147, 148, 145, 66, 45, 31, 42, 40, + 36, 34, 23, 41, 40, 68, 105, 134, 152, 159, 155, 148, 151, 150, 162, 171, + 166, 167, 177, 180, 189, 174, 178, 184, 175, 173, 171, 156, 163, 164, 168, 170, + 170, 172, 176, 181, 172, 172, 172, 171, 170, 169, 168, 168, 169, 169, 168, 167, + 167, 167, 167, 168, 173, 170, 168, 167, 168, 169, 168, 168, 166, 154, 168, 154, + 161, 144, 157, 53, 37, 37, 37, 36, 34, 32, 30, 29, 33, 33, 32, 31, + 30, 30, 32, 33, 37, 42, 52, 53, 84, 121, 133, 153, 161, 170, 166, 163, + 169, 166, 154, 150, 157, 163, 166, 164, 161, 161, 160, 157, 158, 154, 151, 150, + 146, 140, 139, 142, 132, 141, 138, 133, 138, 131, 116, 107, 84, 57, 48, 56, + 67, 83, 94, 94, 106, 98, 99, 99, 90, 92, 98, 97, 107, 104, 100, 73, + 71, 73, 77, 79, 70, 53, 38, 17, 17, 21, 24, 18, 11, 10, 16, 23, + 57, 90, 118, 147, 158, 157, 161, 165, 163, 164, 165, 168, 168, 163, 162, 171, + 170, 168, 166, 165, 164, 165, 165, 165, 170, 164, 161, 166, 164, 160, 167, 163, + 162, 159, 159, 159, 158, 156, 154, 158, 142, 160, 154, 130, 151, 86, 27, 36, + 40, 49, 37, 33, 39, 27, 24, 32, 37, 43, 53, 71, 93, 109, 116, 114, + 114, 125, 129, 117, 114, 123, 128, 133, 108, 90, 84, 86, 101, 106, 92, 70, + 106, 142, 156, 156, 159, 163, 164, 171, 171, 171, 172, 172, 172, 173, 173, 181, + 180, 179, 178, 177, 177, 177, 177, 180, 178, 176, 176, 177, 178, 177, 176, 173, + 160, 163, 168, 153, 160, 105, 23, 38, 37, 36, 33, 32, 31, 30, 29, 35, + 32, 29, 28, 30, 31, 29, 27, 31, 37, 42, 31, 50, 84, 101, 128, 152, + 162, 162, 162, 171, 171, 164, 163, 156, 159, 160, 159, 161, 163, 159, 154, 159, + 154, 152, 152, 149, 144, 144, 146, 137, 147, 144, 136, 137, 136, 135, 140, 123, + 93, 69, 59, 53, 62, 77, 79, 96, 97, 107, 111, 106, 106, 104, 92, 94, + 93, 92, 76, 72, 73, 76, 72, 55, 36, 22, 22, 19, 21, 20, 14, 10, + 13, 23, 24, 57, 91, 123, 153, 163, 161, 165, 163, 162, 163, 166, 166, 166, + 164, 163, 169, 169, 168, 167, 166, 166, 166, 166, 164, 169, 163, 159, 164, 160, + 155, 160, 160, 159, 158, 158, 158, 157, 153, 150, 154, 150, 139, 135, 143, 102, + 33, 43, 42, 46, 46, 34, 29, 37, 33, 28, 24, 25, 25, 27, 31, 37, + 40, 41, 50, 45, 52, 54, 42, 37, 43, 44, 49, 48, 48, 45, 46, 53, + 54, 47, 46, 101, 152, 170, 171, 176, 179, 175, 183, 182, 182, 184, 183, 185, + 185, 186, 195, 194, 192, 189, 187, 185, 184, 184, 182, 181, 179, 179, 180, 181, + 180, 178, 175, 178, 147, 164, 167, 124, 47, 41, 33, 31, 29, 27, 27, 27, + 28, 29, 32, 31, 30, 29, 30, 30, 29, 28, 32, 33, 40, 34, 42, 56, + 67, 102, 124, 146, 158, 161, 166, 165, 164, 170, 160, 160, 158, 157, 161, 163, + 158, 150, 154, 152, 154, 158, 158, 151, 146, 145, 145, 152, 146, 135, 134, 132, + 135, 146, 134, 124, 115, 93, 60, 48, 57, 64, 71, 80, 97, 103, 99, 103, + 102, 90, 102, 103, 104, 84, 76, 68, 61, 47, 31, 22, 20, 24, 19, 15, + 14, 13, 11, 16, 24, 42, 70, 100, 128, 153, 157, 154, 159, 160, 165, 170, + 170, 168, 165, 166, 169, 167, 167, 167, 168, 168, 167, 168, 168, 165, 170, 164, + 160, 164, 159, 153, 158, 158, 157, 156, 157, 157, 156, 152, 149, 149, 148, 144, + 121, 138, 38, 35, 54, 40, 38, 32, 30, 29, 27, 30, 29, 18, 25, 35, + 39, 34, 26, 19, 18, 36, 27, 31, 38, 35, 36, 41, 38, 27, 37, 42, + 40, 40, 42, 45, 48, 87, 130, 165, 171, 169, 181, 188, 185, 190, 189, 188, + 188, 187, 188, 188, 189, 195, 194, 191, 189, 187, 185, 185, 184, 184, 182, 181, + 181, 182, 181, 179, 177, 175, 173, 169, 146, 170, 50, 44, 44, 27, 27, 25, + 25, 25, 26, 28, 29, 26, 30, 33, 32, 29, 28, 30, 34, 34, 25, 34, + 39, 42, 37, 42, 86, 102, 126, 142, 152, 163, 161, 153, 153, 165, 163, 159, + 157, 161, 163, 157, 148, 156, 153, 153, 158, 160, 154, 148, 147, 148, 149, 142, + 137, 141, 139, 140, 149, 128, 134, 141, 125, 86, 62, 59, 58, 48, 49, 57, + 57, 51, 61, 76, 78, 83, 93, 102, 83, 67, 50, 36, 22, 12, 14, 24, + 14, 9, 8, 12, 16, 15, 17, 23, 52, 79, 105, 129, 153, 155, 152, 159, + 153, 160, 168, 169, 166, 164, 165, 168, 166, 166, 167, 168, 169, 169, 169, 169, + 168, 173, 168, 164, 167, 162, 156, 159, 156, 155, 154, 155, 155, 153, 150, 147, + 139, 153, 138, 148, 64, 32, 47, 41, 34, 32, 24, 37, 38, 24, 27, 25, + 31, 28, 27, 25, 20, 19, 27, 37, 25, 13, 15, 24, 24, 28, 31, 26, + 36, 33, 20, 16, 26, 29, 34, 51, 110, 142, 167, 170, 171, 182, 184, 178, + 191, 190, 189, 187, 186, 187, 188, 188, 190, 190, 189, 188, 188, 189, 190, 190, + 187, 186, 184, 184, 184, 182, 179, 177, 170, 172, 181, 158, 101, 27, 53, 25, + 27, 26, 26, 27, 27, 28, 30, 31, 22, 29, 34, 33, 29, 27, 31, 36, + 37, 24, 31, 38, 42, 35, 37, 78, 110, 116, 115, 122, 147, 162, 164, 166, + 167, 166, 162, 158, 160, 162, 157, 149, 164, 156, 150, 151, 154, 153, 153, 154, + 151, 150, 142, 140, 146, 141, 135, 141, 140, 139, 143, 135, 112, 93, 75, 56, + 36, 32, 37, 42, 34, 36, 48, 53, 43, 57, 72, 58, 40, 27, 22, 15, + 7, 9, 17, 9, 6, 7, 11, 15, 17, 21, 30, 52, 75, 102, 130, 153, + 155, 153, 162, 150, 155, 164, 168, 168, 166, 164, 164, 165, 166, 168, 170, 171, + 171, 171, 170, 169, 175, 170, 166, 170, 164, 157, 161, 154, 152, 151, 151, 151, + 150, 147, 145, 137, 153, 128, 137, 16, 49, 40, 35, 32, 35, 24, 38, 39, + 24, 30, 21, 25, 22, 24, 29, 28, 22, 19, 21, 36, 25, 27, 32, 27, + 28, 32, 28, 21, 25, 24, 34, 47, 36, 32, 53, 135, 158, 180, 187, 190, + 195, 193, 187, 194, 193, 192, 190, 190, 191, 192, 192, 192, 191, 191, 191, 192, + 193, 194, 195, 190, 188, 186, 185, 185, 182, 178, 175, 169, 179, 164, 153, 30, + 44, 34, 24, 29, 28, 29, 29, 29, 28, 27, 28, 25, 28, 31, 31, 29, + 27, 28, 29, 36, 32, 38, 36, 42, 42, 35, 58, 115, 120, 112, 109, 126, + 145, 160, 175, 165, 165, 162, 158, 159, 161, 158, 151, 166, 158, 150, 152, 155, + 153, 154, 154, 152, 153, 147, 145, 146, 136, 129, 136, 148, 140, 142, 142, 135, + 126, 102, 71, 47, 33, 38, 53, 49, 41, 41, 41, 49, 54, 56, 28, 14, + 11, 19, 22, 12, 4, 4, 15, 12, 9, 11, 10, 14, 23, 38, 54, 77, + 103, 130, 151, 150, 145, 154, 154, 156, 163, 171, 176, 176, 170, 165, 164, 166, + 168, 170, 171, 172, 171, 171, 167, 173, 168, 165, 168, 163, 156, 160, 152, 150, + 148, 147, 148, 147, 145, 144, 146, 136, 141, 70, 43, 34, 34, 40, 31, 40, + 23, 29, 29, 22, 32, 17, 36, 26, 22, 27, 31, 28, 25, 25, 25, 18, + 22, 26, 18, 18, 25, 25, 26, 30, 24, 30, 39, 32, 50, 99, 162, 173, + 178, 177, 176, 182, 188, 191, 194, 194, 192, 191, 191, 193, 196, 197, 194, 193, + 192, 191, 191, 191, 191, 192, 190, 188, 186, 185, 184, 180, 176, 172, 176, 177, + 157, 108, 26, 47, 13, 42, 29, 30, 30, 30, 28, 26, 24, 22, 29, 27, + 27, 28, 29, 28, 25, 22, 27, 36, 45, 33, 39, 46, 27, 28, 99, 125, + 136, 127, 118, 114, 125, 145, 161, 163, 161, 158, 158, 160, 158, 154, 160, 155, + 152, 157, 160, 157, 151, 148, 147, 151, 150, 151, 152, 142, 138, 150, 135, 134, + 145, 153, 152, 150, 131, 101, 70, 38, 30, 47, 49, 44, 45, 48, 53, 49, + 45, 23, 19, 17, 15, 13, 12, 10, 9, 12, 11, 14, 14, 11, 11, 19, + 32, 66, 88, 104, 123, 150, 164, 160, 159, 156, 160, 167, 173, 179, 181, 173, + 164, 156, 157, 161, 167, 172, 175, 174, 172, 171, 168, 166, 165, 164, 162, 156, + 151, 155, 148, 151, 154, 146, 145, 146, 140, 162, 120, 126, 49, 35, 47, 29, + 35, 34, 30, 29, 32, 36, 35, 29, 23, 19, 28, 29, 27, 28, 23, 23, + 35, 27, 28, 27, 25, 22, 23, 25, 28, 28, 24, 24, 39, 55, 67, 100, + 148, 175, 180, 184, 187, 188, 189, 190, 193, 194, 195, 195, 195, 195, 195, 195, + 194, 195, 195, 194, 193, 193, 192, 191, 191, 191, 194, 192, 185, 179, 179, 178, + 176, 185, 158, 161, 55, 41, 30, 27, 28, 28, 25, 33, 37, 27, 25, 27, + 22, 32, 24, 31, 31, 22, 33, 41, 26, 33, 35, 37, 39, 40, 39, 37, + 36, 82, 129, 125, 133, 137, 133, 106, 132, 139, 157, 169, 166, 160, 160, 166, + 168, 165, 159, 157, 160, 159, 153, 150, 153, 155, 153, 151, 150, 150, 146, 143, + 142, 130, 139, 143, 142, 144, 147, 137, 124, 65, 31, 40, 62, 53, 50, 54, + 40, 50, 48, 45, 14, 11, 9, 7, 6, 5, 6, 6, 9, 9, 12, 14, + 13, 13, 20, 33, 54, 86, 112, 128, 143, 147, 146, 151, 167, 167, 170, 170, + 175, 179, 177, 171, 172, 169, 166, 165, 167, 169, 170, 170, 170, 168, 166, 166, + 166, 163, 158, 154, 148, 142, 147, 150, 145, 146, 149, 144, 146, 140, 98, 39, + 40, 40, 33, 32, 29, 26, 25, 28, 31, 30, 25, 20, 23, 28, 25, 23, + 25, 19, 17, 27, 24, 26, 28, 28, 28, 28, 27, 27, 32, 26, 34, 78, + 132, 153, 156, 166, 171, 176, 180, 184, 185, 186, 188, 190, 197, 197, 198, 198, + 197, 197, 197, 196, 193, 193, 192, 192, 192, 191, 191, 191, 188, 188, 184, 180, + 180, 182, 179, 174, 173, 162, 129, 28, 28, 27, 23, 33, 23, 23, 25, 21, + 15, 23, 32, 31, 15, 25, 39, 39, 29, 29, 30, 23, 31, 33, 35, 37, + 38, 38, 37, 36, 61, 122, 126, 131, 135, 132, 127, 125, 128, 140, 150, 154, + 156, 162, 165, 164, 161, 154, 151, 154, 155, 152, 149, 151, 151, 153, 154, 152, + 147, 142, 142, 144, 137, 141, 145, 147, 151, 150, 139, 128, 109, 70, 54, 56, + 45, 44, 53, 53, 57, 54, 51, 13, 10, 8, 7, 6, 8, 9, 9, 6, + 5, 7, 10, 9, 10, 16, 28, 74, 103, 126, 141, 158, 160, 154, 156, 158, + 166, 176, 181, 185, 182, 171, 159, 166, 165, 165, 167, 171, 174, 175, 175, 167, + 166, 165, 165, 166, 163, 158, 154, 147, 141, 145, 148, 144, 147, 149, 142, 136, + 154, 63, 35, 45, 36, 40, 33, 26, 22, 22, 25, 28, 27, 22, 18, 26, + 26, 20, 21, 27, 21, 17, 25, 37, 33, 28, 25, 26, 28, 29, 31, 28, + 46, 74, 116, 158, 169, 164, 167, 174, 178, 183, 186, 187, 189, 191, 193, 196, + 196, 197, 197, 197, 197, 197, 197, 191, 191, 191, 191, 191, 190, 190, 190, 187, + 184, 180, 178, 183, 187, 182, 174, 173, 167, 96, 21, 28, 33, 21, 32, 37, + 37, 30, 23, 30, 41, 36, 18, 22, 28, 24, 22, 29, 32, 30, 31, 28, + 29, 32, 34, 36, 36, 36, 36, 38, 102, 130, 129, 134, 133, 147, 121, 129, + 134, 140, 148, 158, 167, 168, 165, 164, 156, 151, 153, 157, 156, 155, 154, 149, + 155, 158, 154, 146, 142, 144, 147, 143, 139, 141, 150, 157, 151, 140, 131, 113, + 80, 53, 46, 44, 40, 45, 51, 43, 42, 42, 8, 9, 10, 11, 11, 12, + 12, 11, 8, 7, 7, 10, 10, 9, 13, 22, 56, 90, 117, 130, 141, 144, + 145, 155, 149, 161, 175, 182, 184, 179, 166, 154, 157, 160, 167, 173, 178, 177, + 172, 168, 166, 166, 166, 165, 164, 160, 155, 151, 152, 146, 148, 149, 144, 147, + 148, 137, 141, 130, 35, 37, 41, 37, 40, 28, 27, 25, 24, 26, 28, 28, + 24, 21, 24, 23, 18, 22, 31, 24, 19, 27, 25, 25, 27, 31, 38, 41, + 40, 39, 73, 110, 140, 153, 160, 160, 165, 178, 175, 179, 184, 188, 189, 191, + 192, 195, 193, 194, 194, 195, 194, 196, 195, 195, 194, 193, 193, 192, 191, 190, + 189, 189, 187, 187, 184, 182, 185, 188, 184, 177, 165, 141, 58, 30, 30, 38, + 25, 28, 13, 33, 35, 24, 27, 36, 30, 18, 29, 39, 30, 23, 32, 30, + 27, 40, 28, 29, 31, 34, 36, 37, 37, 38, 31, 69, 134, 130, 135, 140, + 150, 128, 140, 140, 142, 146, 155, 163, 166, 167, 168, 161, 155, 155, 159, 160, + 158, 155, 152, 157, 158, 154, 149, 148, 148, 146, 142, 133, 135, 150, 158, 151, + 140, 135, 124, 94, 58, 47, 56, 55, 52, 59, 45, 46, 46, 2, 4, 8, + 12, 13, 13, 10, 8, 16, 13, 12, 14, 12, 9, 11, 17, 31, 75, 116, + 133, 141, 146, 155, 174, 157, 161, 164, 165, 167, 171, 172, 170, 172, 174, 176, + 178, 177, 171, 162, 156, 169, 170, 171, 170, 167, 161, 156, 152, 155, 151, 153, + 153, 148, 151, 149, 133, 145, 79, 24, 43, 30, 38, 32, 22, 25, 24, 25, + 27, 28, 27, 26, 24, 23, 22, 18, 25, 32, 25, 21, 34, 32, 46, 67, + 88, 102, 105, 101, 96, 133, 154, 164, 164, 172, 176, 176, 182, 173, 177, 180, + 184, 186, 187, 189, 191, 191, 192, 192, 194, 193, 195, 194, 195, 198, 197, 195, + 194, 192, 190, 189, 188, 186, 189, 189, 185, 182, 183, 181, 177, 158, 102, 27, + 33, 22, 33, 32, 40, 79, 103, 90, 44, 18, 15, 26, 42, 16, 40, 47, + 43, 41, 25, 17, 34, 29, 30, 32, 34, 36, 37, 38, 40, 38, 40, 129, + 131, 137, 147, 140, 142, 143, 143, 142, 142, 143, 148, 156, 164, 166, 161, 155, + 154, 156, 159, 155, 151, 153, 154, 152, 148, 150, 153, 149, 141, 138, 131, 135, + 150, 159, 153, 144, 141, 146, 109, 59, 39, 48, 52, 51, 57, 49, 50, 48, + 3, 6, 11, 16, 18, 17, 13, 10, 14, 10, 9, 10, 8, 5, 5, 8, + 4, 29, 58, 88, 125, 143, 141, 141, 151, 157, 163, 165, 167, 171, 172, 170, + 184, 182, 177, 174, 171, 169, 166, 163, 172, 174, 176, 175, 171, 165, 161, 157, + 155, 153, 157, 157, 153, 157, 150, 130, 132, 44, 32, 49, 31, 40, 32, 25, + 24, 23, 25, 25, 25, 25, 25, 24, 23, 23, 21, 25, 29, 20, 26, 48, + 89, 100, 115, 129, 141, 150, 157, 161, 154, 164, 166, 164, 173, 174, 172, 175, + 176, 180, 184, 186, 187, 188, 189, 191, 192, 192, 193, 194, 194, 195, 196, 196, + 198, 197, 196, 194, 192, 190, 189, 188, 184, 189, 190, 185, 180, 178, 177, 174, + 180, 116, 47, 38, 23, 31, 35, 74, 122, 159, 170, 157, 141, 98, 39, 12, + 38, 35, 28, 31, 41, 38, 28, 28, 31, 31, 32, 34, 35, 37, 38, 39, + 44, 32, 106, 130, 139, 149, 136, 152, 144, 144, 145, 143, 139, 139, 149, 160, + 161, 162, 160, 157, 157, 159, 157, 153, 151, 152, 147, 143, 148, 154, 149, 136, + 137, 135, 141, 152, 158, 156, 150, 146, 137, 102, 67, 52, 51, 51, 50, 45, + 48, 48, 48, 9, 11, 13, 16, 17, 17, 17, 16, 12, 7, 5, 7, 6, + 2, 0, 3, 14, 19, 27, 55, 105, 136, 136, 131, 138, 151, 164, 170, 171, + 169, 164, 159, 174, 172, 169, 169, 170, 172, 173, 173, 168, 172, 176, 176, 173, + 168, 164, 162, 158, 158, 162, 161, 155, 157, 147, 122, 90, 38, 42, 42, 37, + 34, 33, 31, 23, 23, 24, 24, 24, 23, 25, 25, 24, 25, 23, 24, 25, + 22, 43, 79, 127, 130, 132, 132, 135, 143, 158, 170, 167, 178, 180, 179, 181, + 174, 174, 187, 181, 183, 187, 189, 189, 189, 190, 191, 190, 190, 191, 191, 192, + 193, 194, 195, 194, 194, 193, 193, 192, 191, 191, 190, 185, 188, 187, 183, 182, + 181, 177, 171, 187, 157, 91, 36, 32, 34, 29, 113, 153, 164, 152, 149, 172, + 158, 120, 108, 105, 73, 50, 44, 43, 44, 40, 31, 31, 31, 32, 32, 33, + 35, 36, 37, 40, 45, 72, 126, 140, 143, 147, 152, 149, 148, 150, 150, 143, + 138, 142, 151, 153, 160, 163, 160, 158, 160, 161, 158, 150, 154, 151, 145, 147, + 153, 151, 138, 135, 141, 148, 152, 154, 155, 151, 145, 132, 106, 95, 87, 70, + 67, 71, 59, 65, 63, 64, 8, 7, 7, 8, 9, 10, 13, 14, 15, 10, + 9, 12, 12, 9, 8, 10, 0, 14, 20, 23, 43, 70, 100, 129, 139, 148, + 154, 155, 155, 160, 164, 164, 161, 163, 165, 168, 171, 171, 168, 166, 161, 167, + 171, 174, 170, 166, 163, 162, 163, 163, 167, 163, 155, 154, 141, 113, 46, 39, + 41, 26, 37, 20, 28, 28, 24, 25, 26, 26, 26, 25, 26, 27, 23, 25, + 25, 25, 26, 29, 60, 107, 134, 145, 157, 160, 156, 154, 159, 164, 176, 175, + 172, 178, 188, 184, 180, 190, 179, 182, 184, 186, 185, 185, 186, 187, 187, 188, + 188, 189, 190, 191, 192, 192, 189, 189, 189, 191, 190, 192, 192, 192, 189, 188, + 185, 183, 187, 188, 181, 171, 156, 169, 110, 21, 36, 35, 19, 137, 141, 168, + 165, 162, 177, 165, 152, 171, 156, 140, 133, 107, 53, 28, 34, 35, 31, 31, + 31, 31, 31, 32, 34, 35, 32, 61, 46, 122, 139, 137, 160, 148, 151, 149, + 150, 152, 145, 135, 132, 136, 142, 153, 159, 157, 154, 157, 158, 157, 150, 159, + 158, 150, 149, 154, 153, 144, 133, 145, 152, 148, 147, 151, 147, 140, 141, 112, + 104, 89, 55, 55, 75, 67, 71, 66, 63, 10, 4, 1, 2, 7, 12, 13, + 13, 10, 4, 7, 10, 7, 11, 14, 8, 17, 16, 13, 13, 11, 8, 27, + 68, 123, 129, 137, 144, 150, 154, 158, 159, 165, 159, 158, 159, 164, 167, 167, + 165, 162, 165, 166, 165, 163, 162, 163, 168, 172, 169, 162, 154, 159, 168, 136, + 81, 35, 40, 38, 30, 28, 34, 34, 29, 29, 27, 24, 23, 24, 29, 34, + 36, 33, 31, 25, 27, 46, 80, 107, 121, 141, 146, 150, 151, 152, 156, 162, + 168, 168, 178, 183, 182, 181, 185, 183, 178, 185, 187, 188, 184, 183, 188, 191, + 191, 187, 191, 193, 192, 192, 193, 195, 195, 191, 188, 185, 187, 189, 191, 190, + 188, 188, 182, 186, 189, 183, 185, 185, 176, 164, 111, 78, 41, 37, 28, 27, + 114, 157, 154, 160, 172, 175, 172, 174, 182, 165, 179, 177, 165, 138, 79, 30, + 27, 30, 29, 40, 43, 33, 29, 34, 36, 42, 39, 53, 100, 141, 142, 142, + 156, 148, 156, 159, 154, 145, 141, 138, 135, 136, 149, 161, 163, 158, 159, 159, + 158, 157, 158, 157, 154, 147, 142, 138, 137, 145, 143, 145, 152, 153, 148, 145, + 142, 143, 123, 116, 80, 65, 70, 61, 72, 65, 61, 60, 11, 11, 11, 11, + 11, 9, 9, 9, 14, 7, 10, 13, 11, 14, 17, 12, 7, 14, 16, 19, + 18, 2, 0, 13, 54, 100, 127, 123, 127, 153, 161, 147, 155, 154, 154, 156, + 155, 156, 159, 162, 161, 165, 166, 163, 156, 155, 160, 168, 179, 174, 170, 164, + 159, 149, 102, 42, 49, 47, 46, 44, 37, 29, 28, 32, 29, 28, 29, 31, + 33, 30, 23, 18, 40, 29, 39, 76, 107, 117, 124, 137, 142, 148, 156, 160, + 160, 159, 161, 163, 167, 174, 179, 177, 178, 183, 185, 183, 180, 183, 184, 182, + 185, 189, 189, 185, 196, 190, 183, 180, 184, 188, 186, 181, 189, 185, 184, 184, + 186, 188, 189, 188, 189, 182, 186, 187, 182, 183, 184, 176, 175, 129, 85, 32, + 29, 36, 31, 94, 155, 144, 146, 161, 168, 159, 155, 162, 154, 167, 172, 177, + 177, 143, 80, 32, 50, 32, 21, 27, 34, 34, 34, 36, 42, 31, 49, 75, + 127, 142, 143, 147, 147, 153, 155, 150, 145, 142, 138, 133, 143, 133, 145, 166, + 167, 160, 161, 165, 161, 161, 160, 157, 152, 149, 145, 144, 148, 146, 148, 153, + 153, 148, 142, 141, 144, 130, 115, 78, 50, 63, 59, 71, 68, 66, 65, 7, + 12, 17, 17, 13, 8, 7, 8, 15, 8, 12, 15, 11, 14, 17, 11, 10, + 17, 13, 10, 16, 12, 6, 10, 18, 53, 97, 126, 140, 144, 142, 138, 147, + 152, 156, 155, 151, 151, 159, 166, 160, 164, 166, 162, 156, 156, 162, 171, 159, + 169, 176, 160, 130, 114, 104, 88, 49, 48, 38, 30, 35, 45, 37, 19, 32, + 28, 22, 22, 28, 34, 39, 39, 36, 40, 67, 110, 134, 134, 132, 140, 146, + 152, 159, 163, 164, 164, 166, 169, 168, 172, 175, 174, 175, 181, 185, 186, 183, + 185, 184, 183, 186, 190, 187, 181, 177, 178, 182, 187, 189, 187, 182, 177, 187, + 183, 182, 182, 184, 187, 189, 188, 190, 182, 185, 185, 179, 180, 182, 174, 169, + 130, 81, 26, 30, 44, 19, 35, 96, 143, 163, 142, 136, 162, 169, 155, 174, + 175, 170, 161, 164, 158, 106, 36, 20, 40, 40, 28, 33, 40, 34, 26, 43, + 26, 46, 48, 103, 144, 146, 142, 149, 152, 152, 149, 148, 147, 142, 135, 143, + 124, 134, 156, 160, 165, 169, 160, 165, 162, 158, 157, 157, 155, 152, 149, 149, + 147, 148, 152, 153, 148, 142, 141, 141, 138, 116, 85, 32, 48, 42, 53, 52, + 55, 60, 4, 8, 13, 14, 13, 10, 8, 8, 12, 5, 10, 13, 9, 13, + 16, 11, 14, 21, 11, 2, 10, 19, 20, 25, 7, 12, 38, 80, 110, 119, + 122, 129, 143, 149, 153, 152, 150, 151, 156, 162, 158, 160, 161, 161, 160, 162, + 166, 170, 179, 160, 152, 154, 158, 165, 162, 147, 150, 119, 78, 48, 33, 31, + 38, 46, 31, 33, 34, 33, 30, 27, 26, 26, 53, 84, 112, 119, 120, 129, + 136, 139, 148, 150, 150, 150, 151, 156, 165, 172, 167, 170, 172, 173, 174, 177, + 181, 183, 184, 186, 186, 182, 181, 182, 180, 176, 178, 179, 181, 177, 171, 171, + 183, 196, 181, 181, 183, 185, 186, 187, 187, 187, 190, 182, 184, 184, 177, 178, + 180, 173, 177, 159, 123, 64, 45, 47, 27, 35, 47, 70, 113, 149, 151, 136, + 138, 156, 159, 158, 162, 157, 156, 175, 164, 119, 29, 45, 44, 36, 40, 37, + 29, 28, 42, 32, 43, 38, 71, 145, 148, 147, 154, 154, 152, 151, 154, 155, + 149, 140, 139, 132, 136, 136, 137, 166, 178, 151, 167, 161, 156, 155, 157, 157, + 153, 148, 146, 144, 145, 150, 151, 147, 143, 142, 131, 139, 120, 102, 31, 45, + 36, 41, 38, 47, 54, 10, 9, 8, 10, 12, 13, 10, 8, 9, 3, 8, + 12, 9, 14, 19, 13, 5, 21, 19, 9, 13, 15, 10, 9, 9, 18, 17, + 18, 47, 98, 126, 130, 139, 144, 147, 148, 147, 147, 147, 149, 158, 157, 156, + 158, 160, 162, 161, 160, 166, 156, 161, 174, 179, 181, 174, 159, 156, 139, 145, + 156, 117, 48, 16, 27, 25, 28, 31, 29, 30, 42, 61, 79, 108, 132, 145, + 135, 125, 131, 142, 146, 141, 143, 142, 140, 139, 142, 149, 156, 158, 161, 165, + 170, 172, 174, 177, 181, 175, 181, 182, 176, 172, 173, 176, 176, 175, 178, 185, + 190, 184, 173, 169, 171, 174, 178, 184, 188, 188, 187, 186, 185, 189, 182, 184, + 184, 177, 178, 180, 171, 163, 167, 151, 91, 37, 16, 17, 42, 32, 36, 69, + 124, 157, 153, 141, 140, 158, 159, 171, 171, 158, 160, 158, 133, 114, 71, 34, + 33, 40, 30, 28, 44, 35, 41, 39, 42, 42, 134, 148, 157, 156, 155, 153, + 152, 156, 158, 152, 143, 142, 140, 140, 131, 129, 154, 172, 160, 166, 162, 156, + 155, 158, 158, 152, 147, 144, 141, 142, 148, 150, 147, 144, 144, 126, 135, 120, + 116, 41, 48, 47, 47, 41, 49, 54, 18, 13, 9, 9, 12, 13, 11, 7, + 11, 6, 10, 14, 10, 14, 19, 14, 3, 19, 19, 10, 11, 11, 8, 12, + 17, 23, 24, 20, 26, 49, 77, 100, 128, 136, 140, 144, 145, 145, 144, 142, + 156, 155, 153, 153, 154, 154, 151, 150, 144, 161, 185, 185, 162, 153, 161, 166, + 153, 152, 149, 141, 129, 103, 63, 32, 33, 43, 56, 66, 79, 104, 134, 157, + 150, 144, 142, 147, 146, 140, 141, 147, 144, 148, 150, 150, 145, 141, 140, 142, + 145, 147, 154, 162, 167, 168, 172, 178, 170, 176, 178, 175, 173, 175, 177, 175, + 172, 164, 167, 184, 193, 187, 172, 164, 170, 175, 182, 186, 187, 185, 184, 184, + 187, 180, 184, 186, 179, 179, 180, 171, 176, 177, 169, 141, 100, 68, 48, 40, + 29, 50, 56, 53, 87, 142, 163, 151, 137, 136, 145, 156, 159, 162, 163, 154, + 151, 128, 93, 48, 20, 32, 45, 34, 30, 44, 35, 46, 31, 107, 150, 162, + 156, 155, 153, 151, 154, 157, 152, 144, 149, 141, 138, 144, 141, 133, 144, 168, + 165, 162, 159, 160, 160, 159, 155, 151, 145, 141, 142, 147, 150, 147, 144, 145, + 139, 134, 117, 116, 44, 34, 43, 37, 30, 38, 41, 12, 11, 9, 9, 10, + 11, 10, 9, 14, 7, 10, 14, 10, 12, 15, 9, 10, 17, 10, 3, 8, + 9, 14, 25, 13, 8, 17, 30, 21, 2, 10, 39, 92, 108, 122, 132, 135, + 138, 141, 146, 150, 152, 153, 149, 146, 147, 152, 158, 181, 173, 171, 171, 171, + 180, 178, 160, 155, 169, 164, 146, 151, 156, 111, 48, 85, 102, 127, 146, 153, + 151, 144, 141, 152, 143, 141, 148, 151, 148, 144, 146, 150, 154, 157, 157, 151, + 147, 145, 145, 141, 140, 145, 151, 155, 156, 162, 170, 170, 171, 172, 173, 177, + 177, 170, 160, 160, 135, 114, 114, 126, 142, 163, 182, 167, 173, 178, 180, 180, + 180, 183, 185, 185, 179, 185, 188, 182, 181, 181, 171, 166, 162, 154, 152, 144, + 125, 86, 36, 49, 27, 21, 31, 38, 51, 96, 149, 162, 165, 156, 150, 155, + 153, 147, 147, 141, 153, 153, 90, 22, 35, 57, 27, 30, 41, 37, 44, 41, + 75, 159, 163, 157, 158, 156, 153, 155, 157, 153, 146, 146, 150, 145, 152, 152, + 118, 108, 144, 160, 160, 161, 163, 161, 160, 157, 154, 151, 146, 146, 149, 150, + 147, 143, 144, 149, 129, 117, 120, 57, 24, 38, 22, 17, 27, 32, 0, 4, + 8, 9, 8, 7, 10, 14, 15, 7, 10, 12, 6, 7, 9, 2, 10, 14, + 8, 6, 12, 7, 4, 11, 20, 26, 25, 18, 16, 20, 20, 18, 48, 72, + 97, 111, 117, 123, 134, 145, 143, 150, 153, 147, 141, 145, 161, 175, 171, 169, + 170, 165, 163, 172, 170, 149, 149, 144, 147, 156, 149, 135, 135, 148, 152, 147, + 142, 140, 143, 148, 149, 151, 139, 157, 161, 148, 145, 158, 162, 153, 150, 152, + 152, 150, 146, 146, 149, 153, 144, 140, 140, 144, 145, 144, 150, 160, 167, 165, + 161, 164, 172, 171, 154, 134, 86, 80, 80, 82, 79, 81, 103, 130, 168, 172, + 174, 174, 174, 176, 182, 186, 183, 178, 185, 190, 184, 183, 182, 171, 169, 174, + 167, 158, 149, 150, 137, 96, 61, 44, 39, 47, 42, 33, 47, 75, 116, 141, + 142, 138, 149, 154, 148, 154, 161, 129, 140, 126, 54, 29, 50, 46, 35, 38, + 42, 41, 57, 56, 168, 162, 160, 162, 160, 157, 157, 158, 155, 150, 135, 163, + 158, 148, 150, 113, 84, 107, 152, 154, 159, 161, 161, 159, 157, 157, 156, 151, + 149, 152, 151, 147, 143, 143, 144, 118, 118, 131, 81, 34, 49, 26, 26, 34, + 40, 7, 9, 9, 6, 6, 11, 14, 12, 11, 12, 12, 11, 10, 9, 7, + 7, 11, 13, 12, 10, 8, 8, 10, 13, 14, 18, 20, 18, 19, 17, 11, + 7, 29, 13, 61, 111, 97, 105, 136, 132, 137, 149, 142, 131, 145, 164, 167, + 165, 167, 162, 158, 159, 161, 158, 149, 141, 154, 145, 136, 137, 136, 137, 146, + 155, 143, 142, 139, 138, 140, 143, 146, 148, 152, 155, 157, 158, 158, 154, 149, + 146, 164, 156, 149, 150, 157, 160, 156, 150, 153, 150, 148, 148, 150, 150, 148, + 145, 148, 153, 145, 138, 151, 156, 117, 65, 73, 82, 53, 60, 70, 82, 91, + 100, 147, 170, 174, 165, 168, 174, 178, 184, 178, 176, 177, 180, 185, 186, 180, + 175, 174, 176, 170, 159, 153, 153, 149, 143, 120, 91, 57, 38, 40, 44, 39, + 31, 44, 103, 153, 154, 138, 139, 146, 148, 148, 153, 164, 131, 117, 51, 24, + 57, 45, 35, 42, 52, 38, 79, 159, 173, 155, 167, 166, 154, 152, 161, 160, + 149, 139, 150, 151, 151, 155, 138, 105, 83, 117, 161, 160, 165, 163, 158, 165, + 153, 155, 153, 149, 144, 144, 146, 141, 135, 132, 123, 119, 127, 89, 39, 46, + 57, 43, 53, 73, 8, 10, 9, 6, 6, 11, 13, 11, 11, 11, 11, 11, + 10, 9, 8, 8, 11, 12, 11, 9, 7, 9, 12, 15, 10, 14, 17, 17, + 19, 22, 18, 15, 29, 8, 30, 65, 79, 111, 133, 112, 107, 102, 103, 128, + 157, 164, 169, 187, 146, 145, 145, 148, 152, 154, 150, 146, 145, 142, 141, 146, + 144, 139, 138, 141, 144, 144, 145, 146, 147, 148, 148, 148, 151, 153, 154, 155, + 154, 152, 148, 146, 157, 150, 146, 147, 153, 156, 154, 150, 153, 153, 153, 155, + 157, 155, 152, 148, 147, 147, 139, 130, 120, 110, 91, 74, 58, 75, 76, 65, + 59, 69, 75, 83, 100, 134, 160, 169, 179, 180, 173, 172, 184, 183, 183, 180, + 178, 176, 175, 175, 172, 176, 172, 164, 161, 161, 158, 153, 144, 145, 130, 96, + 56, 33, 35, 47, 29, 47, 78, 117, 150, 161, 150, 134, 166, 155, 151, 146, + 158, 107, 35, 21, 35, 38, 40, 47, 52, 101, 169, 175, 156, 163, 165, 159, + 157, 161, 158, 149, 141, 147, 146, 147, 150, 135, 102, 77, 34, 107, 137, 145, + 145, 152, 172, 165, 151, 151, 150, 146, 147, 148, 142, 135, 144, 127, 114, 123, + 98, 59, 58, 54, 68, 70, 78, 9, 12, 12, 8, 7, 11, 11, 9, 9, + 9, 11, 11, 11, 10, 9, 10, 11, 12, 10, 9, 7, 10, 13, 17, 11, + 13, 15, 15, 19, 23, 21, 19, 25, 22, 19, 12, 16, 43, 56, 39, 24, + 56, 104, 155, 176, 153, 132, 137, 144, 147, 151, 156, 158, 160, 160, 159, 144, + 144, 146, 151, 148, 142, 137, 137, 140, 143, 147, 150, 149, 148, 146, 144, 146, + 148, 148, 148, 146, 146, 145, 143, 147, 145, 143, 145, 147, 150, 150, 150, 152, + 154, 157, 164, 166, 167, 162, 158, 154, 148, 145, 142, 120, 87, 66, 66, 60, + 63, 36, 52, 51, 72, 61, 102, 116, 145, 165, 173, 184, 188, 186, 188, 185, + 186, 186, 182, 175, 175, 180, 186, 174, 176, 176, 172, 170, 170, 167, 162, 153, + 158, 157, 142, 118, 102, 100, 105, 91, 63, 49, 69, 97, 118, 139, 158, 146, + 146, 141, 147, 155, 130, 55, 34, 30, 44, 38, 49, 83, 134, 180, 177, 159, + 159, 160, 162, 163, 160, 154, 150, 146, 145, 146, 147, 146, 133, 105, 79, 42, + 57, 80, 127, 163, 155, 165, 176, 150, 151, 151, 148, 148, 148, 143, 136, 131, + 120, 110, 118, 103, 77, 80, 70, 80, 77, 71, 10, 13, 13, 9, 8, 10, + 10, 6, 8, 8, 10, 11, 11, 11, 10, 11, 11, 11, 9, 9, 8, 11, + 16, 20, 15, 16, 15, 13, 14, 18, 17, 15, 17, 29, 22, 5, 7, 21, + 25, 23, 22, 91, 141, 148, 144, 143, 139, 139, 153, 158, 164, 167, 164, 161, + 158, 159, 150, 149, 146, 146, 145, 144, 144, 146, 142, 144, 147, 150, 151, 149, + 146, 144, 148, 147, 147, 146, 146, 145, 146, 146, 145, 146, 146, 146, 146, 145, + 147, 149, 149, 152, 159, 166, 170, 173, 171, 169, 167, 153, 148, 151, 142, 115, + 92, 83, 66, 84, 71, 44, 58, 63, 100, 88, 135, 153, 160, 159, 167, 174, + 179, 189, 190, 191, 191, 187, 181, 179, 184, 188, 179, 181, 182, 181, 178, 175, + 171, 168, 173, 166, 161, 161, 164, 161, 151, 141, 143, 123, 110, 107, 100, 93, + 109, 133, 145, 157, 156, 157, 143, 131, 62, 43, 33, 46, 36, 66, 127, 166, + 183, 178, 164, 155, 154, 161, 163, 156, 150, 150, 148, 145, 150, 153, 145, 134, + 116, 94, 76, 37, 33, 79, 142, 139, 146, 161, 151, 153, 152, 148, 146, 146, + 143, 138, 132, 133, 126, 121, 91, 64, 70, 61, 68, 71, 66, 10, 14, 13, + 9, 8, 10, 9, 5, 9, 9, 10, 11, 12, 12, 11, 11, 10, 11, 11, + 10, 10, 13, 18, 21, 19, 19, 17, 14, 14, 18, 17, 14, 22, 25, 17, + 17, 32, 33, 23, 24, 50, 118, 150, 128, 121, 143, 157, 158, 150, 157, 163, + 163, 156, 148, 142, 141, 148, 147, 144, 142, 142, 146, 149, 151, 150, 151, 152, + 153, 153, 153, 152, 152, 154, 152, 151, 151, 151, 152, 153, 154, 148, 151, 152, + 150, 148, 146, 146, 148, 149, 153, 158, 163, 165, 168, 169, 169, 168, 159, 146, + 143, 146, 149, 142, 132, 101, 99, 36, 112, 49, 63, 105, 123, 129, 148, 157, + 161, 170, 172, 172, 179, 197, 195, 193, 191, 187, 184, 181, 179, 184, 185, 187, + 189, 188, 184, 180, 178, 175, 175, 174, 170, 165, 162, 163, 164, 164, 158, 153, + 149, 141, 129, 117, 110, 123, 128, 128, 140, 142, 143, 70, 29, 37, 44, 40, + 93, 165, 183, 181, 180, 169, 155, 149, 156, 160, 153, 148, 150, 145, 141, 155, + 159, 145, 135, 127, 110, 62, 52, 50, 41, 95, 123, 149, 154, 154, 156, 153, + 146, 142, 143, 141, 138, 123, 127, 122, 117, 89, 66, 72, 61, 62, 67, 64, + 10, 13, 13, 10, 9, 10, 9, 5, 10, 10, 11, 11, 12, 11, 10, 9, + 10, 11, 12, 13, 12, 14, 17, 20, 19, 21, 19, 17, 19, 23, 22, 17, + 15, 19, 19, 24, 26, 16, 15, 31, 74, 115, 138, 141, 149, 153, 147, 140, + 150, 155, 159, 159, 152, 145, 139, 137, 137, 141, 143, 144, 146, 149, 149, 147, + 153, 152, 151, 151, 151, 152, 151, 152, 150, 150, 150, 150, 151, 151, 152, 153, + 154, 156, 157, 156, 153, 151, 150, 150, 151, 155, 159, 161, 161, 163, 162, 163, + 156, 164, 163, 151, 147, 156, 156, 147, 154, 142, 165, 252, 76, 57, 119, 116, + 144, 158, 163, 167, 176, 177, 177, 186, 187, 188, 190, 193, 193, 192, 189, 186, + 188, 188, 191, 196, 197, 194, 192, 193, 180, 180, 177, 172, 168, 168, 172, 178, + 171, 173, 166, 154, 151, 154, 152, 144, 142, 133, 133, 139, 147, 151, 96, 55, + 43, 53, 62, 124, 183, 182, 178, 182, 174, 159, 149, 152, 157, 153, 148, 146, + 143, 134, 152, 161, 145, 137, 136, 119, 67, 50, 63, 48, 99, 115, 137, 149, + 151, 154, 153, 146, 142, 142, 140, 138, 125, 120, 110, 113, 95, 72, 72, 54, + 42, 45, 44, 8, 11, 12, 9, 10, 11, 10, 6, 11, 11, 11, 11, 10, + 9, 8, 7, 8, 11, 13, 14, 14, 16, 16, 18, 18, 20, 20, 18, 20, + 24, 23, 17, 2, 10, 23, 29, 26, 34, 64, 96, 126, 137, 141, 147, 161, + 163, 159, 161, 154, 154, 153, 150, 148, 145, 144, 143, 137, 142, 146, 145, 148, + 153, 153, 149, 150, 150, 150, 150, 149, 149, 149, 149, 148, 147, 148, 149, 150, + 150, 151, 152, 157, 159, 159, 159, 158, 157, 155, 153, 153, 159, 166, 169, 168, + 168, 166, 166, 157, 169, 174, 165, 157, 156, 151, 142, 146, 173, 137, 60, 155, + 148, 160, 155, 155, 162, 158, 158, 167, 172, 178, 192, 184, 190, 196, 198, 197, + 195, 197, 198, 191, 189, 191, 198, 199, 195, 195, 198, 206, 195, 184, 180, 183, + 183, 176, 169, 163, 177, 182, 176, 167, 165, 164, 162, 162, 144, 146, 124, 115, + 99, 62, 30, 59, 84, 107, 155, 182, 172, 176, 181, 175, 164, 153, 153, 158, + 158, 149, 140, 148, 130, 148, 162, 149, 144, 143, 119, 77, 29, 48, 60, 126, + 114, 113, 128, 141, 148, 152, 148, 144, 143, 140, 137, 143, 134, 120, 119, 89, + 52, 45, 29, 29, 30, 36, 8, 12, 12, 9, 10, 12, 10, 7, 12, 12, + 12, 11, 10, 9, 7, 7, 8, 11, 14, 16, 16, 15, 16, 17, 17, 19, + 19, 17, 18, 21, 19, 11, 24, 15, 15, 21, 36, 71, 108, 124, 126, 144, + 146, 144, 153, 161, 161, 166, 148, 144, 138, 135, 134, 136, 138, 139, 145, 149, + 148, 145, 147, 154, 158, 156, 152, 153, 153, 154, 153, 153, 151, 151, 152, 153, + 154, 156, 156, 157, 157, 158, 159, 158, 158, 160, 162, 162, 159, 157, 153, 161, + 172, 179, 180, 178, 177, 176, 176, 170, 161, 158, 160, 164, 163, 158, 164, 126, + 153, 163, 143, 166, 148, 156, 151, 160, 162, 168, 181, 186, 192, 205, 199, 207, + 212, 207, 196, 190, 192, 197, 193, 190, 191, 196, 196, 190, 190, 194, 187, 185, + 183, 186, 188, 190, 190, 188, 190, 184, 177, 173, 171, 171, 172, 173, 175, 155, + 174, 158, 161, 133, 93, 52, 77, 117, 148, 176, 175, 163, 175, 178, 176, 167, + 157, 156, 161, 162, 150, 136, 155, 131, 145, 163, 153, 151, 148, 119, 74, 46, + 76, 77, 146, 145, 135, 130, 133, 143, 151, 150, 148, 146, 141, 136, 115, 117, + 118, 121, 84, 44, 48, 50, 62, 58, 62, 11, 11, 11, 10, 10, 9, 10, + 9, 9, 12, 12, 12, 9, 8, 8, 8, 9, 12, 14, 16, 16, 16, 17, + 19, 19, 24, 25, 20, 18, 18, 17, 11, 8, 18, 11, 36, 72, 123, 129, + 136, 147, 158, 148, 159, 140, 127, 102, 113, 113, 119, 123, 124, 127, 136, 143, + 146, 140, 143, 149, 152, 154, 155, 157, 158, 148, 148, 148, 148, 149, 151, 153, + 154, 149, 155, 158, 157, 157, 159, 160, 159, 164, 165, 165, 164, 161, 160, 160, + 161, 164, 174, 174, 173, 179, 176, 172, 177, 178, 172, 166, 163, 160, 159, 156, + 155, 154, 154, 151, 154, 157, 158, 155, 152, 161, 163, 165, 162, 158, 162, 174, + 183, 202, 210, 208, 193, 184, 187, 189, 186, 181, 183, 189, 193, 189, 184, 187, + 194, 189, 187, 184, 182, 179, 178, 178, 179, 179, 189, 191, 182, 180, 188, 191, + 186, 176, 171, 174, 174, 163, 151, 129, 101, 122, 145, 167, 177, 178, 179, 176, + 171, 184, 168, 155, 159, 167, 163, 150, 139, 149, 157, 147, 133, 152, 178, 162, + 121, 99, 40, 75, 119, 145, 142, 158, 169, 142, 129, 142, 155, 145, 141, 142, + 128, 126, 117, 117, 121, 69, 71, 69, 60, 70, 81, 82, 10, 10, 10, 10, + 11, 11, 12, 12, 9, 11, 12, 11, 9, 8, 10, 10, 11, 14, 16, 17, + 16, 16, 17, 18, 22, 27, 25, 19, 15, 17, 14, 10, 25, 21, 31, 83, + 104, 126, 128, 145, 135, 157, 165, 121, 89, 58, 34, 50, 52, 74, 102, 123, + 135, 141, 140, 137, 147, 150, 154, 155, 154, 153, 153, 154, 151, 150, 150, 151, + 152, 154, 155, 156, 155, 160, 162, 160, 158, 160, 160, 159, 163, 166, 168, 168, + 165, 164, 165, 165, 161, 170, 170, 169, 175, 173, 169, 174, 168, 166, 164, 162, + 161, 160, 157, 154, 154, 153, 152, 155, 160, 164, 163, 162, 161, 162, 163, 165, + 165, 165, 165, 167, 177, 192, 199, 194, 189, 190, 185, 179, 185, 183, 185, 191, + 193, 189, 186, 187, 187, 186, 184, 183, 182, 182, 181, 181, 179, 188, 190, 182, + 179, 185, 185, 180, 195, 187, 185, 182, 174, 174, 167, 150, 152, 167, 178, 179, + 176, 176, 176, 173, 182, 173, 167, 171, 173, 166, 152, 144, 138, 152, 160, 156, + 155, 153, 141, 125, 103, 57, 95, 133, 154, 148, 157, 161, 181, 148, 135, 144, + 148, 153, 149, 126, 122, 112, 114, 121, 71, 66, 66, 67, 91, 99, 100, 9, + 9, 10, 11, 11, 12, 14, 14, 10, 11, 13, 13, 11, 11, 13, 14, 14, + 17, 19, 19, 17, 17, 17, 19, 20, 22, 20, 16, 15, 17, 15, 13, 28, + 20, 48, 110, 118, 132, 138, 151, 155, 164, 145, 53, 40, 37, 59, 101, 95, + 114, 133, 142, 143, 143, 142, 140, 146, 149, 151, 152, 150, 148, 148, 148, 154, + 153, 154, 154, 156, 157, 159, 160, 158, 163, 165, 162, 161, 163, 164, 163, 161, + 164, 168, 169, 168, 167, 167, 168, 160, 170, 168, 167, 172, 169, 165, 171, 163, + 163, 163, 164, 164, 162, 158, 154, 154, 153, 153, 156, 162, 168, 171, 173, 172, + 168, 165, 166, 172, 173, 168, 163, 166, 180, 190, 190, 188, 187, 183, 176, 184, + 178, 177, 186, 195, 195, 187, 182, 184, 184, 184, 185, 185, 185, 186, 186, 182, + 190, 192, 186, 183, 186, 184, 178, 189, 182, 180, 175, 169, 176, 181, 172, 172, + 180, 185, 183, 178, 176, 174, 172, 176, 173, 173, 178, 177, 166, 152, 146, 140, + 147, 162, 172, 162, 142, 132, 133, 96, 77, 124, 144, 149, 141, 156, 167, 182, + 148, 127, 130, 140, 149, 142, 120, 122, 114, 115, 115, 69, 58, 61, 67, 76, + 83, 82, 11, 11, 11, 11, 11, 12, 13, 13, 12, 13, 15, 15, 14, 14, + 18, 19, 14, 17, 19, 20, 19, 18, 20, 21, 15, 15, 13, 13, 14, 18, + 20, 20, 28, 32, 64, 115, 113, 144, 155, 147, 155, 154, 98, 37, 43, 41, + 63, 86, 121, 133, 141, 141, 138, 144, 150, 156, 142, 146, 148, 151, 150, 151, + 151, 153, 155, 155, 156, 156, 158, 159, 161, 162, 159, 164, 166, 163, 162, 165, + 167, 165, 160, 164, 167, 169, 167, 165, 164, 164, 164, 172, 169, 168, 172, 169, + 164, 170, 164, 164, 163, 165, 165, 164, 159, 156, 153, 152, 152, 154, 159, 166, + 173, 176, 179, 171, 162, 161, 166, 171, 172, 170, 173, 180, 183, 181, 178, 181, + 182, 180, 180, 174, 171, 180, 190, 192, 188, 185, 182, 183, 184, 184, 185, 185, + 185, 185, 185, 191, 194, 191, 190, 191, 187, 181, 190, 187, 190, 187, 179, 183, + 188, 181, 172, 179, 186, 189, 187, 184, 180, 176, 175, 171, 172, 179, 180, 170, + 157, 150, 155, 149, 152, 164, 167, 155, 144, 144, 106, 93, 130, 136, 147, 147, + 156, 159, 140, 130, 125, 128, 133, 134, 128, 118, 119, 120, 116, 93, 52, 45, + 52, 54, 64, 75, 78, 14, 13, 12, 11, 10, 9, 10, 9, 11, 12, 13, + 13, 12, 14, 16, 20, 14, 15, 18, 20, 19, 20, 21, 22, 15, 12, 10, + 12, 17, 19, 21, 23, 36, 41, 73, 122, 119, 149, 157, 143, 144, 133, 42, + 41, 48, 38, 56, 63, 110, 126, 140, 144, 143, 145, 146, 146, 148, 151, 154, + 155, 156, 157, 160, 162, 156, 156, 156, 157, 158, 160, 161, 162, 163, 167, 168, + 163, 161, 164, 165, 163, 162, 166, 169, 170, 166, 164, 162, 162, 166, 173, 169, + 165, 168, 165, 160, 167, 168, 167, 164, 162, 163, 161, 158, 156, 152, 151, 150, + 151, 153, 159, 165, 169, 173, 170, 164, 159, 159, 163, 166, 169, 175, 177, 176, + 173, 171, 175, 178, 180, 180, 174, 172, 176, 180, 182, 183, 187, 182, 182, 182, + 182, 182, 182, 183, 183, 183, 188, 191, 193, 194, 194, 190, 185, 190, 189, 194, + 191, 181, 184, 188, 181, 173, 175, 180, 186, 189, 189, 186, 185, 179, 170, 166, + 173, 179, 175, 164, 157, 159, 156, 154, 157, 164, 163, 154, 143, 120, 103, 125, + 128, 155, 159, 147, 130, 117, 125, 128, 132, 135, 132, 125, 124, 115, 122, 110, + 66, 38, 41, 53, 45, 63, 81, 90, 14, 13, 12, 11, 9, 8, 7, 7, + 9, 10, 10, 9, 9, 10, 13, 16, 14, 17, 18, 20, 19, 19, 20, 21, + 19, 13, 10, 14, 18, 18, 17, 20, 29, 34, 66, 126, 131, 146, 148, 154, + 152, 110, 15, 38, 38, 47, 85, 110, 129, 139, 147, 149, 148, 147, 144, 142, + 153, 155, 156, 157, 156, 156, 158, 160, 157, 157, 157, 158, 159, 161, 162, 163, + 168, 171, 170, 164, 160, 161, 162, 160, 166, 168, 170, 171, 168, 164, 163, 163, + 162, 169, 166, 162, 165, 162, 158, 165, 169, 166, 164, 163, 161, 159, 156, 155, + 153, 152, 151, 149, 147, 149, 153, 159, 165, 168, 170, 169, 165, 162, 164, 166, + 167, 168, 170, 172, 172, 173, 174, 174, 182, 178, 175, 176, 175, 173, 176, 182, + 181, 180, 179, 178, 179, 180, 182, 183, 180, 182, 186, 190, 193, 193, 190, 186, + 185, 181, 183, 179, 171, 177, 184, 178, 175, 170, 166, 171, 175, 178, 180, 183, + 176, 165, 157, 162, 170, 169, 162, 157, 149, 162, 167, 162, 158, 157, 149, 137, + 108, 115, 148, 141, 150, 139, 128, 126, 129, 136, 128, 126, 137, 137, 127, 125, + 120, 122, 107, 58, 49, 55, 67, 58, 63, 82, 93, 11, 12, 11, 10, 9, + 8, 7, 7, 9, 10, 11, 9, 8, 10, 13, 16, 17, 20, 21, 21, 19, + 17, 16, 17, 19, 12, 10, 17, 22, 21, 17, 20, 26, 48, 71, 114, 122, + 141, 145, 160, 146, 77, 44, 58, 65, 79, 96, 115, 130, 135, 136, 138, 143, + 153, 157, 156, 154, 155, 156, 155, 153, 154, 155, 156, 158, 158, 159, 159, 160, + 162, 164, 165, 167, 171, 170, 164, 162, 164, 165, 164, 165, 167, 168, 168, 165, + 165, 165, 165, 158, 165, 162, 161, 166, 164, 162, 170, 169, 169, 168, 168, 167, + 165, 159, 157, 154, 154, 153, 148, 145, 145, 147, 151, 156, 160, 164, 165, 165, + 166, 169, 171, 166, 165, 166, 168, 170, 171, 171, 173, 178, 177, 176, 178, 178, + 174, 174, 178, 180, 178, 176, 175, 177, 180, 185, 187, 182, 181, 183, 189, 193, + 193, 190, 187, 190, 186, 188, 186, 180, 186, 191, 184, 175, 166, 161, 165, 169, + 170, 171, 173, 175, 166, 159, 161, 164, 162, 158, 158, 153, 163, 168, 164, 156, + 151, 143, 135, 103, 123, 161, 144, 141, 122, 124, 143, 143, 151, 137, 126, 135, + 133, 124, 126, 127, 115, 97, 61, 70, 65, 75, 72, 77, 93, 101, 9, 9, + 9, 9, 9, 8, 8, 8, 13, 14, 14, 12, 11, 12, 16, 19, 20, 22, + 22, 21, 17, 14, 13, 13, 15, 9, 9, 19, 24, 24, 21, 25, 44, 89, + 99, 103, 105, 140, 147, 154, 143, 49, 69, 69, 103, 135, 134, 148, 145, 149, + 150, 153, 156, 160, 155, 150, 156, 159, 158, 158, 157, 158, 159, 161, 160, 160, + 160, 161, 162, 164, 165, 166, 162, 166, 167, 164, 164, 169, 172, 172, 160, 162, + 164, 163, 162, 162, 163, 166, 156, 164, 162, 161, 169, 169, 167, 176, 170, 172, + 174, 176, 177, 173, 166, 159, 155, 156, 154, 149, 144, 143, 145, 148, 144, 144, + 144, 146, 153, 162, 170, 176, 175, 170, 165, 164, 165, 168, 171, 175, 173, 172, + 174, 181, 184, 182, 179, 179, 178, 177, 174, 173, 176, 182, 188, 192, 186, 184, + 185, 190, 194, 194, 191, 189, 184, 182, 188, 190, 184, 187, 185, 173, 176, 169, + 167, 176, 180, 176, 171, 169, 180, 175, 171, 171, 168, 163, 162, 165, 167, 160, + 156, 159, 159, 154, 144, 138, 125, 122, 137, 125, 143, 138, 135, 146, 143, 163, + 155, 136, 136, 129, 122, 133, 127, 100, 81, 60, 78, 60, 65, 71, 83, 94, + 97, 7, 11, 12, 10, 10, 12, 11, 7, 12, 8, 6, 8, 13, 18, 17, + 15, 22, 17, 13, 14, 18, 18, 12, 7, 19, 17, 29, 23, 18, 23, 17, + 32, 69, 103, 102, 104, 114, 119, 139, 147, 136, 67, 81, 112, 119, 129, 130, + 142, 144, 149, 154, 160, 161, 162, 159, 157, 158, 158, 158, 160, 161, 162, 163, + 163, 166, 167, 168, 167, 165, 164, 165, 166, 170, 167, 165, 164, 165, 165, 164, + 162, 170, 168, 164, 160, 157, 157, 156, 157, 159, 163, 165, 164, 162, 164, 169, + 174, 172, 177, 176, 176, 152, 171, 159, 156, 153, 156, 156, 153, 149, 152, 157, + 161, 157, 160, 151, 147, 151, 151, 155, 169, 168, 172, 173, 170, 163, 161, 166, + 174, 174, 182, 185, 180, 175, 178, 181, 181, 174, 176, 178, 177, 176, 178, 182, + 186, 184, 185, 188, 191, 194, 194, 191, 188, 192, 189, 186, 183, 179, 177, 178, + 183, 172, 167, 170, 184, 189, 183, 180, 184, 168, 172, 175, 176, 173, 170, 169, + 170, 166, 156, 160, 167, 157, 150, 146, 138, 130, 118, 139, 139, 137, 152, 145, + 154, 162, 164, 155, 138, 130, 131, 131, 126, 116, 94, 78, 61, 64, 69, 60, + 77, 78, 94, 102, 7, 11, 12, 10, 10, 12, 11, 7, 12, 12, 12, 11, + 13, 15, 19, 21, 23, 21, 17, 15, 14, 13, 12, 12, 24, 19, 28, 21, + 20, 26, 20, 33, 88, 116, 110, 110, 117, 121, 135, 137, 133, 90, 104, 118, + 119, 136, 141, 145, 150, 152, 156, 160, 161, 160, 157, 154, 158, 158, 159, 161, + 161, 162, 163, 163, 162, 162, 164, 164, 163, 163, 165, 167, 167, 165, 163, 163, + 164, 164, 163, 162, 169, 168, 164, 161, 158, 158, 157, 159, 161, 161, 161, 163, + 165, 169, 170, 170, 165, 171, 166, 170, 156, 169, 153, 152, 158, 148, 147, 153, + 155, 161, 160, 147, 148, 156, 157, 159, 163, 155, 145, 148, 159, 163, 167, 166, + 163, 163, 165, 168, 174, 182, 186, 181, 178, 181, 183, 182, 179, 179, 179, 178, + 177, 177, 180, 182, 180, 184, 190, 196, 199, 200, 199, 199, 185, 186, 187, 186, + 183, 178, 175, 175, 174, 168, 171, 185, 189, 180, 170, 167, 178, 180, 180, 176, + 170, 164, 161, 161, 163, 157, 165, 169, 157, 148, 147, 142, 123, 118, 144, 147, + 147, 158, 152, 160, 156, 159, 152, 139, 132, 134, 132, 127, 116, 83, 70, 61, + 62, 67, 61, 72, 81, 96, 101, 7, 11, 12, 10, 9, 12, 11, 8, 13, + 15, 17, 14, 11, 12, 18, 25, 19, 20, 18, 16, 11, 13, 17, 20, 20, + 14, 21, 16, 19, 28, 23, 35, 102, 125, 114, 114, 125, 126, 135, 131, 123, + 105, 120, 120, 117, 141, 150, 144, 155, 156, 157, 159, 158, 157, 154, 153, 158, + 159, 159, 160, 161, 162, 162, 163, 160, 161, 163, 163, 164, 165, 168, 171, 166, + 164, 163, 163, 165, 165, 164, 163, 166, 166, 163, 161, 159, 158, 159, 160, 162, + 160, 159, 163, 169, 172, 169, 166, 163, 172, 161, 166, 162, 163, 147, 148, 150, + 142, 151, 154, 140, 148, 166, 164, 158, 165, 162, 160, 166, 162, 154, 156, 152, + 155, 160, 166, 168, 167, 165, 164, 173, 181, 185, 184, 181, 182, 184, 183, 185, + 182, 180, 179, 179, 179, 179, 178, 176, 182, 189, 192, 190, 187, 186, 186, 186, + 186, 185, 183, 179, 176, 173, 171, 173, 168, 172, 187, 194, 189, 180, 176, 174, + 175, 174, 171, 167, 164, 162, 162, 162, 160, 170, 171, 156, 146, 144, 139, 114, + 123, 149, 154, 154, 160, 155, 162, 153, 157, 152, 138, 133, 135, 131, 124, 116, + 70, 65, 66, 61, 67, 66, 70, 93, 104, 103, 7, 11, 11, 9, 9, 12, + 12, 9, 13, 15, 17, 17, 15, 15, 17, 20, 12, 14, 15, 15, 16, 19, + 22, 25, 15, 10, 22, 16, 18, 29, 28, 45, 105, 126, 114, 117, 132, 136, + 142, 135, 121, 115, 123, 124, 124, 144, 154, 146, 155, 155, 155, 156, 155, 155, + 154, 154, 159, 159, 159, 160, 161, 163, 162, 163, 164, 166, 168, 168, 168, 170, + 172, 175, 165, 164, 164, 165, 167, 167, 166, 164, 162, 162, 161, 161, 159, 160, + 161, 161, 164, 163, 163, 167, 169, 170, 167, 165, 164, 177, 163, 165, 166, 155, + 147, 146, 153, 145, 159, 162, 140, 139, 152, 149, 163, 169, 162, 160, 168, 170, + 166, 168, 155, 155, 158, 163, 169, 170, 167, 163, 171, 176, 181, 184, 183, 182, + 182, 183, 187, 184, 181, 179, 180, 181, 179, 178, 187, 194, 201, 202, 197, 191, + 190, 191, 195, 191, 183, 174, 170, 171, 171, 170, 158, 159, 165, 178, 185, 183, + 180, 180, 168, 168, 167, 165, 164, 163, 162, 162, 165, 161, 167, 168, 155, 146, + 140, 130, 111, 132, 151, 155, 156, 155, 152, 160, 156, 158, 151, 138, 131, 133, + 128, 118, 111, 62, 67, 74, 61, 68, 74, 78, 78, 88, 83, 7, 11, 11, + 8, 9, 13, 13, 10, 12, 12, 14, 17, 18, 18, 14, 10, 14, 12, 12, + 17, 23, 25, 22, 18, 16, 15, 29, 21, 19, 27, 29, 49, 103, 126, 119, + 125, 141, 146, 151, 144, 135, 125, 122, 133, 140, 144, 152, 150, 152, 152, 152, + 153, 153, 155, 155, 155, 159, 159, 158, 160, 161, 162, 163, 162, 169, 170, 172, + 172, 171, 170, 171, 172, 162, 161, 161, 162, 164, 164, 162, 161, 160, 160, 160, + 160, 160, 162, 162, 164, 165, 168, 171, 170, 167, 165, 164, 166, 162, 176, 165, + 163, 163, 150, 154, 139, 102, 93, 112, 142, 157, 163, 159, 142, 150, 164, 167, + 168, 175, 175, 164, 161, 162, 159, 157, 159, 164, 166, 166, 163, 167, 170, 175, + 180, 182, 181, 180, 182, 186, 184, 182, 181, 181, 182, 183, 182, 182, 189, 198, + 200, 197, 194, 194, 196, 197, 194, 184, 173, 169, 171, 169, 164, 161, 169, 183, + 194, 194, 188, 183, 183, 174, 172, 169, 166, 163, 161, 158, 157, 163, 156, 159, + 160, 153, 148, 141, 125, 111, 141, 151, 153, 157, 152, 153, 162, 156, 156, 148, + 135, 129, 130, 124, 113, 96, 58, 70, 77, 60, 66, 77, 86, 94, 104, 103, + 8, 11, 10, 7, 8, 13, 13, 12, 13, 11, 12, 15, 19, 18, 12, 6, + 20, 16, 14, 17, 23, 23, 16, 9, 16, 13, 26, 18, 14, 21, 19, 38, + 103, 132, 128, 136, 149, 150, 155, 149, 146, 134, 119, 136, 148, 139, 146, 147, + 150, 150, 152, 153, 154, 156, 156, 156, 158, 159, 159, 160, 161, 162, 163, 163, + 167, 170, 173, 173, 171, 168, 167, 166, 158, 158, 158, 159, 161, 160, 158, 156, + 158, 159, 160, 163, 164, 166, 167, 169, 168, 173, 174, 173, 167, 165, 165, 169, + 157, 168, 161, 160, 160, 151, 164, 119, 35, 38, 52, 82, 113, 132, 144, 158, + 154, 170, 169, 162, 167, 169, 166, 167, 166, 161, 157, 156, 159, 161, 162, 161, + 166, 166, 169, 176, 179, 179, 179, 181, 183, 184, 184, 183, 181, 181, 185, 187, + 180, 184, 189, 189, 186, 183, 182, 183, 190, 192, 189, 181, 177, 177, 167, 156, + 159, 173, 191, 205, 208, 202, 194, 190, 172, 171, 168, 168, 168, 167, 164, 161, + 157, 150, 150, 153, 150, 151, 144, 126, 110, 148, 150, 152, 161, 154, 157, 163, + 149, 152, 145, 134, 128, 127, 115, 101, 80, 58, 71, 72, 60, 68, 78, 90, + 93, 104, 101, 8, 11, 10, 7, 8, 13, 14, 13, 14, 14, 14, 14, 15, + 14, 12, 10, 21, 20, 18, 18, 18, 16, 12, 7, 14, 7, 16, 12, 16, + 24, 17, 29, 97, 132, 135, 142, 150, 147, 152, 149, 144, 141, 121, 135, 149, + 141, 152, 152, 151, 151, 152, 154, 156, 157, 156, 156, 159, 159, 159, 160, 160, + 162, 163, 163, 163, 168, 172, 174, 172, 168, 165, 163, 160, 159, 159, 161, 161, + 160, 157, 155, 159, 161, 164, 167, 168, 171, 172, 173, 171, 173, 171, 171, 170, + 169, 170, 172, 162, 162, 159, 161, 161, 155, 168, 84, 31, 47, 43, 42, 55, + 57, 75, 120, 154, 170, 167, 156, 158, 165, 170, 177, 167, 164, 161, 159, 160, + 161, 162, 163, 165, 164, 166, 174, 178, 178, 179, 183, 183, 187, 188, 186, 181, + 180, 184, 190, 198, 198, 197, 195, 192, 189, 186, 185, 187, 192, 190, 183, 182, + 183, 173, 158, 154, 159, 167, 179, 188, 192, 189, 183, 167, 166, 165, 167, 170, + 169, 165, 162, 156, 150, 150, 149, 144, 147, 143, 126, 110, 154, 147, 150, 163, + 152, 152, 156, 147, 150, 146, 136, 127, 117, 98, 77, 69, 63, 71, 64, 65, + 78, 80, 91, 107, 119, 117, 9, 11, 10, 7, 8, 13, 15, 14, 16, 18, + 17, 15, 10, 9, 13, 18, 19, 20, 20, 17, 14, 12, 12, 14, 18, 7, + 14, 14, 27, 39, 29, 33, 88, 128, 135, 143, 146, 141, 148, 147, 141, 151, + 129, 141, 154, 151, 167, 164, 154, 155, 156, 158, 159, 159, 158, 156, 159, 159, + 159, 160, 161, 163, 164, 163, 162, 167, 173, 176, 175, 170, 166, 164, 163, 163, + 163, 164, 165, 163, 159, 157, 161, 163, 167, 170, 173, 175, 176, 178, 175, 171, + 168, 168, 173, 176, 175, 174, 173, 164, 163, 165, 165, 161, 169, 56, 30, 49, + 38, 38, 60, 48, 41, 78, 128, 154, 164, 161, 162, 165, 163, 165, 168, 167, + 166, 165, 164, 164, 164, 165, 166, 163, 165, 173, 178, 178, 180, 186, 183, 188, + 192, 188, 179, 176, 182, 190, 190, 189, 187, 188, 189, 189, 188, 185, 189, 191, + 186, 177, 178, 184, 179, 167, 185, 174, 163, 164, 177, 189, 191, 186, 172, 170, + 167, 167, 166, 161, 154, 148, 160, 156, 157, 151, 140, 141, 138, 124, 110, 156, + 145, 147, 162, 147, 143, 142, 145, 150, 147, 136, 123, 106, 79, 53, 66, 67, + 71, 60, 72, 89, 84, 95, 100, 112, 116, 12, 13, 15, 17, 17, 17, 17, + 16, 20, 17, 13, 12, 10, 12, 15, 18, 19, 18, 17, 17, 16, 16, 16, + 16, 17, 18, 21, 21, 23, 24, 28, 36, 81, 132, 134, 129, 137, 138, 147, + 152, 148, 146, 136, 135, 151, 160, 163, 172, 159, 160, 161, 161, 158, 156, 157, + 158, 160, 154, 152, 158, 161, 162, 162, 163, 171, 170, 169, 168, 168, 168, 165, + 164, 157, 157, 158, 160, 164, 163, 161, 160, 160, 164, 167, 170, 172, 173, 173, + 172, 182, 177, 171, 167, 166, 168, 169, 171, 177, 162, 168, 163, 162, 160, 147, + 31, 35, 58, 44, 43, 42, 54, 42, 53, 101, 155, 165, 153, 152, 171, 149, + 166, 165, 171, 168, 162, 164, 171, 165, 153, 171, 169, 165, 164, 168, 178, 185, + 188, 193, 191, 187, 183, 180, 181, 185, 188, 188, 192, 196, 195, 190, 185, 183, + 182, 189, 186, 183, 184, 185, 181, 173, 166, 165, 176, 174, 151, 179, 176, 181, + 183, 167, 163, 168, 169, 160, 161, 165, 160, 164, 152, 155, 153, 140, 144, 143, + 120, 118, 149, 146, 134, 149, 148, 135, 143, 144, 136, 118, 98, 82, 75, 68, + 60, 69, 67, 66, 67, 74, 85, 96, 103, 111, 106, 101, 12, 13, 13, 14, + 15, 15, 15, 14, 17, 17, 17, 16, 17, 18, 18, 19, 15, 15, 15, 14, + 14, 15, 15, 17, 19, 21, 24, 24, 24, 26, 28, 35, 81, 130, 134, 132, + 137, 138, 151, 157, 156, 156, 145, 143, 155, 160, 159, 166, 162, 165, 168, 167, + 164, 160, 157, 156, 161, 156, 153, 156, 159, 157, 157, 158, 166, 166, 165, 167, + 166, 167, 164, 163, 164, 167, 167, 166, 162, 160, 159, 162, 166, 168, 168, 169, + 170, 171, 172, 173, 175, 174, 173, 173, 173, 171, 167, 165, 168, 161, 165, 164, + 167, 157, 135, 31, 48, 49, 36, 55, 56, 62, 42, 44, 77, 156, 166, 159, + 159, 166, 149, 164, 166, 172, 171, 167, 170, 174, 169, 157, 163, 163, 162, 164, + 168, 176, 181, 185, 183, 183, 181, 178, 176, 179, 187, 193, 197, 198, 198, 195, + 190, 186, 186, 187, 193, 189, 186, 186, 185, 182, 175, 169, 163, 170, 161, 147, + 171, 179, 182, 183, 169, 163, 165, 164, 155, 157, 163, 161, 166, 155, 157, 153, + 141, 142, 139, 118, 114, 145, 147, 140, 152, 145, 126, 129, 92, 88, 79, 69, + 63, 64, 64, 61, 68, 67, 66, 69, 78, 90, 103, 112, 115, 110, 106, 11, + 10, 11, 11, 11, 10, 11, 12, 12, 13, 15, 15, 16, 17, 16, 15, 16, + 17, 16, 16, 15, 15, 16, 16, 15, 18, 21, 22, 23, 26, 30, 36, 74, + 119, 128, 130, 133, 132, 147, 152, 158, 160, 151, 149, 159, 161, 157, 161, 163, + 166, 171, 172, 169, 162, 155, 152, 154, 150, 151, 156, 161, 163, 165, 168, 164, + 165, 165, 167, 166, 165, 164, 163, 156, 162, 165, 164, 159, 159, 165, 172, 172, + 171, 169, 169, 169, 170, 172, 173, 174, 173, 173, 173, 173, 171, 167, 165, 164, + 165, 166, 167, 176, 157, 118, 38, 56, 40, 35, 66, 59, 60, 48, 50, 62, + 165, 163, 158, 158, 154, 150, 163, 164, 169, 170, 168, 170, 176, 171, 160, 159, + 160, 161, 165, 168, 174, 179, 184, 179, 181, 180, 177, 175, 179, 189, 198, 203, + 201, 197, 192, 187, 185, 187, 189, 194, 190, 186, 185, 185, 183, 176, 173, 167, + 169, 150, 147, 159, 180, 177, 181, 171, 163, 163, 159, 150, 153, 162, 161, 164, + 156, 155, 152, 141, 138, 133, 116, 111, 134, 131, 120, 124, 111, 90, 90, 73, + 73, 70, 65, 64, 67, 69, 66, 67, 67, 67, 71, 80, 93, 105, 113, 116, + 113, 110, 11, 11, 9, 8, 8, 10, 11, 12, 11, 13, 14, 14, 15, 15, + 14, 15, 19, 20, 19, 18, 17, 16, 15, 15, 19, 22, 26, 29, 31, 35, + 39, 46, 68, 105, 119, 130, 132, 129, 144, 146, 147, 153, 149, 150, 161, 160, + 155, 160, 161, 165, 169, 171, 167, 161, 156, 153, 150, 147, 149, 156, 160, 163, + 167, 171, 168, 168, 169, 169, 165, 163, 161, 162, 154, 159, 160, 161, 159, 163, + 169, 176, 169, 169, 169, 170, 170, 171, 171, 171, 176, 172, 168, 165, 166, 167, + 168, 170, 164, 170, 165, 166, 177, 154, 99, 43, 52, 42, 48, 74, 49, 53, + 58, 65, 71, 175, 154, 146, 148, 142, 151, 164, 163, 165, 164, 163, 166, 171, + 169, 162, 163, 162, 162, 165, 168, 172, 179, 187, 184, 187, 186, 181, 178, 181, + 192, 201, 198, 196, 192, 187, 184, 183, 184, 186, 189, 186, 183, 182, 182, 181, + 178, 176, 172, 172, 149, 151, 147, 173, 171, 178, 171, 163, 163, 160, 150, 153, + 161, 159, 160, 155, 153, 149, 141, 136, 128, 118, 97, 106, 98, 82, 81, 73, + 63, 65, 64, 67, 66, 60, 58, 59, 60, 59, 64, 66, 70, 76, 84, 93, + 101, 107, 111, 112, 110, 10, 10, 9, 8, 9, 10, 12, 13, 17, 17, 17, + 15, 16, 17, 17, 19, 17, 19, 20, 21, 22, 22, 22, 23, 36, 40, 42, + 44, 46, 49, 53, 57, 59, 89, 109, 132, 134, 131, 147, 144, 140, 148, 148, + 151, 161, 160, 154, 157, 160, 163, 165, 166, 164, 161, 160, 160, 157, 154, 154, + 158, 158, 156, 158, 162, 170, 171, 170, 167, 161, 158, 156, 158, 168, 166, 165, + 164, 164, 166, 166, 166, 163, 166, 169, 172, 174, 173, 171, 169, 172, 169, 165, + 163, 164, 166, 167, 168, 163, 168, 159, 157, 164, 146, 81, 39, 46, 47, 58, + 77, 51, 59, 61, 58, 88, 172, 142, 140, 144, 143, 154, 164, 166, 164, 160, + 158, 162, 167, 167, 164, 168, 163, 161, 163, 163, 167, 177, 189, 187, 189, 188, + 185, 182, 186, 196, 204, 192, 191, 189, 188, 186, 185, 184, 183, 183, 182, 181, + 181, 182, 182, 182, 181, 172, 171, 154, 157, 141, 164, 170, 180, 168, 163, 165, + 165, 155, 156, 162, 159, 156, 155, 150, 145, 143, 136, 127, 126, 75, 77, 70, + 63, 63, 66, 67, 70, 58, 62, 65, 60, 59, 61, 64, 63, 61, 67, 76, + 85, 94, 100, 103, 105, 110, 111, 112, 9, 11, 9, 10, 11, 13, 14, 16, + 16, 16, 16, 16, 16, 17, 18, 22, 23, 27, 30, 35, 39, 41, 43, 45, + 48, 51, 53, 52, 53, 55, 56, 60, 56, 71, 94, 124, 130, 130, 146, 139, + 141, 150, 151, 153, 161, 159, 152, 155, 161, 162, 163, 163, 162, 163, 165, 167, + 161, 159, 161, 166, 166, 165, 169, 174, 173, 173, 170, 165, 156, 153, 154, 157, + 164, 165, 164, 167, 170, 171, 167, 164, 162, 166, 171, 175, 176, 175, 171, 169, + 164, 165, 167, 169, 171, 169, 164, 162, 167, 169, 160, 156, 156, 149, 78, 37, + 45, 50, 54, 76, 65, 72, 54, 42, 105, 159, 140, 147, 150, 156, 159, 165, + 171, 167, 162, 160, 163, 166, 166, 164, 166, 161, 157, 160, 160, 162, 175, 191, + 186, 187, 186, 185, 187, 191, 198, 203, 190, 190, 189, 190, 190, 189, 185, 183, + 181, 182, 183, 184, 184, 184, 184, 183, 169, 162, 157, 158, 143, 158, 174, 181, + 165, 162, 167, 168, 159, 159, 163, 159, 153, 154, 147, 142, 144, 134, 127, 132, + 66, 64, 64, 64, 65, 67, 69, 69, 62, 68, 68, 65, 62, 63, 68, 68, + 67, 75, 85, 96, 104, 109, 111, 112, 112, 114, 116, 9, 11, 12, 14, 15, + 17, 18, 18, 17, 19, 22, 25, 27, 28, 28, 30, 37, 41, 46, 51, 55, + 58, 59, 61, 55, 58, 60, 60, 62, 64, 67, 69, 72, 74, 88, 121, 125, + 126, 143, 133, 141, 151, 151, 154, 161, 157, 150, 155, 158, 159, 161, 161, 161, + 161, 163, 165, 159, 160, 166, 172, 174, 177, 182, 190, 177, 177, 172, 165, 157, + 156, 158, 163, 161, 167, 173, 179, 180, 178, 175, 174, 168, 170, 174, 176, 177, + 175, 173, 171, 164, 165, 168, 171, 173, 171, 166, 163, 170, 167, 163, 159, 152, + 159, 83, 36, 44, 49, 46, 71, 70, 69, 48, 55, 130, 150, 147, 158, 150, + 163, 163, 169, 172, 168, 165, 164, 166, 165, 162, 160, 162, 157, 156, 162, 163, + 164, 177, 194, 191, 189, 186, 187, 191, 195, 198, 198, 193, 191, 190, 190, 191, + 190, 185, 182, 180, 182, 184, 185, 184, 182, 180, 179, 171, 155, 160, 154, 150, + 154, 175, 172, 164, 160, 166, 168, 160, 160, 164, 161, 154, 158, 145, 140, 144, + 133, 125, 137, 67, 61, 64, 65, 61, 63, 64, 60, 59, 65, 65, 60, 58, + 60, 65, 68, 84, 88, 95, 103, 109, 112, 113, 114, 115, 117, 118, 12, 13, + 15, 19, 21, 22, 22, 24, 26, 31, 37, 43, 46, 47, 46, 46, 45, 49, + 53, 56, 58, 58, 60, 60, 62, 66, 69, 72, 75, 79, 84, 86, 100, 91, + 98, 127, 127, 127, 145, 132, 136, 146, 149, 153, 159, 157, 151, 155, 154, 156, + 159, 159, 158, 158, 158, 159, 160, 161, 165, 170, 172, 171, 177, 184, 183, 181, + 177, 170, 161, 160, 166, 173, 177, 187, 196, 198, 192, 185, 180, 181, 175, 176, + 176, 177, 176, 175, 174, 173, 171, 169, 167, 167, 169, 170, 171, 171, 165, 159, + 161, 159, 147, 163, 87, 30, 40, 47, 42, 69, 66, 54, 47, 88, 152, 150, + 156, 163, 145, 164, 164, 177, 170, 166, 166, 168, 168, 164, 158, 154, 160, 155, + 158, 167, 168, 170, 181, 199, 200, 195, 190, 191, 195, 198, 195, 192, 196, 192, + 188, 187, 188, 187, 183, 180, 178, 180, 183, 183, 181, 177, 174, 173, 177, 152, + 161, 151, 154, 151, 173, 161, 163, 159, 164, 165, 158, 160, 165, 163, 157, 161, + 146, 138, 144, 132, 124, 139, 66, 56, 56, 61, 58, 63, 70, 68, 64, 71, + 75, 74, 74, 83, 91, 95, 100, 101, 104, 106, 108, 109, 110, 110, 116, 117, + 118, 28, 28, 31, 33, 32, 31, 30, 30, 39, 51, 49, 43, 44, 40, 37, + 45, 35, 45, 51, 59, 66, 62, 64, 80, 81, 81, 83, 89, 99, 107, 110, + 108, 118, 113, 113, 119, 124, 127, 129, 133, 139, 143, 148, 151, 152, 151, 150, + 150, 153, 154, 156, 158, 160, 161, 162, 162, 165, 163, 164, 169, 172, 170, 172, + 175, 176, 176, 177, 179, 180, 181, 182, 183, 181, 183, 185, 188, 189, 190, 188, + 189, 182, 181, 178, 175, 176, 178, 182, 184, 179, 174, 168, 164, 164, 166, 168, + 168, 171, 163, 148, 157, 158, 160, 131, 31, 53, 36, 46, 67, 59, 54, 81, + 113, 148, 152, 159, 163, 166, 167, 170, 172, 163, 168, 172, 171, 166, 160, 157, + 156, 163, 162, 163, 166, 170, 175, 177, 179, 198, 193, 188, 188, 195, 200, 200, + 199, 192, 190, 187, 185, 185, 185, 183, 181, 180, 174, 177, 181, 177, 179, 182, + 174, 168, 170, 168, 159, 161, 142, 168, 172, 163, 163, 162, 160, 162, 164, 160, + 154, 157, 152, 151, 144, 145, 116, 139, 144, 71, 60, 70, 64, 57, 69, 66, + 67, 80, 85, 91, 97, 102, 104, 105, 106, 111, 111, 110, 108, 105, 106, 108, + 111, 111, 111, 111, 30, 29, 28, 28, 29, 32, 36, 38, 33, 45, 49, 49, + 49, 43, 38, 41, 47, 52, 56, 69, 85, 87, 84, 93, 93, 102, 112, 118, + 120, 119, 118, 117, 110, 107, 109, 115, 120, 122, 128, 135, 134, 138, 144, 148, + 150, 150, 151, 152, 150, 152, 154, 157, 159, 161, 163, 163, 162, 160, 162, 167, + 170, 168, 168, 171, 171, 173, 175, 178, 178, 177, 176, 175, 178, 179, 181, 183, + 183, 185, 185, 185, 190, 188, 185, 182, 181, 182, 184, 185, 187, 186, 183, 178, + 173, 169, 166, 164, 160, 159, 155, 167, 164, 162, 139, 59, 41, 47, 59, 57, + 40, 58, 113, 157, 154, 158, 163, 165, 166, 167, 171, 174, 171, 172, 172, 170, + 165, 159, 155, 154, 160, 163, 163, 165, 167, 174, 184, 193, 193, 190, 189, 193, + 199, 202, 200, 197, 192, 189, 187, 186, 185, 185, 183, 181, 181, 174, 178, 181, + 176, 177, 179, 171, 173, 171, 165, 156, 161, 147, 177, 182, 168, 168, 166, 163, + 164, 166, 161, 155, 155, 156, 146, 142, 139, 123, 138, 139, 73, 62, 74, 77, + 82, 101, 104, 107, 118, 119, 120, 120, 118, 116, 114, 112, 114, 114, 113, 112, + 111, 112, 115, 117, 117, 117, 116, 43, 41, 39, 38, 38, 40, 42, 44, 42, + 48, 55, 58, 59, 58, 58, 59, 71, 77, 80, 88, 99, 96, 91, 100, 94, + 105, 116, 115, 106, 97, 97, 100, 108, 107, 110, 114, 116, 117, 125, 134, 128, + 132, 139, 144, 148, 150, 152, 154, 150, 153, 154, 156, 158, 160, 160, 161, 158, + 156, 158, 163, 165, 162, 162, 165, 167, 169, 173, 175, 174, 172, 168, 166, 175, + 174, 175, 176, 177, 178, 180, 181, 193, 191, 189, 187, 185, 184, 184, 184, 181, + 184, 186, 183, 174, 165, 159, 156, 162, 160, 162, 170, 162, 158, 149, 103, 78, + 74, 68, 57, 63, 106, 150, 163, 159, 163, 170, 175, 176, 176, 177, 177, 179, + 176, 172, 167, 162, 158, 154, 151, 169, 171, 169, 164, 162, 168, 181, 193, 187, + 189, 191, 197, 202, 203, 198, 194, 191, 189, 187, 186, 186, 185, 183, 181, 182, + 175, 178, 180, 175, 176, 176, 168, 175, 172, 167, 160, 168, 153, 179, 180, 166, + 166, 163, 160, 161, 162, 156, 150, 152, 160, 141, 141, 130, 132, 140, 136, 80, + 63, 76, 83, 95, 117, 119, 122, 118, 117, 116, 115, 113, 112, 111, 110, 114, + 115, 115, 114, 113, 115, 118, 119, 116, 116, 117, 37, 39, 41, 45, 48, 49, + 51, 51, 69, 66, 71, 75, 76, 82, 93, 97, 98, 109, 110, 103, 97, 87, + 84, 96, 86, 92, 95, 90, 80, 78, 85, 94, 115, 115, 117, 117, 115, 115, + 122, 132, 127, 131, 137, 142, 146, 148, 151, 153, 155, 155, 156, 156, 156, 155, + 154, 154, 155, 154, 156, 161, 163, 160, 159, 161, 163, 165, 167, 169, 169, 168, + 166, 164, 173, 173, 171, 172, 172, 175, 178, 179, 188, 187, 187, 186, 185, 183, + 182, 181, 190, 197, 203, 202, 195, 187, 184, 183, 179, 169, 166, 166, 155, 153, + 155, 139, 141, 126, 111, 108, 126, 163, 175, 155, 159, 165, 174, 182, 186, 186, + 185, 184, 182, 176, 168, 163, 160, 158, 154, 152, 171, 171, 165, 162, 162, 169, + 180, 190, 188, 190, 193, 198, 201, 201, 195, 191, 191, 189, 187, 187, 186, 185, + 183, 180, 181, 175, 178, 181, 175, 176, 176, 168, 174, 174, 173, 170, 177, 155, + 171, 164, 163, 163, 161, 158, 158, 159, 154, 147, 146, 163, 141, 142, 123, 137, + 143, 139, 80, 60, 72, 83, 99, 118, 116, 114, 117, 116, 115, 114, 114, 115, + 117, 117, 112, 114, 114, 113, 111, 112, 114, 115, 107, 110, 112, 73, 74, 77, + 83, 90, 98, 104, 109, 92, 81, 88, 96, 90, 97, 111, 112, 105, 111, 105, + 97, 98, 93, 90, 97, 89, 91, 90, 90, 90, 95, 105, 115, 118, 119, 121, + 121, 116, 115, 120, 129, 128, 132, 137, 141, 144, 146, 149, 152, 155, 155, 156, + 155, 155, 154, 153, 152, 156, 154, 155, 159, 160, 157, 157, 159, 161, 162, 162, + 162, 163, 164, 166, 167, 171, 171, 169, 170, 171, 173, 176, 178, 180, 181, 182, + 183, 183, 182, 181, 181, 175, 181, 187, 187, 182, 178, 179, 181, 186, 172, 169, + 164, 156, 157, 157, 159, 168, 166, 172, 177, 174, 183, 189, 181, 171, 170, 171, + 173, 178, 183, 186, 188, 178, 172, 165, 160, 160, 159, 156, 154, 160, 157, 152, + 156, 166, 178, 187, 192, 193, 195, 195, 197, 197, 196, 193, 191, 190, 189, 187, + 187, 187, 186, 182, 180, 180, 174, 179, 183, 176, 177, 177, 168, 171, 172, 172, + 170, 176, 152, 166, 157, 165, 165, 163, 160, 161, 162, 157, 150, 140, 162, 142, + 143, 124, 140, 149, 146, 78, 57, 72, 90, 109, 127, 121, 119, 124, 122, 119, + 115, 113, 111, 110, 111, 112, 112, 112, 111, 107, 107, 108, 108, 103, 106, 111, + 91, 89, 82, 81, 83, 91, 100, 107, 98, 83, 95, 107, 96, 96, 104, 98, + 95, 93, 83, 87, 108, 120, 113, 108, 106, 107, 108, 110, 111, 114, 116, 118, + 116, 116, 118, 121, 117, 116, 119, 126, 129, 132, 136, 139, 142, 144, 147, 149, + 150, 152, 154, 155, 156, 156, 156, 156, 157, 153, 152, 156, 157, 155, 155, 159, + 160, 160, 159, 159, 160, 163, 166, 168, 168, 168, 169, 169, 171, 173, 173, 176, + 176, 177, 179, 180, 181, 182, 182, 182, 186, 189, 190, 189, 186, 185, 187, 190, + 177, 169, 174, 168, 166, 168, 158, 165, 164, 168, 184, 197, 188, 184, 192, 196, + 184, 175, 165, 159, 162, 170, 179, 185, 172, 169, 166, 163, 162, 160, 158, 157, + 159, 154, 150, 155, 167, 179, 184, 185, 196, 197, 197, 196, 194, 193, 191, 190, + 190, 189, 188, 188, 188, 186, 182, 179, 179, 174, 179, 182, 175, 175, 174, 165, + 166, 166, 165, 160, 167, 148, 168, 166, 164, 164, 161, 158, 158, 159, 153, 146, + 139, 157, 143, 141, 131, 140, 152, 145, 85, 63, 77, 96, 114, 129, 122, 118, + 117, 115, 111, 108, 106, 104, 104, 104, 111, 112, 112, 109, 106, 105, 105, 106, + 106, 109, 112, 115, 112, 105, 98, 95, 95, 97, 99, 98, 79, 91, 106, 91, + 90, 99, 90, 93, 99, 95, 99, 121, 133, 127, 123, 119, 120, 122, 121, 118, + 114, 110, 111, 119, 119, 118, 122, 120, 116, 115, 118, 126, 129, 133, 136, 138, + 141, 145, 149, 151, 153, 155, 156, 157, 157, 157, 157, 157, 152, 150, 153, 152, + 151, 152, 158, 158, 158, 158, 159, 160, 161, 162, 163, 163, 163, 165, 167, 168, + 169, 169, 169, 174, 174, 175, 176, 177, 179, 180, 181, 178, 177, 175, 174, 172, + 172, 172, 173, 172, 171, 180, 168, 168, 172, 159, 171, 166, 160, 168, 179, 182, + 189, 191, 183, 183, 175, 165, 159, 161, 166, 172, 174, 168, 170, 171, 169, 166, + 162, 161, 159, 164, 159, 154, 156, 162, 172, 178, 181, 194, 196, 197, 197, 195, + 192, 191, 190, 189, 188, 188, 188, 188, 186, 182, 178, 181, 175, 179, 181, 172, + 170, 167, 157, 157, 160, 162, 158, 164, 146, 169, 170, 165, 164, 160, 155, 154, + 153, 146, 139, 147, 150, 139, 136, 143, 139, 150, 136, 92, 66, 78, 93, 107, + 120, 114, 114, 115, 115, 114, 113, 113, 113, 112, 112, 107, 107, 108, 107, 105, + 104, 103, 104, 104, 107, 109, 108, 110, 111, 111, 107, 102, 96, 93, 101, 75, + 86, 100, 85, 87, 102, 96, 100, 120, 126, 121, 124, 124, 122, 128, 118, 120, + 123, 120, 117, 116, 119, 123, 128, 124, 122, 125, 123, 118, 113, 111, 124, 126, + 130, 133, 136, 140, 144, 148, 154, 156, 156, 157, 156, 156, 155, 155, 158, 152, + 148, 150, 150, 149, 152, 157, 157, 159, 160, 160, 160, 159, 158, 157, 159, 159, + 162, 165, 165, 167, 166, 166, 171, 171, 171, 172, 173, 174, 176, 177, 182, 180, + 178, 177, 177, 177, 176, 173, 176, 178, 186, 165, 162, 172, 159, 177, 170, 169, + 175, 176, 176, 186, 189, 175, 173, 170, 169, 170, 172, 173, 169, 165, 167, 172, + 175, 175, 170, 165, 161, 161, 158, 157, 153, 155, 160, 170, 183, 192, 191, 194, + 197, 199, 197, 194, 191, 190, 189, 188, 188, 188, 188, 186, 182, 178, 182, 175, + 178, 179, 169, 165, 162, 151, 148, 156, 164, 163, 168, 145, 166, 165, 171, 171, + 165, 160, 157, 154, 147, 138, 153, 145, 135, 130, 152, 139, 148, 128, 89, 63, + 73, 89, 103, 119, 117, 121, 113, 112, 111, 109, 107, 104, 103, 102, 102, 103, + 105, 105, 103, 103, 102, 104, 99, 101, 104, 113, 113, 111, 111, 108, 108, 107, + 106, 110, 96, 94, 123, 110, 124, 116, 108, 114, 115, 115, 115, 119, 125, 126, + 125, 126, 127, 123, 119, 119, 123, 125, 125, 130, 127, 124, 124, 124, 123, 119, + 116, 115, 124, 131, 131, 133, 140, 144, 142, 150, 148, 147, 150, 153, 153, 151, + 151, 154, 152, 149, 148, 150, 151, 155, 157, 162, 161, 160, 159, 158, 158, 158, + 158, 162, 163, 164, 166, 166, 168, 167, 166, 173, 173, 172, 173, 172, 170, 169, + 168, 174, 173, 171, 171, 172, 174, 177, 178, 180, 176, 171, 172, 174, 174, 170, + 167, 176, 171, 170, 176, 185, 187, 179, 171, 165, 164, 165, 168, 173, 176, 175, + 174, 169, 168, 167, 165, 162, 160, 159, 158, 164, 152, 145, 151, 158, 163, 174, + 187, 187, 194, 199, 200, 194, 189, 189, 190, 190, 189, 188, 187, 186, 184, 180, + 176, 180, 179, 182, 179, 166, 160, 153, 138, 149, 157, 154, 153, 165, 169, 166, + 167, 172, 165, 157, 154, 151, 148, 148, 150, 144, 163, 105, 146, 140, 155, 152, + 142, 83, 70, 70, 86, 96, 97, 107, 120, 113, 108, 110, 100, 106, 109, 93, + 101, 100, 95, 102, 107, 103, 103, 103, 95, 100, 102, 106, 104, 106, 108, 110, + 111, 111, 110, 109, 106, 105, 106, 112, 101, 109, 112, 113, 112, 112, 112, 113, + 116, 120, 122, 122, 127, 129, 128, 124, 121, 123, 122, 119, 126, 127, 130, 134, + 134, 131, 122, 116, 115, 128, 134, 130, 127, 133, 144, 153, 154, 153, 151, 153, + 154, 154, 153, 151, 153, 152, 149, 147, 148, 151, 153, 156, 160, 160, 159, 158, + 158, 159, 159, 160, 160, 160, 163, 165, 166, 167, 167, 166, 169, 170, 171, 172, + 173, 173, 173, 172, 171, 171, 171, 173, 175, 179, 183, 186, 182, 178, 174, 175, + 178, 178, 175, 171, 174, 171, 171, 176, 182, 184, 180, 175, 173, 171, 171, 172, + 175, 176, 175, 173, 173, 172, 172, 170, 168, 166, 166, 164, 156, 150, 146, 150, + 157, 166, 179, 189, 190, 195, 200, 199, 194, 191, 190, 192, 191, 189, 188, 187, + 186, 184, 180, 176, 177, 173, 176, 173, 163, 161, 158, 145, 148, 159, 156, 151, + 157, 159, 159, 164, 168, 161, 154, 152, 152, 149, 143, 139, 142, 150, 122, 148, + 154, 151, 145, 131, 75, 62, 63, 83, 97, 95, 95, 101, 104, 101, 114, 109, + 103, 105, 96, 101, 105, 96, 95, 96, 91, 99, 108, 107, 100, 100, 105, 109, + 112, 115, 117, 118, 116, 114, 113, 110, 115, 110, 93, 103, 107, 115, 117, 117, + 116, 116, 116, 116, 117, 118, 121, 117, 122, 124, 123, 123, 126, 125, 122, 124, + 125, 129, 133, 133, 131, 125, 120, 117, 125, 131, 131, 132, 137, 146, 151, 152, + 152, 152, 153, 155, 156, 155, 152, 151, 150, 148, 147, 146, 148, 151, 153, 154, + 155, 155, 156, 157, 158, 158, 159, 158, 159, 161, 163, 164, 165, 165, 165, 164, + 165, 167, 169, 172, 173, 174, 174, 172, 172, 172, 174, 176, 180, 183, 186, 180, + 177, 175, 176, 178, 179, 177, 174, 172, 171, 172, 175, 179, 181, 181, 180, 181, + 180, 178, 177, 177, 176, 174, 172, 172, 171, 171, 168, 167, 165, 164, 162, 153, + 156, 154, 152, 158, 171, 184, 190, 193, 196, 199, 197, 192, 190, 192, 194, 192, + 190, 189, 188, 187, 184, 180, 176, 173, 171, 176, 175, 166, 164, 159, 144, 142, + 155, 153, 148, 154, 158, 162, 172, 167, 163, 157, 156, 156, 152, 144, 136, 145, + 136, 137, 144, 160, 146, 140, 128, 64, 52, 54, 78, 97, 100, 100, 104, 98, + 93, 121, 119, 100, 103, 102, 103, 108, 99, 96, 94, 91, 102, 115, 116, 107, + 104, 105, 103, 106, 109, 112, 114, 115, 116, 116, 117, 118, 105, 77, 111, 118, + 121, 112, 117, 117, 119, 120, 118, 115, 116, 120, 117, 122, 122, 121, 123, 128, + 128, 125, 124, 123, 123, 123, 123, 125, 126, 127, 119, 119, 121, 131, 142, 149, + 146, 141, 145, 147, 149, 150, 152, 156, 156, 152, 151, 150, 149, 147, 147, 147, + 149, 150, 148, 149, 149, 151, 152, 155, 157, 158, 161, 161, 162, 163, 164, 163, + 163, 163, 160, 162, 164, 167, 169, 170, 171, 172, 175, 175, 174, 174, 173, 174, + 176, 177, 175, 173, 172, 173, 175, 176, 175, 173, 171, 172, 174, 174, 175, 178, + 181, 183, 185, 183, 181, 178, 177, 175, 174, 172, 173, 173, 171, 168, 165, 162, + 161, 158, 158, 164, 163, 157, 160, 175, 187, 190, 195, 197, 198, 195, 191, 191, + 193, 195, 192, 191, 189, 188, 187, 184, 179, 176, 173, 173, 180, 181, 172, 167, + 156, 137, 147, 157, 153, 149, 158, 164, 168, 175, 163, 164, 161, 156, 153, 151, + 146, 140, 151, 131, 140, 141, 148, 144, 137, 134, 64, 53, 55, 72, 90, 97, + 103, 110, 102, 90, 121, 122, 97, 102, 107, 101, 106, 100, 105, 106, 102, 107, + 117, 114, 112, 108, 106, 85, 87, 88, 92, 98, 105, 110, 114, 113, 120, 107, + 74, 106, 112, 114, 105, 107, 105, 110, 117, 118, 116, 115, 120, 127, 128, 124, + 118, 115, 119, 119, 117, 121, 120, 120, 120, 121, 123, 125, 127, 117, 117, 121, + 129, 138, 144, 146, 147, 145, 149, 150, 149, 152, 157, 154, 148, 153, 151, 150, + 149, 149, 148, 149, 149, 146, 146, 147, 149, 152, 155, 157, 159, 164, 164, 164, + 164, 163, 162, 160, 160, 162, 163, 165, 167, 169, 169, 170, 170, 177, 177, 176, + 175, 173, 173, 172, 173, 172, 171, 171, 171, 174, 174, 174, 173, 172, 173, 174, + 174, 174, 176, 180, 184, 183, 181, 179, 176, 174, 172, 173, 173, 178, 177, 174, + 171, 167, 163, 160, 159, 160, 165, 164, 160, 165, 180, 189, 190, 196, 197, 196, + 194, 191, 191, 193, 195, 192, 190, 188, 187, 186, 182, 178, 174, 175, 172, 175, + 175, 168, 166, 159, 141, 157, 162, 153, 150, 164, 170, 167, 168, 155, 160, 158, + 149, 142, 142, 144, 143, 146, 130, 137, 147, 138, 149, 137, 129, 67, 64, 68, + 80, 87, 88, 93, 101, 111, 92, 115, 115, 95, 104, 106, 97, 100, 97, 104, + 106, 99, 102, 109, 105, 111, 108, 108, 89, 88, 86, 87, 89, 93, 98, 102, + 104, 119, 115, 87, 86, 90, 98, 99, 92, 90, 97, 112, 119, 116, 113, 116, + 113, 114, 111, 106, 105, 110, 113, 111, 115, 119, 124, 127, 127, 125, 124, 125, + 116, 121, 128, 130, 126, 128, 142, 157, 147, 153, 153, 150, 152, 157, 154, 145, + 153, 152, 151, 149, 148, 148, 148, 148, 146, 148, 148, 150, 153, 156, 159, 161, + 164, 164, 164, 164, 163, 161, 160, 159, 165, 166, 168, 169, 170, 170, 170, 170, + 175, 175, 175, 176, 175, 176, 176, 177, 173, 173, 173, 173, 174, 175, 175, 175, + 173, 174, 174, 174, 174, 175, 178, 182, 178, 177, 175, 173, 170, 170, 172, 174, + 176, 174, 173, 170, 166, 163, 160, 159, 158, 159, 158, 161, 170, 183, 190, 193, + 197, 195, 194, 193, 191, 191, 192, 192, 191, 189, 187, 186, 184, 181, 176, 172, + 176, 167, 164, 162, 159, 166, 168, 156, 149, 154, 148, 151, 170, 178, 172, 170, + 158, 163, 158, 145, 139, 142, 146, 145, 134, 132, 138, 155, 143, 152, 139, 107, + 59, 66, 81, 98, 104, 100, 99, 103, 116, 97, 109, 106, 96, 106, 102, 96, + 97, 92, 96, 95, 88, 92, 104, 103, 113, 109, 110, 104, 103, 99, 98, 96, + 96, 98, 100, 108, 117, 113, 99, 72, 82, 93, 96, 91, 86, 94, 112, 121, + 115, 108, 107, 98, 102, 103, 102, 105, 112, 117, 115, 116, 121, 126, 128, 127, + 125, 126, 126, 120, 123, 128, 133, 130, 126, 133, 143, 142, 149, 151, 149, 151, + 159, 157, 147, 152, 151, 150, 149, 148, 146, 146, 145, 145, 145, 146, 148, 151, + 154, 156, 158, 160, 161, 162, 162, 162, 162, 161, 161, 164, 165, 166, 168, 169, + 170, 170, 170, 170, 171, 173, 175, 176, 177, 178, 178, 175, 176, 176, 175, 175, + 174, 174, 175, 175, 174, 175, 175, 175, 176, 178, 178, 176, 176, 175, 171, 167, + 167, 170, 173, 170, 169, 169, 167, 166, 164, 164, 163, 165, 158, 157, 166, 178, + 188, 192, 196, 195, 194, 193, 192, 191, 191, 189, 189, 190, 188, 186, 184, 182, + 179, 174, 170, 171, 163, 161, 162, 163, 173, 177, 165, 142, 152, 151, 156, 173, + 180, 173, 172, 167, 167, 158, 144, 142, 148, 146, 138, 130, 136, 145, 152, 153, + 144, 149, 85, 54, 65, 84, 106, 118, 119, 117, 115, 117, 107, 112, 107, 106, + 113, 102, 104, 101, 97, 101, 101, 93, 98, 111, 112, 119, 113, 110, 99, 100, + 103, 105, 106, 109, 110, 112, 119, 112, 102, 104, 71, 91, 98, 94, 100, 91, + 97, 116, 125, 116, 103, 98, 107, 112, 114, 114, 116, 120, 121, 117, 123, 123, + 123, 121, 119, 122, 127, 132, 128, 120, 121, 136, 145, 141, 126, 115, 130, 138, + 143, 144, 150, 160, 160, 151, 151, 150, 149, 147, 146, 145, 144, 144, 141, 142, + 142, 144, 147, 150, 153, 153, 156, 157, 159, 160, 161, 162, 162, 163, 158, 159, + 161, 164, 165, 167, 167, 168, 168, 169, 170, 172, 173, 174, 174, 174, 174, 175, + 176, 175, 173, 172, 173, 174, 176, 176, 174, 175, 176, 177, 176, 174, 177, 176, + 175, 171, 167, 167, 168, 172, 170, 171, 171, 171, 171, 171, 172, 171, 177, 164, + 161, 173, 187, 191, 193, 197, 194, 192, 192, 192, 191, 191, 188, 187, 189, 187, + 185, 183, 181, 178, 173, 169, 167, 162, 167, 173, 175, 182, 180, 164, 152, 165, + 165, 165, 173, 172, 162, 161, 169, 165, 151, 139, 142, 148, 140, 124, 134, 140, + 151, 142, 158, 133, 159, 73, 61, 66, 81, 100, 115, 121, 118, 115, 116, 116, + 120, 112, 116, 118, 104, 114, 106, 105, 114, 118, 110, 114, 124, 123, 120, 112, + 109, 105, 102, 96, 91, 93, 101, 104, 102, 110, 105, 105, 121, 106, 85, 97, + 98, 100, 112, 115, 116, 119, 113, 106, 111, 111, 113, 114, 113, 112, 114, 120, + 125, 124, 121, 129, 132, 122, 121, 125, 121, 124, 122, 125, 135, 144, 145, 142, + 140, 117, 130, 134, 138, 154, 160, 154, 153, 151, 154, 159, 159, 157, 155, 155, + 157, 148, 148, 147, 145, 145, 148, 153, 156, 153, 155, 157, 160, 163, 163, 162, + 161, 169, 166, 164, 165, 165, 164, 166, 170, 166, 164, 168, 174, 174, 169, 170, + 174, 173, 174, 176, 176, 176, 174, 170, 168, 174, 175, 175, 176, 175, 174, 173, + 173, 170, 171, 171, 171, 170, 173, 176, 179, 179, 179, 172, 167, 169, 174, 169, + 160, 165, 159, 160, 173, 189, 192, 192, 193, 194, 196, 197, 197, 195, 192, 188, + 187, 185, 186, 187, 184, 178, 174, 173, 174, 166, 172, 177, 183, 166, 163, 171, + 142, 161, 163, 162, 166, 173, 178, 176, 171, 163, 153, 150, 134, 136, 146, 133, + 128, 142, 149, 141, 153, 171, 123, 161, 74, 66, 69, 89, 108, 111, 116, 120, + 115, 108, 113, 116, 117, 121, 123, 120, 115, 115, 114, 115, 118, 121, 123, 122, + 121, 115, 112, 112, 111, 109, 103, 95, 92, 93, 90, 83, 98, 93, 89, 102, + 94, 86, 104, 103, 101, 103, 97, 94, 102, 103, 100, 106, 100, 102, 104, 108, + 110, 115, 119, 122, 120, 118, 125, 128, 119, 121, 126, 122, 128, 127, 124, 123, + 131, 143, 147, 143, 136, 137, 127, 119, 127, 135, 142, 154, 158, 161, 162, 160, + 157, 155, 156, 157, 154, 153, 151, 148, 146, 148, 151, 154, 150, 151, 153, 156, + 159, 159, 160, 160, 166, 162, 162, 164, 165, 163, 165, 169, 169, 167, 170, 175, + 175, 171, 172, 178, 172, 173, 175, 175, 175, 173, 170, 169, 174, 175, 176, 175, + 174, 172, 171, 171, 170, 171, 171, 170, 170, 171, 174, 177, 176, 175, 170, 166, + 168, 174, 175, 172, 161, 161, 169, 182, 189, 190, 190, 194, 193, 194, 195, 195, + 193, 190, 187, 185, 184, 182, 180, 178, 177, 175, 172, 169, 170, 190, 168, 173, + 191, 163, 150, 166, 168, 167, 166, 172, 177, 178, 174, 170, 167, 154, 150, 135, + 133, 140, 129, 131, 143, 141, 144, 144, 131, 140, 139, 61, 66, 73, 93, 109, + 112, 113, 118, 114, 112, 117, 118, 118, 119, 122, 120, 113, 110, 110, 109, 112, + 113, 114, 113, 113, 112, 112, 111, 108, 110, 109, 105, 103, 103, 98, 92, 91, + 91, 86, 95, 92, 93, 108, 97, 100, 99, 89, 87, 99, 102, 99, 104, 104, + 104, 106, 111, 116, 120, 122, 122, 122, 118, 123, 125, 117, 119, 125, 123, 118, + 125, 127, 124, 129, 142, 147, 143, 142, 143, 136, 131, 133, 129, 130, 142, 140, + 147, 157, 166, 167, 166, 163, 161, 156, 154, 152, 149, 146, 146, 147, 151, 147, + 147, 149, 150, 152, 154, 157, 158, 161, 158, 159, 163, 164, 162, 163, 167, 169, + 168, 170, 172, 172, 170, 173, 178, 171, 173, 174, 174, 173, 172, 170, 168, 173, + 174, 174, 174, 173, 171, 170, 169, 169, 171, 171, 169, 168, 168, 171, 173, 168, + 170, 170, 167, 168, 172, 173, 170, 157, 165, 179, 190, 190, 187, 189, 196, 194, + 194, 195, 194, 192, 189, 187, 185, 190, 185, 180, 178, 178, 177, 171, 166, 174, + 181, 182, 190, 177, 162, 173, 169, 175, 171, 172, 181, 184, 177, 170, 170, 170, + 154, 150, 135, 130, 133, 126, 137, 152, 154, 150, 150, 136, 164, 98, 71, 66, + 81, 102, 114, 116, 116, 117, 118, 111, 114, 113, 112, 113, 116, 114, 110, 108, + 106, 105, 107, 108, 109, 108, 108, 107, 109, 107, 105, 108, 111, 110, 111, 113, + 111, 107, 101, 106, 103, 110, 108, 105, 107, 81, 102, 107, 105, 107, 115, 114, + 107, 110, 118, 117, 116, 120, 123, 124, 119, 117, 125, 119, 122, 122, 115, 118, + 125, 121, 117, 121, 124, 122, 121, 129, 142, 152, 148, 150, 147, 147, 148, 137, + 129, 137, 131, 136, 142, 148, 153, 156, 157, 157, 153, 153, 152, 150, 149, 149, + 151, 155, 150, 149, 148, 148, 149, 150, 153, 155, 156, 155, 156, 162, 163, 162, + 162, 165, 167, 167, 167, 167, 166, 167, 170, 174, 169, 171, 171, 171, 171, 170, + 168, 168, 170, 171, 171, 171, 171, 170, 170, 169, 169, 170, 169, 168, 166, 167, + 168, 172, 162, 166, 171, 171, 169, 165, 161, 160, 162, 172, 184, 190, 190, 189, + 191, 195, 196, 196, 196, 196, 192, 191, 189, 188, 190, 187, 182, 178, 174, 171, + 167, 164, 165, 185, 200, 191, 158, 166, 195, 168, 178, 173, 175, 186, 187, 176, + 169, 171, 169, 152, 148, 133, 126, 129, 128, 145, 146, 155, 131, 143, 158, 149, + 53, 74, 66, 90, 109, 119, 122, 120, 121, 125, 120, 121, 120, 118, 119, 123, + 124, 120, 124, 122, 121, 122, 125, 126, 126, 126, 124, 125, 125, 108, 111, 111, + 107, 106, 107, 107, 104, 109, 116, 114, 120, 118, 115, 111, 78, 106, 119, 124, + 124, 126, 120, 115, 122, 124, 121, 119, 120, 121, 119, 112, 107, 120, 114, 116, + 117, 113, 118, 125, 121, 127, 120, 115, 113, 104, 103, 124, 150, 160, 157, 146, + 141, 145, 142, 140, 149, 151, 144, 133, 127, 126, 131, 139, 145, 147, 148, 150, + 150, 149, 152, 155, 157, 153, 152, 149, 147, 147, 148, 151, 152, 155, 153, 155, + 161, 163, 161, 161, 164, 165, 167, 167, 165, 164, 166, 169, 170, 167, 168, 169, + 169, 169, 169, 167, 167, 167, 167, 169, 170, 170, 171, 170, 170, 168, 169, 168, + 167, 165, 166, 167, 170, 166, 167, 168, 168, 166, 162, 160, 161, 172, 177, 182, + 184, 188, 192, 193, 194, 195, 195, 195, 194, 191, 189, 187, 186, 180, 182, 182, + 176, 168, 164, 165, 168, 173, 208, 182, 160, 173, 175, 177, 179, 175, 174, 177, + 187, 188, 178, 171, 171, 165, 150, 146, 130, 124, 131, 135, 153, 155, 150, 129, + 146, 157, 127, 83, 71, 65, 96, 112, 117, 124, 122, 121, 131, 117, 117, 115, + 110, 110, 113, 112, 109, 116, 115, 114, 115, 117, 120, 122, 122, 121, 124, 124, + 107, 111, 111, 106, 104, 107, 108, 107, 112, 113, 106, 113, 114, 115, 119, 94, + 112, 125, 126, 122, 121, 116, 118, 130, 120, 119, 120, 120, 120, 118, 115, 111, + 113, 106, 109, 113, 110, 117, 124, 120, 117, 115, 118, 121, 111, 98, 97, 104, + 142, 151, 149, 145, 151, 153, 150, 154, 154, 150, 145, 143, 141, 139, 136, 134, + 136, 138, 139, 141, 141, 143, 147, 149, 152, 151, 147, 146, 146, 146, 149, 150, + 153, 151, 152, 156, 158, 157, 157, 161, 164, 167, 168, 165, 164, 167, 169, 169, + 165, 166, 166, 166, 167, 167, 166, 166, 166, 167, 168, 169, 170, 170, 170, 170, + 167, 167, 167, 166, 165, 166, 168, 171, 174, 167, 162, 160, 162, 165, 170, 178, + 181, 182, 180, 181, 185, 193, 194, 191, 192, 191, 190, 189, 186, 185, 183, 183, + 176, 181, 184, 179, 170, 167, 173, 180, 207, 187, 154, 164, 181, 174, 176, 173, + 173, 177, 181, 185, 185, 180, 175, 171, 161, 151, 146, 125, 122, 138, 143, 156, + 171, 146, 145, 155, 133, 125, 154, 74, 66, 100, 112, 112, 123, 123, 118, 130, + 113, 114, 110, 104, 101, 103, 100, 94, 100, 98, 96, 97, 99, 101, 102, 104, + 103, 106, 108, 106, 111, 114, 112, 111, 114, 116, 116, 113, 110, 101, 112, 113, + 114, 124, 107, 113, 123, 121, 116, 116, 113, 113, 124, 115, 117, 120, 120, 120, + 119, 119, 122, 115, 109, 111, 114, 112, 118, 122, 116, 107, 117, 123, 123, 122, + 115, 89, 60, 87, 124, 149, 154, 161, 162, 155, 151, 147, 150, 156, 162, 164, + 160, 151, 143, 137, 139, 140, 140, 139, 139, 139, 141, 144, 143, 143, 142, 143, + 144, 146, 147, 151, 148, 148, 151, 152, 152, 153, 157, 160, 165, 167, 164, 162, + 166, 166, 164, 164, 165, 165, 165, 165, 165, 166, 166, 169, 170, 170, 170, 169, + 168, 167, 167, 166, 166, 168, 167, 166, 167, 170, 172, 174, 164, 158, 160, 167, + 170, 176, 183, 183, 185, 182, 180, 184, 192, 193, 189, 191, 191, 188, 187, 184, + 183, 181, 181, 179, 181, 182, 178, 172, 170, 174, 179, 195, 156, 155, 191, 184, + 175, 188, 164, 173, 184, 187, 183, 181, 183, 178, 169, 159, 154, 148, 122, 121, + 145, 149, 155, 156, 141, 141, 145, 128, 129, 158, 86, 74, 109, 114, 109, 125, + 125, 116, 129, 129, 131, 127, 123, 121, 122, 120, 114, 116, 113, 110, 108, 109, + 111, 112, 111, 111, 114, 116, 109, 115, 119, 115, 112, 112, 112, 109, 117, 112, + 105, 119, 119, 115, 122, 107, 112, 120, 117, 115, 120, 116, 109, 114, 111, 114, + 118, 118, 117, 117, 118, 123, 125, 117, 118, 120, 115, 117, 119, 111, 120, 128, + 119, 103, 112, 128, 104, 59, 41, 96, 135, 143, 150, 157, 155, 152, 157, 153, + 150, 149, 152, 157, 159, 158, 151, 152, 152, 150, 146, 144, 144, 144, 137, 138, + 137, 139, 142, 143, 145, 146, 150, 147, 145, 148, 148, 148, 151, 156, 156, 162, + 165, 161, 159, 162, 162, 158, 164, 164, 164, 164, 164, 165, 165, 166, 173, 172, + 172, 172, 169, 168, 165, 165, 165, 167, 167, 167, 166, 167, 171, 173, 167, 159, + 158, 167, 174, 173, 172, 173, 180, 186, 186, 181, 183, 190, 190, 187, 192, 191, + 188, 187, 184, 184, 183, 183, 179, 177, 174, 169, 165, 163, 164, 165, 134, 167, + 174, 193, 207, 184, 173, 174, 176, 190, 192, 182, 179, 185, 181, 167, 159, 157, + 150, 120, 120, 149, 153, 152, 144, 159, 141, 147, 167, 150, 131, 124, 84, 119, + 120, 112, 129, 128, 117, 130, 125, 128, 127, 124, 126, 129, 127, 121, 123, 120, + 114, 112, 112, 113, 113, 113, 116, 119, 119, 107, 109, 111, 111, 110, 109, 110, + 111, 110, 110, 110, 110, 110, 110, 110, 111, 103, 112, 111, 110, 113, 109, 106, + 113, 98, 106, 109, 107, 109, 117, 120, 119, 116, 119, 121, 120, 116, 115, 115, + 118, 119, 122, 121, 108, 119, 115, 115, 66, 29, 49, 83, 117, 141, 150, 148, + 144, 154, 154, 155, 155, 157, 161, 161, 158, 147, 145, 145, 148, 153, 155, 154, + 152, 154, 156, 155, 150, 141, 134, 131, 131, 140, 142, 146, 150, 151, 149, 144, + 140, 152, 153, 158, 162, 161, 156, 158, 164, 162, 164, 162, 158, 159, 165, 168, + 168, 165, 166, 169, 171, 169, 166, 160, 158, 166, 163, 161, 162, 165, 167, 165, + 163, 142, 155, 170, 175, 173, 172, 176, 183, 183, 183, 182, 184, 186, 189, 190, + 189, 192, 189, 185, 183, 183, 183, 182, 181, 183, 179, 172, 166, 164, 161, 156, + 149, 170, 165, 183, 195, 183, 187, 186, 161, 177, 189, 197, 194, 185, 177, 171, + 167, 145, 152, 155, 140, 118, 153, 153, 156, 165, 149, 146, 159, 162, 149, 140, + 143, 96, 114, 109, 117, 123, 112, 122, 121, 127, 126, 132, 132, 123, 123, 122, + 109, 121, 118, 116, 118, 119, 118, 115, 114, 116, 121, 119, 112, 113, 112, 110, + 107, 107, 107, 109, 110, 109, 108, 108, 107, 107, 107, 108, 107, 115, 114, 112, + 116, 113, 109, 117, 111, 115, 113, 105, 101, 104, 106, 105, 106, 109, 111, 111, + 111, 111, 113, 115, 117, 116, 117, 113, 123, 112, 119, 84, 33, 38, 47, 60, + 79, 108, 140, 162, 163, 161, 155, 151, 153, 157, 157, 153, 155, 153, 153, 154, + 158, 161, 164, 164, 158, 158, 157, 153, 150, 148, 148, 149, 146, 142, 138, 137, + 139, 144, 147, 148, 143, 144, 149, 156, 157, 158, 162, 169, 164, 167, 165, 161, + 162, 166, 168, 166, 173, 173, 171, 168, 164, 162, 161, 161, 159, 161, 163, 166, + 168, 164, 157, 152, 161, 168, 175, 179, 177, 176, 177, 180, 188, 187, 188, 190, + 192, 192, 189, 186, 190, 187, 184, 182, 182, 182, 181, 180, 171, 175, 176, 170, + 163, 163, 170, 176, 168, 184, 192, 193, 194, 189, 182, 180, 197, 202, 201, 192, + 183, 179, 177, 174, 163, 158, 146, 128, 113, 157, 165, 171, 153, 148, 154, 169, + 173, 162, 149, 144, 119, 104, 118, 105, 126, 118, 121, 121, 120, 116, 120, 123, + 121, 126, 127, 114, 125, 121, 115, 111, 107, 107, 113, 118, 108, 115, 117, 112, + 113, 112, 111, 109, 109, 110, 111, 114, 113, 110, 108, 107, 108, 108, 109, 108, + 115, 113, 111, 116, 114, 111, 118, 113, 115, 111, 105, 102, 105, 109, 110, 115, + 117, 119, 119, 120, 121, 123, 124, 119, 113, 117, 119, 129, 114, 125, 100, 28, + 31, 34, 34, 39, 60, 93, 118, 132, 142, 152, 158, 166, 169, 164, 157, 160, + 159, 158, 156, 157, 159, 164, 167, 162, 162, 162, 163, 163, 162, 159, 157, 152, + 146, 140, 135, 137, 141, 146, 149, 143, 141, 144, 147, 149, 148, 153, 160, 162, + 165, 164, 161, 160, 164, 163, 160, 166, 169, 168, 167, 162, 162, 162, 166, 164, + 161, 155, 152, 153, 157, 161, 162, 176, 176, 176, 177, 179, 181, 181, 180, 189, + 190, 192, 194, 195, 193, 188, 184, 189, 187, 184, 182, 182, 182, 180, 178, 173, + 173, 171, 165, 160, 160, 167, 174, 171, 201, 200, 190, 199, 189, 178, 196, 199, + 200, 195, 187, 181, 179, 176, 171, 160, 155, 148, 138, 127, 166, 160, 157, 145, + 148, 156, 166, 171, 166, 152, 141, 143, 94, 118, 97, 125, 119, 118, 118, 125, + 117, 117, 117, 113, 118, 117, 104, 101, 111, 122, 127, 122, 116, 112, 109, 110, + 113, 116, 102, 106, 109, 112, 113, 114, 114, 117, 118, 116, 113, 111, 111, 112, + 114, 116, 110, 117, 113, 112, 118, 117, 113, 119, 113, 114, 114, 113, 113, 117, + 120, 123, 126, 127, 127, 127, 127, 127, 127, 128, 121, 120, 122, 120, 131, 120, + 127, 91, 24, 32, 42, 42, 37, 36, 45, 55, 132, 139, 141, 139, 145, 159, + 170, 174, 164, 165, 165, 162, 157, 156, 159, 162, 164, 165, 168, 172, 173, 169, + 159, 151, 160, 156, 153, 151, 151, 148, 146, 143, 146, 143, 141, 144, 145, 146, + 149, 155, 170, 174, 175, 172, 172, 175, 173, 169, 165, 170, 173, 172, 166, 161, + 160, 160, 160, 156, 149, 147, 150, 159, 169, 176, 176, 175, 175, 176, 178, 181, + 184, 185, 188, 188, 189, 192, 193, 192, 188, 185, 188, 185, 183, 181, 181, 180, + 178, 176, 182, 169, 158, 158, 164, 166, 163, 161, 186, 204, 201, 189, 190, 186, + 184, 197, 186, 188, 187, 184, 184, 183, 175, 166, 154, 153, 153, 148, 134, 162, + 148, 139, 167, 171, 172, 170, 172, 175, 166, 155, 151, 105, 104, 105, 122, 115, + 119, 114, 125, 119, 118, 115, 108, 111, 113, 103, 114, 115, 111, 105, 104, 109, + 114, 115, 113, 112, 112, 93, 99, 105, 111, 113, 113, 112, 114, 114, 112, 110, + 109, 109, 112, 115, 118, 114, 120, 114, 113, 120, 119, 115, 120, 117, 119, 120, + 121, 119, 117, 116, 118, 120, 118, 118, 119, 120, 121, 120, 120, 119, 126, 126, + 113, 125, 123, 119, 63, 29, 32, 37, 39, 36, 35, 37, 40, 46, 81, 120, + 143, 154, 159, 156, 147, 167, 171, 173, 172, 167, 164, 164, 166, 167, 166, 166, + 167, 168, 166, 159, 153, 164, 163, 162, 162, 161, 158, 151, 147, 143, 138, 137, + 142, 145, 148, 154, 161, 158, 162, 165, 164, 165, 167, 166, 162, 175, 176, 174, + 169, 162, 157, 156, 156, 146, 151, 158, 165, 169, 171, 171, 171, 174, 176, 177, + 177, 175, 178, 184, 190, 188, 187, 186, 188, 190, 192, 191, 190, 185, 183, 181, + 180, 179, 177, 174, 172, 172, 161, 156, 163, 171, 173, 174, 175, 208, 199, 199, + 193, 179, 186, 198, 190, 187, 188, 186, 185, 187, 188, 181, 172, 165, 159, 151, + 137, 116, 149, 150, 157, 169, 173, 172, 165, 164, 170, 164, 154, 147, 134, 88, + 125, 122, 113, 124, 114, 113, 114, 119, 119, 114, 120, 127, 123, 131, 128, 121, + 114, 116, 120, 117, 109, 107, 103, 102, 92, 98, 104, 107, 107, 106, 105, 105, + 105, 105, 103, 103, 104, 108, 110, 112, 110, 114, 108, 106, 114, 113, 109, 115, + 111, 112, 115, 119, 118, 113, 112, 113, 114, 112, 112, 115, 119, 121, 122, 121, + 114, 124, 123, 105, 117, 118, 109, 43, 33, 32, 33, 36, 38, 39, 38, 37, + 30, 43, 53, 59, 80, 119, 150, 163, 160, 164, 169, 172, 172, 171, 170, 170, + 169, 165, 160, 157, 158, 161, 164, 165, 166, 164, 162, 162, 162, 164, 162, 160, + 144, 139, 135, 138, 140, 140, 143, 148, 158, 163, 165, 165, 165, 169, 168, 165, + 164, 161, 154, 151, 151, 157, 162, 166, 157, 161, 166, 170, 171, 173, 174, 176, + 177, 181, 183, 182, 178, 178, 183, 188, 188, 187, 186, 187, 190, 192, 193, 192, + 182, 180, 178, 177, 176, 174, 171, 168, 158, 159, 165, 170, 166, 163, 174, 189, + 218, 197, 199, 197, 180, 193, 207, 187, 197, 195, 188, 182, 182, 184, 182, 176, + 166, 160, 152, 137, 113, 146, 156, 171, 156, 162, 166, 165, 163, 166, 158, 148, + 145, 159, 84, 133, 128, 120, 127, 120, 116, 116, 125, 126, 121, 128, 132, 126, + 80, 89, 98, 105, 111, 109, 90, 68, 104, 96, 91, 102, 104, 105, 105, 104, + 103, 104, 106, 106, 105, 105, 105, 106, 108, 108, 109, 107, 110, 103, 101, 110, + 111, 106, 110, 106, 106, 109, 115, 115, 113, 114, 119, 115, 113, 113, 116, 120, + 123, 123, 122, 110, 116, 116, 104, 116, 112, 106, 49, 33, 34, 38, 41, 42, + 38, 32, 27, 38, 40, 35, 35, 61, 103, 128, 131, 154, 155, 158, 162, 167, + 170, 170, 169, 167, 165, 162, 159, 158, 161, 166, 170, 166, 165, 163, 164, 166, + 167, 167, 165, 154, 147, 140, 141, 140, 138, 136, 137, 131, 134, 134, 133, 133, + 137, 136, 134, 147, 145, 142, 148, 156, 167, 172, 174, 172, 172, 169, 167, 166, + 172, 180, 186, 181, 181, 182, 183, 183, 183, 182, 181, 186, 185, 186, 187, 190, + 190, 188, 186, 179, 178, 176, 175, 174, 172, 168, 164, 162, 163, 169, 171, 163, + 157, 172, 192, 206, 201, 199, 195, 194, 200, 201, 193, 197, 197, 191, 184, 181, + 181, 179, 174, 159, 157, 156, 146, 123, 150, 154, 166, 166, 170, 175, 180, 179, + 176, 168, 162, 147, 164, 92, 115, 134, 130, 123, 126, 128, 122, 126, 128, 125, + 128, 123, 105, 107, 109, 104, 99, 105, 117, 118, 109, 104, 94, 87, 109, 110, + 108, 106, 104, 106, 110, 114, 111, 111, 111, 111, 112, 112, 111, 111, 113, 115, + 108, 106, 116, 116, 112, 116, 116, 112, 112, 116, 115, 111, 113, 119, 112, 109, + 108, 109, 113, 114, 113, 111, 110, 110, 113, 108, 119, 107, 108, 65, 37, 37, + 37, 37, 36, 35, 34, 34, 36, 32, 26, 35, 78, 132, 160, 160, 156, 154, + 154, 157, 163, 167, 168, 167, 162, 166, 170, 170, 167, 163, 163, 164, 167, 168, + 169, 171, 172, 170, 165, 161, 161, 153, 150, 153, 154, 153, 151, 151, 152, 155, + 154, 151, 151, 153, 153, 150, 153, 152, 156, 166, 177, 181, 176, 169, 165, 171, + 176, 178, 178, 177, 179, 181, 179, 177, 177, 181, 186, 187, 182, 176, 182, 182, + 184, 187, 188, 186, 182, 178, 178, 176, 175, 174, 173, 170, 166, 162, 175, 166, + 164, 169, 172, 172, 183, 199, 188, 206, 197, 190, 207, 203, 190, 198, 191, 197, + 198, 195, 190, 186, 179, 172, 166, 159, 154, 143, 120, 148, 151, 163, 167, 165, + 168, 171, 170, 166, 161, 161, 150, 156, 101, 93, 137, 137, 117, 128, 129, 119, + 117, 123, 125, 127, 114, 88, 105, 110, 108, 98, 96, 102, 101, 92, 101, 92, + 88, 101, 105, 103, 99, 97, 102, 106, 106, 106, 109, 113, 115, 116, 115, 114, + 114, 116, 119, 111, 106, 113, 114, 114, 122, 117, 118, 116, 110, 110, 112, 113, + 109, 108, 107, 106, 107, 110, 111, 110, 109, 107, 121, 123, 113, 113, 120, 106, + 80, 36, 36, 40, 41, 35, 26, 31, 40, 36, 35, 32, 42, 83, 137, 165, + 166, 171, 172, 171, 167, 162, 159, 158, 158, 160, 162, 163, 164, 164, 166, 168, + 170, 171, 172, 170, 170, 169, 170, 171, 170, 166, 159, 151, 148, 151, 154, 155, + 154, 158, 158, 158, 159, 160, 160, 161, 161, 163, 163, 165, 168, 171, 175, 178, + 179, 173, 173, 173, 173, 174, 176, 178, 181, 182, 182, 181, 181, 181, 182, 183, + 184, 183, 183, 184, 186, 187, 186, 183, 180, 179, 179, 175, 169, 163, 161, 165, + 169, 166, 169, 170, 168, 173, 184, 192, 195, 198, 186, 187, 194, 199, 203, 200, + 185, 198, 192, 185, 184, 186, 185, 179, 174, 177, 165, 154, 142, 123, 156, 156, + 163, 169, 166, 168, 172, 171, 167, 164, 166, 150, 143, 111, 88, 119, 118, 127, + 126, 125, 121, 116, 115, 116, 114, 109, 102, 118, 106, 97, 98, 107, 107, 94, + 79, 116, 145, 103, 96, 101, 100, 96, 95, 100, 103, 104, 102, 106, 110, 112, + 112, 113, 115, 117, 125, 128, 121, 115, 117, 113, 107, 111, 111, 114, 114, 110, + 110, 114, 115, 111, 114, 113, 111, 112, 114, 115, 114, 113, 112, 121, 122, 116, + 119, 126, 119, 102, 44, 38, 35, 34, 33, 37, 54, 69, 78, 83, 81, 82, + 106, 144, 165, 167, 178, 180, 181, 179, 176, 173, 173, 173, 169, 174, 177, 176, + 172, 170, 174, 178, 182, 182, 180, 180, 181, 183, 185, 187, 182, 178, 171, 163, + 157, 156, 158, 160, 152, 154, 158, 161, 163, 162, 161, 159, 163, 164, 167, 171, + 175, 178, 181, 182, 183, 181, 179, 178, 177, 178, 179, 180, 183, 183, 183, 183, + 183, 184, 184, 185, 183, 183, 184, 186, 188, 188, 186, 184, 176, 174, 172, 168, + 165, 164, 166, 169, 170, 171, 171, 173, 183, 194, 198, 196, 199, 203, 213, 211, + 195, 191, 200, 202, 194, 192, 189, 186, 182, 179, 178, 177, 169, 170, 168, 150, + 117, 141, 150, 169, 169, 167, 168, 173, 172, 168, 164, 165, 147, 138, 108, 87, + 123, 126, 129, 123, 116, 115, 116, 119, 123, 126, 123, 121, 105, 100, 95, 95, + 99, 101, 96, 91, 77, 101, 102, 93, 98, 98, 95, 94, 99, 102, 102, 98, + 104, 107, 106, 104, 105, 110, 115, 108, 115, 113, 112, 117, 112, 104, 109, 107, + 110, 112, 111, 113, 116, 117, 113, 120, 117, 115, 115, 116, 117, 116, 115, 114, + 114, 113, 113, 117, 121, 119, 113, 78, 70, 64, 63, 69, 80, 99, 114, 117, + 126, 127, 122, 129, 149, 164, 165, 178, 181, 184, 185, 184, 183, 182, 182, 179, + 186, 191, 189, 180, 175, 178, 184, 185, 184, 184, 184, 186, 189, 192, 194, 190, + 188, 183, 173, 162, 156, 156, 158, 154, 155, 157, 159, 161, 163, 163, 164, 160, + 162, 164, 168, 171, 173, 175, 175, 181, 179, 177, 175, 174, 174, 175, 176, 178, + 178, 179, 181, 180, 181, 180, 181, 182, 181, 180, 181, 182, 183, 181, 180, 174, + 172, 169, 168, 169, 170, 171, 170, 170, 171, 173, 180, 192, 203, 203, 197, 208, + 203, 207, 206, 195, 194, 199, 195, 187, 189, 188, 183, 176, 171, 173, 175, 170, + 164, 157, 144, 120, 147, 148, 156, 168, 166, 168, 173, 173, 168, 164, 163, 153, + 137, 107, 82, 122, 132, 134, 129, 134, 133, 132, 129, 124, 120, 114, 111, 115, + 113, 109, 104, 99, 97, 97, 99, 91, 95, 119, 95, 101, 101, 98, 96, 100, + 101, 101, 100, 104, 105, 102, 97, 96, 101, 108, 94, 104, 103, 106, 114, 112, + 107, 111, 107, 112, 114, 114, 115, 120, 118, 115, 120, 117, 114, 113, 114, 115, + 115, 114, 116, 111, 108, 111, 113, 112, 112, 112, 113, 110, 109, 111, 117, 122, + 130, 136, 134, 144, 148, 142, 144, 157, 168, 170, 176, 180, 184, 186, 186, 184, + 183, 183, 183, 188, 192, 191, 185, 181, 181, 183, 185, 184, 182, 182, 183, 186, + 189, 192, 187, 187, 184, 178, 169, 163, 159, 158, 161, 158, 155, 152, 153, 157, + 162, 165, 160, 162, 163, 165, 166, 167, 167, 166, 174, 172, 171, 171, 171, 172, + 174, 175, 175, 177, 177, 179, 178, 179, 177, 177, 183, 181, 179, 178, 178, 179, + 178, 176, 177, 173, 171, 171, 174, 176, 175, 172, 167, 173, 180, 187, 197, 205, + 204, 198, 207, 195, 194, 196, 195, 200, 202, 193, 190, 191, 189, 183, 177, 173, + 174, 176, 170, 160, 153, 144, 126, 156, 153, 158, 167, 164, 165, 172, 173, 168, + 162, 160, 161, 142, 114, 78, 115, 133, 136, 140, 127, 129, 132, 132, 130, 127, + 124, 124, 126, 126, 123, 118, 111, 107, 106, 107, 116, 99, 108, 102, 107, 106, + 102, 100, 102, 102, 101, 102, 104, 105, 102, 98, 98, 102, 109, 108, 115, 111, + 110, 116, 113, 107, 112, 112, 116, 118, 117, 117, 121, 119, 115, 120, 117, 114, + 113, 114, 116, 115, 114, 120, 114, 113, 117, 118, 114, 113, 116, 124, 126, 130, + 133, 136, 136, 136, 134, 144, 151, 154, 153, 158, 170, 179, 179, 181, 184, 188, + 190, 189, 187, 186, 185, 185, 186, 187, 188, 188, 187, 183, 180, 187, 186, 184, + 182, 182, 184, 186, 188, 183, 183, 183, 185, 185, 181, 173, 168, 162, 160, 157, + 154, 153, 153, 155, 156, 160, 160, 162, 163, 164, 164, 165, 165, 173, 172, 171, + 171, 171, 173, 174, 175, 174, 174, 175, 176, 176, 176, 176, 177, 180, 179, 177, + 177, 179, 180, 180, 179, 177, 174, 171, 172, 175, 177, 175, 173, 169, 180, 191, + 196, 199, 203, 204, 203, 200, 198, 203, 202, 192, 195, 205, 206, 199, 197, 191, + 186, 183, 181, 179, 179, 163, 168, 173, 158, 125, 149, 157, 176, 166, 162, 162, + 169, 171, 167, 161, 158, 157, 142, 124, 79, 109, 130, 129, 139, 127, 131, 134, + 135, 134, 133, 132, 132, 126, 125, 124, 125, 125, 124, 121, 119, 115, 110, 99, + 104, 109, 109, 105, 103, 105, 105, 103, 104, 106, 106, 105, 106, 109, 113, 116, + 115, 120, 115, 112, 117, 115, 110, 116, 117, 120, 121, 118, 118, 121, 121, 117, + 122, 118, 115, 114, 116, 118, 118, 118, 116, 114, 115, 118, 119, 118, 119, 121, + 128, 134, 139, 139, 140, 143, 144, 142, 150, 155, 158, 158, 163, 173, 178, 178, + 182, 185, 188, 189, 188, 186, 186, 186, 187, 184, 183, 186, 190, 190, 186, 181, + 186, 184, 183, 182, 181, 180, 180, 180, 179, 178, 180, 185, 190, 190, 184, 177, + 171, 172, 173, 172, 169, 164, 159, 155, 156, 156, 156, 157, 158, 160, 162, 163, + 169, 169, 167, 166, 166, 166, 167, 168, 167, 167, 166, 166, 166, 168, 169, 169, + 169, 168, 169, 172, 176, 178, 179, 178, 176, 174, 172, 172, 173, 175, 176, 176, + 179, 192, 202, 203, 201, 203, 205, 206, 208, 199, 198, 199, 196, 200, 204, 197, + 199, 195, 188, 184, 181, 179, 177, 176, 169, 169, 169, 155, 125, 150, 154, 168, + 169, 162, 161, 166, 170, 167, 161, 158, 147, 136, 131, 84, 110, 129, 118, 129, + 137, 137, 136, 136, 135, 134, 132, 131, 136, 133, 131, 133, 136, 136, 129, 123, + 114, 133, 120, 100, 106, 107, 104, 103, 107, 108, 106, 107, 106, 105, 108, 112, + 116, 117, 117, 110, 116, 113, 112, 119, 117, 112, 118, 117, 120, 120, 117, 118, + 122, 122, 120, 122, 118, 115, 114, 117, 120, 120, 121, 114, 116, 116, 114, 116, + 120, 123, 124, 132, 141, 149, 148, 148, 153, 158, 159, 157, 163, 167, 167, 167, + 171, 173, 174, 179, 182, 184, 185, 185, 184, 185, 187, 187, 185, 185, 185, 186, + 186, 185, 183, 182, 181, 181, 180, 179, 178, 176, 174, 179, 179, 180, 182, 184, + 185, 184, 184, 188, 187, 185, 183, 179, 175, 171, 169, 164, 162, 159, 157, 157, + 158, 160, 161, 163, 162, 161, 160, 161, 162, 164, 166, 164, 162, 160, 159, 160, + 162, 163, 166, 167, 167, 168, 171, 175, 176, 175, 174, 175, 175, 175, 174, 175, + 178, 182, 186, 191, 199, 205, 204, 202, 203, 204, 203, 212, 197, 191, 195, 198, + 203, 201, 187, 195, 194, 190, 183, 176, 172, 174, 177, 175, 166, 158, 148, 128, + 157, 155, 160, 173, 165, 161, 166, 170, 168, 164, 161, 149, 135, 131, 81, 110, + 134, 118, 129, 124, 123, 123, 128, 135, 140, 142, 142, 143, 140, 137, 136, 136, + 135, 131, 127, 118, 137, 127, 95, 102, 105, 103, 104, 106, 109, 108, 111, 107, + 104, 106, 111, 115, 113, 110, 113, 120, 118, 117, 122, 118, 110, 115, 115, 118, + 117, 114, 116, 121, 123, 121, 120, 117, 113, 113, 115, 118, 119, 121, 119, 123, + 121, 114, 113, 123, 127, 126, 126, 141, 153, 153, 152, 156, 160, 161, 162, 173, + 180, 179, 175, 172, 173, 174, 180, 182, 184, 186, 185, 187, 188, 192, 184, 186, + 186, 184, 180, 180, 180, 182, 182, 182, 183, 184, 184, 181, 178, 177, 184, 186, + 186, 183, 179, 180, 185, 189, 200, 194, 184, 177, 173, 175, 178, 182, 184, 181, + 174, 169, 165, 165, 164, 166, 160, 161, 161, 163, 165, 168, 172, 173, 170, 168, + 165, 162, 163, 167, 169, 172, 178, 178, 179, 180, 181, 180, 176, 173, 177, 178, + 179, 178, 178, 182, 190, 197, 198, 201, 202, 200, 200, 203, 201, 196, 198, 200, + 209, 206, 191, 190, 200, 202, 197, 199, 199, 190, 177, 172, 178, 186, 166, 171, + 173, 158, 126, 152, 161, 181, 176, 167, 162, 166, 170, 170, 166, 165, 163, 139, + 128, 73, 107, 139, 125, 138, 137, 131, 124, 123, 125, 127, 125, 121, 129, 129, + 127, 128, 128, 131, 132, 133, 136, 136, 127, 104, 105, 105, 103, 102, 102, 106, + 109, 113, 111, 109, 108, 108, 110, 112, 114, 114, 114, 114, 113, 113, 114, 115, + 115, 123, 118, 113, 113, 117, 119, 117, 114, 113, 115, 115, 115, 118, 121, 115, + 109, 113, 119, 122, 105, 107, 120, 115, 130, 139, 144, 151, 155, 156, 159, 163, + 166, 175, 175, 177, 180, 180, 178, 173, 169, 171, 175, 178, 183, 183, 185, 185, + 188, 180, 183, 186, 192, 195, 195, 188, 183, 186, 183, 180, 177, 176, 176, 178, + 180, 174, 179, 185, 186, 183, 180, 178, 178, 182, 189, 190, 182, 171, 172, 179, + 185, 186, 190, 192, 192, 186, 181, 175, 173, 176, 176, 173, 171, 169, 167, 165, + 165, 164, 165, 167, 171, 177, 184, 188, 191, 196, 191, 188, 188, 185, 177, 171, + 170, 177, 181, 186, 188, 189, 190, 192, 195, 197, 203, 207, 205, 203, 203, 201, + 197, 192, 199, 199, 194, 196, 206, 204, 195, 200, 198, 191, 183, 182, 185, 186, + 183, 172, 170, 168, 155, 139, 145, 157, 155, 172, 170, 168, 167, 167, 168, 168, + 169, 157, 144, 137, 89, 100, 119, 131, 124, 130, 128, 125, 121, 119, 119, 119, + 119, 120, 122, 124, 128, 130, 132, 132, 132, 125, 127, 130, 112, 115, 113, 111, + 108, 108, 108, 110, 108, 107, 105, 105, 107, 109, 112, 114, 111, 112, 110, 111, + 111, 113, 113, 114, 109, 108, 105, 107, 108, 110, 105, 102, 113, 112, 106, 100, + 101, 108, 112, 111, 113, 107, 111, 109, 117, 119, 108, 127, 141, 147, 154, 157, + 158, 159, 164, 167, 166, 167, 170, 174, 176, 173, 168, 162, 166, 168, 173, 177, + 181, 182, 181, 180, 180, 181, 183, 187, 191, 191, 188, 184, 190, 188, 185, 183, + 181, 181, 182, 182, 181, 180, 178, 174, 172, 174, 179, 185, 182, 187, 188, 183, + 179, 182, 186, 187, 191, 190, 188, 184, 180, 179, 181, 183, 183, 182, 180, 179, + 181, 183, 186, 188, 189, 188, 188, 188, 190, 192, 194, 196, 198, 193, 192, 194, + 194, 190, 188, 188, 189, 191, 193, 193, 192, 193, 197, 200, 201, 206, 207, 203, + 201, 202, 202, 200, 202, 207, 205, 198, 198, 204, 203, 194, 196, 196, 191, 184, + 182, 184, 182, 177, 170, 166, 162, 147, 132, 139, 154, 156, 170, 168, 167, 167, + 168, 169, 169, 168, 159, 150, 140, 99, 103, 127, 132, 128, 128, 127, 127, 125, + 123, 121, 118, 117, 120, 120, 119, 119, 120, 122, 124, 125, 126, 127, 129, 108, + 112, 112, 111, 108, 107, 105, 107, 110, 110, 108, 108, 109, 110, 112, 114, 108, + 108, 108, 109, 110, 111, 113, 114, 114, 114, 115, 115, 113, 110, 105, 102, 105, + 105, 100, 92, 89, 96, 103, 105, 101, 96, 107, 108, 106, 98, 95, 129, 144, + 150, 157, 160, 160, 161, 165, 167, 165, 167, 172, 177, 179, 177, 173, 167, 158, + 158, 163, 172, 181, 186, 186, 184, 182, 182, 182, 184, 188, 190, 190, 189, 188, + 187, 186, 184, 182, 181, 179, 179, 183, 180, 176, 171, 169, 171, 177, 183, 179, + 182, 183, 183, 184, 189, 189, 185, 190, 189, 186, 182, 180, 180, 184, 187, 190, + 188, 187, 187, 189, 194, 200, 204, 202, 200, 198, 196, 195, 195, 195, 195, 196, + 191, 189, 193, 195, 194, 195, 197, 200, 200, 199, 197, 195, 196, 199, 202, 204, + 207, 206, 201, 198, 201, 202, 201, 205, 208, 205, 197, 198, 203, 202, 196, 193, + 194, 191, 186, 184, 184, 180, 174, 174, 167, 161, 146, 131, 139, 158, 163, 166, + 165, 165, 167, 169, 170, 169, 168, 157, 154, 140, 109, 100, 132, 129, 129, 132, + 133, 134, 134, 132, 128, 124, 122, 126, 124, 121, 119, 118, 120, 122, 125, 126, + 125, 125, 100, 104, 107, 109, 108, 107, 106, 107, 112, 112, 110, 108, 107, 108, + 107, 108, 107, 108, 108, 109, 111, 113, 115, 116, 111, 113, 113, 111, 105, 100, + 96, 94, 99, 106, 108, 105, 100, 102, 103, 103, 106, 101, 106, 102, 102, 101, + 98, 128, 145, 151, 157, 161, 161, 161, 164, 166, 170, 171, 174, 179, 183, 183, + 181, 177, 165, 162, 162, 169, 179, 187, 188, 186, 184, 183, 182, 183, 185, 189, + 192, 193, 187, 187, 187, 186, 184, 182, 179, 177, 180, 180, 180, 178, 176, 173, + 172, 171, 172, 177, 180, 180, 182, 186, 186, 182, 185, 187, 189, 189, 187, 184, + 184, 184, 191, 191, 190, 190, 191, 194, 199, 201, 199, 198, 196, 195, 195, 196, + 197, 197, 197, 191, 188, 190, 191, 191, 193, 196, 201, 201, 200, 199, 198, 198, + 198, 199, 202, 205, 205, 199, 197, 199, 200, 198, 198, 199, 196, 192, 194, 201, + 202, 199, 192, 192, 190, 185, 184, 186, 183, 177, 175, 167, 161, 149, 135, 141, + 159, 166, 163, 163, 164, 167, 170, 171, 169, 167, 160, 161, 142, 116, 97, 135, + 128, 134, 133, 134, 135, 135, 134, 131, 128, 125, 129, 127, 125, 123, 122, 122, + 124, 125, 124, 122, 120, 104, 108, 111, 114, 113, 113, 111, 112, 109, 109, 108, + 106, 105, 106, 106, 105, 110, 111, 111, 113, 115, 117, 119, 120, 117, 118, 118, + 115, 111, 107, 106, 106, 110, 118, 123, 121, 117, 116, 115, 112, 108, 107, 108, + 101, 113, 126, 115, 125, 143, 149, 156, 160, 160, 160, 161, 163, 170, 170, 172, + 175, 179, 181, 181, 180, 182, 174, 168, 168, 174, 179, 180, 179, 182, 181, 181, + 180, 182, 185, 189, 192, 191, 191, 192, 191, 190, 187, 184, 182, 180, 180, 181, + 180, 178, 173, 167, 163, 162, 170, 177, 177, 178, 182, 185, 186, 188, 190, 191, + 191, 188, 186, 185, 185, 189, 190, 191, 193, 194, 194, 195, 195, 195, 195, 195, + 195, 196, 198, 200, 201, 201, 194, 190, 192, 193, 193, 195, 198, 197, 198, 200, + 202, 202, 201, 199, 197, 196, 201, 202, 198, 196, 197, 196, 194, 194, 193, 191, + 189, 192, 198, 200, 198, 189, 189, 185, 180, 181, 184, 184, 180, 170, 162, 160, + 151, 137, 139, 155, 161, 162, 163, 164, 167, 170, 171, 170, 168, 166, 168, 147, + 118, 96, 133, 129, 137, 130, 130, 130, 130, 129, 128, 127, 127, 125, 126, 126, + 126, 126, 125, 124, 124, 125, 123, 120, 109, 112, 115, 115, 114, 112, 111, 111, + 110, 111, 111, 113, 114, 115, 115, 116, 114, 115, 115, 116, 118, 120, 122, 124, + 126, 126, 126, 126, 127, 127, 127, 127, 120, 124, 124, 119, 116, 119, 120, 118, + 71, 95, 115, 104, 102, 111, 109, 127, 140, 147, 155, 159, 160, 159, 160, 162, + 171, 171, 171, 175, 178, 180, 179, 178, 176, 171, 166, 165, 170, 176, 181, 182, + 177, 178, 179, 179, 178, 180, 183, 186, 189, 189, 190, 190, 189, 187, 184, 183, + 185, 181, 177, 174, 173, 171, 169, 168, 157, 165, 171, 171, 172, 179, 187, 191, + 193, 192, 189, 186, 183, 184, 188, 191, 187, 189, 192, 195, 196, 196, 195, 195, + 194, 193, 193, 193, 193, 195, 197, 198, 197, 191, 188, 190, 193, 193, 196, 199, + 197, 198, 201, 204, 206, 204, 200, 196, 192, 197, 199, 196, 195, 196, 195, 193, + 197, 195, 192, 191, 192, 194, 194, 193, 186, 185, 182, 177, 177, 181, 182, 178, + 171, 163, 162, 157, 142, 141, 154, 160, 164, 164, 164, 167, 170, 171, 171, 169, + 162, 163, 150, 112, 93, 121, 121, 128, 129, 129, 129, 130, 131, 131, 131, 132, + 128, 129, 130, 131, 131, 130, 129, 129, 128, 127, 125, 109, 111, 113, 113, 111, + 110, 110, 111, 114, 115, 116, 119, 121, 122, 123, 123, 119, 119, 119, 120, 122, + 123, 125, 126, 119, 118, 119, 122, 126, 126, 122, 118, 122, 122, 118, 113, 113, + 118, 117, 115, 68, 85, 106, 98, 91, 92, 98, 129, 138, 145, 154, 159, 160, + 160, 161, 163, 169, 172, 175, 179, 181, 180, 177, 173, 168, 167, 167, 168, 171, + 176, 181, 184, 176, 179, 182, 182, 180, 179, 180, 182, 186, 186, 186, 186, 185, + 185, 184, 183, 188, 183, 177, 175, 176, 178, 178, 177, 161, 163, 162, 160, 164, + 173, 179, 180, 187, 187, 186, 185, 183, 184, 187, 190, 185, 187, 188, 190, 192, + 192, 192, 192, 192, 191, 190, 189, 190, 191, 192, 193, 191, 186, 184, 187, 190, + 190, 191, 195, 199, 199, 199, 202, 204, 203, 199, 195, 193, 197, 197, 193, 192, + 195, 197, 197, 198, 195, 193, 192, 192, 190, 188, 187, 187, 188, 185, 181, 181, + 182, 180, 174, 175, 165, 164, 159, 144, 141, 154, 161, 168, 167, 165, 166, 169, + 171, 171, 171, 157, 157, 155, 108, 97, 112, 115, 116, 121, 124, 128, 131, 133, + 133, 132, 131, 133, 133, 132, 132, 131, 131, 131, 132, 129, 129, 129, 108, 110, + 113, 113, 113, 114, 115, 118, 113, 113, 115, 116, 117, 118, 116, 117, 121, 122, + 121, 123, 123, 126, 126, 128, 126, 125, 125, 130, 132, 131, 122, 114, 123, 123, + 121, 119, 121, 123, 118, 112, 118, 91, 81, 86, 107, 115, 105, 122, 139, 145, + 154, 160, 161, 161, 163, 164, 165, 168, 175, 180, 182, 178, 171, 164, 176, 177, + 177, 175, 173, 171, 172, 173, 178, 182, 186, 187, 184, 182, 182, 182, 188, 188, + 188, 188, 188, 188, 188, 188, 186, 184, 182, 183, 186, 187, 185, 183, 170, 165, + 156, 151, 156, 166, 168, 165, 175, 180, 186, 190, 189, 187, 185, 184, 184, 184, + 183, 183, 183, 184, 185, 186, 193, 193, 192, 191, 192, 193, 195, 196, 194, 189, + 186, 189, 190, 189, 189, 192, 201, 199, 197, 197, 199, 199, 196, 193, 195, 197, + 196, 191, 190, 196, 200, 201, 195, 192, 190, 191, 191, 188, 185, 184, 191, 193, + 192, 188, 187, 186, 180, 172, 173, 161, 159, 154, 138, 135, 149, 157, 170, 169, + 166, 166, 169, 171, 172, 172, 160, 161, 167, 114, 110, 114, 119, 115, 109, 114, + 120, 125, 128, 127, 124, 122, 133, 131, 128, 125, 123, 124, 126, 127, 125, 128, + 130, 112, 114, 115, 116, 115, 113, 111, 110, 122, 117, 105, 120, 111, 118, 113, + 125, 120, 113, 103, 106, 110, 116, 112, 110, 119, 129, 130, 125, 117, 121, 122, + 122, 124, 121, 121, 121, 120, 118, 117, 117, 124, 126, 119, 112, 102, 90, 95, + 116, 137, 145, 149, 154, 163, 159, 155, 162, 165, 170, 176, 179, 178, 175, 171, + 170, 175, 176, 176, 175, 173, 173, 175, 177, 176, 181, 187, 192, 193, 189, 184, + 180, 181, 182, 184, 188, 190, 188, 183, 179, 179, 186, 191, 188, 179, 173, 173, + 176, 179, 173, 159, 155, 161, 158, 155, 164, 169, 175, 183, 189, 186, 178, 173, + 175, 177, 179, 185, 191, 188, 179, 178, 183, 193, 188, 184, 184, 189, 193, 194, + 194, 195, 190, 186, 186, 190, 195, 197, 197, 201, 202, 201, 199, 196, 194, 195, + 197, 197, 197, 196, 195, 195, 194, 193, 193, 195, 194, 194, 195, 194, 191, 185, + 181, 186, 182, 180, 183, 184, 180, 177, 178, 172, 169, 164, 156, 144, 137, 142, + 152, 164, 164, 163, 165, 168, 170, 171, 172, 155, 155, 162, 93, 127, 115, 111, + 123, 115, 116, 117, 121, 123, 123, 121, 118, 121, 118, 115, 114, 115, 119, 123, + 127, 122, 125, 127, 112, 113, 113, 113, 111, 109, 108, 107, 106, 112, 105, 112, + 101, 111, 102, 103, 123, 121, 113, 104, 97, 96, 101, 106, 98, 103, 105, 104, + 107, 113, 114, 110, 104, 107, 118, 129, 129, 123, 118, 121, 103, 119, 125, 126, + 129, 128, 124, 128, 134, 144, 148, 152, 160, 157, 154, 161, 165, 169, 175, 177, + 177, 174, 172, 172, 174, 176, 177, 177, 176, 176, 177, 179, 173, 176, 181, 185, + 188, 188, 187, 186, 187, 183, 178, 177, 179, 182, 185, 186, 183, 177, 174, 178, + 186, 187, 180, 172, 168, 176, 176, 169, 160, 146, 141, 149, 160, 173, 176, 168, + 175, 191, 189, 173, 179, 182, 187, 189, 183, 179, 186, 198, 185, 185, 186, 187, + 188, 190, 193, 195, 202, 197, 190, 188, 189, 192, 193, 194, 195, 196, 197, 196, + 195, 195, 197, 198, 197, 197, 196, 195, 195, 194, 193, 193, 196, 195, 194, 192, + 190, 185, 178, 173, 178, 174, 174, 178, 179, 176, 173, 174, 176, 171, 164, 153, + 143, 138, 146, 158, 163, 165, 166, 169, 171, 171, 169, 168, 158, 159, 152, 106, + 131, 118, 112, 121, 118, 117, 116, 118, 120, 120, 119, 117, 120, 121, 122, 122, + 120, 118, 116, 115, 119, 124, 126, 113, 113, 113, 111, 111, 111, 112, 112, 104, + 128, 128, 121, 94, 104, 102, 109, 95, 96, 96, 96, 98, 102, 109, 114, 119, + 118, 114, 112, 114, 115, 109, 100, 111, 105, 110, 118, 117, 107, 109, 120, 120, + 136, 131, 119, 122, 126, 121, 116, 134, 144, 150, 152, 158, 156, 154, 161, 163, + 167, 172, 175, 175, 174, 174, 174, 174, 176, 179, 180, 179, 178, 178, 179, 175, + 176, 177, 179, 181, 184, 186, 188, 189, 184, 177, 173, 174, 178, 181, 183, 175, + 179, 183, 183, 181, 180, 182, 185, 179, 176, 171, 170, 170, 163, 150, 138, 144, + 146, 157, 171, 176, 174, 183, 197, 187, 179, 174, 176, 179, 178, 177, 177, 179, + 184, 189, 190, 188, 189, 195, 199, 204, 199, 192, 188, 188, 190, 193, 194, 194, + 196, 197, 197, 196, 195, 197, 199, 197, 197, 196, 195, 195, 194, 193, 193, 199, + 198, 196, 194, 191, 186, 180, 176, 177, 175, 176, 181, 183, 180, 177, 177, 183, + 176, 165, 152, 140, 137, 147, 161, 162, 166, 171, 174, 174, 171, 167, 166, 161, + 163, 135, 123, 136, 123, 117, 120, 118, 116, 113, 113, 116, 118, 119, 120, 117, + 119, 121, 123, 124, 124, 123, 122, 120, 122, 125, 110, 109, 109, 108, 109, 111, + 114, 115, 109, 118, 109, 109, 90, 100, 95, 101, 102, 95, 92, 100, 112, 115, + 104, 92, 100, 101, 103, 109, 116, 121, 120, 117, 127, 113, 111, 120, 120, 108, + 108, 116, 114, 123, 117, 110, 113, 113, 108, 110, 132, 146, 151, 151, 157, 157, + 156, 163, 163, 166, 170, 172, 173, 174, 176, 177, 175, 178, 181, 182, 180, 178, + 177, 177, 182, 181, 180, 179, 179, 180, 180, 181, 185, 184, 182, 181, 180, 178, + 174, 172, 172, 180, 186, 182, 172, 168, 174, 182, 181, 170, 163, 162, 165, 171, + 160, 139, 131, 129, 139, 158, 167, 164, 170, 185, 189, 186, 184, 186, 188, 186, + 183, 179, 181, 184, 188, 189, 191, 194, 200, 204, 200, 196, 190, 187, 187, 191, + 196, 199, 199, 201, 202, 201, 198, 196, 197, 197, 196, 196, 196, 195, 195, 194, + 194, 194, 194, 193, 193, 193, 193, 191, 187, 184, 182, 179, 180, 185, 187, 183, + 180, 180, 186, 179, 167, 153, 140, 135, 144, 158, 164, 169, 173, 175, 173, 170, + 167, 166, 162, 164, 120, 137, 138, 130, 126, 126, 118, 115, 112, 111, 114, 118, + 121, 123, 120, 119, 117, 116, 117, 121, 124, 127, 121, 123, 126, 100, 100, 97, + 96, 96, 97, 100, 102, 115, 97, 80, 107, 111, 115, 95, 92, 110, 104, 102, + 110, 120, 122, 111, 100, 98, 100, 105, 111, 116, 119, 121, 123, 121, 114, 121, + 138, 143, 128, 112, 106, 109, 114, 117, 123, 118, 93, 80, 90, 127, 144, 149, + 147, 153, 156, 156, 163, 163, 166, 169, 171, 173, 174, 177, 179, 177, 179, 182, + 182, 179, 176, 174, 174, 185, 185, 184, 183, 182, 179, 177, 176, 181, 181, 182, + 184, 184, 181, 176, 172, 180, 174, 169, 169, 174, 174, 169, 163, 165, 168, 176, + 164, 142, 140, 139, 123, 125, 142, 140, 126, 143, 180, 185, 164, 171, 180, 188, + 186, 180, 179, 185, 192, 184, 182, 182, 185, 192, 198, 201, 202, 197, 194, 190, + 187, 187, 190, 195, 199, 199, 201, 202, 202, 199, 198, 197, 198, 196, 196, 195, + 195, 195, 195, 194, 194, 188, 187, 187, 188, 189, 188, 186, 183, 181, 178, 178, + 182, 182, 178, 174, 174, 180, 174, 165, 153, 141, 135, 143, 155, 166, 170, 173, + 174, 170, 168, 168, 169, 161, 160, 117, 145, 139, 139, 136, 137, 126, 122, 117, + 114, 115, 117, 119, 119, 127, 125, 121, 118, 115, 115, 116, 117, 121, 123, 124, + 94, 92, 89, 86, 84, 84, 85, 86, 95, 91, 94, 129, 123, 115, 97, 109, + 100, 105, 108, 108, 107, 110, 117, 124, 120, 118, 118, 120, 119, 115, 116, 120, + 117, 114, 117, 126, 128, 118, 104, 94, 121, 116, 114, 118, 110, 81, 71, 89, + 120, 139, 145, 142, 148, 153, 155, 162, 164, 167, 171, 173, 174, 175, 177, 179, + 178, 180, 182, 181, 178, 176, 175, 175, 181, 182, 184, 185, 184, 182, 180, 178, + 181, 179, 178, 178, 181, 183, 184, 184, 177, 178, 178, 179, 178, 178, 177, 176, + 176, 174, 182, 170, 144, 134, 114, 71, 81, 101, 106, 92, 92, 121, 152, 166, + 180, 177, 171, 170, 178, 184, 182, 175, 183, 180, 179, 184, 193, 199, 201, 200, + 201, 199, 196, 191, 188, 188, 191, 194, 192, 195, 198, 199, 199, 198, 199, 200, + 195, 195, 195, 195, 195, 195, 195, 195, 193, 191, 189, 189, 189, 187, 184, 182, + 183, 178, 177, 179, 180, 176, 173, 174, 172, 168, 162, 153, 142, 137, 144, 155, + 165, 170, 173, 173, 169, 166, 168, 170, 157, 152, 129, 149, 140, 147, 142, 144, + 137, 132, 126, 122, 119, 117, 115, 113, 123, 126, 129, 131, 131, 128, 125, 122, + 119, 120, 122, 96, 96, 94, 93, 92, 92, 93, 94, 81, 95, 106, 129, 109, + 99, 90, 107, 111, 115, 114, 108, 97, 97, 104, 114, 100, 96, 95, 104, 112, + 116, 119, 123, 119, 121, 118, 112, 108, 109, 106, 102, 110, 106, 100, 104, 110, + 102, 104, 123, 116, 138, 145, 141, 146, 153, 158, 165, 166, 169, 173, 175, 176, + 176, 177, 178, 178, 180, 181, 180, 179, 178, 179, 181, 180, 181, 182, 183, 184, + 183, 182, 181, 183, 180, 177, 176, 179, 182, 184, 185, 175, 186, 196, 194, 184, + 179, 185, 193, 191, 175, 177, 174, 159, 152, 112, 39, 48, 41, 49, 58, 46, + 39, 74, 125, 173, 174, 175, 179, 188, 192, 183, 170, 179, 182, 187, 193, 198, + 201, 201, 201, 205, 205, 202, 197, 191, 188, 189, 191, 191, 194, 198, 200, 200, + 199, 199, 200, 195, 195, 195, 195, 195, 195, 195, 195, 198, 196, 193, 191, 190, + 188, 184, 182, 185, 180, 177, 180, 181, 179, 178, 180, 174, 170, 163, 153, 141, + 135, 142, 154, 161, 167, 173, 174, 170, 166, 167, 168, 152, 144, 149, 153, 143, + 153, 143, 146, 140, 136, 132, 128, 125, 121, 116, 112, 114, 118, 125, 131, 135, + 136, 135, 134, 122, 123, 124, 102, 102, 103, 105, 107, 110, 111, 113, 121, 117, + 104, 118, 116, 125, 105, 97, 99, 100, 102, 106, 112, 117, 120, 120, 110, 97, + 91, 100, 111, 114, 113, 114, 105, 124, 135, 130, 125, 129, 128, 123, 114, 119, + 115, 116, 125, 122, 114, 115, 117, 140, 148, 143, 149, 157, 162, 169, 166, 170, + 174, 178, 177, 177, 177, 178, 177, 179, 180, 180, 180, 181, 184, 187, 182, 182, + 181, 181, 181, 181, 181, 181, 184, 183, 181, 181, 180, 181, 178, 177, 185, 184, + 185, 188, 192, 191, 186, 181, 178, 171, 181, 177, 157, 154, 120, 52, 90, 65, + 50, 54, 60, 56, 57, 65, 100, 143, 183, 186, 168, 159, 168, 181, 177, 186, + 197, 204, 205, 204, 204, 205, 206, 207, 205, 201, 194, 190, 190, 192, 197, 200, + 203, 203, 202, 199, 198, 198, 195, 196, 196, 196, 196, 196, 195, 195, 194, 192, + 189, 187, 186, 185, 182, 179, 183, 178, 175, 177, 179, 178, 179, 183, 183, 176, + 166, 153, 139, 131, 138, 149, 157, 166, 175, 177, 173, 168, 165, 165, 148, 139, + 164, 156, 145, 157, 142, 145, 136, 134, 133, 132, 130, 127, 121, 118, 115, 114, + 116, 117, 120, 123, 127, 129, 127, 128, 128, 118, 117, 115, 114, 113, 113, 111, + 111, 116, 114, 111, 109, 108, 111, 116, 121, 120, 122, 111, 107, 115, 117, 118, + 126, 118, 112, 105, 102, 101, 103, 105, 110, 128, 123, 120, 116, 111, 110, 118, + 128, 120, 112, 112, 120, 121, 113, 109, 112, 118, 141, 143, 135, 141, 155, 158, + 160, 163, 170, 176, 177, 173, 171, 172, 174, 175, 180, 183, 185, 184, 183, 183, + 184, 182, 183, 184, 184, 185, 185, 184, 184, 182, 181, 179, 178, 177, 179, 179, + 180, 177, 183, 188, 190, 185, 181, 175, 175, 183, 166, 167, 161, 160, 149, 106, + 79, 127, 112, 89, 68, 54, 51, 53, 55, 48, 80, 84, 139, 156, 177, 189, + 183, 189, 196, 200, 199, 199, 203, 203, 201, 210, 209, 208, 203, 194, 188, 193, + 202, 193, 194, 195, 197, 198, 199, 200, 201, 195, 196, 197, 197, 195, 195, 196, + 198, 200, 192, 185, 187, 189, 186, 183, 182, 182, 183, 179, 180, 184, 178, 172, + 179, 179, 166, 174, 153, 148, 132, 154, 153, 158, 164, 171, 167, 162, 173, 176, + 160, 136, 155, 159, 144, 139, 149, 152, 144, 146, 147, 147, 139, 130, 124, 123, + 126, 124, 120, 118, 121, 119, 117, 123, 133, 127, 151, 132, 112, 113, 112, 112, + 111, 110, 109, 108, 103, 106, 109, 110, 111, 112, 113, 115, 110, 119, 115, 112, + 119, 119, 117, 124, 112, 118, 124, 127, 125, 120, 119, 119, 115, 113, 114, 121, + 122, 117, 113, 112, 112, 110, 114, 122, 122, 116, 120, 131, 117, 140, 144, 136, + 143, 155, 158, 160, 166, 171, 177, 177, 173, 171, 172, 173, 174, 178, 182, 184, + 183, 182, 183, 184, 185, 186, 186, 186, 185, 184, 183, 182, 183, 183, 181, 180, + 178, 179, 180, 180, 177, 180, 183, 183, 180, 178, 177, 178, 186, 166, 166, 157, + 158, 152, 133, 78, 112, 117, 122, 124, 117, 101, 80, 63, 46, 47, 53, 140, + 182, 195, 196, 198, 195, 201, 205, 203, 204, 207, 209, 207, 205, 206, 208, 207, + 200, 192, 193, 200, 193, 193, 194, 194, 194, 194, 194, 194, 194, 196, 197, 196, + 194, 193, 194, 196, 199, 192, 187, 189, 191, 188, 184, 183, 173, 179, 178, 177, + 178, 170, 168, 178, 178, 165, 170, 147, 138, 127, 150, 154, 182, 181, 181, 173, + 160, 162, 162, 148, 160, 153, 156, 164, 158, 145, 145, 156, 151, 123, 103, 105, + 113, 114, 116, 122, 132, 123, 115, 114, 115, 116, 123, 131, 132, 151, 141, 110, + 111, 112, 112, 112, 111, 108, 107, 113, 113, 111, 110, 109, 108, 107, 108, 111, + 107, 95, 99, 118, 124, 114, 111, 109, 114, 117, 114, 109, 107, 111, 117, 127, + 117, 110, 115, 121, 123, 120, 118, 124, 126, 130, 128, 113, 96, 94, 104, 118, + 139, 144, 137, 144, 153, 155, 159, 166, 171, 175, 177, 175, 172, 172, 174, 173, + 176, 180, 182, 182, 182, 183, 184, 188, 188, 188, 187, 186, 184, 183, 182, 184, + 184, 181, 179, 178, 178, 179, 179, 178, 178, 178, 177, 176, 176, 179, 181, 177, + 165, 171, 162, 163, 153, 130, 59, 124, 117, 110, 107, 110, 114, 114, 111, 125, + 97, 82, 144, 173, 175, 169, 174, 191, 198, 201, 199, 200, 204, 205, 204, 199, + 202, 209, 212, 206, 196, 194, 197, 198, 198, 198, 197, 196, 195, 193, 192, 193, + 194, 195, 194, 192, 191, 192, 194, 197, 191, 189, 192, 193, 189, 184, 183, 178, + 184, 184, 181, 178, 168, 167, 179, 178, 170, 172, 148, 134, 130, 156, 164, 159, + 158, 166, 171, 163, 158, 152, 142, 151, 158, 160, 156, 156, 160, 158, 152, 139, + 107, 90, 104, 116, 110, 107, 115, 126, 123, 123, 127, 128, 125, 124, 126, 130, + 138, 135, 110, 112, 113, 114, 113, 112, 110, 109, 119, 114, 106, 101, 100, 102, + 105, 108, 96, 109, 109, 103, 101, 100, 108, 128, 112, 115, 116, 113, 111, 114, + 120, 123, 118, 105, 96, 98, 104, 105, 105, 106, 106, 111, 119, 122, 112, 100, + 99, 105, 117, 137, 141, 137, 144, 152, 154, 159, 165, 169, 174, 176, 176, 175, + 177, 178, 174, 177, 180, 182, 182, 183, 185, 186, 188, 189, 189, 188, 187, 186, + 185, 184, 184, 183, 181, 179, 177, 177, 178, 178, 180, 179, 177, 175, 175, 175, + 177, 180, 173, 169, 173, 162, 163, 160, 104, 81, 126, 120, 114, 115, 120, 124, + 123, 120, 113, 105, 107, 141, 167, 187, 198, 210, 188, 193, 196, 194, 195, 199, + 201, 200, 198, 202, 208, 212, 207, 197, 193, 195, 199, 199, 200, 199, 198, 195, + 193, 192, 192, 194, 195, 194, 191, 190, 191, 192, 194, 190, 190, 194, 195, 189, + 184, 183, 188, 190, 186, 182, 180, 171, 166, 176, 176, 173, 173, 152, 133, 136, + 161, 172, 176, 167, 169, 172, 160, 151, 148, 142, 144, 156, 155, 144, 146, 158, + 153, 137, 126, 118, 113, 119, 115, 106, 108, 118, 119, 122, 124, 127, 125, 122, + 123, 125, 126, 122, 125, 112, 114, 114, 115, 115, 114, 113, 112, 105, 102, 96, + 96, 100, 106, 111, 114, 115, 116, 107, 108, 118, 120, 114, 117, 103, 111, 118, + 125, 132, 136, 130, 121, 128, 127, 131, 135, 133, 126, 120, 119, 111, 110, 112, + 115, 115, 113, 115, 119, 115, 133, 139, 137, 145, 151, 153, 160, 162, 165, 170, + 174, 177, 179, 181, 183, 177, 180, 182, 184, 183, 184, 186, 188, 186, 187, 188, + 188, 188, 188, 187, 188, 187, 186, 184, 182, 181, 180, 181, 181, 183, 182, 180, + 179, 178, 176, 174, 173, 170, 172, 165, 153, 153, 163, 75, 128, 122, 121, 120, + 122, 124, 121, 113, 104, 117, 118, 139, 160, 176, 176, 177, 184, 193, 198, 199, + 197, 196, 200, 203, 201, 203, 203, 207, 208, 203, 195, 192, 194, 193, 194, 195, + 195, 195, 193, 191, 189, 193, 194, 195, 194, 191, 190, 191, 192, 191, 189, 190, + 195, 195, 189, 185, 184, 190, 188, 179, 177, 182, 175, 168, 173, 170, 171, 167, + 151, 124, 131, 151, 160, 177, 161, 153, 150, 142, 144, 155, 158, 158, 141, 139, + 152, 151, 136, 127, 137, 133, 136, 129, 114, 102, 104, 114, 120, 118, 121, 121, + 114, 106, 106, 114, 122, 121, 123, 126, 114, 115, 115, 114, 115, 115, 116, 116, + 107, 107, 107, 112, 116, 119, 116, 113, 124, 119, 110, 116, 137, 137, 118, 106, + 116, 119, 119, 119, 126, 132, 125, 114, 124, 125, 127, 127, 120, 114, 116, 121, + 139, 129, 118, 111, 109, 110, 109, 109, 112, 129, 135, 137, 145, 151, 154, 162, + 162, 165, 169, 173, 177, 181, 183, 184, 180, 182, 183, 184, 184, 184, 186, 188, + 185, 186, 187, 188, 188, 188, 188, 188, 189, 189, 187, 186, 184, 185, 186, 187, + 185, 183, 181, 180, 178, 175, 170, 166, 156, 166, 164, 154, 148, 140, 51, 121, + 120, 115, 109, 107, 109, 117, 123, 125, 123, 104, 133, 161, 190, 183, 183, 200, + 197, 201, 201, 198, 197, 200, 202, 201, 206, 203, 203, 203, 199, 193, 192, 195, + 192, 193, 195, 197, 196, 195, 193, 191, 193, 194, 195, 194, 190, 189, 190, 191, + 191, 189, 192, 196, 196, 190, 187, 188, 190, 186, 176, 177, 186, 183, 175, 180, + 171, 174, 166, 151, 119, 131, 140, 147, 145, 141, 146, 151, 147, 154, 159, 156, + 144, 136, 134, 140, 143, 138, 135, 139, 135, 140, 134, 119, 116, 122, 118, 108, + 113, 123, 130, 124, 113, 107, 105, 105, 112, 124, 127, 115, 114, 113, 112, 112, + 114, 116, 117, 120, 120, 120, 124, 127, 127, 120, 116, 103, 128, 139, 131, 117, + 106, 113, 134, 136, 137, 129, 118, 121, 129, 130, 123, 133, 129, 124, 120, 114, + 115, 125, 136, 125, 121, 116, 114, 115, 117, 116, 112, 109, 126, 134, 137, 147, + 152, 155, 164, 167, 167, 169, 173, 177, 181, 182, 183, 181, 183, 184, 183, 182, + 182, 184, 186, 187, 188, 188, 188, 188, 187, 187, 186, 187, 186, 185, 184, 185, + 186, 187, 188, 186, 182, 179, 177, 176, 173, 168, 164, 148, 157, 159, 146, 138, + 103, 75, 101, 109, 115, 120, 125, 127, 129, 131, 132, 140, 121, 150, 159, 187, + 185, 187, 203, 197, 201, 201, 196, 194, 197, 198, 197, 203, 200, 199, 200, 198, + 193, 192, 196, 194, 196, 198, 199, 199, 197, 194, 192, 192, 193, 193, 192, 188, + 187, 187, 189, 193, 192, 194, 198, 197, 192, 191, 193, 192, 189, 180, 180, 187, + 183, 177, 183, 174, 177, 163, 152, 118, 135, 142, 148, 157, 163, 172, 170, 160, + 158, 151, 132, 123, 133, 133, 124, 127, 141, 141, 132, 130, 132, 133, 133, 135, + 134, 125, 115, 119, 126, 132, 130, 125, 121, 113, 104, 109, 116, 112, 116, 114, + 111, 110, 110, 113, 116, 118, 120, 117, 115, 118, 124, 128, 128, 125, 136, 128, + 110, 108, 124, 132, 125, 125, 108, 119, 124, 121, 123, 129, 126, 118, 110, 110, + 113, 116, 114, 111, 112, 118, 115, 121, 127, 130, 129, 123, 112, 102, 108, 124, + 132, 137, 148, 152, 155, 165, 170, 170, 171, 173, 177, 180, 180, 180, 182, 183, + 183, 182, 180, 180, 182, 185, 189, 189, 189, 188, 187, 186, 184, 183, 183, 182, + 181, 181, 182, 183, 185, 187, 185, 181, 176, 173, 172, 171, 168, 165, 160, 153, + 144, 122, 120, 80, 138, 121, 116, 117, 116, 112, 106, 107, 112, 117, 113, 129, + 177, 163, 183, 194, 193, 191, 200, 204, 203, 197, 195, 197, 198, 197, 200, 197, + 197, 199, 198, 194, 193, 196, 192, 194, 196, 197, 195, 193, 189, 187, 190, 191, + 192, 190, 187, 185, 185, 187, 196, 195, 197, 200, 199, 194, 194, 197, 190, 190, + 182, 178, 180, 172, 167, 177, 172, 174, 156, 147, 116, 139, 147, 152, 151, 152, + 153, 141, 133, 144, 149, 136, 138, 123, 121, 130, 127, 115, 115, 129, 133, 128, + 126, 128, 127, 124, 131, 145, 138, 131, 116, 106, 111, 123, 129, 127, 116, 108, + 96, 116, 116, 116, 116, 116, 117, 117, 118, 121, 120, 119, 109, 95, 100, 107, + 101, 93, 110, 115, 116, 119, 114, 112, 121, 130, 125, 126, 131, 125, 107, 98, + 100, 118, 116, 111, 107, 106, 110, 116, 120, 112, 116, 120, 124, 125, 126, 129, + 132, 116, 122, 133, 142, 147, 151, 154, 157, 170, 171, 173, 174, 176, 180, 185, + 189, 184, 183, 182, 181, 181, 182, 183, 184, 183, 183, 184, 186, 186, 189, 190, + 191, 181, 178, 184, 185, 176, 178, 185, 184, 180, 183, 183, 177, 173, 171, 167, + 162, 162, 130, 143, 127, 94, 119, 135, 115, 129, 128, 124, 121, 118, 118, 117, + 118, 102, 140, 166, 174, 180, 185, 186, 192, 196, 199, 200, 199, 195, 194, 196, + 199, 209, 204, 198, 196, 196, 195, 192, 188, 189, 191, 194, 196, 196, 195, 193, + 192, 198, 194, 190, 190, 192, 194, 192, 190, 201, 200, 199, 200, 200, 197, 191, + 186, 195, 192, 186, 180, 175, 173, 172, 173, 171, 154, 163, 136, 92, 148, 148, + 159, 153, 154, 155, 151, 143, 137, 135, 135, 138, 136, 135, 134, 129, 124, 127, + 134, 127, 122, 118, 121, 126, 129, 126, 122, 130, 131, 132, 127, 113, 104, 112, + 126, 116, 111, 106, 116, 117, 116, 116, 116, 116, 115, 116, 119, 117, 118, 112, + 104, 111, 118, 111, 101, 108, 104, 105, 115, 121, 124, 137, 121, 122, 123, 121, + 120, 121, 120, 118, 105, 111, 119, 120, 115, 109, 105, 102, 112, 122, 135, 140, + 132, 117, 101, 91, 126, 121, 122, 133, 139, 140, 145, 153, 163, 166, 171, 174, + 176, 178, 179, 182, 186, 185, 183, 183, 182, 184, 184, 186, 184, 186, 185, 186, + 184, 183, 181, 179, 190, 183, 186, 189, 184, 187, 190, 185, 185, 184, 177, 170, + 168, 169, 164, 158, 146, 143, 145, 122, 111, 124, 124, 130, 130, 131, 130, 128, + 126, 124, 122, 119, 112, 145, 168, 175, 183, 187, 188, 191, 195, 197, 199, 200, + 199, 198, 198, 199, 199, 198, 197, 197, 197, 194, 191, 188, 192, 191, 190, 189, + 189, 190, 192, 193, 196, 190, 183, 181, 183, 191, 199, 203, 203, 203, 202, 198, + 193, 190, 189, 189, 191, 186, 178, 176, 176, 177, 175, 174, 188, 169, 167, 123, + 100, 144, 141, 146, 144, 143, 138, 136, 138, 148, 161, 172, 154, 149, 147, 147, + 145, 139, 137, 138, 129, 127, 125, 127, 130, 134, 139, 141, 147, 145, 143, 139, + 126, 111, 102, 102, 117, 138, 129, 119, 118, 118, 119, 117, 118, 117, 118, 122, + 117, 119, 118, 115, 121, 126, 118, 113, 110, 98, 90, 98, 100, 100, 107, 114, + 125, 129, 122, 120, 125, 119, 106, 118, 110, 98, 87, 86, 96, 113, 126, 136, + 128, 114, 104, 104, 115, 132, 144, 117, 112, 114, 127, 137, 142, 151, 161, 159, + 163, 171, 177, 178, 178, 177, 177, 184, 183, 183, 182, 182, 184, 183, 185, 180, + 182, 184, 186, 185, 184, 181, 180, 186, 177, 178, 183, 180, 185, 184, 175, 179, + 180, 176, 175, 174, 171, 158, 143, 142, 154, 134, 107, 127, 134, 115, 139, 136, + 139, 141, 143, 141, 137, 133, 130, 122, 150, 167, 174, 184, 189, 187, 189, 192, + 193, 197, 200, 203, 202, 199, 196, 189, 193, 197, 198, 197, 193, 190, 189, 192, + 192, 190, 189, 189, 190, 191, 191, 186, 189, 193, 196, 196, 198, 200, 201, 207, + 208, 206, 200, 193, 191, 194, 199, 192, 184, 177, 176, 179, 181, 176, 173, 169, + 158, 154, 103, 119, 154, 151, 147, 151, 148, 138, 129, 120, 114, 114, 114, 146, + 141, 139, 147, 151, 149, 145, 144, 137, 139, 142, 143, 143, 145, 149, 153, 129, + 125, 124, 129, 129, 122, 111, 105, 107, 139, 134, 119, 120, 121, 121, 121, 122, + 123, 123, 128, 119, 122, 123, 120, 124, 125, 117, 123, 124, 114, 108, 112, 107, + 101, 104, 89, 97, 103, 104, 110, 120, 124, 120, 122, 119, 115, 112, 108, 104, + 98, 93, 102, 110, 121, 127, 124, 115, 104, 96, 97, 107, 113, 116, 123, 135, + 144, 148, 154, 161, 168, 173, 175, 175, 175, 175, 181, 179, 179, 179, 179, 180, + 180, 181, 177, 179, 180, 180, 180, 180, 179, 179, 183, 175, 179, 184, 179, 182, + 184, 176, 190, 185, 175, 167, 166, 172, 174, 171, 153, 150, 122, 97, 129, 141, + 119, 136, 140, 142, 144, 146, 145, 141, 137, 134, 126, 148, 163, 171, 183, 188, + 185, 189, 191, 191, 195, 200, 204, 202, 196, 190, 189, 193, 197, 198, 194, 191, + 191, 192, 191, 193, 195, 196, 196, 194, 192, 190, 187, 193, 200, 203, 200, 197, + 196, 197, 208, 207, 204, 200, 197, 196, 198, 200, 194, 189, 184, 181, 180, 180, + 177, 174, 167, 169, 162, 98, 138, 149, 142, 130, 128, 131, 135, 138, 139, 139, + 139, 139, 127, 124, 124, 132, 137, 136, 136, 137, 133, 135, 139, 142, 140, 137, + 133, 131, 139, 133, 129, 130, 131, 127, 119, 113, 111, 124, 123, 116, 118, 119, + 120, 122, 123, 125, 126, 129, 119, 121, 125, 121, 123, 122, 115, 103, 113, 113, + 112, 119, 118, 116, 123, 133, 120, 106, 98, 89, 83, 85, 93, 107, 111, 120, + 133, 140, 131, 110, 90, 121, 116, 110, 107, 108, 113, 118, 122, 118, 137, 137, + 118, 113, 131, 141, 137, 149, 155, 159, 164, 166, 169, 170, 172, 176, 177, 176, + 178, 178, 177, 178, 178, 180, 179, 177, 175, 174, 173, 172, 173, 172, 169, 176, + 178, 170, 172, 177, 174, 175, 185, 190, 186, 180, 175, 169, 164, 149, 134, 129, + 118, 126, 141, 134, 136, 136, 136, 137, 135, 135, 133, 132, 131, 129, 148, 160, + 170, 185, 189, 188, 194, 193, 193, 195, 199, 201, 199, 192, 187, 196, 198, 198, + 195, 191, 190, 192, 196, 195, 195, 195, 195, 195, 194, 194, 194, 199, 197, 193, + 188, 184, 188, 197, 205, 209, 204, 200, 199, 201, 200, 194, 188, 188, 189, 188, + 184, 179, 176, 178, 181, 166, 173, 161, 95, 144, 145, 147, 139, 155, 150, 141, + 132, 125, 120, 119, 117, 129, 127, 126, 126, 125, 122, 124, 130, 138, 136, 132, + 132, 134, 133, 127, 123, 127, 129, 130, 131, 131, 129, 125, 121, 114, 109, 103, + 114, 115, 117, 119, 120, 123, 123, 124, 125, 116, 119, 125, 122, 122, 125, 122, + 102, 109, 104, 100, 104, 103, 103, 112, 111, 104, 107, 119, 119, 110, 109, 118, + 109, 102, 96, 102, 113, 121, 119, 113, 90, 95, 103, 116, 128, 136, 140, 140, + 134, 149, 143, 113, 105, 124, 138, 134, 147, 150, 155, 159, 162, 167, 171, 174, + 173, 174, 174, 175, 175, 175, 175, 174, 173, 174, 173, 174, 174, 175, 175, 174, + 167, 164, 171, 172, 164, 167, 175, 175, 166, 180, 189, 184, 167, 151, 135, 126, + 133, 123, 148, 148, 129, 139, 144, 143, 138, 137, 134, 132, 131, 130, 130, 130, + 131, 148, 161, 173, 187, 191, 190, 199, 196, 196, 196, 197, 198, 196, 192, 189, + 203, 201, 197, 193, 190, 191, 194, 197, 199, 196, 191, 188, 188, 192, 198, 202, + 197, 196, 194, 193, 193, 197, 202, 207, 215, 208, 203, 204, 208, 205, 194, 183, + 178, 183, 186, 184, 177, 175, 179, 186, 160, 160, 140, 86, 134, 137, 154, 152, + 148, 149, 149, 150, 150, 149, 145, 143, 134, 134, 135, 134, 132, 129, 135, 145, + 127, 117, 106, 103, 106, 112, 113, 112, 115, 127, 136, 142, 142, 142, 135, 129, + 131, 129, 112, 119, 120, 120, 121, 122, 122, 123, 124, 125, 117, 122, 128, 122, + 121, 128, 128, 133, 133, 120, 111, 114, 109, 103, 107, 116, 122, 131, 140, 137, + 126, 114, 108, 121, 118, 111, 106, 102, 97, 89, 82, 88, 91, 98, 108, 117, + 122, 122, 120, 121, 122, 117, 106, 105, 116, 124, 123, 136, 141, 146, 152, 156, + 162, 167, 170, 167, 167, 168, 169, 169, 168, 167, 168, 162, 163, 165, 167, 166, + 164, 160, 158, 158, 152, 155, 158, 153, 159, 168, 167, 168, 165, 150, 133, 123, + 127, 135, 140, 136, 129, 151, 149, 136, 142, 140, 145, 142, 141, 139, 137, 135, + 133, 132, 132, 129, 149, 163, 175, 186, 188, 188, 199, 197, 198, 198, 196, 195, + 195, 196, 198, 204, 200, 194, 191, 191, 193, 195, 196, 196, 195, 193, 193, 194, + 196, 200, 202, 192, 195, 201, 207, 210, 210, 206, 203, 209, 206, 203, 205, 207, + 204, 196, 189, 178, 181, 184, 183, 179, 179, 181, 185, 178, 166, 136, 95, 126, + 122, 134, 126, 123, 126, 133, 140, 143, 140, 132, 126, 135, 133, 137, 141, 144, + 143, 149, 156, 156, 151, 142, 139, 140, 145, 148, 150, 157, 164, 167, 163, 157, + 152, 139, 128, 148, 156, 142, 126, 127, 126, 126, 125, 126, 125, 125, 129, 121, + 126, 131, 121, 120, 127, 131, 131, 130, 122, 121, 131, 128, 117, 115, 121, 128, + 126, 118, 117, 125, 126, 119, 125, 124, 122, 117, 110, 107, 106, 108, 106, 104, + 106, 111, 119, 126, 129, 129, 134, 124, 123, 134, 140, 135, 129, 131, 121, 126, + 134, 141, 145, 150, 155, 158, 160, 159, 162, 163, 163, 162, 160, 161, 157, 158, + 158, 155, 148, 137, 125, 118, 118, 107, 107, 110, 112, 120, 127, 123, 113, 121, + 130, 137, 145, 152, 153, 150, 154, 142, 138, 131, 140, 147, 132, 138, 141, 141, + 140, 138, 136, 134, 132, 130, 128, 146, 162, 174, 184, 182, 184, 196, 198, 200, + 199, 197, 194, 196, 201, 206, 201, 197, 191, 190, 192, 195, 195, 195, 188, 193, + 200, 206, 207, 205, 200, 197, 201, 199, 197, 199, 203, 207, 208, 207, 193, 193, + 194, 196, 197, 196, 194, 192, 186, 186, 184, 184, 184, 183, 182, 181, 173, 159, + 132, 112, 139, 135, 141, 128, 135, 131, 128, 129, 132, 135, 138, 137, 139, 134, + 134, 140, 145, 145, 142, 143, 150, 153, 153, 152, 149, 148, 148, 148, 152, 154, + 152, 148, 149, 151, 145, 136, 130, 137, 135, 128, 124, 120, 124, 127, 125, 124, + 123, 127, 124, 123, 126, 126, 124, 124, 129, 131, 131, 129, 125, 122, 121, 123, + 124, 127, 126, 123, 121, 120, 123, 125, 128, 125, 128, 130, 132, 130, 126, 120, + 116, 109, 117, 113, 109, 115, 118, 124, 139, 129, 130, 132, 134, 135, 136, 136, + 135, 141, 136, 129, 124, 126, 134, 143, 150, 152, 151, 149, 145, 141, 143, 151, + 160, 149, 142, 127, 111, 108, 115, 124, 127, 138, 141, 144, 144, 141, 140, 141, + 144, 149, 149, 149, 150, 150, 150, 151, 152, 148, 149, 149, 149, 147, 146, 146, + 144, 146, 141, 139, 140, 140, 137, 139, 142, 137, 148, 160, 168, 179, 192, 196, + 194, 195, 192, 195, 201, 203, 199, 200, 205, 206, 196, 187, 185, 190, 193, 191, + 189, 192, 198, 199, 195, 196, 199, 197, 191, 190, 199, 206, 205, 199, 197, 203, + 210, 204, 197, 191, 194, 201, 203, 197, 190, 183, 183, 185, 187, 188, 187, 182, + 178, 165, 170, 99, 144, 131, 131, 139, 141, 139, 137, 136, 136, 135, 134, 133, + 132, 137, 135, 133, 134, 136, 141, 147, 152, 148, 148, 149, 149, 149, 148, 146, + 144, 146, 146, 154, 158, 154, 152, 142, 120, 117, 125, 148, 127, 126, 128, 132, + 130, 126, 125, 126, 127, 124, 123, 125, 125, 122, 122, 126, 125, 127, 129, 129, + 127, 126, 125, 127, 129, 128, 126, 126, 126, 128, 130, 132, 129, 129, 130, 131, + 130, 129, 127, 126, 117, 128, 128, 126, 129, 125, 123, 131, 133, 133, 133, 134, + 135, 137, 139, 140, 138, 138, 138, 138, 138, 138, 138, 138, 126, 128, 129, 125, + 121, 122, 127, 131, 120, 130, 139, 144, 150, 154, 153, 148, 145, 146, 147, 147, + 147, 147, 149, 150, 151, 151, 150, 149, 149, 148, 147, 148, 148, 147, 146, 145, + 143, 142, 141, 141, 148, 145, 145, 148, 148, 144, 144, 145, 142, 142, 154, 173, + 186, 191, 195, 201, 195, 192, 194, 198, 200, 198, 198, 202, 197, 193, 187, 184, + 186, 190, 194, 196, 196, 200, 200, 197, 199, 202, 201, 196, 194, 198, 201, 202, + 201, 201, 204, 208, 206, 200, 194, 193, 195, 194, 188, 182, 182, 182, 183, 184, + 184, 183, 179, 174, 173, 160, 110, 143, 136, 137, 140, 135, 137, 137, 137, 138, + 140, 141, 143, 143, 140, 138, 136, 133, 133, 135, 139, 141, 145, 146, 145, 145, + 143, 144, 146, 148, 160, 152, 145, 139, 133, 143, 149, 142, 101, 132, 154, 116, + 120, 126, 130, 125, 118, 119, 123, 124, 121, 121, 125, 126, 123, 124, 128, 124, + 128, 133, 134, 132, 130, 127, 127, 128, 128, 129, 130, 132, 132, 133, 134, 127, + 126, 125, 125, 126, 129, 131, 133, 124, 135, 134, 133, 135, 129, 124, 130, 135, + 134, 133, 132, 134, 136, 139, 141, 141, 143, 146, 149, 149, 146, 143, 141, 149, + 152, 155, 154, 151, 149, 150, 151, 150, 156, 158, 156, 155, 154, 151, 145, 154, + 153, 152, 152, 154, 156, 156, 156, 159, 158, 157, 155, 153, 152, 151, 151, 157, + 155, 152, 150, 148, 147, 146, 146, 150, 148, 149, 153, 154, 149, 147, 147, 147, + 139, 149, 175, 189, 186, 189, 202, 195, 193, 193, 196, 196, 194, 195, 198, 192, + 191, 188, 184, 183, 186, 193, 199, 196, 199, 200, 197, 198, 202, 202, 201, 202, + 201, 200, 200, 201, 202, 203, 202, 208, 205, 200, 197, 195, 191, 187, 184, 182, + 182, 183, 184, 184, 183, 179, 176, 169, 134, 121, 138, 140, 145, 146, 134, 140, + 140, 140, 140, 142, 144, 148, 149, 148, 146, 145, 142, 141, 141, 142, 143, 150, + 150, 149, 147, 143, 144, 149, 153, 143, 144, 151, 154, 144, 143, 139, 126, 138, + 102, 133, 111, 112, 116, 120, 120, 116, 117, 123, 121, 119, 121, 127, 128, 126, + 127, 132, 128, 131, 135, 135, 131, 127, 126, 125, 125, 127, 128, 130, 131, 132, + 132, 132, 129, 128, 126, 126, 128, 131, 134, 136, 130, 138, 134, 131, 136, 135, + 133, 142, 138, 138, 139, 139, 140, 142, 144, 145, 151, 150, 149, 149, 151, 153, + 155, 157, 146, 149, 151, 151, 149, 147, 146, 146, 157, 158, 155, 149, 150, 156, + 160, 161, 164, 159, 154, 154, 156, 159, 158, 157, 161, 161, 159, 158, 156, 155, + 154, 154, 161, 160, 156, 154, 152, 153, 154, 155, 150, 148, 148, 152, 153, 149, + 147, 148, 150, 142, 145, 164, 177, 179, 184, 193, 195, 193, 193, 192, 192, 192, + 193, 193, 192, 192, 189, 186, 185, 186, 190, 193, 194, 194, 194, 193, 194, 197, + 200, 200, 206, 204, 202, 200, 199, 199, 198, 198, 202, 202, 200, 198, 194, 191, + 190, 190, 180, 179, 179, 181, 181, 181, 177, 176, 161, 115, 138, 135, 138, 143, + 143, 132, 144, 143, 142, 140, 139, 140, 143, 145, 149, 149, 150, 150, 150, 150, + 151, 151, 150, 152, 152, 148, 143, 142, 145, 150, 151, 147, 149, 146, 135, 134, + 137, 133, 135, 129, 120, 118, 113, 112, 118, 123, 124, 126, 129, 123, 122, 123, + 129, 130, 127, 126, 129, 129, 130, 130, 130, 126, 125, 125, 126, 124, 126, 128, + 130, 133, 133, 132, 130, 136, 135, 135, 136, 136, 137, 138, 139, 135, 142, 139, + 138, 144, 143, 141, 148, 142, 144, 147, 150, 151, 151, 150, 149, 155, 153, 150, + 149, 150, 153, 157, 160, 158, 159, 159, 158, 157, 156, 157, 158, 146, 152, 158, + 160, 163, 166, 164, 159, 166, 161, 156, 154, 155, 157, 155, 154, 155, 155, 154, + 155, 154, 154, 153, 153, 155, 153, 152, 150, 150, 151, 154, 156, 153, 149, 148, + 150, 151, 149, 150, 154, 150, 148, 146, 151, 161, 175, 184, 186, 190, 192, 192, + 190, 189, 191, 190, 190, 188, 187, 187, 188, 190, 191, 190, 189, 193, 191, 191, + 191, 191, 193, 197, 200, 199, 202, 203, 201, 197, 195, 198, 201, 192, 194, 194, + 192, 189, 187, 187, 189, 180, 178, 176, 175, 173, 170, 167, 163, 159, 117, 155, + 139, 137, 135, 136, 128, 145, 146, 146, 143, 140, 139, 141, 143, 143, 144, 146, + 147, 148, 149, 150, 150, 143, 145, 146, 146, 143, 141, 143, 144, 149, 143, 146, + 146, 137, 136, 140, 139, 143, 138, 167, 123, 115, 111, 117, 123, 126, 128, 130, + 129, 126, 128, 130, 128, 123, 120, 123, 125, 125, 124, 123, 122, 124, 127, 131, + 127, 129, 130, 132, 133, 133, 132, 133, 136, 136, 137, 138, 138, 138, 137, 137, + 131, 140, 141, 143, 148, 143, 135, 138, 139, 142, 146, 150, 151, 150, 147, 145, + 152, 152, 152, 152, 151, 150, 149, 148, 150, 149, 147, 146, 146, 148, 150, 151, + 155, 159, 161, 160, 158, 157, 154, 148, 164, 161, 157, 155, 155, 155, 154, 153, + 154, 155, 155, 155, 156, 156, 157, 157, 152, 152, 151, 151, 151, 153, 154, 156, + 157, 152, 150, 153, 154, 152, 155, 158, 149, 152, 150, 146, 152, 170, 182, 184, + 185, 189, 189, 188, 187, 188, 187, 184, 181, 180, 182, 186, 191, 194, 193, 191, + 196, 192, 191, 193, 193, 192, 196, 200, 190, 195, 200, 200, 197, 197, 200, 203, + 193, 193, 193, 191, 188, 185, 185, 184, 186, 182, 177, 173, 168, 162, 155, 152, + 146, 121, 155, 141, 141, 139, 143, 143, 142, 145, 149, 148, 144, 143, 145, 148, + 145, 145, 146, 146, 146, 147, 148, 147, 141, 142, 144, 147, 148, 148, 146, 146, + 139, 134, 142, 150, 145, 141, 141, 136, 140, 137, 147, 118, 115, 113, 117, 119, + 118, 120, 124, 126, 124, 125, 128, 128, 122, 119, 120, 123, 123, 122, 122, 120, + 123, 126, 130, 129, 130, 132, 133, 133, 133, 133, 133, 134, 134, 134, 135, 134, + 135, 135, 135, 132, 139, 138, 139, 146, 142, 133, 136, 137, 139, 142, 144, 146, + 145, 144, 143, 150, 151, 152, 152, 151, 149, 147, 146, 151, 150, 149, 150, 152, + 154, 154, 154, 151, 152, 150, 146, 150, 158, 163, 164, 159, 159, 160, 159, 157, + 156, 156, 157, 158, 158, 158, 159, 159, 160, 160, 160, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 152, 153, 157, 157, 156, 157, 159, 154, 154, 152, 151, 152, + 156, 166, 176, 177, 183, 185, 184, 182, 185, 183, 178, 177, 179, 180, 181, 183, + 186, 191, 195, 197, 192, 191, 194, 196, 193, 194, 199, 189, 191, 195, 197, 198, + 198, 196, 195, 193, 192, 190, 189, 188, 186, 184, 183, 181, 177, 171, 166, 160, + 153, 147, 142, 137, 130, 144, 139, 145, 143, 146, 151, 140, 145, 150, 151, 147, + 145, 147, 149, 149, 148, 149, 148, 148, 149, 150, 151, 148, 145, 141, 142, 146, + 147, 145, 141, 152, 134, 127, 127, 124, 129, 139, 141, 146, 72, 101, 117, 117, + 120, 123, 118, 113, 115, 121, 119, 118, 121, 127, 127, 123, 121, 123, 125, 126, + 125, 124, 121, 121, 123, 125, 129, 129, 131, 131, 131, 131, 130, 131, 136, 136, + 135, 135, 135, 137, 139, 141, 140, 143, 136, 134, 143, 144, 142, 148, 143, 143, + 145, 146, 147, 148, 149, 149, 153, 152, 150, 149, 149, 152, 154, 156, 148, 147, + 148, 150, 154, 154, 153, 152, 155, 158, 158, 155, 155, 159, 159, 156, 156, 159, + 162, 162, 159, 158, 160, 162, 157, 158, 157, 157, 157, 158, 158, 158, 159, 158, + 158, 157, 157, 156, 155, 154, 152, 150, 153, 158, 159, 156, 155, 156, 162, 152, + 153, 158, 151, 140, 146, 164, 172, 179, 182, 181, 180, 184, 179, 173, 177, 181, + 181, 178, 174, 176, 187, 196, 196, 192, 191, 195, 194, 191, 190, 195, 196, 193, + 193, 196, 200, 198, 191, 184, 187, 185, 183, 183, 184, 184, 182, 180, 164, 160, + 156, 151, 146, 143, 137, 133, 145, 146, 139, 137, 143, 139, 135, 138, 140, 144, + 151, 151, 147, 143, 144, 146, 147, 146, 147, 147, 148, 150, 152, 154, 151, 144, + 135, 133, 135, 136, 132, 127, 132, 121, 127, 138, 133, 125, 117, 108, 129, 101, + 124, 117, 119, 121, 121, 122, 120, 114, 109, 112, 114, 118, 123, 125, 126, 125, + 123, 123, 123, 122, 123, 124, 124, 125, 125, 122, 127, 131, 132, 130, 130, 133, + 137, 134, 134, 135, 136, 136, 137, 137, 137, 137, 135, 133, 132, 134, 137, 140, + 143, 137, 141, 145, 147, 146, 145, 145, 146, 145, 146, 146, 147, 149, 150, 151, + 151, 149, 150, 151, 151, 151, 153, 158, 161, 161, 157, 153, 154, 158, 160, 158, + 155, 161, 152, 156, 160, 152, 150, 157, 160, 163, 162, 158, 156, 155, 156, 158, + 159, 154, 154, 155, 156, 155, 153, 152, 150, 151, 149, 153, 158, 160, 157, 159, + 161, 156, 154, 153, 155, 157, 156, 151, 147, 166, 162, 160, 164, 170, 175, 174, + 172, 173, 174, 173, 164, 161, 178, 184, 168, 181, 190, 188, 185, 188, 187, 185, + 194, 193, 192, 190, 188, 186, 185, 185, 185, 185, 183, 181, 179, 177, 175, 173, + 171, 165, 157, 147, 139, 135, 139, 146, 152, 148, 149, 148, 144, 141, 141, 146, + 150, 146, 144, 143, 147, 151, 151, 145, 139, 143, 144, 148, 151, 151, 144, 132, + 124, 118, 123, 123, 124, 128, 133, 130, 124, 128, 126, 128, 134, 142, 142, 135, + 128, 122, 110, 105, 125, 123, 121, 120, 121, 122, 120, 117, 127, 126, 123, 122, + 121, 123, 125, 126, 124, 124, 125, 126, 126, 127, 127, 127, 126, 126, 127, 129, + 131, 132, 131, 130, 134, 134, 135, 136, 137, 137, 137, 137, 135, 135, 135, 136, + 137, 139, 140, 141, 137, 140, 144, 145, 146, 146, 147, 148, 149, 149, 149, 149, + 149, 150, 150, 150, 151, 152, 153, 153, 152, 153, 156, 158, 159, 156, 152, 154, + 157, 159, 157, 154, 162, 151, 154, 161, 157, 157, 158, 154, 158, 157, 154, 154, + 153, 155, 157, 159, 158, 157, 156, 155, 155, 154, 155, 155, 155, 154, 156, 160, + 160, 157, 157, 158, 158, 158, 159, 162, 163, 163, 161, 158, 159, 149, 141, 139, + 144, 154, 160, 163, 172, 165, 161, 155, 153, 169, 180, 172, 180, 188, 188, 188, + 191, 188, 182, 187, 183, 183, 182, 184, 183, 185, 184, 185, 179, 176, 172, 175, + 180, 183, 179, 176, 154, 150, 146, 140, 140, 141, 145, 148, 149, 150, 150, 147, + 143, 140, 141, 143, 147, 145, 145, 149, 154, 155, 152, 147, 151, 149, 148, 147, + 148, 149, 149, 150, 137, 136, 129, 124, 126, 133, 136, 134, 146, 146, 147, 151, + 152, 143, 127, 114, 131, 133, 131, 125, 124, 123, 124, 124, 124, 124, 123, 130, + 127, 124, 121, 120, 121, 122, 124, 124, 123, 124, 125, 126, 127, 128, 128, 129, + 126, 124, 127, 131, 133, 129, 126, 134, 136, 136, 137, 137, 138, 138, 138, 134, + 136, 138, 140, 141, 141, 141, 140, 138, 140, 143, 144, 144, 145, 148, 150, 150, + 150, 149, 148, 147, 147, 148, 148, 153, 155, 157, 156, 155, 153, 154, 155, 158, + 155, 153, 154, 157, 158, 156, 153, 163, 151, 154, 162, 161, 161, 158, 148, 153, + 153, 150, 150, 151, 154, 157, 158, 160, 159, 157, 155, 154, 155, 157, 157, 160, + 158, 159, 163, 162, 158, 157, 158, 155, 157, 161, 162, 162, 163, 162, 163, 166, + 162, 159, 160, 162, 161, 158, 154, 162, 152, 150, 150, 147, 154, 163, 161, 160, + 169, 171, 177, 188, 187, 180, 182, 177, 178, 180, 181, 182, 182, 181, 180, 178, + 170, 164, 165, 170, 171, 164, 155, 146, 146, 147, 148, 148, 148, 148, 148, 149, + 151, 152, 150, 147, 144, 143, 143, 143, 142, 141, 145, 150, 153, 152, 150, 153, + 152, 151, 149, 148, 151, 158, 163, 168, 167, 159, 152, 152, 157, 160, 159, 156, + 148, 139, 134, 133, 131, 126, 121, 132, 141, 137, 116, 116, 118, 123, 124, 121, + 116, 115, 114, 117, 119, 123, 124, 123, 121, 119, 121, 122, 122, 123, 124, 125, + 126, 126, 130, 129, 128, 128, 130, 130, 128, 126, 135, 136, 137, 137, 137, 138, + 139, 139, 136, 137, 139, 141, 142, 142, 142, 141, 141, 142, 143, 143, 143, 144, + 146, 149, 146, 146, 144, 144, 144, 144, 145, 146, 152, 154, 157, 157, 156, 154, + 154, 154, 157, 155, 154, 155, 157, 158, 156, 154, 161, 153, 156, 161, 159, 159, + 158, 149, 152, 151, 149, 150, 150, 152, 155, 156, 158, 157, 156, 156, 155, 155, + 156, 155, 161, 158, 159, 163, 162, 158, 158, 161, 154, 157, 162, 163, 161, 160, + 162, 164, 162, 163, 166, 169, 169, 166, 158, 152, 159, 148, 152, 161, 153, 148, + 149, 148, 151, 159, 160, 165, 178, 177, 170, 171, 173, 174, 174, 174, 172, 170, + 165, 164, 169, 164, 157, 156, 155, 154, 147, 143, 148, 150, 153, 155, 156, 154, + 153, 152, 148, 149, 150, 151, 150, 149, 149, 150, 144, 142, 141, 143, 147, 150, + 151, 151, 152, 156, 161, 161, 157, 155, 157, 159, 161, 166, 166, 164, 161, 161, + 156, 151, 150, 140, 128, 121, 119, 123, 123, 123, 117, 125, 127, 116, 111, 109, + 114, 115, 113, 112, 115, 112, 114, 119, 123, 126, 126, 126, 125, 123, 123, 123, + 124, 126, 126, 126, 126, 128, 131, 133, 132, 129, 128, 128, 130, 135, 136, 137, + 138, 139, 139, 139, 139, 141, 140, 139, 139, 140, 141, 142, 143, 143, 144, 145, + 144, 142, 142, 144, 146, 144, 143, 142, 142, 143, 145, 147, 149, 149, 153, 155, + 156, 155, 154, 154, 155, 156, 156, 156, 157, 158, 158, 156, 154, 158, 154, 159, + 159, 152, 153, 158, 152, 152, 152, 151, 150, 150, 152, 153, 153, 155, 157, 159, + 161, 161, 159, 156, 154, 159, 156, 158, 161, 162, 160, 162, 164, 162, 166, 168, + 169, 165, 164, 166, 168, 162, 160, 159, 159, 162, 167, 170, 172, 182, 171, 177, + 186, 178, 171, 172, 172, 163, 167, 162, 161, 169, 166, 157, 159, 164, 165, 164, + 164, 160, 157, 152, 151, 153, 155, 155, 156, 155, 155, 156, 157, 156, 155, 156, + 157, 156, 155, 154, 154, 149, 148, 147, 146, 148, 149, 149, 150, 151, 149, 148, + 148, 149, 151, 153, 153, 153, 158, 165, 165, 162, 157, 157, 157, 148, 157, 161, + 162, 159, 158, 151, 145, 148, 147, 144, 142, 137, 129, 118, 110, 110, 111, 119, + 128, 118, 110, 113, 114, 113, 117, 125, 124, 123, 121, 122, 124, 128, 131, 134, + 128, 128, 128, 129, 129, 129, 129, 129, 127, 132, 135, 133, 129, 126, 127, 133, + 136, 137, 137, 138, 139, 140, 139, 140, 141, 141, 139, 138, 139, 140, 142, 143, + 142, 144, 145, 145, 143, 143, 144, 145, 146, 145, 144, 144, 145, 148, 151, 154, + 148, 151, 153, 153, 153, 153, 154, 155, 154, 155, 156, 157, 157, 156, 155, 154, + 155, 154, 160, 157, 148, 150, 157, 150, 152, 152, 151, 151, 152, 152, 152, 152, + 155, 157, 161, 164, 164, 161, 156, 153, 156, 153, 155, 159, 160, 159, 162, 166, + 167, 168, 169, 168, 165, 164, 164, 165, 167, 167, 169, 169, 169, 169, 167, 166, + 158, 146, 149, 154, 147, 147, 154, 158, 163, 166, 159, 156, 161, 159, 153, 157, + 161, 160, 161, 160, 159, 157, 155, 154, 148, 152, 157, 157, 155, 156, 161, 165, + 159, 157, 156, 154, 151, 151, 151, 151, 151, 148, 144, 142, 143, 144, 144, 143, + 151, 150, 149, 148, 147, 148, 149, 150, 150, 151, 153, 154, 153, 153, 155, 157, + 155, 161, 162, 160, 158, 160, 160, 158, 158, 157, 153, 150, 144, 138, 129, 124, + 125, 114, 111, 124, 114, 108, 113, 114, 109, 111, 119, 122, 121, 119, 120, 123, + 127, 132, 135, 132, 131, 132, 132, 130, 129, 129, 129, 129, 130, 130, 130, 130, + 129, 128, 129, 136, 138, 139, 139, 139, 140, 140, 140, 139, 139, 139, 140, 140, + 140, 140, 139, 138, 141, 144, 146, 145, 145, 146, 147, 149, 148, 146, 144, 145, + 147, 150, 153, 150, 152, 153, 152, 149, 149, 151, 153, 150, 152, 155, 156, 155, + 153, 152, 151, 153, 152, 157, 156, 150, 154, 155, 143, 149, 149, 150, 151, 151, + 152, 153, 152, 153, 154, 157, 159, 159, 157, 154, 152, 156, 152, 152, 155, 158, + 157, 160, 163, 163, 162, 160, 161, 161, 161, 160, 159, 157, 161, 167, 169, 166, + 158, 149, 143, 164, 157, 160, 161, 154, 157, 166, 167, 153, 161, 157, 156, 160, + 159, 157, 165, 160, 160, 160, 160, 160, 160, 160, 160, 154, 156, 158, 157, 156, + 156, 158, 159, 156, 156, 155, 152, 150, 149, 148, 147, 148, 147, 144, 144, 146, + 146, 143, 141, 147, 147, 148, 148, 146, 146, 147, 148, 148, 147, 147, 148, 151, + 153, 153, 153, 148, 153, 153, 149, 146, 150, 153, 155, 160, 156, 148, 143, 139, + 139, 138, 140, 132, 126, 118, 102, 95, 99, 109, 109, 99, 93, 95, 108, 112, + 117, 122, 126, 127, 127, 127, 133, 133, 132, 131, 131, 129, 127, 126, 131, 127, + 126, 128, 131, 132, 129, 127, 136, 137, 137, 138, 138, 138, 139, 139, 134, 137, + 139, 142, 143, 141, 138, 136, 135, 139, 144, 147, 148, 147, 148, 149, 150, 148, + 145, 143, 143, 144, 147, 148, 153, 154, 153, 150, 147, 146, 148, 150, 147, 150, + 153, 154, 153, 151, 150, 149, 151, 149, 152, 154, 152, 157, 152, 134, 144, 145, + 146, 149, 151, 152, 154, 153, 149, 150, 151, 152, 151, 151, 150, 150, 155, 152, + 151, 154, 155, 155, 158, 161, 161, 159, 157, 156, 159, 161, 159, 157, 161, 161, + 160, 160, 159, 160, 163, 165, 157, 156, 164, 165, 155, 157, 160, 154, 160, 168, + 167, 164, 165, 161, 158, 166, 156, 155, 155, 154, 154, 154, 154, 155, 158, 157, + 155, 159, 162, 165, 164, 162, 155, 155, 154, 153, 151, 149, 148, 147, 144, 144, + 146, 149, 153, 153, 148, 145, 147, 150, 151, 152, 150, 150, 151, 152, 153, 153, + 154, 158, 161, 160, 156, 150, 147, 153, 155, 152, 149, 151, 153, 152, 151, 153, + 152, 151, 145, 139, 129, 125, 121, 135, 139, 109, 106, 109, 110, 109, 111, 96, + 69, 113, 120, 124, 121, 120, 122, 123, 121, 119, 128, 128, 126, 131, 128, 126, + 134, 126, 132, 139, 138, 134, 129, 129, 132, 138, 134, 133, 137, 137, 132, 133, + 137, 136, 140, 143, 145, 144, 144, 143, 144, 145, 144, 141, 142, 143, 143, 141, + 140, 144, 145, 146, 148, 149, 151, 152, 152, 149, 148, 146, 145, 145, 146, 147, + 148, 148, 150, 149, 145, 145, 150, 152, 150, 148, 152, 156, 154, 148, 147, 152, + 158, 151, 153, 152, 151, 151, 151, 154, 154, 149, 153, 154, 153, 152, 153, 149, + 145, 148, 152, 155, 155, 153, 154, 158, 163, 163, 161, 160, 162, 164, 163, 159, + 156, 152, 155, 159, 162, 164, 164, 162, 161, 156, 156, 156, 156, 157, 158, 160, + 162, 162, 162, 162, 161, 159, 158, 158, 157, 160, 160, 160, 159, 157, 155, 153, + 152, 154, 152, 151, 153, 156, 159, 160, 160, 156, 154, 152, 148, 147, 147, 148, + 149, 149, 148, 146, 144, 143, 144, 144, 144, 152, 155, 151, 145, 143, 150, 152, + 149, 154, 151, 148, 150, 154, 156, 153, 151, 152, 153, 153, 150, 147, 147, 149, + 153, 144, 146, 146, 146, 141, 135, 126, 121, 123, 126, 132, 102, 99, 105, 109, + 103, 100, 88, 68, 114, 122, 128, 124, 118, 119, 121, 121, 127, 132, 129, 129, + 137, 135, 130, 134, 139, 138, 137, 135, 132, 130, 129, 129, 138, 135, 135, 138, + 137, 132, 131, 135, 131, 135, 139, 139, 139, 139, 140, 141, 141, 140, 139, 141, + 142, 143, 141, 140, 140, 141, 142, 143, 144, 145, 146, 146, 152, 151, 149, 148, + 147, 148, 148, 149, 146, 149, 150, 147, 148, 151, 151, 147, 147, 150, 151, 150, + 146, 147, 150, 154, 149, 151, 151, 149, 149, 150, 153, 155, 148, 154, 157, 153, + 150, 152, 154, 154, 156, 155, 155, 155, 156, 158, 158, 158, 158, 157, 157, 158, + 161, 161, 159, 156, 156, 157, 160, 161, 162, 162, 161, 159, 158, 158, 159, 160, + 159, 157, 156, 156, 158, 158, 160, 160, 160, 159, 158, 158, 157, 157, 157, 156, + 156, 156, 156, 156, 165, 162, 159, 159, 160, 160, 159, 158, 157, 157, 157, 156, + 154, 152, 149, 148, 148, 147, 146, 145, 144, 145, 146, 147, 146, 151, 150, 148, + 148, 152, 153, 149, 150, 148, 147, 148, 150, 151, 151, 151, 155, 157, 158, 156, + 153, 151, 153, 155, 159, 154, 151, 151, 152, 149, 141, 133, 132, 130, 128, 102, + 101, 112, 122, 112, 106, 100, 93, 108, 119, 128, 127, 124, 128, 134, 136, 132, + 135, 131, 133, 145, 146, 140, 142, 136, 133, 129, 131, 136, 142, 145, 145, 143, + 141, 141, 142, 142, 138, 137, 139, 132, 135, 136, 136, 136, 137, 139, 141, 139, + 138, 138, 139, 141, 143, 143, 142, 143, 143, 143, 144, 144, 145, 145, 145, 148, + 147, 146, 145, 145, 145, 145, 145, 144, 149, 151, 150, 150, 152, 150, 146, 151, + 151, 149, 150, 149, 150, 150, 151, 149, 151, 151, 150, 150, 152, 155, 158, 149, + 155, 160, 154, 150, 152, 158, 162, 163, 158, 155, 156, 159, 160, 158, 154, 160, + 159, 159, 161, 164, 164, 163, 162, 161, 161, 161, 161, 161, 161, 160, 160, 159, + 161, 162, 163, 162, 160, 156, 155, 157, 158, 160, 161, 163, 162, 161, 159, 157, + 156, 156, 156, 157, 159, 161, 163, 169, 167, 164, 162, 161, 160, 158, 156, 156, + 158, 160, 161, 159, 155, 150, 147, 147, 146, 146, 146, 146, 147, 148, 149, 141, + 146, 150, 151, 152, 153, 151, 147, 149, 150, 151, 150, 150, 150, 152, 155, 149, + 150, 151, 150, 148, 146, 146, 146, 156, 148, 141, 141, 146, 146, 139, 131, 132, + 126, 123, 115, 112, 122, 131, 117, 107, 109, 112, 121, 125, 124, 116, 109, 104, + 101, 97, 95, 99, 97, 101, 112, 113, 109, 113, 108, 107, 108, 113, 119, 127, + 134, 139, 144, 143, 141, 142, 141, 139, 138, 139, 137, 138, 139, 139, 139, 140, + 142, 144, 141, 140, 138, 140, 142, 144, 143, 142, 146, 146, 145, 146, 146, 146, + 145, 145, 144, 145, 144, 145, 144, 146, 145, 147, 146, 151, 152, 151, 150, 154, + 152, 148, 156, 153, 151, 151, 153, 155, 153, 152, 150, 152, 152, 151, 151, 153, + 156, 158, 151, 155, 158, 155, 152, 155, 159, 159, 162, 159, 157, 157, 158, 159, + 158, 156, 162, 162, 162, 163, 164, 164, 164, 164, 164, 163, 162, 161, 161, 162, + 163, 164, 159, 160, 161, 163, 165, 164, 162, 160, 161, 162, 164, 164, 164, 163, + 161, 160, 159, 158, 157, 157, 158, 161, 164, 167, 163, 161, 159, 159, 160, 160, + 159, 158, 154, 155, 158, 159, 158, 155, 152, 150, 149, 149, 148, 148, 148, 148, + 148, 148, 142, 143, 146, 149, 149, 150, 149, 147, 147, 151, 152, 151, 149, 150, + 152, 157, 157, 158, 159, 159, 157, 155, 153, 152, 157, 152, 147, 147, 148, 147, + 142, 136, 133, 132, 131, 124, 116, 121, 124, 107, 96, 102, 108, 98, 103, 108, + 113, 122, 131, 134, 129, 115, 123, 124, 125, 130, 129, 128, 136, 130, 133, 137, + 138, 135, 137, 142, 147, 139, 139, 139, 137, 137, 137, 136, 135, 140, 142, 142, + 142, 141, 142, 144, 146, 144, 144, 143, 144, 145, 145, 144, 143, 145, 146, 144, + 144, 145, 145, 144, 144, 146, 147, 148, 150, 152, 153, 154, 154, 152, 154, 154, + 150, 151, 155, 156, 154, 159, 155, 152, 152, 155, 156, 154, 151, 148, 150, 151, + 150, 150, 151, 154, 157, 153, 155, 155, 154, 157, 160, 156, 149, 155, 157, 159, + 158, 156, 156, 158, 161, 160, 160, 160, 159, 158, 158, 158, 159, 164, 163, 162, + 162, 162, 164, 167, 169, 166, 164, 162, 162, 165, 166, 164, 163, 161, 162, 163, + 162, 161, 159, 157, 155, 159, 158, 156, 156, 156, 158, 161, 163, 157, 156, 156, + 157, 158, 160, 159, 158, 155, 156, 156, 157, 157, 158, 158, 158, 155, 154, 154, + 153, 151, 150, 148, 146, 146, 144, 143, 145, 145, 144, 146, 147, 144, 148, 151, + 152, 149, 150, 151, 155, 156, 157, 157, 157, 156, 154, 151, 149, 149, 150, 152, + 150, 146, 142, 138, 136, 130, 130, 131, 117, 111, 115, 116, 106, 105, 114, 116, + 137, 138, 137, 134, 135, 136, 133, 125, 128, 137, 137, 134, 136, 132, 129, 139, + 126, 131, 137, 136, 130, 127, 129, 135, 140, 143, 143, 141, 141, 143, 143, 140, + 139, 141, 143, 143, 142, 142, 143, 145, 148, 147, 146, 146, 146, 147, 146, 145, + 147, 147, 147, 147, 147, 148, 148, 147, 145, 146, 147, 150, 151, 153, 153, 154, + 153, 156, 153, 150, 149, 155, 156, 156, 157, 154, 151, 152, 154, 155, 153, 150, + 147, 148, 148, 147, 146, 147, 149, 152, 154, 153, 152, 153, 158, 162, 155, 145, + 152, 156, 160, 159, 156, 155, 160, 164, 161, 162, 162, 160, 157, 157, 158, 159, + 162, 162, 161, 161, 162, 164, 166, 168, 172, 169, 164, 163, 164, 165, 163, 160, + 160, 160, 158, 156, 154, 153, 152, 151, 156, 155, 154, 153, 153, 154, 155, 156, + 159, 158, 158, 158, 160, 160, 157, 156, 159, 158, 157, 156, 156, 158, 161, 163, + 157, 157, 157, 155, 153, 151, 149, 145, 150, 143, 141, 142, 142, 142, 146, 150, + 149, 152, 156, 159, 158, 158, 157, 158, 154, 154, 152, 151, 151, 150, 147, 145, + 144, 149, 154, 152, 146, 141, 140, 141, 138, 138, 137, 107, 105, 109, 112, 110, + 119, 126, 119, 110, 119, 126, 125, 126, 129, 133, 133, 131, 137, 134, 132, 137, + 135, 131, 136, 137, 139, 142, 142, 140, 139, 139, 143, 142, 146, 147, 144, 144, + 149, 150, 146, 140, 142, 144, 146, 144, 144, 143, 145, 148, 146, 145, 147, 149, + 150, 149, 148, 150, 150, 150, 151, 151, 151, 152, 151, 143, 144, 145, 147, 148, + 148, 147, 147, 149, 152, 152, 149, 150, 153, 154, 152, 157, 156, 154, 154, 154, + 154, 153, 153, 151, 151, 150, 149, 146, 147, 149, 152, 152, 153, 152, 152, 156, + 160, 158, 152, 158, 158, 158, 158, 158, 159, 161, 162, 161, 162, 162, 161, 158, + 158, 161, 163, 161, 160, 160, 160, 160, 160, 161, 162, 173, 169, 165, 165, 166, + 166, 162, 157, 158, 157, 154, 152, 150, 151, 152, 153, 153, 153, 155, 155, 155, + 156, 156, 157, 160, 159, 159, 159, 160, 159, 158, 155, 160, 160, 156, 155, 154, + 156, 157, 159, 157, 158, 157, 157, 155, 154, 150, 148, 150, 142, 141, 144, 145, + 144, 148, 154, 151, 154, 158, 163, 166, 166, 161, 158, 161, 159, 156, 155, 155, + 155, 153, 150, 151, 152, 154, 154, 152, 151, 152, 153, 154, 155, 155, 103, 102, + 106, 104, 103, 113, 114, 98, 100, 114, 124, 122, 116, 118, 125, 131, 128, 131, + 126, 128, 140, 140, 135, 137, 140, 138, 135, 134, 134, 134, 133, 132, 135, 141, + 143, 140, 140, 146, 147, 143, 142, 145, 148, 149, 148, 146, 145, 145, 144, 143, + 144, 146, 150, 151, 151, 150, 146, 146, 146, 147, 147, 148, 149, 148, 148, 148, + 149, 150, 150, 148, 147, 146, 145, 150, 152, 150, 151, 153, 151, 148, 159, 159, + 159, 158, 157, 156, 156, 157, 156, 156, 155, 152, 150, 150, 152, 154, 150, 153, + 154, 152, 153, 158, 162, 161, 164, 160, 156, 157, 161, 163, 162, 159, 154, 156, + 157, 156, 154, 155, 158, 162, 160, 160, 159, 158, 157, 156, 156, 156, 166, 165, + 163, 166, 170, 170, 163, 157, 158, 157, 153, 151, 152, 154, 157, 159, 153, 155, + 157, 158, 159, 160, 160, 161, 156, 156, 156, 158, 159, 160, 158, 156, 158, 158, + 155, 153, 151, 151, 150, 151, 154, 156, 156, 157, 156, 155, 152, 150, 148, 142, + 142, 148, 149, 148, 151, 158, 145, 147, 151, 158, 163, 163, 156, 151, 147, 143, + 138, 136, 137, 138, 136, 134, 132, 129, 127, 128, 132, 136, 137, 137, 134, 139, + 142, 101, 103, 108, 116, 122, 124, 121, 118, 94, 122, 135, 121, 111, 120, 123, + 116, 127, 128, 130, 131, 131, 131, 131, 132, 135, 139, 137, 133, 131, 135, 134, + 129, 134, 138, 140, 139, 137, 136, 139, 142, 139, 142, 145, 146, 145, 145, 146, + 147, 146, 145, 144, 145, 146, 148, 150, 152, 148, 152, 152, 144, 143, 149, 152, + 151, 147, 144, 143, 147, 153, 155, 154, 151, 157, 151, 150, 155, 157, 153, 152, + 157, 156, 155, 153, 153, 152, 151, 149, 147, 156, 156, 155, 151, 149, 149, 153, + 159, 156, 156, 157, 157, 157, 155, 154, 153, 156, 157, 157, 158, 158, 157, 155, + 155, 155, 159, 162, 161, 156, 154, 157, 161, 158, 159, 160, 161, 161, 160, 158, + 157, 164, 165, 166, 167, 165, 164, 162, 160, 158, 157, 155, 155, 156, 159, 162, + 163, 159, 159, 157, 161, 163, 165, 161, 159, 163, 158, 153, 154, 157, 160, 157, + 154, 154, 154, 152, 153, 154, 156, 155, 156, 155, 157, 158, 159, 156, 152, 146, + 142, 147, 140, 144, 147, 141, 142, 151, 155, 156, 156, 146, 133, 128, 137, 145, + 150, 147, 145, 143, 141, 137, 134, 137, 142, 134, 134, 134, 134, 133, 133, 133, + 133, 133, 131, 130, 106, 106, 107, 110, 110, 108, 101, 95, 102, 118, 126, 120, + 117, 125, 126, 120, 124, 124, 126, 128, 129, 130, 129, 131, 121, 126, 128, 126, + 128, 134, 135, 132, 128, 130, 132, 132, 133, 134, 137, 139, 137, 137, 139, 139, + 138, 140, 144, 145, 145, 144, 144, 143, 144, 144, 145, 146, 148, 152, 152, 147, + 144, 147, 147, 144, 146, 147, 149, 150, 151, 152, 153, 154, 156, 151, 150, 154, + 156, 153, 152, 155, 155, 154, 152, 152, 152, 153, 152, 152, 153, 155, 155, 153, + 151, 151, 154, 158, 153, 153, 154, 154, 153, 151, 150, 149, 157, 157, 157, 157, + 157, 156, 154, 153, 151, 157, 162, 162, 158, 155, 155, 157, 152, 153, 154, 156, + 156, 157, 157, 157, 160, 161, 162, 163, 163, 163, 161, 160, 157, 155, 154, 153, + 154, 156, 157, 160, 161, 161, 159, 160, 162, 164, 160, 159, 157, 155, 153, 156, + 161, 162, 159, 154, 154, 155, 156, 153, 149, 148, 150, 153, 152, 154, 156, 158, + 158, 156, 154, 152, 159, 151, 153, 154, 146, 145, 152, 154, 140, 146, 155, 156, + 145, 133, 135, 146, 144, 139, 138, 142, 147, 145, 138, 131, 133, 133, 132, 131, + 130, 129, 128, 128, 132, 132, 133, 120, 121, 122, 124, 124, 123, 118, 114, 116, + 119, 119, 120, 123, 128, 125, 121, 128, 128, 129, 131, 131, 131, 130, 131, 123, + 126, 128, 127, 127, 130, 128, 125, 130, 129, 128, 129, 132, 134, 134, 134, 140, + 140, 140, 140, 140, 142, 147, 150, 149, 149, 148, 147, 147, 148, 148, 148, 147, + 152, 154, 152, 149, 150, 149, 146, 147, 151, 154, 153, 150, 150, 153, 157, 153, + 149, 147, 151, 152, 150, 149, 150, 154, 154, 151, 150, 149, 149, 150, 151, 150, + 152, 155, 154, 152, 150, 149, 150, 148, 149, 150, 151, 152, 152, 150, 150, 156, + 156, 157, 157, 156, 155, 154, 153, 152, 158, 164, 165, 162, 159, 157, 158, 157, + 157, 157, 157, 157, 158, 159, 160, 158, 158, 159, 161, 161, 161, 160, 160, 162, + 161, 158, 157, 157, 158, 160, 162, 167, 166, 163, 164, 164, 165, 164, 162, 163, + 163, 162, 164, 166, 165, 160, 155, 155, 159, 161, 156, 149, 146, 149, 154, 148, + 149, 151, 152, 153, 153, 153, 153, 157, 148, 150, 151, 143, 141, 147, 147, 152, + 144, 146, 156, 151, 137, 139, 156, 158, 152, 146, 143, 145, 145, 142, 138, 142, + 141, 140, 139, 137, 136, 134, 134, 125, 127, 129, 117, 119, 121, 124, 128, 127, + 126, 125, 128, 123, 120, 123, 127, 124, 122, 121, 130, 130, 130, 130, 129, 128, + 127, 126, 128, 129, 130, 129, 128, 126, 123, 121, 132, 129, 126, 127, 131, 133, + 131, 129, 144, 145, 146, 145, 145, 145, 148, 150, 149, 149, 149, 149, 150, 150, + 150, 150, 147, 151, 153, 153, 151, 152, 154, 154, 150, 151, 152, 151, 149, 149, + 151, 154, 153, 150, 149, 150, 151, 151, 149, 149, 154, 153, 151, 147, 145, 145, + 146, 148, 150, 151, 153, 154, 151, 147, 143, 142, 145, 146, 148, 150, 152, 154, + 155, 155, 154, 154, 155, 155, 156, 156, 156, 156, 154, 157, 161, 162, 160, 158, + 158, 158, 163, 162, 160, 159, 158, 159, 160, 161, 159, 160, 160, 159, 160, 159, + 159, 159, 164, 163, 162, 161, 160, 160, 161, 162, 165, 165, 163, 162, 162, 163, + 164, 165, 164, 164, 163, 164, 165, 165, 163, 159, 161, 162, 162, 159, 154, 153, + 153, 157, 152, 152, 150, 150, 148, 149, 148, 149, 160, 151, 154, 157, 151, 151, + 158, 156, 161, 141, 129, 138, 149, 150, 150, 153, 148, 153, 154, 149, 143, 144, + 146, 148, 149, 149, 148, 148, 146, 146, 144, 144, 144, 146, 145, 123, 125, 125, + 125, 124, 123, 122, 122, 130, 124, 124, 127, 126, 121, 122, 127, 123, 124, 125, + 125, 125, 125, 124, 123, 123, 124, 125, 128, 128, 128, 126, 126, 128, 126, 124, + 126, 130, 133, 132, 130, 143, 145, 148, 149, 147, 145, 145, 145, 142, 143, 144, + 146, 147, 148, 148, 149, 151, 151, 151, 150, 149, 150, 154, 157, 153, 150, 147, + 148, 150, 152, 151, 150, 157, 156, 155, 154, 155, 156, 155, 151, 150, 149, 151, + 149, 147, 147, 150, 153, 148, 150, 152, 154, 153, 151, 147, 143, 147, 148, 148, + 150, 151, 153, 153, 154, 151, 151, 152, 154, 155, 157, 157, 159, 154, 155, 155, + 154, 154, 155, 156, 158, 159, 158, 157, 156, 156, 158, 159, 160, 163, 162, 162, + 159, 159, 157, 158, 157, 160, 159, 159, 158, 157, 157, 157, 156, 157, 156, 155, + 155, 155, 158, 160, 163, 157, 155, 154, 155, 158, 163, 166, 167, 163, 160, 156, + 157, 159, 161, 158, 157, 158, 158, 155, 154, 151, 152, 150, 152, 153, 144, 148, + 154, 150, 150, 156, 154, 143, 135, 127, 130, 143, 153, 149, 141, 127, 136, 144, + 148, 149, 153, 149, 143, 147, 148, 147, 148, 147, 148, 147, 148, 150, 152, 151, + 127, 130, 130, 130, 127, 127, 127, 128, 123, 124, 127, 128, 127, 124, 127, 132, + 121, 123, 125, 127, 128, 129, 129, 130, 131, 129, 128, 130, 130, 127, 127, 129, + 128, 128, 128, 131, 134, 138, 140, 139, 142, 147, 150, 153, 151, 148, 147, 145, + 144, 145, 147, 149, 150, 151, 151, 151, 156, 152, 150, 149, 146, 143, 147, 152, + 153, 149, 145, 145, 150, 152, 151, 148, 153, 153, 152, 149, 150, 152, 151, 145, + 145, 148, 152, 152, 153, 153, 157, 161, 150, 150, 150, 153, 155, 156, 155, 153, + 152, 151, 150, 149, 148, 148, 147, 148, 151, 151, 151, 153, 154, 157, 158, 160, + 159, 158, 157, 156, 156, 159, 161, 163, 156, 156, 157, 158, 159, 161, 163, 165, + 166, 164, 162, 159, 158, 156, 155, 156, 157, 158, 157, 157, 158, 157, 157, 155, + 153, 154, 155, 156, 156, 158, 160, 163, 165, 164, 158, 156, 155, 157, 160, 162, + 158, 153, 148, 151, 156, 160, 156, 153, 152, 152, 150, 151, 150, 151, 150, 152, + 151, 140, 144, 149, 144, 144, 147, 144, 137, 142, 139, 127, 125, 137, 150, 154, + 150, 144, 133, 131, 140, 153, 150, 140, 144, 145, 145, 146, 146, 148, 147, 148, + 142, 142, 141, 114, 118, 118, 119, 117, 119, 122, 126, 121, 124, 127, 127, 126, + 129, 129, 130, 128, 129, 130, 132, 133, 133, 133, 133, 131, 125, 123, 125, 124, + 121, 121, 126, 129, 130, 131, 132, 132, 133, 135, 137, 142, 145, 148, 151, 150, + 149, 149, 150, 150, 152, 153, 155, 156, 156, 155, 154, 158, 154, 153, 153, 150, + 144, 145, 150, 152, 149, 147, 147, 148, 151, 152, 153, 148, 150, 148, 144, 145, + 148, 147, 140, 143, 148, 153, 155, 154, 153, 155, 158, 154, 152, 150, 150, 153, + 155, 154, 153, 154, 152, 151, 150, 149, 150, 150, 151, 153, 153, 152, 152, 153, + 155, 155, 158, 161, 160, 159, 159, 161, 163, 164, 164, 159, 159, 160, 160, 161, + 160, 160, 161, 163, 161, 159, 156, 155, 154, 155, 156, 156, 157, 157, 158, 158, + 157, 158, 155, 151, 153, 155, 156, 154, 154, 155, 158, 167, 165, 161, 157, 151, + 150, 149, 150, 152, 150, 146, 148, 151, 154, 152, 151, 143, 145, 144, 146, 146, + 147, 146, 147, 157, 147, 148, 153, 148, 148, 150, 146, 144, 143, 139, 128, 119, + 122, 141, 158, 158, 156, 144, 131, 131, 144, 147, 144, 145, 146, 145, 146, 146, + 147, 146, 146, 148, 146, 144, 120, 123, 124, 121, 118, 117, 120, 124, 124, 128, + 129, 126, 127, 132, 129, 122, 132, 133, 133, 132, 130, 128, 126, 126, 110, 105, + 105, 110, 114, 113, 118, 126, 127, 127, 128, 125, 120, 119, 120, 122, 135, 136, + 140, 143, 143, 145, 148, 150, 151, 153, 154, 155, 155, 154, 152, 151, 156, 154, + 156, 160, 156, 150, 149, 153, 149, 150, 151, 149, 146, 147, 152, 157, 151, 153, + 151, 147, 147, 151, 150, 143, 146, 151, 156, 155, 151, 147, 146, 147, 158, 153, + 148, 145, 146, 147, 146, 146, 152, 151, 151, 152, 154, 156, 159, 160, 157, 155, + 154, 154, 153, 154, 155, 156, 153, 154, 155, 157, 159, 160, 158, 157, 161, 162, + 161, 160, 157, 154, 150, 148, 159, 159, 157, 155, 153, 154, 156, 156, 150, 151, + 152, 153, 153, 154, 153, 150, 144, 146, 150, 150, 147, 146, 146, 148, 146, 148, + 149, 148, 147, 147, 148, 150, 149, 150, 150, 149, 148, 148, 150, 151, 145, 146, + 147, 148, 148, 148, 146, 146, 142, 131, 132, 138, 135, 135, 136, 131, 136, 127, + 130, 138, 135, 122, 121, 132, 117, 142, 160, 154, 140, 138, 141, 143, 144, 144, + 143, 143, 142, 142, 140, 140, 144, 141, 139, 130, 124, 122, 125, 125, 120, 117, + 120, 130, 124, 124, 132, 136, 131, 127, 127, 125, 119, 131, 122, 120, 114, 96, + 117, 109, 110, 110, 109, 107, 106, 107, 108, 120, 114, 115, 122, 123, 117, 119, + 127, 128, 121, 122, 134, 144, 145, 146, 148, 147, 150, 153, 153, 151, 151, 155, + 158, 162, 161, 159, 156, 155, 155, 155, 155, 150, 149, 150, 150, 150, 150, 151, + 151, 144, 143, 143, 147, 151, 152, 149, 146, 154, 155, 155, 154, 154, 156, 156, + 157, 150, 153, 155, 152, 148, 147, 151, 158, 162, 160, 156, 153, 151, 152, 155, + 157, 151, 153, 157, 159, 160, 160, 159, 158, 151, 153, 155, 155, 155, 156, 159, + 162, 159, 156, 153, 153, 155, 156, 154, 152, 153, 151, 152, 155, 154, 151, 150, + 153, 149, 149, 150, 151, 153, 153, 151, 149, 150, 153, 153, 149, 151, 156, 157, + 155, 159, 153, 150, 151, 151, 146, 147, 153, 148, 149, 149, 149, 148, 146, 143, + 142, 144, 142, 140, 139, 139, 140, 142, 143, 140, 150, 132, 122, 133, 104, 128, + 144, 139, 148, 149, 141, 136, 133, 120, 100, 100, 111, 140, 171, 152, 147, 123, + 144, 139, 136, 141, 150, 151, 143, 141, 145, 146, 146, 146, 26, 28, 28, 27, + 25, 24, 24, 24, 24, 24, 24, 25, 25, 24, 26, 26, 27, 35, 33, 31, + 37, 33, 27, 31, 30, 31, 33, 37, 38, 38, 38, 35, 37, 35, 37, 35, + 37, 35, 37, 35, 34, 33, 36, 35, 38, 37, 39, 39, 38, 42, 42, 39, + 40, 43, 43, 41, 43, 42, 42, 41, 41, 42, 42, 43, 42, 42, 42, 43, + 43, 44, 44, 44, 43, 44, 45, 46, 46, 46, 46, 45, 45, 45, 47, 48, + 48, 49, 49, 49, 49, 49, 49, 50, 50, 51, 51, 51, 51, 51, 51, 52, + 52, 53, 53, 53, 56, 55, 54, 53, 54, 55, 57, 58, 54, 58, 54, 51, + 58, 56, 54, 59, 58, 58, 61, 60, 59, 58, 61, 62, 58, 59, 60, 61, + 61, 61, 61, 60, 55, 62, 60, 57, 62, 60, 57, 66, 63, 61, 62, 59, + 62, 62, 67, 66, 68, 68, 66, 72, 70, 62, 66, 46, 0, 16, 54, 62, + 86, 85, 101, 97, 91, 86, 75, 76, 89, 90, 86, 90, 91, 86, 86, 89, + 89, 87, 88, 91, 92, 91, 89, 89, 91, 91, 89, 88, 90, 91, 91, 91, + 91, 90, 89, 88, 92, 92, 92, 91, 91, 90, 90, 90, 92, 91, 91, 27, + 27, 27, 26, 26, 25, 25, 25, 21, 22, 24, 25, 26, 25, 27, 26, 31, + 32, 32, 31, 30, 31, 35, 38, 34, 35, 37, 38, 37, 36, 38, 39, 39, + 37, 40, 37, 38, 34, 33, 30, 37, 35, 37, 35, 37, 36, 40, 40, 40, + 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, 44, 41, + 43, 45, 44, 43, 42, 42, 43, 44, 47, 48, 45, 45, 48, 47, 42, 43, + 41, 43, 44, 44, 45, 45, 45, 49, 49, 50, 51, 51, 52, 52, 52, 52, + 56, 56, 53, 54, 57, 57, 55, 54, 54, 54, 55, 55, 56, 56, 56, 55, + 55, 59, 57, 58, 55, 58, 57, 56, 58, 60, 55, 58, 59, 61, 59, 63, + 61, 59, 60, 64, 65, 63, 61, 64, 63, 61, 60, 60, 61, 63, 64, 60, + 63, 65, 60, 62, 63, 65, 60, 70, 63, 67, 64, 72, 53, 64, 42, 0, + 19, 53, 60, 89, 87, 95, 96, 92, 91, 80, 79, 90, 90, 84, 86, 86, + 84, 84, 87, 88, 85, 85, 89, 90, 90, 90, 90, 90, 90, 90, 90, 89, + 91, 93, 93, 91, 90, 90, 91, 93, 93, 91, 90, 90, 90, 90, 90, 90, + 97, 94, 26, 26, 25, 25, 25, 24, 24, 24, 25, 25, 26, 27, 28, 28, + 29, 30, 31, 32, 32, 31, 30, 31, 35, 38, 32, 33, 36, 36, 36, 36, + 38, 37, 37, 37, 38, 38, 38, 37, 36, 36, 40, 39, 38, 37, 37, 37, + 38, 38, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, + 43, 44, 42, 43, 45, 45, 44, 42, 43, 44, 44, 48, 48, 45, 45, 48, + 47, 41, 43, 41, 42, 42, 44, 45, 45, 45, 49, 49, 50, 51, 51, 52, + 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, 54, 54, 55, 55, 55, 56, + 56, 56, 55, 58, 60, 60, 59, 58, 59, 60, 57, 60, 60, 57, 58, 61, + 62, 59, 62, 61, 60, 61, 63, 64, 63, 62, 63, 63, 62, 61, 61, 62, + 63, 63, 62, 65, 65, 62, 62, 65, 65, 62, 67, 63, 65, 63, 70, 54, + 63, 42, 0, 22, 53, 60, 87, 85, 93, 96, 90, 90, 81, 81, 90, 92, + 84, 87, 88, 85, 85, 89, 89, 86, 87, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 89, 91, 93, 93, 91, 90, 90, 91, 93, 92, 91, 90, 90, 90, + 90, 91, 90, 97, 94, 25, 24, 24, 24, 24, 23, 23, 23, 27, 27, 26, + 26, 26, 28, 30, 31, 29, 30, 32, 32, 31, 31, 35, 37, 32, 34, 36, + 36, 35, 34, 36, 37, 36, 36, 36, 36, 37, 37, 38, 39, 41, 40, 39, + 38, 37, 37, 37, 37, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, + 42, 42, 43, 43, 44, 42, 44, 46, 46, 44, 43, 44, 45, 45, 48, 49, + 46, 45, 47, 46, 40, 43, 42, 42, 42, 45, 45, 45, 45, 49, 49, 50, + 51, 51, 52, 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, 54, 55, 55, + 55, 56, 56, 56, 56, 56, 59, 61, 61, 60, 59, 60, 61, 57, 60, 60, + 58, 58, 61, 62, 59, 60, 61, 63, 62, 62, 61, 63, 64, 63, 63, 62, + 62, 62, 62, 63, 63, 63, 66, 66, 63, 63, 66, 66, 63, 65, 62, 64, + 62, 70, 56, 64, 41, 0, 22, 54, 61, 87, 85, 93, 96, 88, 89, 80, + 80, 91, 93, 86, 88, 89, 86, 86, 90, 90, 87, 88, 91, 90, 90, 90, + 90, 90, 90, 90, 90, 89, 91, 93, 93, 91, 90, 90, 91, 93, 92, 91, + 90, 90, 90, 91, 91, 90, 97, 94, 25, 25, 24, 24, 24, 24, 24, 24, + 27, 26, 24, 23, 23, 25, 28, 30, 28, 30, 33, 32, 31, 31, 35, 37, + 35, 36, 39, 38, 37, 37, 39, 40, 38, 37, 36, 35, 35, 37, 39, 40, + 40, 40, 39, 38, 38, 38, 39, 39, 40, 40, 40, 41, 41, 42, 42, 42, + 44, 43, 43, 42, 42, 43, 43, 44, 43, 45, 47, 47, 45, 44, 45, 46, + 46, 49, 49, 46, 45, 47, 46, 40, 44, 42, 42, 43, 45, 45, 46, 46, + 49, 49, 50, 51, 51, 52, 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, + 55, 55, 55, 56, 56, 56, 57, 57, 57, 59, 61, 62, 60, 60, 60, 62, + 57, 60, 61, 58, 58, 62, 62, 59, 59, 62, 64, 63, 61, 60, 62, 65, + 63, 63, 63, 62, 62, 63, 63, 63, 62, 65, 65, 62, 62, 65, 65, 62, + 64, 62, 63, 61, 70, 57, 65, 39, 0, 23, 55, 61, 87, 85, 93, 96, + 89, 90, 81, 80, 90, 92, 85, 87, 88, 85, 86, 89, 89, 87, 87, 90, + 91, 91, 90, 90, 90, 90, 89, 89, 89, 91, 93, 93, 91, 90, 90, 91, + 92, 92, 91, 90, 90, 90, 91, 92, 90, 97, 94, 25, 25, 26, 26, 26, + 26, 26, 26, 28, 27, 25, 23, 24, 25, 28, 29, 27, 29, 31, 31, 32, + 31, 32, 34, 35, 37, 38, 38, 38, 38, 39, 41, 40, 39, 37, 35, 35, + 36, 37, 38, 37, 37, 37, 38, 39, 40, 42, 43, 40, 40, 40, 41, 41, + 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, 44, 43, 45, 47, 47, 45, + 44, 45, 46, 45, 48, 49, 46, 45, 47, 46, 40, 44, 42, 43, 43, 45, + 46, 46, 46, 49, 49, 50, 51, 51, 52, 52, 52, 52, 56, 56, 53, 54, + 57, 57, 55, 55, 55, 56, 56, 56, 57, 57, 57, 57, 59, 61, 62, 60, + 60, 60, 62, 58, 61, 61, 59, 59, 62, 63, 60, 59, 62, 64, 63, 61, + 60, 62, 65, 63, 63, 63, 64, 64, 63, 63, 63, 61, 64, 64, 61, 61, + 64, 64, 61, 63, 62, 64, 60, 70, 59, 64, 36, 0, 24, 55, 62, 88, + 85, 92, 96, 91, 92, 82, 81, 90, 91, 83, 85, 87, 84, 84, 88, 88, + 85, 86, 89, 91, 91, 91, 90, 90, 89, 89, 89, 89, 91, 93, 93, 91, + 90, 90, 91, 92, 91, 90, 90, 90, 91, 92, 92, 90, 97, 94, 25, 26, + 26, 26, 26, 27, 27, 27, 30, 29, 28, 27, 27, 28, 30, 30, 27, 29, + 31, 31, 32, 32, 32, 33, 33, 35, 36, 36, 36, 36, 37, 39, 39, 38, + 37, 37, 36, 36, 36, 36, 36, 37, 37, 38, 40, 42, 43, 44, 40, 40, + 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, 44, 42, 44, + 46, 46, 44, 43, 44, 45, 44, 47, 48, 45, 45, 48, 47, 42, 45, 43, + 43, 43, 46, 46, 46, 47, 49, 49, 50, 51, 51, 52, 52, 52, 52, 56, + 56, 53, 54, 57, 57, 55, 56, 56, 56, 56, 57, 57, 57, 58, 56, 59, + 61, 61, 60, 59, 60, 61, 58, 61, 62, 59, 59, 63, 63, 60, 60, 61, + 63, 62, 62, 61, 63, 64, 63, 63, 64, 64, 64, 64, 63, 63, 60, 63, + 63, 60, 60, 63, 63, 60, 64, 63, 64, 59, 69, 59, 64, 32, 0, 25, + 56, 62, 88, 85, 92, 96, 92, 92, 83, 81, 90, 90, 82, 84, 86, 83, + 84, 87, 87, 85, 85, 88, 92, 92, 91, 90, 90, 89, 88, 88, 89, 91, + 93, 93, 91, 90, 90, 91, 91, 91, 90, 90, 90, 91, 92, 93, 90, 97, + 94, 24, 24, 25, 25, 25, 26, 26, 26, 29, 29, 29, 29, 29, 29, 29, + 29, 24, 27, 31, 32, 31, 30, 32, 33, 32, 33, 37, 36, 35, 35, 36, + 38, 36, 36, 37, 38, 38, 38, 37, 37, 38, 38, 38, 39, 40, 41, 42, + 43, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, 42, 43, 43, + 44, 42, 43, 45, 45, 44, 42, 43, 44, 42, 46, 47, 45, 46, 49, 49, + 44, 45, 43, 43, 44, 46, 46, 47, 47, 49, 49, 50, 51, 51, 52, 52, + 52, 52, 56, 56, 53, 54, 57, 57, 55, 56, 56, 56, 57, 57, 57, 58, + 58, 55, 58, 60, 60, 59, 58, 59, 60, 58, 61, 62, 59, 60, 63, 63, + 60, 62, 61, 60, 61, 63, 64, 63, 62, 63, 63, 64, 65, 65, 64, 63, + 63, 61, 64, 64, 61, 61, 64, 64, 61, 65, 65, 65, 58, 69, 60, 62, + 28, 0, 26, 57, 63, 88, 85, 92, 95, 91, 91, 82, 81, 90, 91, 83, + 86, 87, 84, 85, 88, 88, 86, 86, 89, 92, 92, 91, 90, 90, 89, 88, + 88, 89, 91, 93, 93, 91, 90, 90, 91, 91, 90, 90, 90, 90, 91, 92, + 93, 90, 97, 94, 23, 23, 23, 24, 24, 25, 25, 25, 26, 27, 27, 28, + 28, 27, 26, 26, 24, 27, 31, 32, 31, 30, 32, 33, 34, 36, 39, 39, + 38, 37, 39, 40, 32, 33, 36, 38, 39, 40, 39, 39, 40, 40, 39, 39, + 39, 40, 41, 41, 40, 40, 40, 41, 41, 42, 42, 42, 44, 43, 43, 42, + 42, 43, 43, 44, 41, 43, 45, 44, 43, 42, 42, 43, 41, 45, 46, 45, + 46, 50, 50, 45, 45, 43, 43, 44, 46, 47, 47, 47, 49, 49, 50, 51, + 51, 52, 52, 52, 52, 56, 56, 53, 54, 57, 57, 55, 56, 56, 56, 57, + 57, 58, 58, 58, 55, 57, 59, 59, 58, 57, 58, 59, 58, 62, 62, 59, + 60, 63, 63, 61, 63, 61, 59, 60, 64, 65, 63, 61, 62, 63, 65, 66, + 66, 65, 63, 62, 63, 66, 66, 63, 63, 66, 66, 63, 65, 66, 66, 58, + 69, 60, 62, 26, 0, 26, 57, 63, 88, 85, 92, 95, 88, 89, 80, 80, + 90, 92, 85, 88, 88, 86, 86, 89, 90, 87, 87, 91, 92, 92, 91, 90, + 90, 89, 88, 88, 89, 91, 93, 93, 91, 90, 90, 91, 90, 90, 90, 90, + 90, 91, 93, 93, 90, 97, 94, 27, 27, 28, 28, 28, 27, 26, 26, 28, + 27, 26, 27, 29, 30, 29, 28, 28, 28, 28, 28, 28, 28, 30, 30, 34, + 35, 35, 36, 38, 37, 37, 36, 38, 35, 35, 38, 38, 35, 35, 38, 41, + 40, 40, 40, 40, 41, 42, 43, 45, 44, 42, 40, 39, 39, 40, 40, 43, + 44, 45, 46, 46, 44, 43, 42, 44, 43, 43, 43, 43, 44, 45, 46, 50, + 49, 47, 46, 45, 45, 46, 45, 46, 44, 44, 45, 47, 48, 48, 48, 50, + 50, 52, 52, 52, 53, 53, 53, 57, 56, 55, 55, 57, 57, 56, 55, 61, + 55, 58, 60, 54, 57, 62, 57, 59, 59, 59, 60, 60, 61, 61, 61, 62, + 61, 61, 61, 61, 61, 60, 60, 66, 65, 63, 63, 63, 63, 65, 66, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 66, 65, 61, 61, 65, 66, 64, 71, + 63, 68, 65, 67, 56, 61, 22, 0, 29, 60, 63, 89, 89, 96, 97, 96, + 87, 82, 86, 89, 90, 86, 86, 88, 86, 87, 89, 88, 84, 85, 89, 93, + 92, 90, 88, 86, 85, 85, 84, 89, 93, 94, 91, 91, 93, 91, 87, 96, + 94, 90, 87, 87, 89, 92, 94, 89, 98, 96, 27, 27, 27, 28, 27, 27, + 27, 26, 28, 27, 26, 27, 29, 30, 29, 28, 28, 28, 28, 28, 28, 28, + 30, 30, 34, 35, 35, 36, 38, 37, 37, 36, 39, 36, 36, 39, 39, 36, + 36, 39, 41, 40, 40, 40, 40, 41, 42, 43, 40, 40, 40, 40, 41, 42, + 43, 44, 43, 44, 44, 45, 45, 44, 44, 43, 44, 44, 43, 43, 44, 44, + 45, 46, 48, 47, 46, 46, 46, 47, 48, 47, 46, 44, 44, 45, 47, 48, + 48, 48, 50, 50, 51, 51, 52, 52, 52, 53, 56, 55, 53, 54, 56, 56, + 55, 54, 60, 54, 58, 60, 54, 57, 61, 56, 59, 59, 59, 60, 60, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 63, 62, 61, 61, 61, 61, + 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 63, 66, 65, 62, 62, 65, + 66, 63, 67, 61, 66, 63, 68, 58, 63, 24, 0, 29, 60, 63, 89, 89, + 96, 97, 96, 87, 82, 86, 89, 90, 86, 86, 88, 86, 87, 89, 88, 84, + 85, 90, 91, 91, 90, 89, 88, 88, 89, 89, 90, 93, 93, 90, 90, 92, + 91, 88, 95, 93, 90, 88, 88, 89, 91, 93, 93, 97, 93, 27, 27, 27, + 27, 27, 27, 27, 27, 28, 27, 26, 27, 29, 30, 29, 28, 28, 26, 26, + 26, 28, 29, 29, 29, 32, 33, 35, 36, 36, 35, 35, 34, 39, 36, 36, + 39, 39, 36, 36, 39, 41, 40, 40, 40, 40, 41, 42, 43, 39, 39, 40, + 42, 43, 43, 43, 43, 44, 44, 44, 43, 43, 44, 44, 45, 44, 44, 43, + 43, 44, 45, 46, 46, 46, 46, 45, 46, 47, 48, 49, 48, 46, 44, 44, + 45, 47, 48, 48, 48, 49, 49, 50, 51, 51, 52, 52, 52, 55, 54, 53, + 53, 55, 56, 54, 53, 60, 54, 57, 59, 53, 56, 61, 56, 59, 59, 59, + 60, 60, 61, 61, 61, 60, 60, 60, 61, 62, 62, 63, 63, 63, 62, 62, + 61, 61, 62, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 62, 65, 66, + 63, 63, 66, 65, 62, 64, 59, 64, 62, 68, 61, 66, 24, 0, 30, 61, + 64, 89, 89, 96, 96, 96, 87, 82, 86, 89, 90, 86, 86, 88, 86, 87, + 90, 88, 85, 86, 90, 89, 89, 89, 89, 90, 91, 92, 93, 91, 94, 93, + 89, 89, 92, 92, 89, 93, 92, 91, 90, 90, 90, 91, 91, 95, 97, 90, + 27, 27, 26, 26, 27, 27, 28, 28, 28, 27, 26, 27, 29, 30, 29, 26, + 28, 26, 26, 27, 29, 29, 29, 30, 32, 33, 35, 36, 36, 35, 35, 34, + 39, 36, 36, 39, 39, 36, 36, 39, 41, 40, 40, 40, 40, 41, 42, 43, + 41, 42, 43, 44, 43, 42, 40, 39, 45, 44, 43, 42, 42, 44, 45, 46, + 45, 44, 44, 44, 44, 45, 46, 47, 46, 46, 46, 46, 47, 48, 48, 47, + 46, 44, 44, 45, 47, 48, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, + 56, 55, 54, 54, 56, 56, 55, 54, 59, 54, 57, 59, 53, 56, 60, 56, + 59, 59, 59, 60, 60, 61, 61, 61, 59, 60, 60, 61, 62, 63, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, + 61, 65, 66, 64, 64, 66, 65, 61, 63, 59, 64, 61, 68, 62, 66, 21, + 0, 30, 61, 64, 90, 89, 96, 96, 96, 87, 82, 86, 89, 90, 86, 86, + 87, 86, 87, 90, 89, 85, 87, 91, 89, 89, 88, 89, 89, 90, 92, 92, + 92, 94, 92, 88, 88, 91, 92, 90, 91, 92, 92, 92, 91, 91, 90, 89, + 94, 97, 91, 27, 26, 26, 26, 26, 27, 29, 29, 28, 27, 26, 27, 29, + 30, 29, 26, 28, 26, 26, 27, 27, 28, 30, 31, 32, 33, 33, 34, 36, + 35, 35, 34, 40, 37, 37, 40, 40, 37, 37, 40, 41, 40, 40, 40, 40, + 41, 42, 43, 41, 42, 43, 44, 44, 43, 41, 40, 44, 44, 43, 42, 43, + 44, 46, 47, 45, 45, 44, 44, 45, 45, 46, 47, 48, 48, 48, 48, 47, + 46, 46, 43, 46, 44, 44, 45, 47, 48, 48, 48, 49, 49, 50, 51, 51, + 52, 52, 52, 58, 57, 56, 56, 58, 58, 57, 56, 60, 54, 57, 59, 53, + 56, 61, 56, 59, 59, 59, 60, 60, 61, 61, 61, 60, 60, 61, 62, 63, + 64, 64, 65, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, + 65, 65, 65, 61, 65, 66, 64, 64, 66, 65, 61, 65, 62, 66, 60, 67, + 62, 63, 16, 0, 31, 62, 65, 90, 89, 96, 96, 96, 87, 82, 86, 89, + 90, 86, 86, 87, 86, 87, 90, 89, 86, 88, 92, 90, 89, 88, 88, 87, + 88, 88, 88, 92, 94, 92, 88, 88, 91, 92, 90, 91, 91, 92, 92, 92, + 91, 90, 89, 90, 98, 95, 27, 26, 25, 25, 26, 27, 29, 31, 28, 27, + 26, 27, 29, 30, 29, 26, 28, 26, 27, 27, 28, 29, 31, 31, 32, 33, + 33, 34, 36, 35, 35, 34, 40, 37, 37, 40, 40, 37, 37, 40, 41, 40, + 40, 40, 40, 41, 42, 43, 38, 39, 41, 43, 44, 45, 46, 46, 43, 43, + 43, 43, 44, 45, 46, 47, 45, 45, 45, 45, 45, 46, 47, 47, 48, 48, + 49, 48, 47, 46, 45, 42, 46, 44, 44, 45, 47, 48, 48, 48, 50, 50, + 52, 52, 52, 53, 53, 53, 59, 58, 56, 57, 59, 59, 58, 57, 61, 55, + 58, 60, 54, 57, 62, 57, 59, 59, 59, 60, 60, 61, 61, 61, 61, 61, + 62, 62, 63, 64, 64, 64, 61, 62, 62, 63, 63, 62, 62, 61, 66, 66, + 66, 66, 66, 66, 66, 66, 62, 65, 66, 63, 63, 66, 65, 62, 66, 64, + 67, 60, 67, 62, 62, 11, 0, 32, 63, 65, 90, 89, 96, 96, 96, 87, + 82, 86, 89, 90, 86, 86, 87, 86, 87, 91, 90, 87, 88, 93, 91, 90, + 89, 87, 86, 86, 86, 86, 91, 94, 93, 89, 89, 92, 92, 89, 91, 92, + 92, 92, 92, 91, 90, 89, 89, 98, 97, 27, 26, 25, 24, 25, 27, 30, + 31, 28, 27, 26, 27, 29, 30, 29, 26, 28, 26, 27, 27, 28, 29, 32, + 32, 30, 31, 33, 34, 34, 33, 35, 34, 40, 37, 37, 40, 40, 37, 37, + 40, 41, 40, 40, 40, 40, 41, 42, 43, 39, 40, 40, 41, 43, 45, 47, + 48, 41, 42, 43, 44, 45, 46, 46, 46, 46, 45, 45, 45, 45, 46, 47, + 48, 46, 47, 48, 48, 48, 47, 46, 43, 46, 44, 44, 45, 47, 48, 48, + 48, 51, 51, 53, 53, 54, 54, 54, 54, 58, 57, 56, 56, 58, 59, 57, + 56, 62, 56, 60, 61, 56, 58, 63, 58, 59, 59, 59, 60, 60, 61, 61, + 61, 62, 63, 63, 63, 63, 63, 63, 63, 61, 61, 62, 63, 63, 62, 61, + 61, 66, 66, 66, 66, 66, 66, 66, 66, 63, 66, 65, 62, 62, 65, 66, + 63, 66, 64, 67, 59, 67, 63, 62, 9, 0, 33, 63, 66, 90, 89, 96, + 96, 96, 87, 82, 86, 89, 90, 86, 86, 87, 86, 87, 91, 90, 87, 89, + 94, 92, 91, 90, 88, 88, 87, 87, 87, 90, 93, 93, 90, 90, 92, 91, + 88, 92, 92, 92, 91, 91, 90, 90, 90, 91, 98, 94, 27, 26, 25, 24, + 25, 27, 30, 32, 28, 27, 26, 27, 29, 30, 29, 28, 28, 26, 27, 28, + 29, 29, 32, 33, 30, 31, 33, 34, 34, 33, 33, 34, 39, 38, 38, 41, + 41, 38, 38, 41, 41, 40, 40, 40, 40, 41, 42, 43, 44, 43, 42, 41, + 41, 43, 44, 45, 40, 41, 43, 45, 46, 46, 45, 45, 46, 45, 45, 45, + 45, 46, 47, 48, 44, 45, 47, 48, 49, 49, 48, 47, 46, 44, 44, 45, + 47, 48, 48, 48, 52, 52, 54, 54, 54, 55, 55, 55, 57, 56, 55, 55, + 57, 57, 56, 55, 63, 57, 61, 62, 56, 59, 64, 57, 57, 57, 57, 58, + 58, 59, 59, 59, 62, 64, 63, 63, 63, 63, 63, 62, 63, 63, 65, 66, + 66, 65, 63, 63, 66, 66, 66, 66, 66, 66, 68, 66, 64, 66, 65, 61, + 61, 65, 66, 64, 64, 63, 66, 58, 69, 67, 65, 9, 0, 33, 64, 64, + 90, 87, 96, 94, 96, 86, 82, 86, 89, 90, 88, 88, 87, 86, 88, 91, + 90, 88, 89, 94, 92, 91, 90, 89, 89, 89, 90, 90, 89, 93, 94, 91, + 91, 93, 91, 87, 93, 92, 91, 90, 90, 90, 91, 91, 93, 95, 90, 27, + 27, 27, 28, 28, 29, 29, 29, 30, 29, 29, 29, 29, 30, 31, 30, 27, + 27, 27, 28, 28, 29, 29, 29, 31, 31, 31, 32, 32, 33, 33, 35, 35, + 36, 37, 38, 38, 38, 38, 37, 36, 37, 39, 39, 37, 37, 39, 42, 42, + 43, 43, 44, 44, 45, 45, 45, 47, 47, 47, 46, 46, 45, 45, 45, 44, + 51, 48, 45, 49, 46, 43, 50, 45, 49, 48, 44, 44, 51, 53, 50, 47, + 48, 48, 49, 49, 48, 50, 49, 50, 58, 56, 52, 57, 54, 51, 59, 49, + 54, 55, 53, 54, 58, 54, 46, 62, 58, 57, 59, 59, 56, 56, 59, 57, + 54, 55, 55, 56, 57, 58, 58, 57, 59, 60, 60, 63, 62, 62, 62, 61, + 63, 64, 64, 64, 64, 65, 66, 66, 67, 67, 66, 65, 66, 70, 71, 61, + 64, 66, 65, 62, 60, 63, 65, 68, 60, 68, 63, 66, 63, 66, 7, 1, + 38, 59, 68, 82, 89, 90, 91, 95, 83, 79, 86, 93, 90, 88, 91, 90, + 86, 86, 89, 90, 87, 87, 91, 88, 90, 92, 91, 89, 88, 90, 92, 90, + 94, 94, 91, 90, 92, 91, 87, 93, 92, 91, 90, 90, 90, 90, 91, 89, + 88, 91, 27, 27, 28, 28, 28, 29, 29, 29, 31, 31, 30, 30, 31, 32, + 33, 31, 29, 27, 28, 28, 28, 29, 29, 29, 31, 31, 31, 32, 32, 33, + 33, 33, 36, 36, 36, 37, 37, 38, 38, 38, 36, 38, 39, 39, 38, 37, + 39, 40, 43, 43, 43, 44, 44, 45, 45, 45, 47, 47, 47, 46, 46, 45, + 45, 45, 44, 51, 48, 45, 49, 46, 43, 50, 45, 48, 48, 45, 46, 51, + 52, 49, 48, 48, 48, 48, 48, 48, 50, 50, 44, 52, 51, 49, 55, 52, + 50, 58, 50, 52, 52, 49, 51, 55, 54, 49, 57, 53, 52, 54, 53, 49, + 49, 51, 52, 50, 53, 54, 55, 54, 55, 53, 59, 59, 61, 61, 64, 64, + 64, 65, 60, 61, 62, 61, 61, 61, 62, 64, 66, 67, 67, 66, 67, 68, + 70, 71, 64, 65, 67, 66, 63, 61, 64, 65, 70, 63, 72, 66, 66, 62, + 65, 6, 2, 37, 59, 66, 82, 89, 88, 91, 92, 81, 78, 85, 92, 89, + 89, 90, 90, 86, 86, 89, 90, 87, 87, 91, 88, 90, 92, 91, 89, 88, + 90, 92, 89, 93, 93, 90, 90, 92, 92, 88, 93, 92, 91, 90, 90, 90, + 90, 91, 89, 90, 90, 27, 28, 28, 28, 29, 29, 29, 29, 32, 32, 32, + 32, 32, 33, 34, 32, 29, 28, 28, 28, 29, 29, 29, 29, 31, 31, 31, + 32, 32, 33, 33, 33, 37, 37, 36, 35, 36, 37, 39, 40, 36, 38, 39, + 39, 38, 38, 39, 41, 43, 43, 43, 44, 44, 45, 45, 45, 47, 47, 46, + 46, 46, 46, 45, 45, 44, 51, 48, 45, 49, 46, 43, 50, 45, 48, 49, + 47, 48, 51, 51, 48, 50, 47, 47, 46, 46, 47, 51, 52, 47, 54, 53, + 50, 55, 53, 50, 57, 58, 58, 56, 54, 56, 61, 61, 59, 62, 59, 58, + 60, 60, 57, 58, 60, 50, 50, 53, 54, 54, 53, 54, 53, 60, 60, 60, + 59, 61, 61, 62, 62, 62, 62, 63, 62, 61, 62, 67, 69, 64, 65, 67, + 67, 68, 68, 70, 70, 66, 66, 67, 67, 65, 63, 66, 66, 73, 65, 74, + 68, 67, 62, 64, 4, 2, 37, 59, 67, 82, 89, 88, 91, 90, 79, 77, + 84, 92, 89, 88, 90, 90, 86, 86, 89, 90, 87, 87, 91, 89, 90, 91, + 91, 89, 89, 90, 91, 88, 92, 92, 90, 90, 93, 93, 89, 93, 92, 91, + 90, 90, 90, 90, 91, 91, 91, 91, 28, 28, 28, 29, 29, 29, 30, 30, + 32, 32, 32, 31, 32, 33, 34, 34, 30, 28, 28, 29, 29, 29, 30, 30, + 31, 31, 31, 32, 32, 33, 33, 35, 38, 37, 35, 34, 35, 37, 39, 41, + 37, 38, 40, 39, 38, 38, 39, 41, 43, 43, 43, 44, 44, 45, 45, 45, + 46, 46, 46, 46, 46, 46, 46, 46, 44, 51, 48, 45, 49, 46, 43, 50, + 45, 47, 49, 50, 50, 51, 50, 46, 51, 47, 47, 45, 45, 47, 51, 53, + 52, 58, 55, 52, 57, 54, 50, 55, 51, 50, 49, 49, 52, 54, 54, 53, + 56, 53, 53, 56, 57, 56, 57, 60, 54, 53, 55, 55, 54, 54, 57, 58, + 61, 60, 60, 59, 61, 61, 62, 60, 61, 62, 62, 62, 61, 63, 69, 72, + 63, 65, 68, 67, 68, 68, 70, 70, 65, 66, 67, 67, 66, 66, 67, 67, + 72, 65, 74, 68, 67, 63, 65, 4, 3, 38, 60, 67, 82, 89, 88, 91, + 89, 78, 76, 84, 91, 88, 88, 90, 90, 86, 86, 89, 90, 87, 87, 91, + 90, 90, 90, 90, 90, 90, 90, 90, 87, 91, 92, 90, 91, 94, 94, 90, + 93, 92, 91, 90, 90, 90, 90, 91, 91, 91, 90, 28, 28, 29, 29, 29, + 30, 30, 30, 31, 31, 31, 31, 31, 32, 33, 33, 30, 30, 31, 31, 31, + 32, 32, 32, 33, 33, 33, 34, 34, 35, 35, 35, 38, 37, 35, 34, 35, + 37, 39, 41, 37, 39, 40, 40, 39, 38, 40, 41, 43, 43, 43, 44, 44, + 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 44, 51, 48, 45, 49, + 46, 43, 50, 47, 47, 49, 51, 52, 50, 49, 47, 51, 47, 45, 43, 45, + 47, 49, 51, 51, 55, 51, 49, 56, 54, 49, 54, 53, 53, 54, 57, 59, + 58, 55, 54, 58, 54, 53, 56, 56, 53, 53, 56, 53, 51, 50, 48, 48, + 49, 53, 56, 53, 54, 55, 57, 59, 61, 62, 63, 61, 61, 61, 59, 59, + 59, 62, 64, 62, 64, 68, 68, 67, 66, 67, 69, 66, 66, 66, 67, 67, + 67, 68, 67, 69, 62, 73, 68, 68, 64, 65, 5, 4, 39, 61, 68, 83, + 89, 88, 91, 89, 78, 76, 83, 91, 89, 88, 90, 90, 86, 86, 89, 90, + 87, 87, 91, 90, 90, 90, 90, 90, 90, 90, 90, 87, 91, 92, 90, 91, + 94, 94, 90, 93, 92, 91, 90, 90, 90, 90, 91, 89, 89, 89, 29, 29, + 29, 29, 30, 30, 30, 31, 31, 31, 30, 30, 31, 32, 33, 33, 31, 31, + 31, 31, 32, 32, 32, 33, 33, 33, 33, 34, 34, 35, 35, 35, 37, 37, + 36, 35, 36, 37, 39, 40, 37, 39, 40, 40, 39, 39, 40, 42, 42, 43, + 43, 44, 44, 45, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 44, 51, + 48, 45, 49, 46, 43, 50, 50, 48, 48, 52, 52, 49, 48, 48, 48, 47, + 45, 44, 46, 47, 49, 50, 51, 55, 50, 48, 57, 56, 51, 55, 52, 50, + 52, 57, 58, 54, 51, 50, 52, 48, 46, 47, 45, 40, 39, 41, 34, 33, + 32, 29, 28, 29, 33, 38, 33, 35, 39, 43, 47, 50, 52, 53, 62, 63, + 64, 63, 61, 60, 60, 61, 62, 64, 68, 68, 67, 67, 67, 68, 66, 65, + 65, 66, 68, 68, 69, 67, 67, 61, 72, 68, 68, 63, 64, 4, 5, 40, + 62, 68, 83, 89, 88, 91, 89, 78, 76, 84, 92, 90, 89, 92, 90, 86, + 86, 89, 90, 87, 87, 91, 91, 90, 89, 89, 91, 91, 90, 89, 88, 92, + 92, 90, 90, 93, 93, 89, 93, 92, 91, 90, 90, 90, 90, 91, 89, 88, + 88, 29, 29, 29, 30, 30, 30, 31, 31, 32, 32, 32, 32, 32, 33, 34, + 35, 31, 31, 31, 32, 32, 32, 33, 33, 33, 33, 33, 34, 34, 35, 35, + 35, 36, 36, 36, 37, 37, 38, 38, 38, 38, 39, 41, 40, 39, 39, 40, + 42, 42, 42, 42, 43, 43, 44, 44, 44, 44, 44, 44, 45, 45, 46, 46, + 46, 44, 51, 48, 45, 49, 46, 43, 50, 53, 48, 48, 51, 51, 48, 48, + 50, 46, 44, 46, 46, 46, 46, 48, 48, 49, 52, 47, 43, 50, 47, 40, + 42, 29, 24, 23, 28, 29, 24, 21, 23, 27, 23, 21, 23, 21, 18, 17, + 20, 17, 21, 24, 23, 19, 17, 22, 25, 20, 23, 27, 30, 33, 33, 32, + 31, 49, 53, 57, 60, 60, 60, 62, 63, 59, 62, 66, 67, 68, 67, 67, + 68, 65, 64, 63, 65, 68, 68, 69, 66, 67, 61, 72, 67, 67, 61, 61, + 0, 6, 40, 62, 69, 83, 90, 87, 91, 89, 79, 77, 85, 93, 91, 91, + 93, 90, 86, 86, 89, 90, 87, 87, 91, 92, 90, 88, 89, 91, 92, 90, + 88, 89, 93, 93, 90, 90, 92, 92, 88, 93, 92, 91, 90, 90, 90, 90, + 91, 93, 92, 91, 29, 29, 29, 30, 30, 31, 31, 31, 34, 34, 33, 33, + 33, 34, 35, 36, 31, 31, 31, 32, 32, 33, 33, 33, 33, 33, 33, 34, + 34, 35, 35, 35, 35, 36, 37, 38, 38, 38, 38, 37, 38, 39, 41, 41, + 39, 39, 41, 42, 42, 42, 42, 43, 43, 44, 44, 44, 44, 44, 44, 45, + 45, 46, 46, 46, 44, 51, 48, 45, 49, 46, 43, 50, 54, 49, 47, 51, + 50, 47, 48, 52, 45, 44, 46, 47, 47, 46, 48, 47, 45, 46, 38, 32, + 35, 29, 20, 20, 27, 19, 16, 20, 20, 16, 15, 18, 26, 23, 23, 27, + 28, 26, 28, 31, 18, 24, 30, 31, 27, 23, 25, 26, 25, 27, 29, 30, + 29, 25, 21, 18, 26, 32, 41, 48, 53, 56, 60, 62, 59, 62, 66, 67, + 68, 67, 67, 68, 65, 63, 62, 64, 67, 68, 68, 65, 69, 62, 73, 67, + 65, 59, 58, 0, 6, 41, 62, 69, 83, 90, 87, 91, 90, 79, 77, 85, + 94, 92, 92, 94, 90, 86, 86, 89, 90, 87, 87, 91, 92, 90, 88, 89, + 91, 92, 90, 88, 90, 94, 94, 91, 90, 92, 91, 87, 93, 92, 91, 90, + 90, 90, 90, 91, 95, 94, 92, 30, 32, 33, 32, 30, 29, 30, 32, 30, + 31, 33, 35, 35, 35, 34, 33, 32, 31, 29, 29, 30, 32, 35, 37, 38, + 37, 36, 34, 34, 35, 36, 37, 40, 38, 36, 37, 41, 42, 40, 38, 38, + 39, 41, 41, 39, 39, 41, 42, 42, 43, 43, 44, 44, 43, 43, 42, 38, + 41, 44, 44, 41, 40, 41, 44, 49, 48, 48, 48, 48, 49, 50, 51, 44, + 48, 51, 50, 46, 44, 45, 45, 43, 37, 41, 42, 32, 32, 37, 32, 20, + 20, 13, 12, 20, 15, 12, 21, 20, 16, 20, 21, 16, 23, 27, 17, 33, + 30, 28, 30, 29, 25, 25, 28, 22, 33, 31, 38, 31, 21, 37, 42, 42, + 35, 37, 19, 32, 20, 26, 14, 18, 24, 24, 19, 29, 50, 64, 66, 62, + 68, 63, 59, 65, 64, 63, 71, 64, 64, 65, 66, 66, 67, 70, 70, 70, + 64, 73, 65, 66, 65, 65, 1, 5, 46, 59, 72, 87, 86, 92, 89, 91, + 74, 76, 88, 91, 92, 96, 92, 89, 90, 83, 92, 92, 83, 90, 87, 89, + 89, 90, 90, 90, 89, 88, 88, 91, 92, 92, 93, 93, 92, 92, 91, 93, + 92, 92, 91, 91, 92, 92, 93, 88, 90, 91, 27, 29, 30, 29, 27, 27, + 28, 29, 32, 33, 33, 33, 33, 32, 32, 31, 34, 33, 32, 32, 33, 35, + 37, 38, 37, 36, 36, 35, 35, 36, 36, 37, 40, 38, 36, 38, 40, 42, + 40, 38, 38, 39, 41, 41, 39, 39, 41, 42, 42, 42, 43, 43, 43, 43, + 42, 42, 44, 46, 47, 46, 43, 42, 43, 45, 47, 47, 47, 47, 47, 47, + 47, 47, 44, 46, 50, 51, 50, 48, 47, 45, 45, 32, 27, 22, 11, 11, + 18, 13, 12, 17, 16, 18, 26, 22, 20, 31, 23, 20, 24, 24, 19, 25, + 28, 19, 37, 33, 32, 34, 33, 30, 30, 33, 26, 31, 23, 32, 31, 23, + 35, 35, 29, 26, 30, 16, 28, 21, 28, 20, 20, 20, 20, 21, 25, 30, + 43, 54, 69, 70, 62, 60, 71, 71, 65, 68, 67, 66, 66, 66, 66, 66, + 68, 68, 71, 66, 75, 67, 66, 63, 62, 0, 6, 46, 60, 72, 87, 86, + 92, 89, 91, 74, 77, 88, 91, 92, 96, 92, 89, 90, 83, 92, 92, 83, + 90, 87, 88, 89, 89, 90, 90, 89, 89, 88, 91, 92, 92, 93, 93, 92, + 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, 89, 91, 92, 27, 28, 29, + 29, 27, 27, 28, 30, 34, 33, 32, 31, 30, 30, 30, 30, 35, 35, 35, + 36, 37, 38, 38, 39, 37, 38, 38, 39, 39, 38, 38, 38, 39, 38, 37, + 38, 40, 41, 40, 39, 38, 39, 41, 41, 39, 39, 41, 42, 41, 41, 42, + 42, 42, 42, 41, 41, 47, 47, 47, 46, 43, 43, 44, 45, 45, 46, 47, + 48, 48, 48, 48, 48, 51, 50, 48, 47, 44, 39, 33, 27, 29, 15, 11, + 10, 6, 10, 15, 9, 6, 14, 17, 21, 27, 22, 21, 32, 24, 21, 25, + 24, 18, 23, 27, 19, 29, 25, 25, 27, 27, 24, 25, 28, 29, 28, 15, + 25, 29, 23, 30, 26, 17, 19, 25, 14, 20, 16, 24, 20, 23, 16, 18, + 24, 20, 13, 23, 39, 58, 65, 65, 64, 69, 66, 64, 71, 69, 68, 68, + 67, 66, 65, 67, 66, 71, 67, 77, 69, 67, 63, 59, 0, 7, 47, 60, + 72, 86, 86, 92, 89, 90, 75, 78, 89, 91, 91, 95, 91, 89, 90, 83, + 92, 92, 83, 90, 87, 88, 88, 89, 90, 90, 89, 89, 88, 91, 92, 92, + 93, 93, 92, 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, 92, 94, 95, + 30, 31, 33, 32, 31, 31, 32, 34, 33, 32, 30, 29, 29, 30, 31, 32, + 32, 33, 34, 35, 36, 36, 35, 35, 36, 37, 38, 40, 40, 39, 38, 37, + 38, 38, 38, 39, 39, 40, 40, 40, 38, 39, 41, 41, 39, 39, 41, 42, + 40, 41, 41, 42, 42, 41, 41, 40, 44, 44, 43, 42, 42, 42, 43, 44, + 47, 47, 49, 50, 50, 49, 48, 48, 47, 42, 36, 32, 29, 25, 19, 12, + 15, 5, 8, 15, 17, 21, 21, 10, 12, 15, 13, 15, 23, 19, 15, 24, + 21, 19, 23, 22, 14, 18, 23, 15, 18, 15, 14, 17, 17, 15, 16, 19, + 27, 25, 11, 20, 24, 18, 25, 20, 17, 21, 24, 17, 14, 14, 18, 18, + 26, 20, 21, 24, 22, 17, 21, 27, 32, 52, 65, 65, 63, 57, 61, 76, + 68, 68, 67, 67, 67, 66, 68, 68, 69, 66, 77, 70, 69, 63, 58, 0, + 8, 48, 60, 72, 86, 86, 92, 90, 90, 75, 79, 90, 91, 90, 94, 91, + 89, 90, 83, 92, 92, 83, 90, 87, 87, 88, 89, 90, 90, 90, 89, 89, + 91, 92, 92, 93, 93, 92, 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, + 93, 95, 95, 30, 32, 34, 33, 32, 32, 34, 35, 30, 29, 29, 29, 30, + 32, 34, 35, 33, 34, 35, 36, 36, 36, 35, 35, 35, 36, 38, 39, 40, + 39, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 38, 39, 41, 41, 39, + 39, 41, 42, 38, 39, 39, 40, 40, 39, 39, 38, 40, 40, 39, 40, 41, + 42, 42, 44, 49, 49, 47, 45, 43, 40, 38, 37, 29, 23, 17, 16, 18, + 20, 20, 17, 21, 11, 13, 18, 15, 17, 17, 5, 21, 16, 6, 7, 20, + 19, 14, 19, 17, 16, 21, 19, 10, 14, 19, 13, 15, 12, 12, 14, 15, + 12, 13, 19, 21, 26, 16, 23, 20, 11, 21, 20, 19, 25, 22, 19, 13, + 17, 15, 16, 23, 25, 22, 18, 24, 31, 28, 19, 18, 36, 47, 54, 62, + 61, 61, 71, 66, 66, 67, 67, 67, 68, 70, 70, 67, 64, 76, 70, 69, + 63, 58, 0, 10, 49, 61, 72, 86, 86, 93, 90, 89, 76, 81, 91, 91, + 89, 93, 91, 89, 90, 83, 92, 92, 83, 90, 87, 87, 88, 89, 90, 90, + 90, 90, 90, 91, 92, 92, 93, 93, 92, 92, 91, 93, 92, 92, 91, 91, + 92, 92, 93, 93, 95, 95, 28, 29, 31, 31, 30, 30, 32, 34, 28, 28, + 29, 30, 32, 34, 35, 36, 38, 38, 38, 38, 38, 38, 38, 38, 35, 36, + 37, 38, 39, 39, 39, 39, 37, 38, 40, 40, 38, 38, 40, 41, 38, 39, + 41, 41, 39, 39, 41, 42, 39, 39, 40, 40, 40, 40, 39, 39, 41, 41, + 41, 42, 44, 44, 43, 41, 46, 43, 39, 34, 29, 25, 22, 21, 22, 19, + 14, 13, 14, 18, 20, 20, 30, 18, 17, 17, 13, 17, 23, 16, 23, 18, + 6, 6, 20, 21, 17, 24, 17, 18, 24, 22, 12, 16, 22, 17, 18, 15, + 14, 16, 16, 13, 14, 19, 19, 27, 21, 28, 22, 11, 22, 23, 19, 26, + 19, 23, 14, 25, 19, 21, 18, 25, 24, 18, 25, 36, 33, 20, 25, 27, + 25, 36, 62, 71, 64, 63, 65, 66, 66, 67, 68, 69, 71, 72, 67, 64, + 76, 69, 68, 63, 58, 0, 11, 50, 61, 72, 85, 86, 93, 91, 88, 76, + 82, 93, 91, 88, 92, 90, 89, 90, 83, 92, 92, 83, 90, 87, 86, 87, + 88, 89, 90, 90, 90, 90, 91, 92, 92, 93, 93, 92, 92, 91, 93, 92, + 92, 91, 91, 92, 92, 93, 92, 94, 95, 25, 27, 29, 29, 28, 29, 30, + 32, 29, 30, 31, 33, 34, 34, 34, 34, 40, 39, 37, 37, 36, 37, 38, + 39, 36, 36, 36, 37, 38, 39, 40, 41, 36, 39, 40, 40, 38, 38, 39, + 42, 38, 39, 41, 41, 39, 39, 41, 42, 40, 40, 41, 41, 41, 41, 40, + 40, 42, 41, 41, 43, 44, 43, 38, 34, 33, 30, 25, 20, 16, 15, 15, + 15, 20, 21, 21, 19, 18, 19, 21, 20, 26, 18, 20, 22, 17, 22, 31, + 27, 16, 17, 13, 12, 18, 15, 17, 28, 17, 19, 26, 24, 14, 18, 25, + 20, 22, 19, 18, 19, 19, 16, 16, 21, 22, 31, 26, 35, 29, 18, 27, + 27, 22, 28, 17, 25, 16, 31, 21, 22, 20, 24, 27, 26, 25, 26, 30, + 30, 32, 28, 18, 24, 49, 61, 61, 64, 67, 68, 68, 68, 68, 68, 70, + 70, 70, 66, 77, 68, 67, 61, 56, 0, 12, 51, 62, 72, 85, 86, 93, + 91, 87, 76, 83, 93, 91, 88, 92, 90, 89, 90, 83, 92, 92, 83, 90, + 87, 86, 87, 88, 89, 90, 91, 91, 90, 91, 92, 92, 93, 93, 92, 92, + 91, 93, 92, 92, 91, 91, 92, 92, 93, 91, 94, 95, 25, 27, 29, 29, + 29, 29, 31, 33, 31, 32, 33, 35, 35, 34, 33, 32, 37, 35, 33, 31, + 31, 33, 37, 38, 37, 37, 36, 37, 38, 40, 42, 43, 38, 39, 41, 40, + 38, 37, 39, 40, 38, 39, 41, 41, 39, 39, 41, 44, 44, 45, 43, 44, + 42, 41, 39, 38, 39, 39, 40, 42, 42, 40, 33, 28, 20, 18, 14, 12, + 11, 14, 17, 19, 8, 14, 20, 24, 24, 23, 28, 29, 19, 16, 24, 27, + 20, 19, 22, 16, 11, 18, 20, 17, 16, 8, 11, 26, 16, 15, 25, 23, + 14, 18, 26, 21, 30, 26, 24, 28, 27, 23, 23, 26, 25, 32, 26, 37, + 35, 25, 32, 29, 26, 30, 18, 28, 18, 35, 22, 22, 26, 26, 33, 38, + 30, 19, 25, 40, 30, 33, 25, 21, 30, 42, 55, 73, 72, 72, 71, 68, + 68, 67, 68, 68, 74, 69, 78, 68, 66, 60, 56, 0, 15, 54, 62, 74, + 85, 86, 95, 91, 89, 76, 84, 94, 91, 87, 91, 90, 89, 90, 83, 92, + 92, 83, 90, 87, 86, 87, 90, 91, 92, 93, 93, 93, 91, 92, 92, 93, + 93, 92, 92, 91, 93, 92, 92, 91, 91, 92, 92, 93, 90, 92, 94, 30, + 30, 30, 30, 31, 32, 33, 33, 33, 33, 33, 32, 31, 33, 37, 38, 33, + 31, 31, 32, 34, 35, 37, 39, 35, 37, 38, 40, 41, 42, 45, 43, 43, + 42, 41, 41, 39, 38, 37, 35, 41, 40, 38, 37, 39, 40, 43, 45, 45, + 46, 45, 43, 42, 38, 36, 35, 44, 32, 37, 49, 43, 32, 24, 14, 19, + 16, 14, 15, 17, 16, 12, 8, 9, 13, 19, 22, 22, 23, 31, 34, 24, + 20, 26, 46, 18, 28, 29, 29, 20, 29, 17, 22, 26, 15, 22, 25, 13, + 24, 29, 19, 16, 23, 26, 18, 35, 30, 33, 35, 25, 24, 28, 23, 27, + 34, 30, 27, 33, 30, 26, 33, 38, 34, 30, 29, 31, 34, 36, 35, 22, + 31, 34, 29, 25, 25, 27, 25, 23, 26, 31, 31, 28, 30, 50, 69, 79, + 67, 62, 67, 74, 73, 67, 66, 71, 68, 69, 71, 62, 68, 57, 0, 20, + 57, 66, 79, 89, 88, 94, 88, 90, 71, 84, 90, 91, 96, 89, 93, 89, + 83, 90, 92, 87, 89, 94, 90, 92, 92, 95, 95, 95, 94, 93, 93, 91, + 92, 92, 92, 92, 91, 90, 89, 93, 93, 93, 92, 92, 91, 91, 91, 89, + 89, 92, 30, 30, 29, 28, 28, 28, 29, 29, 33, 33, 34, 33, 32, 33, + 36, 36, 31, 29, 29, 30, 32, 35, 37, 37, 37, 37, 40, 41, 44, 44, + 47, 45, 45, 42, 42, 40, 37, 37, 35, 36, 38, 38, 39, 38, 40, 41, + 44, 47, 52, 52, 51, 47, 44, 40, 38, 37, 35, 32, 38, 43, 31, 23, + 22, 15, 20, 16, 14, 15, 18, 19, 17, 15, 16, 16, 19, 22, 24, 26, + 27, 24, 23, 18, 28, 30, 25, 21, 32, 34, 22, 31, 20, 25, 28, 15, + 20, 22, 12, 18, 22, 19, 23, 30, 33, 29, 30, 26, 33, 34, 27, 29, + 34, 29, 27, 32, 30, 27, 33, 29, 28, 34, 34, 30, 26, 29, 32, 34, + 30, 28, 36, 36, 35, 31, 31, 32, 29, 22, 23, 26, 30, 32, 29, 30, + 42, 56, 69, 75, 76, 71, 69, 74, 73, 68, 70, 69, 71, 73, 66, 71, + 59, 0, 20, 58, 65, 79, 91, 89, 96, 91, 92, 73, 85, 91, 91, 95, + 87, 88, 89, 84, 90, 92, 87, 89, 94, 90, 91, 92, 92, 93, 94, 93, + 92, 91, 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, + 91, 91, 89, 89, 90, 32, 31, 30, 29, 28, 28, 28, 28, 33, 34, 35, + 35, 33, 33, 34, 34, 31, 29, 31, 32, 34, 35, 37, 37, 38, 38, 40, + 41, 44, 44, 47, 45, 45, 41, 40, 37, 35, 36, 36, 37, 36, 37, 40, + 40, 42, 42, 44, 46, 55, 55, 52, 47, 44, 40, 38, 38, 34, 35, 40, + 34, 18, 14, 20, 16, 19, 15, 14, 15, 18, 21, 22, 22, 21, 19, 19, + 23, 26, 27, 23, 17, 22, 18, 26, 12, 30, 14, 30, 37, 19, 29, 20, + 26, 29, 16, 22, 23, 14, 13, 16, 20, 28, 32, 33, 32, 28, 24, 30, + 32, 27, 29, 35, 30, 27, 32, 28, 24, 30, 26, 24, 31, 28, 26, 24, + 29, 33, 32, 27, 22, 42, 38, 33, 30, 35, 35, 28, 16, 23, 25, 28, + 32, 31, 27, 32, 39, 49, 71, 80, 69, 61, 69, 71, 65, 70, 69, 72, + 75, 68, 72, 59, 0, 19, 58, 65, 79, 92, 90, 97, 92, 93, 74, 86, + 91, 91, 94, 86, 87, 90, 84, 90, 93, 86, 87, 94, 90, 91, 91, 92, + 93, 94, 93, 93, 91, 95, 94, 94, 94, 94, 93, 92, 91, 93, 93, 93, + 92, 92, 91, 91, 91, 89, 89, 90, 33, 33, 32, 31, 31, 31, 32, 32, + 32, 34, 36, 36, 34, 33, 33, 32, 31, 29, 31, 32, 34, 35, 37, 37, + 37, 39, 41, 42, 44, 45, 47, 45, 45, 41, 39, 36, 34, 36, 36, 38, + 35, 36, 40, 41, 44, 43, 45, 46, 53, 52, 49, 45, 42, 39, 38, 38, + 38, 39, 38, 22, 7, 14, 25, 20, 19, 16, 15, 15, 18, 21, 23, 25, + 20, 20, 21, 24, 25, 24, 20, 14, 20, 23, 20, 10, 29, 16, 22, 36, + 17, 28, 20, 27, 32, 19, 23, 26, 20, 13, 12, 20, 27, 27, 26, 28, + 31, 26, 32, 32, 24, 28, 34, 28, 24, 29, 25, 21, 26, 22, 20, 27, + 23, 27, 29, 30, 31, 30, 31, 30, 39, 34, 29, 26, 30, 29, 23, 16, + 24, 23, 25, 29, 30, 28, 27, 30, 33, 56, 72, 67, 63, 67, 68, 65, + 70, 69, 72, 76, 67, 72, 58, 0, 19, 58, 65, 80, 92, 90, 98, 93, + 93, 73, 86, 91, 91, 94, 87, 88, 88, 85, 91, 93, 86, 87, 94, 89, + 93, 93, 94, 95, 96, 96, 95, 94, 93, 93, 94, 94, 93, 92, 91, 91, + 93, 93, 93, 92, 92, 91, 91, 91, 90, 90, 90, 31, 31, 31, 31, 32, + 33, 35, 36, 32, 34, 36, 36, 34, 33, 33, 32, 31, 31, 31, 32, 34, + 35, 37, 37, 38, 39, 40, 40, 42, 43, 45, 45, 45, 41, 39, 36, 35, + 37, 37, 39, 35, 36, 40, 42, 44, 44, 46, 47, 48, 48, 46, 44, 43, + 40, 39, 40, 42, 33, 27, 11, 2, 14, 26, 20, 20, 18, 17, 16, 17, + 19, 21, 24, 14, 19, 24, 25, 22, 20, 19, 18, 17, 26, 12, 19, 20, + 21, 10, 28, 18, 29, 20, 27, 30, 17, 20, 23, 22, 15, 14, 19, 23, + 22, 23, 24, 29, 23, 29, 29, 21, 25, 32, 27, 20, 26, 23, 20, 23, + 19, 18, 24, 17, 25, 30, 29, 25, 25, 32, 38, 31, 29, 28, 26, 25, + 22, 21, 22, 26, 22, 21, 26, 29, 29, 27, 29, 31, 41, 57, 69, 73, + 68, 68, 69, 68, 69, 72, 76, 66, 71, 57, 0, 20, 59, 66, 80, 93, + 90, 98, 93, 90, 71, 84, 90, 91, 95, 89, 90, 89, 84, 92, 94, 86, + 87, 94, 89, 90, 91, 94, 95, 95, 95, 95, 95, 92, 92, 92, 92, 92, + 91, 90, 89, 93, 93, 93, 92, 92, 91, 91, 91, 90, 90, 91, 27, 27, + 28, 29, 30, 32, 34, 35, 33, 34, 35, 35, 33, 33, 34, 36, 33, 31, + 31, 32, 34, 35, 37, 37, 39, 39, 40, 41, 43, 43, 45, 43, 43, 41, + 40, 38, 37, 39, 38, 39, 36, 37, 40, 41, 44, 44, 47, 49, 49, 49, + 49, 47, 46, 44, 42, 40, 38, 22, 15, 7, 2, 14, 26, 18, 21, 19, + 19, 19, 18, 18, 20, 23, 14, 20, 25, 26, 21, 19, 20, 21, 17, 22, + 9, 24, 15, 22, 8, 20, 23, 32, 22, 26, 29, 15, 18, 21, 20, 19, + 18, 19, 21, 23, 26, 25, 25, 20, 26, 27, 20, 24, 34, 30, 20, 26, + 24, 20, 24, 21, 20, 27, 14, 21, 29, 27, 22, 22, 29, 36, 28, 27, + 30, 28, 24, 20, 24, 31, 28, 22, 20, 24, 29, 28, 29, 30, 28, 28, + 36, 56, 67, 67, 66, 68, 68, 67, 71, 73, 64, 68, 54, 0, 22, 60, + 67, 81, 93, 90, 97, 92, 89, 71, 84, 90, 92, 96, 90, 91, 90, 85, + 92, 94, 87, 87, 94, 89, 87, 88, 91, 92, 93, 93, 93, 93, 91, 91, + 92, 92, 91, 91, 90, 89, 93, 93, 93, 92, 92, 91, 91, 91, 91, 91, + 91, 29, 29, 29, 29, 30, 32, 33, 34, 33, 33, 34, 33, 32, 33, 36, + 38, 33, 33, 33, 34, 36, 37, 37, 37, 40, 40, 41, 41, 43, 43, 43, + 43, 42, 41, 42, 41, 40, 41, 39, 40, 37, 37, 39, 40, 43, 44, 48, + 49, 47, 49, 49, 49, 46, 42, 39, 35, 29, 12, 9, 12, 10, 15, 24, + 19, 20, 20, 22, 22, 21, 21, 22, 24, 22, 23, 25, 25, 23, 22, 22, + 20, 20, 11, 12, 20, 13, 14, 16, 15, 20, 29, 17, 22, 28, 16, 21, + 25, 19, 25, 25, 18, 17, 23, 26, 22, 25, 19, 23, 23, 18, 22, 30, + 28, 18, 25, 22, 19, 24, 21, 18, 25, 15, 18, 23, 24, 23, 22, 23, + 24, 29, 28, 30, 30, 25, 19, 23, 32, 25, 22, 22, 27, 30, 27, 26, + 30, 26, 27, 27, 36, 50, 63, 65, 63, 69, 67, 69, 71, 61, 65, 53, + 0, 24, 62, 69, 81, 93, 89, 96, 91, 91, 72, 85, 91, 91, 95, 88, + 89, 91, 85, 91, 93, 85, 85, 92, 87, 87, 88, 89, 90, 93, 93, 93, + 93, 92, 92, 93, 93, 92, 91, 91, 90, 93, 93, 93, 92, 92, 91, 91, + 91, 91, 91, 91, 33, 33, 32, 32, 32, 33, 34, 35, 33, 33, 33, 32, + 31, 33, 37, 40, 33, 33, 33, 34, 36, 37, 37, 37, 40, 40, 41, 41, + 43, 43, 43, 43, 42, 42, 43, 43, 42, 42, 40, 40, 38, 38, 39, 39, + 42, 44, 49, 50, 44, 46, 48, 48, 44, 40, 33, 30, 21, 8, 12, 22, + 21, 19, 24, 22, 18, 20, 24, 25, 23, 23, 25, 27, 30, 27, 24, 25, + 26, 26, 24, 18, 23, 1, 17, 13, 16, 7, 26, 14, 14, 23, 12, 19, + 28, 19, 28, 33, 16, 27, 29, 14, 12, 18, 23, 15, 29, 23, 24, 23, + 16, 19, 26, 23, 16, 21, 18, 16, 21, 19, 17, 24, 20, 19, 22, 26, + 29, 28, 21, 15, 31, 27, 26, 28, 23, 18, 21, 29, 24, 21, 25, 28, + 31, 26, 24, 27, 30, 35, 31, 24, 38, 64, 72, 64, 69, 67, 66, 69, + 58, 64, 52, 0, 25, 63, 69, 82, 93, 89, 95, 90, 93, 74, 86, 91, + 91, 94, 86, 87, 91, 86, 91, 93, 85, 85, 92, 87, 89, 90, 91, 92, + 95, 96, 96, 96, 93, 94, 94, 94, 94, 93, 92, 91, 93, 93, 93, 92, + 92, 91, 91, 91, 91, 91, 91, 27, 32, 33, 30, 29, 32, 33, 32, 34, + 34, 34, 35, 35, 36, 36, 36, 38, 37, 36, 35, 35, 35, 38, 38, 34, + 39, 42, 42, 44, 46, 45, 40, 43, 40, 40, 41, 40, 37, 35, 39, 38, + 36, 37, 37, 41, 42, 44, 43, 48, 50, 47, 41, 41, 42, 30, 12, 12, + 14, 14, 16, 19, 23, 25, 26, 25, 21, 19, 19, 22, 24, 23, 23, 24, + 30, 32, 26, 21, 22, 21, 15, 27, 16, 12, 14, 18, 17, 16, 16, 18, + 17, 20, 22, 22, 20, 24, 30, 30, 25, 31, 29, 21, 17, 24, 20, 27, + 23, 23, 26, 24, 20, 22, 28, 20, 25, 25, 19, 16, 19, 25, 27, 19, + 24, 26, 25, 26, 29, 26, 25, 31, 34, 20, 29, 31, 28, 33, 24, 18, + 26, 28, 24, 29, 24, 21, 31, 30, 28, 25, 24, 31, 41, 56, 65, 70, + 65, 63, 82, 58, 63, 38, 0, 26, 61, 68, 83, 94, 87, 94, 91, 90, + 76, 89, 91, 90, 96, 90, 89, 87, 87, 89, 88, 87, 85, 85, 86, 92, + 92, 93, 92, 92, 91, 90, 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, + 92, 92, 92, 92, 92, 92, 92, 94, 93, 93, 27, 32, 33, 30, 29, 32, + 33, 32, 34, 34, 34, 35, 35, 36, 36, 36, 35, 35, 35, 35, 35, 36, + 40, 40, 36, 40, 42, 41, 42, 45, 45, 41, 44, 40, 40, 41, 40, 37, + 36, 39, 35, 36, 39, 41, 45, 45, 48, 47, 41, 45, 48, 45, 38, 29, + 16, 5, 14, 15, 16, 18, 21, 22, 24, 24, 23, 21, 20, 20, 21, 22, + 23, 24, 15, 22, 25, 23, 20, 24, 24, 19, 22, 15, 11, 14, 16, 15, + 14, 15, 22, 21, 20, 23, 23, 22, 26, 31, 31, 30, 36, 38, 28, 25, + 27, 20, 25, 21, 25, 27, 26, 21, 21, 26, 21, 24, 24, 22, 24, 28, + 28, 23, 23, 26, 27, 25, 25, 28, 25, 24, 32, 34, 23, 28, 32, 25, + 31, 21, 28, 34, 30, 29, 36, 32, 27, 33, 23, 26, 26, 26, 24, 31, + 43, 53, 73, 67, 63, 77, 58, 70, 41, 0, 26, 61, 68, 84, 95, 88, + 93, 91, 89, 75, 89, 91, 90, 96, 90, 90, 86, 86, 88, 88, 87, 86, + 86, 87, 90, 90, 92, 92, 92, 92, 92, 92, 93, 93, 93, 92, 92, 91, + 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 92, 28, 32, 34, + 30, 29, 32, 34, 32, 34, 34, 34, 35, 35, 36, 36, 36, 36, 36, 36, + 37, 38, 39, 41, 42, 38, 41, 41, 39, 40, 44, 44, 41, 44, 40, 40, + 42, 40, 37, 36, 39, 33, 36, 42, 44, 45, 44, 47, 47, 43, 40, 40, + 37, 28, 13, 5, 6, 15, 17, 16, 18, 20, 21, 23, 22, 20, 21, 23, + 22, 20, 20, 23, 26, 13, 19, 23, 23, 21, 24, 26, 22, 18, 14, 14, + 17, 17, 16, 16, 19, 24, 21, 19, 21, 23, 21, 23, 26, 31, 30, 39, + 43, 34, 31, 31, 21, 22, 21, 27, 29, 28, 24, 23, 26, 23, 24, 23, + 24, 30, 35, 32, 23, 27, 30, 29, 25, 22, 25, 26, 23, 31, 34, 22, + 27, 29, 24, 29, 20, 30, 31, 25, 25, 35, 34, 27, 28, 20, 27, 30, + 29, 22, 23, 31, 39, 67, 66, 65, 72, 57, 75, 39, 0, 26, 62, 69, + 85, 96, 88, 93, 90, 88, 73, 88, 90, 90, 96, 91, 91, 84, 85, 87, + 87, 86, 85, 87, 88, 86, 86, 89, 90, 90, 91, 94, 94, 93, 93, 92, + 92, 92, 92, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 91, 91, 92, + 28, 33, 34, 31, 30, 32, 34, 32, 34, 34, 34, 35, 35, 36, 36, 36, + 37, 36, 36, 37, 38, 39, 40, 41, 39, 42, 41, 38, 39, 43, 44, 42, + 44, 40, 41, 42, 40, 38, 36, 39, 35, 38, 42, 42, 42, 40, 44, 44, + 52, 39, 27, 21, 13, 3, 6, 16, 17, 19, 18, 20, 20, 21, 22, 21, + 18, 21, 25, 24, 20, 20, 23, 28, 21, 24, 27, 27, 24, 24, 24, 24, + 19, 16, 20, 23, 22, 18, 21, 25, 28, 24, 21, 23, 24, 22, 23, 25, + 30, 32, 41, 44, 38, 37, 37, 26, 23, 24, 27, 27, 27, 24, 27, 29, + 26, 29, 29, 28, 31, 35, 33, 26, 27, 27, 26, 22, 22, 24, 25, 25, + 29, 33, 23, 27, 29, 22, 29, 21, 23, 28, 23, 23, 31, 32, 26, 31, + 26, 28, 31, 28, 24, 24, 27, 32, 51, 60, 68, 67, 55, 73, 29, 0, + 26, 62, 70, 86, 97, 88, 93, 89, 86, 72, 87, 90, 90, 97, 91, 91, + 83, 85, 87, 87, 86, 86, 88, 89, 87, 87, 89, 90, 90, 91, 93, 93, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 90, 91, 91, 29, 33, 35, 31, 30, 33, 34, 33, 34, 34, 34, 35, 35, + 36, 36, 36, 39, 38, 38, 37, 37, 38, 38, 39, 40, 42, 40, 36, 37, + 41, 41, 41, 45, 41, 41, 43, 41, 38, 37, 40, 38, 39, 40, 40, 41, + 41, 46, 47, 51, 31, 17, 11, 9, 5, 12, 24, 18, 18, 21, 22, 23, + 23, 23, 22, 18, 21, 26, 25, 22, 21, 24, 29, 26, 27, 29, 30, 26, + 22, 22, 23, 22, 20, 23, 27, 25, 21, 24, 28, 33, 30, 27, 28, 28, + 25, 26, 28, 30, 32, 38, 39, 35, 40, 44, 33, 29, 28, 28, 24, 24, + 25, 30, 33, 31, 35, 35, 29, 27, 28, 32, 31, 25, 25, 24, 21, 22, + 25, 27, 25, 26, 31, 23, 28, 30, 23, 32, 25, 23, 32, 31, 28, 34, + 34, 33, 41, 33, 28, 26, 24, 26, 27, 28, 29, 34, 51, 70, 67, 56, + 71, 19, 0, 28, 63, 71, 86, 96, 88, 93, 89, 86, 72, 86, 89, 89, + 96, 91, 91, 82, 83, 85, 85, 86, 86, 87, 88, 89, 89, 91, 90, 90, + 89, 89, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 90, 91, 91, 29, 33, 35, 32, 31, 33, 35, 33, 34, 34, + 34, 35, 35, 36, 36, 36, 40, 39, 38, 37, 37, 37, 37, 38, 39, 42, + 40, 38, 38, 41, 41, 38, 45, 41, 42, 43, 41, 39, 37, 40, 39, 37, + 38, 39, 44, 46, 48, 46, 33, 22, 15, 13, 15, 15, 18, 20, 17, 20, + 22, 24, 24, 25, 25, 23, 20, 22, 26, 27, 26, 25, 27, 29, 25, 25, + 27, 30, 26, 22, 22, 25, 25, 22, 22, 26, 27, 24, 23, 28, 31, 28, + 28, 28, 25, 21, 23, 30, 35, 33, 39, 35, 32, 42, 47, 36, 34, 33, + 32, 24, 24, 27, 32, 35, 34, 38, 38, 30, 26, 26, 31, 32, 23, 25, + 26, 21, 23, 27, 29, 27, 24, 31, 23, 30, 31, 25, 34, 27, 25, 35, + 34, 32, 36, 34, 36, 47, 35, 27, 20, 20, 23, 27, 27, 26, 27, 40, + 66, 66, 60, 71, 12, 0, 30, 65, 71, 85, 95, 87, 94, 91, 86, 72, + 86, 89, 89, 95, 90, 90, 83, 83, 85, 85, 86, 85, 86, 87, 90, 90, + 91, 90, 90, 89, 88, 88, 91, 91, 92, 92, 92, 92, 93, 93, 92, 92, + 92, 92, 92, 92, 92, 92, 91, 91, 92, 29, 34, 35, 32, 31, 34, 35, + 34, 34, 34, 34, 35, 35, 36, 36, 36, 38, 39, 38, 38, 37, 38, 39, + 39, 38, 42, 41, 39, 39, 41, 40, 36, 45, 41, 42, 43, 42, 39, 37, + 40, 40, 37, 37, 39, 45, 43, 39, 31, 10, 12, 15, 14, 14, 16, 19, + 19, 18, 19, 23, 25, 28, 29, 29, 27, 23, 23, 25, 28, 29, 30, 29, + 29, 27, 26, 28, 32, 29, 23, 23, 27, 34, 27, 23, 28, 30, 28, 27, + 29, 29, 30, 33, 32, 26, 21, 25, 36, 40, 39, 43, 37, 33, 42, 45, + 31, 34, 35, 34, 29, 27, 30, 34, 33, 33, 36, 36, 31, 30, 32, 33, + 29, 27, 28, 29, 26, 27, 30, 30, 27, 25, 32, 25, 30, 31, 23, 33, + 28, 30, 34, 30, 28, 34, 34, 33, 40, 33, 28, 23, 23, 23, 25, 23, + 23, 27, 29, 52, 57, 61, 71, 5, 0, 33, 66, 70, 84, 93, 87, 94, + 93, 87, 73, 87, 89, 88, 94, 88, 88, 85, 84, 86, 86, 86, 85, 85, + 86, 88, 88, 88, 88, 90, 90, 90, 90, 91, 91, 91, 92, 92, 93, 93, + 93, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 92, 29, 32, 35, 30, + 31, 32, 35, 32, 34, 32, 34, 33, 35, 34, 36, 36, 36, 37, 37, 38, + 38, 39, 41, 42, 37, 42, 42, 40, 40, 41, 39, 35, 44, 42, 40, 41, + 42, 39, 37, 41, 41, 37, 36, 38, 43, 37, 24, 12, 1, 12, 19, 10, + 8, 15, 21, 23, 17, 20, 25, 28, 32, 33, 33, 31, 29, 25, 29, 30, + 36, 35, 34, 32, 37, 34, 36, 40, 36, 29, 28, 32, 44, 34, 30, 33, + 36, 35, 34, 33, 40, 42, 45, 44, 35, 30, 38, 49, 45, 44, 48, 41, + 36, 46, 45, 29, 34, 39, 40, 34, 33, 36, 37, 34, 32, 35, 32, 32, + 36, 40, 36, 29, 32, 36, 37, 32, 32, 32, 32, 28, 31, 38, 28, 34, + 31, 25, 34, 29, 37, 37, 29, 27, 35, 36, 30, 33, 29, 29, 31, 28, + 25, 21, 22, 24, 26, 20, 36, 46, 57, 70, 0, 0, 30, 64, 69, 81, + 90, 86, 94, 94, 88, 74, 87, 89, 88, 94, 87, 87, 87, 87, 89, 88, + 86, 85, 85, 86, 86, 88, 89, 90, 90, 93, 94, 94, 91, 91, 91, 92, + 92, 93, 93, 93, 92, 92, 92, 92, 92, 92, 92, 92, 94, 93, 93, 29, + 26, 28, 26, 29, 29, 33, 32, 35, 29, 29, 31, 34, 30, 30, 32, 36, + 42, 38, 36, 42, 40, 36, 42, 42, 45, 45, 42, 43, 46, 47, 42, 35, + 37, 40, 39, 38, 37, 39, 39, 43, 39, 37, 39, 36, 26, 15, 11, 16, + 19, 19, 15, 17, 18, 21, 23, 27, 25, 32, 34, 33, 40, 46, 38, 34, + 41, 42, 36, 44, 45, 43, 48, 47, 49, 48, 47, 48, 49, 42, 33, 62, + 40, 44, 53, 42, 40, 46, 39, 58, 47, 42, 46, 50, 49, 47, 51, 58, + 47, 42, 43, 49, 51, 49, 48, 55, 51, 45, 41, 44, 44, 43, 42, 42, + 44, 44, 41, 36, 35, 36, 40, 44, 42, 42, 34, 30, 43, 47, 31, 40, + 32, 39, 48, 34, 24, 26, 30, 37, 33, 30, 29, 30, 31, 31, 31, 37, + 32, 25, 21, 23, 23, 21, 19, 30, 22, 25, 34, 42, 44, 23, 0, 34, + 61, 74, 76, 85, 89, 85, 88, 92, 75, 89, 91, 89, 93, 87, 90, 88, + 87, 89, 89, 87, 89, 91, 92, 89, 91, 91, 92, 92, 95, 95, 95, 95, + 94, 92, 90, 89, 89, 89, 90, 92, 92, 92, 92, 92, 92, 92, 92, 94, + 94, 93, 32, 29, 29, 28, 29, 31, 32, 33, 33, 28, 27, 31, 32, 30, + 29, 32, 34, 42, 38, 36, 42, 40, 37, 42, 38, 41, 42, 39, 39, 43, + 43, 38, 40, 38, 39, 39, 38, 38, 40, 41, 37, 40, 40, 32, 16, 5, + 11, 25, 25, 26, 22, 20, 19, 21, 22, 25, 33, 28, 35, 41, 39, 42, + 47, 41, 55, 62, 57, 50, 56, 59, 61, 67, 55, 56, 56, 56, 59, 62, + 59, 52, 56, 42, 47, 55, 50, 56, 65, 59, 51, 51, 57, 67, 69, 65, + 63, 66, 65, 63, 64, 62, 60, 54, 59, 63, 58, 54, 55, 54, 59, 58, + 58, 56, 57, 59, 60, 57, 56, 56, 58, 61, 42, 42, 52, 54, 51, 55, + 52, 34, 52, 42, 46, 55, 45, 40, 43, 45, 37, 33, 32, 30, 30, 30, + 28, 26, 26, 27, 27, 30, 32, 30, 26, 23, 23, 24, 32, 32, 25, 30, + 32, 26, 38, 53, 63, 74, 87, 89, 85, 90, 87, 75, 93, 95, 91, 94, + 89, 93, 90, 89, 91, 91, 89, 89, 93, 94, 91, 91, 93, 94, 94, 95, + 96, 95, 97, 94, 92, 91, 90, 90, 90, 91, 92, 92, 92, 92, 92, 92, + 92, 92, 94, 93, 92, 33, 30, 30, 29, 29, 30, 31, 31, 33, 28, 27, + 31, 33, 30, 29, 33, 34, 42, 38, 36, 43, 41, 37, 42, 37, 40, 41, + 38, 38, 42, 42, 37, 43, 41, 40, 39, 39, 39, 40, 41, 40, 37, 31, + 19, 4, 0, 11, 30, 27, 25, 20, 17, 19, 20, 23, 25, 38, 29, 36, + 46, 47, 51, 64, 68, 67, 80, 85, 85, 90, 86, 77, 76, 79, 80, 80, + 80, 83, 87, 84, 78, 88, 80, 78, 73, 64, 69, 72, 63, 72, 78, 88, + 96, 97, 94, 96, 103, 104, 102, 104, 102, 98, 91, 93, 97, 112, 110, 109, + 106, 105, 98, 92, 87, 79, 81, 82, 81, 80, 78, 80, 81, 74, 67, 70, + 70, 65, 68, 71, 64, 62, 49, 50, 57, 50, 49, 53, 51, 41, 42, 46, + 48, 48, 43, 34, 28, 38, 36, 31, 27, 24, 24, 25, 24, 23, 25, 33, + 29, 17, 22, 37, 41, 41, 49, 55, 69, 86, 88, 84, 91, 81, 72, 94, + 96, 89, 93, 90, 93, 90, 89, 91, 91, 89, 89, 93, 94, 91, 91, 94, + 94, 94, 94, 96, 95, 97, 94, 93, 92, 91, 91, 91, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 93, 93, 92, 31, 28, 28, 28, 27, 27, 28, 28, + 33, 28, 27, 31, 33, 31, 30, 34, 35, 42, 39, 37, 43, 41, 37, 43, + 40, 43, 43, 41, 41, 45, 45, 42, 44, 39, 38, 35, 38, 38, 39, 40, + 45, 28, 12, 8, 10, 13, 17, 23, 24, 21, 18, 21, 24, 25, 26, 29, + 40, 30, 38, 55, 63, 76, 101, 116, 132, 149, 156, 158, 164, 159, 148, 146, + 148, 150, 150, 149, 150, 151, 145, 136, 142, 143, 141, 133, 130, 140, 144, 136, + 146, 148, 149, 149, 149, 152, 160, 168, 169, 163, 162, 163, 167, 160, 157, 153, + 158, 156, 160, 159, 161, 157, 156, 154, 156, 157, 157, 155, 152, 149, 148, 146, + 148, 134, 130, 130, 122, 121, 127, 127, 120, 104, 99, 100, 96, 94, 95, 91, + 98, 86, 67, 52, 45, 44, 48, 51, 49, 45, 42, 36, 30, 27, 26, 26, + 31, 24, 28, 29, 26, 29, 32, 25, 33, 46, 50, 55, 73, 82, 85, 91, + 81, 73, 89, 91, 87, 94, 90, 90, 90, 89, 91, 91, 89, 89, 93, 94, + 92, 92, 94, 94, 94, 94, 95, 94, 97, 94, 94, 93, 93, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 91, 30, 30, 30, 30, 30, + 30, 29, 29, 35, 30, 30, 34, 36, 34, 33, 35, 35, 43, 39, 37, 43, + 41, 38, 43, 41, 44, 45, 42, 43, 46, 46, 43, 45, 40, 40, 38, 42, + 41, 41, 40, 35, 18, 4, 7, 18, 22, 18, 15, 23, 23, 23, 29, 32, + 30, 32, 35, 42, 41, 57, 81, 95, 115, 140, 154, 157, 167, 160, 154, 161, + 167, 171, 179, 187, 190, 192, 192, 193, 191, 182, 172, 182, 190, 187, 178, 180, + 188, 190, 188, 191, 188, 183, 179, 181, 187, 194, 198, 190, 188, 192, 193, 192, + 184, 185, 187, 191, 188, 188, 184, 183, 179, 180, 180, 179, 177, 175, 174, 172, + 171, 168, 167, 180, 171, 178, 183, 172, 164, 162, 157, 175, 158, 151, 151, 147, + 147, 146, 139, 135, 129, 117, 104, 91, 78, 65, 55, 45, 46, 49, 51, 48, + 44, 39, 34, 36, 23, 24, 29, 27, 28, 27, 18, 21, 43, 45, 37, 50, + 69, 81, 88, 85, 72, 85, 85, 84, 95, 91, 88, 90, 89, 91, 91, 89, + 89, 93, 94, 92, 92, 94, 94, 94, 94, 95, 94, 96, 94, 94, 94, 93, + 93, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 91, 91, 90, 33, 31, + 32, 33, 33, 33, 32, 32, 34, 30, 30, 34, 36, 35, 34, 36, 38, 43, + 39, 37, 44, 42, 38, 44, 40, 43, 43, 40, 41, 44, 44, 42, 45, 43, + 42, 43, 45, 44, 39, 33, 13, 10, 12, 15, 20, 15, 13, 17, 20, 20, + 25, 31, 31, 27, 30, 40, 54, 66, 92, 117, 130, 145, 161, 165, 170, 178, + 172, 166, 174, 180, 184, 193, 180, 184, 187, 188, 191, 191, 183, 173, 191, 200, + 194, 186, 190, 189, 186, 191, 190, 191, 190, 187, 189, 194, 196, 194, 180, 191, + 202, 201, 187, 178, 187, 202, 204, 202, 198, 193, 189, 188, 190, 194, 192, 189, + 189, 186, 188, 190, 190, 189, 184, 178, 184, 182, 173, 171, 176, 171, 181, 169, + 167, 166, 163, 164, 166, 155, 150, 154, 161, 163, 154, 136, 115, 98, 71, 62, + 50, 42, 40, 40, 38, 35, 35, 26, 28, 29, 20, 20, 28, 29, 18, 37, + 38, 27, 36, 53, 66, 76, 80, 73, 87, 85, 83, 98, 92, 88, 88, 89, + 91, 91, 89, 89, 93, 94, 93, 93, 94, 94, 94, 94, 94, 93, 94, 92, + 93, 93, 93, 93, 92, 91, 92, 92, 92, 92, 92, 92, 92, 92, 90, 90, + 90, 31, 30, 32, 33, 34, 34, 33, 32, 34, 30, 30, 34, 37, 35, 35, + 36, 38, 43, 40, 38, 44, 42, 38, 44, 39, 42, 42, 39, 40, 43, 44, + 41, 45, 43, 43, 44, 45, 39, 29, 20, 8, 12, 19, 22, 22, 13, 12, + 19, 15, 16, 23, 32, 33, 29, 41, 57, 80, 100, 125, 139, 147, 161, 171, + 162, 166, 179, 182, 181, 188, 188, 183, 186, 185, 187, 188, 189, 193, 196, 192, + 185, 185, 195, 193, 195, 206, 202, 199, 214, 198, 205, 208, 203, 200, 202, 203, + 200, 199, 205, 212, 212, 203, 197, 202, 213, 190, 192, 194, 196, 199, 204, 212, + 220, 201, 197, 195, 192, 195, 198, 200, 199, 200, 196, 196, 184, 174, 183, 196, + 190, 183, 176, 179, 179, 176, 180, 181, 170, 183, 174, 165, 157, 157, 162, 166, + 170, 133, 112, 85, 67, 58, 54, 48, 41, 37, 28, 31, 33, 22, 20, 29, + 33, 24, 28, 27, 30, 39, 37, 41, 59, 63, 65, 89, 87, 82, 92, 89, + 88, 88, 89, 91, 91, 89, 89, 93, 94, 93, 93, 95, 94, 94, 93, 94, + 93, 92, 91, 92, 93, 93, 92, 91, 90, 92, 92, 92, 92, 92, 92, 92, + 92, 90, 89, 89, 28, 27, 29, 31, 32, 32, 31, 31, 34, 30, 30, 34, + 37, 35, 35, 39, 38, 44, 40, 38, 44, 42, 38, 44, 40, 43, 43, 40, + 41, 44, 44, 42, 42, 41, 41, 42, 41, 33, 18, 7, 17, 15, 19, 25, + 27, 22, 17, 19, 18, 21, 29, 38, 41, 43, 60, 84, 106, 123, 144, 146, + 147, 165, 175, 163, 173, 182, 178, 173, 179, 182, 182, 188, 189, 189, 186, 185, + 189, 194, 193, 188, 198, 204, 198, 197, 204, 188, 179, 197, 198, 207, 210, 199, + 189, 189, 194, 197, 210, 198, 192, 197, 205, 204, 199, 195, 207, 207, 205, 199, + 193, 190, 191, 195, 209, 205, 199, 197, 197, 200, 202, 202, 193, 200, 206, 196, + 182, 189, 192, 177, 182, 179, 182, 185, 180, 183, 184, 172, 169, 167, 169, 170, + 170, 165, 159, 155, 171, 159, 144, 132, 121, 102, 74, 53, 46, 30, 31, 38, + 34, 30, 28, 22, 35, 20, 17, 35, 46, 26, 24, 47, 44, 56, 88, 87, + 76, 84, 83, 88, 88, 89, 91, 91, 89, 89, 93, 94, 93, 93, 95, 94, + 94, 93, 94, 93, 91, 90, 91, 92, 93, 92, 91, 90, 92, 92, 92, 92, + 92, 92, 92, 92, 89, 89, 89, 31, 35, 35, 32, 33, 36, 36, 34, 37, + 37, 38, 38, 38, 39, 39, 39, 43, 42, 41, 40, 39, 38, 38, 38, 44, + 42, 40, 39, 39, 41, 44, 45, 41, 42, 48, 42, 24, 17, 23, 22, 14, + 24, 32, 28, 23, 21, 16, 14, 17, 35, 44, 39, 43, 62, 94, 118, 138, + 144, 155, 163, 168, 172, 175, 177, 169, 169, 175, 182, 183, 180, 180, 184, 189, + 181, 176, 180, 191, 198, 198, 194, 195, 195, 195, 193, 191, 192, 195, 197, 196, + 197, 199, 201, 203, 204, 204, 202, 204, 198, 194, 198, 203, 203, 201, 199, 212, + 205, 212, 207, 188, 195, 209, 204, 200, 210, 213, 207, 202, 201, 197, 193, 195, + 203, 200, 187, 181, 188, 192, 190, 186, 176, 174, 176, 174, 182, 188, 181, 181, + 172, 165, 167, 176, 179, 172, 163, 161, 156, 154, 155, 156, 142, 120, 99, 68, + 49, 37, 38, 38, 28, 26, 33, 27, 28, 29, 27, 28, 30, 36, 41, 45, + 37, 45, 73, 86, 82, 78, 86, 92, 93, 90, 84, 84, 88, 93, 92, 92, + 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, 90, 93, + 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, 32, 35, 35, 32, 33, 36, + 37, 34, 35, 35, 35, 36, 36, 37, 37, 37, 40, 40, 39, 39, 39, 40, + 41, 42, 37, 41, 44, 45, 43, 42, 42, 42, 44, 36, 34, 27, 14, 12, + 16, 14, 19, 25, 25, 21, 22, 24, 22, 21, 29, 36, 45, 58, 79, 104, + 121, 128, 147, 154, 163, 170, 174, 178, 180, 180, 173, 168, 171, 179, 182, 180, + 180, 182, 180, 176, 174, 178, 186, 191, 189, 185, 192, 193, 194, 193, 191, 189, + 189, 190, 191, 192, 194, 196, 199, 201, 203, 204, 198, 198, 201, 203, 205, 203, + 203, 202, 205, 199, 208, 208, 199, 204, 212, 200, 203, 207, 206, 200, 198, 203, + 205, 201, 180, 196, 205, 199, 193, 190, 183, 173, 186, 178, 180, 174, 164, 164, + 174, 171, 184, 179, 176, 175, 176, 175, 168, 160, 159, 157, 152, 155, 158, 156, + 146, 133, 136, 98, 62, 49, 45, 40, 32, 27, 27, 23, 22, 29, 37, 38, + 33, 27, 38, 38, 45, 60, 75, 83, 83, 84, 84, 91, 92, 88, 85, 87, + 92, 92, 92, 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, + 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, 34, 37, 37, + 35, 35, 38, 39, 36, 37, 37, 38, 38, 38, 39, 39, 39, 37, 37, 38, + 39, 40, 42, 44, 45, 38, 42, 46, 46, 44, 42, 42, 44, 44, 29, 21, + 16, 11, 17, 22, 18, 28, 31, 29, 26, 27, 29, 28, 26, 33, 45, 59, + 82, 109, 132, 139, 136, 151, 158, 165, 172, 174, 176, 178, 178, 173, 168, 170, + 176, 180, 179, 179, 181, 176, 176, 178, 181, 184, 185, 184, 181, 187, 190, 192, + 192, 189, 186, 185, 184, 187, 188, 189, 192, 195, 199, 202, 203, 192, 196, 205, + 204, 202, 197, 198, 197, 212, 204, 207, 203, 199, 201, 205, 192, 206, 210, 212, + 213, 214, 213, 209, 203, 186, 193, 195, 188, 185, 188, 190, 188, 179, 178, 183, + 175, 160, 159, 174, 178, 171, 170, 173, 172, 172, 170, 166, 166, 168, 164, 161, + 160, 162, 159, 154, 147, 143, 143, 132, 105, 69, 43, 36, 39, 42, 32, 25, + 26, 30, 32, 30, 25, 31, 37, 42, 45, 58, 78, 84, 82, 80, 90, 94, + 91, 86, 87, 91, 92, 92, 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, + 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, + 34, 37, 38, 35, 35, 39, 39, 36, 40, 40, 40, 41, 41, 41, 42, 42, + 38, 38, 38, 39, 41, 43, 44, 45, 46, 45, 43, 42, 42, 43, 43, 41, + 32, 16, 13, 14, 12, 22, 32, 32, 31, 34, 36, 33, 32, 29, 28, 27, + 46, 69, 95, 111, 122, 134, 142, 146, 155, 161, 168, 172, 173, 175, 176, 175, + 174, 170, 172, 175, 174, 171, 174, 179, 178, 179, 181, 181, 181, 181, 181, 182, + 182, 184, 186, 186, 184, 183, 182, 183, 186, 186, 187, 189, 191, 195, 197, 199, + 193, 200, 204, 202, 198, 196, 195, 194, 218, 213, 207, 199, 195, 200, 205, 202, + 200, 199, 195, 194, 196, 197, 194, 189, 203, 201, 191, 176, 172, 181, 192, 197, + 182, 181, 186, 181, 165, 167, 181, 186, 171, 168, 168, 171, 173, 172, 171, 171, + 168, 168, 168, 169, 165, 159, 153, 146, 149, 148, 143, 133, 117, 97, 68, 45, + 39, 37, 34, 31, 27, 27, 29, 32, 27, 34, 40, 39, 44, 57, 72, 80, + 83, 90, 93, 90, 89, 90, 92, 89, 92, 93, 95, 94, 92, 92, 95, 96, + 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, + 92, 92, 92, 35, 38, 38, 36, 36, 39, 40, 37, 40, 40, 41, 41, 42, + 42, 42, 42, 41, 40, 40, 40, 41, 42, 43, 43, 49, 44, 41, 42, 45, + 45, 38, 29, 12, 3, 8, 9, 9, 19, 30, 34, 26, 31, 33, 32, 30, + 29, 37, 47, 80, 103, 125, 135, 137, 142, 148, 154, 162, 166, 172, 175, 175, + 177, 177, 176, 174, 176, 180, 181, 173, 168, 172, 182, 181, 182, 181, 179, 177, + 177, 181, 184, 182, 183, 184, 183, 183, 184, 187, 190, 188, 188, 188, 188, 190, + 191, 192, 193, 199, 203, 203, 199, 199, 203, 203, 199, 205, 211, 208, 201, 201, + 207, 214, 221, 229, 219, 206, 201, 203, 207, 214, 218, 206, 205, 200, 191, 185, + 181, 179, 177, 194, 190, 191, 187, 174, 175, 183, 183, 190, 179, 172, 175, 177, + 175, 171, 171, 165, 166, 166, 167, 166, 163, 161, 159, 157, 151, 143, 136, 134, + 128, 112, 92, 42, 37, 34, 37, 40, 39, 35, 31, 27, 29, 34, 36, 33, + 35, 53, 74, 85, 90, 90, 88, 90, 93, 92, 87, 92, 93, 95, 94, 92, + 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, 93, 92, 92, + 91, 91, 91, 92, 92, 92, 35, 38, 39, 36, 36, 40, 40, 37, 38, 39, + 39, 39, 40, 40, 40, 41, 43, 42, 42, 41, 41, 41, 42, 42, 43, 41, + 42, 45, 46, 39, 25, 11, 5, 3, 11, 13, 9, 16, 27, 31, 29, 28, + 30, 34, 39, 51, 72, 89, 114, 123, 132, 139, 148, 156, 158, 153, 163, 167, + 171, 173, 175, 173, 175, 174, 176, 178, 186, 185, 180, 172, 178, 185, 184, 181, + 180, 176, 176, 175, 180, 181, 186, 184, 187, 184, 187, 187, 194, 196, 190, 189, + 191, 190, 191, 188, 189, 189, 195, 202, 202, 198, 201, 209, 211, 206, 195, 211, + 212, 207, 210, 208, 207, 215, 205, 201, 200, 203, 205, 201, 201, 203, 202, 200, + 200, 198, 195, 190, 186, 183, 193, 186, 190, 190, 183, 186, 191, 187, 190, 178, + 173, 179, 184, 181, 178, 177, 175, 169, 164, 161, 161, 164, 169, 173, 158, 161, + 162, 154, 142, 133, 132, 133, 92, 66, 41, 32, 39, 43, 38, 27, 30, 27, + 31, 33, 29, 26, 39, 58, 77, 85, 88, 89, 91, 93, 92, 87, 92, 93, + 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, 90, 93, 93, + 93, 92, 92, 91, 91, 91, 92, 92, 92, 35, 38, 39, 36, 37, 40, 40, + 37, 39, 39, 39, 40, 40, 40, 41, 41, 43, 42, 42, 41, 41, 42, 42, + 43, 40, 41, 42, 39, 33, 23, 14, 5, 11, 7, 15, 18, 12, 18, 28, + 31, 32, 29, 33, 48, 68, 88, 106, 124, 131, 134, 136, 141, 153, 162, 161, + 154, 161, 164, 168, 171, 173, 170, 173, 173, 176, 176, 182, 185, 188, 182, 184, + 186, 187, 183, 184, 181, 183, 181, 184, 182, 187, 187, 191, 189, 191, 190, 195, + 195, 192, 192, 196, 195, 196, 192, 191, 189, 193, 204, 208, 202, 201, 207, 209, + 205, 200, 216, 213, 207, 213, 209, 200, 206, 205, 207, 214, 222, 220, 209, 203, + 203, 205, 200, 197, 197, 198, 197, 199, 202, 190, 186, 194, 197, 191, 193, 199, + 195, 182, 175, 176, 185, 188, 182, 181, 185, 179, 171, 165, 162, 162, 167, 169, + 170, 179, 164, 154, 160, 167, 157, 140, 128, 139, 108, 73, 49, 41, 39, 37, + 33, 29, 30, 30, 27, 29, 32, 35, 39, 57, 75, 89, 92, 90, 89, 90, + 89, 92, 93, 95, 94, 92, 92, 95, 96, 94, 93, 93, 93, 93, 92, 91, + 90, 93, 93, 93, 92, 92, 91, 91, 91, 92, 92, 92, 35, 39, 39, 36, + 37, 40, 40, 36, 41, 39, 40, 40, 40, 41, 41, 43, 42, 42, 42, 41, + 41, 42, 43, 44, 43, 44, 40, 29, 14, 7, 9, 12, 14, 9, 15, 18, + 16, 23, 32, 32, 29, 26, 37, 63, 94, 116, 124, 130, 138, 146, 148, 149, + 152, 159, 163, 163, 165, 169, 173, 176, 176, 176, 176, 179, 174, 172, 173, 183, + 191, 191, 187, 184, 189, 188, 188, 189, 190, 190, 190, 185, 185, 188, 191, 192, + 192, 191, 191, 191, 192, 194, 197, 199, 199, 196, 193, 190, 198, 214, 224, 213, + 206, 205, 209, 204, 211, 221, 213, 204, 221, 220, 214, 219, 223, 214, 210, 205, + 200, 196, 203, 214, 210, 209, 208, 209, 205, 200, 194, 192, 200, 198, 204, 204, + 192, 190, 196, 192, 186, 184, 189, 197, 193, 180, 178, 183, 169, 165, 162, 165, + 169, 172, 169, 164, 173, 169, 168, 169, 153, 137, 140, 156, 132, 128, 118, 94, + 68, 49, 43, 45, 30, 35, 29, 21, 27, 41, 37, 23, 37, 65, 89, 94, + 87, 85, 86, 91, 92, 93, 95, 94, 92, 92, 95, 96, 92, 93, 93, 93, + 93, 92, 91, 90, 93, 93, 93, 92, 92, 91, 91, 91, 94, 94, 94, 35, + 37, 37, 37, 35, 35, 35, 33, 36, 34, 34, 35, 35, 36, 36, 38, 45, + 47, 46, 43, 42, 43, 43, 45, 48, 37, 25, 16, 15, 17, 18, 16, 11, + 13, 25, 26, 22, 29, 34, 27, 29, 42, 62, 92, 127, 135, 131, 135, 144, + 147, 152, 156, 159, 162, 166, 168, 170, 170, 171, 173, 175, 178, 181, 182, 171, + 177, 183, 184, 183, 182, 185, 189, 196, 188, 190, 192, 187, 187, 188, 176, 182, + 187, 192, 192, 188, 186, 190, 194, 186, 199, 207, 200, 188, 187, 194, 200, 201, + 202, 201, 196, 201, 207, 213, 210, 212, 206, 205, 204, 212, 213, 214, 210, 209, + 203, 207, 212, 209, 200, 199, 206, 211, 215, 215, 209, 204, 204, 204, 202, 206, + 205, 204, 201, 194, 189, 197, 206, 191, 192, 189, 183, 181, 184, 185, 181, 180, + 172, 163, 160, 166, 168, 167, 163, 169, 168, 165, 164, 159, 155, 151, 147, 149, + 147, 142, 132, 120, 101, 68, 37, 32, 36, 35, 26, 27, 33, 28, 18, 45, + 46, 58, 76, 89, 88, 85, 87, 88, 89, 91, 94, 94, 96, 96, 96, 92, + 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 90, 90, 89, 89, 91, 96, + 98, 98, 35, 37, 37, 37, 35, 35, 33, 33, 35, 35, 34, 34, 35, 35, + 35, 37, 47, 48, 46, 45, 46, 47, 46, 46, 35, 26, 17, 12, 12, 16, + 17, 17, 27, 20, 24, 24, 22, 29, 38, 35, 34, 59, 82, 107, 130, 139, + 139, 145, 146, 148, 150, 154, 158, 161, 163, 164, 173, 173, 174, 175, 177, 178, + 178, 179, 175, 179, 182, 183, 184, 184, 187, 190, 187, 179, 181, 187, 188, 192, + 193, 182, 188, 188, 189, 189, 188, 187, 187, 187, 187, 194, 196, 192, 188, 191, + 195, 197, 198, 203, 208, 208, 210, 210, 206, 199, 206, 208, 212, 218, 223, 224, + 220, 217, 202, 204, 209, 216, 217, 214, 215, 218, 205, 213, 216, 212, 208, 209, + 211, 212, 208, 201, 197, 202, 205, 200, 192, 188, 191, 194, 193, 186, 182, 183, + 184, 183, 179, 173, 168, 168, 171, 171, 166, 160, 169, 166, 163, 162, 162, 160, + 154, 152, 151, 152, 147, 141, 135, 124, 103, 83, 52, 38, 31, 35, 35, 23, + 21, 27, 31, 33, 39, 57, 73, 83, 87, 87, 87, 89, 92, 92, 94, 95, + 96, 95, 92, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 90, 90, 89, + 89, 91, 95, 97, 97, 35, 37, 37, 37, 35, 35, 35, 35, 37, 37, 37, + 37, 36, 36, 37, 39, 46, 45, 44, 44, 47, 47, 44, 41, 22, 17, 12, + 11, 14, 20, 21, 21, 21, 17, 27, 38, 36, 33, 33, 27, 45, 82, 108, + 122, 134, 141, 145, 151, 153, 151, 151, 155, 161, 164, 164, 162, 172, 173, 175, + 176, 176, 175, 174, 173, 178, 178, 179, 180, 181, 183, 187, 188, 184, 174, 178, + 185, 189, 196, 198, 186, 196, 192, 190, 191, 192, 192, 189, 186, 196, 196, 194, + 191, 194, 200, 200, 196, 200, 202, 201, 198, 198, 202, 204, 202, 204, 208, 212, + 214, 212, 210, 207, 206, 216, 220, 220, 213, 207, 202, 198, 193, 206, 214, 218, + 213, 208, 208, 209, 209, 208, 201, 198, 202, 205, 200, 191, 186, 187, 194, 196, + 189, 183, 182, 183, 183, 177, 173, 171, 173, 176, 174, 167, 160, 170, 166, 162, + 163, 165, 165, 159, 156, 154, 156, 152, 146, 143, 139, 133, 122, 91, 58, 34, + 34, 39, 33, 28, 28, 25, 25, 27, 37, 55, 76, 85, 89, 89, 91, 92, + 92, 94, 94, 94, 93, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, + 92, 92, 91, 91, 91, 93, 94, 94, 36, 38, 38, 38, 36, 36, 36, 36, + 36, 37, 37, 37, 36, 36, 36, 39, 40, 39, 40, 43, 46, 43, 34, 27, + 16, 14, 13, 16, 22, 26, 27, 26, 40, 28, 29, 32, 27, 29, 41, 48, + 59, 101, 126, 130, 139, 145, 148, 151, 160, 156, 154, 158, 166, 170, 169, 166, + 168, 169, 172, 174, 174, 173, 171, 170, 178, 176, 175, 176, 179, 182, 185, 185, + 194, 183, 184, 189, 192, 198, 198, 185, 193, 193, 193, 193, 192, 192, 190, 188, + 198, 198, 196, 195, 198, 203, 200, 194, 193, 196, 196, 193, 194, 200, 204, 205, + 205, 207, 207, 203, 198, 197, 201, 206, 207, 215, 216, 210, 210, 218, 220, 216, + 204, 207, 209, 207, 207, 209, 207, 203, 205, 204, 205, 202, 195, 189, 194, 203, + 178, 188, 193, 188, 180, 179, 180, 181, 175, 173, 172, 174, 176, 175, 168, 163, + 170, 165, 161, 162, 166, 167, 162, 159, 164, 163, 159, 151, 144, 139, 137, 135, + 115, 100, 72, 43, 32, 38, 37, 27, 29, 31, 29, 28, 39, 61, 79, 88, + 89, 89, 91, 92, 94, 93, 94, 93, 94, 92, 94, 92, 94, 92, 94, 92, + 95, 93, 95, 92, 94, 91, 93, 91, 93, 91, 93, 36, 38, 38, 38, 38, + 38, 36, 36, 37, 38, 36, 36, 37, 37, 35, 36, 38, 38, 40, 42, 41, + 35, 24, 16, 15, 17, 20, 22, 27, 29, 30, 31, 33, 31, 40, 44, 33, + 31, 42, 48, 77, 110, 130, 134, 146, 154, 153, 155, 161, 157, 154, 158, 166, + 170, 170, 167, 164, 166, 169, 172, 174, 174, 173, 172, 177, 175, 173, 174, 179, + 181, 182, 182, 199, 188, 190, 193, 192, 195, 194, 183, 187, 191, 194, 193, 189, + 187, 189, 192, 186, 192, 196, 195, 197, 199, 197, 193, 181, 193, 205, 210, 209, + 207, 201, 194, 202, 206, 208, 207, 204, 207, 215, 223, 225, 228, 221, 206, 198, + 201, 201, 196, 201, 200, 199, 201, 209, 215, 211, 203, 202, 203, 205, 203, 197, + 192, 197, 206, 173, 183, 190, 187, 180, 179, 181, 182, 176, 174, 171, 171, 173, + 173, 170, 167, 167, 163, 159, 160, 164, 166, 163, 161, 167, 165, 162, 155, 146, + 139, 137, 137, 122, 130, 118, 79, 45, 33, 38, 38, 32, 34, 32, 27, 27, + 44, 69, 88, 89, 89, 91, 92, 94, 93, 94, 93, 95, 94, 95, 94, 95, + 94, 95, 94, 96, 95, 96, 94, 95, 93, 94, 93, 93, 91, 93, 39, 39, + 39, 39, 39, 39, 37, 37, 37, 37, 36, 36, 37, 37, 35, 35, 38, 39, + 40, 37, 35, 27, 18, 15, 19, 21, 25, 27, 31, 32, 32, 34, 27, 32, + 44, 43, 36, 43, 59, 59, 98, 120, 132, 136, 152, 161, 159, 160, 157, 154, + 152, 154, 158, 162, 163, 162, 163, 165, 168, 171, 174, 175, 176, 176, 176, 176, + 177, 177, 180, 181, 182, 183, 192, 184, 190, 194, 191, 193, 193, 184, 189, 195, + 200, 198, 193, 190, 193, 198, 181, 189, 196, 197, 197, 200, 201, 200, 187, 197, + 204, 204, 201, 200, 198, 194, 196, 202, 208, 210, 207, 206, 208, 211, 198, 200, + 200, 198, 201, 211, 220, 224, 214, 210, 204, 202, 208, 213, 207, 196, 203, 198, + 197, 204, 209, 204, 196, 190, 177, 185, 191, 187, 183, 183, 185, 184, 177, 174, + 171, 170, 171, 172, 172, 172, 164, 162, 160, 160, 162, 163, 162, 162, 161, 159, + 159, 158, 154, 146, 145, 146, 144, 129, 118, 113, 94, 64, 43, 33, 33, 28, + 30, 26, 23, 30, 55, 79, 86, 88, 90, 90, 92, 94, 94, 94, 95, 95, + 95, 95, 95, 95, 95, 95, 96, 96, 96, 95, 95, 94, 94, 94, 93, 91, + 93, 39, 40, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38, 39, + 37, 36, 37, 34, 28, 22, 16, 17, 20, 23, 26, 32, 34, 35, 35, 38, + 41, 58, 55, 48, 37, 43, 82, 118, 126, 126, 137, 139, 143, 157, 159, 157, + 162, 153, 151, 149, 148, 148, 150, 151, 152, 159, 160, 162, 164, 167, 169, 171, + 172, 171, 174, 177, 177, 175, 174, 178, 181, 180, 178, 188, 194, 191, 192, 194, + 187, 195, 197, 199, 198, 195, 193, 193, 195, 189, 194, 196, 195, 195, 200, 202, + 201, 197, 200, 197, 189, 186, 192, 200, 205, 197, 200, 202, 201, 197, 194, 194, + 195, 221, 218, 216, 215, 212, 210, 213, 219, 216, 215, 210, 203, 202, 205, 203, + 198, 204, 196, 195, 201, 204, 198, 189, 183, 182, 187, 189, 186, 183, 184, 183, + 181, 177, 175, 174, 173, 174, 174, 174, 174, 162, 163, 163, 162, 160, 160, 162, + 165, 161, 157, 158, 162, 161, 154, 151, 153, 156, 133, 118, 126, 129, 107, 74, + 46, 39, 25, 24, 28, 27, 25, 41, 65, 84, 86, 90, 90, 92, 92, 95, + 96, 95, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 97, 97, 96, 96, + 94, 94, 92, 94, 40, 40, 40, 40, 39, 39, 39, 39, 40, 40, 40, 41, + 39, 40, 40, 38, 34, 33, 28, 21, 12, 10, 16, 26, 29, 33, 39, 41, + 41, 42, 45, 48, 47, 65, 84, 97, 117, 152, 167, 149, 150, 152, 148, 150, + 158, 153, 151, 161, 154, 153, 151, 148, 144, 144, 146, 148, 156, 156, 157, 159, + 161, 163, 165, 167, 164, 169, 174, 174, 170, 168, 172, 176, 177, 177, 191, 196, + 192, 191, 195, 189, 194, 192, 190, 189, 190, 188, 185, 182, 198, 197, 192, 187, + 188, 193, 195, 192, 191, 198, 201, 198, 195, 199, 205, 207, 201, 200, 197, 194, + 194, 196, 202, 206, 205, 200, 202, 208, 208, 201, 203, 212, 200, 205, 207, 202, + 200, 206, 212, 216, 200, 201, 202, 199, 190, 182, 184, 191, 187, 190, 189, 184, + 182, 183, 181, 177, 176, 176, 176, 176, 177, 177, 176, 175, 162, 165, 166, 164, + 159, 158, 163, 167, 167, 161, 160, 164, 164, 157, 151, 152, 140, 149, 148, 134, + 123, 118, 106, 84, 52, 27, 21, 33, 32, 23, 32, 53, 83, 86, 87, 90, + 92, 93, 95, 96, 95, 95, 97, 95, 97, 95, 97, 95, 98, 96, 98, 95, + 97, 94, 96, 94, 94, 93, 94, 41, 42, 40, 40, 40, 40, 39, 38, 38, + 39, 39, 42, 44, 42, 38, 32, 37, 24, 13, 11, 13, 18, 25, 34, 35, + 41, 46, 45, 49, 60, 71, 80, 121, 132, 145, 153, 156, 156, 162, 166, 155, + 155, 153, 154, 155, 156, 158, 159, 158, 159, 158, 155, 150, 146, 144, 145, 138, + 142, 147, 149, 150, 153, 157, 161, 164, 158, 159, 168, 174, 171, 174, 182, 181, + 177, 176, 181, 192, 195, 191, 186, 209, 205, 201, 196, 193, 193, 194, 196, 196, + 197, 199, 200, 195, 189, 192, 198, 187, 193, 200, 204, 202, 198, 194, 192, 195, + 198, 200, 200, 198, 198, 200, 203, 200, 205, 205, 203, 213, 226, 225, 214, 204, + 196, 192, 201, 211, 211, 204, 199, 210, 192, 182, 187, 192, 188, 185, 189, 187, + 185, 177, 177, 182, 175, 169, 180, 158, 173, 179, 170, 165, 170, 172, 167, 175, + 170, 166, 168, 171, 168, 156, 145, 157, 154, 158, 166, 169, 162, 157, 157, 152, + 150, 147, 144, 140, 136, 133, 124, 88, 38, 25, 41, 36, 23, 32, 53, 74, + 91, 91, 80, 85, 90, 92, 97, 95, 94, 93, 90, 94, 97, 96, 89, 94, + 93, 94, 93, 94, 94, 95, 95, 89, 96, 96, 40, 42, 40, 40, 40, 40, + 40, 39, 42, 44, 43, 41, 37, 36, 40, 42, 27, 15, 8, 14, 24, 29, + 33, 38, 36, 53, 72, 83, 94, 111, 128, 138, 152, 158, 164, 165, 161, 158, + 158, 159, 153, 153, 150, 150, 150, 150, 151, 151, 156, 154, 152, 152, 153, 151, + 147, 143, 138, 140, 140, 138, 137, 138, 143, 146, 152, 157, 167, 173, 170, 164, + 168, 177, 180, 178, 180, 185, 194, 197, 196, 193, 192, 192, 192, 193, 194, 195, + 197, 198, 196, 197, 200, 202, 199, 194, 196, 202, 201, 199, 196, 193, 191, 194, + 200, 204, 198, 201, 203, 203, 201, 200, 201, 203, 204, 211, 211, 203, 202, 209, + 211, 205, 195, 193, 196, 204, 207, 204, 200, 197, 194, 187, 189, 198, 200, 191, + 186, 188, 199, 193, 181, 176, 180, 177, 172, 176, 178, 171, 174, 184, 181, 166, + 158, 161, 163, 164, 162, 158, 153, 153, 158, 163, 160, 158, 160, 165, 167, 161, + 159, 162, 163, 153, 144, 142, 146, 145, 136, 121, 110, 90, 70, 42, 24, 30, + 39, 31, 61, 87, 98, 93, 95, 91, 83, 83, 88, 93, 94, 90, 89, 90, + 88, 85, 88, 88, 89, 89, 89, 89, 89, 91, 91, 98, 94, 38, 41, 41, + 42, 42, 41, 41, 42, 44, 43, 41, 41, 39, 38, 36, 33, 11, 10, 11, + 15, 23, 32, 49, 63, 101, 120, 139, 144, 141, 145, 152, 159, 159, 164, 167, + 166, 162, 158, 157, 159, 160, 159, 156, 154, 153, 153, 153, 153, 160, 156, 154, + 157, 162, 162, 156, 149, 148, 146, 143, 137, 133, 132, 134, 136, 143, 142, 146, + 152, 158, 165, 172, 177, 176, 177, 183, 187, 190, 192, 195, 195, 189, 190, 192, + 193, 193, 193, 192, 191, 194, 195, 199, 203, 201, 197, 198, 203, 197, 205, 215, + 221, 219, 212, 204, 199, 200, 202, 204, 204, 202, 201, 200, 200, 196, 205, 210, + 202, 195, 200, 206, 208, 209, 205, 201, 196, 190, 186, 191, 199, 203, 194, 188, + 187, 181, 172, 172, 178, 180, 177, 171, 168, 173, 177, 174, 170, 189, 172, 163, + 168, 167, 157, 150, 152, 159, 164, 169, 169, 164, 159, 158, 159, 158, 158, 160, + 162, 161, 157, 159, 165, 168, 160, 153, 149, 149, 146, 139, 127, 125, 124, 108, + 65, 38, 47, 48, 24, 47, 73, 86, 87, 92, 93, 92, 96, 81, 89, 94, + 91, 86, 86, 86, 85, 87, 87, 87, 87, 87, 87, 87, 89, 89, 97, 94, + 39, 40, 41, 41, 43, 43, 42, 43, 42, 36, 34, 41, 47, 42, 23, 5, + 11, 17, 24, 24, 23, 40, 78, 113, 125, 140, 156, 157, 155, 152, 153, 152, + 157, 159, 162, 160, 158, 156, 157, 159, 164, 164, 160, 159, 158, 158, 158, 158, + 161, 159, 159, 162, 165, 165, 160, 154, 156, 154, 150, 144, 138, 134, 132, 131, + 123, 127, 136, 144, 150, 156, 163, 169, 170, 174, 181, 184, 184, 184, 188, 191, + 193, 193, 194, 194, 193, 192, 191, 190, 192, 193, 197, 201, 199, 195, 195, 199, + 201, 201, 201, 199, 197, 197, 199, 201, 199, 201, 202, 202, 201, 198, 197, 193, + 190, 200, 208, 204, 200, 202, 207, 210, 191, 198, 209, 215, 208, 192, 181, 178, + 195, 189, 186, 189, 191, 191, 195, 201, 197, 199, 203, 202, 199, 203, 203, 192, + 184, 189, 184, 175, 177, 186, 182, 170, 167, 163, 162, 167, 173, 171, 161, 150, + 152, 156, 160, 159, 157, 154, 156, 161, 159, 165, 171, 164, 151, 142, 143, 143, + 133, 122, 120, 104, 79, 65, 53, 35, 52, 70, 77, 78, 85, 84, 82, 84, + 77, 83, 86, 84, 82, 84, 86, 84, 85, 85, 85, 84, 84, 84, 84, 84, + 81, 89, 86, 39, 42, 41, 41, 43, 43, 42, 43, 39, 38, 39, 42, 42, + 33, 15, 1, 22, 25, 31, 37, 46, 71, 109, 142, 137, 147, 152, 155, 157, + 158, 155, 150, 166, 165, 165, 160, 157, 152, 151, 151, 157, 156, 156, 156, 156, + 157, 158, 159, 155, 157, 159, 159, 157, 155, 153, 152, 153, 152, 150, 146, 141, + 135, 128, 124, 106, 117, 133, 144, 144, 139, 144, 155, 160, 166, 173, 176, 179, + 180, 184, 188, 188, 188, 188, 190, 192, 194, 197, 198, 195, 194, 196, 199, 198, + 194, 193, 197, 196, 196, 196, 194, 192, 193, 195, 198, 201, 200, 200, 200, 200, + 198, 196, 192, 193, 198, 204, 205, 203, 202, 200, 197, 214, 201, 187, 182, 184, + 191, 205, 217, 198, 194, 197, 206, 209, 200, 186, 176, 168, 163, 165, 157, 137, + 136, 140, 133, 133, 152, 164, 166, 173, 183, 183, 175, 175, 164, 153, 151, 158, + 163, 163, 160, 149, 156, 161, 160, 155, 153, 154, 156, 150, 160, 170, 167, 154, + 144, 144, 146, 144, 125, 128, 131, 114, 91, 70, 56, 41, 54, 59, 66, 79, + 81, 79, 79, 77, 75, 73, 70, 73, 78, 77, 73, 75, 75, 74, 74, 73, + 73, 72, 72, 73, 80, 77, 40, 43, 41, 42, 42, 43, 41, 42, 38, 45, + 47, 37, 21, 11, 13, 21, 27, 23, 27, 48, 77, 104, 125, 136, 162, 164, + 164, 161, 162, 165, 161, 153, 164, 163, 161, 159, 156, 154, 152, 151, 154, 154, + 154, 155, 156, 158, 159, 160, 159, 161, 162, 160, 156, 154, 154, 155, 153, 153, + 152, 151, 148, 141, 132, 125, 126, 96, 80, 97, 123, 134, 142, 153, 149, 155, + 163, 169, 175, 179, 185, 189, 186, 186, 186, 186, 187, 189, 192, 193, 198, 195, + 195, 198, 198, 195, 195, 198, 189, 196, 205, 210, 209, 203, 197, 194, 203, 201, + 199, 199, 199, 199, 198, 194, 185, 189, 194, 198, 201, 200, 196, 191, 188, 189, + 199, 212, 216, 205, 189, 178, 187, 180, 173, 169, 164, 150, 130, 115, 125, 104, + 99, 90, 64, 62, 75, 75, 71, 71, 80, 95, 102, 108, 127, 150, 167, 170, + 171, 167, 160, 156, 158, 160, 151, 159, 163, 161, 159, 158, 158, 156, 153, 153, + 155, 157, 160, 153, 147, 139, 142, 135, 136, 134, 125, 121, 112, 92, 64, 64, + 52, 47, 59, 67, 75, 85, 82, 79, 75, 72, 75, 79, 77, 70, 74, 73, + 73, 72, 72, 71, 70, 70, 67, 73, 69, 42, 44, 44, 44, 42, 42, 42, + 42, 41, 43, 38, 24, 9, 5, 15, 30, 25, 26, 38, 65, 97, 120, 133, + 141, 150, 154, 156, 154, 154, 161, 162, 161, 152, 152, 153, 154, 155, 155, 154, + 152, 156, 156, 156, 157, 158, 160, 161, 162, 167, 165, 162, 161, 160, 160, 160, + 159, 158, 156, 155, 154, 151, 146, 137, 131, 132, 70, 27, 43, 79, 100, 122, + 142, 143, 147, 154, 161, 168, 173, 177, 179, 184, 185, 186, 186, 187, 187, 186, + 186, 197, 193, 191, 194, 195, 194, 196, 200, 198, 195, 190, 186, 186, 191, 199, + 206, 203, 200, 196, 195, 197, 198, 198, 195, 185, 185, 187, 191, 193, 192, 190, + 189, 190, 185, 183, 185, 182, 172, 161, 155, 142, 136, 129, 124, 124, 123, 119, + 114, 81, 46, 42, 46, 25, 23, 37, 36, 45, 38, 35, 40, 44, 53, 78, + 106, 131, 143, 160, 169, 169, 163, 157, 154, 158, 162, 161, 158, 157, 161, 160, + 156, 158, 155, 153, 153, 157, 154, 149, 142, 143, 139, 140, 138, 132, 135, 134, + 119, 120, 113, 89, 64, 52, 43, 44, 57, 74, 76, 79, 78, 80, 82, 79, + 74, 77, 76, 76, 75, 74, 73, 72, 70, 62, 66, 62, 45, 44, 44, 44, + 44, 42, 42, 41, 44, 34, 19, 11, 10, 13, 16, 20, 29, 44, 64, 89, + 107, 125, 146, 163, 166, 173, 172, 165, 156, 155, 157, 157, 159, 159, 159, 159, + 160, 159, 156, 153, 155, 155, 155, 156, 157, 158, 159, 160, 166, 159, 153, 155, + 160, 163, 161, 157, 159, 156, 152, 150, 146, 142, 135, 128, 97, 54, 29, 38, + 44, 42, 73, 119, 144, 147, 151, 156, 161, 164, 165, 166, 169, 173, 179, 185, + 190, 192, 191, 191, 191, 186, 183, 186, 189, 188, 193, 198, 190, 194, 199, 202, + 202, 201, 200, 200, 199, 196, 191, 190, 193, 195, 196, 193, 198, 196, 194, 191, + 185, 179, 178, 180, 172, 162, 152, 146, 141, 135, 133, 136, 137, 141, 142, 142, + 141, 136, 132, 128, 70, 28, 28, 45, 30, 25, 31, 23, 26, 39, 41, 32, + 31, 42, 49, 47, 87, 92, 106, 129, 153, 167, 167, 162, 160, 162, 157, 152, + 153, 160, 160, 156, 158, 162, 163, 158, 152, 147, 151, 155, 154, 142, 146, 150, + 137, 125, 123, 122, 112, 124, 121, 105, 84, 59, 46, 51, 57, 64, 75, 78, + 76, 77, 76, 73, 72, 72, 71, 70, 70, 70, 69, 66, 57, 62, 59, 44, + 48, 51, 48, 45, 44, 44, 40, 44, 25, 8, 6, 12, 17, 17, 22, 27, + 55, 76, 91, 118, 141, 153, 167, 156, 162, 169, 167, 163, 159, 163, 165, 170, + 167, 164, 161, 159, 158, 158, 156, 154, 159, 154, 152, 157, 157, 155, 161, 160, + 156, 151, 151, 153, 155, 157, 157, 153, 157, 149, 139, 150, 126, 144, 116, 50, + 16, 25, 31, 31, 29, 28, 72, 106, 127, 148, 156, 157, 163, 167, 169, 175, + 169, 177, 185, 179, 179, 184, 182, 189, 182, 194, 194, 167, 162, 186, 197, 202, + 189, 183, 188, 194, 190, 184, 182, 185, 186, 185, 183, 181, 178, 176, 173, 165, + 162, 160, 158, 157, 156, 155, 155, 155, 153, 150, 149, 150, 151, 150, 151, 150, + 173, 129, 149, 150, 121, 145, 101, 17, 17, 20, 20, 20, 20, 20, 21, 27, + 33, 36, 34, 29, 29, 34, 40, 48, 53, 71, 89, 125, 154, 155, 170, 160, + 170, 166, 155, 154, 154, 157, 167, 156, 164, 169, 163, 159, 155, 157, 153, 149, + 146, 149, 152, 147, 137, 130, 128, 129, 135, 127, 119, 121, 104, 71, 46, 38, + 31, 48, 68, 72, 72, 72, 68, 70, 62, 68, 73, 66, 62, 68, 67, 59, + 56, 55, 44, 46, 47, 49, 49, 48, 43, 36, 20, 13, 11, 16, 19, 18, + 15, 20, 43, 74, 92, 108, 130, 143, 148, 156, 164, 167, 169, 169, 169, 167, + 170, 169, 171, 168, 165, 163, 161, 160, 159, 159, 157, 162, 157, 154, 158, 157, + 155, 159, 156, 152, 149, 150, 152, 153, 154, 155, 156, 135, 169, 137, 133, 130, + 127, 45, 24, 12, 28, 27, 28, 29, 22, 42, 44, 75, 113, 139, 155, 160, + 156, 147, 148, 147, 159, 168, 160, 161, 171, 174, 182, 165, 171, 175, 165, 163, + 161, 146, 155, 159, 163, 165, 165, 167, 171, 176, 168, 168, 170, 169, 168, 165, + 166, 163, 162, 160, 159, 158, 158, 158, 158, 159, 164, 161, 159, 158, 159, 160, + 159, 161, 162, 150, 163, 146, 149, 130, 141, 37, 19, 21, 21, 22, 22, 22, + 22, 24, 31, 33, 32, 31, 30, 30, 32, 33, 37, 42, 52, 53, 84, 121, + 133, 153, 158, 167, 163, 160, 166, 163, 151, 147, 154, 160, 163, 161, 158, 158, + 157, 154, 153, 149, 147, 146, 143, 137, 135, 139, 126, 136, 134, 130, 132, 126, + 111, 101, 76, 47, 38, 47, 56, 67, 75, 67, 75, 61, 61, 60, 54, 57, + 67, 64, 70, 63, 60, 45, 44, 47, 53, 55, 50, 34, 23, 6, 10, 16, + 23, 20, 15, 16, 26, 43, 75, 98, 119, 143, 153, 154, 161, 169, 166, 164, + 164, 167, 166, 167, 164, 168, 167, 165, 163, 162, 161, 160, 160, 158, 163, 157, + 154, 157, 155, 151, 155, 151, 148, 147, 149, 151, 150, 151, 149, 153, 134, 152, + 142, 116, 133, 68, 6, 17, 23, 35, 24, 25, 35, 26, 25, 36, 41, 48, + 56, 74, 94, 110, 115, 111, 108, 119, 123, 113, 110, 119, 124, 128, 101, 85, + 77, 78, 93, 98, 87, 64, 101, 137, 151, 151, 154, 158, 159, 166, 166, 166, + 167, 167, 166, 168, 167, 172, 171, 170, 169, 168, 168, 168, 168, 171, 169, 167, + 167, 168, 169, 168, 167, 168, 155, 155, 158, 141, 146, 89, 7, 22, 21, 22, + 21, 22, 23, 22, 25, 33, 32, 29, 28, 30, 31, 29, 27, 31, 37, 42, + 31, 50, 84, 101, 128, 149, 159, 159, 159, 168, 168, 161, 160, 153, 156, 157, + 156, 158, 160, 156, 151, 154, 149, 147, 147, 145, 141, 139, 142, 131, 142, 139, + 132, 131, 130, 129, 134, 116, 85, 62, 49, 42, 47, 57, 56, 66, 62, 71, + 75, 70, 72, 74, 60, 57, 53, 54, 49, 49, 52, 57, 53, 40, 22, 12, + 15, 16, 18, 20, 16, 13, 18, 31, 40, 73, 100, 125, 150, 158, 160, 166, + 167, 166, 164, 162, 162, 161, 161, 161, 166, 166, 165, 164, 163, 163, 161, 161, + 157, 162, 156, 152, 155, 151, 146, 151, 148, 147, 148, 148, 150, 149, 148, 145, + 149, 142, 129, 123, 129, 86, 15, 25, 25, 32, 33, 23, 24, 33, 32, 29, + 26, 27, 28, 28, 32, 35, 39, 39, 44, 39, 46, 48, 38, 33, 39, 40, + 44, 45, 45, 42, 42, 49, 50, 42, 44, 98, 150, 165, 166, 171, 174, 170, + 178, 177, 177, 177, 177, 176, 179, 177, 186, 185, 183, 180, 178, 176, 175, 175, + 173, 172, 170, 170, 171, 172, 171, 169, 167, 170, 137, 152, 153, 110, 31, 25, + 17, 17, 17, 17, 19, 22, 23, 25, 30, 31, 30, 29, 30, 30, 29, 28, + 32, 33, 40, 34, 42, 56, 67, 102, 121, 143, 155, 158, 163, 162, 161, 167, + 157, 157, 155, 154, 158, 160, 155, 147, 149, 147, 149, 153, 153, 147, 141, 140, + 139, 146, 140, 130, 127, 126, 129, 139, 127, 117, 109, 85, 49, 35, 40, 42, + 44, 49, 64, 67, 64, 69, 72, 58, 67, 68, 68, 62, 58, 50, 45, 35, + 22, 14, 15, 22, 19, 15, 16, 16, 15, 19, 32, 57, 85, 105, 127, 148, + 152, 153, 160, 165, 169, 169, 167, 161, 158, 161, 165, 164, 164, 164, 165, 165, + 164, 163, 163, 158, 163, 157, 153, 155, 150, 144, 149, 146, 145, 146, 147, 149, + 148, 144, 141, 141, 140, 134, 109, 124, 22, 17, 38, 28, 28, 24, 25, 24, + 23, 29, 28, 18, 25, 35, 39, 32, 23, 16, 12, 30, 21, 25, 32, 31, + 32, 38, 35, 24, 36, 40, 38, 41, 43, 47, 50, 86, 129, 164, 167, 166, + 177, 183, 179, 183, 182, 181, 178, 178, 176, 179, 180, 186, 185, 182, 180, 178, + 176, 176, 175, 175, 173, 172, 172, 173, 172, 170, 166, 165, 161, 157, 132, 156, + 34, 28, 28, 13, 13, 13, 15, 17, 21, 24, 27, 26, 30, 33, 32, 29, + 28, 30, 34, 34, 25, 34, 39, 42, 37, 42, 86, 99, 123, 139, 149, 160, + 158, 150, 150, 162, 160, 156, 154, 158, 160, 154, 145, 150, 147, 148, 153, 155, + 149, 143, 142, 141, 143, 136, 131, 133, 132, 133, 143, 122, 129, 136, 119, 78, + 53, 45, 39, 24, 22, 26, 24, 19, 30, 47, 49, 51, 60, 68, 66, 52, + 37, 26, 15, 8, 12, 24, 17, 13, 11, 16, 20, 19, 20, 29, 67, 90, + 109, 129, 148, 149, 151, 161, 159, 163, 168, 164, 158, 153, 157, 161, 161, 163, + 164, 165, 166, 166, 164, 164, 161, 166, 161, 157, 158, 153, 147, 150, 144, 143, + 144, 145, 147, 145, 142, 139, 131, 143, 126, 136, 50, 16, 31, 27, 24, 27, + 19, 33, 34, 20, 26, 24, 31, 28, 27, 22, 17, 16, 21, 31, 19, 7, + 9, 18, 20, 25, 28, 25, 35, 34, 21, 19, 31, 34, 40, 55, 113, 143, + 168, 169, 170, 178, 180, 172, 184, 183, 179, 175, 174, 175, 176, 176, 181, 181, + 180, 179, 179, 180, 181, 181, 178, 177, 175, 175, 175, 173, 170, 166, 156, 156, + 165, 142, 85, 11, 37, 11, 13, 14, 16, 19, 22, 24, 28, 29, 23, 29, + 34, 33, 29, 27, 31, 36, 37, 24, 31, 38, 42, 35, 37, 76, 107, 113, + 112, 119, 144, 159, 161, 163, 164, 163, 159, 155, 157, 159, 154, 146, 158, 150, + 145, 146, 149, 148, 147, 149, 143, 143, 135, 134, 137, 132, 126, 133, 136, 135, + 140, 131, 107, 84, 63, 38, 15, 6, 9, 11, 4, 6, 19, 24, 13, 27, + 42, 46, 31, 20, 15, 12, 7, 12, 22, 16, 14, 15, 19, 22, 20, 23, + 34, 64, 87, 107, 128, 148, 151, 152, 164, 154, 158, 161, 161, 157, 153, 153, + 154, 160, 162, 164, 166, 167, 167, 166, 165, 161, 167, 162, 158, 160, 154, 147, + 151, 144, 142, 141, 141, 141, 140, 137, 135, 127, 143, 116, 125, 2, 33, 24, + 21, 27, 32, 21, 37, 38, 23, 29, 20, 22, 19, 21, 25, 24, 16, 13, + 15, 30, 19, 23, 28, 24, 25, 31, 29, 22, 28, 29, 39, 53, 42, 40, + 61, 138, 161, 183, 187, 188, 191, 189, 180, 186, 185, 181, 177, 177, 176, 177, + 178, 181, 182, 182, 182, 183, 184, 185, 186, 181, 179, 177, 176, 176, 173, 169, + 164, 153, 161, 146, 138, 15, 29, 21, 11, 17, 19, 22, 24, 24, 25, 26, + 26, 23, 26, 29, 29, 27, 25, 26, 27, 34, 30, 36, 34, 40, 40, 33, + 56, 112, 115, 107, 104, 121, 140, 155, 170, 160, 160, 157, 153, 154, 156, 153, + 146, 160, 151, 144, 146, 149, 148, 147, 148, 144, 145, 139, 138, 137, 127, 120, + 130, 144, 138, 141, 138, 130, 118, 92, 57, 29, 10, 14, 27, 22, 13, 13, + 13, 20, 24, 29, 18, 7, 6, 17, 23, 16, 11, 13, 25, 22, 19, 19, + 17, 19, 28, 43, 65, 87, 107, 127, 145, 146, 145, 157, 159, 158, 160, 162, + 163, 160, 156, 154, 159, 162, 164, 166, 167, 168, 166, 166, 159, 165, 160, 157, + 158, 153, 146, 150, 142, 140, 138, 137, 138, 137, 135, 134, 136, 124, 129, 58, + 29, 20, 18, 28, 28, 39, 22, 28, 28, 21, 31, 14, 33, 23, 18, 23, + 25, 22, 19, 19, 19, 12, 18, 22, 15, 17, 26, 26, 29, 35, 31, 36, + 47, 40, 61, 107, 167, 176, 181, 177, 176, 180, 184, 184, 187, 183, 181, 178, + 176, 178, 179, 182, 183, 184, 183, 182, 182, 182, 182, 183, 181, 179, 177, 176, + 175, 171, 167, 159, 158, 157, 139, 90, 11, 32, 0, 30, 20, 23, 25, 25, + 25, 23, 23, 21, 27, 25, 25, 26, 27, 26, 23, 20, 25, 34, 43, 31, + 37, 44, 25, 26, 94, 120, 131, 122, 113, 109, 120, 140, 156, 158, 156, 153, + 153, 155, 153, 149, 154, 148, 146, 151, 154, 151, 144, 141, 139, 143, 142, 143, + 142, 132, 128, 142, 131, 133, 142, 150, 146, 142, 123, 89, 55, 19, 10, 24, + 25, 18, 20, 23, 26, 22, 20, 15, 17, 17, 17, 18, 19, 20, 20, 24, + 23, 24, 23, 19, 17, 23, 39, 80, 99, 109, 121, 145, 158, 160, 162, 158, + 162, 164, 164, 166, 165, 159, 151, 151, 153, 157, 163, 168, 171, 169, 167, 163, + 160, 158, 157, 154, 152, 146, 141, 147, 140, 143, 146, 136, 135, 134, 128, 150, + 106, 112, 35, 21, 33, 15, 23, 31, 32, 29, 32, 33, 32, 26, 18, 14, + 23, 24, 22, 23, 18, 18, 30, 22, 23, 22, 20, 19, 22, 26, 29, 31, + 29, 30, 47, 66, 77, 112, 158, 180, 183, 187, 187, 188, 187, 186, 186, 187, + 184, 184, 182, 180, 180, 178, 179, 184, 186, 185, 184, 184, 183, 182, 182, 182, + 185, 183, 176, 170, 170, 169, 163, 167, 137, 142, 38, 26, 15, 15, 17, 19, + 19, 29, 33, 24, 22, 24, 19, 30, 22, 29, 29, 20, 31, 39, 24, 31, + 33, 35, 37, 38, 37, 35, 34, 77, 122, 118, 126, 130, 126, 99, 125, 132, + 150, 162, 159, 153, 153, 159, 161, 159, 153, 151, 154, 153, 147, 143, 146, 146, + 144, 142, 142, 139, 135, 132, 134, 128, 139, 141, 137, 139, 138, 128, 112, 52, + 17, 23, 43, 31, 26, 28, 14, 26, 23, 22, 11, 10, 12, 12, 13, 14, + 17, 18, 22, 22, 23, 24, 21, 19, 27, 41, 67, 99, 116, 127, 138, 142, + 144, 154, 169, 169, 166, 161, 161, 163, 163, 158, 166, 165, 162, 161, 163, 165, + 165, 165, 162, 160, 158, 158, 156, 153, 148, 146, 143, 137, 139, 142, 135, 136, + 137, 130, 132, 126, 84, 25, 26, 26, 19, 23, 26, 26, 25, 25, 28, 26, + 20, 15, 18, 23, 20, 18, 20, 16, 14, 24, 19, 21, 23, 25, 27, 27, + 28, 28, 35, 31, 40, 86, 140, 163, 166, 174, 176, 179, 183, 184, 183, 182, + 184, 183, 189, 189, 187, 185, 184, 182, 182, 182, 182, 184, 183, 183, 183, 182, + 182, 182, 179, 179, 175, 171, 171, 173, 170, 161, 155, 141, 110, 11, 13, 15, + 12, 24, 17, 17, 21, 17, 11, 19, 28, 28, 12, 23, 37, 37, 27, 27, + 28, 21, 29, 31, 33, 35, 36, 36, 35, 32, 55, 115, 119, 124, 128, 125, + 120, 118, 121, 133, 143, 147, 149, 155, 158, 157, 155, 148, 145, 148, 149, 146, + 142, 144, 142, 144, 145, 143, 136, 131, 131, 136, 135, 140, 141, 143, 145, 144, + 130, 118, 98, 59, 41, 39, 24, 22, 29, 29, 34, 31, 28, 11, 10, 11, + 11, 12, 15, 20, 21, 18, 17, 20, 22, 20, 19, 27, 38, 88, 115, 131, + 140, 152, 155, 153, 157, 160, 167, 172, 172, 171, 166, 157, 148, 160, 160, 160, + 162, 166, 169, 169, 169, 159, 158, 157, 157, 155, 152, 147, 146, 142, 136, 137, + 140, 134, 137, 137, 128, 122, 138, 49, 21, 33, 24, 28, 24, 23, 23, 23, + 23, 25, 23, 18, 12, 19, 19, 15, 16, 23, 19, 15, 23, 34, 30, 25, + 22, 24, 26, 30, 32, 30, 51, 79, 121, 163, 177, 172, 172, 177, 179, 184, + 185, 186, 185, 187, 187, 189, 189, 187, 185, 185, 185, 185, 185, 182, 182, 182, + 182, 182, 181, 181, 181, 178, 175, 171, 169, 174, 178, 173, 161, 155, 148, 79, + 4, 13, 21, 10, 23, 31, 33, 26, 19, 26, 35, 30, 12, 19, 25, 21, + 19, 26, 29, 27, 28, 25, 26, 29, 31, 33, 33, 33, 32, 32, 95, 123, + 122, 127, 126, 140, 114, 122, 127, 133, 141, 151, 160, 161, 158, 159, 151, 146, + 148, 152, 151, 148, 147, 140, 146, 149, 145, 135, 131, 133, 139, 138, 136, 137, + 145, 149, 143, 131, 122, 103, 70, 41, 32, 25, 19, 21, 27, 19, 20, 18, + 9, 11, 14, 16, 18, 19, 22, 22, 19, 17, 20, 22, 21, 19, 25, 35, + 72, 105, 123, 130, 135, 138, 143, 155, 151, 161, 170, 175, 173, 166, 155, 144, + 151, 155, 162, 168, 173, 172, 166, 162, 158, 158, 158, 157, 153, 149, 144, 143, + 147, 142, 143, 141, 134, 135, 134, 123, 125, 114, 21, 23, 29, 25, 28, 19, + 23, 23, 22, 23, 24, 22, 18, 15, 17, 16, 13, 18, 29, 25, 20, 28, + 24, 22, 24, 28, 36, 39, 41, 40, 73, 112, 142, 157, 164, 164, 169, 182, + 177, 178, 183, 184, 186, 187, 187, 189, 186, 187, 187, 185, 185, 184, 186, 186, + 185, 184, 184, 183, 182, 181, 180, 180, 178, 178, 175, 173, 176, 179, 175, 166, + 150, 124, 41, 15, 18, 27, 16, 22, 9, 29, 31, 18, 21, 27, 21, 9, + 24, 36, 27, 20, 29, 27, 24, 37, 25, 26, 28, 31, 33, 34, 34, 34, + 25, 62, 127, 123, 128, 133, 143, 121, 133, 133, 135, 139, 148, 156, 159, 160, + 163, 156, 150, 150, 154, 155, 152, 148, 143, 148, 149, 145, 138, 137, 137, 138, + 137, 129, 129, 142, 149, 141, 132, 127, 115, 86, 48, 35, 39, 35, 28, 35, + 22, 22, 22, 4, 7, 12, 16, 19, 19, 18, 17, 25, 22, 23, 25, 26, + 23, 25, 32, 51, 93, 122, 132, 137, 140, 153, 173, 158, 161, 161, 158, 159, + 161, 164, 163, 167, 169, 171, 173, 172, 166, 156, 150, 161, 162, 163, 162, 156, + 150, 145, 144, 150, 147, 148, 145, 138, 139, 135, 117, 129, 63, 8, 29, 18, + 26, 22, 13, 22, 22, 22, 21, 22, 19, 17, 15, 16, 15, 13, 21, 32, + 27, 26, 36, 33, 44, 65, 86, 100, 103, 99, 94, 131, 154, 163, 166, 173, + 177, 177, 181, 170, 174, 178, 179, 181, 182, 184, 186, 186, 187, 187, 187, 187, + 186, 188, 186, 189, 188, 186, 185, 183, 181, 180, 179, 177, 180, 180, 176, 173, + 174, 172, 166, 146, 88, 13, 21, 12, 25, 26, 37, 76, 100, 84, 38, 10, + 5, 14, 31, 11, 37, 44, 40, 38, 22, 14, 31, 26, 27, 29, 31, 33, + 34, 35, 36, 32, 31, 120, 122, 128, 138, 131, 133, 134, 134, 133, 133, 134, + 139, 147, 157, 161, 156, 151, 149, 152, 154, 150, 145, 145, 146, 144, 140, 139, + 142, 138, 131, 132, 126, 128, 141, 149, 143, 135, 132, 139, 102, 52, 28, 33, + 33, 28, 32, 26, 26, 24, 7, 10, 15, 20, 22, 21, 20, 17, 22, 18, + 19, 21, 22, 19, 19, 25, 26, 48, 65, 88, 121, 137, 137, 139, 151, 156, + 159, 159, 159, 164, 167, 166, 180, 177, 172, 169, 166, 164, 160, 157, 164, 166, + 168, 167, 160, 154, 150, 149, 150, 149, 152, 149, 143, 143, 136, 114, 116, 28, + 16, 33, 19, 28, 22, 18, 18, 18, 19, 17, 17, 17, 16, 15, 16, 18, + 17, 23, 31, 25, 32, 53, 90, 98, 113, 127, 139, 148, 155, 159, 152, 162, + 163, 161, 169, 170, 168, 172, 171, 175, 179, 181, 182, 183, 184, 186, 187, 187, + 188, 189, 189, 189, 191, 190, 189, 188, 187, 185, 183, 181, 180, 179, 175, 180, + 181, 176, 171, 169, 168, 163, 168, 102, 35, 28, 15, 25, 32, 71, 119, 156, + 164, 149, 131, 86, 25, 0, 32, 32, 25, 28, 38, 35, 25, 25, 28, 28, + 29, 31, 32, 34, 35, 34, 36, 23, 97, 121, 130, 140, 127, 143, 135, 135, + 136, 134, 130, 130, 140, 152, 157, 158, 156, 153, 153, 155, 152, 148, 143, 144, + 139, 135, 137, 143, 138, 126, 129, 127, 133, 141, 148, 145, 140, 136, 131, 95, + 59, 40, 37, 34, 29, 22, 24, 24, 22, 11, 12, 17, 19, 21, 20, 20, + 21, 17, 15, 14, 17, 20, 17, 17, 22, 37, 39, 35, 55, 101, 128, 132, + 129, 138, 149, 159, 163, 164, 164, 161, 157, 170, 167, 164, 164, 165, 167, 167, + 167, 160, 164, 168, 168, 162, 157, 153, 154, 154, 154, 157, 153, 145, 143, 133, + 106, 72, 20, 26, 26, 25, 22, 23, 24, 17, 18, 18, 16, 16, 13, 14, + 16, 17, 20, 19, 25, 30, 28, 51, 85, 130, 131, 133, 133, 133, 141, 156, + 168, 162, 173, 175, 174, 175, 168, 168, 180, 175, 178, 182, 184, 184, 184, 185, + 186, 186, 186, 189, 189, 190, 189, 192, 190, 187, 185, 184, 184, 183, 182, 182, + 181, 176, 179, 178, 174, 173, 172, 168, 160, 176, 145, 81, 26, 24, 28, 26, + 111, 150, 161, 146, 141, 160, 144, 104, 94, 99, 69, 46, 40, 39, 40, 36, + 27, 27, 27, 28, 28, 29, 31, 32, 32, 32, 36, 63, 117, 131, 134, 138, + 143, 140, 139, 141, 141, 134, 129, 133, 143, 150, 157, 160, 157, 155, 157, 156, + 153, 142, 146, 143, 137, 137, 143, 140, 129, 126, 132, 138, 139, 141, 142, 141, + 135, 126, 99, 89, 77, 57, 49, 49, 35, 41, 39, 38, 13, 12, 11, 12, + 13, 14, 16, 19, 20, 18, 18, 22, 23, 23, 23, 26, 20, 32, 28, 25, + 41, 66, 98, 128, 139, 148, 151, 150, 150, 155, 160, 161, 158, 159, 161, 164, + 167, 167, 163, 161, 156, 159, 166, 166, 162, 158, 155, 157, 158, 158, 159, 153, + 145, 142, 127, 97, 30, 23, 27, 12, 25, 10, 18, 21, 18, 19, 20, 20, + 17, 16, 17, 20, 18, 22, 23, 26, 31, 35, 69, 114, 135, 141, 155, 156, + 152, 150, 155, 160, 170, 169, 166, 171, 181, 175, 173, 181, 171, 174, 179, 181, + 180, 180, 181, 182, 181, 183, 183, 184, 185, 186, 187, 187, 183, 183, 183, 184, + 184, 183, 183, 183, 180, 179, 176, 174, 178, 177, 172, 160, 147, 158, 101, 12, + 30, 32, 16, 134, 138, 162, 158, 153, 166, 152, 136, 155, 144, 130, 123, 97, + 43, 19, 25, 29, 25, 27, 27, 27, 28, 29, 31, 31, 27, 54, 40, 115, + 132, 130, 153, 141, 144, 140, 141, 143, 136, 126, 123, 128, 137, 148, 156, 152, + 151, 152, 153, 152, 142, 150, 150, 142, 138, 144, 143, 135, 124, 135, 142, 136, + 135, 138, 138, 130, 132, 104, 97, 78, 41, 37, 53, 44, 48, 45, 40, 16, + 11, 7, 10, 15, 20, 21, 20, 17, 11, 15, 18, 15, 21, 25, 18, 28, + 26, 19, 18, 17, 12, 33, 73, 128, 132, 137, 143, 147, 150, 153, 155, 164, + 160, 158, 159, 161, 164, 164, 162, 159, 160, 163, 162, 160, 159, 164, 165, 164, + 156, 149, 141, 146, 155, 123, 68, 22, 27, 25, 17, 18, 24, 24, 21, 24, + 21, 18, 17, 19, 24, 30, 32, 31, 29, 26, 28, 50, 83, 113, 122, 136, + 136, 142, 142, 143, 147, 153, 159, 162, 171, 176, 174, 173, 174, 175, 170, 177, + 180, 180, 176, 175, 180, 183, 183, 178, 184, 186, 185, 184, 185, 187, 188, 186, + 184, 181, 182, 185, 185, 184, 182, 180, 174, 175, 178, 172, 171, 173, 165, 156, + 106, 73, 36, 32, 24, 23, 108, 149, 145, 151, 162, 166, 160, 162, 166, 144, + 155, 155, 143, 119, 60, 16, 15, 21, 23, 35, 40, 32, 30, 38, 38, 43, + 37, 53, 98, 139, 138, 138, 150, 142, 149, 152, 147, 136, 132, 129, 126, 127, + 140, 155, 155, 153, 151, 151, 149, 146, 147, 146, 143, 138, 134, 132, 131, 136, + 133, 137, 143, 146, 141, 135, 134, 134, 112, 104, 64, 49, 52, 41, 53, 47, + 43, 42, 19, 20, 20, 20, 19, 17, 17, 17, 22, 15, 18, 21, 18, 21, + 24, 18, 14, 20, 24, 27, 26, 10, 7, 20, 61, 104, 130, 123, 127, 151, + 157, 143, 154, 155, 155, 153, 152, 153, 156, 159, 158, 162, 163, 160, 156, 155, + 163, 165, 169, 160, 156, 151, 146, 136, 89, 29, 38, 36, 35, 33, 27, 19, + 18, 24, 23, 23, 24, 26, 28, 25, 21, 16, 38, 27, 40, 75, 108, 118, + 126, 134, 132, 136, 144, 149, 149, 149, 151, 153, 160, 166, 170, 168, 169, 173, + 175, 173, 173, 176, 176, 174, 177, 181, 181, 177, 187, 180, 173, 170, 173, 177, + 175, 174, 185, 184, 182, 182, 182, 184, 183, 182, 181, 174, 175, 176, 168, 169, + 170, 164, 169, 124, 81, 27, 24, 31, 25, 88, 148, 135, 137, 152, 159, 150, + 146, 146, 129, 138, 144, 151, 153, 121, 61, 18, 40, 26, 17, 24, 35, 37, + 39, 41, 45, 33, 51, 77, 127, 140, 141, 143, 141, 147, 148, 143, 136, 133, + 129, 124, 133, 123, 136, 158, 159, 152, 153, 155, 150, 149, 148, 146, 143, 141, + 139, 138, 140, 137, 139, 144, 146, 141, 134, 131, 135, 118, 102, 62, 33, 45, + 39, 54, 53, 51, 50, 15, 21, 26, 26, 21, 16, 15, 16, 23, 16, 19, + 22, 18, 21, 24, 17, 15, 23, 21, 19, 25, 21, 14, 17, 25, 58, 100, + 127, 139, 142, 139, 134, 144, 149, 153, 151, 147, 146, 153, 160, 155, 159, 161, + 157, 154, 154, 163, 167, 148, 155, 162, 149, 119, 103, 93, 77, 38, 37, 28, + 20, 27, 37, 29, 11, 27, 23, 18, 18, 24, 30, 35, 36, 33, 37, 67, + 107, 134, 131, 130, 136, 135, 140, 147, 151, 152, 153, 157, 160, 159, 163, 165, + 163, 166, 171, 175, 176, 176, 178, 177, 176, 179, 182, 179, 173, 169, 170, 174, + 178, 180, 178, 173, 171, 183, 182, 180, 180, 180, 183, 183, 182, 182, 174, 174, + 174, 168, 169, 168, 162, 161, 124, 76, 18, 23, 37, 13, 29, 89, 136, 157, + 133, 128, 154, 162, 141, 152, 149, 144, 138, 142, 139, 90, 24, 10, 34, 36, + 25, 32, 41, 35, 28, 46, 28, 48, 50, 103, 142, 144, 138, 143, 146, 145, + 142, 139, 138, 133, 126, 133, 114, 125, 148, 152, 157, 161, 150, 154, 151, 147, + 146, 147, 147, 145, 142, 141, 138, 139, 143, 146, 141, 134, 131, 132, 126, 103, + 69, 15, 30, 22, 35, 38, 42, 46, 12, 17, 22, 23, 21, 18, 16, 16, + 20, 13, 17, 20, 16, 20, 23, 17, 19, 25, 17, 9, 18, 27, 28, 32, + 14, 18, 44, 83, 112, 121, 124, 128, 140, 144, 148, 147, 144, 144, 149, 155, + 152, 153, 155, 155, 156, 158, 165, 165, 170, 149, 141, 143, 147, 154, 151, 136, + 139, 108, 68, 38, 25, 23, 30, 38, 27, 29, 31, 30, 27, 24, 23, 22, + 49, 80, 109, 116, 117, 123, 131, 131, 136, 136, 139, 139, 141, 146, 156, 164, + 159, 161, 163, 163, 165, 168, 172, 174, 177, 179, 179, 175, 174, 175, 173, 169, + 171, 172, 173, 169, 163, 163, 175, 188, 178, 180, 181, 181, 182, 183, 181, 181, + 182, 174, 173, 173, 166, 167, 166, 161, 169, 151, 115, 56, 38, 40, 21, 29, + 39, 63, 107, 143, 145, 130, 132, 147, 140, 135, 141, 136, 137, 157, 151, 108, + 19, 37, 38, 32, 37, 34, 28, 29, 43, 34, 45, 40, 71, 143, 146, 143, + 148, 148, 145, 144, 145, 146, 140, 131, 129, 123, 128, 128, 129, 158, 170, 142, + 156, 150, 145, 144, 147, 148, 145, 140, 138, 135, 136, 141, 144, 140, 135, 132, + 122, 127, 107, 86, 14, 27, 16, 23, 24, 33, 40, 18, 17, 16, 18, 20, + 21, 18, 16, 17, 11, 15, 19, 16, 21, 25, 18, 7, 25, 23, 15, 20, + 22, 17, 17, 18, 26, 24, 23, 52, 101, 130, 130, 136, 138, 140, 140, 139, + 138, 140, 141, 150, 149, 148, 150, 156, 158, 157, 153, 157, 147, 152, 165, 170, + 172, 166, 151, 148, 131, 137, 148, 110, 41, 9, 20, 22, 25, 28, 26, 26, + 38, 58, 73, 102, 126, 138, 128, 116, 122, 133, 136, 129, 128, 130, 128, 128, + 131, 139, 148, 149, 152, 156, 160, 163, 164, 167, 170, 166, 172, 173, 167, 163, + 164, 167, 167, 166, 169, 176, 181, 176, 165, 161, 165, 171, 175, 180, 184, 184, + 182, 180, 179, 181, 174, 175, 175, 166, 167, 168, 159, 152, 156, 140, 80, 27, + 6, 10, 36, 26, 30, 64, 119, 153, 149, 137, 131, 143, 140, 154, 154, 143, + 148, 145, 122, 105, 63, 26, 27, 34, 26, 25, 42, 36, 43, 41, 44, 42, + 132, 146, 153, 150, 149, 146, 145, 147, 149, 143, 134, 133, 131, 132, 123, 121, + 146, 164, 151, 157, 152, 146, 145, 148, 148, 143, 138, 135, 132, 133, 139, 143, + 140, 136, 134, 117, 123, 107, 100, 24, 30, 27, 28, 26, 36, 40, 26, 21, + 17, 17, 20, 21, 19, 15, 19, 13, 17, 21, 17, 21, 25, 19, 5, 21, + 23, 14, 17, 18, 15, 19, 28, 34, 33, 29, 34, 55, 84, 103, 124, 127, + 133, 136, 138, 137, 137, 135, 149, 147, 145, 145, 149, 149, 147, 143, 137, 152, + 176, 176, 153, 144, 153, 158, 145, 144, 141, 134, 122, 96, 57, 26, 30, 40, + 54, 63, 77, 99, 130, 151, 141, 135, 133, 135, 134, 126, 127, 133, 128, 132, + 135, 137, 133, 129, 129, 132, 135, 139, 145, 153, 158, 159, 163, 168, 162, 167, + 169, 166, 164, 167, 169, 168, 165, 157, 160, 177, 187, 181, 166, 157, 166, 172, + 178, 182, 182, 180, 178, 178, 179, 172, 175, 177, 168, 168, 168, 159, 165, 166, + 158, 130, 90, 58, 41, 33, 23, 44, 50, 51, 85, 140, 163, 147, 127, 121, + 133, 144, 147, 152, 152, 143, 142, 119, 85, 40, 12, 26, 39, 30, 31, 46, + 37, 48, 31, 105, 148, 158, 150, 149, 146, 144, 145, 148, 143, 135, 140, 133, + 130, 136, 133, 125, 136, 160, 157, 154, 151, 151, 151, 149, 144, 140, 136, 132, + 133, 138, 143, 140, 136, 135, 130, 122, 104, 100, 27, 16, 23, 20, 16, 24, + 27, 23, 22, 20, 20, 20, 21, 20, 19, 23, 16, 19, 22, 18, 20, 23, + 14, 12, 19, 15, 8, 14, 18, 21, 33, 22, 18, 28, 41, 31, 11, 17, + 43, 90, 102, 117, 125, 129, 132, 136, 140, 145, 146, 146, 142, 139, 140, 146, + 151, 174, 166, 164, 164, 163, 172, 170, 152, 147, 162, 155, 137, 142, 147, 103, + 42, 80, 98, 125, 142, 147, 142, 136, 132, 141, 132, 128, 132, 136, 132, 128, + 127, 134, 138, 142, 143, 138, 134, 132, 134, 130, 131, 135, 141, 146, 147, 152, + 159, 160, 161, 162, 163, 167, 168, 161, 151, 151, 126, 106, 106, 119, 135, 156, + 176, 164, 168, 173, 175, 175, 175, 177, 179, 179, 173, 176, 179, 173, 172, 171, + 159, 153, 149, 141, 139, 134, 115, 78, 29, 44, 23, 17, 29, 36, 49, 97, + 147, 153, 154, 145, 139, 144, 144, 138, 138, 132, 144, 144, 81, 12, 27, 49, + 22, 29, 43, 39, 46, 41, 73, 157, 159, 151, 152, 149, 146, 146, 148, 144, + 137, 138, 142, 137, 143, 143, 110, 100, 137, 153, 153, 154, 155, 153, 150, 146, + 143, 141, 137, 137, 140, 143, 140, 135, 134, 140, 117, 104, 104, 40, 6, 18, + 5, 3, 13, 18, 10, 15, 19, 20, 18, 17, 20, 23, 24, 16, 18, 20, + 14, 15, 17, 10, 15, 16, 13, 11, 19, 14, 13, 20, 29, 37, 37, 28, + 27, 31, 30, 25, 49, 70, 93, 108, 113, 119, 131, 142, 140, 146, 148, 142, + 136, 138, 154, 168, 164, 162, 163, 159, 155, 164, 162, 142, 142, 135, 139, 146, + 142, 126, 128, 141, 146, 142, 137, 135, 136, 139, 139, 138, 127, 141, 145, 130, + 125, 138, 140, 131, 131, 133, 136, 134, 131, 133, 136, 141, 132, 129, 131, 134, + 137, 135, 141, 150, 158, 155, 152, 155, 163, 162, 145, 126, 78, 73, 73, 75, + 72, 75, 97, 123, 162, 167, 169, 169, 169, 171, 176, 180, 177, 172, 176, 181, + 175, 174, 172, 159, 155, 160, 154, 145, 139, 140, 129, 88, 56, 39, 36, 44, + 42, 33, 47, 73, 110, 133, 135, 130, 142, 144, 139, 145, 152, 120, 131, 117, + 44, 19, 40, 39, 34, 40, 44, 43, 57, 54, 166, 158, 154, 156, 153, 150, + 148, 149, 146, 141, 127, 155, 149, 139, 141, 105, 77, 101, 147, 150, 154, 155, + 153, 149, 146, 145, 146, 142, 140, 143, 144, 140, 135, 133, 135, 106, 105, 115, + 64, 16, 29, 9, 11, 20, 26, 17, 19, 19, 16, 16, 21, 23, 21, 20, + 20, 20, 19, 18, 17, 15, 15, 16, 17, 17, 15, 16, 16, 18, 23, 24, + 29, 30, 30, 32, 30, 24, 15, 33, 13, 62, 112, 99, 106, 137, 133, 137, + 148, 139, 128, 140, 159, 162, 157, 161, 156, 150, 151, 153, 151, 140, 132, 146, + 135, 127, 126, 127, 127, 137, 147, 136, 135, 132, 131, 130, 131, 132, 133, 137, + 135, 138, 137, 134, 130, 125, 122, 142, 136, 132, 133, 140, 146, 142, 138, 142, + 139, 137, 137, 140, 139, 139, 136, 138, 142, 135, 128, 141, 147, 108, 56, 64, + 74, 45, 53, 63, 75, 84, 93, 141, 163, 166, 157, 160, 166, 172, 178, 172, + 170, 170, 173, 178, 179, 173, 165, 163, 162, 157, 146, 142, 142, 141, 135, 115, + 87, 55, 37, 39, 43, 40, 31, 40, 97, 147, 148, 132, 130, 138, 140, 138, + 143, 152, 119, 105, 39, 12, 48, 44, 37, 44, 54, 38, 77, 157, 169, 149, + 161, 159, 147, 143, 152, 151, 140, 131, 142, 142, 141, 145, 130, 98, 78, 114, + 159, 158, 162, 157, 150, 154, 141, 145, 144, 140, 135, 137, 139, 133, 125, 123, + 111, 106, 111, 72, 21, 26, 40, 28, 38, 58, 18, 20, 19, 16, 16, 20, + 22, 20, 19, 19, 19, 19, 18, 17, 16, 15, 18, 16, 18, 16, 15, 17, + 20, 23, 21, 25, 29, 29, 31, 33, 32, 25, 34, 14, 35, 69, 85, 115, + 138, 117, 111, 104, 103, 127, 154, 158, 163, 181, 139, 137, 137, 141, 145, 145, + 142, 136, 136, 132, 132, 134, 133, 128, 127, 131, 134, 133, 134, 133, 134, 134, + 132, 132, 133, 132, 132, 131, 130, 126, 123, 121, 134, 129, 125, 129, 135, 140, + 138, 136, 142, 142, 141, 144, 147, 145, 143, 139, 138, 135, 130, 118, 111, 98, + 82, 63, 50, 65, 69, 55, 52, 60, 68, 75, 92, 127, 152, 161, 171, 172, + 167, 166, 178, 177, 176, 173, 171, 169, 168, 168, 161, 162, 161, 153, 150, 153, + 150, 147, 139, 140, 128, 94, 54, 31, 36, 45, 26, 42, 73, 112, 143, 154, + 143, 125, 157, 144, 141, 134, 146, 95, 21, 12, 34, 40, 42, 49, 52, 99, + 167, 171, 150, 157, 158, 152, 148, 152, 149, 140, 133, 139, 137, 137, 140, 127, + 96, 74, 33, 108, 138, 144, 142, 145, 161, 154, 141, 142, 141, 137, 140, 141, + 134, 125, 135, 115, 101, 107, 81, 41, 38, 35, 51, 56, 64, 21, 24, 23, + 19, 18, 22, 22, 20, 20, 20, 21, 21, 21, 20, 19, 19, 20, 18, 19, + 18, 17, 20, 24, 28, 22, 25, 27, 27, 31, 35, 35, 30, 34, 30, 27, + 21, 26, 52, 65, 47, 31, 60, 106, 155, 174, 149, 127, 129, 135, 138, 142, + 147, 150, 150, 151, 149, 135, 133, 136, 138, 136, 130, 123, 123, 126, 127, 131, + 134, 134, 131, 126, 124, 125, 125, 125, 123, 122, 119, 118, 119, 123, 124, 122, + 124, 128, 132, 132, 134, 138, 142, 146, 151, 155, 154, 151, 147, 143, 134, 134, + 129, 109, 74, 56, 53, 50, 50, 26, 40, 41, 60, 51, 91, 106, 136, 155, + 163, 176, 180, 178, 180, 179, 180, 179, 175, 170, 170, 174, 179, 165, 165, 167, + 163, 161, 163, 160, 155, 148, 153, 152, 137, 116, 100, 98, 103, 87, 59, 44, + 64, 92, 110, 131, 149, 137, 134, 130, 136, 143, 118, 43, 24, 29, 46, 40, + 51, 83, 132, 178, 173, 153, 153, 153, 155, 154, 151, 145, 141, 138, 137, 136, + 136, 136, 125, 99, 77, 44, 61, 84, 130, 162, 149, 156, 165, 140, 142, 142, + 139, 141, 141, 135, 126, 122, 108, 97, 102, 86, 59, 60, 51, 64, 61, 55, + 22, 25, 24, 20, 19, 21, 21, 17, 19, 19, 20, 21, 21, 21, 20, 20, + 20, 20, 20, 18, 18, 21, 27, 31, 26, 28, 28, 26, 28, 32, 31, 27, + 27, 38, 33, 17, 19, 34, 36, 32, 30, 96, 144, 148, 143, 139, 133, 132, + 145, 150, 156, 157, 155, 151, 149, 147, 140, 136, 135, 132, 132, 130, 130, 130, + 122, 125, 128, 131, 130, 128, 124, 122, 126, 123, 123, 122, 120, 120, 121, 121, + 119, 120, 123, 123, 125, 126, 127, 131, 133, 138, 146, 153, 159, 160, 160, 158, + 154, 140, 135, 138, 129, 102, 79, 70, 53, 71, 58, 31, 46, 50, 88, 77, + 125, 144, 150, 149, 159, 166, 171, 181, 184, 185, 184, 180, 176, 174, 178, 182, + 172, 174, 175, 174, 171, 168, 164, 161, 168, 161, 156, 156, 159, 156, 148, 136, + 138, 118, 103, 100, 93, 87, 101, 125, 135, 147, 144, 145, 131, 118, 50, 33, + 32, 48, 38, 68, 127, 164, 181, 174, 158, 149, 147, 154, 154, 147, 141, 141, + 140, 137, 140, 142, 135, 126, 111, 93, 80, 44, 40, 85, 144, 136, 138, 150, + 142, 144, 143, 139, 139, 139, 135, 128, 123, 121, 113, 105, 74, 46, 50, 43, + 51, 54, 52, 22, 25, 24, 20, 19, 21, 20, 16, 19, 19, 20, 21, 21, + 21, 20, 20, 20, 21, 23, 20, 21, 24, 29, 33, 30, 31, 30, 27, 28, + 32, 29, 25, 33, 37, 30, 30, 47, 47, 36, 34, 60, 124, 153, 128, 120, + 139, 150, 148, 141, 148, 154, 153, 147, 137, 132, 128, 134, 132, 130, 126, 127, + 129, 132, 132, 128, 127, 128, 129, 129, 129, 128, 128, 130, 127, 126, 126, 126, + 127, 128, 129, 123, 123, 127, 125, 125, 125, 127, 130, 133, 138, 144, 148, 151, + 153, 156, 156, 155, 146, 134, 130, 133, 136, 129, 119, 88, 86, 23, 99, 36, + 50, 92, 111, 117, 136, 147, 151, 160, 162, 164, 171, 191, 189, 188, 186, 184, + 181, 177, 175, 179, 180, 182, 184, 183, 179, 175, 173, 169, 169, 167, 163, 158, + 155, 157, 157, 157, 151, 146, 142, 134, 122, 108, 101, 112, 117, 117, 128, 130, + 131, 58, 21, 35, 46, 42, 95, 165, 181, 179, 176, 163, 149, 142, 149, 151, + 144, 139, 141, 137, 133, 144, 148, 134, 127, 123, 111, 69, 61, 60, 50, 99, + 122, 143, 145, 145, 147, 144, 137, 135, 136, 133, 128, 114, 115, 109, 101, 72, + 48, 52, 43, 45, 49, 49, 21, 24, 24, 21, 20, 21, 20, 16, 20, 20, + 21, 21, 21, 20, 19, 20, 22, 23, 24, 25, 25, 25, 28, 31, 31, 32, + 31, 30, 32, 37, 34, 30, 29, 32, 33, 38, 41, 32, 29, 43, 84, 121, + 141, 141, 145, 146, 137, 130, 141, 145, 149, 147, 141, 132, 127, 123, 123, 125, + 128, 127, 129, 131, 131, 126, 127, 124, 123, 123, 123, 124, 126, 127, 125, 125, + 125, 125, 126, 127, 128, 129, 127, 128, 129, 128, 128, 128, 129, 130, 133, 138, + 143, 146, 147, 147, 149, 150, 143, 152, 151, 139, 135, 143, 143, 134, 141, 129, + 152, 239, 63, 43, 105, 104, 132, 146, 153, 157, 166, 167, 169, 178, 181, 182, + 185, 188, 190, 189, 185, 182, 185, 185, 190, 193, 194, 191, 189, 188, 174, 174, + 170, 165, 161, 161, 165, 170, 163, 164, 158, 146, 143, 147, 142, 134, 131, 122, + 122, 128, 134, 139, 84, 47, 41, 55, 64, 126, 183, 180, 176, 178, 168, 153, + 142, 145, 148, 144, 139, 137, 135, 126, 141, 150, 134, 129, 133, 121, 75, 62, + 75, 59, 105, 115, 132, 141, 142, 145, 144, 137, 135, 135, 132, 128, 116, 108, + 97, 97, 78, 54, 52, 36, 24, 26, 27, 21, 24, 25, 22, 22, 23, 22, + 18, 22, 22, 22, 22, 21, 20, 19, 18, 23, 26, 28, 29, 29, 28, 29, + 29, 29, 32, 31, 30, 33, 37, 34, 30, 15, 25, 38, 44, 42, 49, 79, + 108, 136, 143, 143, 145, 155, 154, 147, 149, 143, 142, 141, 139, 137, 132, 130, + 129, 121, 125, 129, 127, 130, 133, 133, 126, 122, 121, 121, 121, 120, 121, 122, + 122, 121, 121, 122, 123, 126, 127, 128, 126, 129, 130, 130, 131, 133, 134, 134, + 133, 135, 142, 150, 154, 154, 152, 153, 153, 143, 155, 160, 151, 143, 142, 136, + 127, 130, 157, 121, 44, 139, 131, 143, 139, 143, 150, 146, 146, 157, 162, 170, + 184, 178, 184, 191, 193, 194, 192, 193, 194, 190, 188, 193, 197, 198, 192, 191, + 194, 200, 189, 176, 172, 172, 172, 165, 158, 154, 167, 173, 167, 156, 154, 153, + 151, 152, 134, 135, 113, 104, 88, 51, 23, 57, 86, 109, 157, 182, 170, 174, + 177, 169, 158, 146, 146, 149, 149, 140, 131, 140, 122, 137, 151, 138, 136, 140, + 122, 86, 42, 62, 72, 133, 116, 109, 120, 133, 139, 143, 139, 137, 136, 132, + 127, 134, 122, 107, 103, 72, 34, 25, 9, 9, 10, 18, 19, 23, 25, 22, + 22, 24, 22, 18, 23, 23, 23, 22, 21, 20, 18, 18, 21, 26, 27, 29, + 29, 28, 27, 28, 27, 30, 28, 27, 29, 32, 28, 24, 41, 32, 30, 34, + 48, 81, 116, 130, 129, 143, 143, 139, 145, 150, 149, 154, 139, 135, 130, 125, + 124, 124, 125, 125, 130, 132, 132, 127, 129, 135, 139, 133, 124, 122, 125, 126, + 125, 125, 123, 123, 126, 127, 128, 130, 133, 134, 134, 132, 131, 130, 130, 134, + 138, 138, 138, 136, 134, 144, 156, 164, 166, 163, 164, 163, 162, 157, 148, 144, + 146, 148, 147, 142, 148, 109, 137, 147, 127, 149, 131, 140, 139, 149, 151, 157, + 172, 177, 184, 197, 194, 201, 207, 202, 193, 186, 188, 193, 192, 189, 190, 195, + 193, 187, 186, 190, 181, 179, 177, 178, 181, 183, 180, 180, 181, 176, 169, 165, + 163, 163, 164, 166, 168, 148, 165, 149, 152, 124, 85, 45, 75, 116, 147, 175, + 175, 161, 171, 174, 170, 161, 152, 149, 154, 155, 143, 129, 147, 122, 134, 152, + 143, 144, 145, 119, 81, 56, 87, 86, 151, 146, 132, 123, 123, 132, 140, 142, + 139, 139, 135, 128, 106, 106, 105, 105, 68, 24, 29, 30, 41, 38, 43, 20, + 20, 22, 21, 21, 20, 20, 19, 19, 21, 23, 22, 19, 18, 18, 18, 19, + 22, 24, 26, 24, 24, 25, 27, 25, 31, 33, 28, 24, 25, 24, 23, 26, + 38, 27, 46, 76, 122, 125, 127, 138, 147, 137, 148, 130, 117, 90, 104, 106, + 115, 118, 119, 122, 130, 136, 137, 127, 129, 133, 134, 136, 135, 137, 137, 123, + 120, 122, 122, 123, 125, 127, 128, 123, 129, 132, 131, 131, 133, 134, 134, 140, + 143, 144, 142, 140, 139, 141, 144, 147, 158, 160, 160, 165, 162, 160, 165, 167, + 162, 154, 150, 146, 142, 139, 137, 136, 135, 135, 137, 141, 142, 141, 138, 149, + 154, 156, 152, 149, 152, 165, 177, 197, 205, 203, 188, 181, 186, 188, 182, 174, + 177, 183, 187, 183, 178, 181, 188, 184, 182, 179, 178, 176, 175, 175, 176, 175, + 185, 187, 178, 176, 184, 187, 183, 173, 168, 171, 171, 160, 148, 126, 97, 120, + 142, 164, 174, 176, 175, 172, 167, 180, 164, 152, 154, 162, 158, 145, 134, 142, + 149, 137, 124, 142, 170, 157, 116, 98, 40, 75, 118, 144, 139, 156, 163, 130, + 116, 129, 143, 137, 135, 135, 122, 118, 108, 106, 107, 50, 51, 46, 38, 49, + 62, 64, 19, 19, 19, 19, 22, 22, 22, 22, 18, 20, 22, 21, 19, 18, + 19, 19, 19, 22, 24, 25, 22, 22, 23, 24, 26, 31, 30, 25, 22, 22, + 21, 21, 46, 42, 45, 90, 103, 118, 117, 130, 118, 140, 151, 108, 77, 47, + 23, 42, 48, 71, 100, 119, 131, 136, 133, 128, 135, 136, 138, 137, 136, 133, + 133, 133, 126, 124, 124, 125, 126, 128, 129, 130, 129, 134, 136, 134, 132, 134, + 134, 134, 142, 145, 147, 147, 147, 145, 148, 148, 146, 154, 156, 156, 162, 159, + 155, 163, 158, 156, 154, 150, 147, 143, 137, 134, 134, 133, 134, 139, 145, 148, + 150, 149, 151, 152, 153, 156, 156, 156, 156, 159, 171, 187, 194, 189, 186, 186, + 184, 175, 177, 175, 178, 184, 186, 182, 180, 181, 182, 181, 181, 180, 181, 181, + 181, 181, 178, 187, 189, 181, 178, 184, 184, 179, 194, 186, 184, 181, 173, 173, + 166, 149, 148, 162, 173, 174, 172, 172, 172, 169, 178, 169, 164, 168, 170, 163, + 149, 138, 131, 143, 150, 148, 146, 146, 133, 118, 96, 50, 91, 128, 150, 143, + 154, 155, 169, 133, 122, 132, 140, 147, 142, 120, 114, 103, 103, 105, 53, 45, + 43, 43, 70, 79, 80, 18, 20, 21, 22, 22, 23, 24, 24, 19, 20, 23, + 23, 21, 21, 22, 23, 19, 22, 24, 24, 23, 23, 23, 25, 27, 29, 28, + 24, 23, 23, 24, 26, 47, 39, 61, 116, 118, 126, 127, 136, 139, 147, 129, + 38, 29, 27, 49, 94, 90, 109, 129, 136, 138, 136, 133, 129, 134, 135, 135, + 134, 130, 127, 127, 125, 129, 127, 128, 128, 130, 131, 133, 134, 132, 137, 139, + 136, 135, 137, 138, 138, 138, 143, 147, 148, 148, 146, 148, 148, 143, 154, 152, + 153, 158, 155, 151, 158, 152, 152, 152, 151, 150, 145, 138, 134, 134, 133, 135, + 138, 146, 152, 157, 159, 160, 155, 152, 155, 160, 163, 159, 155, 157, 173, 185, + 185, 183, 182, 180, 170, 177, 168, 170, 179, 188, 188, 182, 177, 179, 179, 181, + 182, 182, 182, 183, 183, 181, 189, 191, 185, 182, 185, 183, 177, 188, 181, 179, + 174, 168, 175, 180, 171, 168, 175, 180, 178, 174, 172, 170, 168, 172, 169, 170, + 175, 174, 163, 149, 140, 132, 138, 152, 163, 153, 134, 123, 126, 89, 70, 119, + 138, 145, 136, 153, 161, 171, 135, 115, 120, 132, 142, 135, 114, 114, 103, 103, + 99, 49, 35, 37, 42, 53, 61, 61, 20, 22, 22, 22, 22, 23, 23, 23, + 21, 22, 25, 25, 24, 24, 27, 28, 19, 20, 22, 25, 25, 24, 26, 27, + 22, 22, 21, 23, 25, 29, 31, 33, 45, 48, 75, 119, 112, 137, 143, 132, + 139, 138, 83, 23, 33, 31, 53, 77, 114, 126, 135, 133, 131, 134, 139, 143, + 128, 129, 130, 130, 129, 127, 128, 128, 129, 129, 130, 130, 132, 133, 135, 136, + 133, 138, 140, 137, 136, 139, 141, 139, 135, 141, 144, 148, 146, 145, 143, 145, + 145, 155, 152, 152, 156, 152, 150, 156, 153, 155, 155, 154, 152, 147, 142, 136, + 133, 132, 132, 137, 142, 151, 158, 162, 165, 157, 150, 148, 153, 159, 162, 161, + 163, 171, 176, 173, 173, 175, 176, 173, 171, 164, 164, 173, 183, 185, 183, 180, + 177, 178, 181, 181, 182, 182, 182, 182, 184, 190, 193, 190, 189, 190, 186, 180, + 189, 186, 189, 186, 178, 182, 187, 180, 168, 174, 181, 184, 183, 180, 176, 172, + 171, 167, 169, 176, 177, 167, 154, 144, 147, 139, 141, 155, 157, 146, 135, 135, + 98, 85, 124, 130, 142, 141, 152, 152, 131, 118, 115, 120, 126, 127, 121, 110, + 110, 108, 102, 75, 29, 20, 24, 25, 38, 50, 54, 22, 24, 23, 22, 21, + 20, 20, 19, 20, 21, 22, 22, 21, 23, 25, 26, 16, 17, 20, 23, 23, + 24, 28, 29, 24, 21, 20, 24, 29, 31, 33, 37, 53, 57, 84, 126, 117, + 141, 144, 128, 128, 117, 28, 28, 36, 27, 45, 52, 102, 115, 129, 131, 131, + 131, 131, 129, 129, 130, 133, 134, 133, 132, 135, 137, 130, 130, 130, 131, 132, + 134, 135, 136, 137, 141, 142, 137, 135, 138, 139, 137, 136, 141, 144, 147, 144, + 143, 141, 141, 145, 154, 150, 148, 151, 147, 145, 153, 157, 157, 155, 151, 149, + 144, 141, 136, 131, 130, 129, 132, 134, 142, 148, 155, 159, 155, 150, 145, 145, + 150, 153, 157, 165, 168, 166, 164, 165, 168, 171, 172, 171, 165, 163, 167, 173, + 175, 176, 180, 177, 177, 177, 177, 179, 179, 180, 180, 182, 187, 190, 192, 193, + 193, 189, 184, 189, 188, 193, 190, 180, 183, 187, 180, 169, 170, 175, 181, 185, + 185, 182, 181, 175, 166, 163, 170, 176, 172, 161, 151, 151, 146, 143, 147, 153, + 154, 144, 134, 111, 94, 118, 120, 149, 152, 142, 125, 109, 114, 120, 123, 128, + 125, 117, 114, 104, 107, 94, 45, 13, 13, 24, 14, 33, 50, 59, 25, 24, + 23, 22, 20, 19, 17, 17, 18, 19, 19, 18, 18, 19, 22, 21, 15, 16, + 20, 22, 23, 23, 27, 28, 28, 22, 22, 28, 32, 31, 32, 35, 45, 47, + 74, 128, 127, 137, 135, 138, 136, 95, 2, 25, 27, 36, 74, 99, 116, 126, + 134, 135, 134, 131, 127, 122, 132, 133, 135, 133, 131, 131, 133, 133, 131, 131, + 131, 132, 133, 135, 136, 137, 142, 145, 144, 138, 134, 135, 136, 134, 140, 142, + 144, 146, 143, 142, 140, 142, 141, 148, 145, 143, 146, 145, 141, 149, 158, 159, + 154, 151, 147, 142, 139, 135, 132, 131, 130, 128, 129, 131, 136, 143, 149, 154, + 156, 154, 150, 148, 149, 153, 155, 156, 159, 160, 162, 163, 163, 165, 171, 169, + 167, 167, 168, 166, 169, 175, 176, 175, 174, 173, 176, 177, 179, 180, 179, 181, + 185, 189, 192, 192, 189, 185, 184, 180, 182, 178, 170, 176, 183, 177, 171, 165, + 161, 166, 171, 174, 176, 179, 172, 161, 154, 159, 167, 166, 159, 151, 141, 152, + 156, 152, 147, 147, 138, 127, 98, 105, 140, 132, 143, 131, 123, 120, 122, 126, + 121, 119, 130, 128, 119, 113, 106, 106, 87, 35, 22, 24, 35, 23, 30, 48, + 59, 22, 23, 22, 21, 20, 19, 17, 17, 19, 20, 20, 18, 15, 17, 20, + 21, 18, 16, 20, 20, 21, 21, 23, 24, 29, 24, 23, 30, 37, 35, 34, + 36, 39, 60, 79, 117, 119, 134, 132, 144, 130, 63, 29, 44, 53, 67, 84, + 103, 116, 118, 120, 120, 126, 133, 138, 135, 132, 131, 132, 129, 128, 126, 128, + 129, 132, 132, 133, 133, 134, 136, 138, 139, 141, 145, 144, 138, 136, 138, 139, + 138, 138, 140, 141, 142, 139, 140, 140, 142, 135, 144, 141, 140, 145, 145, 143, + 154, 158, 161, 158, 156, 153, 147, 142, 137, 133, 131, 130, 126, 125, 125, 128, + 134, 140, 143, 147, 148, 148, 150, 153, 156, 150, 151, 154, 156, 158, 158, 160, + 161, 169, 166, 168, 170, 170, 166, 168, 172, 173, 171, 171, 170, 172, 175, 180, + 182, 179, 178, 180, 186, 190, 190, 187, 184, 187, 183, 185, 183, 177, 183, 188, + 180, 171, 161, 156, 160, 165, 166, 167, 169, 171, 162, 156, 158, 161, 159, 155, + 152, 145, 153, 157, 154, 145, 140, 131, 124, 92, 112, 152, 135, 133, 114, 118, + 136, 135, 143, 130, 119, 128, 125, 112, 114, 111, 96, 73, 36, 41, 33, 39, + 34, 40, 55, 65, 20, 20, 20, 20, 20, 19, 18, 18, 23, 24, 23, 19, + 18, 19, 23, 24, 19, 18, 21, 20, 19, 18, 20, 22, 27, 21, 22, 33, + 41, 40, 37, 39, 56, 98, 104, 103, 100, 131, 133, 138, 128, 35, 55, 56, + 91, 124, 123, 135, 129, 130, 132, 132, 136, 138, 134, 127, 132, 132, 132, 132, + 129, 130, 131, 133, 134, 134, 134, 135, 136, 138, 139, 140, 136, 140, 141, 138, + 138, 143, 146, 145, 134, 133, 137, 136, 136, 136, 139, 141, 134, 141, 141, 140, + 148, 148, 149, 159, 159, 162, 164, 164, 161, 155, 146, 138, 132, 133, 132, 127, + 125, 124, 126, 131, 127, 128, 127, 129, 136, 145, 155, 160, 160, 154, 149, 148, + 151, 153, 157, 162, 162, 162, 166, 173, 176, 174, 173, 173, 172, 170, 169, 168, + 171, 177, 183, 187, 183, 181, 182, 187, 191, 191, 188, 186, 181, 179, 185, 187, + 181, 184, 182, 169, 172, 164, 162, 171, 176, 172, 167, 165, 176, 171, 168, 168, + 165, 160, 159, 159, 159, 151, 145, 148, 148, 143, 132, 126, 113, 110, 128, 115, + 135, 129, 128, 139, 136, 155, 148, 129, 127, 118, 109, 117, 108, 79, 57, 31, + 47, 24, 26, 31, 43, 54, 59, 18, 24, 25, 23, 21, 23, 22, 18, 22, + 18, 14, 16, 21, 23, 22, 18, 23, 16, 15, 16, 22, 22, 20, 17, 31, + 29, 42, 37, 34, 38, 35, 47, 82, 111, 107, 105, 107, 109, 125, 131, 121, + 54, 67, 99, 105, 116, 117, 127, 126, 128, 133, 137, 139, 138, 136, 132, 134, + 132, 133, 132, 134, 135, 135, 135, 140, 142, 143, 142, 140, 139, 140, 141, 145, + 142, 140, 139, 140, 140, 139, 136, 144, 139, 135, 131, 130, 129, 130, 132, 137, + 140, 144, 143, 142, 143, 148, 157, 161, 167, 164, 162, 137, 154, 140, 135, 130, + 133, 134, 131, 130, 133, 141, 144, 140, 142, 135, 130, 134, 134, 138, 151, 152, + 156, 157, 153, 147, 145, 150, 159, 163, 173, 176, 170, 165, 168, 173, 173, 168, + 170, 171, 170, 171, 173, 176, 180, 181, 182, 185, 188, 191, 191, 188, 185, 189, + 186, 183, 180, 176, 174, 175, 179, 168, 162, 165, 179, 185, 179, 176, 180, 164, + 168, 172, 173, 170, 167, 166, 164, 159, 147, 149, 156, 146, 139, 133, 125, 118, + 105, 129, 128, 129, 143, 138, 146, 154, 156, 147, 131, 121, 119, 116, 108, 97, + 70, 50, 29, 29, 31, 19, 35, 38, 53, 61, 20, 24, 25, 23, 23, 23, + 22, 18, 22, 22, 20, 19, 18, 20, 24, 24, 24, 22, 19, 18, 18, 20, + 22, 22, 36, 32, 43, 35, 35, 41, 37, 47, 98, 122, 113, 109, 112, 110, + 123, 122, 119, 74, 90, 104, 105, 123, 128, 129, 129, 129, 133, 137, 137, 136, + 132, 130, 132, 132, 131, 133, 134, 135, 135, 135, 136, 137, 139, 139, 138, 138, + 140, 142, 142, 140, 138, 138, 139, 139, 138, 136, 143, 139, 135, 132, 131, 130, + 131, 134, 139, 138, 140, 142, 145, 148, 149, 153, 152, 159, 152, 155, 139, 150, + 132, 131, 135, 125, 125, 133, 136, 144, 143, 130, 130, 138, 141, 142, 146, 138, + 128, 131, 143, 147, 151, 150, 147, 146, 148, 152, 162, 173, 177, 172, 169, 171, + 175, 174, 173, 173, 172, 171, 172, 172, 174, 176, 177, 181, 187, 193, 196, 197, + 196, 196, 182, 183, 184, 183, 180, 175, 172, 171, 170, 163, 166, 180, 185, 176, + 166, 163, 174, 176, 177, 173, 167, 161, 158, 155, 156, 149, 154, 159, 146, 137, + 134, 129, 110, 105, 133, 136, 138, 149, 145, 152, 148, 150, 144, 129, 121, 121, + 116, 108, 95, 58, 40, 27, 25, 28, 20, 30, 41, 55, 60, 20, 26, 27, + 22, 22, 25, 22, 19, 23, 25, 25, 22, 17, 18, 22, 28, 21, 22, 21, + 21, 18, 20, 27, 31, 32, 27, 36, 30, 31, 40, 36, 48, 111, 131, 117, + 112, 118, 115, 123, 116, 109, 90, 106, 106, 103, 125, 134, 126, 132, 132, 133, + 135, 135, 134, 130, 129, 132, 133, 134, 135, 134, 135, 136, 137, 134, 136, 138, + 138, 139, 140, 143, 146, 141, 139, 138, 138, 140, 140, 139, 137, 140, 137, 136, + 134, 133, 132, 135, 135, 140, 137, 138, 142, 148, 151, 151, 149, 146, 157, 144, + 147, 143, 142, 126, 125, 127, 119, 131, 134, 123, 133, 151, 149, 142, 148, 145, + 143, 149, 145, 137, 139, 134, 137, 142, 147, 149, 148, 146, 148, 162, 170, 174, + 173, 172, 173, 174, 173, 177, 174, 173, 172, 172, 172, 172, 171, 171, 177, 184, + 187, 185, 182, 181, 181, 181, 181, 180, 178, 174, 171, 168, 165, 169, 163, 167, + 182, 190, 185, 176, 172, 170, 171, 171, 168, 164, 161, 159, 157, 156, 153, 160, + 162, 145, 135, 131, 126, 101, 110, 138, 143, 145, 151, 148, 155, 145, 148, 141, + 127, 119, 120, 113, 102, 91, 41, 34, 32, 24, 28, 25, 31, 54, 65, 64, + 22, 26, 26, 24, 22, 25, 23, 20, 23, 23, 25, 23, 21, 19, 21, 23, + 17, 18, 20, 21, 25, 29, 33, 38, 29, 24, 36, 30, 30, 40, 38, 54, + 112, 130, 115, 115, 125, 127, 130, 120, 107, 100, 108, 110, 108, 127, 137, 127, + 132, 131, 131, 132, 132, 132, 130, 130, 135, 133, 134, 135, 136, 136, 138, 137, + 139, 141, 143, 143, 143, 145, 147, 150, 140, 139, 139, 140, 142, 142, 141, 139, + 136, 135, 134, 133, 133, 133, 136, 136, 141, 142, 142, 146, 148, 149, 148, 145, + 146, 159, 145, 144, 145, 132, 124, 123, 130, 122, 139, 145, 125, 126, 139, 135, + 149, 152, 148, 143, 153, 153, 149, 151, 137, 137, 140, 145, 150, 151, 148, 146, + 160, 166, 171, 173, 174, 173, 173, 173, 179, 176, 174, 172, 173, 174, 172, 171, + 182, 189, 196, 197, 192, 186, 185, 186, 190, 186, 178, 169, 165, 166, 166, 164, + 154, 154, 160, 173, 181, 179, 176, 176, 164, 164, 164, 162, 161, 160, 159, 157, + 160, 155, 159, 160, 144, 135, 127, 117, 98, 119, 140, 144, 147, 146, 145, 153, + 148, 147, 139, 124, 116, 114, 107, 95, 85, 31, 34, 38, 24, 30, 35, 38, + 41, 51, 49, 22, 27, 26, 23, 21, 25, 24, 21, 22, 20, 22, 23, 25, + 22, 18, 14, 20, 18, 19, 25, 34, 37, 35, 31, 30, 29, 41, 32, 28, + 36, 36, 57, 109, 131, 119, 122, 134, 137, 139, 129, 122, 111, 107, 119, 123, + 127, 132, 128, 129, 128, 128, 129, 130, 132, 133, 131, 135, 136, 136, 138, 139, + 138, 141, 139, 144, 146, 148, 148, 147, 146, 147, 148, 138, 137, 137, 138, 140, + 140, 138, 136, 134, 134, 134, 134, 136, 137, 140, 141, 144, 147, 151, 152, 149, + 146, 147, 146, 142, 154, 143, 141, 141, 126, 130, 115, 79, 70, 91, 124, 143, + 151, 149, 131, 137, 149, 153, 152, 161, 159, 148, 145, 146, 143, 141, 143, 148, + 150, 147, 146, 157, 161, 166, 170, 171, 170, 171, 172, 178, 176, 173, 172, 174, + 175, 175, 175, 177, 184, 193, 195, 192, 189, 189, 191, 192, 189, 179, 168, 164, + 166, 164, 158, 157, 164, 178, 189, 190, 184, 179, 179, 170, 168, 166, 163, 160, + 158, 155, 152, 159, 151, 151, 152, 143, 138, 128, 112, 98, 128, 140, 142, 149, + 144, 147, 155, 146, 144, 134, 121, 112, 111, 102, 88, 69, 27, 38, 41, 23, + 28, 38, 48, 58, 71, 70, 23, 27, 25, 22, 23, 25, 24, 21, 23, 19, + 18, 21, 23, 22, 15, 10, 26, 25, 25, 28, 34, 35, 29, 22, 30, 27, + 38, 29, 23, 29, 26, 43, 108, 136, 128, 133, 141, 140, 143, 134, 133, 120, + 104, 122, 131, 122, 126, 125, 127, 126, 128, 129, 131, 133, 134, 135, 135, 136, + 137, 138, 139, 140, 141, 142, 145, 146, 149, 149, 147, 144, 143, 142, 134, 134, + 134, 135, 137, 136, 134, 131, 132, 133, 134, 136, 139, 141, 144, 145, 147, 152, + 156, 154, 148, 145, 148, 149, 136, 145, 138, 135, 137, 127, 140, 95, 12, 17, + 34, 66, 101, 121, 136, 149, 143, 156, 155, 148, 153, 155, 150, 151, 150, 145, + 141, 140, 143, 145, 143, 145, 156, 157, 160, 167, 169, 168, 170, 172, 175, 176, + 176, 174, 174, 174, 177, 179, 175, 179, 184, 184, 181, 178, 177, 178, 185, 187, + 184, 176, 172, 172, 162, 150, 155, 168, 186, 200, 204, 198, 190, 186, 168, 167, + 165, 165, 165, 164, 161, 156, 154, 145, 143, 145, 140, 141, 132, 113, 97, 135, + 139, 141, 153, 146, 151, 155, 138, 138, 131, 118, 109, 105, 91, 75, 50, 26, + 39, 36, 22, 30, 40, 52, 61, 71, 71, 23, 27, 27, 22, 23, 25, 25, + 22, 24, 22, 20, 20, 19, 18, 15, 14, 30, 30, 31, 30, 31, 30, 26, + 22, 27, 19, 27, 21, 23, 30, 22, 31, 102, 136, 136, 138, 142, 137, 140, + 134, 131, 127, 106, 121, 132, 121, 131, 129, 128, 129, 131, 133, 134, 135, 135, + 135, 138, 138, 139, 140, 141, 143, 144, 142, 141, 144, 148, 150, 148, 144, 141, + 139, 136, 135, 135, 137, 137, 136, 133, 130, 136, 137, 139, 142, 146, 148, 151, + 152, 151, 152, 153, 152, 153, 152, 155, 152, 140, 138, 135, 134, 137, 130, 143, + 60, 8, 26, 24, 28, 44, 48, 68, 113, 143, 158, 155, 143, 143, 150, 155, + 162, 152, 149, 145, 143, 144, 145, 146, 147, 156, 155, 157, 165, 168, 167, 170, + 174, 173, 176, 180, 177, 171, 170, 176, 182, 191, 191, 190, 188, 185, 182, 179, + 178, 180, 185, 183, 176, 175, 176, 166, 152, 150, 154, 162, 174, 184, 188, 185, + 179, 163, 162, 162, 164, 167, 166, 162, 157, 153, 146, 144, 142, 135, 137, 131, + 114, 97, 141, 137, 140, 155, 144, 147, 148, 133, 135, 130, 118, 107, 94, 72, + 49, 38, 29, 36, 28, 27, 40, 42, 56, 76, 88, 89, 25, 27, 26, 23, + 24, 27, 27, 24, 25, 25, 25, 20, 16, 15, 17, 23, 26, 29, 29, 28, + 25, 24, 26, 28, 30, 18, 23, 22, 33, 42, 30, 35, 90, 129, 134, 139, + 139, 132, 138, 135, 127, 138, 115, 125, 137, 133, 148, 144, 135, 134, 136, 138, + 138, 138, 137, 135, 138, 138, 139, 140, 142, 141, 142, 142, 140, 145, 151, 154, + 151, 146, 142, 139, 138, 138, 138, 139, 140, 139, 135, 132, 137, 141, 144, 147, + 152, 154, 155, 157, 154, 150, 149, 149, 156, 159, 158, 154, 148, 137, 136, 138, + 138, 136, 144, 32, 7, 30, 21, 24, 50, 41, 37, 74, 121, 144, 154, 148, + 148, 150, 147, 149, 152, 151, 150, 149, 149, 149, 151, 152, 157, 154, 156, 164, + 168, 169, 171, 178, 175, 180, 185, 181, 172, 169, 175, 183, 183, 182, 180, 181, + 182, 182, 181, 180, 184, 186, 181, 172, 173, 179, 174, 161, 181, 170, 159, 160, + 173, 185, 187, 182, 168, 166, 164, 164, 163, 158, 151, 143, 156, 150, 151, 144, + 132, 133, 128, 112, 96, 143, 133, 135, 151, 135, 134, 133, 133, 134, 130, 118, + 102, 82, 52, 23, 33, 33, 35, 22, 34, 51, 46, 58, 69, 82, 86, 26, + 29, 31, 31, 32, 30, 30, 27, 32, 27, 24, 21, 20, 20, 23, 23, 21, + 20, 20, 22, 22, 24, 27, 27, 26, 27, 28, 27, 25, 25, 27, 33, 79, + 129, 132, 125, 130, 129, 138, 142, 137, 136, 124, 122, 136, 144, 147, 156, 144, + 145, 144, 144, 140, 139, 138, 137, 140, 133, 132, 136, 140, 139, 139, 141, 151, + 152, 149, 148, 146, 143, 139, 135, 128, 128, 129, 131, 135, 137, 135, 134, 139, + 143, 146, 149, 151, 152, 152, 153, 163, 158, 152, 148, 147, 149, 150, 149, 151, + 133, 139, 134, 136, 133, 123, 7, 15, 42, 31, 34, 36, 52, 41, 53, 99, + 150, 158, 143, 138, 155, 131, 148, 146, 152, 152, 147, 151, 162, 158, 146, 162, + 160, 157, 155, 161, 172, 180, 184, 188, 188, 184, 180, 175, 176, 180, 183, 183, + 187, 191, 190, 185, 180, 178, 179, 186, 183, 180, 181, 184, 180, 172, 165, 161, + 170, 168, 145, 173, 170, 176, 178, 162, 158, 163, 164, 155, 156, 160, 154, 155, + 141, 147, 144, 134, 137, 134, 108, 101, 131, 127, 116, 132, 132, 121, 131, 130, + 122, 101, 77, 59, 48, 36, 27, 32, 30, 28, 29, 36, 48, 61, 67, 78, + 73, 66, 24, 27, 28, 29, 28, 28, 28, 26, 29, 27, 27, 25, 26, 25, + 26, 26, 17, 17, 17, 19, 21, 24, 26, 27, 28, 29, 30, 29, 26, 24, + 26, 31, 77, 124, 129, 125, 130, 130, 143, 148, 147, 145, 133, 129, 142, 145, + 144, 151, 148, 151, 153, 153, 148, 142, 140, 137, 141, 135, 133, 134, 135, 134, + 131, 135, 148, 149, 149, 148, 144, 141, 138, 134, 135, 135, 138, 137, 133, 133, + 133, 138, 146, 149, 149, 150, 151, 152, 153, 154, 156, 155, 154, 154, 154, 152, + 148, 143, 141, 131, 135, 134, 140, 130, 111, 10, 31, 34, 25, 46, 54, 60, + 42, 45, 77, 153, 161, 150, 145, 149, 131, 144, 145, 151, 155, 152, 159, 167, + 164, 152, 155, 152, 153, 155, 161, 170, 178, 180, 181, 182, 180, 177, 173, 176, + 182, 188, 192, 193, 193, 190, 185, 181, 183, 184, 192, 188, 185, 185, 187, 184, + 177, 168, 160, 165, 156, 142, 166, 174, 177, 178, 164, 158, 160, 159, 150, 152, + 158, 155, 154, 143, 146, 146, 134, 135, 130, 104, 95, 125, 124, 117, 131, 125, + 109, 113, 77, 71, 61, 48, 39, 35, 31, 25, 29, 27, 27, 31, 40, 53, + 69, 77, 82, 77, 71, 24, 25, 23, 23, 23, 21, 22, 21, 21, 20, 22, + 23, 24, 22, 21, 20, 22, 24, 24, 25, 27, 29, 29, 31, 29, 31, 30, + 30, 27, 26, 29, 33, 69, 110, 120, 123, 126, 124, 139, 143, 147, 149, 139, + 135, 146, 146, 142, 146, 148, 152, 157, 158, 153, 144, 138, 133, 134, 129, 130, + 134, 137, 139, 141, 146, 147, 147, 148, 148, 145, 141, 138, 135, 129, 132, 138, + 136, 132, 133, 139, 150, 151, 152, 150, 150, 150, 151, 153, 154, 155, 154, 154, + 154, 154, 152, 148, 143, 137, 135, 139, 140, 149, 130, 95, 17, 39, 26, 25, + 58, 55, 58, 48, 49, 62, 162, 158, 149, 144, 137, 132, 143, 144, 149, 154, + 153, 160, 169, 166, 155, 151, 149, 152, 156, 161, 168, 176, 179, 177, 178, 177, + 174, 172, 176, 184, 193, 198, 196, 192, 187, 182, 180, 184, 186, 191, 187, 185, + 184, 184, 182, 178, 172, 164, 164, 145, 142, 154, 175, 172, 176, 166, 158, 158, + 154, 145, 148, 157, 155, 152, 144, 147, 145, 134, 131, 122, 103, 92, 112, 107, + 95, 100, 91, 74, 74, 57, 54, 51, 39, 36, 35, 34, 30, 28, 27, 28, + 33, 42, 56, 71, 80, 83, 80, 77, 24, 23, 21, 20, 20, 20, 21, 20, + 19, 18, 19, 19, 20, 19, 16, 18, 25, 26, 25, 27, 28, 27, 28, 27, + 30, 30, 32, 31, 30, 31, 32, 38, 59, 96, 111, 121, 123, 121, 135, 136, + 137, 140, 137, 136, 145, 145, 140, 145, 147, 151, 155, 155, 151, 144, 137, 134, + 129, 127, 128, 133, 138, 138, 142, 149, 149, 152, 153, 150, 146, 141, 137, 135, + 128, 132, 134, 134, 135, 138, 147, 155, 148, 150, 150, 151, 151, 152, 152, 152, + 157, 153, 149, 146, 147, 148, 149, 148, 137, 140, 138, 139, 150, 127, 76, 22, + 35, 28, 38, 66, 45, 51, 56, 64, 69, 172, 147, 137, 134, 125, 133, 144, + 143, 145, 148, 148, 156, 163, 164, 157, 155, 151, 153, 156, 161, 166, 174, 182, + 182, 184, 183, 178, 175, 178, 187, 196, 193, 191, 187, 182, 179, 178, 181, 183, + 186, 183, 182, 181, 181, 180, 180, 175, 169, 167, 144, 146, 142, 168, 166, 173, + 166, 158, 158, 155, 145, 148, 156, 153, 148, 143, 144, 142, 135, 129, 118, 104, + 77, 82, 71, 54, 55, 50, 44, 44, 45, 45, 40, 34, 26, 26, 24, 20, + 22, 24, 31, 38, 46, 56, 67, 74, 80, 80, 81, 25, 23, 21, 20, 20, + 18, 20, 21, 24, 21, 20, 16, 16, 16, 16, 19, 17, 20, 21, 24, 24, + 24, 26, 25, 35, 36, 35, 34, 32, 32, 33, 40, 47, 78, 98, 122, 123, + 121, 136, 132, 128, 136, 136, 137, 145, 145, 139, 143, 144, 147, 150, 151, 149, + 144, 141, 141, 136, 133, 133, 134, 135, 133, 133, 139, 153, 156, 154, 148, 141, + 135, 134, 133, 143, 141, 140, 139, 142, 143, 146, 146, 144, 149, 152, 155, 157, + 156, 154, 152, 155, 152, 148, 146, 147, 149, 150, 148, 139, 141, 133, 131, 138, + 120, 58, 18, 27, 32, 46, 68, 45, 57, 59, 56, 84, 168, 136, 129, 130, + 126, 137, 144, 146, 144, 144, 143, 149, 159, 160, 157, 158, 152, 152, 154, 156, + 161, 172, 184, 185, 186, 185, 182, 177, 181, 191, 199, 185, 184, 182, 181, 181, + 180, 179, 178, 180, 179, 180, 180, 181, 181, 181, 180, 169, 166, 149, 152, 136, + 159, 165, 175, 163, 158, 160, 160, 150, 151, 157, 152, 145, 144, 140, 138, 137, + 129, 115, 110, 55, 53, 41, 33, 35, 39, 44, 46, 34, 36, 36, 28, 25, + 24, 25, 22, 19, 24, 36, 46, 55, 62, 69, 72, 78, 81, 84, 23, 22, + 22, 21, 21, 22, 22, 23, 20, 19, 16, 15, 14, 15, 16, 17, 16, 18, + 22, 28, 32, 34, 35, 36, 36, 35, 35, 31, 28, 24, 25, 31, 37, 60, + 81, 112, 116, 117, 135, 127, 129, 138, 137, 140, 146, 143, 137, 138, 145, 147, + 148, 148, 145, 146, 146, 148, 140, 138, 139, 144, 142, 141, 145, 153, 158, 160, + 155, 147, 137, 132, 133, 133, 141, 141, 141, 146, 149, 151, 148, 146, 145, 149, + 154, 158, 159, 158, 154, 152, 147, 148, 150, 152, 154, 152, 147, 142, 143, 142, + 134, 130, 130, 123, 56, 16, 27, 35, 42, 67, 59, 68, 52, 40, 101, 153, + 132, 136, 136, 141, 142, 145, 151, 149, 146, 145, 150, 156, 158, 156, 156, 148, + 146, 150, 151, 156, 170, 186, 184, 184, 183, 182, 182, 186, 193, 198, 183, 183, + 182, 183, 185, 184, 180, 178, 178, 179, 182, 183, 183, 183, 183, 180, 166, 157, + 152, 153, 138, 153, 169, 176, 160, 157, 162, 163, 154, 154, 158, 152, 142, 143, + 139, 134, 138, 128, 116, 118, 45, 40, 36, 32, 35, 39, 41, 41, 33, 37, + 36, 30, 24, 24, 26, 26, 25, 33, 44, 56, 65, 71, 76, 78, 80, 84, + 86, 21, 20, 23, 22, 22, 23, 22, 22, 19, 20, 20, 22, 23, 23, 23, + 21, 19, 20, 25, 32, 36, 38, 39, 37, 28, 28, 27, 25, 23, 19, 22, + 30, 48, 57, 73, 107, 111, 111, 130, 119, 129, 139, 138, 141, 146, 141, 135, + 138, 143, 142, 144, 144, 144, 144, 144, 146, 138, 139, 143, 149, 152, 152, 158, + 168, 161, 163, 157, 147, 137, 134, 137, 141, 140, 145, 152, 158, 160, 160, 157, + 158, 151, 153, 157, 159, 160, 158, 156, 154, 147, 148, 151, 154, 156, 154, 149, + 143, 146, 141, 138, 134, 127, 134, 62, 16, 26, 32, 32, 61, 63, 63, 46, + 52, 124, 144, 139, 147, 137, 149, 146, 152, 155, 150, 149, 150, 154, 155, 154, + 152, 152, 144, 145, 152, 154, 158, 172, 188, 186, 184, 181, 182, 186, 190, 192, + 192, 186, 184, 183, 183, 184, 183, 180, 177, 175, 177, 181, 182, 181, 179, 179, + 176, 168, 150, 155, 149, 145, 149, 170, 167, 159, 155, 161, 163, 155, 155, 159, + 154, 145, 146, 137, 133, 138, 127, 115, 122, 45, 33, 32, 33, 29, 32, 35, + 30, 27, 29, 30, 24, 19, 20, 23, 25, 42, 46, 54, 63, 69, 73, 78, + 80, 81, 85, 86, 20, 21, 23, 25, 26, 26, 25, 25, 26, 29, 34, 38, + 41, 41, 39, 34, 25, 25, 29, 32, 36, 36, 34, 32, 33, 32, 34, 32, + 33, 32, 36, 43, 72, 71, 80, 110, 112, 113, 130, 119, 123, 133, 136, 137, + 143, 141, 133, 138, 137, 139, 142, 142, 141, 141, 139, 140, 139, 140, 142, 147, + 149, 148, 152, 161, 166, 167, 161, 151, 143, 139, 144, 150, 155, 164, 175, 179, + 174, 168, 164, 164, 158, 159, 159, 160, 159, 158, 157, 156, 154, 152, 150, 150, + 152, 153, 154, 151, 141, 134, 136, 134, 122, 138, 64, 9, 20, 30, 28, 56, + 57, 46, 43, 82, 147, 142, 145, 150, 131, 150, 147, 160, 153, 149, 150, 152, + 154, 152, 148, 144, 147, 142, 147, 157, 159, 161, 174, 193, 195, 190, 185, 186, + 190, 191, 189, 186, 189, 185, 181, 180, 181, 180, 178, 175, 173, 175, 180, 180, + 178, 174, 173, 170, 172, 147, 156, 146, 149, 146, 168, 156, 158, 154, 159, 160, + 153, 155, 160, 156, 147, 150, 137, 131, 138, 124, 113, 123, 43, 28, 24, 27, + 24, 28, 39, 36, 30, 35, 39, 37, 35, 41, 49, 53, 59, 60, 64, 66, + 69, 72, 74, 74, 81, 82, 83, 32, 34, 36, 37, 36, 33, 31, 29, 37, + 47, 44, 37, 36, 31, 28, 34, 21, 28, 34, 41, 50, 45, 44, 57, 58, + 54, 55, 57, 64, 68, 71, 73, 91, 90, 92, 100, 107, 111, 114, 118, 124, + 128, 133, 136, 136, 135, 132, 133, 135, 134, 136, 138, 140, 141, 142, 142, 143, + 141, 142, 147, 148, 146, 148, 153, 159, 161, 160, 159, 161, 159, 159, 159, 160, + 161, 166, 168, 172, 175, 174, 174, 167, 165, 162, 159, 160, 162, 166, 168, 163, + 158, 152, 148, 148, 150, 152, 151, 150, 141, 124, 133, 134, 136, 109, 10, 33, + 18, 32, 55, 51, 46, 75, 105, 141, 142, 149, 151, 152, 153, 153, 155, 146, + 151, 157, 156, 152, 148, 145, 144, 150, 149, 152, 156, 161, 166, 170, 173, 193, + 188, 183, 183, 188, 193, 194, 191, 183, 181, 178, 176, 178, 178, 176, 174, 175, + 169, 172, 176, 174, 176, 179, 171, 163, 165, 163, 154, 156, 137, 163, 167, 158, + 158, 157, 155, 157, 159, 155, 147, 146, 141, 142, 137, 139, 108, 129, 128, 49, + 32, 38, 29, 22, 33, 32, 32, 45, 47, 53, 58, 63, 63, 64, 64, 71, + 72, 70, 69, 68, 70, 72, 75, 73, 73, 73, 29, 30, 28, 27, 27, 29, + 31, 32, 26, 37, 42, 40, 39, 32, 29, 32, 39, 44, 47, 60, 79, 80, + 76, 82, 81, 87, 95, 99, 99, 94, 93, 89, 84, 82, 85, 93, 100, 104, + 112, 120, 119, 123, 129, 133, 134, 134, 133, 132, 129, 131, 134, 137, 139, 141, + 143, 143, 140, 138, 140, 145, 146, 144, 144, 149, 154, 156, 158, 158, 156, 155, + 152, 151, 156, 157, 161, 163, 168, 170, 172, 172, 174, 172, 169, 166, 165, 166, + 168, 169, 171, 170, 167, 162, 157, 153, 150, 147, 139, 137, 131, 143, 140, 138, + 117, 37, 22, 29, 45, 43, 30, 49, 105, 148, 146, 146, 151, 153, 152, 153, + 154, 157, 154, 155, 157, 155, 151, 145, 141, 140, 145, 147, 150, 153, 156, 165, + 177, 187, 188, 185, 184, 186, 192, 195, 192, 189, 183, 180, 178, 177, 178, 178, + 176, 174, 176, 169, 173, 176, 173, 174, 176, 168, 168, 166, 160, 151, 156, 142, + 172, 177, 163, 163, 161, 158, 159, 161, 156, 148, 147, 145, 138, 135, 133, 115, + 128, 123, 51, 34, 42, 41, 45, 65, 69, 71, 84, 84, 83, 83, 81, 76, + 76, 74, 75, 75, 76, 74, 75, 77, 80, 80, 79, 77, 76, 34, 35, 32, + 30, 30, 30, 33, 34, 31, 36, 44, 46, 46, 44, 45, 51, 72, 84, 87, + 94, 107, 104, 99, 105, 99, 109, 118, 115, 104, 92, 92, 89, 85, 79, 84, + 89, 93, 97, 107, 118, 114, 118, 125, 130, 132, 134, 134, 134, 129, 129, 131, + 133, 135, 137, 137, 138, 136, 134, 137, 142, 144, 141, 141, 144, 147, 149, 153, + 153, 152, 148, 144, 142, 151, 152, 155, 156, 162, 163, 167, 168, 179, 177, 175, + 173, 171, 170, 170, 170, 167, 170, 172, 169, 160, 151, 145, 141, 141, 139, 141, + 149, 138, 134, 128, 81, 59, 57, 52, 43, 53, 97, 141, 153, 148, 150, 156, + 161, 162, 162, 163, 163, 165, 162, 157, 152, 147, 143, 139, 137, 154, 155, 156, + 152, 151, 159, 174, 185, 181, 182, 184, 190, 195, 194, 190, 186, 180, 178, 178, + 177, 177, 176, 176, 174, 175, 168, 173, 175, 170, 171, 171, 163, 170, 167, 162, + 155, 163, 148, 174, 175, 161, 161, 158, 155, 156, 157, 151, 143, 144, 149, 133, + 134, 124, 124, 129, 120, 57, 35, 42, 47, 58, 79, 82, 85, 83, 84, 83, + 82, 80, 76, 77, 74, 78, 78, 78, 79, 78, 80, 83, 84, 76, 74, 74, + 20, 25, 27, 30, 32, 33, 35, 35, 54, 50, 54, 58, 59, 65, 76, 86, + 101, 118, 119, 114, 108, 99, 96, 108, 97, 101, 105, 98, 87, 84, 89, 89, + 91, 84, 88, 91, 90, 92, 102, 114, 111, 117, 123, 128, 130, 132, 133, 133, + 133, 131, 132, 132, 132, 132, 131, 131, 133, 132, 135, 140, 142, 139, 138, 140, + 142, 143, 145, 145, 145, 144, 142, 140, 149, 149, 149, 152, 155, 160, 165, 166, + 174, 173, 173, 172, 171, 169, 168, 167, 176, 183, 189, 188, 181, 173, 170, 168, + 158, 148, 145, 145, 132, 130, 134, 118, 120, 106, 95, 93, 114, 153, 166, 145, + 147, 152, 160, 168, 172, 172, 171, 170, 168, 162, 153, 148, 145, 143, 139, 136, + 157, 155, 152, 150, 151, 158, 171, 182, 182, 183, 186, 191, 192, 192, 187, 183, + 180, 178, 178, 178, 177, 176, 176, 173, 174, 168, 173, 176, 170, 171, 171, 163, + 169, 169, 168, 165, 172, 150, 166, 159, 158, 158, 156, 153, 153, 154, 149, 140, + 135, 152, 132, 135, 117, 132, 134, 124, 58, 32, 39, 48, 62, 80, 78, 79, + 85, 86, 85, 82, 84, 83, 84, 84, 79, 78, 78, 77, 75, 76, 78, 79, + 68, 69, 71, 48, 51, 54, 59, 68, 75, 81, 85, 70, 58, 65, 72, 69, + 75, 89, 95, 100, 110, 107, 99, 101, 99, 96, 103, 96, 96, 97, 96, 95, + 99, 110, 110, 92, 85, 89, 92, 91, 92, 100, 112, 113, 117, 122, 126, 128, + 130, 131, 132, 132, 130, 131, 131, 131, 130, 129, 129, 136, 134, 136, 141, 142, + 139, 139, 139, 140, 139, 139, 139, 140, 139, 141, 142, 146, 148, 148, 151, 154, + 159, 164, 165, 166, 167, 168, 169, 169, 168, 167, 167, 161, 167, 173, 173, 168, + 164, 165, 166, 165, 151, 148, 143, 133, 134, 136, 138, 147, 147, 157, 163, 163, + 170, 178, 168, 157, 155, 156, 158, 164, 169, 172, 174, 164, 158, 151, 146, 143, + 142, 139, 136, 144, 141, 139, 144, 155, 167, 178, 184, 187, 188, 188, 190, 188, + 187, 182, 180, 179, 178, 176, 176, 178, 177, 173, 171, 173, 167, 172, 176, 171, + 172, 172, 163, 166, 167, 167, 165, 171, 147, 161, 152, 160, 160, 158, 155, 156, + 157, 152, 143, 129, 151, 134, 136, 118, 135, 139, 130, 57, 30, 39, 54, 72, + 91, 85, 84, 95, 94, 91, 85, 85, 81, 81, 80, 81, 81, 79, 78, 75, + 72, 73, 72, 67, 71, 75, 62, 58, 53, 51, 53, 63, 72, 78, 71, 55, + 68, 80, 71, 71, 79, 74, 76, 77, 67, 73, 97, 111, 106, 102, 101, 103, + 104, 105, 108, 109, 112, 106, 87, 81, 84, 89, 91, 91, 97, 106, 112, 117, + 121, 124, 126, 128, 129, 129, 127, 126, 128, 130, 131, 132, 132, 132, 137, 134, + 134, 138, 139, 137, 138, 139, 138, 137, 136, 134, 135, 136, 139, 141, 143, 143, + 146, 148, 154, 156, 159, 163, 162, 163, 165, 166, 167, 168, 168, 168, 172, 175, + 176, 175, 172, 171, 173, 174, 157, 148, 153, 147, 143, 145, 137, 144, 144, 149, + 167, 180, 174, 172, 182, 184, 170, 160, 150, 144, 148, 156, 165, 171, 158, 155, + 152, 149, 145, 143, 141, 139, 143, 137, 134, 140, 154, 168, 175, 177, 190, 190, + 190, 189, 185, 184, 180, 179, 179, 178, 177, 177, 179, 177, 173, 170, 172, 167, + 172, 175, 170, 170, 169, 160, 161, 161, 160, 155, 162, 143, 163, 161, 159, 159, + 156, 153, 153, 154, 148, 139, 129, 146, 135, 134, 126, 135, 142, 131, 63, 36, + 45, 61, 77, 92, 84, 86, 90, 92, 86, 83, 81, 79, 77, 77, 82, 81, + 81, 78, 75, 72, 72, 71, 72, 77, 80, 81, 74, 69, 62, 59, 61, 63, + 65, 66, 46, 59, 74, 61, 60, 69, 57, 56, 61, 59, 65, 89, 101, 98, + 95, 95, 97, 98, 97, 95, 90, 88, 84, 86, 83, 84, 90, 94, 91, 93, + 98, 109, 112, 118, 121, 121, 124, 127, 128, 125, 125, 127, 129, 132, 133, 133, + 133, 137, 133, 132, 135, 135, 134, 136, 139, 137, 134, 134, 132, 133, 134, 135, + 134, 136, 139, 143, 146, 152, 153, 155, 155, 160, 160, 161, 162, 163, 165, 166, + 167, 164, 163, 161, 160, 158, 158, 158, 157, 152, 150, 160, 148, 146, 150, 136, + 150, 146, 142, 151, 163, 169, 177, 181, 171, 167, 158, 150, 144, 148, 153, 158, + 160, 154, 156, 157, 155, 149, 145, 141, 141, 148, 142, 138, 141, 149, 161, 169, + 173, 188, 189, 190, 190, 186, 183, 180, 179, 178, 177, 177, 177, 177, 175, 173, + 169, 172, 166, 172, 174, 167, 165, 162, 152, 152, 155, 157, 153, 159, 141, 164, + 165, 160, 159, 155, 150, 149, 148, 141, 132, 137, 140, 131, 129, 138, 134, 140, + 122, 72, 39, 46, 59, 71, 83, 79, 81, 91, 94, 93, 92, 89, 89, 88, + 88, 81, 80, 79, 76, 73, 70, 70, 71, 75, 79, 81, 69, 70, 71, 70, + 69, 64, 60, 56, 66, 40, 51, 67, 52, 54, 71, 60, 57, 74, 82, 80, + 84, 84, 85, 91, 85, 88, 92, 91, 89, 86, 90, 93, 94, 89, 90, 95, + 96, 92, 90, 91, 106, 109, 113, 116, 119, 123, 127, 128, 130, 129, 130, 131, + 131, 131, 131, 131, 137, 132, 130, 132, 132, 130, 135, 138, 133, 132, 133, 133, + 133, 132, 129, 128, 132, 135, 140, 144, 147, 148, 150, 149, 154, 153, 155, 154, + 157, 158, 160, 161, 166, 164, 162, 161, 161, 161, 160, 156, 156, 157, 166, 145, + 140, 149, 136, 156, 150, 151, 156, 159, 162, 173, 175, 161, 159, 155, 156, 157, + 159, 159, 155, 151, 153, 158, 161, 160, 153, 147, 143, 143, 142, 141, 140, 140, + 147, 158, 171, 181, 182, 185, 190, 189, 188, 185, 180, 179, 178, 177, 179, 177, + 179, 177, 173, 169, 173, 166, 171, 172, 164, 160, 157, 146, 143, 151, 159, 158, + 163, 140, 161, 160, 166, 164, 160, 153, 150, 147, 140, 131, 142, 133, 128, 123, + 145, 131, 138, 113, 70, 38, 46, 60, 75, 93, 92, 99, 96, 97, 98, 96, + 94, 91, 90, 87, 85, 86, 84, 82, 77, 73, 73, 73, 72, 74, 76, 73, + 72, 70, 69, 67, 66, 68, 67, 73, 59, 57, 88, 75, 89, 83, 73, 76, + 76, 76, 79, 84, 90, 93, 94, 97, 99, 97, 93, 93, 100, 102, 99, 101, + 98, 95, 95, 98, 99, 96, 93, 94, 104, 111, 113, 116, 123, 127, 125, 129, + 124, 124, 127, 130, 130, 130, 130, 131, 130, 128, 127, 129, 130, 135, 136, 135, + 132, 131, 130, 131, 131, 131, 131, 135, 136, 139, 142, 143, 144, 144, 143, 150, + 150, 151, 150, 151, 149, 148, 147, 155, 154, 152, 152, 155, 157, 160, 160, 160, + 155, 150, 151, 153, 153, 149, 146, 155, 153, 151, 159, 168, 172, 164, 158, 154, + 153, 153, 156, 161, 163, 162, 160, 155, 154, 151, 149, 146, 144, 142, 141, 151, + 141, 134, 139, 147, 151, 162, 176, 176, 182, 189, 189, 184, 179, 179, 181, 181, + 180, 181, 178, 179, 177, 173, 169, 173, 172, 175, 172, 159, 153, 146, 131, 143, + 151, 148, 147, 159, 163, 159, 160, 165, 156, 151, 146, 143, 140, 140, 139, 133, + 152, 94, 137, 129, 143, 138, 127, 66, 51, 51, 70, 85, 91, 105, 120, 109, + 105, 108, 101, 109, 113, 99, 107, 103, 94, 98, 97, 87, 82, 78, 67, 73, + 72, 76, 63, 64, 66, 68, 69, 71, 70, 69, 68, 67, 68, 76, 65, 73, + 76, 77, 76, 78, 78, 79, 83, 89, 93, 93, 100, 103, 104, 99, 99, 101, + 102, 96, 100, 99, 102, 106, 109, 106, 98, 92, 94, 107, 114, 110, 109, 116, + 127, 135, 133, 131, 130, 132, 134, 134, 131, 130, 130, 129, 127, 126, 126, 129, + 132, 132, 133, 131, 130, 129, 131, 132, 132, 133, 133, 133, 137, 139, 140, 141, + 141, 141, 145, 146, 147, 148, 149, 149, 151, 150, 150, 150, 150, 152, 157, 161, + 165, 165, 162, 157, 153, 154, 157, 157, 154, 150, 156, 153, 152, 157, 165, 167, + 163, 160, 162, 162, 161, 162, 162, 163, 161, 159, 159, 158, 156, 154, 151, 149, + 148, 148, 146, 141, 137, 140, 146, 154, 167, 176, 179, 183, 187, 186, 183, 180, + 180, 182, 184, 182, 181, 180, 179, 177, 173, 169, 170, 166, 169, 166, 156, 154, + 151, 138, 142, 152, 150, 145, 151, 153, 152, 157, 159, 152, 146, 144, 141, 138, + 132, 128, 128, 136, 111, 137, 142, 138, 132, 115, 58, 44, 47, 72, 92, 97, + 104, 110, 106, 102, 119, 116, 114, 119, 113, 118, 117, 105, 99, 93, 81, 83, + 89, 82, 71, 70, 75, 69, 72, 75, 77, 78, 78, 76, 74, 74, 79, 74, + 59, 68, 72, 80, 82, 82, 83, 83, 83, 85, 85, 89, 93, 91, 95, 99, + 100, 102, 105, 104, 99, 98, 98, 102, 106, 109, 107, 101, 96, 96, 104, 110, + 110, 113, 119, 128, 132, 133, 133, 131, 132, 135, 136, 133, 131, 130, 129, 126, + 125, 125, 127, 130, 131, 130, 128, 128, 129, 130, 131, 134, 135, 133, 134, 136, + 138, 139, 140, 140, 140, 140, 141, 143, 145, 148, 149, 152, 152, 151, 151, 151, + 153, 158, 162, 165, 165, 160, 156, 154, 155, 157, 158, 156, 153, 154, 153, 153, + 156, 162, 164, 164, 165, 170, 170, 166, 165, 164, 163, 160, 158, 158, 157, 155, + 152, 150, 148, 146, 146, 143, 147, 145, 142, 147, 159, 172, 177, 182, 184, 186, + 184, 182, 180, 182, 184, 185, 183, 182, 181, 180, 177, 173, 169, 166, 164, 169, + 168, 159, 157, 152, 137, 136, 148, 147, 142, 148, 152, 155, 165, 158, 154, 149, + 148, 145, 141, 133, 125, 131, 122, 126, 133, 148, 133, 124, 112, 45, 33, 37, + 64, 89, 98, 104, 109, 100, 94, 125, 127, 112, 117, 118, 119, 122, 109, 102, + 95, 84, 88, 98, 94, 80, 74, 75, 66, 66, 71, 74, 76, 79, 80, 79, + 79, 83, 70, 41, 76, 81, 86, 77, 83, 85, 87, 88, 86, 85, 88, 93, + 90, 96, 99, 98, 102, 106, 106, 101, 99, 96, 96, 96, 99, 101, 102, 103, + 97, 97, 100, 109, 123, 130, 127, 122, 126, 128, 130, 129, 132, 136, 136, 130, + 130, 129, 128, 125, 125, 126, 128, 128, 124, 122, 125, 124, 128, 131, 133, 134, + 136, 136, 137, 138, 139, 138, 138, 138, 136, 138, 140, 143, 145, 146, 149, 150, + 154, 154, 153, 153, 155, 156, 158, 156, 155, 152, 151, 152, 154, 155, 154, 152, + 153, 154, 155, 155, 158, 161, 164, 168, 173, 173, 169, 166, 164, 162, 160, 158, + 159, 158, 155, 151, 148, 145, 143, 142, 147, 155, 154, 147, 149, 163, 175, 176, + 184, 185, 185, 182, 181, 181, 183, 185, 185, 184, 182, 181, 180, 177, 172, 169, + 166, 166, 173, 174, 165, 160, 149, 130, 141, 150, 147, 143, 152, 158, 161, 168, + 154, 155, 153, 148, 142, 140, 135, 129, 137, 117, 129, 130, 136, 132, 122, 117, + 44, 33, 35, 56, 78, 90, 103, 111, 100, 91, 124, 128, 107, 116, 122, 116, + 119, 111, 112, 108, 97, 99, 102, 95, 86, 78, 76, 49, 48, 52, 56, 62, + 70, 75, 78, 76, 84, 71, 38, 71, 74, 79, 70, 74, 75, 80, 87, 88, + 87, 88, 94, 101, 104, 100, 96, 96, 99, 99, 95, 96, 94, 94, 94, 97, + 99, 101, 103, 95, 95, 99, 107, 118, 124, 126, 127, 127, 129, 131, 130, 133, + 136, 134, 128, 133, 130, 129, 128, 128, 128, 127, 128, 124, 122, 125, 125, 130, + 133, 135, 137, 142, 142, 142, 142, 141, 140, 138, 138, 138, 139, 141, 143, 145, + 145, 148, 148, 156, 156, 155, 154, 155, 155, 154, 152, 152, 150, 150, 150, 152, + 152, 153, 152, 153, 154, 155, 155, 157, 159, 163, 169, 169, 169, 167, 164, 161, + 159, 159, 159, 164, 162, 159, 155, 151, 147, 144, 145, 148, 156, 155, 149, 153, + 167, 177, 176, 185, 185, 183, 181, 181, 181, 183, 185, 185, 183, 181, 180, 179, + 175, 171, 167, 168, 165, 168, 168, 161, 159, 152, 134, 151, 155, 147, 144, 158, + 164, 160, 161, 146, 151, 150, 141, 131, 131, 133, 132, 135, 119, 128, 136, 126, + 137, 120, 110, 43, 38, 43, 59, 71, 77, 85, 95, 107, 89, 116, 119, 103, + 114, 119, 109, 112, 107, 110, 108, 98, 95, 100, 90, 86, 79, 79, 55, 52, + 52, 52, 54, 59, 63, 66, 68, 84, 80, 51, 50, 53, 64, 65, 60, 61, + 68, 83, 91, 88, 87, 90, 89, 90, 89, 84, 85, 90, 93, 89, 91, 93, + 98, 101, 103, 101, 100, 100, 94, 99, 106, 107, 105, 106, 120, 136, 129, 135, + 136, 131, 133, 138, 135, 125, 133, 132, 131, 128, 127, 127, 127, 126, 125, 125, + 127, 128, 131, 134, 137, 139, 142, 142, 142, 142, 141, 139, 138, 137, 141, 142, + 144, 145, 146, 146, 148, 148, 154, 154, 154, 155, 157, 158, 158, 156, 153, 152, + 152, 152, 152, 153, 154, 154, 154, 155, 155, 155, 157, 158, 161, 166, 164, 165, + 163, 160, 157, 156, 158, 160, 161, 159, 157, 154, 150, 147, 144, 145, 146, 149, + 148, 150, 158, 170, 178, 179, 185, 183, 181, 180, 181, 181, 182, 182, 184, 182, + 180, 179, 177, 174, 169, 165, 169, 160, 157, 155, 152, 159, 161, 149, 143, 147, + 142, 145, 164, 172, 165, 163, 149, 154, 150, 137, 128, 131, 135, 134, 123, 121, + 129, 147, 133, 140, 123, 87, 34, 39, 54, 72, 82, 83, 85, 91, 105, 90, + 106, 106, 100, 112, 110, 105, 106, 101, 100, 97, 84, 86, 94, 87, 88, 80, + 81, 71, 68, 66, 64, 62, 64, 64, 65, 73, 83, 79, 64, 37, 46, 59, + 63, 60, 57, 65, 83, 95, 89, 82, 82, 76, 80, 83, 82, 85, 92, 96, + 93, 92, 95, 100, 102, 103, 101, 101, 101, 98, 100, 105, 109, 108, 104, 111, + 121, 123, 131, 133, 131, 134, 140, 138, 128, 133, 131, 130, 129, 128, 127, 127, + 124, 125, 123, 127, 127, 130, 133, 135, 137, 139, 140, 140, 140, 140, 140, 139, + 139, 139, 140, 141, 143, 144, 145, 147, 147, 149, 150, 152, 154, 157, 158, 159, + 157, 154, 154, 154, 153, 153, 152, 153, 154, 156, 155, 155, 155, 158, 159, 160, + 162, 162, 162, 161, 157, 153, 152, 156, 159, 155, 154, 153, 151, 152, 150, 149, + 148, 153, 148, 146, 154, 166, 174, 179, 182, 183, 182, 180, 179, 181, 181, 180, + 180, 183, 181, 179, 177, 175, 172, 167, 163, 164, 156, 154, 155, 156, 166, 170, + 158, 136, 145, 145, 150, 167, 174, 166, 165, 158, 158, 150, 136, 131, 137, 135, + 127, 121, 127, 138, 144, 143, 132, 133, 65, 27, 34, 53, 76, 91, 96, 97, + 98, 100, 92, 101, 98, 101, 110, 103, 106, 104, 100, 102, 97, 87, 89, 100, + 97, 94, 86, 83, 68, 67, 69, 71, 74, 76, 76, 77, 85, 78, 67, 68, + 37, 57, 63, 60, 69, 62, 70, 89, 98, 89, 78, 73, 85, 90, 94, 94, + 96, 100, 100, 95, 98, 97, 97, 95, 95, 97, 102, 106, 105, 96, 97, 111, + 123, 118, 103, 95, 113, 122, 127, 126, 132, 143, 143, 132, 132, 131, 130, 127, + 126, 125, 124, 124, 123, 121, 124, 124, 127, 128, 131, 132, 135, 136, 138, 138, + 139, 140, 140, 140, 133, 134, 136, 139, 140, 142, 144, 145, 147, 148, 149, 151, + 154, 155, 155, 153, 153, 153, 154, 153, 151, 150, 152, 153, 157, 156, 154, 155, + 159, 160, 158, 156, 160, 162, 161, 156, 152, 151, 154, 157, 155, 155, 155, 155, + 157, 157, 157, 159, 167, 153, 149, 161, 174, 177, 179, 183, 182, 180, 179, 179, + 181, 181, 179, 178, 182, 180, 178, 176, 174, 171, 166, 162, 160, 155, 160, 166, + 168, 175, 173, 157, 146, 158, 159, 159, 167, 166, 155, 154, 160, 156, 143, 131, + 131, 137, 129, 113, 125, 131, 144, 134, 150, 121, 143, 51, 33, 35, 47, 67, + 84, 93, 94, 92, 94, 93, 101, 95, 103, 108, 97, 110, 103, 102, 109, 110, + 100, 102, 109, 104, 95, 85, 82, 74, 71, 64, 59, 61, 68, 72, 69, 76, + 71, 72, 87, 72, 51, 63, 65, 72, 84, 87, 88, 94, 88, 81, 86, 88, + 90, 92, 91, 90, 92, 98, 101, 99, 95, 103, 105, 97, 96, 100, 95, 100, + 97, 100, 110, 121, 122, 119, 119, 99, 115, 119, 121, 137, 144, 138, 135, 133, + 135, 140, 140, 138, 136, 136, 138, 131, 129, 130, 127, 127, 127, 132, 136, 133, + 133, 136, 139, 140, 140, 139, 138, 144, 140, 138, 139, 139, 138, 142, 146, 144, + 142, 146, 152, 154, 149, 150, 153, 152, 152, 154, 154, 153, 151, 149, 147, 154, + 155, 155, 155, 157, 156, 155, 155, 153, 154, 154, 154, 155, 157, 160, 163, 164, + 163, 159, 153, 157, 162, 157, 148, 154, 147, 148, 161, 175, 178, 178, 179, 182, + 183, 184, 184, 185, 182, 179, 178, 178, 179, 180, 177, 171, 167, 166, 167, 159, + 165, 170, 176, 159, 156, 164, 135, 155, 156, 156, 160, 167, 172, 169, 164, 154, + 144, 142, 126, 125, 135, 122, 117, 134, 141, 135, 145, 163, 111, 145, 52, 38, + 36, 52, 72, 78, 86, 91, 87, 78, 82, 89, 94, 100, 106, 105, 101, 103, + 103, 102, 104, 105, 104, 103, 99, 90, 86, 84, 80, 78, 71, 63, 60, 60, + 58, 51, 64, 59, 56, 68, 60, 52, 71, 71, 73, 75, 69, 66, 77, 78, + 75, 81, 75, 77, 82, 83, 88, 90, 97, 98, 95, 91, 98, 100, 94, 95, + 100, 96, 103, 102, 99, 98, 108, 120, 123, 122, 118, 122, 112, 104, 112, 118, + 125, 137, 142, 143, 144, 140, 137, 135, 136, 138, 135, 135, 136, 131, 129, 128, + 132, 133, 129, 130, 131, 134, 135, 136, 137, 137, 140, 136, 136, 138, 139, 137, + 141, 145, 147, 145, 148, 153, 155, 151, 152, 156, 151, 151, 153, 153, 152, 150, + 149, 147, 154, 155, 155, 154, 156, 154, 153, 152, 153, 154, 154, 153, 154, 155, + 158, 161, 160, 159, 156, 151, 156, 162, 163, 159, 149, 149, 157, 169, 175, 175, + 176, 180, 180, 181, 182, 182, 183, 180, 178, 176, 177, 175, 173, 171, 170, 168, + 165, 162, 163, 183, 161, 166, 184, 156, 143, 159, 162, 160, 160, 166, 171, 172, + 167, 163, 158, 145, 142, 127, 122, 129, 118, 120, 135, 133, 138, 139, 124, 128, + 123, 39, 38, 38, 56, 72, 77, 80, 86, 82, 76, 80, 85, 86, 90, 96, + 96, 93, 92, 91, 90, 92, 94, 92, 91, 88, 88, 85, 85, 77, 77, 75, + 71, 71, 70, 64, 57, 59, 58, 52, 61, 60, 60, 75, 66, 72, 71, 61, + 59, 71, 74, 72, 77, 77, 77, 82, 85, 92, 94, 98, 96, 94, 90, 95, + 96, 91, 93, 99, 96, 93, 100, 102, 99, 106, 119, 124, 122, 126, 130, 123, + 115, 117, 113, 114, 124, 123, 130, 140, 147, 148, 147, 144, 142, 138, 137, 137, + 133, 130, 128, 130, 131, 128, 126, 126, 127, 129, 132, 133, 134, 135, 132, 133, + 137, 138, 136, 139, 143, 147, 146, 148, 150, 152, 150, 153, 156, 150, 150, 151, + 151, 150, 149, 148, 146, 153, 153, 153, 153, 154, 152, 151, 150, 150, 151, 151, + 149, 150, 150, 155, 157, 152, 154, 156, 155, 156, 159, 162, 159, 145, 153, 166, + 176, 176, 172, 175, 181, 181, 181, 182, 181, 182, 180, 178, 176, 183, 178, 173, + 171, 171, 170, 164, 159, 167, 174, 175, 183, 170, 155, 166, 162, 169, 164, 166, + 175, 178, 171, 163, 163, 161, 145, 142, 127, 119, 122, 115, 126, 144, 146, 145, + 145, 129, 154, 84, 49, 38, 48, 63, 74, 79, 81, 84, 82, 72, 72, 73, + 74, 79, 85, 84, 83, 83, 82, 81, 82, 84, 83, 82, 82, 81, 81, 80, + 71, 75, 77, 76, 77, 81, 78, 73, 69, 74, 70, 77, 77, 74, 76, 49, + 71, 79, 77, 79, 87, 86, 80, 83, 91, 88, 90, 91, 97, 95, 93, 88, + 96, 90, 93, 93, 88, 91, 98, 94, 92, 96, 99, 97, 98, 106, 119, 132, + 132, 137, 134, 134, 135, 121, 113, 121, 115, 118, 124, 130, 135, 136, 138, 139, + 136, 136, 136, 134, 133, 132, 135, 136, 130, 129, 126, 124, 125, 127, 129, 131, + 130, 129, 130, 136, 137, 136, 138, 141, 145, 145, 145, 145, 146, 147, 150, 152, + 148, 148, 148, 148, 148, 147, 146, 146, 149, 150, 150, 150, 152, 151, 151, 150, + 149, 150, 149, 148, 148, 148, 152, 155, 146, 152, 159, 159, 156, 152, 150, 148, + 150, 159, 170, 176, 175, 173, 176, 180, 183, 183, 183, 183, 183, 182, 180, 179, + 183, 180, 175, 171, 167, 164, 160, 157, 158, 178, 193, 184, 151, 159, 188, 161, + 172, 166, 169, 180, 181, 170, 162, 164, 160, 143, 140, 125, 115, 118, 117, 135, + 139, 148, 126, 138, 151, 139, 39, 54, 40, 57, 72, 78, 82, 83, 85, 88, + 79, 78, 78, 77, 81, 89, 90, 89, 95, 95, 94, 95, 98, 99, 99, 100, + 98, 99, 97, 74, 76, 76, 72, 71, 73, 72, 69, 77, 83, 80, 86, 86, + 83, 79, 47, 76, 89, 94, 94, 97, 91, 86, 93, 95, 92, 91, 91, 93, + 90, 85, 79, 91, 84, 86, 87, 85, 90, 97, 93, 102, 95, 90, 88, 82, + 81, 102, 130, 147, 146, 134, 127, 131, 128, 126, 133, 135, 128, 117, 108, 107, + 112, 120, 126, 131, 132, 134, 132, 132, 133, 137, 138, 132, 131, 126, 125, 123, + 124, 126, 127, 128, 126, 128, 134, 136, 134, 137, 140, 142, 144, 144, 142, 143, + 145, 148, 148, 146, 145, 146, 146, 145, 145, 145, 145, 146, 146, 148, 149, 151, + 152, 151, 151, 146, 147, 148, 147, 147, 147, 151, 153, 150, 153, 156, 156, 155, + 151, 151, 151, 160, 164, 168, 170, 173, 176, 178, 179, 182, 182, 182, 181, 182, + 180, 179, 178, 173, 175, 175, 169, 161, 157, 158, 161, 166, 201, 175, 153, 166, + 168, 170, 172, 169, 167, 171, 181, 182, 172, 164, 164, 156, 141, 138, 122, 113, + 120, 124, 143, 146, 143, 124, 141, 150, 117, 69, 51, 38, 62, 75, 76, 84, + 85, 84, 93, 75, 75, 72, 71, 71, 78, 78, 75, 85, 85, 84, 85, 90, + 93, 92, 93, 95, 98, 98, 72, 76, 76, 71, 69, 72, 74, 73, 80, 81, + 74, 81, 84, 85, 88, 62, 81, 95, 96, 92, 92, 87, 89, 100, 91, 90, + 91, 91, 91, 87, 86, 82, 83, 75, 78, 82, 82, 89, 96, 92, 92, 90, + 93, 96, 89, 76, 75, 84, 129, 140, 137, 133, 137, 139, 136, 140, 138, 134, + 129, 126, 122, 120, 117, 117, 121, 123, 125, 125, 125, 125, 128, 131, 132, 129, + 124, 123, 121, 122, 123, 124, 126, 124, 125, 129, 131, 130, 133, 137, 141, 144, + 145, 142, 143, 146, 148, 146, 144, 143, 143, 143, 143, 143, 144, 144, 145, 146, + 147, 148, 151, 151, 151, 151, 145, 145, 147, 146, 146, 147, 151, 154, 160, 153, + 150, 148, 151, 154, 161, 168, 169, 168, 166, 166, 170, 177, 179, 176, 179, 178, + 177, 176, 177, 176, 175, 175, 169, 174, 177, 172, 163, 160, 166, 173, 200, 180, + 147, 157, 174, 167, 169, 166, 167, 170, 175, 179, 179, 174, 168, 164, 152, 142, + 138, 117, 111, 127, 132, 146, 162, 137, 138, 150, 126, 114, 142, 55, 39, 68, + 76, 73, 85, 85, 82, 93, 75, 73, 70, 65, 64, 66, 66, 62, 68, 68, + 66, 69, 71, 74, 75, 75, 76, 80, 82, 71, 74, 77, 75, 76, 79, 81, + 81, 80, 76, 67, 78, 81, 82, 92, 76, 83, 92, 90, 85, 86, 83, 84, + 95, 86, 86, 89, 90, 90, 87, 89, 90, 84, 77, 80, 83, 83, 89, 94, + 88, 82, 92, 98, 98, 100, 93, 67, 41, 73, 112, 137, 142, 149, 150, 140, + 136, 132, 135, 139, 145, 147, 142, 131, 125, 122, 124, 125, 123, 122, 120, 120, + 122, 124, 121, 119, 119, 117, 119, 120, 121, 124, 121, 121, 124, 125, 125, 129, + 133, 137, 142, 144, 141, 141, 145, 145, 141, 143, 142, 141, 141, 141, 141, 143, + 143, 148, 149, 149, 149, 150, 149, 148, 148, 144, 144, 145, 144, 145, 148, 153, + 155, 160, 150, 146, 148, 156, 159, 166, 172, 170, 171, 168, 165, 169, 176, 178, + 174, 177, 177, 175, 174, 175, 174, 173, 173, 172, 174, 175, 171, 165, 163, 167, + 172, 188, 149, 148, 184, 177, 168, 181, 157, 167, 177, 181, 177, 175, 177, 171, + 162, 150, 145, 140, 114, 110, 134, 138, 145, 145, 132, 134, 140, 121, 118, 146, + 67, 49, 77, 78, 70, 87, 87, 80, 94, 91, 92, 90, 87, 87, 88, 87, + 83, 85, 84, 81, 82, 83, 85, 86, 85, 86, 90, 90, 74, 78, 82, 80, + 77, 77, 77, 76, 84, 78, 72, 87, 87, 83, 90, 77, 82, 89, 87, 85, + 90, 86, 80, 85, 79, 83, 87, 87, 86, 84, 88, 91, 94, 86, 87, 89, + 86, 89, 91, 83, 95, 103, 94, 78, 90, 106, 82, 39, 27, 84, 123, 133, + 140, 147, 143, 140, 145, 141, 135, 134, 137, 139, 141, 140, 136, 137, 137, 135, + 129, 127, 125, 125, 118, 117, 115, 117, 117, 119, 119, 120, 126, 121, 119, 122, + 123, 123, 127, 132, 132, 139, 142, 138, 138, 141, 141, 137, 142, 142, 141, 141, + 141, 142, 144, 145, 154, 153, 153, 152, 150, 148, 148, 145, 145, 144, 144, 146, + 145, 148, 154, 157, 153, 147, 146, 156, 163, 163, 162, 162, 168, 172, 172, 167, + 168, 174, 176, 173, 179, 178, 176, 175, 173, 173, 175, 175, 170, 168, 165, 160, + 156, 154, 155, 156, 127, 160, 167, 186, 200, 177, 166, 167, 169, 183, 186, 176, + 173, 179, 174, 160, 150, 148, 142, 112, 109, 138, 142, 142, 135, 150, 134, 142, + 160, 141, 118, 106, 61, 91, 87, 76, 92, 92, 81, 93, 87, 89, 90, 87, + 90, 94, 93, 87, 90, 87, 84, 82, 82, 83, 83, 84, 90, 91, 91, 72, + 74, 76, 78, 77, 76, 76, 79, 78, 78, 78, 80, 80, 80, 80, 82, 74, + 83, 82, 81, 84, 80, 77, 84, 69, 76, 79, 77, 79, 85, 90, 89, 87, + 89, 93, 92, 88, 87, 90, 93, 93, 96, 97, 84, 95, 91, 91, 45, 15, + 39, 73, 109, 133, 142, 142, 138, 145, 145, 143, 143, 144, 145, 143, 140, 132, + 130, 130, 131, 136, 138, 135, 133, 135, 136, 135, 128, 119, 112, 109, 107, 118, + 120, 124, 128, 128, 126, 121, 117, 130, 132, 134, 139, 138, 134, 136, 143, 143, + 147, 145, 141, 142, 148, 151, 151, 148, 149, 152, 153, 152, 148, 145, 140, 146, + 143, 141, 143, 146, 150, 148, 147, 127, 142, 158, 164, 162, 163, 167, 171, 171, + 170, 169, 171, 173, 175, 176, 175, 178, 175, 171, 169, 170, 170, 171, 170, 172, + 168, 161, 155, 153, 150, 144, 137, 160, 154, 173, 184, 172, 176, 178, 153, 170, + 182, 191, 188, 179, 171, 164, 160, 136, 143, 147, 132, 107, 142, 142, 145, 157, + 141, 140, 153, 154, 140, 128, 127, 77, 92, 81, 85, 88, 76, 83, 82, 89, + 88, 94, 93, 83, 84, 83, 72, 83, 79, 77, 78, 79, 78, 75, 78, 83, + 89, 87, 77, 78, 79, 77, 74, 73, 75, 77, 78, 77, 78, 77, 76, 76, + 78, 79, 78, 86, 85, 83, 87, 84, 80, 87, 81, 84, 82, 74, 70, 73, + 75, 74, 77, 80, 84, 84, 83, 83, 88, 90, 91, 90, 93, 89, 99, 88, + 95, 63, 21, 28, 39, 52, 73, 102, 136, 158, 158, 154, 148, 142, 141, 143, + 141, 137, 140, 138, 136, 137, 141, 144, 145, 145, 139, 139, 136, 132, 129, 127, + 127, 128, 124, 121, 117, 116, 117, 122, 125, 127, 120, 122, 127, 132, 134, 135, + 139, 148, 147, 151, 149, 145, 146, 150, 152, 150, 157, 157, 155, 152, 148, 146, + 145, 145, 141, 142, 144, 147, 151, 148, 141, 137, 148, 156, 164, 167, 168, 167, + 168, 170, 175, 174, 175, 177, 179, 179, 176, 173, 177, 174, 171, 169, 169, 169, + 168, 167, 157, 161, 162, 156, 149, 149, 158, 164, 155, 171, 181, 182, 183, 178, + 173, 171, 190, 195, 195, 186, 177, 173, 170, 167, 154, 149, 138, 120, 102, 146, + 154, 160, 146, 141, 147, 162, 165, 152, 137, 129, 103, 84, 92, 76, 93, 81, + 82, 80, 81, 77, 81, 83, 80, 87, 87, 75, 85, 83, 76, 71, 67, 67, + 73, 82, 78, 86, 88, 77, 78, 78, 77, 75, 74, 78, 79, 82, 80, 79, + 77, 76, 76, 79, 80, 79, 86, 84, 82, 87, 84, 81, 87, 82, 84, 80, + 74, 71, 74, 78, 79, 86, 88, 90, 90, 92, 93, 95, 96, 93, 87, 93, + 95, 105, 90, 101, 79, 16, 21, 26, 26, 33, 54, 89, 115, 129, 137, 147, + 151, 156, 157, 152, 143, 145, 144, 143, 141, 139, 141, 146, 149, 142, 142, 142, + 143, 142, 141, 138, 136, 132, 127, 118, 114, 116, 121, 124, 127, 122, 118, 121, + 125, 127, 127, 129, 138, 146, 149, 149, 145, 145, 148, 148, 144, 151, 153, 153, + 151, 147, 146, 147, 149, 148, 144, 138, 135, 137, 141, 146, 149, 163, 164, 165, + 168, 172, 173, 173, 170, 176, 177, 179, 181, 182, 180, 175, 171, 176, 174, 171, + 169, 169, 169, 167, 165, 159, 159, 157, 151, 146, 146, 155, 162, 160, 190, 189, + 179, 190, 180, 169, 187, 192, 193, 189, 181, 175, 173, 169, 164, 151, 146, 140, + 130, 116, 155, 149, 146, 138, 141, 149, 159, 163, 156, 140, 128, 127, 74, 92, + 68, 92, 82, 79, 77, 86, 78, 80, 79, 75, 80, 81, 70, 67, 78, 91, + 94, 92, 85, 80, 82, 87, 94, 97, 67, 70, 75, 77, 78, 79, 82, 84, + 85, 83, 82, 79, 79, 80, 85, 86, 81, 87, 84, 82, 88, 86, 82, 88, + 82, 83, 83, 82, 82, 85, 89, 92, 97, 98, 98, 98, 99, 99, 99, 100, + 95, 94, 98, 96, 107, 96, 103, 70, 9, 22, 34, 34, 31, 32, 42, 52, + 129, 136, 138, 134, 137, 151, 160, 162, 151, 150, 150, 147, 142, 138, 141, 144, + 146, 145, 148, 152, 153, 148, 138, 130, 139, 136, 133, 129, 129, 127, 125, 121, + 124, 121, 120, 121, 122, 123, 127, 135, 153, 158, 159, 156, 156, 159, 157, 153, + 149, 154, 157, 156, 150, 145, 144, 144, 144, 138, 133, 131, 134, 144, 156, 164, + 164, 164, 166, 166, 170, 173, 176, 177, 177, 175, 176, 179, 180, 179, 175, 172, + 175, 172, 170, 168, 168, 167, 165, 163, 168, 155, 144, 144, 150, 152, 151, 149, + 175, 193, 190, 178, 181, 177, 175, 188, 179, 181, 181, 178, 178, 177, 168, 159, + 145, 144, 145, 140, 123, 151, 137, 131, 160, 164, 165, 163, 164, 165, 157, 142, + 135, 85, 78, 76, 89, 78, 80, 73, 86, 80, 81, 77, 71, 76, 81, 72, + 86, 88, 87, 82, 82, 89, 94, 99, 101, 102, 102, 57, 62, 70, 75, 77, + 77, 79, 80, 80, 78, 78, 77, 77, 80, 85, 87, 84, 89, 84, 82, 89, + 88, 84, 89, 86, 87, 88, 89, 87, 84, 84, 86, 90, 89, 89, 90, 90, + 91, 92, 92, 93, 100, 99, 86, 101, 99, 95, 42, 14, 20, 26, 30, 30, + 31, 34, 39, 45, 80, 118, 141, 150, 155, 150, 139, 155, 158, 160, 157, 152, + 149, 149, 148, 149, 148, 148, 147, 148, 146, 139, 133, 144, 144, 143, 142, 141, + 138, 132, 126, 122, 116, 115, 120, 124, 127, 133, 139, 140, 145, 148, 147, 148, + 150, 149, 145, 158, 159, 157, 152, 145, 140, 139, 139, 129, 134, 143, 149, 153, + 157, 157, 159, 163, 167, 168, 169, 170, 172, 178, 182, 177, 174, 173, 175, 177, + 179, 178, 177, 172, 170, 168, 167, 166, 164, 161, 159, 158, 147, 142, 149, 160, + 162, 162, 163, 197, 188, 191, 185, 170, 177, 189, 181, 180, 181, 180, 179, 181, + 182, 174, 165, 156, 150, 143, 129, 105, 138, 139, 149, 162, 168, 165, 158, 156, + 160, 155, 141, 131, 114, 65, 97, 89, 76, 85, 75, 73, 75, 82, 83, 79, + 89, 98, 97, 107, 108, 103, 100, 104, 110, 108, 105, 108, 107, 103, 56, 61, + 68, 71, 71, 70, 71, 71, 71, 70, 71, 71, 72, 75, 79, 81, 79, 83, + 77, 75, 83, 82, 78, 83, 79, 80, 83, 86, 85, 80, 79, 81, 84, 83, + 83, 86, 89, 91, 94, 93, 88, 98, 96, 78, 93, 94, 85, 22, 18, 20, + 22, 27, 32, 36, 37, 36, 31, 44, 54, 60, 81, 117, 148, 157, 150, 151, + 156, 159, 159, 156, 155, 155, 154, 147, 142, 139, 140, 141, 144, 145, 146, 144, + 142, 142, 143, 143, 142, 140, 125, 117, 114, 115, 120, 118, 123, 127, 140, 144, + 147, 146, 147, 150, 150, 146, 146, 142, 136, 132, 133, 138, 144, 150, 141, 145, + 152, 156, 157, 161, 162, 164, 168, 171, 175, 174, 172, 172, 176, 179, 177, 174, + 173, 174, 177, 179, 180, 179, 169, 167, 165, 164, 163, 161, 158, 155, 144, 145, + 151, 156, 155, 152, 162, 177, 207, 186, 191, 189, 171, 184, 198, 178, 190, 188, + 182, 176, 176, 178, 175, 169, 157, 151, 144, 129, 102, 135, 145, 163, 149, 157, + 159, 158, 158, 158, 149, 135, 129, 139, 61, 105, 95, 84, 91, 81, 76, 76, + 86, 90, 89, 98, 108, 103, 63, 76, 89, 99, 108, 110, 93, 72, 114, 108, + 101, 65, 66, 69, 69, 68, 67, 70, 71, 71, 70, 72, 72, 73, 74, 77, + 78, 76, 79, 72, 70, 79, 79, 74, 78, 74, 73, 76, 82, 82, 79, 80, + 86, 84, 82, 82, 85, 90, 93, 93, 92, 82, 88, 89, 77, 89, 85, 79, + 25, 16, 22, 27, 32, 35, 35, 31, 28, 41, 43, 38, 38, 63, 105, 130, + 129, 144, 143, 146, 150, 155, 156, 156, 153, 151, 149, 146, 141, 140, 143, 148, + 152, 148, 147, 145, 146, 148, 147, 147, 146, 135, 127, 121, 119, 121, 116, 117, + 118, 112, 117, 118, 116, 117, 120, 120, 117, 131, 128, 126, 131, 140, 150, 156, + 157, 158, 157, 157, 155, 154, 160, 168, 176, 171, 173, 174, 174, 176, 176, 175, + 172, 175, 172, 173, 174, 177, 177, 175, 173, 166, 165, 163, 162, 161, 159, 155, + 151, 151, 152, 158, 160, 152, 146, 162, 182, 198, 193, 191, 187, 186, 192, 193, + 185, 190, 190, 185, 178, 175, 175, 172, 167, 150, 148, 148, 138, 112, 139, 143, + 158, 159, 165, 170, 173, 174, 168, 159, 150, 133, 145, 69, 87, 103, 94, 87, + 87, 88, 82, 87, 92, 95, 100, 100, 89, 95, 101, 102, 101, 112, 125, 129, + 122, 120, 112, 105, 72, 72, 72, 70, 68, 70, 75, 79, 76, 76, 78, 78, + 78, 78, 80, 80, 82, 84, 77, 75, 84, 84, 80, 84, 83, 79, 79, 83, + 81, 77, 79, 86, 81, 78, 77, 78, 83, 84, 83, 81, 82, 82, 86, 81, + 92, 80, 81, 41, 19, 22, 26, 28, 29, 32, 33, 35, 39, 35, 31, 40, + 83, 137, 162, 158, 148, 142, 142, 145, 151, 155, 156, 153, 148, 150, 154, 154, + 151, 145, 145, 146, 150, 151, 153, 153, 156, 152, 147, 141, 143, 134, 131, 132, + 135, 132, 130, 132, 135, 138, 137, 134, 134, 136, 136, 133, 136, 135, 139, 149, + 160, 164, 159, 154, 153, 158, 163, 165, 166, 165, 169, 171, 171, 169, 168, 172, + 179, 180, 175, 167, 171, 169, 171, 174, 175, 173, 169, 165, 165, 163, 162, 161, + 160, 157, 153, 149, 164, 155, 153, 158, 161, 161, 173, 189, 180, 198, 189, 182, + 199, 195, 182, 190, 184, 190, 192, 189, 184, 180, 172, 165, 157, 150, 146, 135, + 109, 137, 140, 155, 160, 160, 163, 166, 165, 158, 154, 149, 136, 137, 78, 65, + 106, 101, 81, 89, 90, 79, 79, 87, 95, 102, 93, 74, 95, 107, 109, 103, + 107, 116, 116, 109, 121, 112, 108, 64, 67, 67, 63, 61, 66, 71, 71, 71, + 74, 80, 82, 82, 81, 83, 83, 85, 88, 80, 75, 81, 82, 82, 90, 84, + 85, 83, 77, 76, 78, 79, 76, 77, 76, 75, 76, 79, 80, 80, 79, 76, + 90, 94, 84, 84, 91, 79, 56, 18, 21, 28, 32, 28, 23, 29, 41, 39, + 38, 37, 47, 88, 141, 167, 164, 163, 162, 161, 157, 152, 147, 146, 146, 148, + 148, 149, 150, 150, 150, 152, 154, 157, 157, 156, 153, 155, 153, 154, 152, 150, + 141, 133, 128, 133, 134, 135, 134, 140, 140, 140, 141, 142, 142, 143, 143, 145, + 145, 147, 150, 153, 157, 160, 164, 160, 161, 161, 161, 164, 166, 168, 170, 171, + 171, 172, 172, 172, 173, 174, 175, 172, 170, 171, 173, 174, 173, 170, 167, 166, + 166, 162, 156, 150, 148, 152, 156, 155, 158, 161, 159, 164, 175, 185, 188, 190, + 178, 180, 187, 191, 195, 192, 177, 191, 185, 179, 178, 180, 179, 172, 167, 168, + 156, 146, 134, 112, 145, 145, 155, 164, 163, 163, 167, 166, 159, 157, 154, 136, + 124, 90, 62, 90, 85, 92, 87, 86, 81, 78, 79, 86, 89, 88, 88, 108, + 103, 98, 104, 118, 121, 109, 96, 135, 163, 122, 60, 63, 64, 60, 59, 64, + 69, 69, 67, 71, 77, 79, 79, 79, 84, 86, 94, 97, 90, 84, 86, 81, + 75, 79, 79, 81, 81, 77, 77, 80, 81, 78, 83, 82, 80, 81, 83, 84, + 84, 83, 81, 90, 93, 87, 90, 97, 92, 78, 26, 25, 23, 25, 26, 34, + 52, 70, 81, 85, 83, 84, 108, 146, 167, 164, 172, 170, 171, 169, 166, 163, + 163, 161, 157, 162, 165, 162, 158, 156, 160, 164, 168, 167, 167, 166, 168, 169, + 171, 170, 166, 162, 155, 145, 139, 138, 140, 142, 134, 136, 140, 143, 145, 144, + 143, 141, 145, 146, 149, 153, 157, 160, 163, 167, 169, 169, 167, 166, 167, 168, + 168, 169, 172, 172, 172, 172, 175, 173, 176, 174, 170, 170, 171, 173, 175, 175, + 173, 171, 163, 161, 159, 155, 152, 151, 153, 156, 159, 160, 162, 164, 174, 185, + 191, 189, 191, 195, 206, 204, 187, 183, 192, 194, 187, 185, 183, 180, 176, 173, + 171, 170, 160, 161, 160, 142, 106, 130, 139, 161, 164, 164, 163, 168, 168, 163, + 157, 153, 133, 119, 87, 61, 94, 93, 94, 84, 76, 75, 77, 83, 93, 98, + 101, 105, 94, 93, 93, 98, 107, 110, 108, 104, 90, 116, 117, 57, 61, 62, + 59, 58, 63, 68, 68, 64, 69, 75, 74, 72, 72, 79, 84, 77, 84, 82, + 81, 86, 81, 73, 77, 75, 78, 80, 78, 80, 83, 84, 81, 86, 84, 82, + 82, 85, 86, 85, 84, 83, 83, 82, 82, 88, 92, 90, 89, 60, 57, 52, + 54, 61, 76, 97, 112, 117, 126, 127, 121, 128, 146, 161, 160, 172, 173, 176, + 177, 176, 172, 171, 171, 168, 173, 178, 176, 167, 161, 164, 170, 172, 171, 173, + 171, 175, 176, 179, 180, 176, 174, 169, 156, 145, 139, 139, 142, 139, 140, 142, + 144, 146, 148, 148, 149, 145, 147, 149, 153, 156, 158, 160, 160, 167, 167, 165, + 163, 162, 162, 163, 164, 166, 166, 167, 168, 170, 168, 170, 168, 169, 168, 167, + 168, 169, 170, 168, 167, 161, 159, 156, 155, 156, 157, 158, 157, 159, 162, 164, + 171, 185, 196, 196, 190, 201, 196, 200, 199, 190, 189, 194, 190, 180, 182, 182, + 177, 170, 165, 166, 168, 161, 155, 149, 136, 109, 136, 137, 148, 163, 163, 165, + 168, 169, 163, 157, 154, 141, 121, 86, 56, 93, 99, 99, 93, 95, 92, 93, + 93, 92, 90, 90, 90, 99, 102, 102, 101, 99, 101, 102, 104, 96, 101, 125, + 60, 64, 66, 62, 60, 64, 68, 67, 66, 70, 73, 70, 65, 64, 71, 77, + 64, 73, 73, 75, 83, 81, 76, 80, 76, 80, 82, 82, 83, 87, 86, 83, + 86, 84, 81, 80, 83, 84, 84, 83, 85, 80, 77, 80, 84, 83, 83, 88, + 95, 97, 97, 102, 109, 117, 126, 134, 132, 142, 145, 139, 139, 152, 161, 163, + 170, 174, 176, 178, 178, 176, 175, 172, 172, 177, 181, 178, 172, 168, 168, 170, + 174, 173, 171, 171, 172, 175, 178, 179, 174, 173, 170, 164, 155, 146, 142, 142, + 146, 143, 140, 137, 138, 142, 147, 150, 145, 147, 148, 150, 151, 152, 152, 151, + 160, 160, 159, 159, 159, 160, 162, 163, 163, 163, 165, 165, 166, 165, 165, 165, + 170, 168, 166, 165, 165, 166, 165, 163, 164, 160, 158, 158, 161, 163, 162, 159, + 158, 164, 171, 178, 190, 198, 197, 191, 200, 188, 187, 189, 190, 195, 197, 188, + 183, 184, 183, 177, 171, 167, 167, 169, 161, 151, 145, 136, 115, 145, 142, 150, + 162, 161, 162, 169, 169, 163, 157, 151, 149, 126, 93, 52, 86, 102, 104, 104, + 88, 90, 95, 96, 95, 96, 96, 100, 105, 108, 108, 106, 102, 100, 101, 103, + 112, 95, 106, 67, 71, 72, 67, 65, 67, 70, 68, 69, 71, 74, 70, 66, + 66, 73, 79, 79, 85, 82, 80, 86, 82, 76, 81, 81, 85, 87, 86, 86, + 89, 88, 84, 87, 84, 81, 80, 80, 82, 84, 83, 88, 82, 82, 86, 87, + 83, 84, 92, 108, 114, 120, 123, 128, 131, 131, 129, 139, 146, 149, 146, 148, + 160, 167, 168, 175, 178, 182, 184, 183, 179, 178, 177, 177, 175, 176, 177, 177, + 174, 170, 167, 179, 178, 176, 174, 174, 174, 175, 177, 172, 170, 170, 172, 172, + 167, 159, 154, 147, 145, 142, 139, 138, 138, 140, 141, 145, 145, 147, 148, 149, + 149, 150, 150, 159, 158, 157, 157, 157, 159, 161, 162, 161, 159, 162, 161, 163, + 161, 163, 163, 167, 166, 164, 164, 166, 167, 167, 166, 164, 161, 158, 159, 162, + 164, 162, 160, 160, 171, 184, 189, 192, 196, 198, 197, 193, 191, 199, 198, 187, + 190, 200, 201, 192, 190, 185, 180, 177, 175, 172, 172, 154, 159, 165, 150, 114, + 138, 146, 168, 163, 161, 159, 166, 167, 162, 156, 149, 145, 126, 105, 56, 82, + 99, 97, 103, 88, 91, 96, 97, 97, 98, 101, 102, 100, 101, 103, 105, 107, + 108, 105, 103, 102, 98, 89, 69, 74, 75, 71, 69, 70, 73, 71, 72, 73, + 75, 74, 75, 77, 84, 87, 86, 91, 86, 83, 88, 85, 80, 85, 86, 89, + 90, 87, 87, 90, 90, 86, 89, 85, 82, 81, 82, 84, 87, 87, 84, 82, + 84, 87, 88, 87, 90, 97, 112, 122, 129, 129, 132, 135, 138, 137, 145, 149, + 151, 149, 151, 159, 164, 164, 174, 179, 182, 183, 182, 180, 178, 178, 179, 176, + 172, 175, 179, 179, 173, 170, 178, 179, 175, 174, 173, 172, 172, 169, 168, 167, + 167, 172, 177, 177, 170, 163, 158, 157, 158, 157, 154, 149, 144, 140, 141, 141, + 141, 142, 143, 145, 147, 148, 156, 155, 153, 152, 152, 152, 154, 153, 152, 152, + 151, 151, 151, 150, 154, 154, 155, 155, 156, 159, 163, 165, 166, 165, 163, 161, + 159, 159, 160, 162, 163, 165, 170, 183, 195, 196, 194, 196, 199, 200, 201, 192, + 194, 195, 191, 195, 199, 192, 192, 188, 182, 178, 175, 173, 170, 169, 160, 160, + 161, 147, 114, 139, 143, 160, 166, 161, 158, 163, 168, 163, 156, 149, 135, 120, + 112, 61, 83, 98, 86, 92, 99, 97, 98, 98, 97, 97, 97, 98, 105, 103, + 103, 105, 110, 109, 103, 99, 92, 112, 102, 66, 71, 74, 71, 70, 73, 76, + 74, 75, 74, 75, 77, 81, 85, 88, 88, 81, 87, 84, 83, 90, 88, 83, + 88, 87, 89, 89, 86, 87, 91, 91, 89, 89, 83, 80, 79, 83, 86, 89, + 90, 82, 84, 85, 83, 85, 89, 92, 97, 116, 129, 139, 138, 140, 145, 152, + 153, 150, 154, 158, 156, 153, 155, 155, 158, 171, 177, 179, 180, 179, 178, 179, + 181, 179, 177, 174, 174, 175, 175, 174, 172, 174, 176, 176, 175, 174, 170, 168, + 166, 168, 168, 169, 171, 171, 172, 171, 170, 175, 175, 173, 171, 167, 163, 159, + 157, 152, 150, 147, 145, 145, 146, 148, 149, 148, 147, 146, 145, 146, 147, 149, + 148, 147, 145, 143, 142, 143, 143, 147, 149, 153, 154, 155, 158, 162, 163, 162, + 161, 162, 162, 162, 161, 162, 165, 169, 175, 182, 192, 198, 197, 195, 196, 198, + 197, 205, 190, 187, 191, 195, 200, 198, 182, 188, 187, 184, 177, 170, 166, 167, + 170, 166, 157, 150, 140, 117, 146, 144, 152, 170, 164, 160, 163, 168, 164, 159, + 152, 139, 121, 112, 58, 83, 103, 86, 92, 86, 82, 82, 87, 94, 102, 104, + 105, 106, 105, 102, 101, 101, 100, 96, 94, 89, 109, 104, 59, 65, 70, 68, + 69, 73, 75, 74, 79, 75, 72, 74, 79, 83, 81, 80, 82, 89, 89, 86, + 93, 86, 81, 83, 86, 86, 87, 82, 86, 89, 93, 89, 85, 82, 78, 78, + 80, 85, 87, 88, 86, 92, 90, 84, 83, 92, 97, 102, 111, 131, 143, 143, + 144, 148, 154, 155, 154, 164, 169, 168, 161, 156, 157, 160, 172, 176, 180, 180, + 180, 181, 183, 186, 176, 178, 176, 173, 170, 169, 170, 172, 174, 175, 176, 177, + 176, 173, 170, 167, 173, 175, 175, 172, 166, 167, 172, 177, 187, 181, 172, 164, + 161, 162, 166, 170, 173, 169, 163, 157, 154, 153, 153, 153, 147, 147, 148, 149, + 151, 154, 156, 157, 155, 153, 150, 147, 148, 149, 154, 157, 165, 165, 168, 167, + 170, 167, 165, 160, 166, 165, 168, 165, 167, 169, 179, 186, 189, 194, 195, 193, + 193, 196, 195, 190, 191, 193, 202, 202, 187, 185, 196, 198, 190, 193, 193, 184, + 172, 167, 171, 179, 157, 162, 165, 150, 115, 141, 150, 173, 171, 166, 161, 165, + 168, 168, 161, 157, 154, 125, 110, 52, 79, 108, 93, 102, 99, 93, 86, 85, + 87, 89, 87, 83, 93, 91, 91, 90, 92, 93, 96, 97, 102, 104, 99, 66, + 66, 68, 66, 64, 67, 71, 74, 79, 78, 76, 75, 74, 76, 78, 79, 82, + 81, 83, 80, 82, 81, 84, 82, 92, 84, 81, 79, 85, 85, 85, 80, 80, + 82, 80, 80, 83, 88, 83, 76, 80, 88, 93, 76, 79, 91, 89, 108, 127, + 137, 144, 148, 149, 151, 155, 158, 167, 167, 169, 171, 169, 167, 162, 158, 163, + 167, 173, 175, 176, 177, 178, 180, 173, 175, 179, 184, 188, 187, 181, 173, 176, + 173, 170, 167, 166, 166, 168, 168, 162, 167, 173, 174, 171, 168, 166, 166, 168, + 173, 177, 168, 159, 160, 167, 175, 177, 180, 183, 182, 177, 171, 166, 163, 166, + 165, 163, 160, 158, 156, 154, 154, 153, 154, 156, 160, 166, 170, 177, 180, 185, + 180, 179, 177, 176, 166, 162, 159, 168, 170, 177, 177, 180, 179, 183, 186, 190, + 196, 200, 198, 196, 196, 194, 190, 185, 192, 192, 188, 190, 199, 198, 189, 195, + 193, 186, 178, 177, 180, 180, 177, 164, 162, 160, 147, 128, 134, 146, 147, 167, + 166, 164, 163, 166, 165, 165, 162, 149, 132, 122, 69, 74, 90, 101, 92, 94, + 92, 89, 85, 83, 83, 83, 83, 87, 86, 91, 92, 97, 96, 99, 99, 91, + 95, 100, 75, 73, 74, 72, 71, 70, 73, 75, 73, 72, 71, 71, 71, 73, + 76, 78, 77, 77, 78, 76, 79, 78, 81, 79, 77, 73, 73, 72, 76, 75, + 73, 70, 81, 80, 74, 66, 67, 74, 78, 77, 81, 75, 81, 81, 90, 92, + 83, 105, 130, 140, 147, 150, 151, 152, 156, 159, 158, 159, 162, 166, 167, 164, + 159, 154, 158, 161, 166, 170, 174, 175, 174, 173, 173, 174, 176, 180, 184, 184, + 181, 175, 180, 176, 173, 171, 169, 169, 170, 170, 169, 168, 166, 162, 160, 162, + 167, 171, 168, 171, 174, 169, 167, 170, 176, 177, 183, 182, 180, 176, 172, 171, + 171, 173, 175, 174, 172, 171, 172, 174, 177, 179, 179, 178, 178, 178, 179, 181, + 183, 185, 189, 184, 183, 185, 185, 181, 179, 179, 180, 182, 184, 184, 183, 184, + 188, 191, 194, 199, 200, 196, 194, 195, 195, 193, 195, 200, 198, 191, 191, 197, + 196, 187, 191, 191, 186, 179, 177, 179, 176, 171, 162, 158, 154, 139, 121, 128, + 143, 147, 163, 162, 163, 163, 167, 168, 165, 162, 153, 140, 125, 79, 79, 98, + 102, 96, 95, 94, 94, 92, 90, 88, 85, 84, 87, 87, 86, 86, 87, 89, + 91, 92, 92, 93, 97, 71, 73, 74, 72, 72, 70, 71, 72, 75, 75, 74, + 74, 75, 76, 78, 80, 73, 73, 74, 74, 76, 76, 79, 79, 80, 79, 81, + 80, 79, 75, 71, 68, 73, 73, 68, 60, 58, 65, 70, 72, 69, 64, 77, + 80, 79, 70, 69, 107, 133, 143, 150, 153, 153, 154, 157, 159, 157, 159, 164, + 169, 171, 169, 164, 159, 150, 151, 156, 165, 174, 179, 179, 177, 175, 175, 175, + 177, 181, 183, 183, 180, 178, 175, 174, 172, 170, 169, 167, 167, 171, 168, 164, + 159, 157, 159, 165, 169, 165, 166, 169, 169, 172, 177, 179, 175, 180, 179, 178, + 174, 172, 172, 176, 179, 182, 180, 179, 179, 181, 186, 191, 195, 192, 190, 188, + 186, 184, 184, 184, 184, 187, 182, 180, 184, 186, 185, 186, 188, 191, 191, 190, + 188, 186, 187, 190, 193, 197, 200, 199, 194, 191, 194, 195, 194, 198, 201, 198, + 190, 191, 196, 195, 189, 188, 189, 186, 181, 179, 179, 174, 168, 166, 159, 153, + 138, 120, 128, 147, 154, 159, 158, 159, 161, 165, 166, 165, 162, 151, 144, 125, + 89, 76, 103, 99, 97, 97, 98, 99, 99, 97, 93, 89, 87, 91, 89, 86, + 84, 83, 85, 87, 89, 90, 91, 91, 65, 66, 70, 71, 72, 71, 72, 73, + 78, 77, 76, 74, 73, 73, 74, 73, 72, 73, 73, 74, 76, 78, 80, 81, + 76, 78, 78, 76, 70, 65, 61, 60, 70, 76, 79, 73, 69, 71, 70, 70, + 74, 69, 76, 71, 73, 72, 72, 106, 133, 144, 150, 154, 154, 154, 156, 158, + 162, 163, 166, 171, 175, 175, 172, 169, 157, 155, 155, 162, 172, 180, 181, 179, + 177, 176, 175, 176, 178, 182, 185, 184, 175, 175, 175, 174, 172, 170, 167, 165, + 168, 168, 168, 166, 164, 161, 160, 159, 158, 161, 166, 166, 170, 174, 176, 172, + 175, 177, 181, 181, 179, 176, 176, 176, 183, 183, 182, 182, 183, 186, 190, 192, + 189, 188, 186, 185, 184, 185, 186, 187, 188, 182, 179, 181, 182, 182, 184, 187, + 192, 192, 191, 190, 189, 189, 189, 190, 195, 198, 198, 192, 190, 192, 193, 191, + 191, 192, 189, 185, 187, 194, 195, 192, 187, 187, 185, 180, 179, 181, 177, 171, + 167, 159, 153, 141, 124, 130, 148, 155, 156, 156, 158, 161, 166, 167, 165, 161, + 154, 149, 127, 96, 71, 106, 98, 99, 98, 99, 100, 100, 99, 96, 93, 90, + 94, 92, 90, 88, 87, 87, 89, 90, 88, 86, 84, 69, 73, 77, 79, 78, + 77, 78, 78, 75, 75, 75, 73, 72, 72, 74, 71, 75, 76, 76, 78, 80, + 82, 84, 85, 82, 83, 83, 80, 76, 72, 71, 72, 83, 92, 96, 92, 88, + 85, 82, 79, 74, 73, 76, 70, 83, 95, 86, 102, 131, 140, 147, 151, 151, + 151, 152, 154, 160, 160, 161, 164, 168, 170, 170, 169, 172, 165, 159, 159, 165, + 170, 171, 170, 173, 172, 172, 171, 173, 176, 180, 183, 179, 179, 180, 179, 178, + 175, 172, 170, 168, 168, 169, 168, 166, 161, 155, 151, 148, 156, 163, 163, 164, + 168, 173, 174, 176, 178, 181, 181, 180, 178, 177, 177, 181, 182, 183, 185, 186, + 186, 186, 186, 186, 186, 185, 185, 186, 188, 190, 191, 192, 185, 181, 183, 184, + 184, 186, 189, 188, 189, 191, 193, 193, 192, 190, 188, 189, 194, 195, 191, 189, + 190, 189, 187, 187, 186, 184, 182, 185, 191, 193, 191, 184, 184, 180, 175, 176, + 179, 178, 174, 162, 154, 152, 143, 126, 128, 144, 150, 155, 156, 158, 161, 166, + 167, 164, 161, 158, 156, 132, 98, 70, 104, 97, 102, 95, 94, 94, 94, 93, + 92, 91, 91, 89, 90, 90, 90, 90, 89, 88, 88, 88, 86, 83, 75, 78, + 81, 81, 79, 77, 78, 78, 76, 77, 78, 81, 82, 85, 85, 84, 82, 81, + 83, 82, 86, 86, 90, 90, 94, 92, 94, 92, 95, 93, 95, 97, 94, 100, + 98, 92, 90, 90, 89, 85, 38, 61, 83, 70, 70, 80, 79, 102, 128, 138, + 146, 150, 151, 150, 151, 153, 161, 161, 161, 164, 167, 169, 168, 167, 167, 162, + 157, 156, 161, 167, 172, 173, 168, 169, 170, 170, 169, 171, 174, 177, 177, 177, + 178, 178, 177, 175, 172, 171, 173, 169, 165, 162, 161, 159, 157, 156, 143, 151, + 157, 157, 158, 165, 173, 177, 181, 180, 177, 176, 175, 176, 180, 183, 179, 181, + 184, 187, 188, 188, 187, 186, 185, 184, 183, 183, 183, 185, 187, 188, 188, 182, + 179, 181, 184, 184, 187, 190, 188, 189, 192, 195, 197, 195, 191, 187, 185, 190, + 192, 189, 188, 189, 188, 186, 190, 188, 185, 184, 185, 187, 187, 186, 181, 180, + 177, 172, 172, 176, 176, 172, 163, 155, 154, 149, 131, 130, 143, 149, 155, 157, + 158, 161, 166, 167, 165, 162, 154, 151, 132, 92, 67, 92, 89, 93, 93, 93, + 93, 94, 95, 95, 95, 96, 92, 93, 94, 95, 95, 94, 93, 90, 89, 88, + 86, 77, 79, 81, 81, 77, 75, 75, 78, 80, 82, 85, 87, 90, 93, 94, + 94, 90, 90, 91, 91, 94, 94, 97, 97, 91, 89, 91, 93, 98, 97, 94, + 90, 99, 102, 96, 90, 87, 89, 87, 82, 33, 50, 71, 64, 59, 61, 67, + 103, 126, 136, 145, 150, 151, 151, 152, 154, 160, 162, 165, 169, 171, 170, 166, + 162, 159, 158, 158, 159, 162, 167, 172, 175, 167, 170, 173, 173, 171, 170, 171, + 173, 174, 174, 174, 174, 173, 173, 172, 171, 176, 171, 165, 163, 164, 166, 166, + 165, 148, 150, 149, 147, 149, 158, 164, 165, 174, 174, 174, 173, 174, 177, 180, + 185, 177, 179, 180, 182, 184, 184, 184, 184, 183, 182, 181, 180, 180, 181, 182, + 183, 182, 177, 175, 178, 181, 181, 182, 186, 190, 190, 190, 193, 195, 194, 190, + 186, 186, 190, 190, 186, 185, 188, 190, 190, 191, 188, 186, 185, 185, 183, 181, + 180, 182, 183, 180, 176, 176, 177, 174, 168, 167, 157, 156, 151, 133, 130, 143, + 150, 159, 157, 158, 159, 163, 165, 165, 164, 149, 145, 137, 88, 71, 80, 83, + 81, 86, 86, 90, 93, 95, 95, 94, 93, 95, 95, 94, 94, 93, 93, 93, + 93, 87, 87, 87, 75, 77, 80, 81, 81, 79, 80, 82, 80, 80, 83, 86, + 88, 89, 90, 92, 98, 98, 100, 99, 102, 102, 105, 104, 105, 101, 104, 106, + 111, 107, 101, 93, 104, 104, 101, 97, 95, 94, 88, 79, 83, 56, 46, 50, + 75, 84, 74, 96, 124, 136, 145, 151, 152, 152, 154, 155, 156, 159, 165, 170, + 172, 168, 160, 154, 167, 168, 168, 166, 164, 162, 163, 164, 169, 173, 177, 178, + 175, 173, 173, 173, 176, 176, 176, 176, 176, 176, 176, 176, 174, 172, 170, 171, + 174, 175, 173, 171, 157, 152, 143, 138, 141, 151, 153, 150, 160, 165, 173, 178, + 180, 178, 180, 179, 177, 176, 175, 175, 175, 176, 177, 178, 185, 184, 183, 182, + 182, 183, 185, 186, 185, 180, 177, 180, 181, 180, 180, 183, 192, 190, 188, 188, + 190, 190, 187, 184, 188, 190, 189, 184, 183, 189, 193, 194, 188, 185, 183, 184, + 184, 181, 178, 177, 186, 188, 187, 183, 182, 181, 174, 166, 165, 153, 151, 146, + 127, 124, 138, 146, 161, 159, 159, 159, 163, 165, 166, 165, 152, 147, 149, 92, + 81, 82, 87, 79, 71, 76, 82, 87, 90, 89, 86, 84, 95, 93, 90, 87, + 85, 86, 88, 87, 82, 84, 86, 80, 82, 83, 83, 82, 80, 76, 74, 89, + 86, 75, 91, 85, 93, 90, 103, 103, 96, 89, 89, 96, 99, 98, 93, 105, + 112, 116, 108, 103, 104, 108, 107, 109, 105, 103, 100, 96, 91, 86, 84, 90, + 89, 84, 76, 70, 59, 64, 90, 122, 135, 139, 144, 152, 148, 144, 151, 153, + 158, 164, 167, 166, 163, 159, 158, 163, 164, 164, 163, 161, 161, 163, 165, 164, + 169, 175, 180, 181, 177, 172, 168, 169, 170, 172, 176, 178, 176, 171, 167, 167, + 174, 179, 176, 167, 161, 161, 164, 167, 162, 147, 143, 146, 141, 138, 147, 152, + 160, 171, 178, 177, 169, 169, 170, 170, 172, 178, 184, 180, 171, 170, 175, 185, + 180, 175, 175, 180, 184, 185, 185, 186, 181, 177, 177, 181, 186, 188, 188, 192, + 193, 192, 190, 187, 185, 186, 188, 190, 190, 189, 188, 188, 187, 186, 186, 188, + 187, 187, 188, 187, 184, 178, 174, 181, 177, 175, 178, 179, 175, 171, 172, 164, + 161, 156, 148, 133, 126, 131, 141, 155, 154, 156, 158, 162, 164, 164, 162, 144, + 141, 144, 71, 98, 83, 76, 87, 77, 76, 77, 81, 83, 83, 81, 78, 81, + 78, 75, 74, 75, 79, 83, 87, 79, 79, 81, 82, 82, 80, 80, 78, 76, + 72, 71, 73, 81, 75, 84, 76, 88, 81, 86, 112, 111, 104, 94, 88, 86, + 92, 96, 89, 93, 96, 94, 98, 103, 105, 100, 93, 94, 103, 110, 107, 95, + 87, 87, 67, 83, 90, 89, 95, 95, 93, 103, 120, 134, 138, 142, 149, 146, + 143, 150, 153, 157, 163, 165, 165, 162, 160, 160, 162, 164, 165, 165, 164, 164, + 165, 167, 161, 164, 169, 173, 176, 176, 175, 174, 175, 171, 166, 165, 167, 170, + 173, 174, 171, 165, 162, 166, 174, 175, 168, 160, 157, 165, 164, 154, 143, 127, + 122, 130, 141, 156, 161, 156, 164, 185, 185, 169, 172, 175, 180, 182, 175, 171, + 178, 190, 177, 177, 178, 178, 179, 181, 184, 186, 193, 188, 181, 179, 180, 183, + 184, 185, 186, 187, 188, 187, 186, 186, 188, 189, 190, 190, 189, 188, 188, 187, + 186, 186, 189, 188, 187, 185, 183, 178, 171, 166, 173, 169, 169, 173, 174, 171, + 167, 168, 168, 163, 156, 145, 132, 127, 135, 147, 154, 155, 159, 162, 165, 165, + 162, 158, 147, 145, 132, 81, 102, 86, 77, 82, 78, 77, 76, 78, 80, 80, + 79, 77, 80, 81, 82, 82, 80, 78, 76, 73, 77, 78, 80, 81, 80, 78, + 77, 76, 76, 75, 75, 71, 96, 99, 95, 71, 83, 84, 95, 86, 90, 92, + 90, 94, 96, 105, 108, 115, 112, 110, 106, 110, 109, 105, 93, 103, 94, 96, + 101, 93, 81, 78, 86, 84, 97, 94, 83, 89, 94, 90, 91, 120, 135, 140, + 142, 148, 146, 143, 150, 152, 156, 160, 163, 163, 162, 162, 162, 162, 164, 167, + 168, 167, 166, 166, 167, 163, 164, 165, 167, 169, 172, 174, 176, 177, 172, 165, + 161, 162, 166, 169, 171, 163, 167, 171, 171, 169, 168, 170, 173, 168, 165, 159, + 155, 153, 144, 129, 117, 123, 127, 142, 159, 165, 168, 179, 193, 180, 172, 167, + 169, 172, 171, 169, 169, 171, 176, 181, 182, 180, 181, 186, 190, 195, 190, 183, + 179, 179, 181, 184, 185, 185, 187, 188, 188, 187, 186, 188, 190, 190, 190, 189, + 188, 188, 187, 186, 186, 192, 191, 189, 187, 184, 179, 173, 169, 172, 170, 171, + 176, 178, 175, 171, 171, 175, 168, 157, 144, 129, 126, 136, 150, 151, 154, 161, + 164, 167, 164, 160, 156, 150, 149, 115, 98, 107, 89, 82, 81, 78, 74, 71, + 71, 74, 76, 77, 78, 75, 77, 79, 81, 82, 82, 81, 80, 78, 80, 80, + 75, 76, 74, 72, 72, 75, 76, 77, 75, 86, 80, 83, 67, 79, 78, 88, + 96, 93, 90, 98, 110, 113, 102, 90, 98, 99, 101, 107, 114, 119, 118, 113, + 120, 105, 100, 104, 98, 81, 76, 82, 78, 85, 81, 75, 78, 81, 78, 86, + 119, 137, 141, 141, 147, 147, 145, 152, 152, 155, 158, 160, 161, 162, 164, 165, + 163, 166, 169, 170, 168, 166, 165, 165, 170, 169, 168, 167, 167, 168, 168, 169, + 173, 172, 170, 169, 168, 166, 162, 160, 160, 168, 174, 170, 160, 156, 162, 170, + 170, 159, 151, 147, 148, 150, 137, 116, 110, 108, 122, 146, 156, 158, 166, 181, + 185, 179, 177, 179, 181, 179, 175, 171, 173, 176, 180, 181, 183, 186, 191, 195, + 191, 187, 181, 178, 178, 182, 187, 190, 190, 192, 193, 192, 189, 187, 188, 188, + 189, 189, 189, 188, 188, 187, 187, 187, 187, 186, 186, 186, 186, 184, 180, 177, + 177, 174, 175, 180, 182, 178, 174, 174, 178, 171, 159, 145, 129, 124, 133, 147, + 153, 157, 163, 165, 166, 163, 160, 156, 151, 148, 99, 112, 108, 96, 91, 87, + 79, 73, 70, 69, 72, 76, 79, 81, 78, 77, 75, 74, 75, 79, 82, 85, + 79, 81, 84, 66, 65, 61, 58, 58, 60, 61, 63, 80, 64, 52, 82, 90, + 97, 80, 81, 104, 102, 100, 108, 118, 120, 109, 98, 96, 98, 103, 109, 114, + 117, 119, 119, 115, 105, 110, 124, 122, 100, 80, 72, 73, 76, 81, 89, 84, + 63, 51, 64, 111, 133, 138, 136, 141, 144, 144, 151, 151, 154, 157, 159, 160, + 161, 164, 166, 164, 166, 169, 169, 166, 163, 161, 161, 172, 172, 171, 170, 169, + 166, 164, 163, 169, 169, 170, 172, 172, 169, 164, 160, 168, 162, 157, 157, 162, + 162, 157, 151, 156, 158, 164, 148, 123, 120, 117, 98, 103, 122, 124, 112, 133, + 174, 182, 160, 167, 174, 182, 180, 173, 172, 178, 185, 176, 174, 174, 177, 184, + 190, 193, 194, 188, 185, 181, 178, 178, 181, 186, 190, 190, 192, 193, 193, 190, + 189, 188, 189, 189, 189, 188, 188, 188, 188, 187, 187, 181, 180, 180, 181, 182, + 181, 179, 176, 176, 173, 173, 177, 177, 173, 168, 168, 172, 166, 157, 145, 130, + 124, 132, 144, 155, 158, 163, 164, 163, 161, 158, 157, 148, 144, 96, 120, 109, + 105, 100, 96, 84, 78, 73, 70, 71, 73, 75, 75, 83, 81, 77, 74, 71, + 71, 72, 75, 79, 81, 82, 57, 55, 53, 47, 46, 46, 46, 47, 59, 57, + 65, 104, 103, 98, 83, 98, 95, 101, 106, 104, 105, 106, 115, 120, 118, 114, + 116, 116, 117, 111, 114, 116, 113, 106, 107, 110, 107, 92, 74, 60, 85, 79, + 79, 85, 77, 49, 42, 63, 104, 128, 134, 131, 136, 141, 143, 150, 152, 155, + 159, 161, 161, 162, 164, 166, 165, 167, 169, 168, 165, 163, 162, 162, 168, 169, + 171, 172, 171, 169, 167, 165, 169, 167, 166, 166, 169, 171, 172, 172, 165, 166, + 166, 167, 166, 166, 165, 164, 167, 164, 170, 154, 125, 112, 89, 46, 59, 81, + 87, 78, 82, 115, 149, 163, 176, 171, 165, 164, 171, 177, 175, 168, 175, 172, + 171, 176, 185, 191, 193, 192, 192, 190, 187, 182, 179, 179, 182, 185, 183, 186, + 189, 190, 190, 189, 190, 191, 188, 188, 188, 188, 188, 188, 188, 188, 186, 184, + 182, 182, 182, 180, 177, 175, 178, 173, 172, 174, 175, 171, 167, 168, 164, 160, + 154, 145, 131, 126, 133, 144, 154, 158, 163, 163, 162, 159, 158, 158, 144, 136, + 108, 124, 110, 113, 106, 104, 95, 88, 82, 78, 75, 73, 71, 69, 79, 82, + 85, 87, 87, 84, 81, 80, 80, 81, 80, 58, 58, 57, 52, 53, 53, 53, + 54, 45, 61, 77, 104, 88, 85, 79, 99, 104, 109, 111, 102, 94, 91, 101, + 108, 97, 90, 92, 98, 109, 110, 116, 120, 114, 112, 108, 97, 87, 82, 76, + 68, 73, 67, 63, 69, 77, 71, 76, 98, 101, 127, 134, 130, 135, 142, 146, + 153, 154, 157, 161, 163, 163, 163, 164, 165, 165, 167, 168, 167, 166, 165, 166, + 168, 167, 168, 169, 170, 171, 170, 169, 168, 171, 168, 165, 164, 167, 170, 172, + 173, 163, 174, 184, 182, 172, 167, 173, 181, 182, 165, 165, 158, 140, 130, 87, + 12, 23, 19, 30, 44, 36, 33, 71, 122, 169, 168, 169, 173, 181, 185, 176, + 163, 171, 174, 179, 185, 190, 193, 193, 193, 196, 196, 193, 188, 182, 179, 180, + 182, 182, 185, 189, 191, 191, 190, 190, 191, 188, 188, 188, 188, 188, 188, 188, + 188, 191, 189, 186, 184, 183, 181, 177, 175, 180, 175, 172, 175, 176, 174, 172, + 174, 166, 162, 155, 145, 130, 124, 131, 143, 147, 155, 163, 164, 163, 159, 157, + 156, 139, 128, 128, 128, 113, 117, 107, 106, 98, 93, 89, 85, 82, 78, 73, + 69, 71, 75, 82, 88, 92, 93, 92, 93, 83, 84, 82, 66, 66, 68, 68, + 69, 73, 74, 76, 85, 84, 75, 92, 95, 105, 89, 84, 88, 91, 91, 95, + 101, 104, 107, 108, 98, 83, 79, 87, 98, 101, 100, 100, 91, 108, 117, 109, + 100, 100, 97, 90, 77, 82, 81, 83, 93, 92, 85, 91, 100, 127, 137, 130, + 138, 144, 151, 155, 154, 156, 162, 163, 165, 164, 164, 165, 164, 164, 167, 167, + 167, 168, 171, 174, 169, 169, 168, 168, 168, 168, 168, 168, 171, 169, 168, 167, + 167, 167, 165, 163, 172, 172, 173, 176, 180, 179, 174, 169, 169, 162, 170, 165, + 142, 136, 100, 31, 72, 47, 36, 42, 52, 51, 53, 60, 94, 134, 174, 177, + 159, 152, 161, 173, 169, 178, 189, 196, 197, 195, 195, 194, 197, 196, 196, 190, + 185, 179, 181, 181, 188, 189, 194, 192, 193, 188, 189, 189, 186, 186, 186, 186, + 186, 186, 188, 188, 187, 185, 182, 180, 179, 178, 175, 172, 178, 173, 170, 172, + 174, 173, 174, 177, 177, 170, 158, 145, 128, 120, 127, 138, 144, 153, 164, 167, + 163, 156, 151, 150, 132, 119, 141, 129, 115, 122, 106, 109, 101, 102, 101, 100, + 98, 94, 89, 83, 80, 79, 78, 78, 79, 80, 84, 86, 90, 93, 90, 87, + 86, 85, 84, 81, 81, 80, 80, 85, 85, 82, 81, 82, 84, 91, 97, 99, + 101, 90, 84, 90, 91, 90, 97, 89, 81, 76, 73, 73, 74, 79, 81, 97, + 91, 88, 83, 78, 77, 85, 93, 86, 78, 79, 89, 92, 83, 79, 87, 100, + 126, 131, 120, 129, 139, 145, 144, 150, 154, 162, 161, 159, 156, 157, 159, 160, + 162, 168, 170, 169, 168, 168, 169, 167, 168, 171, 171, 172, 172, 171, 169, 162, + 161, 160, 158, 160, 161, 164, 165, 162, 170, 176, 177, 173, 168, 164, 163, 174, + 158, 159, 155, 153, 142, 98, 70, 119, 104, 80, 61, 48, 45, 47, 47, 36, + 65, 72, 127, 144, 168, 181, 175, 184, 190, 192, 190, 188, 191, 191, 187, 199, + 196, 197, 190, 183, 175, 182, 189, 182, 181, 184, 184, 187, 186, 189, 190, 184, + 185, 186, 186, 184, 184, 187, 189, 191, 183, 176, 178, 182, 179, 176, 175, 177, + 179, 174, 175, 182, 176, 170, 177, 176, 161, 167, 144, 137, 121, 140, 140, 148, + 154, 160, 154, 148, 156, 157, 138, 113, 127, 132, 115, 108, 118, 121, 116, 127, + 135, 134, 126, 116, 110, 109, 110, 104, 95, 89, 86, 83, 77, 80, 91, 92, + 118, 96, 82, 83, 82, 82, 81, 80, 81, 80, 75, 77, 80, 81, 82, 83, + 84, 87, 84, 91, 86, 83, 88, 84, 82, 88, 73, 79, 85, 90, 90, 86, + 84, 84, 77, 73, 75, 81, 85, 80, 78, 77, 79, 77, 82, 90, 90, 84, + 90, 105, 100, 125, 129, 121, 128, 139, 142, 144, 150, 155, 161, 161, 157, 154, + 157, 158, 159, 160, 164, 166, 168, 167, 168, 169, 170, 171, 173, 173, 172, 171, + 170, 167, 164, 160, 160, 159, 159, 160, 163, 163, 162, 165, 171, 171, 168, 166, + 166, 167, 174, 154, 156, 148, 151, 144, 127, 71, 107, 111, 114, 116, 107, 91, + 68, 49, 32, 29, 38, 125, 170, 183, 188, 190, 189, 195, 196, 194, 192, 195, + 194, 193, 191, 193, 195, 194, 187, 179, 180, 187, 180, 180, 181, 181, 181, 181, + 181, 181, 180, 182, 183, 182, 183, 182, 183, 185, 190, 183, 178, 180, 184, 181, + 177, 176, 169, 175, 173, 172, 176, 168, 168, 178, 175, 160, 163, 138, 127, 113, + 136, 141, 172, 171, 170, 158, 143, 143, 140, 122, 132, 125, 126, 136, 130, 118, + 118, 135, 142, 119, 101, 102, 109, 110, 112, 116, 124, 109, 95, 90, 87, 83, + 85, 95, 100, 121, 109, 78, 79, 80, 80, 79, 78, 78, 77, 82, 82, 82, + 81, 80, 79, 80, 79, 82, 77, 66, 67, 85, 89, 79, 74, 72, 77, 80, + 79, 74, 74, 78, 81, 90, 78, 71, 76, 85, 86, 83, 81, 87, 89, 95, + 93, 78, 61, 61, 75, 98, 124, 128, 121, 128, 137, 142, 145, 152, 157, 161, + 162, 160, 157, 160, 159, 158, 161, 165, 167, 167, 167, 170, 171, 175, 175, 175, + 174, 173, 171, 171, 167, 165, 163, 162, 160, 159, 159, 162, 162, 163, 163, 166, + 165, 165, 165, 168, 169, 161, 146, 154, 146, 149, 139, 117, 45, 111, 104, 94, + 91, 92, 96, 95, 91, 108, 79, 67, 128, 161, 162, 161, 166, 185, 191, 192, + 190, 188, 192, 191, 190, 185, 189, 196, 199, 193, 183, 181, 184, 185, 185, 185, + 184, 183, 182, 180, 179, 179, 180, 181, 180, 181, 180, 181, 183, 188, 182, 180, + 183, 186, 182, 177, 176, 173, 179, 179, 176, 176, 166, 165, 177, 176, 165, 165, + 139, 123, 116, 142, 150, 146, 145, 152, 156, 144, 137, 131, 118, 125, 132, 136, + 132, 133, 138, 135, 135, 130, 104, 89, 102, 115, 111, 108, 114, 125, 119, 114, + 113, 110, 105, 101, 100, 103, 110, 106, 77, 76, 78, 78, 80, 78, 76, 76, + 86, 82, 77, 71, 70, 72, 77, 79, 65, 78, 79, 71, 67, 64, 72, 89, + 77, 80, 80, 77, 77, 82, 88, 88, 80, 66, 57, 59, 67, 68, 68, 69, + 69, 75, 83, 86, 76, 64, 63, 74, 96, 121, 125, 121, 128, 136, 140, 145, + 151, 154, 159, 161, 161, 162, 164, 165, 161, 162, 167, 167, 169, 170, 172, 173, + 175, 176, 176, 175, 174, 173, 173, 171, 167, 164, 162, 160, 158, 160, 161, 161, + 165, 164, 165, 163, 164, 164, 166, 165, 151, 145, 148, 139, 141, 139, 83, 61, + 106, 99, 93, 91, 96, 98, 97, 95, 92, 86, 90, 124, 154, 173, 190, 201, + 181, 186, 187, 185, 183, 187, 187, 186, 185, 189, 195, 199, 194, 184, 180, 182, + 186, 186, 187, 186, 185, 182, 180, 179, 178, 180, 181, 180, 180, 179, 180, 181, + 185, 181, 181, 185, 188, 182, 177, 176, 182, 185, 181, 177, 178, 169, 164, 174, + 174, 168, 164, 141, 119, 121, 146, 157, 160, 151, 152, 155, 141, 130, 126, 120, + 123, 135, 136, 127, 130, 142, 139, 126, 123, 116, 114, 119, 118, 109, 113, 124, + 123, 126, 124, 124, 120, 115, 112, 111, 107, 100, 101, 75, 74, 75, 75, 77, + 78, 77, 78, 72, 70, 66, 65, 71, 77, 82, 85, 84, 83, 75, 73, 82, + 84, 78, 80, 67, 75, 82, 90, 99, 105, 99, 89, 91, 90, 94, 98, 97, + 90, 82, 81, 73, 73, 75, 78, 78, 76, 79, 87, 93, 117, 123, 121, 131, + 137, 139, 145, 150, 153, 158, 161, 164, 167, 169, 171, 165, 166, 170, 170, 171, + 172, 174, 176, 174, 175, 176, 176, 176, 176, 175, 174, 169, 168, 166, 164, 163, + 165, 166, 166, 170, 169, 167, 166, 166, 164, 162, 156, 144, 143, 136, 124, 125, + 136, 49, 103, 96, 94, 93, 93, 94, 89, 81, 75, 93, 97, 121, 142, 162, + 162, 168, 175, 186, 191, 190, 188, 185, 189, 189, 188, 190, 190, 194, 195, 190, + 182, 179, 181, 180, 181, 182, 182, 182, 180, 178, 176, 179, 180, 181, 180, 180, + 179, 180, 181, 182, 180, 181, 186, 188, 182, 178, 177, 184, 182, 174, 172, 180, + 173, 166, 171, 165, 165, 159, 140, 111, 117, 134, 141, 157, 141, 134, 131, 123, + 125, 136, 141, 143, 127, 128, 142, 144, 130, 124, 134, 134, 138, 134, 118, 109, + 111, 123, 132, 129, 131, 131, 121, 111, 110, 115, 118, 110, 106, 108, 75, 72, + 72, 73, 75, 77, 77, 79, 72, 72, 74, 80, 87, 89, 86, 83, 91, 84, + 75, 81, 100, 100, 81, 69, 81, 84, 86, 85, 94, 101, 94, 82, 90, 91, + 93, 93, 87, 80, 82, 86, 104, 95, 84, 75, 73, 74, 74, 78, 92, 113, + 119, 121, 131, 137, 139, 147, 150, 152, 156, 160, 165, 169, 171, 172, 168, 170, + 171, 172, 172, 172, 174, 176, 173, 174, 175, 176, 176, 176, 176, 174, 174, 171, + 169, 168, 169, 170, 171, 172, 172, 170, 168, 167, 166, 163, 158, 149, 130, 135, + 135, 123, 118, 110, 23, 94, 91, 86, 80, 75, 77, 81, 87, 93, 98, 82, + 114, 142, 175, 169, 173, 190, 190, 194, 192, 189, 186, 189, 189, 188, 193, 190, + 190, 190, 186, 180, 179, 182, 179, 180, 182, 184, 183, 182, 180, 178, 179, 180, + 181, 180, 179, 178, 179, 180, 182, 180, 183, 187, 189, 183, 180, 181, 184, 180, + 171, 172, 184, 181, 173, 175, 165, 166, 155, 138, 105, 114, 122, 126, 124, 120, + 125, 131, 130, 136, 145, 143, 134, 129, 131, 140, 144, 142, 140, 144, 141, 146, + 141, 129, 127, 133, 132, 122, 128, 137, 143, 134, 123, 114, 111, 108, 106, 114, + 117, 74, 70, 68, 69, 69, 71, 77, 80, 85, 85, 87, 92, 97, 96, 91, + 85, 68, 90, 101, 93, 82, 71, 78, 99, 102, 103, 97, 87, 89, 99, 100, + 94, 104, 102, 95, 91, 86, 85, 95, 105, 94, 89, 85, 83, 83, 85, 84, + 84, 89, 107, 115, 118, 130, 135, 140, 149, 154, 154, 157, 161, 167, 171, 172, + 173, 171, 173, 172, 171, 170, 170, 172, 174, 173, 174, 174, 174, 174, 173, 173, + 172, 172, 171, 170, 169, 170, 171, 172, 173, 173, 169, 166, 164, 163, 160, 155, + 147, 124, 128, 130, 118, 112, 77, 51, 75, 82, 87, 92, 96, 98, 97, 99, + 101, 114, 98, 130, 139, 171, 170, 176, 192, 190, 194, 192, 187, 183, 186, 186, + 185, 190, 187, 186, 187, 185, 180, 179, 183, 181, 183, 185, 186, 186, 184, 181, + 179, 178, 179, 179, 178, 177, 176, 176, 178, 184, 183, 185, 189, 190, 185, 184, + 186, 186, 183, 175, 175, 182, 178, 173, 179, 169, 169, 151, 138, 102, 117, 122, + 127, 136, 143, 152, 152, 143, 144, 141, 125, 119, 134, 137, 131, 137, 153, 156, + 148, 143, 146, 146, 147, 149, 148, 139, 129, 133, 139, 143, 138, 131, 126, 116, + 104, 108, 112, 109, 73, 67, 66, 65, 67, 70, 75, 79, 85, 80, 81, 83, + 93, 97, 98, 94, 101, 90, 72, 70, 89, 96, 91, 91, 76, 88, 93, 91, + 92, 98, 98, 91, 87, 88, 89, 92, 88, 85, 86, 92, 88, 94, 99, 103, + 100, 94, 83, 76, 87, 104, 113, 118, 129, 135, 138, 150, 155, 157, 159, 161, + 167, 170, 170, 170, 172, 173, 171, 170, 168, 168, 170, 171, 175, 175, 175, 172, + 173, 170, 168, 167, 168, 167, 166, 166, 167, 168, 170, 172, 170, 166, 163, 158, + 159, 156, 155, 148, 138, 129, 122, 98, 97, 57, 116, 100, 94, 95, 93, 86, + 80, 78, 83, 89, 90, 106, 157, 143, 167, 178, 182, 180, 193, 197, 194, 188, + 184, 186, 186, 185, 187, 184, 184, 186, 185, 181, 180, 183, 179, 181, 183, 184, + 182, 180, 176, 174, 176, 177, 178, 176, 176, 174, 174, 176, 187, 186, 188, 191, + 192, 187, 187, 190, 184, 184, 177, 173, 175, 167, 163, 172, 164, 164, 144, 132, + 98, 119, 126, 130, 131, 134, 136, 125, 119, 133, 143, 134, 139, 129, 130, 142, + 143, 133, 135, 151, 151, 143, 143, 145, 141, 138, 146, 156, 148, 137, 122, 108, + 110, 119, 123, 122, 115, 110, 98, 73, 69, 71, 71, 73, 74, 76, 78, 85, + 83, 85, 74, 64, 69, 77, 70, 58, 72, 80, 81, 85, 80, 80, 90, 99, + 95, 96, 103, 97, 79, 69, 75, 97, 97, 92, 88, 87, 89, 93, 98, 88, + 93, 97, 101, 100, 101, 105, 108, 93, 100, 113, 122, 127, 132, 135, 140, 155, + 156, 160, 161, 164, 168, 175, 179, 172, 171, 170, 169, 169, 170, 170, 171, 170, + 168, 169, 168, 171, 171, 172, 173, 166, 163, 169, 170, 161, 163, 168, 167, 163, + 166, 168, 160, 158, 154, 152, 145, 146, 111, 125, 110, 79, 104, 121, 99, 115, + 112, 106, 102, 99, 96, 96, 96, 80, 117, 146, 154, 165, 170, 176, 182, 189, + 192, 192, 191, 185, 184, 184, 187, 196, 191, 185, 183, 183, 182, 179, 175, 176, + 178, 181, 183, 183, 182, 180, 179, 184, 180, 176, 176, 181, 183, 181, 179, 192, + 191, 190, 191, 193, 190, 184, 179, 188, 185, 180, 174, 170, 168, 167, 168, 164, + 142, 150, 121, 73, 127, 125, 138, 132, 137, 138, 138, 133, 130, 132, 136, 143, + 146, 148, 150, 148, 145, 150, 157, 148, 141, 135, 137, 141, 142, 137, 128, 131, + 129, 124, 116, 99, 87, 91, 110, 114, 114, 109, 75, 72, 71, 73, 72, 73, + 76, 78, 83, 81, 84, 80, 73, 80, 88, 80, 66, 73, 69, 71, 81, 88, + 93, 107, 91, 95, 95, 93, 92, 93, 92, 91, 85, 94, 100, 101, 97, 89, + 85, 81, 91, 99, 113, 117, 110, 95, 79, 67, 101, 96, 98, 108, 117, 120, + 125, 134, 146, 151, 156, 161, 164, 166, 170, 170, 174, 173, 172, 171, 171, 171, + 172, 171, 169, 168, 168, 166, 165, 163, 160, 160, 173, 166, 172, 172, 170, 170, + 174, 166, 169, 165, 158, 151, 149, 150, 145, 141, 131, 128, 131, 108, 99, 113, + 114, 119, 119, 119, 118, 115, 112, 108, 106, 100, 91, 123, 149, 156, 168, 173, + 178, 182, 188, 190, 191, 192, 189, 188, 186, 187, 186, 185, 184, 184, 184, 181, + 178, 175, 179, 178, 177, 176, 176, 177, 179, 180, 182, 176, 169, 167, 172, 180, + 188, 192, 194, 194, 193, 189, 186, 183, 182, 182, 184, 179, 172, 170, 171, 171, + 170, 166, 179, 157, 152, 106, 79, 122, 116, 122, 123, 125, 124, 125, 129, 142, + 158, 174, 161, 158, 159, 163, 162, 158, 157, 159, 148, 143, 141, 140, 141, 142, + 142, 139, 139, 133, 126, 118, 100, 80, 71, 78, 110, 140, 132, 79, 75, 75, + 76, 77, 79, 78, 80, 86, 81, 85, 86, 84, 90, 95, 87, 80, 77, 64, + 59, 67, 71, 70, 79, 86, 97, 101, 94, 90, 95, 89, 78, 94, 89, 77, + 66, 63, 73, 91, 103, 113, 105, 92, 80, 80, 91, 108, 119, 91, 83, 88, + 101, 113, 118, 129, 141, 140, 147, 157, 162, 166, 166, 166, 166, 173, 171, 171, + 170, 170, 169, 169, 168, 161, 161, 164, 165, 163, 161, 159, 158, 167, 158, 162, + 164, 164, 166, 166, 155, 161, 160, 157, 155, 155, 151, 136, 123, 127, 141, 122, + 93, 115, 123, 105, 130, 129, 129, 131, 131, 129, 123, 119, 114, 102, 129, 149, + 156, 170, 175, 178, 181, 186, 187, 189, 192, 193, 192, 187, 184, 176, 180, 184, + 185, 184, 180, 177, 176, 179, 179, 177, 176, 176, 177, 178, 178, 172, 175, 179, + 182, 185, 187, 189, 190, 198, 199, 197, 191, 186, 184, 187, 192, 185, 177, 170, + 169, 173, 175, 171, 165, 157, 146, 138, 84, 97, 130, 122, 122, 128, 130, 124, + 116, 109, 106, 109, 114, 148, 147, 148, 157, 163, 161, 159, 156, 148, 150, 150, + 149, 145, 143, 141, 141, 111, 103, 97, 97, 93, 82, 69, 72, 96, 137, 132, + 81, 79, 80, 80, 82, 85, 85, 87, 92, 86, 90, 91, 90, 93, 95, 86, + 92, 93, 84, 77, 83, 80, 75, 78, 63, 71, 75, 77, 81, 91, 93, 91, + 93, 92, 88, 85, 79, 75, 69, 65, 74, 82, 93, 99, 97, 88, 75, 67, + 68, 75, 84, 87, 95, 109, 121, 126, 135, 142, 152, 159, 161, 163, 163, 163, + 169, 166, 168, 166, 166, 164, 164, 163, 158, 157, 158, 156, 156, 154, 153, 155, + 164, 158, 162, 165, 162, 163, 165, 155, 169, 164, 154, 144, 143, 149, 148, 147, + 133, 133, 104, 81, 114, 127, 106, 125, 128, 130, 132, 132, 131, 125, 121, 117, + 109, 129, 146, 154, 170, 175, 177, 181, 186, 186, 187, 192, 194, 192, 184, 178, + 176, 180, 184, 185, 181, 178, 178, 179, 178, 180, 182, 183, 183, 181, 179, 177, + 173, 179, 186, 189, 189, 186, 185, 186, 199, 198, 195, 191, 190, 189, 191, 193, + 187, 182, 177, 174, 174, 172, 169, 165, 156, 154, 146, 78, 114, 123, 112, 100, + 105, 110, 118, 121, 126, 128, 131, 134, 123, 124, 126, 133, 139, 138, 138, 139, + 132, 133, 136, 136, 131, 124, 116, 110, 114, 105, 94, 92, 91, 85, 75, 76, + 92, 114, 115, 82, 81, 82, 83, 87, 88, 90, 91, 93, 86, 90, 93, 89, + 91, 93, 85, 74, 83, 85, 86, 95, 93, 93, 100, 110, 94, 79, 71, 61, + 53, 54, 60, 69, 72, 81, 94, 102, 93, 72, 53, 84, 80, 74, 71, 72, + 77, 82, 86, 85, 104, 107, 87, 84, 102, 114, 111, 126, 133, 140, 146, 150, + 155, 157, 159, 164, 162, 164, 163, 163, 160, 159, 157, 159, 156, 151, 147, 146, + 145, 144, 147, 152, 151, 158, 158, 152, 152, 157, 152, 153, 160, 165, 161, 153, + 148, 142, 137, 121, 108, 104, 95, 105, 121, 113, 117, 116, 116, 117, 114, 114, + 111, 110, 109, 109, 130, 145, 155, 173, 177, 181, 186, 188, 188, 187, 191, 191, + 189, 180, 175, 183, 185, 185, 182, 178, 177, 179, 183, 182, 182, 182, 182, 182, + 181, 181, 181, 185, 183, 179, 174, 173, 177, 186, 194, 200, 195, 191, 190, 194, + 193, 187, 181, 181, 182, 181, 177, 171, 168, 170, 169, 154, 156, 142, 73, 118, + 117, 118, 108, 129, 127, 118, 111, 105, 103, 103, 105, 117, 115, 116, 116, 112, + 109, 112, 117, 122, 117, 114, 113, 113, 110, 101, 94, 97, 94, 94, 93, 91, + 89, 85, 85, 88, 89, 84, 81, 81, 83, 85, 86, 88, 91, 92, 92, 83, + 88, 94, 90, 90, 96, 92, 75, 83, 78, 76, 81, 80, 81, 90, 89, 81, + 83, 91, 90, 80, 77, 80, 63, 52, 47, 54, 66, 73, 71, 67, 44, 49, + 60, 73, 85, 93, 97, 99, 98, 114, 108, 81, 73, 94, 110, 107, 122, 127, + 134, 140, 145, 151, 158, 159, 159, 160, 160, 159, 159, 157, 155, 152, 151, 149, + 146, 145, 145, 144, 146, 148, 145, 145, 152, 153, 145, 145, 154, 151, 143, 154, + 163, 156, 140, 123, 108, 96, 98, 88, 115, 116, 100, 110, 115, 116, 110, 109, + 107, 103, 102, 101, 101, 102, 111, 132, 147, 159, 177, 180, 184, 192, 191, 191, + 189, 189, 188, 186, 180, 177, 190, 188, 184, 180, 177, 178, 181, 184, 186, 183, + 178, 175, 175, 179, 185, 189, 183, 182, 180, 179, 182, 186, 191, 196, 206, 199, + 194, 195, 201, 198, 187, 176, 171, 176, 179, 177, 169, 167, 170, 174, 148, 144, + 122, 64, 108, 108, 122, 120, 119, 121, 121, 123, 127, 126, 124, 123, 114, 113, + 114, 114, 109, 105, 111, 119, 96, 86, 73, 70, 74, 78, 79, 77, 81, 90, + 102, 105, 106, 105, 101, 95, 97, 97, 85, 87, 88, 88, 89, 90, 90, 93, + 93, 94, 86, 91, 97, 91, 90, 97, 99, 105, 107, 96, 89, 91, 87, 83, + 85, 95, 99, 107, 112, 108, 97, 81, 67, 69, 59, 53, 50, 47, 41, 33, + 28, 36, 39, 47, 57, 68, 73, 73, 74, 81, 87, 82, 72, 73, 86, 96, + 97, 112, 119, 126, 134, 140, 145, 152, 155, 153, 151, 152, 152, 152, 149, 148, + 146, 138, 137, 139, 139, 136, 132, 130, 130, 135, 131, 135, 137, 133, 136, 145, + 141, 143, 138, 124, 104, 94, 98, 106, 107, 94, 85, 107, 107, 96, 103, 104, + 109, 106, 105, 104, 102, 100, 97, 96, 101, 109, 133, 150, 162, 177, 178, 182, + 193, 193, 193, 191, 189, 185, 185, 184, 186, 191, 187, 181, 178, 178, 180, 182, + 183, 183, 182, 180, 180, 181, 183, 187, 189, 178, 181, 187, 193, 199, 199, 195, + 192, 200, 197, 194, 196, 200, 197, 189, 182, 171, 174, 177, 176, 171, 171, 172, + 173, 166, 150, 117, 71, 98, 93, 103, 93, 90, 95, 101, 109, 113, 112, 105, + 99, 107, 105, 106, 109, 111, 109, 112, 116, 114, 106, 98, 95, 97, 103, 107, + 111, 119, 128, 133, 131, 126, 122, 112, 97, 112, 116, 105, 94, 94, 94, 93, + 95, 95, 94, 96, 100, 92, 97, 102, 93, 89, 97, 102, 104, 105, 96, 97, + 107, 104, 93, 91, 95, 100, 97, 86, 84, 89, 88, 75, 72, 65, 65, 60, + 53, 50, 49, 53, 54, 52, 54, 59, 67, 74, 80, 82, 91, 85, 84, 97, + 105, 100, 96, 99, 92, 97, 107, 115, 122, 127, 133, 136, 139, 139, 139, 140, + 140, 137, 134, 132, 128, 127, 125, 122, 113, 100, 88, 83, 88, 80, 80, 83, + 82, 90, 97, 90, 80, 88, 96, 103, 111, 118, 119, 111, 108, 91, 89, 82, + 93, 102, 88, 96, 99, 99, 99, 98, 96, 92, 90, 94, 104, 130, 148, 162, + 174, 173, 176, 190, 192, 193, 192, 189, 184, 185, 188, 193, 189, 183, 179, 176, + 180, 183, 183, 182, 175, 180, 187, 193, 194, 192, 187, 184, 187, 185, 183, 185, + 192, 196, 197, 196, 184, 184, 185, 187, 188, 187, 187, 185, 179, 179, 177, 177, + 175, 175, 174, 169, 161, 142, 112, 88, 111, 104, 108, 93, 101, 97, 93, 93, + 98, 103, 105, 104, 105, 100, 98, 102, 107, 104, 100, 97, 102, 103, 104, 103, + 103, 102, 104, 108, 113, 117, 118, 116, 118, 123, 119, 106, 92, 95, 94, 92, + 86, 84, 88, 94, 94, 95, 96, 101, 98, 97, 100, 100, 96, 97, 100, 102, + 102, 100, 96, 92, 89, 91, 91, 92, 88, 83, 79, 77, 79, 79, 79, 74, + 77, 80, 82, 80, 76, 70, 68, 61, 69, 66, 62, 68, 71, 79, 93, 86, + 87, 89, 92, 93, 94, 94, 95, 101, 96, 89, 86, 88, 96, 105, 114, 119, + 120, 118, 112, 108, 108, 114, 120, 109, 100, 84, 68, 62, 69, 76, 80, 94, + 97, 100, 100, 99, 97, 99, 101, 106, 106, 106, 107, 107, 107, 108, 106, 98, + 97, 97, 97, 97, 98, 97, 98, 100, 95, 95, 96, 96, 94, 96, 106, 110, + 129, 143, 152, 164, 179, 186, 186, 186, 185, 187, 193, 192, 188, 188, 191, 192, + 181, 174, 170, 177, 180, 178, 175, 178, 184, 187, 183, 183, 186, 186, 180, 179, + 188, 195, 194, 188, 186, 192, 199, 193, 186, 180, 183, 190, 192, 188, 181, 176, + 176, 178, 180, 181, 177, 173, 167, 153, 155, 78, 120, 102, 101, 105, 106, 104, + 100, 99, 98, 97, 98, 97, 95, 98, 96, 94, 92, 94, 97, 103, 105, 100, + 100, 103, 103, 103, 104, 102, 103, 105, 108, 117, 123, 119, 120, 110, 88, 79, + 85, 110, 88, 87, 89, 95, 97, 95, 96, 100, 101, 98, 97, 99, 99, 95, + 95, 98, 96, 98, 100, 98, 94, 91, 90, 87, 90, 85, 82, 80, 78, 78, + 80, 82, 80, 83, 84, 85, 84, 83, 82, 81, 72, 83, 84, 82, 85, 81, + 79, 87, 88, 88, 88, 89, 90, 92, 94, 95, 93, 93, 93, 93, 93, 93, + 93, 95, 88, 92, 93, 87, 83, 81, 85, 87, 76, 83, 90, 95, 100, 104, + 100, 95, 94, 95, 96, 96, 97, 97, 99, 100, 102, 102, 101, 100, 102, 101, + 100, 98, 97, 94, 95, 94, 92, 91, 91, 91, 100, 97, 99, 102, 103, 99, + 99, 106, 113, 119, 133, 154, 170, 176, 184, 191, 184, 183, 186, 190, 189, 186, + 186, 188, 184, 178, 172, 169, 171, 175, 181, 183, 182, 186, 188, 185, 186, 189, + 190, 185, 183, 187, 190, 191, 190, 190, 193, 197, 195, 189, 183, 182, 184, 183, + 177, 173, 175, 175, 176, 177, 177, 173, 169, 163, 159, 142, 89, 117, 107, 105, + 105, 98, 101, 101, 98, 99, 101, 102, 103, 103, 98, 96, 93, 90, 90, 92, + 93, 95, 99, 101, 101, 100, 99, 102, 104, 108, 121, 114, 108, 101, 97, 107, + 116, 108, 65, 94, 116, 76, 79, 85, 91, 90, 86, 89, 96, 97, 94, 94, + 96, 97, 92, 93, 96, 93, 97, 102, 102, 100, 95, 92, 87, 89, 85, 85, + 84, 83, 84, 85, 86, 81, 80, 79, 79, 80, 83, 85, 87, 79, 90, 90, + 89, 91, 85, 80, 86, 90, 89, 88, 87, 89, 91, 94, 96, 96, 98, 101, + 104, 104, 101, 98, 98, 111, 116, 117, 116, 113, 108, 108, 107, 106, 109, 109, + 107, 105, 104, 98, 92, 103, 102, 100, 100, 104, 106, 106, 106, 110, 109, 110, + 108, 106, 105, 103, 103, 107, 104, 102, 100, 98, 97, 98, 98, 101, 99, 103, + 107, 107, 102, 100, 106, 114, 112, 123, 153, 171, 169, 176, 190, 184, 181, 183, + 185, 185, 183, 184, 185, 179, 176, 176, 172, 170, 173, 181, 187, 184, 187, 189, + 186, 187, 191, 191, 190, 193, 192, 191, 191, 192, 193, 194, 193, 199, 196, 191, + 188, 186, 182, 178, 175, 176, 175, 176, 177, 175, 174, 168, 162, 152, 114, 99, + 110, 109, 110, 109, 95, 101, 101, 101, 101, 103, 105, 108, 109, 106, 104, 102, + 99, 98, 98, 98, 99, 106, 108, 108, 105, 102, 105, 110, 116, 107, 108, 116, + 118, 112, 110, 107, 93, 101, 64, 96, 69, 70, 74, 81, 85, 83, 86, 91, + 92, 90, 92, 95, 97, 93, 94, 98, 96, 99, 100, 100, 97, 92, 88, 85, + 83, 85, 85, 86, 85, 86, 86, 86, 83, 82, 80, 80, 82, 85, 88, 90, + 85, 93, 90, 87, 92, 91, 89, 98, 93, 93, 94, 94, 95, 97, 99, 100, + 106, 105, 104, 104, 106, 108, 110, 114, 108, 113, 113, 113, 108, 106, 104, 104, + 113, 111, 106, 100, 100, 106, 110, 108, 112, 107, 102, 102, 106, 109, 108, 107, + 112, 111, 112, 111, 109, 108, 106, 106, 114, 110, 109, 104, 104, 105, 106, 107, + 101, 99, 102, 106, 106, 100, 100, 105, 116, 111, 119, 138, 155, 161, 167, 180, + 183, 182, 181, 182, 182, 181, 182, 181, 179, 177, 177, 174, 172, 173, 178, 181, + 182, 182, 183, 182, 183, 186, 189, 189, 197, 195, 193, 191, 190, 190, 189, 189, + 193, 193, 191, 189, 185, 182, 181, 181, 174, 173, 173, 172, 173, 170, 164, 159, + 143, 94, 111, 106, 103, 105, 104, 90, 105, 104, 103, 101, 100, 101, 103, 105, + 107, 107, 107, 107, 107, 107, 107, 109, 109, 111, 113, 109, 104, 106, 109, 114, + 116, 112, 114, 114, 103, 102, 105, 99, 97, 90, 82, 75, 70, 69, 77, 84, + 88, 92, 96, 93, 89, 90, 94, 95, 90, 89, 92, 94, 95, 95, 92, 89, + 88, 86, 87, 82, 84, 85, 87, 88, 88, 87, 84, 90, 89, 89, 90, 90, + 91, 92, 93, 90, 97, 94, 93, 100, 99, 97, 104, 97, 99, 102, 105, 106, + 106, 105, 104, 110, 108, 105, 104, 105, 108, 112, 117, 117, 120, 120, 119, 116, + 115, 114, 115, 101, 105, 108, 110, 113, 115, 113, 109, 116, 111, 106, 104, 105, + 107, 106, 104, 105, 105, 107, 107, 106, 106, 107, 107, 110, 106, 106, 102, 104, + 103, 105, 107, 104, 100, 99, 101, 102, 97, 101, 107, 111, 114, 116, 122, 136, + 154, 167, 170, 178, 181, 180, 179, 178, 179, 178, 178, 176, 175, 174, 175, 178, + 179, 178, 177, 183, 181, 180, 180, 183, 185, 188, 191, 192, 195, 196, 194, 190, + 188, 191, 194, 185, 187, 187, 185, 182, 180, 180, 182, 172, 170, 168, 164, 163, + 158, 151, 145, 138, 92, 125, 105, 101, 95, 94, 85, 104, 105, 104, 101, 98, + 97, 99, 101, 103, 104, 105, 106, 107, 108, 108, 108, 104, 106, 110, 110, 107, + 106, 108, 109, 117, 111, 114, 116, 107, 106, 110, 105, 103, 97, 127, 79, 71, + 68, 74, 83, 88, 92, 96, 95, 92, 93, 93, 91, 84, 81, 81, 86, 86, + 85, 84, 83, 85, 88, 92, 85, 87, 87, 89, 90, 90, 89, 88, 90, 90, + 91, 92, 92, 92, 91, 91, 86, 95, 96, 98, 104, 99, 91, 94, 94, 97, + 101, 105, 106, 105, 102, 100, 107, 107, 107, 107, 106, 105, 104, 105, 109, 110, + 108, 105, 105, 107, 107, 108, 110, 114, 114, 110, 108, 107, 103, 97, 114, 111, + 107, 105, 105, 104, 104, 103, 104, 105, 107, 107, 108, 108, 111, 111, 109, 109, + 108, 105, 105, 107, 108, 107, 108, 103, 101, 101, 102, 100, 103, 109, 106, 114, + 117, 113, 124, 145, 161, 167, 169, 174, 176, 174, 175, 176, 175, 172, 169, 168, + 169, 173, 179, 182, 181, 179, 186, 182, 180, 182, 185, 184, 187, 191, 183, 188, + 193, 193, 190, 190, 193, 196, 186, 186, 186, 184, 181, 178, 178, 176, 178, 173, + 168, 161, 155, 147, 138, 131, 121, 92, 121, 104, 101, 97, 98, 98, 99, 104, + 107, 106, 102, 101, 103, 106, 105, 105, 105, 105, 105, 106, 106, 108, 104, 105, + 108, 111, 112, 112, 113, 113, 106, 101, 111, 119, 114, 110, 110, 103, 102, 95, + 106, 75, 69, 70, 75, 79, 80, 84, 88, 90, 88, 89, 89, 86, 78, 75, + 76, 82, 82, 82, 81, 80, 82, 85, 89, 88, 89, 90, 91, 91, 91, 91, + 89, 89, 87, 87, 88, 88, 89, 89, 89, 86, 93, 93, 94, 101, 97, 88, + 91, 92, 94, 97, 99, 101, 100, 99, 98, 105, 106, 107, 107, 106, 104, 102, + 103, 110, 109, 108, 109, 111, 111, 111, 111, 106, 107, 103, 99, 100, 108, 113, + 114, 109, 109, 110, 108, 107, 106, 106, 107, 110, 110, 112, 113, 113, 114, 114, + 116, 114, 114, 114, 113, 112, 110, 110, 110, 107, 103, 101, 105, 105, 102, 103, + 107, 110, 111, 114, 115, 119, 127, 141, 155, 160, 167, 171, 169, 170, 172, 170, + 164, 163, 164, 165, 166, 170, 173, 178, 182, 185, 180, 179, 182, 185, 182, 183, + 188, 181, 183, 187, 189, 190, 190, 188, 187, 185, 184, 182, 181, 180, 178, 176, + 175, 172, 166, 159, 151, 143, 134, 125, 116, 108, 97, 107, 98, 103, 98, 99, + 104, 97, 102, 108, 109, 105, 103, 105, 107, 109, 108, 108, 107, 107, 108, 111, + 111, 111, 107, 106, 107, 111, 112, 112, 108, 119, 101, 94, 94, 91, 96, 106, + 107, 106, 31, 61, 74, 74, 77, 80, 78, 75, 79, 85, 83, 82, 82, 85, + 85, 79, 76, 78, 81, 82, 82, 81, 78, 78, 82, 84, 88, 88, 89, 89, + 89, 89, 91, 89, 91, 89, 88, 88, 89, 91, 93, 95, 94, 97, 91, 89, + 98, 99, 97, 103, 98, 98, 100, 101, 102, 103, 104, 104, 108, 107, 105, 104, + 104, 107, 109, 111, 105, 106, 107, 109, 111, 111, 110, 109, 110, 113, 111, 108, + 108, 109, 109, 106, 106, 108, 111, 111, 109, 108, 110, 112, 109, 109, 111, 111, + 111, 111, 111, 113, 116, 118, 116, 115, 114, 112, 111, 108, 105, 101, 104, 106, + 107, 102, 101, 104, 113, 109, 110, 118, 115, 107, 118, 139, 151, 160, 165, 163, + 164, 167, 163, 156, 161, 164, 165, 161, 159, 161, 172, 181, 183, 178, 178, 181, + 182, 178, 178, 183, 186, 183, 183, 186, 190, 188, 181, 174, 177, 175, 173, 173, + 174, 174, 172, 168, 152, 147, 140, 133, 127, 121, 111, 104, 112, 110, 99, 95, + 98, 91, 86, 91, 95, 101, 109, 109, 105, 101, 102, 104, 107, 106, 106, 106, + 107, 109, 113, 116, 115, 107, 98, 96, 101, 102, 98, 93, 98, 87, 93, 104, + 99, 91, 83, 72, 89, 59, 83, 74, 76, 78, 80, 81, 81, 78, 72, 75, + 77, 79, 81, 83, 81, 79, 78, 79, 77, 79, 80, 80, 80, 82, 82, 79, + 84, 90, 91, 91, 91, 94, 95, 89, 87, 88, 89, 89, 90, 91, 91, 91, + 89, 87, 86, 88, 91, 95, 98, 92, 96, 100, 102, 101, 100, 100, 101, 100, + 101, 101, 102, 104, 105, 106, 106, 106, 107, 108, 108, 108, 110, 112, 115, 115, + 111, 107, 106, 110, 112, 110, 105, 111, 102, 106, 110, 102, 100, 109, 111, 117, + 115, 111, 109, 110, 111, 113, 114, 111, 114, 115, 113, 112, 109, 107, 103, 104, + 100, 103, 106, 108, 105, 104, 107, 105, 106, 107, 112, 119, 122, 121, 121, 141, + 139, 139, 142, 148, 153, 152, 152, 154, 154, 154, 144, 142, 159, 165, 149, 164, + 172, 173, 170, 173, 171, 170, 179, 180, 179, 177, 175, 173, 172, 172, 172, 172, + 170, 168, 166, 164, 162, 160, 156, 149, 140, 128, 118, 113, 112, 116, 117, 113, + 109, 106, 99, 94, 92, 97, 103, 101, 99, 99, 103, 107, 107, 103, 97, 103, + 104, 109, 112, 112, 105, 95, 86, 81, 86, 86, 87, 91, 96, 93, 87, 91, + 89, 91, 97, 103, 103, 96, 88, 81, 68, 63, 83, 81, 81, 80, 83, 84, + 85, 82, 92, 88, 85, 81, 79, 78, 80, 81, 78, 78, 79, 80, 82, 83, + 84, 84, 83, 83, 86, 88, 90, 93, 92, 89, 89, 87, 88, 89, 90, 90, + 91, 91, 89, 89, 89, 90, 91, 93, 95, 96, 92, 95, 99, 100, 101, 101, + 102, 103, 104, 104, 104, 104, 104, 105, 105, 105, 108, 109, 110, 110, 109, 110, + 110, 112, 113, 110, 106, 108, 109, 111, 109, 106, 112, 101, 104, 111, 107, 106, + 109, 105, 111, 110, 107, 106, 108, 110, 112, 114, 115, 117, 116, 115, 112, 111, + 110, 110, 108, 106, 108, 110, 110, 105, 104, 106, 107, 108, 111, 118, 123, 125, + 127, 128, 130, 123, 115, 113, 118, 128, 134, 137, 146, 142, 138, 131, 129, 147, + 158, 150, 158, 168, 168, 167, 172, 167, 163, 168, 164, 164, 166, 165, 167, 166, + 168, 166, 163, 157, 156, 156, 164, 164, 163, 157, 133, 128, 121, 114, 112, 112, + 112, 111, 110, 107, 105, 100, 96, 91, 92, 96, 100, 100, 101, 105, 110, 111, + 110, 105, 111, 109, 109, 108, 109, 110, 112, 113, 99, 99, 92, 87, 89, 96, + 99, 97, 109, 106, 110, 111, 112, 101, 87, 74, 90, 92, 90, 86, 84, 85, + 86, 88, 88, 88, 87, 94, 91, 87, 82, 79, 78, 79, 79, 79, 77, 80, + 81, 82, 83, 84, 84, 86, 83, 81, 84, 88, 92, 89, 83, 89, 88, 88, + 89, 90, 91, 91, 91, 88, 90, 92, 94, 95, 95, 95, 94, 93, 95, 98, + 99, 99, 100, 103, 105, 105, 105, 104, 103, 102, 102, 103, 103, 107, 109, 111, + 110, 109, 107, 108, 109, 112, 109, 107, 108, 111, 112, 110, 105, 112, 100, 105, + 113, 112, 112, 111, 101, 106, 105, 105, 105, 106, 108, 111, 113, 117, 116, 114, + 112, 111, 112, 112, 112, 115, 110, 111, 114, 113, 107, 106, 108, 103, 106, 112, + 116, 119, 122, 126, 129, 133, 131, 128, 128, 130, 129, 126, 122, 132, 123, 121, + 121, 118, 126, 135, 133, 132, 143, 145, 150, 163, 160, 155, 157, 153, 154, 158, + 157, 160, 158, 159, 156, 156, 146, 142, 141, 148, 147, 142, 132, 119, 118, 117, + 116, 115, 114, 110, 108, 106, 107, 106, 104, 101, 98, 96, 96, 96, 95, 96, + 100, 106, 109, 110, 108, 113, 112, 112, 110, 112, 115, 122, 126, 130, 130, 122, + 115, 115, 120, 120, 119, 116, 106, 99, 92, 91, 88, 84, 79, 92, 103, 99, + 78, 77, 81, 86, 90, 87, 83, 82, 82, 82, 83, 85, 84, 81, 79, 76, + 76, 77, 78, 79, 80, 81, 82, 82, 87, 86, 85, 86, 88, 88, 86, 83, + 90, 88, 89, 89, 90, 91, 92, 92, 90, 91, 93, 95, 96, 96, 96, 95, + 96, 97, 98, 98, 98, 99, 101, 104, 101, 101, 99, 99, 99, 99, 100, 101, + 106, 108, 111, 111, 110, 108, 108, 108, 111, 109, 108, 109, 111, 112, 110, 108, + 112, 102, 107, 112, 110, 110, 111, 101, 104, 103, 104, 104, 104, 106, 109, 110, + 113, 113, 113, 113, 112, 112, 111, 110, 116, 113, 113, 114, 116, 112, 112, 112, + 102, 106, 113, 116, 116, 117, 123, 128, 127, 128, 131, 134, 134, 128, 120, 114, + 124, 114, 118, 126, 121, 116, 117, 115, 120, 127, 128, 133, 149, 148, 141, 142, + 144, 145, 147, 145, 145, 141, 138, 135, 142, 135, 130, 127, 128, 125, 120, 114, + 116, 116, 118, 118, 117, 114, 111, 109, 103, 102, 103, 103, 104, 103, 103, 103, + 97, 95, 96, 98, 103, 106, 109, 109, 112, 116, 122, 122, 121, 119, 121, 122, + 124, 129, 130, 127, 125, 122, 118, 110, 109, 99, 87, 78, 77, 78, 81, 80, + 78, 88, 90, 79, 74, 75, 80, 83, 81, 81, 84, 81, 83, 86, 88, 89, + 88, 88, 83, 79, 79, 80, 81, 81, 81, 82, 82, 85, 88, 90, 89, 86, + 85, 85, 87, 88, 88, 89, 90, 91, 91, 92, 92, 94, 93, 93, 93, 94, + 95, 96, 97, 98, 99, 100, 99, 97, 97, 99, 101, 99, 98, 97, 97, 98, + 100, 102, 104, 101, 104, 109, 110, 109, 108, 108, 109, 110, 110, 112, 113, 114, + 114, 112, 108, 109, 105, 110, 110, 103, 104, 110, 104, 107, 106, 105, 104, 105, + 106, 107, 107, 110, 110, 114, 116, 116, 114, 111, 109, 115, 112, 113, 115, 117, + 115, 116, 118, 113, 114, 119, 121, 120, 120, 124, 129, 123, 121, 119, 119, 120, + 122, 125, 127, 143, 132, 138, 147, 141, 133, 134, 134, 128, 131, 126, 124, 133, + 130, 121, 123, 129, 130, 132, 129, 128, 122, 120, 116, 121, 120, 123, 121, 123, + 120, 124, 123, 118, 116, 117, 116, 113, 110, 107, 107, 100, 99, 100, 99, 102, + 105, 105, 106, 104, 102, 100, 100, 104, 107, 111, 111, 113, 118, 126, 129, 127, + 122, 121, 121, 113, 120, 125, 125, 123, 119, 113, 106, 110, 107, 104, 99, 95, + 84, 76, 70, 73, 75, 83, 92, 82, 77, 80, 84, 84, 89, 95, 95, 92, + 90, 89, 89, 91, 95, 95, 86, 84, 84, 85, 84, 84, 85, 85, 84, 89, + 92, 91, 87, 82, 86, 88, 89, 89, 89, 90, 91, 92, 92, 93, 94, 94, + 93, 92, 93, 94, 96, 97, 97, 99, 100, 100, 98, 98, 99, 100, 101, 100, + 99, 99, 100, 103, 106, 108, 100, 102, 107, 107, 107, 107, 108, 109, 108, 109, + 112, 113, 113, 112, 111, 108, 108, 105, 111, 108, 99, 101, 109, 102, 106, 106, + 105, 105, 106, 106, 106, 106, 107, 110, 114, 117, 119, 116, 111, 108, 112, 109, + 110, 114, 115, 117, 119, 121, 119, 116, 119, 120, 120, 119, 120, 123, 125, 125, + 124, 124, 123, 120, 118, 118, 113, 103, 106, 111, 104, 103, 112, 116, 121, 124, + 119, 115, 121, 118, 115, 119, 123, 123, 124, 123, 122, 120, 118, 117, 111, 115, + 120, 120, 118, 119, 124, 126, 117, 114, 111, 108, 104, 102, 102, 101, 101, 98, + 96, 98, 100, 102, 101, 100, 104, 103, 101, 100, 102, 103, 107, 108, 110, 111, + 117, 118, 118, 118, 119, 121, 121, 126, 128, 123, 122, 123, 124, 120, 120, 116, + 113, 107, 102, 95, 87, 83, 89, 79, 76, 89, 78, 76, 81, 85, 81, 84, + 92, 97, 94, 91, 90, 90, 92, 97, 97, 91, 89, 87, 87, 86, 86, 85, + 85, 83, 85, 86, 86, 86, 83, 85, 85, 89, 89, 90, 90, 91, 92, 93, + 93, 92, 92, 93, 94, 94, 94, 94, 93, 93, 96, 99, 101, 100, 100, 101, + 102, 104, 103, 101, 99, 100, 102, 105, 107, 102, 103, 104, 103, 103, 103, 105, + 107, 104, 106, 111, 112, 111, 109, 108, 105, 106, 103, 108, 107, 102, 106, 107, + 95, 103, 103, 103, 104, 105, 106, 107, 106, 105, 105, 108, 110, 112, 110, 109, + 107, 111, 107, 110, 113, 115, 116, 119, 121, 115, 112, 112, 112, 115, 115, 115, + 114, 112, 116, 121, 120, 115, 105, 96, 91, 115, 111, 114, 115, 108, 110, 121, + 122, 110, 117, 113, 111, 118, 117, 115, 123, 121, 121, 121, 121, 121, 121, 121, + 121, 115, 117, 119, 118, 117, 117, 119, 118, 113, 109, 106, 102, 99, 96, 96, + 96, 97, 97, 96, 100, 103, 104, 103, 98, 100, 98, 100, 100, 101, 101, 105, + 106, 108, 107, 111, 112, 116, 118, 120, 120, 116, 121, 119, 114, 112, 114, 118, + 116, 122, 115, 108, 100, 97, 96, 96, 98, 97, 95, 86, 63, 59, 63, 76, + 77, 69, 64, 67, 81, 83, 86, 90, 93, 93, 93, 89, 91, 89, 86, 85, + 85, 84, 83, 83, 87, 84, 83, 85, 87, 88, 85, 82, 91, 91, 92, 93, + 93, 94, 95, 95, 91, 91, 96, 96, 97, 95, 92, 90, 89, 93, 98, 101, + 102, 104, 105, 106, 107, 105, 102, 100, 100, 99, 102, 103, 105, 105, 104, 101, + 101, 100, 102, 104, 101, 104, 107, 108, 109, 105, 106, 103, 105, 100, 106, 108, + 106, 110, 105, 87, 99, 99, 100, 102, 105, 106, 108, 107, 102, 101, 102, 103, + 105, 104, 105, 105, 111, 107, 109, 112, 115, 114, 119, 119, 116, 111, 108, 110, + 113, 115, 114, 112, 116, 116, 114, 111, 108, 109, 110, 115, 111, 111, 121, 119, + 109, 111, 116, 110, 116, 124, 122, 119, 122, 118, 115, 123, 116, 115, 115, 114, + 114, 114, 114, 115, 118, 114, 115, 116, 119, 122, 121, 119, 111, 109, 106, 103, + 102, 99, 98, 97, 95, 96, 100, 105, 110, 111, 108, 102, 103, 103, 104, 104, + 105, 105, 107, 108, 111, 111, 114, 120, 126, 125, 121, 116, 112, 118, 119, 115, + 113, 112, 114, 113, 110, 111, 109, 107, 102, 95, 86, 83, 82, 99, 103, 67, + 62, 67, 70, 70, 72, 60, 33, 77, 85, 89, 85, 83, 83, 85, 80, 74, + 82, 82, 81, 86, 83, 82, 91, 83, 90, 97, 97, 93, 89, 89, 92, 96, + 92, 92, 97, 95, 91, 92, 96, 96, 98, 102, 102, 101, 100, 99, 97, 96, + 95, 95, 96, 99, 100, 98, 97, 104, 105, 104, 106, 107, 108, 109, 107, 101, + 100, 98, 97, 97, 98, 99, 100, 100, 102, 101, 97, 99, 102, 106, 104, 103, + 108, 114, 111, 105, 104, 109, 115, 107, 108, 107, 105, 104, 104, 106, 108, 103, + 105, 106, 104, 106, 107, 105, 100, 105, 108, 113, 113, 111, 112, 118, 121, 119, + 116, 115, 118, 120, 119, 115, 112, 108, 111, 115, 117, 119, 119, 117, 116, 117, + 118, 120, 118, 118, 119, 119, 121, 121, 121, 119, 118, 116, 115, 115, 114, 118, + 120, 120, 119, 117, 115, 111, 110, 112, 109, 109, 110, 113, 116, 117, 117, 113, + 111, 107, 104, 103, 103, 104, 105, 105, 104, 102, 102, 101, 101, 103, 103, 108, + 111, 107, 100, 97, 103, 105, 102, 107, 106, 105, 107, 113, 117, 117, 112, 111, + 110, 110, 107, 104, 102, 105, 108, 100, 101, 102, 101, 97, 90, 82, 75, 77, + 80, 88, 56, 53, 61, 64, 63, 59, 49, 28, 77, 86, 92, 88, 81, 81, + 84, 81, 83, 85, 82, 82, 93, 92, 88, 92, 97, 97, 97, 95, 93, 91, + 90, 90, 99, 96, 96, 100, 98, 94, 94, 98, 92, 95, 98, 98, 96, 95, + 95, 94, 92, 91, 92, 96, 99, 100, 101, 100, 102, 103, 102, 103, 102, 103, + 103, 103, 106, 103, 101, 100, 99, 100, 100, 101, 98, 101, 102, 99, 100, 103, + 103, 102, 105, 108, 110, 108, 104, 104, 107, 111, 105, 106, 106, 104, 103, 103, + 106, 106, 102, 107, 109, 105, 104, 106, 110, 110, 113, 112, 113, 113, 114, 116, + 118, 116, 116, 113, 113, 114, 117, 117, 115, 112, 112, 113, 116, 117, 118, 118, + 117, 118, 121, 124, 125, 123, 122, 118, 117, 115, 117, 117, 117, 117, 117, 116, + 113, 115, 115, 117, 117, 116, 116, 114, 114, 113, 122, 119, 116, 113, 114, 114, + 113, 112, 114, 114, 114, 113, 111, 109, 106, 105, 105, 104, 103, 102, 101, 102, + 103, 104, 104, 107, 107, 102, 102, 106, 104, 100, 101, 102, 103, 105, 107, 111, + 113, 112, 112, 112, 113, 111, 108, 106, 108, 110, 114, 109, 106, 106, 107, 104, + 96, 89, 85, 83, 81, 59, 55, 68, 77, 72, 65, 61, 56, 72, 83, 92, + 92, 88, 91, 97, 96, 92, 91, 87, 89, 102, 103, 98, 100, 93, 90, 87, + 89, 95, 101, 104, 104, 104, 102, 102, 104, 102, 99, 99, 101, 92, 94, 95, + 95, 93, 93, 94, 94, 89, 88, 90, 94, 98, 100, 102, 103, 105, 105, 103, + 104, 102, 103, 102, 102, 102, 101, 100, 99, 99, 99, 99, 99, 98, 103, 105, + 104, 104, 106, 104, 100, 108, 108, 107, 107, 106, 107, 107, 108, 105, 106, 106, + 105, 104, 105, 108, 109, 103, 108, 112, 106, 104, 106, 114, 118, 120, 115, 113, + 114, 117, 118, 118, 112, 118, 115, 115, 117, 120, 120, 119, 118, 117, 117, 117, + 117, 117, 117, 116, 118, 120, 122, 124, 125, 124, 120, 116, 112, 115, 115, 117, + 118, 117, 116, 115, 116, 115, 114, 114, 114, 115, 117, 119, 120, 126, 121, 118, + 116, 115, 112, 110, 110, 112, 114, 116, 117, 115, 111, 106, 103, 103, 102, 102, + 102, 102, 103, 104, 105, 98, 103, 107, 105, 106, 105, 103, 99, 103, 104, 108, + 109, 111, 114, 118, 120, 110, 111, 112, 111, 109, 107, 107, 107, 117, 109, 102, + 102, 107, 107, 100, 90, 89, 84, 80, 72, 66, 79, 87, 78, 67, 73, 76, + 85, 89, 89, 82, 73, 69, 65, 60, 55, 58, 56, 57, 69, 71, 67, 71, + 65, 65, 66, 71, 78, 84, 91, 95, 102, 103, 102, 103, 101, 99, 99, 100, + 96, 97, 98, 97, 95, 95, 97, 99, 93, 92, 93, 96, 99, 103, 104, 103, + 108, 108, 108, 106, 104, 104, 102, 102, 101, 99, 101, 99, 101, 100, 102, 101, + 103, 105, 109, 105, 107, 108, 109, 105, 113, 110, 108, 108, 110, 111, 110, 108, + 106, 107, 107, 106, 106, 107, 110, 113, 105, 108, 110, 107, 106, 109, 115, 115, + 119, 116, 115, 115, 116, 117, 118, 114, 118, 118, 118, 119, 120, 120, 120, 120, + 120, 119, 118, 117, 117, 118, 119, 120, 117, 118, 121, 121, 123, 120, 118, 115, + 116, 117, 119, 118, 118, 117, 115, 114, 116, 116, 115, 115, 116, 118, 121, 121, + 117, 115, 113, 111, 112, 112, 111, 109, 107, 110, 113, 114, 113, 110, 107, 105, + 104, 104, 103, 103, 103, 103, 103, 103, 99, 99, 102, 104, 102, 102, 101, 101, + 101, 106, 111, 112, 113, 115, 121, 125, 122, 123, 124, 124, 122, 120, 118, 117, + 122, 117, 112, 112, 113, 112, 107, 100, 98, 95, 94, 81, 71, 79, 81, 68, + 57, 66, 72, 65, 70, 73, 79, 86, 96, 98, 92, 77, 85, 86, 84, 90, + 89, 86, 94, 87, 91, 93, 94, 92, 92, 97, 103, 96, 98, 98, 97, 95, + 96, 96, 95, 98, 99, 99, 99, 96, 97, 99, 101, 99, 98, 97, 99, 103, + 106, 105, 106, 109, 107, 106, 104, 102, 102, 100, 100, 102, 103, 105, 106, 109, + 109, 111, 110, 109, 110, 111, 106, 108, 111, 113, 111, 116, 112, 109, 109, 112, + 113, 111, 108, 105, 106, 107, 106, 106, 107, 110, 112, 107, 109, 109, 108, 111, + 114, 112, 105, 112, 114, 115, 114, 114, 114, 116, 119, 116, 116, 116, 115, 114, + 114, 114, 115, 120, 119, 118, 118, 118, 120, 123, 124, 120, 118, 118, 116, 119, + 120, 119, 117, 116, 114, 115, 115, 114, 110, 108, 109, 116, 115, 113, 113, 113, + 113, 116, 118, 112, 109, 109, 110, 111, 110, 109, 109, 107, 107, 107, 108, 108, + 109, 109, 109, 106, 105, 105, 104, 102, 101, 99, 99, 101, 98, 97, 98, 98, + 97, 100, 101, 100, 105, 112, 117, 116, 118, 124, 127, 128, 128, 128, 128, 127, + 125, 122, 120, 120, 121, 123, 121, 117, 113, 109, 107, 101, 99, 102, 75, 66, + 73, 76, 67, 67, 78, 80, 104, 106, 103, 101, 102, 102, 99, 89, 90, 99, + 100, 96, 98, 92, 90, 97, 85, 89, 95, 92, 86, 82, 84, 90, 96, 101, + 101, 99, 100, 101, 101, 98, 98, 98, 99, 99, 98, 96, 98, 99, 102, 102, + 101, 104, 107, 108, 109, 108, 111, 111, 109, 107, 107, 105, 104, 103, 102, 103, + 107, 107, 111, 110, 113, 111, 113, 113, 113, 107, 109, 112, 116, 113, 114, 111, + 108, 108, 110, 111, 109, 106, 103, 104, 104, 103, 103, 104, 106, 109, 110, 107, + 106, 107, 112, 116, 111, 101, 109, 113, 116, 115, 114, 113, 118, 122, 117, 118, + 118, 116, 113, 113, 114, 115, 118, 118, 117, 117, 118, 120, 122, 123, 126, 122, + 117, 116, 118, 117, 116, 113, 111, 111, 110, 108, 105, 104, 103, 105, 113, 112, + 111, 110, 108, 109, 110, 111, 112, 111, 111, 111, 110, 110, 107, 105, 109, 109, + 108, 107, 107, 109, 112, 114, 108, 108, 108, 106, 104, 102, 100, 98, 103, 98, + 95, 96, 95, 95, 100, 106, 106, 113, 121, 127, 129, 130, 133, 135, 132, 133, + 131, 130, 130, 129, 126, 124, 123, 128, 133, 131, 125, 120, 119, 120, 116, 114, + 115, 67, 63, 70, 72, 72, 82, 91, 87, 78, 87, 94, 92, 93, 95, 99, + 99, 95, 100, 99, 95, 101, 97, 93, 97, 95, 96, 99, 97, 95, 94, 94, + 97, 99, 105, 106, 103, 104, 107, 108, 102, 97, 99, 102, 101, 99, 98, 98, + 99, 102, 103, 102, 106, 109, 112, 114, 113, 115, 113, 111, 110, 110, 108, 107, + 108, 103, 104, 107, 107, 110, 108, 109, 107, 111, 112, 114, 109, 112, 113, 116, + 112, 114, 112, 110, 109, 109, 109, 108, 108, 106, 106, 106, 105, 103, 104, 106, + 109, 108, 109, 108, 108, 112, 116, 113, 107, 113, 113, 115, 115, 115, 116, 118, + 119, 117, 118, 118, 117, 114, 114, 117, 119, 117, 116, 116, 116, 116, 116, 117, + 117, 125, 121, 117, 117, 119, 117, 113, 108, 110, 109, 107, 105, 104, 105, 106, + 107, 110, 110, 109, 109, 109, 110, 108, 109, 112, 111, 109, 109, 110, 109, 106, + 104, 110, 111, 108, 106, 106, 107, 109, 110, 109, 109, 109, 108, 107, 105, 102, + 101, 103, 95, 93, 96, 98, 97, 102, 111, 110, 117, 124, 133, 139, 140, 140, + 139, 146, 145, 142, 141, 141, 141, 139, 136, 137, 138, 140, 140, 138, 137, 138, + 139, 139, 140, 140, 64, 61, 67, 67, 67, 79, 82, 66, 68, 82, 93, 91, + 84, 86, 92, 97, 94, 96, 91, 93, 105, 103, 98, 99, 100, 96, 93, 90, + 91, 91, 87, 87, 94, 101, 103, 98, 101, 105, 106, 100, 100, 103, 106, 105, + 104, 103, 102, 102, 101, 102, 103, 107, 111, 116, 116, 115, 111, 111, 109, 108, + 106, 105, 104, 105, 108, 110, 111, 112, 112, 110, 109, 108, 107, 112, 114, 112, + 113, 115, 113, 109, 117, 115, 114, 112, 111, 110, 110, 111, 110, 111, 110, 108, + 107, 107, 109, 111, 107, 109, 110, 108, 109, 114, 117, 116, 119, 115, 113, 114, + 118, 120, 119, 116, 110, 112, 113, 112, 110, 111, 114, 118, 116, 116, 115, 114, + 113, 112, 112, 111, 119, 117, 116, 119, 121, 121, 115, 109, 111, 110, 107, 105, + 106, 108, 111, 113, 110, 111, 111, 112, 113, 114, 112, 112, 108, 107, 106, 107, + 109, 109, 106, 105, 111, 110, 108, 105, 104, 103, 103, 103, 107, 108, 109, 109, + 109, 107, 105, 104, 101, 94, 94, 99, 102, 103, 107, 115, 108, 112, 121, 131, + 140, 141, 137, 134, 135, 135, 130, 128, 129, 130, 128, 126, 124, 121, 119, 120, + 124, 128, 129, 129, 123, 128, 132, 62, 62, 69, 79, 86, 90, 89, 86, 65, + 93, 104, 90, 79, 88, 90, 84, 95, 94, 96, 97, 98, 96, 96, 94, 97, + 100, 99, 92, 90, 92, 91, 88, 94, 98, 100, 98, 97, 95, 99, 100, 98, + 101, 104, 103, 103, 103, 104, 105, 104, 106, 105, 108, 109, 113, 115, 117, 114, + 117, 114, 105, 101, 105, 107, 107, 108, 108, 107, 111, 117, 119, 118, 115, 121, + 115, 114, 119, 121, 117, 116, 118, 114, 113, 111, 110, 109, 107, 105, 103, 112, + 112, 112, 109, 107, 108, 113, 116, 113, 113, 114, 114, 114, 112, 109, 108, 111, + 112, 113, 114, 114, 113, 111, 110, 111, 115, 118, 117, 112, 110, 113, 117, 114, + 115, 116, 117, 117, 116, 114, 113, 118, 116, 117, 118, 117, 116, 117, 115, 114, + 113, 112, 112, 113, 116, 119, 120, 115, 114, 113, 116, 117, 118, 115, 112, 114, + 109, 104, 105, 106, 108, 106, 102, 108, 109, 108, 108, 110, 111, 111, 111, 111, + 112, 114, 114, 112, 107, 102, 96, 100, 93, 97, 100, 95, 96, 108, 113, 120, + 120, 117, 107, 106, 118, 129, 137, 139, 140, 138, 136, 132, 129, 132, 137, 129, + 129, 129, 129, 128, 128, 128, 128, 128, 126, 125, 67, 67, 70, 72, 76, 73, + 69, 63, 72, 89, 97, 89, 87, 93, 95, 87, 90, 91, 91, 93, 94, 95, + 95, 96, 84, 89, 89, 87, 89, 94, 96, 92, 90, 93, 93, 93, 94, 95, + 96, 98, 97, 98, 99, 100, 100, 102, 106, 108, 108, 107, 107, 107, 108, 111, + 113, 114, 116, 118, 117, 107, 105, 103, 103, 100, 107, 111, 113, 114, 115, 116, + 117, 118, 120, 115, 114, 118, 120, 117, 116, 116, 113, 112, 110, 109, 108, 108, + 107, 107, 108, 110, 111, 110, 109, 110, 113, 117, 110, 110, 111, 111, 110, 108, + 105, 104, 112, 112, 113, 113, 113, 112, 110, 109, 108, 113, 118, 118, 114, 111, + 111, 113, 108, 109, 110, 112, 112, 113, 113, 113, 115, 113, 115, 116, 116, 118, + 117, 116, 113, 112, 112, 111, 112, 114, 116, 118, 118, 116, 115, 115, 117, 116, + 115, 111, 109, 105, 103, 106, 111, 110, 109, 105, 109, 111, 113, 109, 106, 104, + 107, 109, 109, 110, 113, 114, 115, 112, 111, 108, 113, 105, 107, 108, 101, 100, + 110, 113, 103, 112, 125, 131, 124, 115, 120, 134, 139, 136, 135, 139, 144, 142, + 135, 128, 130, 130, 129, 128, 127, 126, 125, 125, 129, 129, 132, 80, 81, 84, + 86, 89, 87, 85, 83, 88, 89, 90, 89, 93, 96, 94, 87, 93, 93, 94, + 96, 96, 96, 96, 96, 89, 92, 94, 93, 93, 93, 94, 90, 94, 93, 92, + 93, 94, 96, 97, 97, 101, 102, 103, 103, 102, 105, 110, 114, 113, 113, 112, + 113, 113, 116, 117, 115, 115, 117, 118, 111, 109, 105, 104, 101, 105, 112, 115, + 114, 111, 111, 114, 118, 114, 110, 108, 112, 113, 111, 110, 111, 113, 112, 109, + 107, 105, 104, 105, 105, 105, 107, 110, 110, 109, 108, 108, 109, 107, 107, 108, + 109, 108, 108, 107, 107, 112, 112, 111, 111, 110, 109, 108, 109, 109, 114, 120, + 121, 118, 115, 113, 114, 113, 113, 113, 113, 113, 114, 115, 116, 113, 113, 115, + 116, 116, 118, 117, 117, 119, 118, 118, 117, 117, 118, 120, 121, 125, 121, 121, + 119, 119, 119, 119, 116, 117, 114, 113, 115, 117, 114, 111, 106, 112, 116, 120, + 113, 108, 103, 108, 111, 107, 106, 110, 109, 112, 110, 112, 110, 112, 103, 105, + 106, 98, 98, 106, 107, 115, 111, 117, 133, 131, 119, 124, 144, 153, 151, 145, + 142, 144, 144, 141, 137, 141, 140, 139, 138, 136, 135, 133, 133, 125, 127, 131, + 79, 79, 83, 87, 92, 94, 95, 94, 100, 95, 90, 94, 96, 94, 90, 89, + 95, 94, 94, 94, 94, 93, 92, 93, 95, 96, 97, 96, 95, 95, 93, 90, + 99, 96, 93, 94, 95, 97, 96, 94, 108, 110, 112, 112, 111, 112, 115, 118, + 115, 115, 115, 117, 118, 118, 119, 119, 115, 116, 117, 114, 111, 110, 109, 109, + 108, 112, 113, 112, 110, 110, 112, 115, 114, 111, 110, 111, 112, 112, 110, 110, + 113, 112, 109, 105, 101, 100, 100, 101, 103, 105, 108, 109, 107, 104, 101, 100, + 103, 104, 106, 108, 108, 110, 112, 112, 110, 110, 109, 109, 110, 110, 110, 110, + 109, 113, 117, 118, 116, 114, 114, 114, 119, 118, 116, 115, 114, 115, 116, 117, + 114, 115, 115, 116, 116, 115, 115, 117, 122, 123, 122, 121, 120, 122, 123, 121, + 124, 121, 121, 118, 118, 117, 120, 119, 118, 116, 115, 114, 117, 115, 115, 112, + 119, 122, 123, 119, 115, 113, 114, 117, 113, 112, 111, 110, 109, 109, 109, 107, + 114, 105, 108, 113, 107, 109, 117, 118, 126, 107, 101, 114, 128, 132, 136, 142, + 143, 150, 154, 146, 143, 141, 146, 145, 149, 146, 148, 145, 146, 143, 144, 144, + 144, 148, 148, 85, 84, 86, 87, 88, 89, 90, 90, 101, 96, 94, 98, 95, + 91, 89, 94, 87, 87, 88, 88, 90, 90, 89, 91, 93, 93, 97, 100, 100, + 101, 100, 100, 101, 97, 92, 94, 98, 101, 98, 96, 110, 113, 115, 117, 116, + 115, 114, 114, 110, 111, 112, 116, 117, 118, 119, 117, 118, 115, 114, 111, 108, + 107, 108, 112, 111, 108, 105, 106, 108, 110, 109, 108, 115, 114, 113, 112, 113, + 114, 113, 110, 112, 112, 112, 109, 105, 104, 106, 108, 103, 105, 108, 110, 111, + 109, 106, 103, 107, 108, 106, 108, 109, 111, 110, 111, 107, 107, 106, 108, 107, + 109, 110, 113, 109, 111, 111, 110, 110, 111, 112, 114, 115, 114, 113, 112, 112, + 114, 115, 116, 119, 118, 117, 117, 116, 114, 114, 115, 118, 119, 118, 117, 116, + 118, 118, 118, 116, 114, 115, 113, 113, 113, 118, 118, 112, 108, 107, 107, 111, + 115, 119, 120, 121, 120, 117, 117, 120, 121, 119, 117, 119, 118, 116, 114, 112, + 112, 111, 112, 111, 99, 103, 110, 106, 109, 114, 114, 106, 103, 99, 106, 122, + 134, 135, 128, 121, 131, 142, 143, 147, 148, 147, 138, 145, 143, 145, 143, 145, + 143, 145, 146, 151, 153, 152, 89, 88, 92, 91, 93, 92, 95, 96, 94, 95, + 96, 98, 95, 93, 94, 99, 83, 84, 86, 88, 92, 95, 95, 98, 101, 100, + 99, 104, 106, 103, 105, 106, 102, 100, 100, 100, 106, 107, 109, 107, 113, 116, + 121, 122, 124, 120, 119, 116, 114, 113, 117, 119, 120, 121, 122, 122, 125, 119, + 114, 110, 105, 100, 101, 106, 111, 107, 103, 103, 108, 110, 109, 106, 111, 111, + 110, 107, 108, 110, 109, 104, 108, 111, 114, 113, 111, 110, 113, 116, 104, 104, + 105, 109, 112, 114, 113, 112, 112, 111, 108, 107, 106, 106, 104, 105, 107, 107, + 105, 107, 106, 109, 111, 114, 114, 114, 113, 112, 112, 115, 117, 119, 112, 112, + 113, 114, 115, 117, 119, 120, 120, 118, 118, 115, 113, 111, 112, 112, 115, 115, + 117, 116, 116, 116, 116, 115, 113, 113, 114, 115, 115, 114, 117, 119, 122, 118, + 113, 108, 107, 109, 112, 116, 117, 113, 109, 111, 117, 120, 117, 113, 113, 112, + 111, 111, 111, 111, 111, 112, 109, 96, 101, 106, 101, 101, 107, 104, 102, 109, + 110, 103, 104, 118, 133, 141, 142, 139, 130, 126, 137, 148, 147, 135, 141, 140, + 142, 141, 143, 143, 144, 145, 141, 141, 143, 76, 76, 80, 80, 83, 84, 90, + 95, 91, 95, 98, 96, 94, 97, 98, 96, 89, 90, 91, 93, 95, 98, 100, + 102, 102, 98, 98, 102, 102, 99, 102, 105, 106, 103, 104, 103, 104, 104, 106, + 106, 114, 116, 121, 122, 125, 123, 124, 123, 121, 121, 124, 126, 127, 127, 127, + 125, 126, 120, 117, 114, 108, 100, 99, 104, 107, 105, 103, 103, 104, 107, 108, + 109, 104, 106, 104, 100, 101, 104, 103, 99, 106, 111, 116, 116, 112, 110, 111, + 113, 108, 106, 104, 105, 109, 112, 112, 111, 113, 112, 109, 108, 107, 108, 107, + 108, 109, 109, 106, 106, 105, 107, 108, 112, 116, 116, 115, 115, 117, 119, 120, + 120, 115, 115, 116, 116, 117, 116, 116, 116, 118, 116, 116, 113, 111, 110, 112, + 112, 114, 114, 115, 115, 115, 116, 116, 115, 110, 113, 116, 116, 115, 112, 114, + 114, 123, 121, 117, 110, 105, 103, 103, 106, 111, 109, 106, 107, 111, 113, 112, + 110, 103, 104, 104, 105, 106, 106, 106, 106, 116, 103, 107, 112, 107, 107, 110, + 105, 108, 111, 109, 103, 96, 103, 124, 144, 149, 149, 140, 124, 127, 137, 143, + 137, 141, 139, 141, 139, 142, 140, 142, 142, 145, 143, 145, 83, 84, 85, 84, + 83, 82, 87, 91, 92, 96, 97, 94, 94, 97, 97, 90, 98, 100, 100, 101, + 102, 104, 105, 106, 93, 89, 91, 98, 102, 102, 107, 113, 112, 111, 112, 108, + 103, 101, 102, 103, 116, 117, 118, 120, 120, 122, 124, 125, 122, 122, 124, 125, + 125, 124, 124, 122, 127, 122, 122, 122, 119, 110, 107, 112, 107, 107, 108, 106, + 103, 104, 109, 114, 108, 110, 108, 104, 104, 108, 107, 102, 108, 113, 117, 116, + 109, 104, 102, 103, 113, 108, 103, 101, 102, 104, 104, 104, 111, 109, 109, 110, + 112, 114, 117, 117, 114, 112, 111, 109, 108, 109, 110, 112, 111, 113, 114, 116, + 118, 119, 117, 116, 120, 120, 119, 118, 115, 112, 108, 106, 117, 116, 114, 112, + 112, 112, 113, 113, 107, 108, 110, 111, 111, 113, 112, 111, 105, 106, 110, 110, + 107, 106, 106, 107, 105, 106, 107, 106, 103, 103, 104, 107, 109, 112, 112, 111, + 110, 110, 112, 113, 107, 108, 109, 109, 110, 109, 108, 106, 102, 91, 92, 98, + 95, 95, 99, 96, 102, 96, 100, 113, 111, 100, 99, 115, 106, 135, 153, 147, + 133, 131, 134, 136, 137, 137, 136, 136, 135, 135, 134, 136, 141, 139, 137, 95, + 89, 87, 90, 90, 85, 82, 85, 95, 89, 90, 96, 100, 93, 91, 94, 97, + 97, 112, 106, 111, 110, 95, 120, 115, 117, 117, 116, 113, 111, 112, 110, 122, + 116, 117, 124, 126, 122, 124, 129, 128, 116, 113, 121, 125, 124, 120, 119, 116, + 118, 121, 121, 119, 119, 125, 128, 132, 131, 127, 124, 123, 123, 123, 119, 111, + 109, 110, 110, 110, 110, 111, 111, 104, 103, 103, 107, 111, 112, 109, 105, 115, + 117, 116, 115, 115, 116, 116, 117, 109, 112, 114, 112, 108, 107, 112, 116, 119, + 114, 111, 108, 109, 110, 113, 117, 111, 112, 115, 119, 119, 119, 119, 118, 112, + 115, 117, 117, 117, 118, 121, 124, 121, 117, 114, 114, 116, 117, 114, 111, 114, + 111, 112, 115, 116, 112, 111, 114, 110, 109, 109, 110, 112, 114, 112, 110, 114, + 118, 118, 114, 115, 120, 121, 116, 120, 114, 111, 112, 111, 106, 106, 114, 112, + 115, 115, 115, 113, 111, 108, 107, 108, 106, 104, 103, 103, 104, 106, 107, 104, + 112, 96, 87, 101, 72, 99, 115, 112, 120, 122, 113, 110, 106, 92, 79, 86, + 104, 134, 165, 146, 141, 117, 138, 134, 131, 136, 145, 146, 138, 136, 140, 143, + 143, 143 }; + +/* Define image 'logo' of size 555x103x1x3 and type 'unsigned char' */ +const unsigned char data_logo[] = { + 76, 77, 75, 75, 75, 99, 102, 72, 63, 0, 84, 115, 114, 110, 115, 80, + 81, 108, 112, 69, 38, 87, 115, 118, 96, 116, 84, 88, 85, 107, 83, 72, + 65, 0, 111, 131, 127, 72, 131, 75, 73, 77, 104, 102, 33, 56, 111, 110, + 111, 114, 116, 112, 87, 80, 104, 100, 106, 24, 96, 79, 71, 71, 104, 108, + 83, 69, 65, 57, 63, 32, 100, 120, 76, 79, 79, 65, 107, 67, 84, 69, + 59, 32, 65, 112, 67, 68, 69, 111, 103, 71, 103, 59, 61, 4, 107, 111, + 80, 118, 136, 80, 65, 106, 71, 96, 37, 38, 115, 123, 118, 57, 48, 57, + 83, 57, 87, 51, 49, 12, 100, 106, 118, 111, 96, 100, 96, 68, 65, 55, + 46, 0, 103, 106, 97, 103, 72, 65, 63, 93, 127, 68, 65, 17, 92, 126, + 106, 65, 64, 96, 68, 61, 57, 55, 36, 67, 131, 110, 67, 106, 93, 63, + 65, 63, 95, 130, 53, 0, 100, 79, 103, 99, 75, 59, 64, 93, 97, 89, + 14, 104, 106, 65, 71, 67, 68, 103, 69, 55, 63, 99, 16, 97, 96, 72, + 100, 99, 88, 75, 67, 69, 55, 52, 46, 1, 52, 123, 84, 87, 57, 85, + 48, 93, 52, 49, 45, 17, 95, 100, 64, 103, 77, 57, 53, 49, 48, 48, + 38, 5, 89, 93, 102, 99, 55, 59, 68, 52, 89, 36, 8, 136, 111, 112, + 80, 136, 111, 106, 76, 85, 76, 79, 69, 38, 61, 108, 93, 68, 59, 65, + 92, 59, 89, 52, 28, 52, 128, 147, 127, 154, 100, 93, 96, 128, 85, 88, + 26, 53, 93, 99, 89, 52, 56, 52, 103, 49, 49, 76, 22, 73, 103, 124, + 89, 132, 56, 51, 45, 52, 42, 53, 46, 12, 88, 55, 59, 59, 87, 57, + 48, 51, 84, 40, 49, 12, 123, 96, 87, 91, 92, 63, 65, 99, 49, 44, + 40, 4, 53, 118, 89, 111, 44, 46, 42, 73, 40, 41, 18, 81, 91, 88, + 87, 83, 49, 56, 93, 93, 46, 41, 33, 1, 93, 63, 93, 92, 46, 57, + 40, 44, 41, 80, 42, 1, 123, 95, 134, 69, 53, 84, 45, 41, 37, 36, + 17, 61, 91, 49, 102, 85, 38, 85, 87, 32, 36, 36, 5, 97, 142, 114, + 83, 72, 76, 143, 108, 69, 71, 64, 57, 1, 73, 79, 79, 48, 41, 42, + 48, 45, 44, 45, 44, 8, 79, 83, 38, 102, 68, 77, 30, 33, 30, 28, + 26, 2, 87, 107, 88, 93, 111, 34, 83, 88, 41, 36, 30, 20, 0, 108, + 115, 99, 91, 88, 69, 64, 60, 56, 61, 1, 115, 89, 116, 71, 26, 76, + 33, 84, 30, 26, 5, 75, 106, 53, 73, 32, 71, 24, 65, 97, 55, 26, + 20, 10, 48, 89, 80, 89, 85, 46, 21, 22, 30, 32, 22, 5, 77, 75, + 28, 71, 38, 79, 25, 20, 18, 16, 0, 114, 107, 95, 21, 24, 83, 69, + 73, 102, 30, 20, 16, 1, 85, 21, 21, 14, 16, 95, 75, 40, 17, 16, + 10, 1, 38, 80, 48, 77, 93, 10, 17, 21, 9, 14, 6, 0, 71, 76, + 21, 16, 9, 10, 22, 71, 16, 13, 6, 0, 38, 96, 67, 42, 29, 96, + 30, 30, 33, 24, 57, 18, 12, 97, 38, 114, 30, 110, 104, 110, 75, 75, + 93, 99, 77, 60, 0, 88, 120, 108, 103, 119, 87, 80, 106, 112, 63, 34, + 88, 106, 115, 108, 92, 84, 85, 84, 104, 89, 75, 65, 0, 107, 122, 118, + 76, 118, 76, 72, 88, 96, 91, 45, 61, 106, 107, 108, 93, 92, 76, 79, + 95, 81, 89, 97, 37, 92, 85, 71, 72, 77, 108, 99, 83, 67, 57, 60, + 42, 100, 124, 80, 77, 89, 75, 107, 77, 89, 67, 52, 29, 67, 112, 69, + 68, 69, 106, 99, 75, 99, 57, 59, 1, 106, 107, 96, 112, 130, 87, 65, + 102, 75, 87, 30, 42, 97, 114, 68, 49, 55, 63, 69, 72, 59, 46, 44, + 17, 96, 102, 97, 131, 106, 92, 95, 95, 64, 57, 48, 0, 99, 102, 110, + 96, 72, 67, 71, 87, 107, 84, 65, 18, 87, 120, 103, 71, 68, 91, 95, + 64, 53, 57, 34, 67, 119, 92, 67, 79, 80, 84, 63, 64, 87, 115, 48, + 0, 99, 87, 88, 97, 76, 63, 69, 85, 95, 85, 20, 111, 102, 72, 76, + 60, 95, 93, 64, 64, 55, 84, 25, 91, 96, 88, 93, 72, 73, 73, 65, + 80, 53, 53, 41, 0, 65, 107, 73, 57, 72, 75, 52, 77, 51, 51, 46, + 24, 89, 103, 68, 92, 88, 65, 73, 71, 57, 46, 44, 5, 84, 89, 87, + 64, 57, 80, 59, 61, 79, 41, 12, 126, 110, 111, 91, 107, 110, 99, 83, + 95, 77, 87, 69, 36, 63, 110, 95, 59, 69, 87, 81, 56, 85, 61, 26, + 56, 123, 136, 120, 135, 99, 88, 97, 122, 85, 85, 32, 61, 93, 97, 77, + 49, 63, 55, 92, 51, 49, 65, 21, 69, 106, 115, 91, 112, 67, 56, 49, + 48, 44, 52, 48, 18, 68, 63, 65, 89, 85, 67, 48, 48, 69, 45, 48, + 12, 118, 102, 73, 83, 53, 53, 71, 92, 42, 45, 41, 5, 64, 103, 84, + 110, 41, 46, 48, 65, 40, 40, 17, 77, 87, 88, 83, 57, 84, 84, 87, + 65, 46, 49, 33, 1, 93, 67, 89, 81, 48, 52, 51, 36, 51, 67, 40, + 2, 114, 112, 100, 65, 38, 81, 45, 44, 36, 34, 17, 64, 83, 87, 95, + 57, 36, 83, 84, 32, 36, 34, 8, 91, 128, 108, 103, 68, 68, 110, 103, + 67, 81, 67, 61, 8, 69, 73, 68, 44, 40, 41, 37, 42, 40, 41, 41, + 12, 77, 81, 52, 83, 59, 76, 30, 32, 37, 28, 22, 4, 83, 83, 83, + 93, 76, 38, 75, 81, 51, 36, 28, 20, 0, 115, 119, 89, 83, 67, 65, + 65, 57, 56, 55, 0, 102, 104, 115, 57, 28, 68, 37, 81, 36, 25, 6, + 72, 108, 63, 65, 33, 63, 24, 25, 22, 22, 28, 21, 10, 48, 97, 61, + 79, 81, 42, 24, 24, 59, 37, 28, 5, 75, 61, 36, 44, 49, 72, 28, + 20, 20, 13, 1, 102, 91, 76, 40, 24, 85, 75, 55, 49, 40, 21, 14, + 1, 83, 41, 28, 17, 13, 25, 84, 73, 17, 25, 10, 0, 51, 77, 60, + 88, 51, 26, 17, 24, 8, 8, 6, 0, 75, 72, 18, 18, 12, 10, 12, + 69, 21, 34, 6, 0, 34, 87, 61, 48, 28, 79, 34, 28, 29, 21, 51, + 16, 12, 104, 51, 104, 41, 84, 97, 85, 75, 75, 88, 100, 77, 69, 8, + 91, 115, 103, 110, 110, 89, 80, 93, 108, 67, 32, 88, 111, 108, 112, 88, + 87, 79, 85, 100, 87, 76, 64, 0, 106, 110, 81, 106, 92, 76, 73, 79, + 102, 91, 42, 64, 110, 96, 77, 79, 96, 96, 95, 88, 88, 85, 103, 36, + 85, 84, 73, 69, 71, 87, 100, 95, 76, 57, 57, 42, 102, 126, 79, 81, + 77, 77, 85, 91, 81, 69, 65, 28, 73, 97, 73, 69, 87, 104, 80, 91, + 92, 56, 59, 2, 92, 106, 83, 81, 79, 72, 67, 100, 77, 81, 28, 42, + 104, 108, 65, 41, 63, 42, 48, 46, 46, 51, 44, 17, 91, 100, 99, 100, + 116, 100, 80, 91, 67, 57, 48, 0, 97, 111, 104, 88, 79, 65, 67, 68, + 65, 76, 65, 24, 79, 118, 99, 69, 64, 76, 97, 60, 59, 59, 33, 68, + 115, 103, 100, 85, 81, 83, 81, 67, 81, 102, 60, 1, 88, 88, 96, 87, + 84, 68, 72, 80, 89, 79, 21, 104, 102, 69, 68, 93, 68, 59, 71, 65, + 51, 79, 28, 87, 96, 80, 75, 83, 77, 72, 72, 67, 52, 52, 53, 9, + 51, 103, 72, 63, 75, 71, 57, 69, 51, 49, 46, 26, 85, 102, 68, 91, + 76, 76, 63, 67, 59, 51, 42, 4, 80, 88, 76, 64, 77, 52, 59, 48, + 71, 32, 13, 118, 107, 108, 100, 88, 76, 80, 91, 77, 83, 83, 68, 33, + 64, 104, 91, 64, 68, 104, 84, 63, 73, 67, 28, 80, 122, 122, 119, 126, + 108, 96, 103, 119, 89, 87, 37, 59, 93, 95, 76, 55, 63, 56, 87, 49, + 46, 59, 20, 69, 100, 107, 92, 108, 80, 53, 51, 45, 44, 51, 48, 20, + 83, 68, 63, 100, 61, 59, 51, 48, 68, 45, 52, 20, 106, 96, 72, 80, + 104, 106, 104, 87, 45, 46, 34, 9, 65, 96, 83, 76, 41, 45, 56, 41, + 40, 41, 22, 68, 85, 87, 81, 63, 59, 48, 61, 49, 45, 45, 32, 9, + 100, 73, 103, 53, 37, 49, 51, 34, 44, 57, 40, 2, 107, 89, 112, 91, + 63, 89, 49, 45, 41, 30, 21, 75, 69, 96, 73, 37, 44, 80, 87, 33, + 34, 36, 8, 83, 128, 110, 95, 81, 72, 76, 69, 69, 76, 68, 60, 5, + 67, 79, 53, 37, 36, 34, 34, 37, 44, 37, 33, 10, 73, 84, 59, 71, + 52, 68, 32, 33, 34, 30, 26, 0, 80, 81, 87, 103, 49, 37, 63, 84, + 45, 37, 29, 20, 0, 95, 120, 89, 80, 65, 69, 65, 69, 53, 55, 0, + 96, 91, 60, 33, 59, 56, 60, 76, 30, 26, 8, 64, 99, 55, 85, 30, + 28, 22, 22, 22, 22, 28, 18, 9, 44, 87, 71, 76, 75, 44, 25, 26, + 30, 37, 25, 10, 67, 55, 57, 59, 51, 65, 26, 21, 20, 16, 1, 96, + 69, 61, 30, 22, 79, 75, 48, 42, 33, 34, 16, 0, 92, 22, 24, 25, + 16, 16, 14, 75, 49, 24, 10, 0, 51, 64, 72, 103, 24, 16, 37, 37, + 8, 8, 6, 0, 65, 72, 41, 30, 16, 9, 46, 32, 18, 18, 6, 0, + 33, 34, 63, 51, 24, 22, 25, 28, 25, 25, 42, 13, 16, 96, 63, 93, + 83, 80, 92, 85, 73, 75, 85, 93, 72, 68, 0, 92, 123, 100, 99, 110, + 106, 81, 91, 99, 65, 26, 87, 108, 100, 81, 81, 99, 89, 91, 93, 97, + 75, 63, 8, 104, 104, 77, 96, 80, 77, 73, 83, 88, 71, 42, 69, 106, + 92, 114, 88, 103, 95, 91, 87, 79, 88, 91, 40, 83, 96, 79, 69, 71, + 69, 75, 87, 64, 61, 53, 44, 106, 134, 67, 72, 75, 91, 80, 76, 67, + 65, 64, 24, 71, 103, 69, 72, 93, 84, 85, 85, 71, 59, 56, 2, 102, + 106, 100, 97, 93, 68, 84, 80, 89, 59, 25, 42, 92, 59, 42, 34, 36, + 29, 34, 34, 36, 45, 37, 17, 87, 100, 89, 93, 110, 112, 83, 72, 71, + 64, 41, 0, 95, 102, 102, 85, 83, 95, 79, 76, 71, 75, 67, 26, 76, + 97, 96, 72, 67, 71, 88, 71, 56, 44, 29, 65, 110, 97, 103, 111, 91, + 107, 95, 81, 75, 92, 57, 0, 84, 93, 79, 81, 83, 71, 65, 80, 75, + 73, 25, 99, 97, 73, 71, 69, 68, 57, 60, 67, 46, 71, 30, 83, 89, + 85, 87, 80, 76, 73, 75, 80, 52, 52, 52, 2, 63, 85, 63, 52, 72, + 63, 57, 67, 48, 51, 46, 30, 81, 100, 76, 89, 97, 59, 69, 65, 59, + 49, 38, 9, 65, 85, 93, 68, 42, 75, 60, 65, 67, 29, 12, 104, 111, + 107, 97, 79, 84, 85, 77, 75, 88, 87, 68, 28, 67, 103, 84, 60, 75, + 81, 69, 59, 69, 67, 28, 63, 120, 128, 112, 99, 95, 100, 115, 112, 89, + 87, 42, 59, 88, 103, 53, 65, 55, 52, 99, 49, 44, 51, 17, 69, 99, + 91, 84, 91, 96, 55, 61, 48, 44, 55, 48, 21, 73, 67, 71, 76, 65, + 67, 56, 49, 61, 45, 55, 21, 103, 96, 71, 83, 75, 79, 61, 60, 59, + 59, 32, 12, 67, 83, 84, 73, 41, 49, 55, 36, 38, 46, 24, 69, 83, + 84, 77, 88, 56, 55, 55, 64, 38, 44, 33, 2, 87, 61, 76, 79, 33, + 61, 64, 37, 41, 56, 41, 2, 92, 96, 110, 73, 60, 104, 56, 48, 38, + 34, 24, 73, 52, 88, 68, 36, 40, 73, 72, 32, 34, 36, 6, 88, 120, + 103, 69, 76, 72, 69, 65, 71, 83, 69, 57, 8, 52, 72, 40, 32, 30, + 25, 36, 34, 40, 29, 29, 10, 67, 67, 53, 57, 46, 61, 37, 45, 37, + 30, 28, 0, 77, 77, 77, 99, 37, 46, 57, 72, 57, 33, 30, 18, 0, + 103, 120, 80, 73, 65, 69, 65, 71, 52, 55, 0, 88, 95, 56, 26, 52, + 24, 44, 34, 52, 26, 9, 61, 75, 84, 61, 45, 22, 21, 22, 22, 22, + 33, 25, 8, 52, 81, 75, 65, 64, 56, 26, 26, 38, 38, 29, 9, 72, + 53, 53, 45, 52, 45, 25, 20, 18, 16, 1, 89, 60, 49, 34, 25, 76, + 83, 87, 57, 40, 24, 18, 0, 88, 41, 34, 33, 10, 14, 14, 16, 38, + 24, 10, 1, 57, 67, 57, 34, 10, 21, 21, 16, 8, 8, 6, 0, 60, + 71, 20, 30, 21, 9, 30, 25, 28, 20, 6, 0, 16, 56, 52, 51, 22, + 21, 21, 21, 14, 17, 26, 10, 18, 80, 63, 64, 92, 72, 75, 76, 75, + 75, 88, 89, 69, 60, 0, 89, 97, 99, 102, 104, 106, 85, 84, 84, 64, + 26, 84, 115, 110, 89, 96, 108, 96, 93, 95, 81, 71, 61, 0, 103, 106, + 75, 100, 79, 79, 73, 77, 91, 65, 44, 68, 102, 106, 91, 88, 99, 104, + 92, 92, 92, 85, 91, 41, 52, 88, 83, 69, 72, 69, 71, 69, 72, 57, + 56, 46, 102, 110, 76, 92, 81, 95, 88, 79, 71, 65, 53, 22, 72, 99, + 72, 89, 85, 79, 87, 89, 63, 57, 56, 12, 97, 92, 91, 80, 68, 83, + 71, 77, 92, 57, 22, 41, 93, 51, 28, 29, 34, 42, 25, 30, 37, 51, + 37, 21, 85, 99, 93, 89, 110, 88, 89, 73, 75, 53, 41, 0, 92, 89, + 108, 93, 68, 76, 81, 88, 84, 72, 69, 30, 44, 93, 103, 85, 64, 65, + 83, 75, 53, 42, 29, 64, 108, 100, 77, 88, 99, 89, 87, 89, 75, 93, + 48, 0, 91, 99, 97, 77, 83, 75, 73, 79, 77, 75, 28, 93, 96, 92, + 76, 77, 65, 55, 55, 68, 67, 72, 29, 81, 81, 77, 77, 83, 79, 85, + 83, 80, 53, 52, 42, 2, 48, 91, 60, 60, 67, 55, 64, 63, 52, 48, + 45, 30, 49, 91, 69, 96, 97, 63, 67, 56, 55, 41, 38, 9, 76, 80, + 72, 59, 75, 80, 80, 73, 71, 26, 10, 59, 114, 103, 89, 81, 85, 81, + 79, 79, 89, 67, 67, 26, 75, 100, 87, 68, 77, 65, 61, 64, 65, 56, + 28, 64, 120, 108, 122, 92, 118, 100, 111, 95, 88, 91, 46, 48, 84, 100, + 53, 64, 67, 72, 88, 51, 40, 48, 22, 69, 93, 75, 79, 68, 72, 64, + 56, 67, 42, 53, 48, 24, 75, 69, 69, 69, 60, 61, 65, 53, 48, 48, + 51, 24, 92, 92, 83, 79, 57, 75, 61, 67, 60, 46, 42, 12, 73, 93, + 75, 65, 38, 53, 49, 36, 37, 37, 24, 32, 77, 81, 79, 80, 53, 46, + 67, 52, 41, 41, 30, 4, 84, 84, 71, 75, 53, 68, 72, 34, 40, 53, + 40, 5, 89, 88, 104, 61, 88, 89, 71, 49, 34, 34, 25, 75, 69, 83, + 69, 65, 34, 67, 71, 32, 34, 37, 12, 75, 126, 97, 79, 72, 72, 79, + 76, 72, 77, 79, 53, 9, 38, 67, 33, 28, 37, 26, 32, 24, 32, 25, + 25, 10, 32, 68, 42, 73, 49, 51, 51, 51, 38, 42, 25, 0, 77, 80, + 81, 48, 67, 68, 52, 73, 67, 38, 44, 17, 0, 107, 115, 81, 73, 68, + 72, 67, 57, 52, 63, 4, 96, 83, 45, 36, 60, 56, 38, 46, 57, 26, + 14, 22, 64, 83, 85, 41, 32, 29, 24, 21, 21, 28, 21, 8, 46, 80, + 63, 63, 59, 51, 24, 22, 36, 42, 22, 10, 64, 57, 49, 44, 52, 67, + 26, 22, 18, 16, 1, 96, 73, 49, 20, 28, 20, 30, 32, 22, 38, 22, + 14, 2, 77, 33, 22, 14, 14, 10, 14, 14, 21, 14, 10, 0, 53, 61, + 57, 9, 28, 14, 59, 26, 21, 17, 5, 0, 48, 61, 28, 41, 36, 9, + 22, 33, 22, 16, 5, 0, 5, 12, 25, 36, 49, 37, 14, 12, 10, 36, + 17, 8, 26, 84, 68, 41, 32, 76, 79, 80, 75, 81, 81, 92, 77, 55, + 1, 84, 110, 92, 99, 107, 103, 85, 95, 95, 51, 24, 84, 110, 114, 93, + 93, 103, 103, 100, 95, 88, 84, 63, 0, 99, 110, 84, 100, 77, 73, 76, + 80, 88, 48, 41, 61, 84, 110, 95, 97, 83, 89, 88, 91, 79, 92, 69, + 44, 51, 79, 85, 79, 73, 72, 68, 77, 65, 56, 51, 49, 91, 128, 83, + 92, 83, 81, 93, 79, 67, 67, 46, 18, 76, 103, 68, 91, 76, 81, 95, + 87, 61, 52, 55, 5, 95, 96, 99, 89, 80, 87, 89, 77, 88, 56, 21, + 45, 91, 32, 49, 45, 51, 45, 22, 25, 34, 44, 33, 24, 51, 99, 93, + 84, 106, 102, 108, 96, 72, 51, 53, 0, 89, 96, 108, 91, 80, 76, 73, + 72, 75, 72, 68, 34, 38, 76, 83, 96, 63, 52, 73, 71, 49, 41, 25, + 56, 107, 95, 91, 88, 89, 83, 87, 72, 75, 92, 41, 0, 88, 88, 87, + 75, 84, 76, 67, 64, 84, 77, 34, 59, 81, 103, 87, 97, 75, 75, 79, + 83, 46, 69, 34, 55, 76, 79, 76, 75, 75, 71, 73, 57, 52, 55, 34, + 1, 48, 95, 65, 49, 49, 57, 45, 46, 46, 48, 45, 33, 38, 83, 91, + 92, 61, 67, 63, 53, 53, 44, 44, 8, 71, 76, 68, 48, 53, 40, 60, + 60, 81, 28, 12, 56, 112, 104, 89, 79, 80, 83, 93, 89, 89, 75, 56, + 21, 65, 95, 79, 68, 92, 65, 60, 63, 64, 52, 28, 57, 110, 108, 95, + 99, 91, 100, 107, 92, 87, 92, 49, 25, 72, 95, 49, 71, 67, 84, 73, + 44, 48, 45, 16, 68, 88, 81, 88, 67, 63, 68, 45, 48, 42, 52, 49, + 25, 65, 64, 71, 71, 64, 64, 60, 67, 49, 46, 53, 24, 45, 96, 85, + 63, 69, 77, 60, 75, 51, 48, 46, 12, 72, 92, 67, 38, 40, 56, 48, + 37, 38, 42, 30, 32, 72, 76, 75, 68, 57, 76, 42, 48, 40, 36, 30, + 4, 80, 69, 61, 56, 64, 37, 52, 34, 36, 49, 52, 8, 76, 104, 81, + 56, 52, 56, 75, 55, 33, 34, 22, 68, 61, 81, 77, 61, 37, 63, 36, + 34, 36, 37, 13, 88, 116, 93, 67, 64, 80, 63, 79, 75, 84, 71, 61, + 9, 60, 59, 28, 21, 26, 40, 24, 28, 20, 18, 24, 9, 24, 60, 87, + 53, 42, 29, 36, 48, 37, 33, 18, 5, 59, 80, 48, 51, 59, 52, 68, + 51, 51, 41, 32, 17, 0, 99, 107, 75, 72, 65, 68, 67, 56, 51, 51, + 4, 83, 88, 42, 26, 56, 57, 45, 33, 53, 24, 21, 17, 57, 81, 85, + 40, 21, 22, 20, 21, 25, 30, 21, 5, 69, 71, 59, 83, 56, 40, 26, + 26, 25, 44, 26, 10, 20, 65, 51, 46, 41, 41, 36, 22, 21, 12, 1, + 92, 61, 46, 28, 28, 37, 32, 26, 26, 41, 18, 14, 2, 75, 28, 14, + 10, 12, 13, 38, 25, 17, 13, 9, 0, 53, 55, 68, 30, 29, 40, 41, + 9, 22, 9, 5, 0, 34, 59, 32, 30, 30, 36, 37, 30, 22, 14, 5, + 0, 5, 4, 18, 21, 21, 33, 14, 9, 10, 24, 10, 4, 36, 72, 37, + 36, 32, 99, 92, 87, 84, 83, 81, 80, 81, 68, 16, 84, 96, 93, 92, + 93, 102, 96, 100, 95, 61, 20, 80, 103, 96, 96, 87, 92, 91, 95, 81, + 88, 79, 63, 0, 95, 102, 92, 79, 81, 96, 91, 93, 69, 56, 38, 80, + 91, 104, 104, 93, 65, 61, 65, 72, 72, 63, 64, 69, 63, 55, 61, 76, + 80, 79, 75, 64, 59, 52, 46, 56, 97, 124, 88, 96, 84, 93, 84, 67, + 76, 64, 63, 16, 75, 96, 67, 93, 93, 93, 83, 87, 73, 52, 56, 6, + 95, 96, 99, 87, 83, 93, 87, 89, 89, 41, 18, 40, 41, 22, 22, 45, + 37, 46, 26, 20, 24, 24, 49, 25, 40, 85, 93, 88, 85, 80, 84, 77, + 59, 55, 42, 1, 85, 80, 103, 83, 84, 79, 73, 69, 71, 67, 65, 63, + 61, 38, 42, 48, 53, 53, 63, 72, 56, 52, 28, 68, 102, 83, 83, 75, + 87, 85, 84, 87, 88, 91, 56, 1, 81, 88, 88, 79, 87, 84, 69, 80, + 80, 75, 37, 41, 48, 77, 75, 91, 85, 67, 61, 81, 63, 40, 34, 41, + 45, 73, 49, 52, 56, 52, 53, 52, 49, 55, 51, 14, 56, 84, 52, 48, + 44, 49, 46, 44, 49, 45, 45, 46, 32, 45, 71, 72, 51, 44, 59, 51, + 56, 51, 42, 5, 67, 73, 53, 67, 57, 57, 52, 56, 46, 25, 36, 40, + 110, 103, 93, 92, 85, 85, 84, 85, 87, 72, 65, 18, 69, 89, 76, 64, + 71, 73, 60, 60, 63, 55, 24, 92, 114, 92, 91, 99, 102, 100, 88, 96, + 96, 91, 53, 41, 61, 89, 51, 79, 73, 59, 53, 51, 49, 42, 16, 63, + 85, 68, 45, 45, 45, 46, 44, 45, 49, 53, 49, 26, 34, 75, 72, 71, + 65, 57, 56, 63, 48, 48, 51, 32, 38, 83, 84, 67, 75, 92, 71, 61, + 40, 46, 41, 16, 64, 69, 44, 38, 38, 38, 32, 36, 26, 34, 40, 26, + 36, 61, 60, 68, 45, 48, 41, 40, 40, 44, 28, 6, 71, 84, 89, 60, + 61, 61, 34, 57, 49, 45, 38, 6, 83, 88, 73, 93, 41, 40, 57, 53, + 42, 28, 20, 75, 65, 75, 69, 53, 37, 56, 37, 36, 34, 34, 14, 73, + 122, 99, 87, 76, 77, 80, 80, 76, 71, 71, 59, 9, 44, 17, 17, 14, + 6, 13, 14, 14, 14, 14, 20, 12, 28, 55, 42, 29, 30, 25, 30, 32, + 32, 36, 25, 1, 68, 68, 46, 45, 68, 53, 46, 45, 45, 45, 32, 16, + 0, 103, 107, 73, 72, 76, 68, 68, 76, 49, 49, 0, 76, 75, 46, 28, + 53, 53, 53, 38, 38, 25, 22, 14, 51, 68, 59, 18, 20, 26, 21, 25, + 28, 28, 22, 6, 49, 71, 76, 36, 45, 41, 26, 33, 40, 45, 32, 17, + 10, 36, 64, 61, 49, 53, 46, 36, 25, 16, 2, 81, 63, 44, 18, 26, + 28, 36, 32, 26, 41, 16, 18, 0, 69, 21, 14, 14, 12, 16, 30, 42, + 18, 16, 9, 1, 55, 79, 51, 32, 26, 48, 16, 24, 24, 9, 5, 0, + 16, 40, 44, 44, 33, 30, 36, 34, 29, 9, 5, 0, 5, 13, 6, 9, + 8, 8, 9, 9, 9, 21, 24, 4, 71, 85, 64, 46, 41, 76, 80, 75, + 80, 79, 87, 81, 69, 61, 0, 80, 81, 83, 81, 83, 81, 85, 80, 73, + 59, 14, 79, 83, 80, 77, 79, 77, 79, 85, 75, 76, 63, 61, 12, 89, + 96, 95, 92, 92, 84, 91, 89, 65, 53, 42, 68, 87, 96, 93, 65, 71, + 56, 55, 63, 71, 60, 57, 55, 59, 60, 63, 72, 67, 67, 65, 65, 51, + 53, 44, 56, 95, 95, 88, 75, 68, 73, 79, 63, 61, 63, 63, 13, 71, + 96, 87, 71, 67, 81, 89, 80, 69, 57, 56, 8, 89, 95, 104, 88, 89, + 96, 92, 87, 61, 49, 16, 49, 42, 14, 18, 13, 21, 16, 20, 20, 18, + 17, 21, 24, 52, 36, 44, 46, 46, 48, 49, 55, 60, 46, 36, 4, 77, + 83, 83, 80, 75, 52, 71, 44, 48, 51, 63, 46, 52, 55, 61, 55, 56, + 59, 59, 79, 57, 40, 21, 63, 67, 79, 68, 65, 65, 68, 69, 71, 63, + 57, 56, 1, 79, 77, 81, 76, 71, 69, 69, 69, 68, 61, 59, 59, 64, + 51, 49, 53, 52, 49, 63, 55, 60, 56, 53, 57, 56, 55, 45, 57, 56, + 48, 56, 57, 56, 53, 52, 4, 44, 75, 57, 45, 37, 37, 41, 42, 42, + 42, 46, 44, 46, 51, 49, 51, 49, 49, 51, 52, 52, 45, 37, 12, 57, + 63, 57, 53, 48, 44, 57, 40, 36, 32, 22, 38, 61, 100, 107, 69, 85, + 85, 88, 72, 73, 67, 65, 14, 61, 59, 61, 53, 55, 55, 59, 59, 63, + 56, 25, 68, 103, 95, 92, 83, 85, 83, 80, 72, 63, 65, 53, 41, 53, + 68, 64, 55, 53, 51, 52, 56, 44, 41, 13, 64, 81, 67, 63, 65, 57, + 63, 55, 60, 63, 59, 48, 51, 29, 33, 41, 59, 36, 40, 57, 61, 59, + 61, 46, 41, 32, 42, 88, 73, 71, 67, 40, 42, 49, 38, 30, 25, 59, + 76, 42, 32, 33, 34, 28, 28, 34, 28, 28, 33, 40, 40, 49, 42, 45, + 41, 42, 44, 45, 42, 30, 5, 68, 71, 77, 61, 38, 67, 59, 65, 49, + 48, 42, 9, 73, 88, 61, 57, 67, 65, 60, 59, 36, 34, 24, 73, 59, + 52, 42, 57, 34, 33, 36, 34, 33, 38, 10, 77, 104, 84, 53, 76, 72, + 53, 65, 69, 68, 65, 32, 12, 10, 13, 18, 8, 9, 14, 12, 13, 13, + 16, 16, 14, 22, 28, 26, 24, 24, 28, 29, 26, 26, 25, 25, 0, 56, + 60, 56, 53, 51, 49, 48, 38, 41, 40, 28, 16, 0, 93, 103, 72, 71, + 68, 71, 69, 75, 46, 49, 6, 63, 75, 44, 26, 20, 29, 22, 24, 16, + 18, 22, 16, 16, 18, 20, 22, 26, 25, 25, 24, 26, 25, 20, 6, 18, + 49, 45, 20, 28, 40, 37, 22, 30, 30, 30, 17, 12, 14, 25, 20, 20, + 18, 18, 24, 25, 16, 2, 53, 60, 53, 45, 42, 42, 37, 26, 32, 41, + 17, 17, 0, 65, 37, 14, 12, 10, 29, 25, 25, 20, 17, 10, 1, 49, + 75, 30, 30, 6, 29, 28, 8, 9, 20, 4, 0, 13, 22, 36, 10, 10, + 16, 25, 21, 10, 10, 5, 0, 4, 10, 10, 9, 8, 8, 8, 10, 8, + 17, 10, 2, 56, 85, 42, 24, 24, 56, 55, 63, 52, 51, 46, 63, 45, + 18, 0, 33, 41, 38, 40, 45, 42, 42, 44, 48, 42, 17, 44, 51, 49, + 46, 44, 42, 40, 41, 40, 38, 37, 30, 0, 33, 36, 34, 42, 42, 37, + 38, 49, 45, 34, 45, 38, 60, 65, 38, 37, 46, 38, 36, 37, 34, 36, + 32, 33, 30, 30, 34, 38, 41, 42, 44, 48, 49, 53, 41, 46, 64, 63, + 55, 49, 53, 60, 51, 48, 56, 51, 32, 12, 37, 55, 65, 55, 59, 57, + 64, 57, 60, 53, 52, 9, 81, 92, 91, 91, 79, 75, 83, 73, 46, 45, + 12, 61, 26, 10, 14, 10, 10, 12, 17, 16, 13, 20, 16, 17, 21, 22, + 18, 30, 32, 34, 36, 36, 40, 42, 38, 1, 24, 36, 41, 26, 26, 26, + 28, 21, 21, 18, 26, 25, 18, 20, 26, 26, 28, 21, 51, 53, 52, 33, + 20, 36, 42, 41, 41, 41, 56, 51, 41, 37, 36, 32, 16, 30, 33, 37, + 45, 52, 40, 41, 45, 45, 45, 45, 46, 45, 49, 51, 55, 51, 51, 49, + 51, 51, 55, 48, 45, 44, 53, 48, 44, 41, 52, 41, 37, 36, 52, 36, + 8, 6, 41, 29, 29, 32, 20, 25, 17, 16, 18, 21, 18, 18, 20, 20, + 20, 20, 26, 28, 32, 33, 44, 36, 34, 12, 12, 13, 14, 13, 16, 10, + 14, 13, 17, 12, 12, 25, 46, 42, 49, 52, 49, 48, 51, 51, 51, 46, + 44, 13, 38, 44, 42, 45, 42, 42, 44, 55, 46, 45, 26, 18, 71, 81, + 60, 60, 65, 76, 61, 61, 67, 69, 59, 41, 36, 37, 42, 49, 52, 51, + 55, 63, 41, 37, 12, 56, 75, 75, 69, 55, 60, 60, 60, 51, 48, 46, + 40, 37, 41, 45, 45, 42, 44, 41, 44, 42, 41, 40, 38, 41, 42, 44, + 46, 49, 44, 42, 41, 41, 41, 34, 45, 17, 60, 33, 26, 25, 22, 21, + 24, 18, 17, 16, 17, 17, 17, 30, 16, 17, 17, 20, 18, 28, 30, 26, + 25, 6, 18, 64, 60, 26, 26, 52, 51, 26, 33, 44, 33, 9, 44, 72, + 67, 48, 46, 57, 56, 38, 36, 32, 25, 69, 59, 36, 34, 32, 32, 34, + 32, 33, 33, 36, 17, 65, 81, 73, 26, 21, 22, 22, 25, 18, 18, 12, + 36, 13, 0, 1, 8, 1, 8, 0, 4, 5, 8, 4, 10, 13, 18, 22, + 21, 16, 22, 21, 22, 14, 24, 22, 17, 0, 10, 13, 14, 13, 13, 12, + 13, 13, 13, 13, 13, 13, 0, 41, 89, 85, 83, 83, 81, 80, 73, 45, + 64, 8, 42, 61, 24, 26, 21, 22, 32, 26, 24, 22, 22, 21, 18, 12, + 10, 10, 8, 10, 9, 9, 8, 6, 6, 4, 9, 9, 9, 12, 10, 10, + 10, 10, 13, 12, 12, 13, 13, 14, 14, 16, 16, 16, 14, 14, 16, 14, + 2, 9, 17, 26, 12, 14, 17, 34, 34, 41, 21, 20, 12, 4, 60, 20, + 22, 21, 17, 18, 13, 17, 12, 9, 6, 2, 8, 14, 30, 2, 2, 1, + 4, 1, 1, 1, 13, 0, 2, 2, 1, 8, 4, 5, 4, 8, 10, 14, + 4, 0, 8, 2, 13, 4, 9, 12, 13, 9, 16, 17, 9, 5, 37, 85, + 30, 29, 25, 4, 1, 4, 12, 13, 1, 1, 18, 20, 6, 21, 17, 13, + 12, 10, 24, 9, 8, 6, 25, 20, 2, 21, 4, 2, 2, 13, 2, 2, + 2, 1, 1, 1, 2, 5, 8, 5, 9, 6, 6, 6, 12, 9, 9, 45, + 48, 51, 72, 72, 81, 81, 83, 89, 91, 87, 81, 83, 81, 81, 100, 80, + 83, 52, 55, 51, 49, 42, 42, 36, 25, 28, 24, 22, 18, 18, 17, 17, + 17, 18, 20, 20, 20, 22, 26, 26, 29, 33, 34, 37, 38, 41, 44, 48, + 16, 13, 34, 36, 36, 34, 36, 37, 37, 37, 33, 14, 33, 9, 24, 12, + 18, 12, 17, 36, 55, 69, 72, 59, 61, 75, 79, 88, 79, 72, 59, 53, + 44, 46, 18, 36, 2, 16, 18, 33, 33, 40, 48, 57, 65, 91, 81, 65, + 56, 88, 91, 77, 87, 88, 63, 48, 42, 33, 21, 10, 18, 16, 8, 10, + 10, 9, 5, 6, 6, 5, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 8, 0, 0, 0, 13, 0, 0, 0, 21, 0, 0, 4, 12, 20, 25, + 24, 65, 89, 92, 99, 92, 85, 63, 72, 88, 85, 69, 83, 80, 73, 59, + 40, 34, 17, 26, 13, 1, 0, 12, 10, 0, 0, 8, 2, 4, 0, 2, + 4, 4, 0, 1, 1, 0, 2, 9, 10, 0, 4, 1, 1, 25, 28, 1, + 1, 14, 16, 16, 17, 24, 17, 30, 9, 9, 14, 10, 9, 10, 14, 9, + 9, 9, 14, 10, 10, 10, 32, 10, 10, 10, 13, 16, 20, 20, 37, 10, + 29, 48, 48, 30, 29, 44, 44, 29, 29, 30, 29, 28, 21, 21, 17, 10, + 13, 14, 16, 21, 21, 32, 32, 30, 28, 32, 30, 22, 21, 28, 22, 17, + 14, 26, 16, 36, 21, 32, 44, 56, 53, 57, 65, 85, 67, 49, 45, 34, + 34, 42, 71, 68, 71, 64, 48, 34, 28, 24, 18, 13, 14, 17, 25, 18, + 22, 14, 18, 21, 24, 16, 17, 13, 26, 25, 25, 26, 26, 25, 22, 25, + 25, 24, 24, 26, 65, 34, 26, 34, 28, 32, 28, 29, 25, 25, 26, 33, + 20, 26, 37, 42, 52, 53, 55, 55, 45, 52, 38, 29, 5, 25, 97, 69, + 63, 45, 22, 25, 17, 16, 4, 4, 4, 1, 8, 6, 2, 1, 8, 8, + 5, 1, 6, 8, 2, 1, 5, 6, 5, 0, 4, 1, 4, 0, 1, 1, + 0, 0, 20, 22, 26, 29, 32, 34, 37, 40, 44, 42, 6, 49, 16, 17, + 12, 10, 14, 12, 10, 9, 12, 6, 9, 29, 41, 45, 56, 57, 60, 61, + 52, 45, 38, 17, 6, 57, 69, 68, 49, 63, 57, 52, 21, 10, 10, 4, + 8, 8, 9, 8, 12, 10, 6, 4, 5, 4, 2, 2, 9, 8, 9, 6, + 6, 9, 12, 13, 14, 13, 13, 12, 0, 51, 2, 2, 5, 2, 1, 1, + 0, 1, 1, 0, 1, 4, 14, 29, 25, 26, 36, 40, 37, 33, 25, 6, + 0, 41, 69, 61, 61, 61, 56, 26, 16, 6, 4, 1, 0, 0, 2, 0, + 0, 4, 2, 2, 1, 2, 0, 6, 4, 24, 76, 42, 40, 29, 138, 130, + 122, 114, 106, 103, 99, 75, 36, 16, 52, 102, 108, 95, 81, 83, 87, 87, + 89, 68, 30, 40, 102, 106, 107, 102, 111, 108, 108, 99, 104, 92, 103, 99, + 108, 110, 114, 122, 118, 108, 111, 100, 59, 45, 53, 81, 108, 122, 111, 102, + 111, 110, 111, 100, 106, 111, 103, 71, 65, 77, 71, 83, 80, 79, 87, 81, + 41, 53, 41, 40, 102, 99, 89, 81, 88, 87, 76, 76, 77, 65, 65, 72, + 81, 93, 83, 84, 60, 51, 34, 22, 32, 22, 13, 17, 22, 12, 10, 13, + 28, 8, 6, 8, 37, 21, 21, 26, 56, 65, 69, 76, 69, 75, 84, 76, + 73, 81, 72, 63, 53, 67, 84, 68, 73, 71, 75, 69, 76, 60, 48, 4, + 36, 100, 103, 103, 107, 97, 92, 87, 84, 92, 83, 49, 76, 89, 100, 91, + 91, 85, 71, 81, 52, 44, 22, 33, 76, 80, 89, 92, 92, 79, 85, 97, + 99, 64, 63, 67, 111, 108, 111, 110, 108, 106, 111, 108, 102, 67, 71, 97, + 104, 107, 100, 85, 95, 106, 89, 91, 89, 91, 77, 16, 40, 91, 96, 71, + 79, 85, 93, 76, 81, 79, 28, 28, 36, 99, 85, 85, 92, 87, 83, 96, + 85, 60, 67, 52, 64, 72, 88, 80, 85, 76, 64, 65, 65, 41, 20, 2, + 26, 75, 84, 73, 65, 72, 64, 61, 57, 40, 20, 0, 37, 85, 107, 80, + 77, 76, 72, 87, 88, 87, 48, 33, 41, 95, 99, 87, 92, 93, 97, 68, + 77, 37, 40, 32, 75, 80, 81, 64, 65, 60, 55, 77, 64, 57, 25, 32, + 37, 67, 72, 65, 71, 40, 40, 17, 16, 12, 13, 18, 17, 26, 32, 25, + 26, 20, 20, 29, 34, 25, 25, 17, 9, 55, 81, 88, 71, 80, 64, 56, + 24, 22, 14, 9, 16, 29, 49, 53, 52, 52, 59, 51, 53, 44, 33, 49, + 73, 106, 114, 100, 99, 97, 93, 91, 88, 87, 34, 34, 61, 91, 89, 95, + 87, 84, 79, 88, 79, 59, 41, 40, 65, 65, 72, 67, 59, 55, 59, 48, + 26, 20, 13, 21, 21, 32, 32, 24, 12, 16, 12, 25, 8, 10, 29, 25, + 46, 63, 64, 77, 80, 87, 80, 85, 75, 40, 33, 55, 67, 71, 75, 71, + 73, 72, 75, 63, 80, 59, 44, 0, 76, 71, 64, 44, 71, 69, 60, 52, + 48, 64, 53, 44, 75, 83, 72, 76, 84, 76, 68, 61, 60, 52, 12, 0, + 20, 68, 96, 75, 67, 65, 72, 59, 56, 71, 56, 17, 0, 64, 75, 69, + 68, 61, 55, 18, 36, 32, 25, 1, 16, 26, 44, 51, 49, 59, 67, 72, + 59, 68, 55, 68, 55, 61, 65, 60, 57, 65, 61, 71, 56, 41, 18, 8, + 68, 69, 45, 48, 56, 38, 46, 41, 46, 41, 25, 33, 24, 60, 68, 67, + 57, 69, 64, 55, 52, 14, 2, 26, 59, 55, 41, 44, 44, 38, 12, 8, + 5, 5, 5, 0, 1, 32, 32, 30, 32, 40, 41, 42, 41, 41, 12, 2, + 38, 71, 67, 71, 67, 63, 56, 49, 44, 26, 8, 0, 49, 79, 59, 56, + 51, 60, 49, 55, 46, 25, 6, 0, 37, 52, 51, 13, 10, 8, 6, 13, + 6, 2, 6, 2, 71, 48, 106, 116, 120, 124, 115, 107, 110, 103, 106, 96, + 93, 41, 24, 107, 100, 93, 85, 97, 97, 92, 89, 87, 96, 32, 115, 118, + 118, 114, 110, 115, 112, 122, 110, 118, 108, 102, 93, 107, 100, 106, 104, 110, + 106, 106, 106, 102, 103, 55, 118, 112, 99, 95, 102, 93, 107, 92, 97, 93, + 67, 69, 57, 75, 88, 83, 85, 72, 71, 72, 77, 85, 57, 51, 85, 97, + 93, 97, 103, 92, 96, 93, 95, 89, 85, 72, 85, 80, 80, 80, 73, 80, + 69, 69, 73, 67, 71, 52, 12, 30, 81, 88, 67, 75, 76, 88, 79, 73, + 40, 18, 60, 85, 85, 92, 81, 89, 91, 102, 93, 81, 89, 73, 38, 68, + 89, 100, 96, 72, 83, 83, 76, 79, 64, 52, 5, 76, 110, 88, 89, 95, + 83, 93, 77, 81, 102, 80, 52, 76, 104, 102, 89, 96, 92, 96, 71, 85, + 49, 22, 76, 87, 95, 85, 88, 83, 89, 83, 96, 89, 96, 91, 81, 75, + 75, 73, 72, 73, 72, 72, 75, 77, 85, 79, 67, 80, 81, 80, 71, 88, + 87, 92, 92, 99, 93, 87, 16, 100, 114, 99, 95, 99, 91, 79, 80, 76, + 79, 34, 24, 75, 83, 87, 85, 89, 88, 91, 91, 81, 71, 60, 48, 63, + 91, 93, 88, 92, 87, 76, 71, 68, 45, 22, 6, 83, 87, 87, 80, 84, + 85, 79, 75, 75, 64, 21, 1, 115, 119, 119, 112, 116, 111, 106, 97, 116, + 110, 76, 34, 100, 118, 115, 106, 103, 89, 100, 92, 84, 53, 40, 75, 96, + 84, 80, 80, 89, 91, 81, 87, 84, 85, 72, 30, 64, 83, 85, 81, 81, + 77, 73, 65, 38, 24, 12, 42, 63, 40, 48, 55, 51, 61, 52, 46, 44, + 30, 28, 12, 8, 68, 88, 69, 61, 68, 72, 88, 71, 83, 67, 55, 72, + 53, 76, 80, 89, 76, 91, 71, 81, 57, 51, 59, 91, 115, 79, 83, 79, + 80, 64, 79, 69, 63, 67, 53, 85, 72, 77, 67, 64, 64, 75, 67, 64, + 57, 73, 61, 65, 69, 68, 55, 71, 69, 71, 57, 57, 60, 60, 81, 76, + 83, 83, 84, 85, 83, 89, 93, 93, 40, 41, 63, 116, 116, 118, 115, 118, + 114, 107, 111, 108, 67, 33, 53, 77, 73, 67, 64, 56, 57, 48, 44, 55, + 63, 30, 2, 51, 72, 61, 49, 44, 59, 38, 51, 46, 36, 41, 49, 49, + 55, 59, 51, 40, 45, 46, 53, 44, 63, 14, 0, 93, 97, 102, 103, 97, + 93, 91, 79, 87, 81, 64, 33, 0, 68, 67, 72, 75, 75, 69, 63, 55, + 48, 26, 6, 49, 81, 83, 85, 88, 87, 85, 76, 67, 63, 30, 55, 80, + 79, 80, 80, 71, 63, 49, 52, 56, 42, 22, 9, 67, 73, 44, 42, 34, + 40, 55, 45, 60, 49, 20, 16, 63, 80, 76, 76, 75, 65, 59, 67, 65, + 16, 4, 48, 60, 60, 60, 63, 55, 56, 42, 44, 37, 28, 8, 37, 67, + 81, 77, 76, 69, 72, 68, 60, 65, 44, 21, 2, 60, 61, 51, 48, 48, + 32, 34, 20, 30, 45, 10, 1, 32, 76, 61, 49, 33, 37, 36, 37, 55, + 42, 10, 0, 56, 56, 64, 52, 48, 30, 41, 46, 45, 5, 8, 0, 69, + 64, 85, 84, 92, 138, 136, 124, 120, 111, 110, 71, 71, 41, 22, 92, 99, + 83, 83, 87, 60, 83, 87, 84, 41, 34, 118, 132, 139, 150, 170, 178, 189, + 197, 205, 205, 212, 216, 220, 213, 218, 218, 216, 202, 193, 155, 128, 123, 120, + 93, 112, 108, 110, 104, 99, 104, 106, 84, 60, 60, 63, 59, 55, 76, 95, + 107, 85, 77, 87, 85, 88, 84, 77, 37, 96, 103, 91, 92, 83, 85, 87, + 84, 79, 85, 84, 77, 75, 91, 93, 92, 83, 80, 72, 72, 80, 83, 63, + 55, 16, 92, 88, 100, 99, 85, 95, 95, 88, 89, 73, 20, 73, 110, 96, + 76, 99, 91, 84, 83, 84, 95, 91, 69, 45, 68, 92, 100, 81, 80, 88, + 84, 91, 75, 64, 60, 4, 83, 103, 100, 91, 79, 85, 81, 96, 81, 91, + 87, 37, 71, 92, 93, 95, 79, 81, 75, 73, 80, 56, 28, 81, 72, 81, + 83, 75, 91, 88, 96, 97, 84, 77, 65, 93, 75, 91, 81, 84, 84, 84, + 77, 67, 65, 55, 55, 73, 89, 85, 87, 89, 88, 83, 88, 88, 87, 87, + 81, 16, 103, 112, 73, 72, 73, 67, 68, 64, 76, 75, 34, 25, 72, 92, + 87, 83, 73, 71, 75, 77, 88, 72, 65, 34, 57, 88, 77, 81, 89, 87, + 67, 60, 71, 49, 37, 9, 80, 83, 79, 76, 76, 68, 68, 68, 61, 65, + 28, 0, 100, 112, 114, 115, 111, 111, 114, 103, 103, 108, 85, 41, 110, 106, + 103, 84, 73, 79, 64, 72, 75, 89, 71, 92, 79, 73, 79, 65, 76, 52, + 57, 56, 60, 44, 46, 36, 84, 118, 80, 87, 84, 91, 81, 72, 84, 33, + 12, 52, 53, 36, 52, 38, 33, 52, 40, 36, 45, 26, 24, 14, 10, 69, + 97, 65, 57, 76, 64, 67, 65, 52, 71, 34, 48, 99, 92, 91, 97, 92, + 85, 79, 77, 67, 53, 55, 106, 108, 75, 77, 73, 64, 57, 71, 88, 83, + 85, 85, 95, 93, 104, 93, 93, 97, 124, 96, 103, 99, 102, 95, 102, 103, + 106, 97, 96, 103, 99, 102, 79, 60, 41, 85, 83, 77, 81, 76, 73, 64, + 73, 72, 69, 46, 30, 88, 122, 111, 110, 107, 112, 112, 118, 104, 87, 83, + 40, 56, 73, 72, 51, 48, 63, 51, 46, 63, 61, 56, 30, 4, 40, 73, + 63, 61, 51, 59, 53, 65, 61, 46, 41, 41, 64, 77, 65, 81, 80, 73, + 60, 80, 68, 59, 16, 4, 83, 96, 87, 88, 92, 89, 84, 83, 76, 93, + 67, 30, 0, 71, 75, 71, 52, 53, 41, 57, 69, 52, 14, 9, 45, 89, + 85, 73, 57, 48, 68, 45, 44, 36, 33, 65, 84, 68, 68, 53, 45, 52, + 67, 56, 45, 24, 20, 5, 65, 76, 65, 44, 45, 51, 55, 52, 46, 45, + 20, 36, 76, 77, 72, 57, 72, 52, 49, 57, 72, 14, 4, 56, 63, 37, + 37, 30, 22, 25, 20, 26, 46, 38, 8, 33, 72, 65, 72, 79, 59, 48, + 49, 67, 59, 56, 17, 2, 59, 44, 25, 55, 37, 37, 26, 20, 25, 21, + 8, 0, 48, 71, 48, 59, 44, 32, 32, 60, 41, 38, 12, 0, 24, 59, + 51, 59, 51, 55, 42, 52, 38, 13, 8, 1, 83, 103, 84, 75, 84, 112, + 99, 108, 103, 91, 77, 81, 93, 44, 36, 67, 93, 85, 73, 64, 60, 61, + 64, 68, 93, 102, 130, 204, 212, 222, 225, 225, 224, 226, 228, 233, 234, 237, + 237, 237, 233, 230, 230, 229, 226, 221, 222, 193, 147, 132, 122, 146, 161, 190, + 165, 140, 107, 85, 56, 61, 61, 60, 55, 97, 108, 99, 96, 84, 95, 100, + 102, 85, 95, 81, 89, 87, 89, 64, 91, 85, 92, 84, 87, 79, 79, 77, + 89, 106, 114, 99, 102, 97, 104, 100, 83, 69, 63, 56, 16, 100, 92, 97, + 96, 97, 84, 85, 79, 77, 71, 32, 80, 89, 99, 88, 84, 89, 79, 84, + 95, 96, 80, 65, 37, 64, 95, 107, 85, 80, 85, 91, 84, 76, 60, 46, + 5, 71, 95, 93, 91, 88, 85, 83, 65, 100, 99, 77, 45, 75, 93, 89, + 81, 81, 79, 67, 79, 81, 59, 38, 48, 75, 77, 84, 93, 102, 80, 81, + 84, 71, 72, 57, 84, 89, 71, 87, 83, 85, 68, 76, 76, 75, 51, 51, + 81, 85, 83, 81, 76, 80, 83, 61, 83, 83, 49, 53, 21, 64, 115, 75, + 71, 79, 59, 67, 69, 75, 72, 37, 22, 71, 85, 84, 67, 71, 71, 67, + 69, 84, 72, 60, 34, 63, 81, 72, 61, 91, 93, 67, 61, 73, 40, 37, + 9, 60, 88, 75, 72, 79, 64, 83, 77, 57, 61, 25, 4, 65, 111, 102, + 89, 85, 85, 93, 99, 88, 85, 88, 87, 91, 107, 104, 95, 83, 100, 71, + 83, 63, 69, 61, 71, 60, 72, 67, 63, 60, 67, 65, 64, 60, 67, 64, + 68, 76, 89, 97, 65, 72, 73, 107, 77, 73, 30, 9, 34, 45, 34, 42, + 51, 55, 48, 52, 36, 29, 32, 18, 10, 8, 64, 83, 60, 63, 76, 77, + 77, 71, 61, 64, 34, 87, 103, 96, 87, 75, 76, 73, 68, 77, 52, 51, + 65, 87, 107, 67, 76, 63, 68, 73, 116, 202, 205, 193, 206, 221, 222, 206, + 214, 228, 232, 228, 225, 232, 242, 226, 229, 224, 241, 221, 210, 216, 246, 222, + 155, 91, 57, 45, 85, 100, 114, 110, 106, 106, 93, 87, 88, 69, 46, 42, + 104, 115, 104, 103, 110, 108, 120, 114, 87, 95, 77, 45, 45, 72, 60, 51, + 45, 56, 51, 45, 45, 60, 53, 25, 1, 51, 84, 68, 88, 65, 52, 60, + 53, 51, 46, 40, 18, 69, 76, 63, 65, 69, 69, 44, 68, 67, 59, 13, + 4, 57, 91, 85, 77, 72, 71, 65, 69, 73, 84, 65, 29, 0, 68, 68, + 60, 34, 55, 57, 52, 55, 53, 25, 12, 56, 87, 67, 60, 60, 53, 64, + 33, 42, 38, 22, 60, 71, 56, 49, 48, 67, 45, 46, 37, 30, 34, 21, + 9, 64, 76, 67, 59, 68, 68, 34, 45, 38, 46, 12, 29, 80, 76, 69, + 41, 69, 55, 71, 68, 64, 16, 5, 55, 45, 30, 32, 21, 21, 21, 21, + 21, 41, 36, 9, 30, 67, 64, 69, 89, 61, 44, 49, 53, 45, 41, 16, + 2, 52, 56, 29, 63, 29, 41, 24, 25, 37, 21, 6, 0, 48, 72, 49, + 45, 40, 41, 37, 56, 36, 20, 10, 0, 45, 42, 49, 51, 34, 37, 36, + 26, 34, 28, 9, 1, 67, 61, 59, 28, 17, 81, 81, 88, 81, 87, 73, + 95, 85, 44, 32, 72, 96, 89, 65, 61, 56, 55, 102, 115, 162, 197, 214, + 226, 236, 233, 233, 230, 230, 225, 232, 237, 238, 237, 236, 233, 232, 228, 222, + 225, 226, 225, 221, 224, 218, 220, 212, 205, 208, 202, 194, 130, 106, 83, 56, + 61, 67, 68, 69, 123, 183, 193, 186, 187, 194, 199, 202, 198, 195, 194, 193, + 193, 136, 114, 106, 102, 103, 92, 89, 97, 99, 135, 170, 195, 201, 195, 193, + 189, 134, 97, 84, 53, 64, 46, 18, 65, 92, 84, 81, 80, 80, 71, 81, + 85, 73, 34, 55, 89, 100, 81, 84, 84, 79, 80, 85, 95, 79, 67, 36, + 71, 84, 100, 88, 77, 84, 88, 81, 76, 59, 51, 6, 61, 99, 104, 97, + 88, 96, 71, 85, 89, 88, 77, 36, 75, 84, 93, 75, 75, 85, 73, 91, + 76, 57, 37, 42, 89, 93, 73, 76, 77, 89, 77, 81, 76, 68, 51, 91, + 89, 79, 76, 73, 72, 75, 97, 87, 73, 64, 49, 85, 83, 91, 72, 80, + 81, 77, 81, 72, 80, 83, 76, 22, 64, 112, 79, 73, 67, 53, 57, 57, + 75, 73, 37, 20, 71, 84, 73, 61, 60, 60, 61, 63, 80, 65, 53, 36, + 52, 79, 76, 60, 77, 68, 56, 61, 71, 41, 21, 4, 60, 92, 68, 61, + 72, 77, 71, 63, 68, 56, 25, 2, 100, 102, 93, 92, 99, 99, 95, 96, + 130, 181, 193, 199, 209, 214, 221, 224, 230, 232, 249, 249, 246, 240, 240, 225, + 232, 236, 233, 230, 225, 228, 222, 224, 198, 202, 181, 205, 197, 228, 190, 182, + 174, 175, 199, 142, 83, 36, 14, 48, 28, 51, 55, 45, 41, 56, 30, 26, + 10, 34, 10, 8, 5, 61, 89, 64, 65, 80, 85, 81, 57, 55, 67, 24, + 88, 102, 87, 71, 71, 80, 87, 77, 84, 64, 40, 49, 81, 103, 65, 69, + 61, 64, 67, 127, 190, 195, 199, 205, 206, 212, 209, 209, 214, 217, 218, 220, + 222, 221, 218, 218, 216, 208, 208, 204, 199, 199, 193, 143, 85, 57, 12, 77, + 88, 92, 96, 95, 93, 111, 108, 76, 77, 49, 49, 76, 115, 103, 120, 118, + 102, 93, 72, 75, 87, 81, 46, 42, 76, 64, 45, 51, 51, 51, 44, 56, + 37, 52, 33, 0, 53, 83, 59, 67, 55, 64, 61, 80, 44, 42, 40, 32, + 63, 84, 72, 79, 81, 79, 77, 65, 55, 53, 14, 0, 60, 91, 76, 67, + 63, 69, 81, 83, 85, 91, 71, 28, 0, 65, 57, 51, 40, 69, 53, 55, + 57, 44, 20, 9, 41, 89, 72, 53, 52, 45, 63, 37, 36, 28, 22, 57, + 80, 48, 64, 71, 56, 46, 44, 48, 53, 32, 22, 14, 59, 64, 51, 57, + 45, 45, 36, 51, 38, 44, 12, 32, 76, 68, 52, 67, 59, 83, 68, 67, + 61, 18, 5, 42, 61, 34, 34, 24, 20, 17, 21, 21, 21, 25, 8, 2, + 64, 64, 77, 83, 42, 49, 51, 45, 56, 40, 21, 2, 45, 59, 30, 65, + 17, 40, 22, 20, 30, 18, 5, 0, 33, 68, 57, 60, 44, 44, 34, 53, + 42, 22, 10, 0, 41, 53, 48, 21, 26, 24, 25, 14, 29, 12, 8, 6, + 68, 60, 45, 56, 18, 77, 76, 79, 84, 77, 73, 95, 81, 44, 36, 97, + 88, 64, 61, 69, 91, 103, 177, 228, 233, 236, 237, 230, 229, 229, 229, 205, + 175, 162, 166, 170, 162, 146, 135, 128, 124, 112, 108, 116, 122, 135, 183, 205, + 218, 217, 214, 212, 202, 202, 187, 136, 103, 72, 55, 63, 53, 69, 116, 147, + 204, 201, 213, 201, 212, 218, 218, 216, 225, 222, 228, 225, 222, 217, 222, 220, + 217, 212, 202, 210, 214, 210, 217, 214, 202, 198, 189, 191, 134, 97, 79, 49, + 63, 49, 21, 65, 91, 73, 73, 102, 87, 87, 85, 76, 71, 34, 33, 84, + 93, 92, 88, 87, 93, 95, 96, 96, 79, 67, 36, 63, 106, 110, 80, 85, + 85, 89, 80, 75, 60, 46, 9, 77, 100, 92, 88, 81, 96, 77, 81, 92, + 77, 81, 36, 80, 81, 87, 80, 76, 88, 79, 83, 76, 57, 37, 33, 88, + 75, 72, 77, 85, 75, 87, 81, 68, 63, 48, 80, 91, 72, 69, 69, 81, + 77, 73, 76, 69, 49, 49, 85, 87, 97, 85, 83, 68, 88, 81, 68, 81, + 80, 79, 24, 67, 107, 81, 69, 67, 52, 53, 68, 79, 71, 37, 18, 77, + 79, 71, 61, 64, 59, 59, 64, 75, 63, 59, 37, 61, 76, 69, 60, 56, + 88, 79, 61, 65, 42, 21, 8, 69, 92, 75, 71, 72, 64, 63, 51, 67, + 76, 24, 2, 112, 114, 93, 95, 103, 91, 106, 179, 190, 202, 205, 205, 213, + 225, 225, 229, 233, 237, 246, 248, 248, 245, 244, 242, 226, 236, 241, 232, 225, + 225, 233, 226, 221, 228, 217, 213, 204, 210, 199, 195, 186, 206, 187, 157, 81, + 34, 13, 45, 26, 52, 45, 40, 46, 34, 36, 26, 13, 33, 12, 6, 5, + 64, 83, 65, 76, 71, 81, 84, 69, 56, 59, 22, 87, 96, 72, 83, 83, + 89, 99, 95, 91, 72, 51, 67, 77, 111, 72, 76, 76, 61, 63, 91, 131, + 178, 193, 197, 199, 195, 205, 194, 199, 206, 209, 210, 217, 217, 220, 209, 205, + 210, 202, 191, 190, 194, 166, 99, 76, 33, 21, 81, 95, 76, 89, 89, 97, + 96, 107, 80, 80, 49, 44, 77, 110, 96, 91, 71, 73, 77, 75, 80, 84, + 89, 60, 40, 71, 64, 56, 44, 46, 49, 52, 41, 55, 75, 30, 2, 75, + 59, 73, 52, 53, 60, 65, 59, 60, 44, 40, 30, 65, 85, 56, 79, 60, + 56, 56, 59, 64, 57, 13, 0, 93, 80, 71, 75, 77, 76, 76, 87, 85, + 83, 67, 40, 0, 61, 76, 48, 79, 45, 38, 52, 49, 44, 18, 4, 37, + 87, 69, 64, 60, 63, 60, 48, 33, 33, 22, 60, 76, 45, 56, 72, 59, + 46, 52, 51, 37, 33, 24, 18, 60, 79, 65, 67, 68, 48, 37, 41, 38, + 56, 16, 40, 73, 64, 44, 73, 79, 81, 61, 67, 52, 21, 5, 44, 55, + 41, 32, 21, 20, 33, 20, 24, 37, 46, 9, 2, 60, 57, 51, 42, 45, + 40, 40, 37, 38, 42, 20, 4, 37, 63, 38, 79, 17, 40, 16, 33, 26, + 22, 8, 2, 45, 67, 60, 55, 42, 33, 41, 44, 45, 30, 13, 0, 41, + 57, 28, 22, 10, 13, 14, 18, 25, 8, 8, 0, 63, 56, 34, 13, 2, + 102, 80, 75, 75, 73, 73, 99, 71, 48, 34, 99, 93, 64, 73, 97, 130, + 216, 236, 234, 232, 233, 236, 230, 217, 185, 151, 118, 107, 102, 103, 103, 103, + 103, 102, 100, 103, 100, 102, 99, 100, 99, 102, 115, 124, 151, 183, 191, 198, + 185, 140, 116, 84, 48, 52, 57, 60, 72, 128, 153, 226, 232, 202, 220, 212, + 224, 222, 226, 224, 221, 220, 226, 233, 229, 226, 224, 218, 217, 224, 217, 213, + 212, 212, 217, 209, 201, 201, 191, 118, 81, 68, 49, 59, 49, 24, 89, 89, + 84, 83, 92, 79, 87, 84, 88, 89, 68, 25, 80, 92, 103, 103, 103, 97, + 97, 91, 89, 76, 65, 36, 61, 92, 99, 89, 84, 88, 93, 83, 77, 77, + 49, 8, 71, 97, 92, 97, 89, 96, 92, 95, 95, 67, 65, 26, 76, 79, + 96, 73, 97, 81, 80, 75, 79, 68, 57, 32, 80, 77, 75, 72, 72, 77, + 77, 77, 67, 53, 45, 75, 83, 67, 65, 72, 81, 71, 71, 68, 64, 41, + 45, 75, 80, 88, 89, 79, 67, 81, 71, 80, 64, 81, 73, 26, 45, 67, + 108, 80, 65, 61, 53, 63, 79, 65, 38, 22, 64, 73, 68, 52, 56, 53, + 52, 71, 79, 73, 55, 30, 48, 65, 64, 55, 53, 83, 60, 64, 65, 46, + 30, 9, 71, 83, 67, 77, 71, 76, 71, 63, 69, 59, 25, 0, 92, 110, + 93, 96, 102, 91, 165, 190, 198, 201, 206, 210, 210, 217, 221, 229, 229, 232, + 241, 245, 244, 246, 245, 244, 238, 229, 238, 232, 228, 230, 220, 217, 221, 225, + 214, 213, 202, 198, 194, 190, 185, 189, 143, 120, 49, 33, 14, 45, 29, 41, + 56, 38, 34, 33, 24, 25, 13, 21, 17, 10, 6, 51, 95, 68, 81, 67, + 76, 79, 72, 64, 55, 29, 83, 81, 96, 104, 107, 118, 116, 114, 104, 87, + 77, 53, 92, 118, 80, 76, 60, 57, 64, 64, 79, 92, 104, 107, 107, 100, + 97, 93, 99, 97, 97, 99, 103, 108, 108, 104, 104, 106, 99, 96, 99, 96, + 92, 79, 71, 32, 38, 77, 91, 75, 73, 96, 89, 91, 99, 77, 75, 51, + 53, 72, 107, 108, 85, 85, 108, 93, 96, 102, 72, 80, 79, 40, 60, 77, + 61, 45, 48, 42, 51, 57, 56, 61, 29, 4, 46, 68, 65, 52, 52, 49, + 45, 57, 64, 51, 38, 30, 55, 92, 51, 84, 85, 69, 76, 73, 71, 48, + 17, 2, 92, 92, 79, 83, 73, 77, 76, 91, 83, 83, 65, 30, 0, 67, + 75, 55, 53, 52, 55, 44, 53, 29, 16, 10, 40, 84, 72, 46, 64, 55, + 46, 42, 36, 36, 26, 63, 77, 63, 63, 67, 55, 46, 46, 64, 40, 22, + 25, 12, 68, 73, 60, 48, 59, 55, 36, 48, 34, 42, 14, 59, 67, 45, + 68, 63, 61, 57, 67, 69, 56, 16, 6, 22, 41, 53, 32, 33, 20, 37, + 33, 21, 33, 45, 9, 22, 55, 64, 52, 40, 38, 42, 40, 40, 38, 38, + 21, 4, 38, 61, 29, 51, 20, 34, 16, 36, 28, 17, 6, 0, 57, 68, + 64, 63, 42, 38, 51, 46, 46, 34, 12, 0, 24, 41, 21, 9, 4, 1, + 2, 12, 18, 9, 8, 1, 64, 77, 28, 2, 25, 130, 88, 85, 84, 84, + 87, 88, 87, 48, 48, 75, 61, 75, 102, 165, 225, 240, 233, 234, 226, 216, + 195, 169, 126, 110, 103, 103, 103, 104, 104, 104, 104, 110, 104, 91, 77, 69, + 76, 84, 95, 124, 107, 100, 100, 97, 106, 108, 108, 108, 104, 100, 63, 48, + 52, 57, 51, 68, 111, 131, 182, 191, 191, 159, 124, 115, 120, 126, 123, 122, + 124, 135, 162, 190, 198, 205, 210, 216, 214, 206, 195, 197, 204, 202, 198, 183, + 138, 115, 92, 77, 45, 44, 56, 44, 24, 61, 85, 85, 83, 83, 93, 92, + 84, 84, 92, 53, 28, 68, 91, 88, 89, 95, 88, 91, 91, 88, 71, 65, + 30, 57, 85, 102, 104, 106, 97, 99, 83, 79, 64, 45, 6, 64, 92, 91, + 92, 84, 96, 88, 89, 84, 79, 48, 25, 75, 83, 91, 72, 84, 83, 84, + 76, 73, 77, 49, 32, 52, 84, 77, 84, 77, 76, 77, 72, 65, 49, 40, + 65, 89, 73, 68, 73, 76, 77, 72, 73, 68, 41, 40, 79, 77, 77, 75, + 76, 76, 81, 79, 81, 61, 51, 64, 32, 38, 68, 83, 95, 76, 61, 52, + 69, 71, 68, 41, 18, 60, 80, 65, 61, 52, 53, 64, 96, 68, 64, 51, + 24, 61, 75, 55, 49, 55, 51, 56, 57, 55, 40, 30, 10, 48, 91, 79, + 80, 69, 61, 63, 79, 65, 67, 24, 5, 69, 108, 95, 96, 106, 93, 93, + 138, 182, 191, 189, 169, 123, 114, 111, 110, 115, 112, 110, 104, 108, 108, 111, + 111, 111, 107, 103, 104, 106, 104, 103, 97, 97, 106, 110, 104, 102, 95, 89, + 93, 71, 63, 60, 56, 45, 16, 12, 41, 36, 45, 38, 45, 34, 29, 29, + 26, 10, 17, 14, 6, 5, 56, 71, 72, 63, 71, 77, 59, 65, 57, 48, + 33, 87, 89, 110, 132, 170, 179, 181, 162, 166, 144, 118, 102, 88, 115, 71, + 84, 71, 56, 59, 57, 72, 71, 64, 73, 79, 83, 80, 79, 81, 81, 81, + 83, 84, 84, 85, 87, 87, 85, 84, 85, 85, 81, 85, 81, 22, 13, 36, + 80, 85, 76, 85, 80, 80, 85, 102, 76, 71, 63, 42, 53, 92, 103, 83, + 69, 100, 104, 103, 77, 72, 80, 65, 44, 46, 63, 65, 49, 52, 52, 51, + 52, 53, 57, 21, 2, 41, 75, 69, 51, 55, 52, 45, 55, 65, 42, 37, + 14, 67, 84, 57, 67, 84, 85, 67, 83, 71, 44, 13, 2, 60, 77, 68, + 81, 87, 72, 77, 81, 81, 84, 63, 29, 1, 63, 53, 69, 53, 40, 32, + 45, 25, 24, 21, 14, 38, 77, 71, 63, 71, 57, 51, 46, 46, 26, 16, + 68, 72, 63, 71, 71, 48, 48, 61, 44, 34, 26, 24, 17, 71, 63, 48, + 61, 46, 38, 44, 52, 36, 42, 12, 38, 76, 72, 76, 57, 28, 60, 61, + 81, 57, 16, 8, 17, 42, 51, 37, 30, 29, 37, 18, 20, 36, 34, 10, + 18, 49, 63, 57, 45, 52, 45, 46, 45, 42, 40, 26, 6, 16, 57, 36, + 26, 22, 26, 18, 33, 33, 18, 5, 0, 30, 67, 45, 55, 38, 48, 36, + 37, 46, 20, 10, 0, 55, 49, 9, 9, 2, 13, 1, 6, 20, 14, 4, + 2, 64, 81, 20, 6, 51, 111, 112, 99, 104, 91, 100, 81, 81, 49, 46, + 63, 72, 114, 199, 234, 237, 234, 237, 236, 189, 146, 114, 104, 104, 106, 108, + 112, 100, 116, 115, 102, 73, 46, 30, 30, 29, 36, 30, 34, 37, 59, 77, + 119, 112, 100, 103, 99, 99, 96, 107, 95, 44, 41, 45, 53, 52, 71, 87, + 108, 103, 118, 104, 108, 92, 88, 87, 95, 89, 92, 87, 97, 93, 95, 102, + 103, 106, 103, 103, 103, 100, 97, 100, 106, 107, 95, 95, 85, 73, 40, 44, + 51, 53, 44, 25, 51, 81, 91, 84, 96, 85, 91, 91, 88, 84, 56, 32, + 56, 87, 85, 87, 81, 85, 89, 92, 84, 65, 63, 24, 63, 73, 85, 91, + 88, 84, 81, 84, 69, 69, 49, 8, 64, 85, 97, 92, 93, 88, 88, 89, + 80, 76, 59, 24, 68, 76, 91, 92, 77, 83, 71, 79, 59, 56, 45, 37, + 45, 44, 60, 57, 52, 55, 57, 59, 64, 60, 38, 72, 85, 67, 63, 73, + 73, 72, 72, 71, 69, 48, 36, 77, 75, 73, 69, 68, 71, 69, 73, 72, + 72, 72, 72, 51, 37, 73, 88, 77, 59, 49, 51, 72, 64, 65, 42, 17, + 71, 83, 71, 61, 51, 51, 65, 84, 68, 61, 51, 26, 51, 67, 53, 49, + 40, 42, 41, 51, 41, 38, 24, 10, 45, 88, 67, 42, 61, 72, 75, 56, + 61, 61, 22, 5, 97, 100, 95, 92, 96, 95, 99, 99, 102, 102, 102, 96, + 97, 97, 99, 97, 97, 95, 99, 97, 97, 96, 97, 96, 96, 92, 92, 89, + 88, 87, 88, 79, 84, 81, 80, 79, 77, 72, 72, 69, 61, 57, 42, 38, + 18, 12, 17, 37, 29, 41, 33, 29, 13, 17, 10, 2, 14, 16, 28, 6, + 2, 61, 95, 73, 65, 68, 65, 69, 59, 56, 25, 51, 91, 108, 174, 193, + 206, 206, 204, 189, 194, 194, 186, 174, 139, 112, 76, 53, 55, 60, 48, 55, + 44, 60, 56, 55, 64, 77, 87, 87, 89, 88, 85, 89, 93, 95, 95, 95, + 93, 92, 93, 93, 91, 97, 71, 18, 25, 14, 8, 72, 79, 87, 69, 77, + 68, 64, 61, 79, 67, 60, 41, 55, 73, 81, 77, 96, 88, 83, 73, 68, + 65, 69, 75, 45, 40, 51, 81, 75, 69, 63, 67, 69, 55, 53, 34, 1, + 49, 73, 75, 63, 55, 61, 52, 57, 73, 34, 37, 22, 55, 91, 65, 76, + 63, 46, 46, 57, 56, 51, 13, 1, 60, 85, 71, 72, 73, 75, 80, 83, + 76, 79, 72, 28, 1, 63, 69, 37, 30, 34, 29, 25, 37, 24, 17, 16, + 42, 73, 69, 73, 53, 42, 56, 51, 51, 29, 18, 52, 65, 56, 64, 52, + 49, 49, 48, 48, 46, 26, 25, 20, 75, 61, 57, 40, 42, 40, 33, 45, + 38, 20, 10, 63, 64, 77, 57, 33, 49, 44, 64, 45, 55, 13, 9, 13, + 38, 46, 42, 46, 40, 30, 20, 21, 24, 29, 8, 2, 52, 60, 64, 44, + 48, 48, 40, 34, 40, 42, 17, 8, 10, 53, 44, 24, 33, 30, 18, 25, + 22, 14, 5, 0, 49, 63, 55, 44, 32, 36, 36, 45, 46, 32, 26, 0, + 24, 38, 5, 17, 5, 16, 6, 8, 21, 9, 4, 12, 55, 52, 26, 42, + 95, 68, 67, 68, 64, 60, 61, 61, 52, 41, 76, 71, 112, 213, 240, 237, + 238, 236, 238, 197, 132, 107, 108, 108, 115, 115, 110, 115, 120, 115, 81, 44, + 26, 22, 24, 25, 26, 32, 32, 33, 36, 36, 49, 77, 108, 150, 112, 103, + 102, 102, 107, 89, 42, 37, 40, 49, 52, 55, 87, 84, 84, 79, 77, 91, + 92, 93, 93, 93, 95, 95, 92, 93, 92, 93, 95, 93, 92, 93, 91, 91, + 89, 87, 87, 91, 89, 87, 83, 61, 36, 38, 36, 51, 51, 46, 28, 34, + 79, 80, 91, 79, 55, 65, 57, 49, 45, 46, 55, 34, 51, 67, 79, 77, + 76, 76, 75, 80, 64, 63, 22, 61, 67, 87, 91, 89, 85, 81, 69, 65, + 63, 45, 12, 65, 69, 71, 71, 69, 69, 69, 71, 73, 63, 56, 24, 64, + 71, 85, 75, 57, 67, 64, 53, 55, 61, 55, 51, 55, 67, 51, 69, 61, + 64, 55, 64, 63, 44, 38, 59, 71, 76, 63, 65, 69, 69, 64, 68, 64, + 46, 34, 77, 73, 73, 64, 68, 67, 67, 61, 64, 60, 67, 56, 60, 34, + 48, 55, 53, 52, 53, 59, 60, 64, 63, 44, 14, 72, 64, 71, 59, 51, + 48, 46, 51, 56, 55, 44, 34, 48, 60, 41, 33, 36, 36, 37, 36, 37, + 36, 18, 12, 33, 64, 67, 48, 57, 67, 64, 61, 65, 72, 21, 2, 89, + 104, 97, 95, 93, 93, 95, 92, 92, 84, 88, 87, 76, 85, 72, 80, 85, + 81, 114, 111, 108, 111, 108, 108, 108, 107, 106, 103, 100, 102, 97, 93, 92, + 95, 89, 88, 91, 85, 67, 38, 18, 16, 13, 12, 10, 8, 17, 4, 8, + 9, 2, 1, 1, 2, 1, 2, 2, 9, 10, 5, 2, 46, 76, 81, 79, + 75, 83, 75, 60, 56, 22, 60, 100, 158, 214, 210, 206, 210, 195, 202, 205, + 197, 179, 174, 150, 73, 64, 68, 61, 64, 60, 57, 53, 61, 67, 38, 38, + 41, 75, 162, 107, 104, 111, 108, 124, 118, 120, 124, 131, 127, 128, 126, 107, + 84, 49, 14, 30, 16, 9, 56, 72, 79, 79, 77, 80, 76, 81, 77, 73, + 69, 67, 72, 75, 57, 57, 63, 56, 55, 56, 65, 67, 56, 51, 51, 48, + 45, 46, 44, 42, 42, 30, 41, 40, 42, 20, 4, 44, 53, 56, 59, 56, + 60, 51, 57, 61, 41, 34, 20, 79, 91, 65, 61, 41, 56, 59, 49, 48, + 51, 13, 1, 80, 80, 69, 73, 67, 77, 68, 72, 69, 73, 59, 42, 1, + 56, 65, 38, 45, 28, 32, 25, 28, 22, 16, 5, 44, 65, 63, 60, 36, + 40, 52, 52, 34, 28, 16, 48, 52, 53, 49, 49, 52, 49, 49, 52, 46, + 26, 32, 25, 80, 61, 41, 38, 42, 38, 30, 40, 34, 14, 10, 52, 38, + 52, 56, 52, 46, 38, 41, 38, 37, 14, 13, 12, 25, 34, 36, 20, 26, + 26, 33, 32, 32, 29, 10, 0, 44, 51, 48, 41, 36, 33, 32, 30, 26, + 26, 10, 10, 10, 9, 9, 9, 14, 16, 10, 28, 20, 18, 6, 5, 44, + 59, 51, 38, 33, 33, 33, 34, 34, 26, 14, 0, 45, 42, 5, 12, 9, + 16, 12, 12, 6, 5, 2, 0, 42, 60, 45, 38, 30, 44, 36, 46, 45, + 41, 38, 44, 55, 88, 67, 93, 194, 238, 236, 237, 237, 240, 189, 136, 107, + 115, 119, 118, 111, 103, 119, 124, 119, 80, 30, 20, 21, 20, 22, 30, 37, + 41, 40, 45, 40, 40, 41, 60, 85, 140, 155, 116, 115, 115, 108, 92, 38, + 34, 36, 46, 52, 41, 73, 81, 81, 81, 83, 88, 93, 95, 96, 100, 99, + 100, 102, 103, 103, 97, 96, 96, 96, 95, 99, 93, 93, 91, 89, 88, 93, + 79, 40, 34, 33, 32, 24, 28, 46, 45, 42, 29, 33, 38, 46, 53, 36, + 32, 30, 26, 28, 22, 24, 25, 36, 36, 48, 51, 55, 57, 63, 64, 64, + 55, 24, 53, 61, 77, 79, 73, 68, 55, 29, 33, 28, 17, 12, 38, 40, + 40, 42, 42, 42, 42, 46, 46, 45, 34, 29, 44, 46, 53, 32, 29, 29, + 32, 21, 13, 21, 18, 13, 12, 10, 12, 12, 12, 17, 18, 20, 21, 22, + 29, 17, 18, 18, 18, 18, 32, 33, 22, 28, 33, 56, 33, 56, 69, 56, + 52, 52, 52, 51, 51, 51, 49, 51, 49, 46, 48, 51, 55, 55, 56, 57, + 59, 59, 59, 61, 44, 18, 65, 64, 53, 46, 41, 45, 42, 40, 48, 48, + 36, 16, 44, 29, 25, 14, 13, 12, 12, 12, 12, 9, 9, 13, 17, 17, + 20, 17, 16, 17, 17, 26, 26, 36, 21, 0, 14, 51, 57, 56, 57, 61, + 67, 65, 68, 65, 68, 48, 68, 97, 106, 118, 122, 120, 123, 126, 119, 124, + 123, 124, 123, 123, 120, 119, 115, 114, 111, 108, 107, 102, 106, 95, 77, 52, + 17, 12, 12, 10, 8, 6, 6, 6, 20, 13, 10, 14, 13, 10, 6, 8, + 8, 6, 5, 8, 2, 8, 5, 29, 59, 61, 57, 64, 65, 51, 38, 57, + 21, 67, 118, 197, 216, 210, 210, 210, 216, 190, 165, 134, 127, 106, 87, 71, + 69, 46, 34, 52, 52, 46, 45, 49, 45, 32, 40, 34, 72, 173, 147, 108, + 108, 131, 123, 126, 128, 131, 140, 135, 136, 132, 110, 73, 18, 14, 10, 32, + 26, 34, 59, 57, 49, 53, 56, 53, 55, 57, 56, 57, 56, 59, 60, 61, + 61, 60, 60, 60, 61, 59, 59, 59, 57, 51, 51, 48, 46, 40, 57, 44, + 41, 32, 41, 40, 21, 4, 17, 45, 46, 25, 30, 46, 45, 36, 36, 40, + 30, 25, 59, 106, 46, 37, 45, 44, 28, 29, 36, 26, 20, 2, 65, 88, + 80, 84, 76, 80, 71, 69, 75, 71, 42, 30, 1, 59, 60, 33, 34, 24, + 20, 21, 21, 18, 12, 12, 34, 14, 18, 20, 21, 20, 20, 17, 12, 10, + 18, 16, 18, 20, 17, 17, 21, 32, 41, 41, 41, 21, 22, 14, 73, 57, + 38, 32, 36, 25, 24, 22, 20, 17, 14, 36, 18, 29, 16, 16, 33, 26, + 32, 26, 30, 28, 14, 9, 21, 26, 29, 24, 20, 17, 17, 14, 14, 13, + 9, 13, 17, 17, 8, 9, 12, 12, 9, 10, 10, 9, 10, 10, 8, 10, + 10, 10, 13, 14, 13, 14, 13, 16, 5, 0, 36, 33, 30, 28, 29, 28, + 26, 26, 26, 14, 17, 0, 37, 30, 1, 1, 0, 0, 0, 0, 1, 2, + 0, 0, 5, 9, 8, 12, 2, 102, 96, 89, 84, 80, 83, 79, 88, 67, + 76, 151, 234, 237, 237, 237, 236, 186, 135, 111, 114, 123, 112, 104, 100, 123, + 130, 124, 91, 34, 18, 20, 18, 20, 32, 37, 37, 33, 33, 28, 33, 18, + 24, 56, 77, 120, 165, 138, 116, 115, 110, 97, 37, 34, 36, 45, 48, 40, + 40, 42, 46, 48, 48, 51, 63, 110, 170, 114, 99, 100, 104, 102, 100, 95, + 95, 99, 100, 108, 108, 108, 102, 99, 103, 99, 71, 32, 28, 28, 21, 22, + 25, 22, 25, 28, 28, 29, 25, 25, 26, 24, 45, 49, 52, 55, 59, 60, + 56, 25, 75, 76, 52, 46, 45, 46, 41, 38, 44, 53, 20, 46, 29, 25, + 22, 21, 22, 16, 14, 14, 14, 16, 8, 12, 12, 9, 9, 10, 12, 12, + 12, 14, 16, 16, 32, 13, 24, 45, 48, 53, 45, 56, 64, 87, 69, 80, + 68, 89, 96, 88, 97, 96, 89, 83, 77, 63, 33, 29, 72, 106, 108, 81, + 77, 67, 51, 46, 41, 14, 12, 9, 8, 9, 9, 8, 8, 9, 9, 9, + 9, 12, 13, 13, 14, 14, 17, 20, 21, 22, 26, 29, 45, 46, 59, 45, + 21, 59, 41, 34, 25, 24, 24, 21, 24, 24, 21, 22, 17, 12, 30, 48, + 48, 52, 73, 81, 77, 85, 73, 40, 12, 53, 88, 87, 67, 46, 48, 48, + 34, 32, 12, 9, 1, 9, 9, 21, 16, 17, 17, 26, 24, 28, 28, 36, + 51, 75, 108, 171, 161, 111, 122, 140, 134, 131, 134, 132, 132, 130, 128, 127, + 126, 123, 122, 119, 114, 112, 102, 103, 92, 48, 16, 13, 10, 9, 10, 13, + 13, 16, 24, 14, 21, 42, 55, 59, 61, 64, 57, 56, 40, 36, 13, 10, + 5, 5, 20, 16, 17, 29, 30, 55, 56, 44, 46, 17, 76, 134, 204, 232, + 213, 213, 202, 151, 124, 92, 93, 85, 79, 77, 73, 28, 51, 40, 45, 42, + 34, 29, 33, 30, 32, 49, 55, 73, 181, 177, 114, 95, 112, 120, 131, 135, + 139, 144, 140, 140, 134, 112, 65, 16, 14, 13, 14, 10, 4, 4, 5, 2, + 1, 1, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 9, 9, 10, 10, 10, 13, 14, 18, 21, 25, 36, 13, 40, 51, 48, + 32, 33, 41, 40, 25, 26, 33, 12, 2, 9, 36, 38, 33, 29, 40, 41, + 33, 29, 44, 41, 8, 1, 16, 46, 49, 14, 9, 6, 5, 6, 12, 33, + 21, 17, 29, 21, 33, 30, 36, 40, 40, 37, 29, 13, 45, 53, 60, 56, + 33, 12, 9, 13, 9, 17, 18, 30, 24, 56, 33, 32, 34, 30, 42, 51, + 44, 51, 33, 12, 49, 56, 59, 55, 30, 24, 24, 12, 16, 16, 8, 13, + 22, 20, 12, 16, 13, 13, 12, 10, 13, 8, 5, 5, 12, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 4, + 6, 8, 8, 4, 0, 12, 5, 8, 5, 5, 5, 8, 5, 5, 5, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 1, + 0, 1, 110, 97, 99, 91, 89, 95, 89, 68, 73, 135, 222, 237, 237, 238, + 236, 187, 124, 112, 120, 127, 110, 104, 110, 126, 136, 131, 110, 44, 18, 17, + 16, 17, 26, 30, 29, 30, 32, 33, 48, 52, 68, 64, 57, 71, 111, 169, + 153, 120, 115, 116, 96, 38, 34, 34, 45, 49, 40, 48, 88, 97, 99, 92, + 97, 95, 111, 181, 153, 99, 97, 102, 96, 102, 111, 114, 127, 131, 134, 132, + 138, 135, 131, 103, 96, 36, 28, 26, 21, 20, 20, 22, 21, 20, 21, 28, + 28, 45, 60, 73, 84, 96, 100, 104, 103, 102, 93, 63, 41, 87, 92, 64, + 64, 68, 69, 61, 51, 48, 53, 20, 20, 28, 45, 48, 53, 83, 93, 103, + 72, 59, 55, 102, 100, 110, 88, 96, 83, 102, 87, 80, 87, 80, 32, 20, + 64, 104, 95, 106, 97, 81, 73, 83, 100, 79, 93, 85, 79, 68, 83, 96, + 92, 81, 84, 75, 92, 38, 28, 79, 115, 102, 100, 115, 111, 114, 118, 104, + 96, 48, 24, 85, 100, 93, 97, 96, 100, 106, 99, 97, 96, 91, 87, 85, + 92, 89, 96, 85, 84, 76, 49, 37, 38, 33, 45, 18, 24, 30, 52, 63, + 60, 65, 79, 69, 61, 52, 41, 33, 76, 100, 99, 97, 95, 97, 93, 87, + 83, 73, 41, 13, 68, 89, 89, 83, 84, 83, 83, 80, 59, 40, 33, 2, + 57, 71, 72, 63, 68, 76, 73, 71, 73, 69, 24, 44, 80, 102, 195, 170, + 120, 114, 126, 143, 143, 140, 144, 153, 153, 151, 153, 153, 144, 142, 118, 112, + 102, 118, 104, 88, 28, 16, 12, 12, 14, 14, 16, 24, 24, 25, 13, 34, + 68, 67, 79, 85, 89, 80, 79, 65, 61, 59, 46, 24, 4, 71, 75, 73, + 71, 30, 29, 24, 46, 46, 10, 85, 162, 214, 210, 218, 201, 138, 103, 93, + 85, 76, 77, 73, 80, 33, 28, 41, 49, 61, 64, 72, 57, 60, 59, 63, + 69, 93, 72, 190, 186, 150, 110, 108, 111, 131, 146, 139, 142, 146, 142, 132, + 116, 61, 16, 21, 18, 17, 10, 14, 45, 52, 51, 53, 51, 56, 45, 80, + 72, 42, 48, 92, 79, 96, 102, 97, 106, 104, 93, 108, 108, 103, 96, 77, + 80, 96, 97, 87, 87, 91, 87, 83, 55, 38, 17, 4, 46, 73, 63, 55, + 51, 38, 25, 26, 8, 17, 16, 18, 2, 1, 8, 2, 2, 0, 4, 0, + 1, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 2, 10, 10, 14, 20, 36, 44, 26, 22, 37, 4, 24, 61, 73, 77, 75, + 71, 75, 76, 81, 51, 29, 14, 49, 63, 65, 77, 72, 61, 60, 55, 44, + 42, 40, 52, 37, 51, 59, 48, 51, 55, 64, 63, 71, 68, 32, 10, 61, + 55, 34, 65, 60, 56, 51, 42, 32, 24, 18, 12, 13, 5, 12, 29, 24, + 40, 40, 41, 29, 25, 20, 4, 9, 20, 68, 77, 60, 65, 69, 67, 59, + 61, 40, 44, 55, 63, 67, 79, 76, 71, 26, 5, 1, 0, 5, 0, 0, + 6, 6, 2, 4, 6, 5, 2, 4, 4, 0, 0, 8, 21, 24, 29, 18, + 29, 44, 53, 38, 25, 17, 1, 16, 68, 83, 69, 71, 83, 77, 80, 80, + 87, 85, 87, 72, 83, 126, 216, 230, 238, 236, 234, 177, 122, 114, 122, 130, + 107, 107, 119, 130, 143, 139, 128, 81, 25, 18, 17, 18, 26, 30, 32, 33, + 38, 79, 79, 75, 79, 79, 67, 63, 64, 85, 166, 173, 143, 112, 107, 91, + 36, 32, 32, 44, 46, 36, 83, 107, 114, 114, 110, 96, 85, 97, 193, 177, + 120, 96, 97, 108, 116, 131, 134, 136, 142, 143, 147, 146, 140, 134, 110, 84, + 28, 24, 21, 20, 24, 30, 36, 33, 34, 34, 36, 48, 96, 107, 110, 103, + 100, 102, 95, 88, 81, 65, 60, 22, 85, 85, 71, 65, 63, 71, 72, 77, + 48, 56, 20, 71, 102, 99, 102, 99, 107, 88, 107, 81, 108, 68, 72, 91, + 93, 95, 97, 83, 80, 85, 79, 93, 95, 40, 17, 84, 100, 104, 95, 96, + 96, 97, 84, 83, 89, 83, 57, 77, 91, 100, 97, 85, 93, 96, 89, 93, + 41, 38, 93, 114, 110, 85, 103, 100, 102, 95, 100, 111, 68, 25, 110, 118, + 118, 81, 72, 69, 71, 79, 79, 72, 96, 87, 51, 65, 77, 95, 81, 84, + 80, 85, 87, 72, 42, 49, 14, 44, 85, 91, 91, 87, 92, 84, 84, 83, + 61, 42, 28, 75, 96, 83, 77, 75, 73, 73, 72, 68, 76, 46, 14, 59, + 88, 93, 83, 76, 85, 87, 83, 76, 52, 33, 9, 80, 102, 99, 76, 71, + 60, 77, 72, 65, 69, 32, 42, 79, 97, 187, 202, 150, 110, 120, 140, 142, + 154, 159, 167, 170, 166, 170, 162, 155, 148, 115, 107, 122, 118, 107, 79, 21, + 12, 10, 16, 20, 18, 21, 30, 25, 34, 17, 55, 75, 84, 77, 73, 60, + 67, 61, 71, 73, 76, 60, 29, 4, 65, 71, 84, 77, 72, 65, 68, 48, + 45, 12, 85, 175, 216, 216, 208, 150, 108, 95, 83, 89, 73, 71, 85, 85, + 28, 21, 34, 29, 36, 36, 40, 41, 44, 38, 71, 102, 83, 91, 195, 191, + 178, 110, 106, 115, 136, 148, 144, 154, 151, 142, 132, 114, 48, 18, 10, 16, + 17, 16, 29, 71, 87, 72, 67, 65, 59, 68, 64, 65, 59, 69, 81, 102, + 95, 96, 91, 92, 77, 81, 100, 115, 84, 80, 77, 64, 75, 67, 69, 65, + 69, 64, 67, 69, 65, 20, 4, 44, 79, 71, 69, 55, 56, 56, 55, 38, + 37, 25, 17, 13, 83, 84, 65, 60, 61, 52, 49, 46, 36, 16, 4, 22, + 81, 73, 61, 64, 73, 72, 73, 60, 72, 59, 14, 2, 26, 59, 56, 21, + 25, 30, 33, 38, 26, 5, 45, 92, 84, 80, 64, 63, 49, 55, 40, 46, + 30, 14, 56, 69, 71, 59, 52, 49, 48, 44, 56, 64, 57, 46, 49, 63, + 67, 69, 64, 69, 77, 73, 57, 57, 30, 12, 59, 57, 56, 37, 45, 48, + 51, 55, 53, 41, 18, 18, 12, 49, 56, 49, 55, 41, 33, 12, 28, 30, + 16, 6, 2, 51, 67, 64, 55, 59, 55, 67, 48, 56, 48, 41, 42, 42, + 57, 53, 45, 49, 51, 48, 55, 48, 46, 37, 37, 63, 68, 79, 71, 81, + 79, 71, 69, 55, 63, 60, 65, 42, 45, 46, 56, 60, 30, 45, 32, 44, + 26, 5, 53, 84, 85, 61, 42, 28, 84, 87, 88, 79, 83, 71, 81, 85, + 185, 225, 229, 233, 233, 187, 126, 112, 124, 134, 115, 107, 131, 139, 144, 140, + 138, 115, 49, 18, 17, 20, 26, 36, 32, 28, 33, 77, 88, 87, 79, 76, + 85, 85, 63, 72, 79, 146, 178, 158, 116, 103, 84, 34, 30, 30, 44, 48, + 42, 96, 119, 99, 103, 92, 93, 92, 97, 198, 182, 166, 97, 97, 112, 123, + 135, 142, 148, 144, 148, 147, 150, 144, 128, 110, 55, 28, 22, 18, 30, 33, + 36, 38, 36, 40, 42, 38, 84, 115, 114, 107, 107, 92, 93, 77, 71, 76, + 59, 59, 26, 77, 91, 77, 60, 63, 67, 68, 77, 49, 57, 21, 76, 93, + 100, 95, 111, 80, 89, 93, 69, 81, 61, 87, 103, 99, 87, 87, 79, 81, + 80, 85, 87, 87, 34, 17, 99, 96, 93, 87, 95, 97, 88, 84, 85, 77, + 71, 49, 75, 97, 107, 93, 92, 92, 89, 84, 88, 40, 29, 85, 110, 111, + 103, 100, 85, 100, 87, 100, 93, 92, 29, 96, 89, 126, 115, 115, 114, 110, + 111, 107, 102, 85, 77, 52, 92, 103, 96, 103, 92, 91, 89, 87, 83, 61, + 52, 17, 72, 96, 88, 88, 69, 75, 63, 61, 75, 73, 44, 29, 63, 80, + 87, 79, 80, 76, 75, 76, 81, 71, 46, 16, 63, 73, 92, 80, 68, 79, + 75, 88, 87, 52, 36, 0, 80, 77, 88, 88, 97, 92, 88, 95, 73, 73, + 36, 40, 83, 100, 186, 213, 191, 128, 115, 130, 144, 151, 159, 171, 174, 173, + 171, 174, 166, 153, 116, 116, 130, 120, 110, 77, 18, 12, 13, 20, 22, 33, + 33, 25, 29, 29, 17, 64, 76, 81, 72, 55, 56, 52, 64, 52, 57, 65, + 67, 28, 4, 75, 73, 76, 67, 61, 65, 55, 30, 45, 20, 80, 182, 213, + 220, 190, 111, 92, 87, 89, 75, 72, 92, 91, 75, 28, 20, 24, 45, 33, + 34, 32, 41, 33, 34, 75, 97, 92, 87, 199, 205, 191, 110, 97, 114, 122, + 139, 144, 147, 154, 146, 132, 116, 53, 17, 9, 21, 26, 10, 40, 77, 63, + 67, 64, 63, 59, 68, 63, 51, 48, 64, 95, 108, 97, 85, 83, 76, 81, + 77, 87, 91, 91, 84, 59, 75, 87, 92, 92, 99, 93, 92, 75, 63, 29, + 21, 5, 56, 75, 69, 71, 68, 65, 49, 53, 51, 45, 24, 18, 53, 84, + 68, 65, 65, 61, 71, 64, 52, 55, 18, 2, 64, 81, 55, 46, 60, 65, + 56, 59, 65, 52, 53, 20, 2, 45, 49, 33, 20, 32, 18, 29, 40, 18, + 5, 34, 91, 69, 65, 40, 38, 37, 41, 42, 77, 29, 16, 46, 59, 45, + 69, 80, 61, 51, 56, 40, 45, 42, 26, 57, 68, 81, 81, 79, 91, 71, + 73, 37, 68, 34, 13, 56, 52, 55, 42, 30, 28, 32, 38, 32, 53, 25, + 18, 2, 56, 56, 56, 53, 29, 40, 26, 26, 29, 30, 5, 4, 67, 64, + 29, 40, 34, 42, 52, 59, 60, 48, 59, 16, 51, 41, 55, 45, 44, 44, + 33, 28, 41, 57, 14, 69, 77, 69, 69, 72, 64, 55, 64, 68, 67, 63, + 24, 26, 53, 79, 60, 60, 51, 37, 17, 48, 49, 33, 4, 63, 83, 61, + 55, 25, 10, 75, 75, 76, 97, 67, 83, 81, 127, 222, 225, 230, 234, 209, + 143, 116, 120, 132, 130, 107, 124, 146, 151, 147, 142, 132, 85, 25, 17, 16, + 22, 26, 38, 33, 17, 34, 81, 81, 87, 77, 71, 73, 71, 72, 67, 77, + 116, 183, 173, 122, 106, 79, 34, 30, 30, 44, 49, 42, 77, 114, 100, 102, + 97, 93, 102, 104, 202, 194, 178, 92, 99, 112, 131, 139, 150, 147, 157, 148, + 144, 148, 139, 127, 112, 33, 24, 21, 18, 32, 42, 42, 37, 41, 42, 38, + 53, 103, 112, 114, 106, 89, 87, 83, 80, 72, 69, 65, 55, 25, 76, 81, + 84, 77, 73, 68, 60, 61, 48, 55, 17, 84, 92, 111, 81, 79, 79, 76, + 83, 83, 80, 59, 83, 103, 95, 89, 89, 100, 92, 92, 84, 76, 81, 37, + 20, 77, 100, 84, 102, 85, 69, 91, 84, 80, 80, 71, 48, 76, 89, 107, + 89, 106, 95, 85, 93, 84, 44, 26, 85, 106, 103, 96, 96, 95, 84, 83, + 89, 93, 103, 33, 65, 110, 84, 107, 116, 100, 112, 106, 96, 107, 91, 67, + 51, 95, 100, 85, 75, 73, 65, 83, 88, 81, 75, 52, 22, 84, 88, 89, + 92, 68, 59, 60, 67, 71, 60, 40, 16, 72, 85, 75, 85, 81, 76, 83, + 80, 77, 60, 48, 22, 56, 77, 88, 84, 84, 65, 80, 75, 81, 48, 32, + 0, 80, 87, 83, 84, 92, 77, 103, 100, 104, 85, 41, 41, 81, 100, 183, + 205, 189, 130, 114, 127, 140, 144, 155, 171, 177, 178, 178, 170, 166, 148, 118, + 128, 132, 124, 116, 63, 17, 12, 16, 24, 33, 29, 25, 25, 30, 36, 20, + 68, 83, 80, 56, 64, 71, 67, 60, 56, 59, 61, 51, 28, 4, 75, 57, + 80, 72, 73, 65, 51, 32, 42, 14, 85, 178, 209, 216, 167, 102, 92, 83, + 85, 76, 77, 100, 93, 77, 26, 17, 16, 25, 36, 38, 29, 34, 32, 22, + 71, 97, 76, 93, 199, 193, 197, 108, 97, 104, 115, 130, 138, 153, 158, 150, + 134, 110, 49, 20, 8, 13, 26, 12, 40, 77, 80, 61, 53, 45, 48, 41, + 48, 44, 41, 14, 89, 104, 92, 80, 76, 76, 87, 91, 92, 79, 96, 83, + 57, 79, 89, 100, 91, 81, 71, 60, 76, 69, 67, 24, 6, 52, 55, 75, + 55, 49, 44, 44, 46, 56, 71, 26, 16, 68, 84, 46, 56, 41, 63, 68, + 72, 59, 55, 21, 2, 72, 80, 59, 49, 64, 77, 75, 72, 73, 59, 61, + 20, 2, 51, 41, 18, 20, 37, 20, 20, 28, 22, 4, 37, 75, 72, 40, + 57, 60, 38, 41, 46, 42, 45, 12, 40, 61, 48, 69, 51, 36, 44, 36, + 51, 49, 42, 30, 72, 60, 56, 49, 60, 71, 81, 60, 60, 52, 33, 14, + 52, 51, 67, 52, 37, 40, 36, 40, 40, 51, 44, 17, 22, 41, 65, 56, + 37, 34, 52, 26, 37, 22, 20, 5, 6, 28, 63, 59, 33, 33, 30, 29, + 20, 30, 25, 18, 13, 59, 49, 57, 36, 32, 29, 25, 26, 29, 57, 18, + 71, 73, 69, 52, 55, 42, 44, 49, 44, 42, 30, 25, 26, 55, 48, 42, + 37, 26, 16, 29, 30, 38, 40, 2, 25, 85, 55, 56, 13, 0, 110, 104, + 102, 76, 73, 83, 93, 178, 221, 234, 228, 220, 158, 126, 116, 131, 135, 120, + 112, 144, 155, 155, 147, 140, 120, 55, 18, 14, 18, 24, 32, 38, 33, 18, + 71, 91, 84, 77, 71, 76, 80, 69, 65, 65, 69, 111, 189, 181, 154, 104, + 75, 34, 28, 28, 40, 49, 42, 64, 118, 102, 97, 100, 92, 89, 95, 209, + 199, 178, 93, 103, 114, 126, 140, 148, 150, 150, 147, 148, 148, 136, 118, 112, + 30, 20, 18, 32, 38, 44, 42, 46, 41, 42, 37, 52, 106, 107, 110, 89, + 83, 84, 83, 77, 73, 68, 60, 67, 37, 83, 79, 68, 71, 69, 80, 57, + 71, 46, 55, 16, 77, 87, 92, 68, 84, 69, 89, 61, 80, 75, 51, 83, + 103, 89, 93, 91, 92, 99, 88, 88, 93, 75, 36, 18, 81, 93, 88, 102, + 93, 95, 85, 91, 76, 84, 69, 49, 75, 89, 92, 92, 107, 91, 79, 89, + 77, 49, 25, 87, 111, 111, 106, 93, 91, 89, 88, 87, 89, 103, 44, 37, + 108, 116, 119, 112, 108, 106, 104, 104, 115, 97, 75, 51, 89, 104, 83, 81, + 95, 73, 73, 73, 84, 65, 53, 20, 76, 104, 77, 83, 65, 60, 75, 60, + 64, 64, 41, 17, 60, 76, 77, 95, 76, 73, 72, 67, 64, 68, 51, 24, + 57, 85, 88, 89, 71, 75, 73, 79, 77, 49, 36, 4, 87, 76, 75, 93, + 95, 77, 91, 103, 107, 80, 34, 46, 83, 88, 148, 213, 195, 134, 110, 122, + 140, 144, 155, 167, 166, 169, 173, 174, 165, 130, 114, 131, 136, 126, 116, 44, + 14, 10, 20, 25, 33, 26, 25, 29, 32, 29, 25, 68, 81, 67, 65, 57, + 61, 53, 61, 65, 53, 60, 51, 26, 4, 55, 80, 73, 69, 65, 65, 44, + 33, 44, 16, 92, 193, 208, 208, 138, 103, 85, 91, 77, 71, 91, 93, 96, + 77, 25, 17, 21, 20, 38, 42, 38, 33, 36, 26, 63, 97, 92, 97, 201, + 205, 201, 106, 93, 102, 119, 123, 131, 151, 157, 151, 135, 106, 51, 21, 12, + 17, 17, 13, 33, 69, 68, 60, 46, 63, 56, 56, 56, 45, 38, 46, 102, + 106, 96, 81, 93, 83, 89, 89, 77, 75, 91, 75, 60, 80, 95, 92, 80, + 73, 69, 69, 75, 69, 64, 22, 6, 51, 72, 64, 45, 48, 48, 51, 42, + 56, 49, 25, 16, 36, 79, 44, 53, 57, 68, 57, 73, 63, 45, 22, 4, + 34, 80, 49, 60, 49, 60, 55, 53, 51, 48, 56, 17, 5, 44, 32, 24, + 25, 38, 18, 20, 21, 17, 5, 38, 79, 68, 52, 68, 79, 63, 41, 44, + 52, 29, 13, 36, 72, 48, 65, 51, 30, 41, 61, 45, 56, 41, 24, 75, + 67, 64, 61, 79, 75, 60, 32, 59, 55, 33, 14, 52, 46, 67, 73, 63, + 56, 51, 55, 44, 38, 24, 20, 22, 49, 67, 42, 41, 28, 42, 30, 49, + 20, 17, 4, 5, 28, 68, 60, 36, 26, 26, 26, 29, 29, 24, 20, 14, + 56, 30, 49, 46, 37, 32, 21, 24, 38, 33, 8, 52, 72, 63, 46, 40, + 34, 37, 42, 28, 49, 32, 17, 26, 59, 51, 57, 41, 37, 9, 33, 33, + 36, 24, 4, 26, 67, 55, 24, 1, 0, 108, 83, 92, 67, 81, 84, 127, + 210, 222, 225, 225, 181, 120, 120, 128, 135, 131, 108, 126, 151, 158, 154, 146, + 135, 99, 28, 16, 14, 20, 28, 29, 37, 34, 18, 80, 87, 81, 75, 75, + 79, 83, 73, 68, 71, 68, 93, 187, 183, 162, 104, 76, 30, 26, 29, 41, + 48, 44, 55, 112, 103, 99, 100, 95, 97, 91, 210, 199, 169, 99, 99, 111, + 124, 136, 136, 148, 146, 148, 148, 144, 131, 115, 114, 29, 18, 17, 32, 45, + 38, 40, 46, 49, 45, 40, 51, 107, 112, 107, 84, 77, 84, 71, 75, 80, + 68, 61, 63, 26, 80, 75, 85, 91, 85, 84, 57, 64, 45, 56, 20, 75, + 89, 106, 81, 79, 76, 65, 71, 76, 77, 52, 88, 97, 84, 92, 92, 99, + 83, 80, 83, 84, 75, 41, 17, 73, 89, 81, 102, 104, 100, 88, 85, 77, + 79, 68, 45, 76, 83, 85, 87, 102, 107, 103, 102, 77, 41, 26, 77, 108, + 108, 103, 91, 87, 85, 97, 83, 91, 99, 75, 37, 96, 112, 106, 102, 88, + 100, 108, 114, 92, 87, 67, 52, 91, 104, 73, 79, 83, 76, 76, 93, 83, + 60, 55, 22, 69, 85, 88, 81, 68, 57, 55, 73, 72, 59, 41, 22, 75, + 80, 81, 103, 85, 80, 65, 76, 83, 72, 64, 25, 59, 88, 73, 69, 72, + 65, 60, 68, 80, 51, 36, 4, 75, 77, 72, 79, 80, 83, 65, 88, 81, + 61, 48, 45, 68, 99, 136, 212, 212, 154, 107, 111, 138, 144, 157, 167, 173, + 178, 173, 165, 161, 123, 127, 139, 134, 127, 115, 25, 13, 10, 21, 30, 29, + 25, 29, 34, 34, 33, 25, 68, 79, 75, 68, 72, 53, 71, 60, 65, 53, + 59, 56, 28, 4, 71, 55, 68, 97, 65, 64, 60, 34, 41, 13, 84, 181, + 205, 205, 126, 89, 81, 81, 72, 77, 95, 95, 97, 91, 22, 17, 12, 17, + 36, 44, 36, 29, 36, 29, 71, 106, 81, 104, 205, 206, 201, 106, 100, 106, + 108, 123, 135, 147, 158, 153, 138, 119, 46, 20, 17, 14, 18, 16, 33, 65, + 64, 55, 42, 67, 36, 52, 69, 41, 42, 48, 103, 97, 83, 69, 84, 87, + 96, 75, 68, 75, 91, 67, 57, 75, 100, 83, 71, 73, 59, 65, 56, 77, + 79, 24, 6, 49, 64, 72, 41, 46, 51, 38, 45, 40, 46, 25, 14, 53, + 75, 34, 49, 53, 56, 73, 75, 51, 53, 22, 4, 32, 76, 49, 46, 46, + 48, 44, 45, 69, 53, 53, 18, 4, 56, 34, 21, 26, 38, 20, 17, 17, + 13, 5, 55, 81, 64, 73, 83, 85, 69, 51, 49, 49, 29, 16, 34, 76, + 57, 60, 51, 29, 32, 42, 34, 53, 46, 17, 79, 59, 64, 53, 67, 56, + 37, 32, 65, 46, 32, 16, 52, 46, 64, 40, 45, 49, 46, 49, 48, 36, + 25, 18, 6, 40, 67, 60, 26, 24, 41, 25, 38, 41, 32, 5, 4, 22, + 67, 56, 26, 32, 18, 24, 22, 25, 17, 17, 10, 51, 63, 36, 34, 32, + 44, 30, 22, 33, 41, 14, 53, 60, 55, 41, 22, 22, 34, 52, 37, 37, + 18, 22, 34, 53, 63, 32, 18, 24, 18, 33, 18, 42, 25, 6, 34, 57, + 41, 29, 0, 0, 127, 92, 73, 65, 83, 88, 174, 214, 226, 220, 208, 154, + 115, 116, 134, 138, 131, 114, 142, 158, 158, 153, 146, 132, 76, 20, 13, 14, + 24, 29, 36, 34, 34, 21, 87, 85, 84, 71, 80, 85, 77, 69, 72, 76, + 71, 99, 185, 186, 170, 108, 77, 34, 26, 29, 45, 51, 45, 42, 108, 107, + 97, 107, 97, 99, 96, 212, 194, 178, 103, 102, 112, 124, 132, 136, 144, 148, + 148, 148, 135, 130, 112, 111, 30, 17, 16, 33, 48, 46, 42, 40, 48, 45, + 37, 64, 102, 115, 92, 91, 80, 83, 81, 81, 75, 76, 59, 59, 26, 85, + 76, 71, 72, 75, 80, 56, 63, 46, 52, 18, 75, 88, 95, 71, 76, 71, + 76, 64, 63, 73, 53, 81, 95, 99, 93, 97, 81, 84, 87, 85, 83, 72, + 37, 16, 69, 89, 80, 77, 92, 92, 84, 85, 80, 77, 64, 38, 71, 88, + 99, 89, 103, 89, 87, 77, 87, 37, 28, 68, 108, 103, 97, 88, 91, 93, + 85, 83, 89, 95, 69, 30, 72, 110, 115, 91, 102, 107, 104, 92, 96, 81, + 61, 59, 91, 100, 71, 77, 87, 76, 75, 63, 75, 76, 55, 25, 73, 85, + 84, 88, 80, 59, 59, 56, 68, 67, 42, 26, 72, 88, 71, 76, 84, 68, + 79, 81, 80, 72, 56, 26, 59, 73, 83, 68, 67, 64, 73, 72, 69, 53, + 37, 0, 93, 81, 69, 57, 83, 77, 89, 85, 80, 71, 42, 37, 67, 99, + 87, 213, 217, 181, 110, 110, 132, 143, 154, 165, 170, 170, 169, 171, 150, 124, + 132, 143, 135, 127, 115, 21, 13, 12, 20, 33, 30, 29, 36, 41, 34, 30, + 25, 57, 79, 72, 76, 53, 68, 61, 60, 67, 52, 56, 56, 28, 4, 67, + 65, 69, 67, 93, 81, 68, 34, 41, 12, 75, 170, 195, 228, 142, 92, 75, + 83, 71, 89, 96, 96, 102, 76, 22, 17, 10, 22, 30, 40, 38, 29, 33, + 25, 75, 92, 88, 115, 210, 213, 199, 97, 92, 103, 115, 122, 138, 146, 159, + 154, 139, 130, 48, 25, 8, 17, 22, 17, 28, 67, 63, 56, 61, 52, 48, + 52, 44, 53, 33, 40, 92, 95, 92, 83, 88, 69, 65, 79, 72, 83, 85, + 56, 60, 81, 97, 79, 65, 69, 65, 61, 77, 68, 61, 25, 9, 51, 61, + 61, 36, 57, 37, 48, 44, 46, 38, 26, 14, 55, 83, 36, 44, 59, 59, + 63, 65, 44, 55, 24, 4, 34, 75, 55, 57, 55, 48, 55, 73, 42, 46, + 49, 17, 4, 42, 29, 24, 30, 36, 32, 16, 13, 9, 6, 46, 76, 53, + 75, 73, 72, 67, 79, 73, 51, 25, 13, 44, 69, 37, 65, 44, 32, 36, + 44, 45, 56, 42, 18, 69, 68, 77, 55, 57, 52, 44, 29, 28, 42, 29, + 14, 33, 42, 61, 55, 52, 51, 41, 51, 46, 49, 22, 18, 4, 40, 76, + 56, 46, 22, 38, 32, 36, 20, 24, 4, 4, 22, 64, 59, 38, 40, 24, + 22, 22, 21, 22, 34, 10, 40, 44, 17, 26, 25, 20, 28, 26, 28, 41, + 24, 60, 71, 68, 53, 16, 44, 38, 42, 32, 40, 28, 20, 38, 46, 26, + 51, 24, 12, 22, 21, 21, 16, 9, 4, 34, 52, 46, 18, 0, 0, 77, + 104, 73, 76, 84, 114, 199, 221, 214, 217, 170, 128, 115, 131, 135, 138, 120, + 126, 155, 159, 157, 151, 142, 124, 40, 16, 12, 17, 24, 34, 37, 42, 36, + 20, 95, 84, 79, 73, 87, 77, 75, 72, 73, 69, 65, 120, 183, 182, 178, + 106, 73, 33, 28, 29, 44, 48, 44, 40, 107, 106, 102, 108, 103, 96, 93, + 217, 191, 189, 104, 100, 111, 120, 131, 138, 142, 144, 148, 143, 135, 128, 111, + 110, 26, 16, 16, 33, 53, 44, 46, 44, 55, 46, 37, 67, 107, 114, 91, + 83, 88, 91, 81, 81, 84, 72, 57, 57, 26, 77, 81, 75, 73, 59, 63, + 67, 60, 48, 51, 17, 73, 93, 104, 77, 79, 81, 60, 77, 67, 73, 49, + 87, 97, 95, 85, 84, 92, 91, 91, 88, 83, 46, 44, 18, 65, 81, 85, + 81, 83, 85, 80, 79, 84, 76, 68, 34, 83, 87, 95, 92, 95, 96, 91, + 97, 85, 37, 28, 64, 95, 102, 93, 77, 95, 95, 77, 87, 87, 83, 76, + 38, 71, 107, 116, 110, 88, 96, 80, 92, 88, 79, 42, 68, 83, 99, 81, + 83, 67, 61, 67, 59, 65, 76, 55, 29, 49, 75, 93, 65, 56, 65, 71, + 61, 65, 51, 42, 10, 67, 80, 76, 69, 71, 60, 72, 80, 72, 67, 57, + 32, 36, 67, 79, 83, 85, 83, 81, 84, 69, 46, 33, 0, 79, 72, 68, + 69, 72, 88, 87, 84, 59, 87, 48, 51, 42, 96, 80, 218, 221, 213, 111, + 108, 131, 147, 150, 154, 170, 171, 170, 170, 140, 128, 147, 146, 135, 126, 115, + 22, 13, 9, 24, 38, 29, 32, 36, 45, 38, 36, 28, 48, 76, 71, 69, + 68, 71, 71, 65, 63, 60, 56, 60, 26, 5, 63, 57, 53, 67, 103, 71, + 63, 34, 37, 8, 57, 114, 182, 228, 147, 88, 84, 87, 88, 96, 92, 99, + 92, 48, 21, 18, 12, 21, 32, 40, 38, 36, 29, 17, 68, 89, 83, 108, + 210, 204, 202, 102, 95, 106, 119, 128, 138, 146, 158, 155, 148, 135, 49, 24, + 6, 12, 20, 14, 17, 59, 56, 63, 57, 55, 57, 51, 44, 49, 33, 9, + 93, 96, 76, 65, 71, 76, 79, 79, 80, 85, 88, 56, 63, 88, 77, 61, + 84, 61, 57, 63, 64, 68, 60, 28, 9, 41, 65, 69, 42, 40, 44, 42, + 41, 53, 55, 29, 12, 68, 75, 42, 52, 59, 56, 57, 59, 42, 41, 29, + 2, 37, 64, 55, 52, 49, 72, 72, 48, 41, 40, 53, 16, 4, 57, 33, + 21, 18, 17, 34, 13, 13, 9, 6, 38, 71, 64, 67, 65, 81, 63, 59, + 55, 46, 33, 12, 41, 71, 59, 59, 34, 32, 42, 44, 37, 61, 44, 21, + 67, 59, 79, 45, 45, 72, 38, 28, 36, 25, 33, 14, 24, 49, 37, 51, + 75, 63, 46, 45, 55, 45, 25, 17, 28, 40, 76, 44, 28, 33, 36, 22, + 10, 10, 9, 5, 5, 17, 37, 53, 34, 29, 33, 29, 25, 22, 24, 12, + 9, 25, 24, 22, 21, 25, 21, 33, 26, 30, 14, 17, 65, 68, 65, 60, + 24, 45, 26, 25, 48, 20, 28, 22, 44, 29, 17, 18, 10, 21, 5, 6, + 2, 16, 5, 5, 20, 51, 10, 12, 2, 0, 104, 79, 64, 83, 88, 138, + 198, 218, 212, 204, 135, 131, 127, 132, 138, 138, 114, 144, 162, 161, 158, 150, + 140, 116, 32, 16, 13, 18, 24, 30, 26, 37, 36, 18, 88, 80, 80, 81, + 73, 73, 72, 68, 69, 77, 65, 130, 183, 183, 166, 102, 68, 33, 26, 28, + 46, 55, 49, 46, 95, 116, 95, 102, 102, 92, 89, 220, 193, 198, 104, 100, + 111, 122, 130, 140, 144, 146, 146, 131, 132, 130, 115, 115, 25, 14, 13, 36, + 49, 40, 45, 41, 60, 46, 36, 68, 100, 100, 87, 56, 57, 75, 79, 61, + 61, 65, 63, 67, 40, 89, 80, 75, 60, 65, 57, 65, 56, 45, 48, 14, + 73, 81, 95, 67, 77, 80, 72, 79, 79, 69, 40, 81, 97, 106, 102, 102, + 95, 83, 73, 81, 59, 46, 41, 18, 52, 71, 75, 55, 65, 84, 75, 59, + 65, 73, 60, 36, 69, 80, 95, 97, 80, 71, 68, 67, 53, 45, 25, 59, + 103, 106, 100, 96, 87, 85, 84, 87, 80, 84, 83, 42, 56, 102, 112, 104, + 81, 103, 97, 88, 83, 75, 42, 56, 81, 99, 83, 77, 64, 65, 55, 60, + 61, 64, 56, 26, 48, 56, 55, 55, 55, 53, 57, 57, 64, 64, 41, 12, + 64, 80, 81, 71, 71, 68, 61, 68, 59, 59, 56, 34, 42, 60, 84, 83, + 92, 81, 73, 79, 46, 48, 38, 2, 80, 73, 65, 69, 56, 75, 79, 81, + 69, 77, 34, 46, 33, 89, 85, 221, 226, 214, 111, 106, 131, 146, 150, 153, + 163, 170, 167, 158, 128, 140, 146, 146, 139, 132, 118, 18, 13, 10, 21, 33, + 30, 32, 33, 41, 45, 37, 32, 37, 73, 77, 77, 63, 67, 69, 63, 63, + 59, 52, 48, 26, 6, 55, 59, 69, 67, 61, 57, 51, 45, 40, 8, 41, + 83, 139, 136, 95, 85, 73, 63, 79, 77, 83, 79, 45, 22, 20, 17, 14, + 17, 33, 37, 37, 34, 32, 18, 73, 88, 73, 69, 204, 216, 213, 104, 93, + 106, 120, 130, 139, 147, 161, 155, 135, 124, 46, 24, 9, 12, 20, 16, 16, + 42, 59, 55, 57, 55, 56, 53, 45, 53, 30, 29, 96, 91, 67, 73, 89, + 91, 85, 89, 87, 89, 83, 55, 69, 97, 75, 76, 77, 63, 65, 75, 67, + 64, 55, 28, 8, 48, 61, 65, 41, 36, 38, 34, 52, 57, 48, 28, 13, + 44, 71, 40, 33, 37, 38, 40, 38, 42, 49, 32, 5, 37, 36, 76, 69, + 72, 75, 76, 41, 49, 45, 49, 20, 6, 42, 22, 20, 14, 22, 20, 30, + 16, 12, 5, 33, 68, 63, 64, 81, 53, 57, 51, 42, 46, 28, 14, 41, + 68, 44, 38, 42, 67, 46, 63, 53, 48, 38, 20, 59, 57, 56, 57, 59, + 52, 49, 44, 30, 42, 37, 18, 21, 36, 48, 40, 28, 24, 24, 34, 29, + 26, 24, 18, 29, 60, 76, 46, 20, 4, 4, 14, 13, 2, 4, 9, 6, + 9, 24, 29, 26, 18, 20, 16, 16, 17, 21, 18, 17, 25, 25, 38, 25, + 29, 18, 18, 21, 24, 17, 22, 37, 60, 71, 45, 25, 21, 20, 22, 17, + 13, 14, 18, 20, 18, 18, 20, 18, 10, 32, 28, 33, 26, 13, 24, 26, + 34, 34, 28, 16, 10, 77, 79, 57, 80, 91, 147, 201, 212, 213, 151, 134, + 122, 132, 136, 142, 135, 119, 154, 165, 162, 157, 148, 136, 103, 25, 14, 12, + 17, 22, 34, 36, 44, 34, 22, 89, 79, 73, 80, 72, 69, 67, 68, 71, + 67, 69, 140, 178, 178, 163, 104, 65, 33, 28, 29, 46, 52, 49, 41, 83, + 114, 107, 91, 102, 93, 88, 220, 199, 206, 106, 103, 111, 124, 138, 136, 140, + 139, 132, 124, 130, 127, 116, 116, 22, 14, 12, 36, 44, 45, 40, 41, 38, + 56, 56, 61, 71, 73, 67, 63, 67, 61, 63, 65, 85, 76, 64, 57, 28, + 73, 80, 60, 53, 57, 56, 53, 51, 56, 53, 21, 73, 91, 87, 67, 64, + 63, 57, 67, 65, 64, 45, 63, 80, 96, 63, 68, 59, 57, 51, 44, 36, + 32, 45, 40, 44, 45, 44, 55, 40, 42, 41, 41, 42, 40, 34, 30, 51, + 51, 53, 46, 40, 40, 44, 42, 36, 36, 49, 51, 83, 93, 87, 72, 81, + 85, 88, 75, 75, 88, 81, 72, 52, 60, 100, 91, 69, 80, 80, 81, 80, + 68, 46, 52, 75, 76, 61, 60, 61, 68, 68, 59, 56, 57, 53, 52, 45, + 53, 53, 53, 45, 51, 44, 61, 53, 59, 42, 21, 69, 64, 65, 63, 61, + 60, 60, 60, 56, 56, 46, 53, 29, 33, 36, 40, 37, 40, 38, 38, 38, + 44, 37, 2, 28, 77, 72, 34, 49, 65, 69, 61, 56, 69, 61, 51, 38, + 60, 64, 212, 228, 217, 106, 103, 126, 140, 144, 144, 150, 162, 163, 158, 135, + 151, 151, 150, 142, 132, 118, 17, 12, 12, 18, 29, 33, 38, 37, 34, 36, + 40, 38, 30, 36, 53, 63, 57, 57, 55, 57, 59, 59, 52, 53, 28, 6, + 51, 63, 64, 49, 52, 42, 41, 41, 40, 16, 28, 41, 64, 83, 59, 29, + 20, 16, 14, 16, 16, 16, 16, 18, 17, 10, 10, 14, 34, 34, 36, 26, + 32, 20, 67, 75, 91, 69, 185, 214, 210, 102, 95, 110, 123, 134, 139, 148, + 161, 155, 136, 123, 42, 26, 25, 10, 20, 18, 16, 20, 36, 42, 41, 52, + 44, 53, 45, 42, 37, 38, 93, 83, 87, 84, 79, 80, 75, 76, 81, 77, + 63, 53, 57, 79, 87, 85, 77, 81, 75, 67, 42, 38, 37, 26, 9, 38, + 48, 55, 64, 75, 53, 63, 52, 40, 25, 30, 12, 42, 64, 63, 55, 53, + 51, 49, 42, 45, 40, 33, 5, 28, 21, 22, 28, 38, 41, 25, 28, 41, + 21, 25, 18, 6, 44, 22, 28, 26, 26, 20, 18, 18, 10, 10, 33, 29, + 24, 29, 20, 38, 46, 52, 46, 38, 25, 17, 21, 48, 38, 48, 34, 41, + 40, 45, 38, 33, 40, 12, 42, 55, 53, 34, 38, 42, 42, 33, 33, 36, + 32, 25, 30, 30, 28, 22, 24, 24, 22, 29, 22, 21, 20, 17, 2, 55, + 1, 22, 1, 20, 2, 4, 17, 16, 4, 5, 10, 10, 9, 8, 9, 9, + 9, 9, 12, 12, 10, 13, 10, 14, 18, 13, 20, 14, 13, 12, 14, 16, + 17, 14, 28, 41, 22, 37, 17, 21, 60, 65, 60, 29, 51, 48, 18, 17, + 12, 14, 18, 16, 17, 13, 9, 8, 12, 16, 37, 16, 14, 53, 57, 68, + 52, 53, 56, 83, 88, 165, 213, 157, 151, 144, 112, 142, 131, 138, 139, 131, + 131, 161, 165, 161, 155, 147, 132, 87, 20, 14, 13, 20, 26, 36, 36, 37, + 34, 13, 84, 79, 69, 69, 55, 61, 67, 60, 72, 69, 68, 154, 182, 177, + 163, 97, 61, 33, 29, 30, 48, 51, 56, 52, 59, 85, 106, 99, 97, 91, + 87, 218, 212, 214, 107, 102, 108, 123, 124, 124, 127, 126, 131, 134, 132, 131, + 122, 119, 21, 13, 13, 32, 36, 38, 44, 45, 41, 46, 44, 46, 55, 52, + 48, 53, 53, 53, 56, 55, 56, 57, 57, 56, 53, 59, 56, 55, 53, 53, + 55, 55, 51, 51, 45, 22, 67, 91, 60, 53, 49, 49, 52, 49, 48, 49, + 41, 48, 49, 46, 46, 44, 41, 40, 41, 38, 37, 33, 28, 18, 18, 17, + 18, 17, 14, 14, 14, 12, 13, 10, 10, 12, 10, 16, 17, 17, 13, 14, + 21, 32, 28, 30, 28, 41, 61, 60, 71, 80, 69, 65, 71, 73, 72, 71, + 72, 61, 56, 64, 57, 53, 46, 38, 38, 38, 45, 40, 32, 38, 41, 49, + 42, 42, 61, 60, 59, 42, 42, 36, 32, 38, 48, 53, 53, 53, 40, 32, + 34, 44, 48, 46, 41, 18, 34, 37, 32, 38, 37, 38, 37, 40, 40, 40, + 42, 44, 42, 48, 32, 33, 28, 18, 14, 13, 17, 20, 16, 0, 13, 14, + 21, 18, 21, 25, 29, 30, 38, 46, 65, 53, 51, 51, 76, 210, 229, 218, + 106, 100, 107, 118, 134, 143, 153, 150, 155, 151, 136, 153, 151, 148, 140, 128, + 116, 16, 12, 9, 14, 17, 25, 24, 28, 32, 33, 34, 30, 32, 41, 42, + 44, 41, 44, 44, 45, 44, 48, 49, 44, 26, 6, 56, 60, 41, 30, 32, + 28, 22, 33, 33, 17, 14, 16, 25, 20, 17, 16, 14, 13, 13, 17, 18, + 13, 14, 14, 16, 17, 18, 18, 18, 20, 20, 21, 29, 18, 29, 34, 41, + 73, 171, 217, 208, 103, 99, 110, 119, 132, 142, 150, 163, 154, 135, 120, 41, + 29, 8, 14, 14, 17, 16, 20, 20, 20, 18, 18, 18, 21, 20, 18, 30, + 25, 33, 67, 67, 53, 53, 60, 63, 53, 52, 53, 51, 45, 48, 46, 48, + 49, 57, 42, 44, 34, 32, 24, 36, 26, 29, 29, 29, 14, 29, 34, 22, + 30, 22, 21, 37, 28, 29, 28, 32, 29, 26, 25, 22, 22, 21, 36, 28, + 26, 2, 6, 6, 10, 10, 9, 10, 13, 10, 12, 18, 29, 18, 10, 18, + 17, 12, 16, 18, 14, 14, 34, 17, 22, 17, 21, 26, 22, 20, 18, 20, + 25, 22, 21, 21, 24, 21, 22, 22, 24, 22, 24, 22, 25, 24, 24, 20, + 13, 16, 25, 17, 17, 16, 25, 16, 17, 17, 20, 21, 16, 14, 17, 16, + 16, 16, 14, 14, 14, 14, 13, 12, 12, 1, 32, 32, 32, 29, 45, 41, + 41, 41, 46, 48, 49, 49, 59, 63, 67, 71, 81, 107, 127, 148, 162, 170, + 226, 224, 221, 208, 202, 202, 198, 202, 187, 185, 175, 158, 73, 26, 21, 17, + 18, 14, 68, 60, 153, 183, 162, 159, 158, 97, 80, 81, 59, 48, 46, 55, + 85, 110, 143, 161, 153, 115, 75, 42, 13, 8, 6, 87, 80, 83, 99, 107, + 179, 120, 139, 111, 112, 111, 128, 127, 138, 144, 138, 138, 165, 167, 158, 151, + 139, 126, 45, 17, 12, 14, 24, 28, 20, 32, 32, 28, 18, 40, 48, 45, + 46, 46, 46, 48, 49, 73, 63, 51, 136, 174, 175, 162, 97, 55, 32, 28, + 33, 46, 48, 49, 51, 55, 60, 57, 61, 64, 96, 72, 222, 217, 217, 106, + 99, 107, 122, 116, 116, 115, 118, 120, 132, 131, 134, 122, 116, 18, 10, 10, + 20, 18, 21, 22, 22, 18, 21, 26, 29, 34, 44, 44, 46, 49, 49, 48, + 53, 57, 60, 64, 57, 52, 64, 71, 60, 72, 79, 89, 123, 107, 52, 49, + 57, 51, 46, 45, 44, 42, 52, 44, 42, 33, 29, 30, 32, 26, 37, 34, + 36, 34, 40, 30, 36, 32, 61, 81, 108, 110, 106, 115, 102, 107, 97, 111, + 108, 93, 73, 77, 75, 80, 95, 95, 81, 72, 57, 41, 30, 26, 20, 16, + 14, 13, 12, 10, 10, 12, 13, 10, 12, 14, 14, 13, 13, 18, 24, 72, + 77, 83, 88, 93, 89, 61, 61, 40, 96, 95, 107, 81, 41, 38, 55, 33, + 34, 72, 79, 96, 84, 89, 97, 103, 99, 87, 67, 53, 44, 29, 30, 40, + 20, 10, 9, 9, 10, 8, 8, 9, 9, 6, 8, 8, 8, 8, 12, 29, + 34, 57, 72, 67, 68, 59, 33, 29, 0, 57, 91, 79, 60, 81, 60, 67, + 68, 49, 38, 37, 41, 42, 46, 65, 199, 216, 206, 95, 91, 102, 103, 97, + 111, 128, 143, 150, 155, 132, 147, 154, 150, 138, 131, 115, 14, 10, 9, 8, + 8, 8, 8, 8, 8, 8, 13, 12, 8, 9, 10, 21, 22, 25, 12, 13, + 13, 22, 14, 30, 10, 6, 61, 24, 18, 18, 20, 17, 21, 14, 13, 13, + 13, 16, 14, 12, 17, 16, 9, 9, 10, 10, 10, 12, 10, 10, 10, 10, + 12, 13, 18, 26, 30, 33, 30, 13, 61, 80, 79, 71, 171, 204, 193, 106, + 99, 111, 123, 131, 139, 153, 162, 155, 134, 104, 37, 32, 6, 12, 9, 12, + 4, 4, 4, 2, 2, 4, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 4, 4, 4, 5, 6, 6, 8, 8, 10, 10, 13, 13, 13, 17, 18, 18, + 24, 48, 53, 45, 38, 44, 30, 28, 26, 25, 22, 24, 29, 36, 60, 67, + 77, 69, 64, 60, 57, 63, 67, 57, 46, 26, 29, 34, 14, 32, 75, 83, + 59, 51, 57, 32, 22, 16, 17, 13, 14, 12, 18, 29, 25, 21, 25, 26, + 21, 17, 24, 28, 30, 38, 33, 34, 30, 33, 28, 24, 17, 14, 12, 12, + 9, 10, 9, 10, 9, 10, 10, 10, 9, 10, 10, 38, 10, 8, 8, 8, + 6, 5, 5, 5, 4, 4, 2, 2, 2, 2, 1, 1, 0, 18, 1, 0, + 0, 1, 0, 2, 40, 37, 56, 60, 84, 107, 144, 148, 163, 171, 165, 151, + 140, 132, 119, 120, 130, 116, 110, 118, 123, 139, 153, 163, 175, 185, 182, 179, + 177, 178, 174, 173, 166, 159, 146, 147, 138, 20, 14, 12, 67, 33, 130, 189, + 195, 197, 194, 193, 198, 190, 187, 195, 199, 189, 195, 195, 204, 201, 189, 197, + 194, 136, 55, 48, 12, 9, 112, 114, 122, 116, 165, 159, 161, 157, 127, 146, + 103, 103, 108, 111, 111, 130, 138, 163, 163, 161, 147, 136, 122, 42, 16, 13, + 22, 26, 38, 37, 45, 32, 38, 40, 42, 55, 59, 61, 68, 73, 79, 71, + 59, 76, 56, 128, 171, 174, 123, 95, 52, 32, 28, 42, 48, 46, 42, 45, + 53, 59, 63, 69, 84, 88, 88, 220, 218, 218, 106, 99, 107, 115, 112, 122, + 128, 131, 131, 130, 132, 139, 124, 123, 22, 13, 10, 21, 32, 42, 42, 49, + 64, 153, 162, 177, 183, 183, 178, 189, 197, 202, 197, 197, 193, 190, 194, 195, + 194, 187, 189, 186, 183, 179, 185, 179, 183, 127, 99, 57, 67, 72, 102, 143, + 169, 182, 181, 169, 162, 151, 153, 154, 143, 134, 116, 104, 114, 111, 106, 114, + 118, 93, 132, 159, 178, 186, 193, 187, 179, 178, 174, 142, 114, 87, 99, 99, + 88, 103, 97, 107, 93, 108, 93, 89, 77, 52, 36, 21, 77, 96, 92, 85, + 85, 89, 93, 100, 89, 88, 80, 83, 85, 79, 76, 92, 92, 92, 92, 88, + 80, 65, 33, 100, 114, 87, 85, 114, 108, 104, 95, 84, 110, 138, 151, 159, + 151, 155, 155, 151, 143, 128, 104, 85, 79, 51, 44, 17, 33, 95, 104, 80, + 83, 69, 95, 81, 83, 76, 73, 65, 76, 91, 75, 71, 65, 75, 60, 63, + 71, 55, 32, 1, 71, 89, 96, 100, 72, 93, 89, 75, 81, 67, 51, 56, + 75, 75, 64, 218, 229, 221, 106, 102, 112, 110, 111, 110, 114, 112, 119, 118, + 136, 154, 155, 150, 136, 127, 110, 16, 12, 10, 18, 22, 22, 28, 18, 18, + 16, 30, 9, 12, 33, 76, 72, 65, 65, 65, 40, 22, 21, 16, 20, 20, + 18, 40, 59, 64, 65, 69, 79, 72, 65, 56, 64, 75, 84, 72, 65, 53, + 60, 51, 56, 29, 29, 25, 21, 22, 29, 37, 36, 36, 41, 51, 53, 48, + 51, 34, 14, 73, 73, 81, 77, 183, 214, 179, 104, 100, 110, 124, 132, 142, + 151, 165, 157, 157, 123, 44, 33, 6, 6, 17, 17, 32, 65, 71, 72, 72, + 71, 80, 76, 73, 71, 38, 24, 67, 84, 96, 88, 85, 89, 97, 93, 87, + 80, 84, 84, 97, 116, 104, 104, 104, 87, 79, 83, 96, 163, 174, 186, 170, + 146, 103, 67, 57, 57, 64, 76, 116, 136, 157, 143, 146, 140, 132, 140, 119, + 118, 111, 103, 69, 44, 36, 20, 10, 71, 85, 108, 111, 85, 89, 65, 59, + 64, 65, 55, 52, 72, 123, 136, 147, 148, 147, 151, 153, 144, 151, 161, 175, + 182, 181, 165, 150, 100, 81, 41, 41, 34, 33, 21, 9, 26, 65, 79, 57, + 65, 64, 55, 51, 41, 24, 9, 28, 71, 83, 71, 69, 85, 84, 68, 99, + 99, 99, 69, 76, 111, 119, 150, 150, 146, 154, 142, 134, 124, 77, 45, 42, + 65, 118, 155, 167, 182, 193, 193, 193, 197, 199, 190, 175, 187, 174, 159, 157, + 159, 148, 143, 144, 146, 142, 143, 139, 153, 150, 154, 179, 179, 163, 150, 161, + 147, 139, 132, 147, 134, 110, 115, 96, 48, 166, 212, 202, 218, 178, 218, 174, + 214, 204, 225, 206, 210, 195, 205, 201, 201, 195, 201, 198, 146, 64, 67, 61, + 61, 126, 136, 115, 135, 194, 195, 229, 189, 116, 104, 108, 123, 128, 135, 123, + 131, 147, 166, 165, 150, 142, 136, 122, 40, 17, 13, 38, 38, 53, 60, 63, + 65, 68, 85, 91, 99, 95, 103, 103, 106, 104, 106, 87, 76, 49, 79, 135, + 169, 110, 79, 38, 34, 33, 46, 63, 63, 61, 55, 56, 92, 106, 103, 103, + 91, 87, 225, 220, 218, 106, 99, 108, 118, 130, 135, 134, 135, 134, 134, 130, + 136, 124, 123, 22, 10, 10, 26, 45, 55, 122, 69, 128, 165, 185, 190, 190, + 193, 198, 204, 209, 210, 214, 222, 225, 225, 229, 228, 229, 226, 233, 224, 232, + 236, 234, 228, 222, 224, 216, 218, 217, 209, 209, 212, 208, 210, 202, 201, 190, + 186, 183, 183, 177, 167, 157, 142, 139, 97, 99, 127, 153, 171, 187, 198, 208, + 209, 206, 209, 206, 205, 202, 197, 190, 171, 122, 103, 89, 79, 81, 85, 91, + 97, 97, 97, 95, 71, 48, 22, 95, 88, 102, 95, 97, 96, 83, 81, 84, + 91, 91, 65, 63, 102, 107, 114, 114, 108, 88, 81, 93, 64, 36, 108, 108, + 108, 88, 119, 87, 96, 111, 130, 173, 202, 213, 210, 208, 206, 199, 194, 189, + 178, 174, 157, 144, 81, 44, 22, 93, 93, 76, 76, 84, 89, 93, 77, 76, + 87, 93, 83, 61, 81, 79, 72, 71, 68, 68, 69, 69, 63, 36, 0, 57, + 84, 85, 80, 65, 61, 76, 73, 60, 69, 76, 32, 65, 89, 68, 226, 234, + 221, 104, 96, 107, 123, 130, 134, 138, 138, 135, 136, 140, 155, 153, 144, 136, + 130, 116, 13, 12, 13, 18, 12, 20, 32, 29, 26, 17, 12, 10, 17, 61, + 84, 89, 84, 89, 81, 73, 68, 76, 73, 61, 65, 75, 79, 76, 79, 75, + 81, 88, 91, 68, 76, 76, 95, 115, 108, 100, 119, 120, 120, 75, 63, 59, + 51, 46, 45, 51, 46, 37, 24, 29, 30, 22, 18, 17, 30, 18, 73, 83, + 80, 75, 212, 217, 186, 100, 97, 107, 123, 134, 140, 151, 163, 157, 140, 128, + 45, 45, 49, 51, 52, 77, 72, 80, 83, 83, 79, 87, 64, 68, 67, 67, + 71, 30, 91, 84, 87, 99, 91, 126, 148, 163, 167, 170, 170, 174, 182, 189, + 189, 182, 183, 181, 181, 181, 183, 190, 190, 191, 189, 181, 171, 170, 144, 138, + 154, 139, 154, 177, 182, 195, 191, 185, 183, 183, 170, 171, 177, 173, 150, 69, + 32, 30, 14, 83, 102, 87, 107, 112, 93, 108, 104, 81, 102, 120, 159, 158, + 179, 183, 191, 185, 186, 186, 190, 194, 193, 197, 205, 205, 206, 204, 202, 195, + 175, 154, 102, 60, 49, 22, 6, 68, 77, 60, 71, 77, 61, 71, 60, 51, + 18, 14, 80, 167, 178, 181, 175, 181, 189, 198, 206, 201, 195, 198, 194, 195, + 194, 195, 177, 191, 193, 185, 148, 170, 136, 61, 46, 95, 150, 177, 185, 191, + 195, 199, 204, 201, 204, 201, 174, 202, 197, 155, 104, 95, 146, 167, 167, 163, + 150, 157, 153, 142, 120, 119, 106, 114, 112, 104, 147, 150, 95, 148, 157, 118, + 110, 106, 53, 34, 91, 155, 187, 143, 124, 97, 102, 108, 108, 136, 178, 183, + 183, 191, 171, 175, 187, 191, 111, 76, 65, 87, 102, 114, 108, 108, 116, 140, + 177, 202, 237, 208, 122, 103, 120, 130, 136, 147, 153, 158, 162, 161, 153, 151, + 142, 138, 122, 36, 16, 14, 34, 49, 53, 75, 67, 79, 89, 83, 87, 92, + 97, 100, 88, 104, 95, 96, 92, 76, 65, 68, 80, 151, 96, 63, 42, 36, + 30, 57, 56, 55, 52, 42, 84, 108, 104, 96, 93, 87, 85, 232, 224, 220, + 100, 97, 114, 122, 135, 132, 138, 140, 138, 132, 130, 134, 123, 120, 22, 10, + 12, 25, 40, 110, 49, 64, 76, 111, 169, 178, 185, 194, 197, 201, 205, 210, + 216, 218, 218, 225, 225, 228, 229, 229, 232, 226, 234, 233, 233, 228, 221, 213, + 208, 210, 210, 216, 217, 212, 208, 209, 202, 187, 189, 175, 166, 178, 167, 167, + 122, 87, 122, 139, 163, 183, 198, 199, 195, 190, 202, 209, 208, 210, 210, 210, + 206, 205, 201, 195, 190, 171, 147, 104, 81, 75, 81, 80, 79, 84, 81, 85, + 53, 29, 97, 91, 100, 91, 83, 72, 68, 69, 69, 68, 71, 52, 76, 114, + 95, 79, 111, 111, 102, 73, 71, 61, 37, 114, 112, 120, 111, 120, 126, 115, + 142, 201, 218, 226, 224, 213, 204, 194, 181, 155, 140, 116, 93, 73, 64, 132, + 55, 29, 100, 88, 92, 100, 95, 91, 83, 73, 85, 77, 65, 52, 84, 85, + 81, 59, 60, 73, 67, 59, 73, 46, 33, 0, 65, 61, 68, 69, 76, 79, + 85, 95, 88, 76, 79, 40, 63, 84, 61, 233, 236, 232, 107, 97, 110, 130, + 138, 144, 151, 151, 151, 154, 151, 148, 144, 142, 140, 132, 122, 17, 12, 14, + 13, 21, 12, 8, 18, 17, 21, 9, 12, 17, 65, 88, 91, 87, 83, 88, + 77, 81, 85, 100, 87, 67, 65, 79, 123, 158, 165, 177, 186, 197, 198, 193, + 198, 206, 212, 209, 212, 221, 221, 212, 206, 210, 189, 195, 195, 199, 190, 157, + 67, 28, 20, 24, 18, 18, 12, 32, 21, 65, 73, 83, 89, 218, 224, 213, + 96, 93, 107, 122, 132, 142, 151, 162, 162, 155, 169, 87, 76, 71, 71, 72, + 73, 73, 91, 92, 99, 77, 79, 75, 92, 76, 71, 67, 69, 59, 87, 79, + 68, 100, 173, 186, 187, 170, 183, 194, 189, 195, 185, 183, 198, 183, 197, 198, + 190, 185, 183, 177, 178, 181, 185, 193, 181, 171, 131, 138, 178, 193, 193, 190, + 185, 197, 183, 169, 134, 138, 122, 112, 122, 107, 81, 26, 26, 17, 67, 73, + 93, 77, 81, 100, 80, 76, 103, 146, 153, 174, 178, 179, 177, 170, 178, 182, + 189, 183, 181, 177, 171, 174, 179, 183, 194, 199, 201, 201, 198, 187, 123, 53, + 30, 8, 79, 75, 61, 56, 51, 46, 52, 71, 61, 29, 22, 115, 177, 181, + 173, 189, 202, 201, 201, 204, 204, 205, 198, 189, 183, 186, 179, 174, 166, 151, + 158, 148, 146, 122, 68, 53, 118, 154, 175, 183, 189, 195, 205, 205, 165, 165, + 147, 136, 139, 134, 112, 64, 68, 89, 162, 167, 151, 142, 130, 131, 127, 127, + 123, 119, 124, 126, 132, 132, 140, 142, 142, 144, 106, 96, 97, 111, 46, 57, + 72, 81, 77, 75, 72, 72, 73, 77, 76, 79, 79, 83, 87, 89, 91, 84, + 80, 75, 60, 88, 22, 18, 13, 100, 102, 119, 130, 193, 208, 199, 190, 139, + 107, 115, 134, 155, 158, 158, 162, 163, 159, 153, 147, 140, 138, 124, 34, 16, + 14, 37, 55, 55, 73, 75, 85, 65, 100, 104, 89, 87, 93, 85, 96, 96, + 96, 96, 79, 64, 37, 71, 147, 96, 63, 38, 33, 33, 57, 60, 52, 52, + 49, 95, 108, 102, 92, 89, 85, 85, 237, 228, 222, 108, 97, 114, 124, 132, + 134, 142, 139, 134, 127, 127, 131, 124, 119, 20, 10, 12, 22, 44, 60, 59, + 67, 119, 143, 174, 173, 130, 161, 138, 143, 142, 138, 134, 134, 132, 130, 126, + 126, 122, 120, 119, 127, 122, 116, 116, 118, 110, 107, 110, 110, 163, 178, 210, + 183, 174, 170, 154, 131, 108, 102, 102, 103, 107, 102, 99, 115, 118, 170, 197, + 198, 199, 205, 183, 167, 174, 171, 159, 148, 139, 143, 142, 144, 146, 167, 182, + 182, 186, 114, 92, 64, 79, 72, 49, 61, 71, 83, 60, 26, 73, 92, 104, + 83, 67, 76, 81, 69, 64, 59, 77, 48, 71, 116, 111, 84, 88, 102, 79, + 79, 76, 60, 48, 119, 123, 103, 115, 122, 127, 135, 205, 228, 233, 222, 213, + 185, 135, 108, 93, 87, 80, 76, 64, 42, 44, 63, 48, 17, 67, 85, 83, + 81, 71, 63, 56, 63, 61, 83, 67, 40, 77, 79, 73, 60, 72, 67, 65, + 63, 76, 49, 29, 0, 64, 72, 76, 72, 73, 65, 65, 75, 79, 81, 55, + 21, 69, 97, 49, 230, 237, 233, 110, 100, 108, 135, 142, 148, 148, 157, 157, + 161, 157, 158, 154, 144, 138, 134, 122, 13, 8, 9, 13, 26, 14, 5, 18, + 6, 44, 9, 10, 12, 57, 87, 85, 85, 89, 88, 80, 85, 76, 75, 60, + 42, 84, 92, 84, 151, 178, 189, 198, 201, 205, 209, 212, 214, 218, 221, 226, + 226, 225, 224, 222, 220, 222, 221, 218, 217, 212, 185, 79, 30, 26, 17, 34, + 13, 18, 32, 16, 45, 63, 80, 72, 226, 230, 224, 100, 93, 107, 122, 132, + 142, 151, 162, 165, 161, 136, 170, 119, 124, 179, 195, 198, 199, 198, 199, 198, + 195, 193, 197, 191, 185, 175, 110, 68, 72, 71, 48, 91, 103, 110, 183, 197, + 178, 194, 195, 198, 169, 157, 132, 144, 163, 185, 182, 182, 165, 167, 147, 158, + 155, 151, 150, 146, 130, 114, 163, 193, 195, 195, 189, 185, 155, 138, 111, 104, + 106, 100, 102, 99, 110, 37, 28, 25, 16, 77, 77, 95, 104, 73, 83, 96, + 72, 106, 143, 162, 183, 187, 169, 157, 134, 132, 132, 139, 134, 134, 126, 123, + 120, 127, 128, 144, 153, 154, 165, 175, 187, 169, 81, 42, 12, 49, 80, 61, + 51, 53, 51, 59, 60, 65, 28, 18, 107, 158, 183, 195, 195, 229, 193, 197, + 197, 197, 190, 179, 175, 187, 178, 171, 167, 103, 88, 84, 79, 87, 77, 71, + 63, 114, 161, 175, 187, 202, 171, 162, 143, 120, 126, 118, 115, 119, 110, 114, + 63, 48, 77, 99, 162, 161, 142, 155, 131, 127, 114, 131, 128, 132, 132, 131, + 131, 138, 139, 142, 132, 100, 88, 91, 108, 55, 60, 64, 67, 64, 71, 79, + 81, 77, 71, 76, 68, 80, 73, 76, 75, 77, 72, 69, 88, 77, 16, 12, + 12, 46, 84, 93, 110, 118, 191, 209, 232, 190, 119, 104, 126, 140, 154, 162, + 158, 159, 159, 161, 154, 150, 143, 136, 118, 29, 14, 14, 34, 51, 63, 71, + 76, 88, 69, 100, 100, 84, 92, 83, 85, 91, 107, 104, 87, 73, 67, 40, + 68, 136, 97, 85, 61, 40, 34, 53, 49, 52, 40, 40, 103, 112, 96, 99, + 92, 84, 80, 237, 228, 221, 107, 99, 112, 124, 130, 136, 136, 130, 127, 126, + 127, 126, 122, 115, 20, 10, 9, 22, 38, 44, 61, 42, 77, 110, 134, 108, + 142, 118, 107, 107, 110, 110, 99, 107, 111, 108, 100, 100, 100, 103, 100, 100, + 97, 100, 97, 97, 97, 96, 96, 97, 100, 103, 103, 99, 96, 95, 95, 95, + 96, 97, 100, 103, 106, 110, 112, 118, 118, 187, 195, 195, 198, 182, 150, 124, + 111, 106, 107, 104, 102, 106, 108, 108, 111, 114, 131, 132, 159, 155, 93, 64, + 87, 60, 73, 75, 69, 76, 53, 28, 89, 102, 97, 83, 84, 77, 102, 71, + 60, 56, 72, 45, 79, 116, 106, 84, 72, 75, 68, 75, 73, 60, 41, 110, + 120, 111, 135, 128, 136, 202, 226, 237, 234, 214, 155, 87, 76, 68, 68, 68, + 64, 55, 49, 36, 29, 45, 49, 28, 68, 81, 85, 67, 61, 59, 57, 56, + 60, 72, 59, 46, 80, 84, 63, 63, 79, 77, 60, 71, 75, 63, 28, 1, + 57, 81, 76, 64, 83, 95, 85, 83, 76, 71, 56, 22, 64, 71, 49, 236, + 240, 234, 110, 102, 110, 135, 144, 153, 153, 161, 166, 167, 165, 159, 154, 146, + 139, 131, 118, 10, 10, 13, 10, 20, 5, 8, 1, 18, 26, 13, 9, 17, + 53, 84, 83, 73, 81, 92, 77, 84, 64, 60, 53, 42, 83, 85, 107, 99, + 126, 151, 185, 199, 198, 206, 209, 217, 217, 224, 208, 230, 228, 225, 210, 224, + 228, 222, 197, 228, 228, 186, 77, 28, 14, 32, 29, 13, 21, 28, 24, 33, + 61, 79, 71, 229, 234, 228, 102, 93, 106, 119, 131, 144, 150, 162, 167, 167, + 159, 174, 181, 186, 191, 198, 198, 198, 198, 197, 194, 194, 190, 191, 187, 183, + 181, 177, 167, 103, 80, 76, 75, 59, 72, 99, 122, 108, 104, 110, 95, 93, + 91, 87, 96, 95, 103, 103, 103, 102, 103, 100, 99, 103, 108, 107, 106, 130, + 119, 161, 195, 193, 185, 186, 136, 114, 107, 106, 104, 111, 110, 111, 116, 87, + 29, 22, 16, 9, 75, 80, 89, 93, 93, 77, 103, 108, 116, 165, 163, 151, + 163, 153, 111, 93, 91, 92, 95, 96, 96, 95, 95, 99, 102, 103, 107, 110, + 115, 119, 124, 134, 171, 123, 57, 13, 57, 77, 60, 60, 57, 53, 49, 46, + 65, 29, 20, 40, 83, 143, 159, 155, 146, 135, 114, 106, 99, 85, 79, 84, + 80, 81, 79, 72, 69, 71, 65, 65, 65, 61, 76, 68, 118, 165, 175, 175, + 167, 128, 123, 102, 107, 119, 120, 128, 119, 124, 108, 61, 61, 56, 60, 96, + 185, 161, 153, 144, 138, 135, 132, 134, 135, 132, 131, 135, 135, 130, 118, 134, + 93, 33, 84, 84, 85, 89, 92, 53, 63, 97, 124, 110, 111, 100, 97, 88, + 89, 87, 81, 95, 79, 80, 93, 84, 25, 10, 9, 16, 21, 72, 87, 100, + 104, 185, 212, 238, 179, 123, 108, 126, 148, 158, 162, 162, 165, 169, 162, 155, + 150, 143, 134, 120, 32, 14, 17, 36, 48, 56, 60, 71, 80, 63, 91, 96, + 80, 102, 83, 76, 91, 76, 79, 77, 69, 67, 46, 77, 130, 128, 99, 76, + 60, 52, 53, 51, 48, 38, 68, 102, 106, 100, 95, 89, 80, 77, 241, 232, + 230, 102, 99, 111, 122, 130, 136, 128, 127, 126, 135, 134, 132, 127, 120, 20, + 9, 9, 22, 34, 44, 72, 63, 42, 72, 107, 111, 115, 122, 108, 110, 96, + 107, 112, 107, 104, 102, 106, 107, 108, 108, 108, 107, 108, 110, 110, 111, 115, + 118, 114, 111, 99, 97, 96, 97, 97, 100, 97, 102, 110, 112, 116, 119, 122, + 122, 119, 122, 112, 142, 201, 177, 151, 131, 104, 119, 119, 118, 116, 116, 118, + 118, 118, 116, 114, 112, 107, 108, 114, 135, 102, 67, 77, 61, 65, 68, 71, + 76, 56, 29, 88, 102, 99, 96, 95, 73, 99, 73, 59, 69, 72, 42, 72, + 107, 102, 88, 85, 83, 79, 75, 71, 60, 45, 118, 126, 139, 118, 130, 190, + 225, 238, 238, 226, 159, 103, 71, 56, 44, 38, 34, 40, 36, 36, 25, 29, + 33, 52, 28, 42, 91, 87, 61, 61, 61, 64, 61, 56, 68, 64, 44, 76, + 80, 60, 75, 79, 63, 59, 71, 69, 73, 32, 0, 68, 76, 81, 71, 65, + 61, 69, 76, 83, 65, 49, 32, 57, 87, 51, 228, 238, 237, 108, 97, 110, + 134, 147, 154, 161, 165, 175, 175, 173, 162, 158, 148, 142, 130, 120, 10, 8, + 10, 13, 22, 16, 8, 10, 30, 37, 14, 9, 16, 55, 79, 83, 83, 88, + 76, 81, 79, 64, 56, 65, 36, 72, 96, 77, 108, 110, 115, 120, 134, 142, + 135, 127, 126, 128, 131, 131, 153, 144, 139, 157, 167, 139, 132, 147, 165, 126, + 106, 75, 24, 21, 30, 37, 16, 18, 22, 34, 17, 59, 69, 68, 233, 234, + 232, 106, 95, 107, 120, 131, 143, 151, 163, 170, 169, 165, 161, 131, 175, 185, + 191, 199, 198, 199, 197, 195, 195, 194, 193, 191, 190, 185, 181, 170, 166, 150, + 144, 79, 72, 72, 59, 63, 72, 87, 75, 85, 83, 85, 84, 89, 89, 96, + 95, 96, 97, 99, 100, 103, 103, 106, 110, 112, 131, 122, 151, 186, 178, 181, + 120, 108, 112, 108, 119, 118, 120, 116, 120, 120, 76, 20, 18, 21, 12, 71, + 80, 87, 87, 97, 95, 79, 97, 132, 139, 148, 127, 119, 95, 85, 93, 102, + 99, 99, 102, 100, 104, 106, 107, 106, 108, 108, 108, 111, 111, 112, 114, 124, + 147, 67, 17, 51, 68, 52, 59, 59, 61, 55, 51, 53, 44, 26, 33, 36, + 61, 69, 73, 68, 77, 79, 68, 69, 67, 69, 67, 73, 75, 72, 69, 72, + 79, 106, 110, 112, 112, 81, 76, 122, 193, 182, 142, 110, 107, 119, 122, 128, + 131, 134, 132, 132, 134, 96, 48, 14, 48, 65, 53, 80, 178, 162, 148, 148, + 148, 143, 146, 146, 150, 148, 150, 150, 147, 136, 110, 100, 88, 89, 76, 73, + 76, 92, 81, 60, 95, 182, 183, 132, 132, 115, 118, 118, 110, 123, 123, 126, + 115, 112, 37, 16, 10, 20, 25, 40, 65, 87, 84, 110, 191, 214, 238, 161, + 128, 108, 127, 150, 157, 161, 166, 166, 170, 166, 162, 147, 142, 132, 122, 32, + 16, 16, 40, 44, 56, 71, 64, 79, 68, 97, 97, 75, 96, 87, 77, 75, + 111, 76, 77, 67, 65, 37, 65, 126, 123, 92, 96, 80, 67, 69, 48, 41, + 33, 71, 106, 99, 102, 87, 104, 106, 81, 238, 232, 233, 107, 95, 112, 123, + 132, 127, 136, 140, 142, 147, 146, 139, 128, 124, 20, 9, 9, 24, 37, 45, + 57, 49, 69, 40, 57, 108, 80, 89, 96, 107, 126, 135, 115, 118, 119, 139, + 119, 123, 126, 135, 123, 123, 124, 138, 128, 130, 139, 139, 134, 132, 124, 116, + 114, 114, 115, 116, 116, 120, 124, 131, 134, 138, 138, 139, 128, 124, 100, 116, + 132, 124, 102, 124, 124, 143, 140, 128, 127, 128, 127, 127, 128, 128, 126, 124, + 120, 119, 115, 111, 115, 71, 63, 73, 60, 65, 71, 71, 57, 34, 83, 95, + 95, 93, 95, 80, 103, 84, 57, 65, 60, 38, 67, 107, 103, 75, 84, 65, + 89, 88, 88, 79, 77, 119, 148, 142, 142, 178, 216, 237, 242, 234, 209, 119, + 77, 51, 29, 26, 32, 26, 25, 28, 32, 30, 32, 30, 93, 30, 36, 89, + 81, 61, 61, 65, 65, 64, 61, 61, 61, 42, 72, 83, 63, 76, 68, 59, + 59, 60, 73, 52, 30, 0, 67, 77, 65, 63, 63, 67, 67, 76, 73, 61, + 40, 40, 48, 83, 76, 238, 242, 238, 115, 97, 108, 132, 143, 154, 161, 167, + 175, 174, 173, 171, 161, 144, 140, 132, 122, 10, 10, 9, 13, 21, 12, 8, + 10, 32, 24, 4, 9, 14, 44, 65, 83, 83, 79, 84, 89, 63, 51, 45, + 44, 37, 83, 84, 76, 111, 108, 92, 100, 107, 108, 110, 116, 114, 108, 114, + 120, 118, 122, 124, 126, 124, 127, 115, 119, 112, 112, 91, 48, 16, 12, 34, + 28, 16, 20, 18, 30, 9, 53, 81, 71, 233, 240, 233, 107, 97, 110, 124, + 131, 143, 151, 163, 169, 171, 169, 162, 163, 144, 139, 138, 134, 132, 128, 127, + 124, 124, 123, 122, 120, 116, 114, 112, 104, 112, 110, 110, 89, 95, 72, 93, + 87, 92, 85, 88, 89, 91, 93, 93, 95, 99, 102, 102, 103, 104, 107, 110, + 110, 112, 114, 119, 120, 115, 122, 119, 163, 194, 123, 115, 120, 124, 128, 130, + 130, 127, 123, 126, 122, 65, 18, 18, 17, 8, 64, 79, 84, 89, 83, 84, + 81, 87, 81, 84, 79, 85, 87, 73, 68, 61, 68, 85, 85, 108, 108, 110, + 114, 116, 116, 118, 118, 120, 120, 122, 120, 119, 116, 161, 85, 30, 33, 53, + 73, 69, 57, 46, 48, 53, 42, 59, 28, 18, 53, 49, 65, 69, 79, 80, + 81, 81, 89, 88, 92, 95, 99, 102, 103, 106, 104, 108, 118, 122, 124, 122, + 91, 79, 115, 163, 155, 126, 106, 128, 134, 140, 138, 139, 138, 138, 139, 127, + 79, 14, 33, 44, 49, 51, 61, 103, 163, 162, 140, 131, 154, 154, 155, 155, + 159, 159, 161, 159, 155, 142, 122, 95, 40, 79, 81, 75, 73, 73, 53, 96, + 191, 179, 162, 161, 132, 126, 128, 134, 122, 128, 144, 124, 104, 38, 14, 8, + 22, 26, 8, 63, 80, 79, 100, 202, 220, 229, 162, 116, 108, 127, 147, 158, + 162, 165, 165, 170, 166, 162, 150, 139, 136, 124, 33, 14, 20, 40, 55, 61, + 67, 71, 73, 64, 92, 89, 76, 85, 88, 84, 75, 69, 75, 71, 67, 57, + 33, 63, 122, 112, 84, 87, 84, 63, 111, 75, 40, 32, 84, 104, 95, 95, + 85, 100, 89, 79, 240, 232, 234, 107, 95, 110, 123, 135, 138, 150, 154, 159, + 161, 154, 142, 131, 126, 20, 9, 10, 18, 30, 42, 41, 57, 85, 61, 41, + 53, 96, 96, 92, 167, 179, 161, 115, 134, 159, 126, 128, 138, 148, 134, 132, + 136, 147, 134, 138, 144, 138, 143, 144, 143, 140, 136, 134, 134, 132, 138, 139, + 140, 143, 146, 150, 150, 150, 150, 144, 127, 132, 99, 97, 132, 130, 102, 72, + 65, 79, 103, 119, 154, 131, 134, 153, 135, 135, 134, 131, 130, 126, 115, 131, + 89, 52, 69, 71, 68, 60, 79, 60, 33, 41, 91, 96, 108, 96, 79, 102, + 83, 52, 68, 56, 40, 93, 96, 103, 88, 97, 91, 107, 126, 144, 151, 161, + 190, 206, 212, 217, 221, 236, 242, 244, 233, 169, 92, 45, 52, 37, 46, 41, + 46, 41, 37, 36, 37, 37, 40, 40, 42, 29, 69, 77, 65, 68, 68, 67, + 73, 65, 65, 61, 40, 67, 72, 61, 75, 67, 61, 63, 65, 75, 57, 28, + 1, 60, 79, 73, 75, 72, 79, 76, 73, 77, 55, 25, 18, 49, 76, 53, + 237, 244, 241, 112, 99, 108, 135, 146, 151, 161, 166, 171, 173, 173, 171, 162, + 144, 136, 134, 122, 10, 8, 14, 9, 14, 8, 9, 2, 24, 10, 13, 6, + 14, 40, 61, 79, 89, 83, 79, 67, 63, 52, 52, 48, 32, 83, 83, 88, + 76, 80, 73, 76, 124, 130, 103, 116, 122, 128, 131, 130, 122, 123, 124, 126, + 122, 118, 120, 118, 116, 104, 87, 33, 17, 16, 28, 34, 16, 21, 22, 34, + 9, 56, 73, 75, 228, 238, 237, 108, 99, 111, 124, 134, 143, 153, 165, 169, + 170, 169, 155, 147, 116, 91, 85, 106, 100, 114, 112, 112, 108, 106, 102, 99, + 91, 88, 88, 88, 81, 80, 73, 67, 61, 57, 53, 56, 64, 53, 63, 170, + 99, 100, 97, 104, 103, 108, 111, 111, 112, 118, 122, 122, 123, 124, 126, 128, + 128, 130, 120, 122, 119, 118, 126, 135, 139, 138, 138, 135, 134, 132, 128, 110, + 41, 21, 13, 17, 12, 52, 79, 76, 84, 88, 88, 91, 79, 75, 65, 57, + 45, 41, 37, 29, 36, 36, 51, 65, 80, 93, 112, 110, 118, 116, 122, 115, + 119, 124, 130, 130, 128, 127, 124, 122, 59, 14, 51, 53, 42, 38, 55, 46, + 49, 42, 49, 28, 25, 49, 45, 45, 53, 52, 134, 89, 96, 102, 106, 104, + 108, 112, 111, 114, 115, 114, 114, 126, 128, 131, 131, 126, 85, 106, 151, 130, + 123, 134, 144, 140, 143, 139, 140, 144, 142, 140, 128, 61, 30, 29, 37, 30, + 42, 57, 63, 130, 170, 155, 134, 132, 153, 163, 163, 161, 166, 166, 170, 170, + 166, 148, 108, 77, 68, 40, 63, 71, 56, 60, 110, 191, 190, 177, 136, 150, + 134, 135, 135, 140, 147, 144, 118, 120, 30, 16, 20, 24, 8, 0, 57, 77, + 77, 96, 199, 221, 233, 139, 116, 107, 126, 140, 155, 161, 161, 163, 170, 166, + 165, 151, 143, 134, 126, 30, 14, 17, 36, 56, 64, 64, 84, 87, 56, 89, + 84, 77, 84, 84, 87, 75, 69, 69, 67, 65, 60, 33, 63, 128, 142, 93, + 91, 92, 92, 65, 76, 45, 25, 81, 100, 93, 93, 87, 93, 85, 76, 241, + 238, 233, 104, 96, 110, 124, 139, 147, 159, 165, 163, 165, 157, 144, 132, 126, + 17, 9, 9, 20, 38, 41, 41, 46, 64, 61, 45, 42, 80, 87, 91, 195, + 190, 124, 107, 118, 136, 134, 151, 157, 136, 138, 147, 151, 142, 146, 142, 148, + 148, 147, 159, 159, 163, 157, 148, 144, 146, 151, 155, 154, 158, 157, 161, 161, + 161, 159, 155, 140, 140, 140, 134, 106, 60, 38, 28, 30, 41, 77, 111, 130, + 170, 179, 177, 163, 170, 169, 155, 135, 132, 124, 115, 104, 57, 51, 68, 65, + 63, 64, 63, 46, 36, 83, 83, 73, 93, 84, 85, 61, 61, 57, 46, 61, + 91, 84, 126, 140, 171, 195, 218, 222, 237, 237, 244, 244, 246, 248, 246, 246, + 248, 248, 238, 213, 134, 89, 56, 29, 40, 38, 38, 41, 37, 38, 40, 44, + 44, 38, 40, 40, 34, 67, 85, 80, 79, 80, 76, 80, 72, 63, 56, 40, + 71, 77, 64, 67, 77, 72, 88, 75, 65, 61, 25, 0, 64, 88, 76, 87, + 83, 75, 81, 79, 71, 56, 26, 20, 45, 73, 51, 237, 244, 240, 110, 97, + 108, 132, 143, 151, 158, 162, 167, 174, 171, 171, 165, 146, 139, 132, 123, 10, + 10, 9, 12, 18, 20, 20, 8, 6, 10, 6, 6, 18, 29, 56, 56, 57, + 55, 57, 56, 44, 48, 49, 45, 33, 57, 77, 77, 69, 68, 65, 65, 73, + 57, 79, 157, 119, 112, 118, 134, 135, 140, 142, 147, 147, 150, 142, 147, 112, + 106, 89, 21, 12, 16, 20, 16, 29, 33, 17, 28, 20, 48, 69, 77, 216, + 238, 238, 107, 99, 108, 124, 135, 144, 153, 165, 169, 170, 166, 157, 124, 65, + 26, 24, 24, 64, 81, 108, 106, 111, 108, 108, 110, 110, 108, 112, 112, 111, + 108, 59, 55, 59, 56, 53, 52, 48, 51, 57, 174, 178, 108, 88, 114, 120, + 112, 115, 119, 119, 120, 126, 128, 131, 134, 135, 135, 135, 128, 127, 116, 112, + 138, 143, 143, 146, 140, 140, 139, 134, 135, 124, 79, 20, 17, 13, 17, 13, + 34, 73, 77, 75, 65, 55, 41, 45, 45, 45, 38, 49, 49, 48, 45, 61, + 59, 37, 32, 61, 99, 112, 167, 170, 166, 144, 153, 166, 151, 151, 147, 132, + 136, 126, 153, 91, 29, 18, 51, 51, 46, 41, 45, 44, 45, 55, 25, 21, + 37, 46, 52, 38, 45, 131, 158, 100, 99, 108, 119, 116, 118, 120, 122, 120, + 120, 123, 128, 138, 135, 136, 135, 131, 89, 89, 131, 143, 147, 147, 147, 146, + 138, 143, 143, 142, 138, 96, 41, 33, 32, 9, 34, 34, 55, 51, 57, 148, + 163, 139, 127, 136, 153, 161, 166, 169, 173, 173, 174, 175, 167, 138, 72, 67, + 48, 67, 61, 67, 60, 119, 202, 195, 212, 147, 153, 136, 135, 138, 139, 151, + 144, 118, 118, 26, 14, 6, 12, 8, 0, 56, 59, 67, 89, 208, 220, 234, + 140, 102, 111, 130, 144, 153, 157, 159, 165, 167, 166, 162, 155, 136, 131, 123, + 33, 16, 18, 37, 53, 53, 63, 65, 72, 55, 99, 97, 76, 65, 64, 67, + 64, 64, 61, 63, 65, 61, 44, 69, 87, 110, 95, 33, 44, 40, 38, 37, + 34, 24, 49, 79, 77, 69, 68, 87, 77, 75, 242, 240, 233, 103, 96, 108, + 123, 138, 150, 163, 166, 163, 166, 158, 143, 132, 124, 17, 9, 9, 18, 22, + 34, 37, 36, 41, 34, 38, 46, 79, 93, 87, 198, 195, 167, 112, 115, 123, + 139, 139, 144, 157, 154, 142, 155, 146, 150, 148, 148, 155, 166, 170, 178, 185, + 185, 179, 159, 158, 161, 167, 166, 167, 166, 167, 169, 169, 166, 162, 144, 144, + 142, 110, 60, 28, 28, 24, 20, 29, 57, 87, 119, 173, 177, 190, 181, 175, + 151, 170, 163, 150, 131, 119, 116, 71, 42, 49, 61, 64, 63, 59, 59, 51, + 44, 46, 52, 52, 55, 55, 55, 56, 49, 77, 88, 115, 177, 214, 234, 240, + 240, 245, 249, 252, 252, 252, 252, 252, 250, 252, 249, 248, 245, 233, 171, 122, + 93, 53, 26, 38, 36, 34, 34, 38, 37, 38, 38, 42, 37, 41, 38, 36, + 36, 52, 56, 52, 64, 56, 60, 57, 56, 59, 37, 67, 67, 67, 55, 60, + 59, 61, 56, 57, 44, 28, 2, 59, 65, 72, 77, 71, 71, 69, 71, 59, + 52, 25, 21, 36, 71, 46, 237, 242, 237, 108, 95, 108, 134, 144, 153, 158, + 159, 162, 171, 173, 171, 161, 151, 139, 131, 120, 9, 8, 9, 12, 14, 12, + 14, 16, 17, 16, 33, 24, 20, 32, 38, 44, 37, 37, 41, 45, 40, 44, + 49, 40, 28, 65, 72, 67, 64, 63, 65, 64, 65, 61, 59, 161, 167, 112, + 111, 122, 127, 135, 140, 147, 148, 144, 150, 147, 119, 107, 91, 21, 13, 17, + 13, 10, 20, 22, 12, 17, 24, 37, 51, 73, 224, 242, 238, 112, 99, 110, + 124, 136, 142, 150, 165, 170, 167, 178, 146, 77, 34, 16, 12, 9, 26, 73, + 123, 163, 167, 162, 119, 151, 154, 153, 150, 122, 119, 114, 80, 49, 63, 53, + 52, 49, 48, 40, 45, 161, 187, 161, 103, 103, 122, 123, 127, 127, 131, 131, + 134, 138, 138, 139, 139, 143, 140, 138, 136, 136, 148, 147, 151, 146, 142, 127, + 120, 110, 96, 95, 69, 30, 16, 10, 12, 17, 13, 25, 32, 37, 34, 38, + 40, 40, 51, 52, 57, 49, 63, 60, 60, 56, 57, 60, 60, 61, 77, 104, + 175, 187, 189, 179, 171, 171, 174, 170, 163, 167, 157, 143, 138, 126, 115, 63, + 16, 24, 59, 57, 40, 41, 40, 36, 52, 29, 21, 30, 48, 44, 40, 48, + 126, 166, 155, 97, 100, 120, 122, 126, 126, 124, 128, 128, 126, 142, 148, 151, + 148, 147, 139, 143, 151, 153, 150, 150, 144, 140, 132, 126, 116, 111, 108, 84, + 45, 26, 21, 30, 21, 26, 13, 28, 32, 20, 92, 169, 163, 132, 126, 136, + 153, 159, 167, 171, 174, 174, 177, 177, 161, 111, 56, 67, 77, 77, 65, 59, + 155, 204, 199, 187, 165, 162, 144, 140, 146, 150, 148, 144, 116, 114, 24, 9, + 5, 17, 13, 13, 53, 51, 59, 88, 197, 221, 234, 131, 97, 107, 128, 144, + 155, 158, 165, 166, 167, 159, 155, 157, 139, 132, 124, 36, 14, 20, 36, 37, + 56, 64, 60, 69, 57, 91, 84, 60, 61, 59, 64, 61, 60, 57, 65, 65, + 55, 41, 49, 37, 24, 22, 22, 22, 20, 17, 20, 20, 22, 29, 32, 37, + 44, 45, 57, 77, 76, 241, 240, 229, 103, 96, 108, 127, 139, 150, 162, 169, + 169, 162, 157, 142, 130, 122, 14, 8, 8, 16, 14, 32, 36, 28, 29, 30, + 28, 33, 48, 87, 87, 205, 198, 193, 114, 110, 122, 135, 165, 163, 144, 154, + 148, 150, 157, 161, 163, 167, 170, 174, 178, 169, 153, 174, 183, 190, 181, 163, + 178, 178, 175, 171, 183, 178, 175, 178, 174, 181, 150, 144, 100, 45, 28, 21, + 17, 17, 20, 48, 81, 114, 182, 190, 161, 165, 183, 179, 159, 155, 161, 135, + 124, 131, 80, 44, 42, 57, 59, 57, 52, 55, 53, 57, 55, 52, 56, 56, + 53, 57, 46, 87, 95, 140, 218, 241, 242, 244, 248, 249, 252, 252, 250, 241, + 236, 230, 229, 229, 222, 220, 213, 209, 175, 140, 128, 102, 55, 49, 38, 41, + 38, 38, 42, 40, 40, 41, 40, 40, 42, 40, 38, 42, 42, 42, 42, 42, + 45, 42, 42, 42, 42, 40, 41, 34, 40, 40, 49, 32, 36, 34, 32, 28, + 33, 4, 16, 28, 30, 33, 32, 33, 32, 42, 36, 22, 12, 34, 33, 64, + 53, 240, 242, 238, 110, 95, 103, 130, 140, 153, 158, 163, 170, 170, 173, 163, + 157, 148, 139, 131, 123, 8, 10, 10, 14, 14, 16, 22, 12, 14, 13, 10, + 16, 18, 18, 18, 28, 25, 24, 22, 22, 24, 25, 24, 38, 42, 40, 46, + 38, 30, 59, 60, 55, 57, 61, 52, 142, 173, 162, 112, 116, 130, 128, 136, + 143, 139, 146, 148, 150, 123, 112, 83, 18, 10, 9, 14, 12, 16, 26, 25, + 13, 16, 36, 49, 75, 233, 242, 241, 112, 100, 110, 124, 135, 144, 153, 166, + 170, 163, 157, 112, 40, 20, 9, 10, 12, 18, 59, 142, 179, 128, 162, 154, + 154, 158, 167, 140, 146, 122, 118, 107, 44, 41, 45, 51, 49, 45, 52, 38, + 89, 197, 179, 114, 104, 112, 136, 131, 134, 135, 136, 138, 140, 142, 143, 144, + 146, 148, 153, 155, 151, 153, 151, 136, 104, 65, 41, 22, 16, 16, 17, 14, + 13, 9, 13, 10, 18, 14, 30, 28, 30, 34, 44, 64, 106, 177, 195, 209, + 210, 208, 199, 186, 177, 103, 92, 85, 85, 108, 186, 213, 163, 191, 183, 185, + 182, 174, 178, 177, 170, 163, 155, 142, 132, 147, 91, 29, 16, 29, 34, 38, + 40, 37, 41, 42, 44, 28, 29, 40, 45, 29, 38, 104, 175, 173, 108, 100, + 110, 123, 132, 130, 130, 135, 143, 146, 153, 157, 157, 157, 154, 151, 155, 155, + 151, 146, 130, 95, 67, 38, 26, 20, 13, 21, 21, 22, 25, 25, 1, 4, + 4, 34, 36, 25, 22, 32, 118, 171, 146, 120, 122, 143, 154, 159, 166, 171, + 175, 178, 181, 177, 135, 68, 37, 45, 63, 75, 88, 187, 201, 202, 189, 161, + 151, 154, 153, 154, 155, 148, 147, 128, 110, 21, 10, 6, 9, 13, 10, 33, + 41, 40, 72, 190, 222, 221, 130, 107, 110, 128, 144, 154, 159, 162, 166, 165, + 151, 158, 150, 139, 132, 124, 44, 17, 18, 25, 29, 30, 37, 67, 65, 52, + 60, 60, 53, 41, 38, 40, 36, 32, 28, 21, 29, 29, 37, 17, 41, 45, + 48, 52, 55, 52, 61, 53, 37, 18, 59, 104, 104, 81, 87, 87, 83, 77, + 242, 237, 222, 104, 96, 107, 126, 134, 150, 162, 169, 167, 163, 158, 142, 127, + 126, 18, 9, 9, 13, 13, 10, 21, 25, 26, 24, 26, 30, 38, 88, 91, + 208, 206, 204, 116, 126, 116, 132, 161, 165, 151, 153, 154, 165, 173, 173, 173, + 171, 169, 178, 143, 89, 59, 80, 150, 183, 185, 169, 161, 174, 175, 177, 175, + 175, 179, 181, 183, 185, 154, 151, 95, 42, 25, 21, 17, 17, 20, 49, 73, + 106, 195, 197, 163, 186, 189, 187, 165, 181, 170, 140, 128, 118, 100, 53, 38, + 48, 44, 37, 32, 38, 36, 36, 37, 40, 40, 38, 42, 55, 68, 106, 165, + 236, 245, 246, 244, 250, 249, 238, 220, 191, 167, 124, 112, 115, 108, 111, 116, + 114, 110, 115, 131, 118, 124, 116, 89, 63, 20, 18, 16, 13, 12, 12, 10, + 9, 8, 9, 9, 5, 4, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 2, 6, 8, 6, 1, 1, 0, 2, 5, 6, 2, 16, 14, 14, 6, + 17, 16, 13, 13, 17, 18, 17, 30, 25, 24, 75, 57, 240, 244, 242, 114, + 96, 106, 130, 142, 154, 161, 169, 173, 171, 169, 159, 161, 144, 136, 132, 120, + 6, 9, 12, 10, 9, 9, 8, 9, 8, 10, 9, 9, 9, 14, 24, 57, + 64, 75, 71, 73, 67, 67, 63, 56, 56, 80, 85, 77, 48, 38, 37, 34, + 53, 67, 57, 76, 185, 179, 119, 115, 126, 128, 134, 135, 136, 150, 146, 146, + 116, 111, 84, 18, 8, 13, 17, 12, 20, 21, 24, 22, 28, 55, 51, 80, + 233, 244, 241, 107, 97, 108, 122, 134, 140, 154, 166, 169, 165, 144, 73, 26, + 14, 10, 10, 10, 28, 72, 185, 193, 162, 130, 159, 162, 150, 142, 131, 151, + 126, 120, 111, 41, 40, 41, 45, 46, 42, 51, 45, 75, 210, 201, 126, 103, + 115, 130, 139, 139, 138, 139, 138, 142, 144, 147, 147, 158, 162, 159, 155, 157, + 148, 100, 53, 16, 10, 9, 8, 8, 8, 9, 8, 9, 10, 13, 10, 21, + 29, 30, 46, 55, 72, 126, 185, 234, 242, 244, 244, 244, 242, 240, 240, 237, + 237, 236, 232, 224, 229, 229, 224, 208, 190, 183, 179, 179, 177, 175, 178, 174, + 170, 169, 150, 140, 127, 115, 61, 18, 21, 22, 28, 20, 25, 28, 26, 33, + 33, 32, 33, 29, 33, 42, 97, 186, 183, 120, 106, 107, 120, 130, 134, 138, + 153, 157, 162, 161, 159, 157, 159, 163, 159, 157, 153, 134, 91, 46, 13, 9, + 6, 8, 9, 10, 14, 12, 2, 6, 4, 6, 13, 5, 5, 10, 16, 8, + 20, 64, 151, 165, 128, 118, 132, 147, 155, 159, 167, 174, 177, 182, 185, 158, + 100, 75, 75, 76, 73, 112, 201, 205, 208, 194, 166, 157, 167, 155, 150, 157, + 146, 147, 123, 119, 21, 9, 10, 2, 2, 1, 144, 134, 128, 85, 186, 221, + 222, 140, 110, 107, 126, 144, 154, 158, 162, 163, 159, 159, 161, 140, 138, 132, + 127, 49, 17, 18, 24, 45, 41, 37, 37, 41, 46, 37, 44, 61, 73, 71, + 84, 89, 92, 100, 99, 91, 73, 22, 67, 79, 104, 110, 102, 93, 93, 91, + 68, 44, 17, 92, 104, 102, 100, 104, 104, 84, 84, 245, 233, 233, 104, 93, + 104, 127, 135, 148, 162, 166, 165, 161, 158, 143, 132, 127, 20, 10, 9, 16, + 12, 18, 32, 30, 38, 5, 36, 30, 84, 87, 99, 216, 212, 210, 130, 126, + 131, 123, 154, 162, 155, 153, 167, 177, 177, 177, 175, 167, 169, 155, 91, 34, + 36, 59, 108, 174, 197, 178, 157, 174, 179, 178, 181, 182, 183, 186, 187, 185, + 159, 155, 103, 48, 32, 24, 22, 20, 22, 52, 85, 103, 199, 204, 169, 166, + 170, 189, 189, 186, 173, 151, 134, 122, 126, 76, 37, 42, 49, 56, 52, 59, + 80, 88, 97, 91, 99, 95, 84, 96, 135, 183, 240, 242, 245, 249, 244, 221, + 186, 143, 118, 112, 104, 97, 107, 110, 111, 97, 115, 114, 110, 104, 123, 126, + 127, 122, 116, 76, 80, 61, 59, 60, 65, 60, 60, 57, 51, 55, 41, 49, + 73, 92, 95, 108, 102, 99, 111, 114, 97, 75, 69, 79, 122, 97, 100, 128, + 124, 99, 89, 91, 110, 83, 10, 0, 22, 45, 60, 32, 38, 33, 29, 26, + 5, 14, 21, 49, 77, 73, 65, 241, 244, 241, 112, 95, 110, 131, 143, 153, + 161, 170, 170, 171, 166, 162, 161, 143, 135, 132, 124, 8, 14, 12, 24, 48, + 61, 67, 71, 77, 75, 73, 63, 72, 72, 71, 83, 106, 97, 97, 80, 87, + 84, 89, 89, 80, 93, 103, 99, 79, 56, 49, 45, 42, 53, 59, 71, 193, + 187, 136, 115, 122, 132, 130, 132, 146, 148, 147, 146, 122, 110, 77, 16, 8, + 14, 22, 29, 36, 46, 45, 57, 57, 41, 77, 81, 233, 244, 240, 106, 97, + 108, 124, 135, 143, 155, 167, 166, 178, 134, 40, 20, 16, 13, 16, 8, 44, + 72, 195, 198, 187, 130, 154, 155, 157, 139, 130, 130, 127, 123, 112, 44, 34, + 38, 53, 49, 44, 45, 37, 65, 212, 209, 182, 110, 107, 122, 134, 143, 148, + 140, 144, 144, 151, 151, 158, 167, 162, 159, 159, 144, 83, 25, 9, 6, 9, + 9, 13, 14, 14, 14, 13, 13, 13, 12, 18, 22, 32, 42, 60, 107, 204, + 236, 240, 242, 242, 242, 240, 241, 241, 241, 240, 238, 236, 234, 233, 230, 230, + 230, 226, 222, 169, 165, 182, 183, 190, 173, 185, 178, 175, 171, 161, 146, 132, + 138, 87, 26, 26, 28, 36, 33, 45, 38, 33, 24, 18, 22, 29, 29, 36, + 53, 96, 191, 197, 166, 103, 104, 112, 127, 134, 148, 162, 162, 159, 161, 162, + 161, 162, 165, 159, 155, 138, 77, 17, 12, 5, 4, 0, 1, 1, 5, 4, + 10, 18, 13, 16, 14, 20, 26, 17, 17, 9, 9, 21, 37, 135, 162, 139, + 118, 118, 134, 151, 157, 165, 170, 177, 181, 183, 183, 131, 73, 65, 59, 89, + 146, 210, 208, 216, 206, 171, 161, 166, 151, 154, 154, 150, 148, 127, 118, 25, + 14, 12, 12, 34, 42, 103, 88, 93, 80, 155, 216, 224, 146, 110, 107, 126, + 140, 154, 159, 162, 163, 157, 159, 157, 140, 135, 132, 126, 57, 18, 20, 29, + 41, 55, 64, 64, 64, 45, 68, 99, 119, 112, 115, 122, 122, 116, 110, 116, + 104, 76, 22, 67, 138, 122, 123, 104, 106, 110, 80, 69, 44, 20, 100, 102, + 87, 80, 80, 96, 84, 85, 245, 236, 233, 104, 92, 106, 128, 134, 148, 162, + 169, 167, 162, 157, 143, 134, 128, 20, 10, 10, 13, 14, 26, 34, 24, 37, + 12, 29, 32, 84, 95, 106, 214, 216, 213, 131, 107, 114, 123, 134, 161, 158, + 162, 175, 178, 177, 179, 178, 173, 167, 122, 45, 30, 32, 37, 63, 153, 199, + 185, 158, 159, 174, 189, 190, 193, 194, 195, 195, 191, 185, 163, 134, 65, 34, + 26, 25, 21, 40, 65, 89, 97, 201, 209, 183, 166, 186, 189, 174, 187, 170, + 163, 136, 127, 119, 99, 45, 36, 51, 48, 81, 69, 76, 92, 96, 112, 87, + 100, 103, 139, 222, 241, 244, 245, 249, 230, 182, 136, 114, 108, 108, 111, 122, + 72, 41, 34, 37, 48, 99, 106, 114, 151, 174, 181, 171, 128, 124, 112, 91, + 63, 85, 83, 65, 69, 63, 64, 57, 76, 88, 59, 93, 112, 108, 107, 72, + 96, 118, 119, 100, 96, 80, 73, 112, 111, 119, 115, 120, 107, 110, 104, 96, + 93, 64, 0, 60, 52, 55, 65, 53, 46, 55, 45, 22, 18, 20, 77, 77, + 65, 76, 244, 244, 241, 103, 99, 110, 132, 142, 153, 162, 169, 169, 174, 165, + 159, 158, 142, 135, 132, 120, 8, 10, 17, 38, 60, 56, 60, 63, 64, 73, + 68, 77, 59, 80, 108, 88, 79, 77, 81, 93, 80, 79, 93, 134, 147, 199, + 185, 131, 96, 73, 59, 60, 57, 55, 55, 61, 199, 198, 169, 116, 120, 130, + 132, 130, 139, 153, 146, 151, 120, 112, 80, 17, 10, 16, 28, 48, 52, 51, + 49, 55, 34, 64, 91, 138, 234, 244, 238, 111, 99, 110, 126, 136, 143, 159, + 167, 165, 158, 114, 36, 20, 10, 12, 18, 9, 52, 83, 204, 202, 194, 158, + 151, 151, 159, 142, 144, 132, 128, 130, 118, 41, 37, 32, 42, 52, 55, 37, + 33, 59, 213, 206, 190, 108, 107, 115, 130, 140, 148, 148, 150, 165, 169, 167, + 169, 169, 161, 159, 146, 87, 20, 5, 6, 8, 9, 16, 14, 17, 17, 17, + 17, 17, 22, 22, 22, 20, 33, 48, 95, 221, 238, 238, 242, 241, 238, 229, + 218, 197, 194, 185, 186, 190, 201, 205, 208, 218, 221, 224, 220, 224, 210, 171, + 198, 197, 206, 205, 197, 178, 182, 175, 167, 150, 139, 132, 110, 55, 22, 20, + 48, 41, 46, 61, 60, 56, 49, 56, 64, 65, 64, 52, 104, 193, 201, 183, + 106, 104, 114, 127, 139, 151, 162, 165, 167, 165, 166, 163, 167, 165, 161, 136, + 77, 16, 12, 4, 2, 4, 6, 2, 4, 9, 6, 20, 30, 37, 30, 44, + 40, 41, 44, 48, 40, 41, 13, 42, 122, 159, 158, 118, 114, 128, 144, 154, + 159, 166, 173, 178, 185, 191, 178, 118, 56, 79, 102, 174, 212, 210, 210, 193, + 178, 166, 161, 158, 162, 155, 150, 148, 128, 119, 17, 12, 13, 22, 20, 6, + 103, 97, 93, 97, 107, 208, 213, 175, 114, 107, 120, 142, 151, 158, 161, 159, + 159, 157, 146, 128, 135, 131, 126, 81, 22, 20, 36, 45, 61, 68, 60, 63, + 34, 100, 116, 122, 118, 112, 134, 128, 131, 122, 123, 97, 73, 20, 84, 146, + 139, 142, 136, 126, 104, 92, 61, 41, 22, 93, 102, 87, 87, 83, 92, 83, + 81, 241, 230, 233, 102, 92, 107, 130, 136, 148, 162, 167, 170, 159, 158, 144, + 135, 128, 21, 12, 10, 12, 6, 29, 29, 14, 26, 12, 44, 21, 102, 95, + 143, 221, 220, 216, 115, 106, 114, 136, 135, 146, 157, 169, 178, 179, 179, 177, + 174, 170, 161, 92, 34, 29, 30, 37, 64, 126, 201, 198, 163, 153, 171, 177, + 189, 195, 198, 198, 198, 197, 191, 167, 155, 88, 41, 24, 25, 22, 53, 75, + 91, 100, 194, 214, 198, 170, 186, 187, 185, 186, 171, 170, 140, 132, 123, 116, + 68, 37, 49, 44, 46, 61, 95, 76, 81, 79, 88, 85, 104, 199, 244, 242, + 246, 248, 218, 158, 116, 111, 111, 115, 134, 120, 63, 32, 28, 32, 29, 48, + 97, 179, 193, 185, 159, 166, 166, 171, 130, 127, 118, 93, 49, 67, 64, 75, + 59, 61, 60, 61, 56, 63, 128, 123, 116, 107, 111, 106, 95, 100, 88, 76, + 69, 93, 123, 118, 107, 104, 99, 103, 103, 112, 100, 100, 76, 16, 69, 44, + 25, 17, 13, 21, 26, 49, 29, 12, 22, 75, 88, 72, 108, 244, 244, 238, + 106, 99, 111, 132, 142, 151, 161, 169, 169, 173, 163, 158, 142, 131, 134, 131, + 120, 9, 14, 18, 48, 49, 61, 60, 71, 56, 61, 61, 52, 37, 81, 104, + 91, 75, 73, 83, 81, 84, 87, 163, 224, 205, 217, 205, 161, 100, 80, 60, + 69, 57, 51, 55, 56, 199, 199, 187, 118, 120, 131, 139, 134, 135, 146, 140, + 135, 122, 115, 69, 18, 9, 21, 36, 48, 42, 45, 65, 40, 33, 64, 93, + 142, 234, 242, 240, 118, 102, 114, 127, 140, 147, 161, 167, 162, 154, 84, 32, + 17, 12, 13, 20, 8, 57, 89, 202, 206, 204, 124, 147, 150, 157, 128, 134, + 138, 127, 128, 115, 38, 29, 30, 38, 40, 46, 46, 38, 59, 218, 209, 193, + 107, 108, 114, 127, 140, 148, 154, 167, 170, 174, 175, 170, 167, 165, 150, 85, + 22, 5, 9, 10, 9, 14, 16, 24, 30, 28, 29, 25, 26, 22, 26, 32, + 25, 36, 65, 169, 238, 238, 238, 234, 230, 197, 175, 151, 150, 147, 151, 154, + 158, 163, 167, 171, 174, 178, 181, 191, 195, 204, 198, 199, 195, 194, 197, 198, + 195, 187, 178, 169, 154, 146, 128, 119, 75, 28, 32, 44, 49, 42, 51, 40, + 46, 55, 60, 59, 48, 44, 45, 88, 197, 205, 193, 107, 104, 114, 128, 138, + 154, 162, 165, 166, 167, 166, 169, 166, 165, 150, 96, 26, 13, 4, 6, 9, + 6, 8, 8, 14, 12, 9, 33, 40, 42, 41, 44, 32, 28, 22, 30, 33, + 45, 1, 44, 100, 143, 170, 134, 112, 120, 138, 148, 155, 162, 170, 177, 182, + 195, 194, 185, 138, 110, 148, 204, 204, 212, 208, 189, 191, 173, 179, 165, 162, + 161, 154, 150, 135, 119, 24, 12, 5, 30, 5, 59, 69, 89, 93, 81, 88, + 191, 216, 197, 114, 103, 116, 139, 151, 155, 158, 161, 157, 154, 138, 136, 135, + 131, 126, 97, 25, 22, 36, 48, 60, 64, 55, 69, 41, 103, 132, 126, 130, + 128, 122, 126, 124, 128, 112, 93, 76, 20, 91, 139, 166, 189, 162, 140, 116, + 103, 67, 44, 24, 87, 97, 89, 102, 84, 89, 79, 91, 240, 237, 232, 93, + 93, 106, 127, 134, 147, 162, 169, 167, 162, 157, 147, 138, 127, 18, 13, 10, + 10, 16, 29, 29, 17, 17, 14, 34, 21, 88, 100, 143, 226, 225, 217, 118, + 118, 114, 123, 136, 155, 158, 171, 177, 181, 181, 177, 174, 167, 143, 53, 29, + 25, 30, 49, 53, 107, 191, 204, 171, 150, 154, 173, 182, 191, 198, 198, 199, + 199, 195, 191, 169, 124, 51, 29, 25, 29, 55, 76, 91, 91, 190, 220, 212, + 175, 170, 185, 174, 185, 173, 166, 147, 136, 128, 131, 85, 36, 37, 45, 41, + 60, 83, 89, 93, 88, 77, 93, 130, 229, 237, 242, 245, 224, 146, 114, 114, + 114, 120, 139, 140, 83, 49, 26, 29, 32, 30, 51, 112, 197, 191, 162, 165, + 170, 169, 174, 134, 130, 115, 107, 84, 46, 56, 51, 56, 49, 60, 59, 52, + 22, 118, 128, 100, 115, 110, 116, 126, 120, 97, 76, 67, 88, 126, 111, 107, + 99, 97, 103, 100, 96, 99, 108, 42, 14, 44, 51, 38, 13, 16, 14, 20, + 37, 25, 13, 18, 75, 85, 67, 91, 242, 244, 240, 110, 100, 110, 132, 143, + 150, 161, 167, 170, 174, 162, 158, 136, 131, 131, 131, 119, 9, 14, 14, 25, + 51, 57, 72, 65, 52, 72, 55, 59, 41, 72, 108, 80, 95, 77, 69, 87, + 77, 95, 198, 226, 208, 213, 183, 139, 97, 67, 49, 53, 59, 49, 55, 57, + 206, 204, 194, 122, 123, 131, 136, 139, 140, 131, 146, 132, 120, 115, 59, 17, + 10, 20, 38, 46, 40, 44, 76, 41, 29, 63, 95, 138, 232, 241, 240, 120, + 103, 114, 126, 138, 146, 161, 165, 163, 144, 61, 24, 14, 12, 13, 24, 10, + 56, 85, 205, 208, 232, 127, 147, 147, 148, 139, 131, 130, 127, 124, 112, 34, + 30, 24, 38, 37, 46, 36, 42, 59, 222, 220, 204, 107, 106, 115, 126, 138, + 148, 154, 166, 173, 173, 171, 167, 163, 158, 111, 32, 6, 9, 9, 8, 9, + 17, 26, 33, 33, 33, 26, 28, 26, 28, 28, 34, 32, 42, 89, 218, 236, + 236, 229, 214, 179, 146, 134, 135, 140, 148, 157, 166, 173, 183, 193, 197, 201, + 202, 199, 183, 187, 191, 194, 195, 198, 202, 201, 205, 202, 182, 178, 163, 154, + 147, 132, 128, 95, 36, 30, 34, 41, 59, 46, 48, 52, 38, 33, 49, 60, + 60, 60, 76, 198, 210, 199, 110, 106, 115, 128, 139, 154, 162, 165, 167, 166, + 171, 169, 165, 157, 116, 40, 16, 6, 6, 9, 9, 8, 10, 12, 8, 9, + 5, 36, 42, 33, 26, 28, 33, 28, 18, 36, 37, 37, 4, 46, 91, 115, + 165, 146, 116, 110, 128, 136, 154, 161, 169, 173, 182, 187, 199, 198, 195, 182, + 204, 210, 210, 212, 212, 193, 181, 179, 173, 167, 169, 159, 153, 151, 135, 123, + 18, 12, 9, 20, 6, 1, 120, 81, 84, 80, 71, 130, 213, 205, 120, 102, + 112, 130, 144, 153, 158, 161, 159, 157, 147, 132, 136, 128, 128, 111, 32, 25, + 36, 44, 57, 68, 59, 76, 40, 77, 118, 126, 124, 120, 123, 123, 134, 119, + 115, 95, 77, 24, 118, 159, 210, 216, 225, 183, 140, 115, 81, 42, 22, 88, + 96, 97, 87, 85, 87, 80, 84, 238, 241, 225, 97, 92, 103, 122, 134, 146, + 162, 169, 167, 162, 158, 147, 138, 128, 20, 9, 16, 10, 14, 25, 33, 30, + 30, 8, 30, 29, 87, 96, 114, 228, 225, 221, 127, 118, 126, 122, 142, 138, + 162, 167, 179, 173, 181, 178, 169, 165, 123, 41, 28, 22, 32, 42, 55, 88, + 183, 208, 189, 151, 148, 167, 178, 187, 191, 198, 199, 201, 199, 195, 175, 157, + 69, 32, 24, 26, 55, 75, 89, 91, 170, 224, 216, 183, 185, 181, 186, 186, + 177, 161, 148, 139, 130, 122, 102, 44, 34, 45, 41, 56, 87, 96, 80, 80, + 92, 88, 181, 234, 241, 244, 233, 157, 116, 116, 120, 127, 143, 142, 146, 71, + 45, 26, 18, 34, 37, 68, 89, 202, 198, 165, 166, 170, 163, 165, 166, 132, + 124, 120, 93, 46, 44, 52, 55, 48, 51, 57, 56, 42, 122, 136, 106, 115, + 110, 116, 126, 107, 92, 88, 59, 99, 127, 116, 96, 102, 96, 108, 104, 102, + 106, 100, 60, 0, 53, 41, 25, 13, 30, 41, 51, 38, 13, 12, 16, 71, + 83, 61, 89, 244, 242, 232, 108, 99, 111, 131, 139, 154, 161, 166, 170, 173, + 161, 154, 146, 136, 131, 130, 115, 9, 14, 17, 32, 53, 65, 67, 63, 51, + 64, 55, 53, 38, 81, 97, 75, 84, 89, 80, 79, 75, 100, 214, 220, 224, + 218, 177, 115, 85, 49, 32, 53, 49, 49, 51, 60, 210, 208, 202, 126, 123, + 134, 138, 142, 139, 132, 150, 130, 116, 110, 46, 17, 10, 18, 38, 45, 38, + 45, 64, 42, 25, 77, 89, 95, 229, 241, 237, 119, 104, 114, 124, 135, 143, + 162, 163, 161, 142, 41, 17, 14, 14, 14, 17, 9, 53, 88, 205, 206, 208, + 146, 138, 143, 143, 139, 131, 130, 123, 122, 107, 29, 25, 24, 34, 37, 41, + 37, 34, 52, 228, 224, 210, 111, 106, 116, 127, 136, 147, 155, 166, 173, 173, + 169, 157, 161, 136, 49, 6, 10, 10, 9, 14, 16, 20, 38, 41, 36, 32, + 30, 33, 30, 29, 42, 30, 29, 63, 179, 216, 230, 218, 195, 159, 135, 124, + 132, 142, 157, 166, 175, 182, 190, 201, 210, 213, 216, 217, 216, 213, 198, 193, + 194, 189, 185, 183, 206, 206, 206, 183, 178, 161, 158, 150, 136, 128, 106, 52, + 30, 28, 49, 46, 56, 49, 44, 40, 42, 26, 38, 56, 33, 64, 195, 216, + 206, 108, 106, 115, 130, 138, 154, 161, 165, 167, 167, 170, 166, 162, 136, 53, + 14, 12, 9, 12, 9, 13, 13, 12, 8, 8, 9, 5, 41, 42, 24, 26, + 25, 30, 18, 22, 42, 29, 44, 5, 42, 73, 95, 126, 165, 124, 112, 116, + 132, 148, 158, 166, 170, 177, 186, 194, 201, 202, 205, 208, 205, 209, 221, 208, + 190, 183, 183, 175, 170, 163, 161, 153, 150, 135, 122, 16, 12, 5, 12, 63, + 72, 114, 68, 80, 83, 79, 95, 193, 206, 132, 103, 111, 124, 142, 150, 154, + 158, 163, 165, 158, 148, 126, 126, 127, 116, 44, 22, 34, 37, 55, 68, 59, + 65, 61, 51, 111, 126, 126, 130, 124, 126, 126, 123, 108, 99, 81, 34, 155, + 193, 226, 209, 204, 198, 209, 139, 102, 46, 24, 81, 89, 91, 79, 77, 81, + 72, 79, 240, 240, 230, 102, 95, 99, 118, 132, 148, 161, 170, 170, 162, 158, + 147, 138, 126, 17, 12, 13, 13, 12, 24, 29, 37, 34, 30, 26, 32, 79, + 89, 104, 226, 226, 222, 128, 104, 114, 124, 134, 136, 153, 163, 174, 181, 183, + 178, 167, 157, 100, 34, 26, 22, 32, 48, 60, 81, 171, 216, 198, 155, 144, + 158, 173, 182, 190, 193, 197, 201, 202, 198, 193, 174, 102, 36, 25, 28, 55, + 75, 80, 83, 144, 221, 221, 187, 169, 181, 187, 177, 165, 146, 140, 140, 134, + 123, 115, 60, 36, 40, 38, 55, 87, 97, 85, 85, 87, 79, 197, 238, 241, + 242, 190, 124, 118, 124, 130, 130, 144, 148, 148, 65, 26, 24, 22, 29, 36, + 55, 92, 205, 206, 183, 163, 169, 167, 165, 167, 136, 132, 119, 91, 40, 40, + 51, 44, 51, 55, 59, 40, 71, 111, 122, 106, 99, 97, 106, 102, 106, 89, + 72, 41, 107, 127, 116, 96, 106, 96, 106, 104, 103, 96, 97, 56, 0, 51, + 42, 33, 13, 16, 22, 16, 12, 24, 16, 17, 72, 83, 68, 85, 241, 240, + 226, 104, 99, 112, 132, 143, 153, 161, 167, 166, 173, 173, 161, 154, 139, 124, + 127, 112, 10, 16, 16, 46, 51, 57, 67, 73, 71, 69, 52, 56, 38, 75, + 97, 73, 72, 84, 67, 83, 76, 110, 218, 232, 222, 169, 118, 106, 61, 42, + 41, 48, 45, 42, 48, 60, 213, 216, 210, 130, 124, 135, 143, 158, 144, 144, + 148, 120, 115, 107, 33, 14, 10, 17, 38, 41, 38, 45, 64, 41, 22, 88, + 91, 71, 225, 240, 234, 120, 104, 114, 126, 138, 146, 162, 162, 158, 132, 34, + 16, 14, 13, 13, 17, 10, 44, 96, 209, 214, 206, 140, 135, 139, 144, 138, + 132, 132, 131, 115, 104, 25, 22, 18, 30, 32, 34, 45, 53, 55, 228, 228, + 216, 112, 108, 118, 127, 138, 148, 157, 161, 173, 169, 163, 159, 151, 96, 21, + 8, 10, 10, 9, 8, 14, 18, 38, 42, 60, 59, 57, 52, 42, 34, 30, + 40, 48, 122, 217, 225, 212, 179, 144, 126, 124, 136, 146, 157, 169, 175, 185, + 191, 199, 208, 199, 148, 116, 144, 193, 217, 214, 201, 193, 187, 195, 197, 206, + 204, 202, 183, 175, 163, 157, 147, 134, 127, 112, 71, 32, 22, 40, 44, 55, + 60, 45, 40, 42, 34, 41, 57, 20, 77, 204, 218, 213, 112, 107, 118, 131, + 138, 154, 161, 166, 169, 170, 170, 163, 153, 96, 25, 16, 12, 12, 10, 17, + 18, 13, 10, 10, 9, 12, 9, 40, 46, 30, 26, 16, 20, 22, 40, 33, + 25, 26, 2, 44, 63, 81, 104, 159, 158, 114, 106, 124, 142, 155, 162, 169, + 175, 185, 186, 191, 199, 197, 198, 212, 217, 209, 195, 189, 186, 179, 175, 170, + 163, 161, 153, 150, 132, 120, 13, 9, 9, 17, 5, 10, 97, 110, 87, 75, + 71, 64, 132, 204, 162, 104, 107, 118, 134, 144, 150, 158, 166, 161, 162, 153, + 126, 122, 128, 123, 61, 25, 28, 44, 49, 65, 63, 71, 59, 48, 106, 123, + 130, 126, 130, 130, 128, 124, 114, 102, 79, 34, 167, 206, 224, 216, 220, 201, + 179, 142, 100, 42, 25, 80, 97, 91, 93, 80, 83, 75, 96, 240, 241, 233, + 107, 93, 97, 112, 136, 146, 161, 167, 167, 163, 158, 147, 139, 128, 22, 14, + 8, 13, 14, 21, 21, 36, 33, 42, 16, 13, 79, 87, 103, 225, 225, 220, + 115, 103, 115, 127, 122, 127, 142, 158, 170, 177, 177, 174, 161, 147, 73, 29, + 26, 20, 34, 63, 53, 77, 153, 216, 206, 159, 142, 148, 167, 177, 183, 189, + 190, 195, 201, 201, 194, 181, 142, 48, 30, 24, 51, 72, 79, 84, 120, 218, + 224, 191, 171, 182, 182, 175, 154, 143, 136, 143, 139, 126, 124, 76, 34, 34, + 40, 53, 84, 102, 81, 72, 75, 85, 208, 232, 240, 238, 157, 118, 123, 131, + 135, 139, 148, 151, 154, 59, 28, 24, 17, 29, 34, 55, 81, 205, 212, 204, + 169, 170, 169, 165, 171, 142, 136, 116, 88, 33, 33, 42, 48, 44, 48, 51, + 46, 60, 120, 118, 108, 103, 103, 104, 100, 112, 88, 65, 56, 85, 108, 114, + 102, 104, 104, 104, 107, 103, 103, 95, 57, 13, 53, 40, 34, 8, 16, 40, + 12, 12, 25, 10, 18, 79, 81, 69, 89, 240, 236, 178, 100, 99, 112, 132, + 139, 148, 155, 163, 166, 173, 174, 169, 158, 144, 128, 126, 116, 10, 17, 18, + 49, 42, 59, 61, 64, 72, 55, 53, 48, 36, 83, 88, 73, 79, 80, 75, + 83, 77, 118, 230, 234, 221, 139, 107, 88, 49, 38, 33, 51, 45, 41, 55, + 67, 213, 216, 210, 131, 126, 139, 163, 162, 161, 154, 147, 118, 116, 107, 29, + 16, 12, 18, 37, 40, 38, 46, 52, 34, 22, 60, 89, 103, 224, 238, 236, + 123, 103, 115, 124, 138, 146, 163, 163, 159, 124, 30, 16, 13, 16, 13, 18, + 10, 48, 88, 209, 213, 228, 119, 132, 134, 140, 132, 136, 139, 134, 114, 92, + 25, 22, 22, 29, 32, 29, 38, 32, 53, 232, 221, 214, 111, 108, 119, 130, + 139, 151, 159, 161, 171, 167, 161, 159, 139, 52, 10, 10, 10, 10, 12, 14, + 16, 38, 40, 53, 46, 48, 55, 64, 42, 32, 26, 36, 73, 199, 222, 220, + 197, 136, 112, 124, 135, 147, 158, 167, 174, 182, 186, 195, 202, 202, 104, 64, + 59, 69, 106, 154, 218, 209, 204, 190, 197, 205, 208, 208, 195, 179, 175, 167, + 159, 147, 134, 122, 116, 83, 38, 40, 41, 46, 51, 48, 44, 38, 45, 41, + 37, 56, 34, 64, 217, 220, 216, 112, 108, 119, 131, 139, 153, 162, 165, 167, + 171, 166, 158, 136, 56, 14, 12, 13, 13, 21, 17, 16, 10, 9, 13, 10, + 13, 12, 45, 49, 32, 29, 34, 29, 33, 41, 20, 26, 29, 1, 41, 59, + 77, 81, 134, 171, 123, 104, 120, 135, 151, 161, 169, 174, 181, 187, 189, 189, + 187, 187, 190, 198, 199, 195, 193, 193, 182, 174, 171, 163, 162, 154, 151, 135, + 116, 12, 10, 6, 25, 9, 9, 95, 92, 93, 67, 72, 67, 96, 183, 189, + 108, 106, 114, 123, 140, 153, 159, 167, 165, 165, 154, 123, 123, 128, 126, 92, + 29, 26, 32, 37, 48, 69, 68, 64, 45, 87, 126, 127, 123, 128, 126, 128, + 124, 111, 97, 87, 28, 182, 213, 224, 217, 185, 163, 134, 107, 95, 40, 25, + 56, 93, 96, 100, 75, 81, 73, 85, 241, 242, 234, 107, 97, 96, 115, 130, + 143, 158, 166, 167, 165, 155, 144, 140, 127, 21, 16, 20, 14, 17, 32, 24, + 24, 29, 37, 25, 26, 69, 81, 96, 222, 233, 222, 126, 115, 115, 120, 120, + 126, 132, 146, 159, 177, 175, 162, 158, 140, 57, 30, 22, 20, 34, 55, 49, + 68, 138, 210, 212, 174, 138, 140, 159, 170, 175, 182, 186, 189, 194, 197, 195, + 181, 169, 79, 29, 25, 48, 63, 77, 81, 106, 213, 224, 194, 170, 181, 185, + 166, 150, 131, 128, 130, 136, 128, 126, 97, 44, 30, 38, 49, 81, 88, 80, + 75, 87, 88, 209, 232, 241, 218, 142, 122, 128, 135, 134, 150, 154, 159, 161, + 56, 28, 26, 22, 28, 38, 44, 75, 206, 216, 212, 171, 170, 174, 167, 170, + 143, 134, 118, 88, 29, 29, 38, 38, 37, 41, 45, 16, 64, 112, 111, 108, + 108, 107, 102, 99, 122, 91, 63, 51, 107, 123, 99, 106, 108, 116, 123, 114, + 106, 100, 102, 41, 16, 36, 37, 41, 10, 16, 14, 12, 12, 10, 13, 18, + 73, 81, 68, 81, 236, 236, 166, 99, 96, 111, 120, 132, 142, 151, 162, 166, + 175, 173, 169, 158, 146, 126, 128, 115, 12, 18, 16, 33, 41, 48, 60, 64, + 64, 56, 53, 52, 34, 64, 84, 73, 75, 72, 68, 72, 79, 157, 244, 236, + 210, 122, 103, 77, 34, 37, 37, 48, 44, 40, 49, 67, 216, 217, 210, 131, + 127, 139, 163, 157, 161, 148, 150, 116, 116, 106, 30, 14, 10, 20, 34, 38, + 37, 37, 48, 34, 17, 61, 95, 99, 224, 237, 236, 120, 104, 112, 126, 138, + 148, 165, 161, 163, 123, 26, 14, 14, 17, 13, 24, 12, 41, 79, 206, 214, + 210, 134, 127, 131, 140, 135, 132, 136, 132, 114, 85, 20, 20, 20, 26, 30, + 33, 34, 34, 76, 232, 233, 217, 112, 108, 119, 130, 139, 153, 159, 163, 170, + 165, 161, 157, 110, 30, 10, 12, 13, 9, 12, 9, 10, 44, 46, 55, 71, + 59, 44, 64, 41, 38, 34, 42, 132, 213, 218, 210, 167, 112, 119, 132, 142, + 157, 166, 170, 179, 179, 190, 194, 205, 165, 72, 37, 22, 28, 46, 103, 198, + 218, 209, 195, 186, 208, 206, 206, 204, 189, 175, 169, 158, 147, 131, 118, 118, + 92, 42, 40, 36, 53, 45, 48, 57, 37, 45, 36, 46, 51, 25, 72, 217, + 226, 217, 114, 110, 119, 131, 138, 154, 161, 161, 166, 166, 161, 155, 110, 33, + 14, 12, 17, 18, 24, 20, 13, 10, 12, 16, 9, 13, 9, 42, 37, 42, + 24, 37, 33, 33, 33, 33, 28, 24, 4, 36, 55, 64, 63, 92, 162, 138, + 103, 110, 131, 146, 157, 166, 173, 178, 185, 191, 191, 194, 193, 190, 189, 191, + 202, 193, 194, 185, 177, 169, 165, 165, 155, 148, 134, 120, 13, 9, 6, 18, + 12, 9, 69, 69, 72, 79, 63, 61, 67, 128, 185, 122, 102, 107, 115, 138, + 150, 158, 162, 167, 161, 147, 128, 123, 130, 124, 110, 36, 30, 41, 38, 44, + 67, 56, 72, 49, 81, 112, 122, 131, 128, 132, 126, 120, 103, 100, 88, 32, + 181, 224, 229, 218, 165, 124, 97, 92, 73, 34, 25, 44, 83, 93, 97, 77, + 76, 71, 87, 240, 241, 230, 103, 95, 99, 119, 131, 140, 158, 163, 167, 162, + 155, 146, 142, 124, 22, 18, 17, 14, 17, 26, 24, 13, 25, 26, 30, 36, + 56, 88, 112, 228, 230, 222, 127, 118, 123, 119, 118, 123, 136, 150, 146, 154, + 157, 153, 154, 131, 40, 26, 20, 20, 33, 37, 52, 67, 99, 202, 213, 183, + 138, 135, 151, 163, 170, 171, 175, 181, 189, 194, 194, 189, 181, 106, 34, 24, + 49, 56, 75, 80, 91, 205, 222, 204, 173, 179, 185, 167, 157, 147, 147, 143, + 130, 131, 122, 108, 53, 33, 36, 34, 68, 83, 76, 72, 85, 81, 208, 234, + 241, 187, 134, 127, 131, 136, 135, 147, 154, 159, 161, 55, 25, 24, 17, 25, + 41, 61, 72, 204, 218, 217, 171, 174, 173, 163, 171, 147, 134, 120, 84, 29, + 25, 30, 34, 36, 40, 48, 29, 84, 115, 120, 116, 108, 118, 104, 107, 92, + 88, 84, 45, 99, 115, 123, 119, 128, 118, 115, 107, 114, 108, 93, 61, 0, + 51, 36, 12, 14, 10, 6, 12, 10, 16, 14, 18, 59, 80, 61, 84, 233, + 230, 178, 103, 100, 108, 114, 126, 134, 148, 161, 167, 173, 174, 162, 157, 143, + 128, 132, 111, 13, 17, 18, 33, 40, 49, 57, 61, 56, 67, 53, 49, 34, + 63, 77, 79, 63, 77, 75, 69, 91, 197, 237, 237, 208, 122, 103, 63, 34, + 32, 36, 36, 42, 36, 48, 63, 212, 218, 206, 130, 128, 142, 167, 162, 154, + 148, 147, 119, 115, 102, 24, 14, 14, 22, 30, 38, 36, 45, 46, 37, 16, + 69, 89, 69, 221, 237, 232, 118, 106, 116, 126, 138, 153, 165, 162, 159, 116, + 32, 16, 14, 10, 17, 21, 12, 34, 67, 206, 212, 201, 130, 126, 130, 140, + 138, 130, 134, 132, 114, 85, 17, 16, 13, 24, 28, 34, 32, 30, 57, 233, + 226, 220, 112, 108, 119, 131, 140, 153, 161, 163, 169, 161, 155, 146, 75, 14, + 13, 14, 12, 12, 16, 13, 12, 38, 49, 55, 65, 68, 45, 59, 42, 40, + 34, 37, 158, 209, 216, 201, 135, 107, 120, 134, 147, 159, 163, 175, 181, 185, + 191, 197, 208, 130, 42, 20, 18, 22, 41, 81, 159, 221, 212, 206, 182, 206, + 210, 213, 205, 193, 177, 170, 161, 147, 134, 123, 122, 107, 52, 41, 32, 36, + 45, 48, 42, 21, 42, 29, 57, 44, 36, 60, 210, 226, 224, 112, 107, 118, + 131, 138, 153, 162, 158, 166, 165, 159, 144, 81, 21, 16, 16, 17, 21, 17, + 14, 14, 13, 14, 13, 12, 13, 9, 41, 42, 25, 38, 38, 34, 36, 34, + 34, 24, 21, 1, 29, 45, 51, 64, 79, 124, 155, 119, 100, 119, 139, 154, + 162, 173, 177, 183, 187, 183, 182, 186, 195, 191, 185, 189, 201, 194, 186, 179, + 173, 166, 165, 157, 150, 139, 120, 8, 12, 8, 10, 16, 2, 60, 59, 60, + 53, 48, 53, 55, 84, 174, 167, 102, 104, 115, 136, 148, 155, 157, 155, 151, + 148, 122, 123, 123, 126, 123, 65, 30, 30, 36, 40, 64, 64, 73, 55, 61, + 100, 111, 114, 116, 110, 114, 114, 107, 100, 89, 44, 186, 225, 233, 197, 150, + 102, 95, 95, 68, 34, 28, 34, 52, 60, 73, 65, 76, 67, 79, 238, 240, + 222, 104, 93, 102, 116, 126, 136, 157, 167, 165, 162, 155, 143, 142, 124, 22, + 20, 22, 13, 17, 8, 22, 24, 12, 29, 34, 28, 49, 81, 106, 226, 229, + 221, 128, 104, 111, 127, 128, 127, 138, 140, 139, 151, 150, 150, 148, 127, 41, + 29, 25, 21, 33, 42, 56, 69, 80, 191, 214, 193, 142, 132, 140, 157, 163, + 166, 169, 174, 181, 189, 190, 189, 182, 140, 49, 28, 42, 55, 69, 69, 79, + 194, 225, 212, 174, 175, 185, 173, 161, 157, 150, 147, 144, 130, 122, 120, 76, + 36, 36, 33, 63, 89, 100, 77, 80, 71, 187, 236, 241, 181, 128, 132, 139, + 142, 136, 148, 158, 162, 162, 53, 26, 21, 17, 24, 32, 49, 77, 213, 220, + 218, 173, 173, 174, 167, 171, 147, 135, 123, 85, 28, 25, 28, 32, 48, 33, + 46, 30, 80, 88, 77, 85, 84, 85, 84, 87, 83, 83, 60, 32, 96, 108, + 110, 100, 115, 106, 99, 95, 106, 102, 85, 40, 0, 44, 14, 18, 13, 24, + 12, 30, 12, 17, 17, 16, 60, 77, 71, 84, 237, 238, 220, 104, 100, 106, + 114, 114, 134, 153, 162, 173, 175, 167, 157, 147, 132, 127, 123, 107, 16, 20, + 20, 30, 44, 44, 53, 57, 57, 63, 51, 48, 34, 61, 80, 79, 69, 67, + 73, 72, 107, 220, 237, 241, 209, 126, 100, 52, 32, 26, 38, 29, 42, 41, + 38, 53, 214, 213, 206, 126, 128, 140, 159, 154, 153, 144, 136, 118, 114, 97, + 25, 12, 13, 18, 26, 37, 34, 38, 65, 36, 13, 76, 87, 80, 214, 234, + 226, 122, 107, 116, 127, 140, 154, 158, 161, 162, 131, 41, 16, 17, 17, 16, + 22, 12, 30, 60, 206, 205, 199, 122, 127, 130, 140, 131, 132, 130, 132, 114, + 80, 16, 17, 10, 29, 25, 26, 25, 29, 55, 230, 228, 220, 114, 107, 118, + 128, 139, 153, 162, 166, 166, 158, 155, 140, 53, 13, 13, 13, 13, 10, 9, + 16, 12, 49, 55, 49, 44, 38, 44, 41, 41, 38, 30, 37, 165, 208, 201, + 191, 119, 108, 120, 134, 147, 166, 166, 178, 182, 185, 191, 197, 201, 116, 37, + 24, 18, 18, 33, 60, 135, 222, 214, 208, 190, 204, 208, 209, 208, 201, 179, + 174, 161, 153, 135, 126, 119, 112, 72, 45, 45, 36, 40, 49, 42, 38, 29, + 25, 25, 26, 25, 57, 197, 225, 225, 115, 107, 118, 131, 136, 153, 159, 158, + 165, 162, 154, 136, 59, 17, 16, 16, 20, 18, 20, 16, 13, 13, 12, 12, + 12, 16, 13, 33, 36, 37, 42, 38, 38, 37, 34, 37, 20, 21, 1, 26, + 38, 52, 57, 71, 80, 162, 138, 102, 110, 135, 150, 159, 169, 177, 181, 181, + 182, 179, 183, 187, 197, 197, 183, 190, 194, 189, 183, 174, 167, 167, 157, 151, + 139, 120, 8, 9, 8, 18, 13, 5, 59, 46, 52, 60, 42, 41, 38, 48, + 100, 186, 114, 102, 112, 126, 142, 148, 155, 158, 150, 134, 122, 122, 122, 123, + 126, 99, 41, 36, 40, 42, 49, 53, 53, 57, 69, 84, 73, 75, 81, 77, + 80, 77, 108, 100, 85, 36, 170, 224, 236, 179, 120, 102, 95, 92, 67, 32, + 26, 34, 40, 42, 46, 48, 49, 75, 83, 240, 238, 229, 107, 88, 97, 115, + 116, 134, 148, 158, 163, 161, 154, 142, 140, 126, 24, 20, 9, 9, 12, 13, + 17, 5, 5, 20, 29, 30, 42, 80, 92, 224, 228, 228, 123, 99, 111, 122, + 130, 142, 143, 138, 134, 140, 135, 147, 144, 122, 45, 26, 26, 14, 36, 34, + 56, 53, 73, 182, 214, 195, 139, 130, 135, 150, 155, 162, 163, 169, 177, 183, + 187, 186, 181, 161, 73, 34, 34, 51, 60, 68, 79, 175, 226, 217, 179, 169, + 183, 187, 161, 169, 162, 154, 148, 144, 131, 122, 111, 52, 34, 32, 55, 85, + 89, 68, 69, 76, 177, 221, 240, 169, 126, 135, 142, 143, 136, 150, 166, 170, + 170, 61, 34, 20, 21, 24, 33, 65, 89, 221, 224, 221, 177, 175, 175, 169, + 170, 151, 138, 126, 81, 25, 28, 25, 28, 29, 28, 33, 40, 42, 64, 64, + 67, 68, 73, 69, 64, 77, 80, 42, 40, 37, 83, 75, 65, 60, 77, 63, + 53, 51, 72, 49, 9, 24, 16, 12, 10, 12, 17, 14, 13, 13, 22, 17, + 17, 55, 67, 73, 97, 238, 234, 226, 106, 104, 108, 114, 122, 135, 159, 161, + 167, 174, 170, 159, 146, 122, 130, 132, 103, 17, 21, 21, 26, 32, 37, 44, + 51, 53, 49, 49, 46, 32, 64, 69, 73, 63, 65, 65, 75, 130, 240, 245, + 240, 190, 120, 100, 44, 29, 28, 30, 34, 33, 36, 40, 48, 214, 218, 209, + 130, 130, 139, 153, 155, 154, 151, 119, 119, 114, 95, 20, 14, 10, 20, 24, + 32, 36, 37, 49, 30, 20, 42, 77, 76, 206, 230, 228, 122, 108, 118, 128, + 143, 154, 165, 163, 162, 139, 46, 16, 17, 17, 14, 18, 10, 49, 79, 199, + 212, 209, 128, 124, 124, 134, 134, 131, 128, 126, 112, 72, 16, 13, 12, 20, + 17, 22, 28, 30, 49, 230, 229, 225, 116, 110, 115, 124, 140, 154, 162, 166, + 167, 158, 154, 139, 45, 13, 16, 16, 25, 17, 12, 18, 17, 44, 52, 41, + 46, 46, 44, 41, 49, 41, 32, 34, 163, 202, 199, 167, 106, 111, 119, 130, + 148, 163, 166, 171, 175, 183, 189, 194, 208, 107, 37, 26, 21, 21, 21, 42, + 127, 225, 220, 210, 189, 194, 206, 206, 213, 208, 191, 174, 163, 153, 143, 134, + 119, 119, 88, 51, 52, 29, 30, 34, 29, 40, 21, 4, 18, 13, 22, 61, + 181, 221, 226, 115, 108, 119, 131, 135, 151, 159, 161, 163, 159, 151, 130, 52, + 20, 16, 18, 24, 20, 25, 14, 18, 18, 20, 18, 21, 20, 14, 14, 30, + 51, 17, 20, 29, 30, 26, 32, 24, 21, 1, 25, 29, 34, 32, 59, 61, + 99, 153, 104, 99, 127, 143, 157, 166, 173, 174, 177, 177, 181, 182, 185, 187, + 195, 194, 185, 189, 189, 185, 178, 170, 167, 158, 154, 140, 122, 9, 9, 6, + 10, 4, 2, 55, 63, 68, 64, 61, 72, 68, 64, 49, 148, 167, 110, 106, + 112, 130, 142, 147, 153, 147, 138, 127, 122, 115, 126, 127, 120, 63, 40, 30, + 33, 34, 36, 33, 33, 37, 40, 40, 48, 53, 60, 64, 65, 80, 97, 92, + 38, 171, 220, 230, 169, 112, 93, 93, 91, 65, 30, 20, 26, 36, 36, 36, + 42, 42, 68, 68, 240, 237, 226, 107, 99, 96, 115, 127, 127, 143, 155, 166, + 162, 151, 142, 142, 118, 24, 24, 24, 17, 17, 24, 21, 22, 22, 38, 21, + 25, 42, 72, 102, 224, 229, 224, 126, 111, 114, 123, 128, 140, 134, 136, 132, + 135, 135, 144, 140, 118, 41, 37, 25, 26, 51, 67, 63, 65, 68, 171, 209, + 205, 144, 126, 134, 146, 153, 155, 162, 165, 170, 178, 183, 185, 182, 173, 95, + 38, 26, 40, 55, 64, 73, 153, 226, 220, 183, 169, 177, 187, 183, 154, 169, + 159, 155, 143, 144, 130, 123, 85, 37, 37, 52, 59, 65, 60, 76, 72, 134, + 226, 240, 169, 131, 136, 146, 142, 143, 157, 167, 173, 175, 68, 41, 26, 22, + 49, 64, 65, 100, 222, 226, 224, 183, 175, 178, 171, 171, 155, 140, 124, 89, + 24, 22, 22, 8, 6, 5, 8, 8, 20, 18, 9, 9, 18, 20, 18, 17, + 24, 28, 26, 38, 13, 13, 8, 10, 13, 14, 4, 9, 13, 14, 2, 8, + 38, 5, 30, 42, 48, 49, 56, 55, 53, 51, 44, 18, 77, 72, 77, 108, + 237, 238, 226, 106, 104, 111, 116, 127, 140, 155, 158, 163, 167, 171, 158, 146, + 126, 130, 127, 99, 21, 24, 21, 24, 29, 28, 29, 32, 33, 38, 37, 33, + 32, 55, 60, 53, 55, 63, 75, 75, 190, 241, 245, 236, 166, 115, 97, 37, + 28, 24, 20, 22, 25, 29, 40, 53, 220, 222, 208, 128, 123, 123, 144, 151, + 151, 144, 116, 108, 118, 88, 18, 12, 12, 14, 21, 26, 29, 28, 30, 28, + 16, 21, 80, 81, 199, 226, 226, 123, 110, 119, 128, 142, 153, 165, 167, 166, + 146, 68, 24, 18, 18, 10, 17, 29, 59, 112, 208, 214, 197, 126, 122, 123, + 130, 130, 134, 130, 123, 111, 65, 13, 12, 9, 12, 14, 13, 29, 34, 45, + 229, 233, 228, 114, 106, 114, 124, 140, 154, 162, 169, 166, 157, 151, 140, 42, + 13, 16, 16, 20, 26, 24, 13, 12, 26, 29, 25, 28, 34, 33, 28, 28, + 34, 37, 41, 150, 201, 183, 144, 100, 110, 116, 130, 147, 165, 171, 178, 173, + 183, 185, 187, 204, 131, 42, 29, 17, 26, 30, 52, 131, 222, 221, 216, 191, + 178, 202, 208, 208, 206, 194, 174, 166, 157, 151, 136, 118, 119, 102, 56, 56, + 44, 37, 33, 29, 4, 16, 12, 17, 13, 21, 72, 174, 228, 224, 115, 110, + 120, 131, 135, 151, 159, 161, 165, 158, 151, 131, 51, 18, 20, 22, 17, 17, + 14, 13, 12, 12, 9, 9, 8, 5, 14, 14, 5, 14, 10, 9, 5, 6, + 14, 22, 22, 16, 2, 28, 29, 32, 29, 25, 33, 67, 136, 122, 95, 120, + 140, 153, 162, 167, 170, 170, 169, 170, 171, 174, 183, 191, 198, 187, 186, 193, + 186, 178, 170, 167, 158, 154, 142, 123, 6, 6, 6, 10, 5, 4, 143, 134, + 119, 119, 119, 111, 118, 75, 69, 89, 161, 114, 104, 107, 115, 128, 143, 143, + 142, 134, 140, 140, 128, 116, 123, 127, 108, 51, 45, 59, 64, 67, 60, 64, + 71, 77, 92, 81, 87, 81, 65, 68, 59, 68, 88, 42, 159, 222, 233, 189, + 114, 96, 95, 85, 53, 26, 25, 26, 49, 63, 73, 72, 69, 72, 81, 226, + 232, 224, 100, 91, 106, 118, 118, 120, 130, 151, 165, 157, 150, 139, 139, 122, + 25, 24, 26, 9, 21, 24, 24, 17, 29, 45, 26, 24, 75, 72, 124, 221, + 226, 222, 123, 112, 122, 130, 128, 138, 124, 146, 139, 138, 132, 143, 136, 111, + 41, 36, 22, 34, 60, 69, 67, 68, 69, 151, 214, 201, 150, 123, 130, 139, + 148, 151, 159, 162, 166, 174, 179, 181, 178, 175, 124, 44, 40, 41, 63, 68, + 85, 142, 221, 224, 183, 166, 173, 182, 186, 179, 154, 166, 162, 155, 146, 144, + 127, 116, 57, 37, 38, 40, 48, 67, 83, 72, 118, 217, 228, 173, 134, 142, + 151, 139, 140, 155, 175, 179, 179, 80, 32, 24, 16, 38, 64, 73, 147, 226, + 226, 224, 179, 179, 175, 169, 169, 155, 140, 126, 88, 28, 24, 24, 18, 30, + 20, 29, 18, 77, 83, 76, 65, 73, 75, 76, 69, 75, 72, 29, 17, 29, + 96, 88, 75, 73, 88, 84, 73, 68, 65, 63, 37, 4, 26, 81, 89, 93, + 83, 91, 84, 85, 53, 37, 16, 81, 81, 83, 163, 234, 238, 216, 104, 104, + 108, 118, 130, 143, 151, 151, 150, 155, 167, 159, 147, 130, 136, 138, 100, 25, + 26, 28, 36, 41, 44, 30, 42, 42, 40, 36, 46, 41, 51, 55, 65, 64, + 68, 79, 148, 234, 241, 244, 236, 144, 110, 95, 33, 25, 21, 24, 25, 32, + 36, 40, 63, 217, 221, 210, 126, 124, 127, 134, 139, 153, 142, 120, 114, 119, + 97, 20, 14, 13, 18, 21, 21, 24, 24, 20, 26, 12, 32, 67, 72, 195, + 222, 220, 126, 110, 119, 128, 139, 153, 159, 163, 165, 153, 91, 25, 20, 16, + 20, 20, 44, 69, 181, 221, 221, 206, 123, 122, 126, 127, 126, 138, 136, 118, + 111, 55, 13, 9, 9, 21, 21, 28, 34, 36, 56, 229, 228, 226, 115, 106, + 118, 130, 142, 153, 163, 167, 163, 155, 147, 142, 46, 17, 20, 29, 36, 42, + 40, 20, 17, 20, 18, 26, 18, 22, 20, 25, 16, 24, 20, 26, 138, 197, + 187, 131, 100, 112, 116, 128, 131, 162, 171, 169, 173, 177, 187, 191, 202, 150, + 56, 33, 24, 40, 32, 75, 135, 224, 222, 218, 189, 174, 193, 206, 205, 202, + 195, 178, 173, 157, 158, 142, 127, 120, 110, 67, 48, 57, 55, 48, 33, 5, + 21, 85, 115, 88, 85, 122, 194, 216, 221, 111, 110, 116, 130, 130, 147, 157, + 162, 159, 158, 148, 134, 55, 22, 24, 36, 42, 64, 76, 81, 81, 77, 88, + 84, 77, 33, 14, 45, 63, 61, 53, 57, 57, 38, 16, 8, 6, 17, 20, + 13, 17, 17, 24, 24, 17, 30, 102, 134, 100, 99, 134, 140, 150, 157, 153, + 155, 150, 151, 139, 146, 146, 183, 197, 205, 178, 191, 186, 177, 169, 166, 157, + 153, 143, 119, 6, 6, 6, 6, 22, 24, 144, 124, 136, 126, 124, 136, 89, + 103, 72, 36, 158, 140, 110, 106, 108, 108, 118, 130, 132, 143, 136, 134, 142, + 132, 122, 131, 122, 95, 49, 46, 37, 57, 65, 65, 80, 91, 115, 97, 102, + 103, 91, 83, 92, 96, 89, 60, 181, 230, 236, 186, 114, 92, 89, 71, 38, + 24, 25, 26, 59, 69, 69, 71, 67, 71, 83, 210, 225, 222, 95, 89, 106, + 119, 118, 118, 127, 139, 159, 157, 148, 136, 138, 123, 33, 29, 24, 20, 36, + 49, 67, 72, 73, 80, 76, 73, 60, 85, 191, 214, 221, 220, 120, 104, 114, + 115, 130, 139, 119, 130, 138, 142, 134, 140, 139, 115, 36, 29, 26, 32, 65, + 60, 63, 59, 68, 132, 206, 204, 158, 120, 128, 131, 140, 151, 157, 163, 163, + 171, 177, 177, 174, 174, 148, 69, 40, 37, 72, 75, 77, 120, 212, 221, 189, + 163, 169, 178, 186, 187, 163, 153, 165, 167, 157, 151, 139, 126, 100, 64, 60, + 63, 87, 91, 89, 79, 97, 199, 225, 175, 140, 144, 154, 138, 142, 157, 179, + 186, 185, 130, 56, 26, 13, 48, 71, 87, 175, 230, 229, 225, 179, 178, 177, + 170, 166, 155, 140, 126, 81, 25, 22, 22, 34, 32, 33, 32, 17, 91, 91, + 80, 63, 59, 68, 60, 67, 71, 75, 37, 13, 73, 93, 76, 81, 81, 77, + 84, 75, 81, 73, 77, 34, 4, 77, 91, 87, 87, 77, 79, 64, 76, 64, + 51, 14, 84, 85, 85, 186, 238, 240, 220, 104, 103, 107, 116, 132, 146, 157, + 154, 140, 150, 151, 147, 126, 126, 139, 140, 100, 28, 28, 25, 38, 29, 41, + 46, 46, 53, 57, 59, 53, 61, 72, 73, 80, 85, 92, 131, 204, 242, 244, + 241, 213, 122, 111, 68, 29, 22, 21, 26, 32, 30, 38, 41, 71, 220, 225, + 220, 119, 118, 128, 114, 130, 131, 131, 114, 119, 118, 103, 21, 13, 13, 20, + 25, 38, 34, 40, 30, 26, 9, 88, 80, 81, 173, 218, 214, 131, 112, 119, + 127, 138, 147, 162, 163, 167, 167, 130, 40, 24, 18, 24, 40, 53, 89, 194, + 222, 222, 208, 123, 122, 124, 122, 131, 128, 126, 118, 100, 29, 12, 8, 14, + 28, 32, 32, 37, 33, 67, 226, 229, 228, 116, 107, 116, 126, 140, 153, 162, + 167, 159, 150, 144, 132, 59, 25, 17, 30, 46, 53, 53, 38, 13, 28, 91, + 88, 85, 81, 91, 81, 81, 80, 80, 48, 122, 187, 183, 120, 100, 114, 119, + 123, 124, 150, 155, 173, 169, 166, 179, 189, 193, 194, 107, 46, 40, 46, 53, + 123, 194, 226, 224, 220, 183, 173, 187, 197, 198, 197, 195, 171, 171, 163, 154, + 154, 135, 120, 120, 72, 69, 88, 130, 118, 36, 10, 67, 123, 111, 120, 142, + 151, 210, 220, 208, 112, 108, 118, 127, 124, 143, 153, 161, 161, 154, 147, 132, + 61, 26, 21, 42, 73, 88, 85, 80, 84, 85, 85, 85, 88, 57, 20, 59, + 71, 69, 69, 64, 65, 60, 60, 48, 17, 8, 20, 36, 83, 89, 57, 72, + 77, 64, 34, 144, 122, 91, 112, 124, 132, 139, 142, 120, 122, 130, 67, 55, + 77, 162, 197, 209, 185, 182, 185, 175, 167, 165, 157, 148, 139, 114, 5, 8, + 9, 17, 57, 64, 123, 120, 99, 124, 122, 112, 79, 102, 71, 30, 143, 139, + 103, 107, 106, 106, 104, 106, 112, 132, 147, 139, 132, 140, 127, 120, 124, 116, + 84, 46, 55, 63, 34, 57, 76, 111, 102, 95, 97, 87, 83, 79, 92, 72, + 56, 123, 210, 234, 230, 199, 112, 88, 81, 59, 32, 22, 25, 24, 56, 71, + 63, 63, 57, 71, 115, 228, 222, 204, 100, 100, 108, 120, 124, 119, 126, 132, + 148, 153, 143, 128, 139, 124, 30, 30, 9, 61, 51, 59, 60, 73, 84, 76, + 75, 60, 80, 102, 221, 220, 220, 209, 123, 97, 107, 118, 142, 143, 127, 116, + 124, 131, 128, 139, 138, 114, 49, 26, 26, 33, 65, 65, 75, 52, 60, 110, + 197, 199, 165, 122, 127, 127, 140, 144, 154, 161, 157, 165, 169, 174, 170, 170, + 161, 92, 44, 30, 61, 73, 76, 102, 194, 218, 198, 163, 166, 177, 185, 189, + 182, 153, 154, 166, 170, 159, 150, 138, 128, 96, 87, 84, 87, 83, 77, 75, + 81, 179, 229, 178, 142, 150, 158, 138, 140, 169, 181, 187, 190, 158, 42, 26, + 25, 61, 80, 96, 186, 233, 230, 225, 179, 178, 170, 169, 166, 158, 140, 123, + 76, 24, 22, 21, 30, 41, 42, 30, 18, 84, 99, 85, 96, 83, 83, 99, + 83, 73, 73, 37, 34, 89, 99, 77, 83, 76, 64, 57, 77, 63, 49, 73, + 25, 1, 76, 95, 80, 65, 59, 67, 75, 80, 56, 41, 17, 84, 85, 91, + 208, 238, 233, 213, 108, 104, 110, 114, 126, 147, 157, 159, 159, 153, 138, 131, + 122, 134, 138, 144, 104, 56, 29, 28, 40, 34, 40, 53, 56, 48, 45, 49, + 48, 69, 85, 95, 100, 93, 126, 198, 241, 246, 244, 236, 155, 118, 108, 55, + 26, 24, 20, 29, 33, 32, 37, 41, 69, 221, 222, 217, 127, 128, 123, 131, + 116, 110, 106, 111, 122, 112, 102, 21, 17, 12, 22, 32, 40, 41, 42, 44, + 24, 10, 81, 92, 77, 139, 208, 216, 147, 114, 120, 128, 139, 146, 155, 162, + 159, 167, 150, 103, 48, 45, 49, 72, 100, 170, 197, 221, 214, 214, 123, 120, + 124, 124, 124, 131, 119, 114, 69, 17, 13, 6, 16, 26, 30, 38, 44, 40, + 79, 224, 226, 225, 114, 110, 119, 134, 142, 153, 163, 167, 158, 151, 147, 134, + 71, 26, 18, 34, 53, 46, 49, 55, 13, 99, 97, 88, 84, 80, 92, 91, + 84, 87, 75, 52, 59, 177, 175, 118, 103, 114, 118, 122, 127, 130, 162, 170, + 178, 158, 173, 179, 189, 202, 155, 76, 52, 68, 112, 135, 213, 222, 224, 220, + 185, 167, 174, 183, 179, 183, 185, 175, 171, 166, 162, 161, 151, 127, 120, 81, + 85, 127, 136, 131, 28, 5, 76, 126, 112, 136, 143, 158, 214, 221, 217, 108, + 107, 118, 128, 120, 134, 154, 165, 158, 151, 143, 131, 88, 32, 25, 45, 79, + 76, 81, 73, 84, 80, 69, 72, 85, 88, 18, 61, 68, 63, 41, 32, 29, + 32, 40, 59, 34, 9, 14, 79, 79, 79, 80, 83, 68, 61, 56, 41, 45, + 52, 72, 102, 97, 107, 89, 65, 42, 38, 28, 33, 65, 139, 197, 209, 191, + 175, 183, 174, 169, 166, 155, 148, 139, 106, 4, 8, 13, 26, 41, 44, 134, + 102, 96, 102, 83, 100, 81, 75, 64, 36, 139, 134, 97, 115, 107, 103, 106, + 104, 102, 108, 131, 150, 139, 128, 138, 123, 128, 120, 116, 79, 63, 60, 57, + 53, 73, 108, 89, 87, 83, 79, 80, 75, 76, 91, 132, 183, 226, 232, 229, + 185, 110, 88, 64, 36, 25, 21, 25, 24, 41, 65, 64, 52, 57, 85, 191, + 228, 225, 208, 104, 99, 108, 123, 124, 138, 126, 120, 135, 148, 146, 134, 138, + 114, 33, 29, 14, 51, 53, 51, 76, 59, 59, 61, 57, 57, 80, 153, 212, + 216, 220, 209, 123, 118, 106, 116, 132, 131, 142, 131, 115, 115, 124, 130, 138, + 116, 55, 24, 21, 33, 68, 81, 57, 56, 64, 92, 185, 199, 163, 124, 119, + 124, 136, 142, 150, 158, 155, 157, 159, 165, 169, 163, 163, 120, 53, 51, 68, + 67, 81, 89, 151, 217, 201, 162, 162, 173, 186, 186, 187, 173, 148, 153, 167, + 165, 159, 148, 132, 127, 119, 112, 92, 77, 81, 79, 68, 114, 216, 189, 147, + 148, 166, 140, 140, 174, 183, 194, 197, 179, 75, 32, 25, 30, 85, 104, 204, + 233, 233, 228, 175, 177, 171, 167, 170, 159, 139, 115, 48, 22, 22, 13, 33, + 32, 38, 34, 22, 52, 71, 95, 59, 84, 79, 77, 77, 81, 71, 40, 30, + 60, 97, 87, 91, 59, 59, 76, 53, 59, 64, 64, 26, 0, 76, 84, 65, + 73, 83, 73, 76, 63, 51, 46, 24, 71, 76, 102, 218, 237, 236, 210, 111, + 107, 111, 112, 122, 143, 155, 163, 157, 151, 150, 147, 130, 135, 144, 144, 111, + 87, 32, 29, 40, 32, 34, 34, 38, 41, 40, 40, 63, 68, 97, 102, 95, + 127, 185, 234, 244, 248, 245, 221, 128, 114, 100, 41, 24, 20, 21, 30, 30, + 30, 37, 55, 110, 205, 216, 217, 128, 112, 119, 123, 114, 118, 107, 107, 119, + 120, 102, 22, 14, 16, 17, 18, 40, 44, 40, 37, 29, 8, 88, 88, 75, + 95, 189, 213, 181, 118, 116, 128, 135, 144, 151, 162, 161, 171, 171, 151, 107, + 107, 128, 159, 187, 202, 197, 225, 209, 209, 124, 123, 124, 126, 132, 126, 114, + 92, 24, 9, 10, 9, 24, 21, 28, 41, 40, 40, 81, 218, 228, 222, 112, + 104, 114, 123, 142, 153, 161, 166, 158, 150, 143, 134, 111, 36, 18, 34, 45, + 48, 45, 41, 13, 102, 100, 115, 95, 85, 91, 73, 73, 79, 85, 72, 36, + 122, 174, 127, 97, 114, 119, 123, 130, 126, 150, 155, 167, 155, 166, 171, 183, + 191, 202, 165, 131, 150, 177, 213, 221, 224, 218, 218, 181, 166, 163, 173, 177, + 174, 179, 177, 177, 170, 162, 154, 161, 144, 124, 87, 93, 114, 143, 123, 24, + 5, 64, 108, 126, 124, 140, 171, 218, 216, 220, 110, 106, 116, 131, 126, 142, + 154, 163, 159, 151, 140, 134, 108, 42, 32, 45, 76, 76, 75, 83, 92, 89, + 83, 71, 87, 63, 28, 53, 67, 60, 34, 37, 36, 25, 24, 57, 45, 10, + 13, 83, 67, 73, 71, 64, 63, 49, 40, 41, 34, 37, 32, 34, 49, 44, + 29, 26, 29, 24, 18, 36, 64, 147, 205, 216, 194, 171, 181, 177, 170, 166, + 158, 144, 136, 97, 2, 6, 12, 28, 4, 2, 132, 97, 107, 107, 96, 89, + 119, 81, 64, 30, 142, 128, 100, 80, 104, 112, 106, 106, 106, 102, 111, 131, + 142, 139, 138, 135, 114, 123, 123, 114, 97, 84, 88, 79, 97, 96, 115, 93, + 84, 81, 83, 93, 132, 181, 214, 232, 236, 232, 208, 163, 96, 75, 46, 28, + 21, 21, 25, 28, 51, 60, 61, 59, 67, 122, 214, 218, 226, 204, 93, 93, + 111, 119, 120, 136, 115, 119, 123, 142, 136, 131, 136, 116, 37, 33, 45, 80, + 77, 49, 60, 51, 67, 53, 56, 52, 79, 165, 210, 213, 208, 191, 124, 104, + 112, 128, 142, 136, 144, 147, 135, 116, 112, 127, 132, 118, 49, 37, 37, 40, + 69, 73, 67, 52, 57, 64, 179, 201, 163, 116, 123, 123, 135, 140, 147, 157, + 161, 148, 148, 153, 153, 161, 162, 138, 84, 55, 40, 53, 75, 77, 127, 208, + 209, 163, 161, 171, 179, 185, 187, 187, 177, 146, 153, 171, 165, 154, 148, 138, + 128, 130, 132, 106, 83, 72, 72, 83, 181, 213, 163, 153, 165, 140, 143, 179, + 189, 201, 201, 194, 140, 69, 29, 30, 92, 148, 214, 233, 233, 229, 183, 178, + 166, 167, 167, 158, 134, 103, 29, 22, 21, 17, 40, 32, 34, 37, 25, 32, + 93, 99, 85, 89, 83, 80, 76, 73, 67, 38, 34, 63, 100, 69, 77, 63, + 80, 63, 52, 63, 64, 61, 34, 6, 79, 88, 61, 64, 64, 52, 67, 53, + 42, 40, 40, 72, 88, 157, 222, 241, 233, 208, 111, 110, 115, 107, 118, 138, + 151, 159, 165, 161, 154, 148, 142, 126, 131, 147, 130, 93, 33, 34, 33, 40, + 38, 53, 57, 51, 42, 46, 61, 77, 100, 96, 115, 175, 232, 241, 246, 246, + 242, 166, 116, 114, 87, 30, 21, 14, 21, 28, 29, 38, 40, 56, 171, 206, + 214, 204, 123, 116, 122, 127, 115, 115, 118, 102, 106, 119, 107, 28, 16, 13, + 16, 33, 41, 42, 34, 37, 29, 6, 80, 87, 80, 80, 115, 197, 197, 124, + 116, 124, 132, 140, 142, 150, 147, 174, 177, 175, 166, 182, 195, 198, 206, 205, + 213, 202, 209, 161, 124, 124, 132, 135, 130, 120, 114, 34, 13, 12, 8, 14, + 24, 25, 33, 36, 37, 41, 161, 221, 224, 222, 112, 99, 114, 120, 140, 148, + 159, 159, 162, 153, 147, 144, 138, 56, 30, 26, 48, 48, 45, 42, 16, 73, + 103, 115, 106, 97, 110, 91, 92, 84, 77, 84, 38, 61, 166, 143, 102, 103, + 118, 120, 124, 127, 131, 155, 157, 154, 163, 166, 178, 183, 199, 209, 205, 214, + 216, 221, 220, 218, 224, 204, 182, 161, 162, 142, 162, 167, 177, 177, 175, 177, + 167, 166, 159, 159, 140, 118, 96, 131, 139, 63, 20, 5, 56, 108, 108, 115, + 127, 155, 216, 226, 214, 110, 104, 115, 126, 120, 147, 155, 159, 155, 151, 143, + 136, 122, 63, 33, 51, 76, 72, 81, 81, 84, 83, 84, 87, 72, 75, 22, + 42, 65, 55, 26, 34, 18, 20, 29, 32, 36, 12, 16, 40, 63, 36, 52, + 53, 63, 38, 33, 29, 28, 22, 30, 29, 36, 24, 22, 25, 21, 24, 20, + 59, 65, 170, 212, 218, 182, 167, 179, 175, 170, 166, 158, 143, 132, 52, 2, + 6, 13, 38, 2, 1, 135, 111, 89, 100, 102, 87, 85, 88, 64, 26, 128, + 119, 96, 85, 71, 85, 115, 110, 106, 104, 102, 107, 132, 146, 143, 143, 136, + 118, 116, 119, 148, 126, 116, 115, 120, 124, 131, 132, 134, 134, 154, 186, 212, + 225, 236, 234, 229, 216, 186, 111, 84, 51, 30, 22, 18, 22, 26, 41, 55, + 48, 59, 61, 127, 182, 228, 225, 226, 212, 108, 93, 104, 115, 130, 132, 122, + 126, 119, 128, 130, 132, 135, 123, 91, 67, 37, 69, 80, 80, 60, 59, 64, + 77, 55, 65, 99, 185, 205, 209, 212, 155, 110, 112, 118, 126, 131, 143, 143, + 144, 143, 134, 111, 116, 130, 123, 95, 49, 44, 44, 73, 56, 59, 52, 56, + 55, 158, 198, 163, 114, 119, 123, 135, 143, 147, 154, 158, 146, 144, 139, 139, + 146, 154, 147, 100, 56, 29, 49, 68, 79, 107, 190, 209, 170, 158, 169, 178, + 181, 183, 185, 187, 177, 150, 154, 166, 163, 155, 147, 143, 132, 132, 131, 100, + 72, 77, 77, 127, 218, 175, 154, 162, 144, 179, 183, 199, 205, 204, 206, 186, + 110, 40, 45, 102, 179, 230, 232, 233, 222, 178, 177, 174, 169, 166, 146, 134, + 83, 24, 21, 21, 22, 37, 37, 32, 38, 29, 29, 81, 97, 84, 89, 77, + 76, 84, 75, 75, 46, 34, 64, 91, 76, 76, 57, 67, 52, 60, 56, 61, + 63, 32, 1, 84, 88, 52, 64, 53, 60, 44, 36, 45, 63, 59, 71, 96, + 206, 233, 228, 237, 197, 112, 115, 115, 116, 110, 127, 147, 157, 159, 161, 158, + 154, 150, 136, 139, 132, 154, 108, 89, 69, 65, 71, 73, 71, 69, 75, 75, + 69, 71, 91, 108, 96, 171, 228, 234, 238, 245, 241, 216, 122, 118, 108, 56, + 28, 21, 17, 25, 26, 34, 36, 49, 171, 208, 206, 216, 195, 110, 124, 132, + 123, 128, 130, 134, 123, 104, 120, 115, 41, 13, 12, 25, 29, 30, 40, 44, + 30, 26, 5, 79, 80, 75, 81, 84, 122, 195, 132, 118, 122, 126, 131, 134, + 134, 135, 138, 153, 182, 181, 190, 193, 204, 210, 212, 201, 206, 186, 124, 123, + 132, 134, 131, 122, 122, 57, 13, 10, 9, 5, 21, 26, 32, 41, 38, 38, + 65, 199, 213, 221, 218, 112, 102, 108, 118, 132, 144, 157, 159, 159, 155, 146, + 139, 124, 107, 46, 25, 28, 49, 46, 45, 20, 69, 103, 116, 93, 102, 110, + 71, 103, 83, 77, 76, 45, 37, 153, 175, 110, 95, 112, 122, 124, 123, 126, + 139, 140, 151, 163, 169, 170, 175, 181, 195, 194, 204, 210, 212, 216, 213, 206, + 189, 173, 161, 139, 139, 138, 142, 159, 167, 175, 174, 171, 161, 161, 162, 159, + 132, 102, 138, 91, 28, 8, 8, 53, 103, 111, 124, 138, 162, 216, 221, 217, + 115, 107, 114, 122, 122, 157, 157, 157, 155, 151, 143, 132, 123, 106, 44, 56, + 80, 85, 75, 75, 80, 80, 85, 84, 92, 84, 36, 37, 67, 55, 29, 21, + 29, 29, 32, 28, 33, 9, 16, 69, 60, 57, 49, 38, 40, 29, 34, 29, + 38, 29, 25, 36, 29, 28, 22, 22, 17, 21, 16, 53, 79, 199, 214, 217, + 162, 162, 179, 178, 170, 165, 157, 142, 130, 42, 2, 4, 12, 32, 4, 10, + 124, 116, 91, 93, 102, 107, 73, 92, 64, 30, 122, 119, 97, 91, 85, 69, + 68, 87, 111, 111, 107, 104, 106, 127, 144, 139, 130, 123, 119, 148, 165, 175, + 175, 183, 189, 185, 191, 189, 194, 206, 213, 225, 228, 232, 230, 218, 217, 177, + 127, 81, 52, 33, 24, 21, 22, 34, 42, 52, 46, 71, 120, 159, 183, 210, + 213, 220, 225, 206, 114, 87, 114, 107, 116, 130, 144, 147, 130, 122, 120, 136, + 135, 140, 119, 106, 108, 110, 116, 104, 84, 68, 55, 75, 53, 72, 140, 198, + 209, 209, 201, 153, 118, 107, 110, 126, 138, 143, 132, 147, 147, 140, 131, 110, + 123, 122, 108, 92, 57, 53, 75, 71, 59, 53, 44, 53, 124, 202, 177, 111, + 116, 124, 138, 142, 148, 157, 139, 134, 130, 127, 126, 128, 142, 146, 127, 92, + 60, 32, 56, 71, 93, 150, 204, 174, 155, 161, 171, 175, 179, 178, 181, 182, + 170, 151, 159, 166, 159, 155, 143, 132, 131, 127, 93, 75, 68, 72, 79, 178, + 210, 158, 155, 140, 185, 195, 204, 208, 210, 209, 208, 178, 124, 132, 182, 222, + 234, 233, 233, 214, 186, 179, 173, 170, 159, 136, 120, 46, 20, 18, 20, 25, + 41, 36, 45, 45, 36, 30, 85, 100, 64, 84, 77, 71, 83, 88, 77, 61, + 34, 48, 95, 65, 77, 56, 51, 51, 63, 57, 49, 65, 25, 4, 76, 81, + 51, 63, 42, 59, 59, 53, 61, 65, 75, 130, 201, 222, 234, 236, 228, 182, + 114, 119, 108, 119, 123, 112, 136, 148, 153, 155, 154, 155, 153, 151, 143, 127, + 142, 157, 108, 103, 103, 100, 97, 100, 96, 91, 91, 87, 83, 89, 128, 181, + 226, 230, 237, 241, 240, 230, 142, 116, 120, 104, 42, 22, 18, 21, 29, 33, + 32, 48, 175, 204, 209, 210, 205, 197, 119, 111, 124, 119, 138, 120, 126, 122, + 130, 112, 115, 95, 17, 22, 16, 16, 30, 41, 41, 34, 21, 10, 71, 80, + 76, 67, 72, 83, 103, 173, 170, 124, 124, 123, 126, 127, 128, 128, 130, 130, + 131, 140, 159, 163, 166, 177, 182, 159, 124, 128, 127, 126, 124, 122, 115, 46, + 13, 9, 8, 4, 6, 14, 21, 30, 40, 37, 44, 158, 213, 214, 217, 212, + 114, 103, 114, 120, 134, 143, 153, 161, 161, 157, 150, 151, 134, 136, 100, 63, + 40, 33, 34, 48, 21, 71, 103, 111, 110, 92, 93, 73, 79, 96, 73, 79, + 42, 29, 124, 167, 135, 95, 103, 118, 123, 126, 120, 122, 126, 150, 161, 158, + 167, 163, 162, 158, 153, 173, 185, 189, 197, 194, 183, 158, 136, 140, 139, 136, + 138, 139, 136, 139, 151, 157, 154, 151, 158, 148, 140, 114, 131, 91, 28, 0, + 9, 5, 46, 91, 120, 142, 138, 189, 205, 216, 216, 118, 106, 108, 123, 144, + 154, 166, 155, 153, 151, 142, 134, 124, 123, 91, 56, 44, 55, 73, 79, 87, + 80, 77, 89, 68, 103, 29, 20, 56, 37, 42, 30, 30, 37, 33, 25, 33, + 10, 12, 59, 61, 63, 65, 65, 57, 48, 44, 33, 40, 37, 18, 34, 37, + 37, 28, 25, 21, 20, 30, 40, 108, 210, 224, 217, 154, 157, 173, 177, 170, + 163, 157, 144, 128, 30, 2, 4, 10, 30, 4, 1, 118, 85, 85, 79, 81, + 73, 73, 72, 60, 30, 114, 112, 97, 84, 81, 80, 68, 53, 61, 84, 104, + 107, 103, 106, 112, 120, 128, 135, 135, 139, 139, 150, 171, 185, 194, 198, 208, + 204, 209, 216, 220, 221, 217, 217, 214, 197, 158, 118, 79, 48, 32, 24, 20, + 20, 30, 38, 53, 42, 128, 166, 202, 212, 199, 206, 208, 213, 209, 154, 110, + 89, 135, 116, 124, 131, 132, 126, 132, 139, 132, 127, 146, 135, 136, 130, 139, + 144, 159, 140, 127, 100, 80, 46, 45, 75, 163, 199, 202, 201, 206, 144, 119, + 115, 116, 144, 146, 138, 138, 132, 131, 132, 139, 128, 108, 123, 119, 106, 81, + 106, 91, 84, 51, 59, 48, 51, 89, 185, 187, 128, 108, 124, 135, 139, 138, + 138, 134, 127, 124, 118, 118, 116, 118, 132, 134, 108, 75, 26, 42, 65, 79, + 104, 179, 193, 151, 155, 163, 171, 174, 175, 175, 181, 179, 158, 150, 163, 165, + 153, 138, 136, 128, 103, 64, 41, 63, 68, 72, 99, 204, 170, 163, 147, 187, + 195, 209, 210, 213, 209, 216, 210, 205, 209, 226, 230, 230, 233, 232, 201, 181, + 182, 177, 166, 140, 131, 85, 25, 20, 18, 21, 30, 42, 38, 46, 41, 38, + 25, 71, 73, 92, 76, 85, 93, 91, 88, 77, 73, 33, 38, 64, 85, 88, + 49, 55, 49, 57, 63, 63, 60, 26, 1, 72, 73, 69, 52, 60, 53, 59, + 68, 106, 167, 187, 218, 216, 232, 221, 226, 224, 150, 116, 118, 124, 130, 142, + 123, 116, 135, 140, 142, 142, 144, 148, 148, 153, 142, 138, 148, 159, 146, 169, + 179, 189, 198, 204, 208, 212, 217, 220, 217, 222, 222, 226, 232, 237, 237, 224, + 154, 118, 122, 118, 81, 26, 18, 18, 21, 30, 36, 76, 150, 221, 206, 201, + 214, 216, 158, 124, 128, 135, 130, 131, 124, 138, 119, 122, 111, 112, 96, 67, + 48, 20, 17, 12, 36, 41, 32, 28, 9, 69, 71, 65, 65, 72, 61, 79, + 91, 99, 107, 112, 151, 155, 150, 147, 147, 143, 140, 136, 131, 131, 128, 128, + 128, 130, 127, 124, 124, 122, 120, 118, 81, 29, 12, 9, 9, 4, 4, 22, + 20, 32, 37, 38, 41, 136, 197, 206, 209, 214, 205, 108, 104, 107, 120, 134, + 136, 139, 146, 153, 153, 148, 140, 146, 138, 142, 112, 93, 79, 59, 32, 21, + 55, 104, 95, 107, 80, 99, 95, 93, 97, 73, 77, 59, 25, 81, 148, 177, + 114, 102, 110, 118, 119, 122, 123, 124, 127, 130, 132, 131, 132, 140, 130, 128, + 126, 128, 130, 127, 126, 128, 131, 131, 136, 136, 139, 142, 139, 139, 142, 135, + 130, 130, 128, 127, 123, 135, 138, 99, 26, 0, 5, 5, 5, 45, 89, 97, + 132, 191, 197, 195, 213, 206, 115, 111, 116, 120, 147, 151, 153, 144, 153, 150, + 143, 136, 127, 122, 120, 119, 97, 67, 63, 49, 84, 79, 75, 76, 65, 89, + 32, 13, 72, 26, 26, 28, 41, 36, 38, 25, 30, 12, 12, 51, 55, 56, + 52, 40, 42, 30, 24, 20, 24, 26, 18, 30, 41, 36, 29, 32, 34, 14, + 42, 51, 138, 220, 222, 210, 146, 151, 161, 173, 173, 163, 157, 143, 126, 25, + 4, 4, 12, 24, 6, 2, 77, 76, 75, 79, 73, 73, 80, 67, 61, 26, + 93, 104, 97, 88, 99, 85, 77, 68, 55, 48, 53, 71, 95, 104, 106, 104, + 104, 111, 108, 116, 118, 122, 127, 142, 165, 177, 186, 201, 205, 202, 202, 202, + 199, 181, 158, 118, 84, 65, 44, 30, 24, 18, 18, 21, 29, 38, 38, 104, + 225, 193, 202, 194, 206, 201, 210, 177, 140, 118, 104, 115, 115, 116, 112, 118, + 111, 116, 115, 120, 119, 123, 127, 120, 130, 142, 134, 138, 138, 135, 139, 148, + 79, 45, 63, 96, 216, 190, 193, 197, 202, 138, 122, 126, 136, 119, 140, 138, + 135, 123, 126, 123, 123, 123, 120, 120, 122, 108, 114, 108, 102, 77, 49, 51, + 52, 46, 57, 144, 191, 151, 106, 123, 127, 131, 134, 132, 127, 126, 119, 118, + 114, 110, 107, 103, 108, 122, 85, 72, 65, 49, 61, 77, 130, 197, 161, 151, + 158, 161, 159, 166, 169, 174, 178, 174, 155, 153, 159, 147, 136, 136, 115, 69, + 34, 33, 32, 71, 65, 63, 157, 182, 174, 134, 182, 197, 198, 205, 210, 217, + 217, 221, 220, 222, 230, 228, 230, 226, 217, 190, 186, 179, 175, 161, 134, 99, + 38, 22, 20, 18, 17, 34, 40, 37, 40, 45, 41, 26, 56, 79, 92, 89, + 73, 76, 71, 83, 65, 41, 33, 32, 64, 89, 73, 46, 60, 57, 59, 63, + 72, 38, 29, 4, 64, 69, 59, 67, 32, 52, 79, 185, 210, 205, 213, 234, + 212, 225, 240, 221, 190, 120, 118, 119, 138, 140, 131, 139, 131, 127, 127, 124, + 127, 130, 123, 127, 130, 136, 146, 143, 132, 167, 170, 182, 190, 198, 202, 208, + 213, 216, 218, 222, 224, 229, 229, 230, 226, 199, 138, 115, 118, 124, 114, 49, + 20, 17, 18, 28, 34, 83, 181, 190, 190, 202, 208, 228, 205, 140, 120, 111, + 119, 116, 131, 126, 115, 128, 115, 114, 126, 96, 83, 73, 63, 44, 16, 21, + 40, 28, 28, 8, 64, 73, 61, 46, 38, 48, 52, 53, 51, 56, 57, 75, + 96, 103, 106, 103, 100, 107, 111, 111, 112, 111, 110, 111, 118, 115, 114, 107, + 102, 72, 30, 17, 9, 8, 5, 2, 4, 8, 18, 22, 40, 37, 44, 140, + 190, 197, 198, 202, 209, 147, 108, 100, 110, 126, 122, 127, 135, 136, 144, 140, + 153, 148, 138, 143, 126, 138, 148, 144, 103, 67, 38, 24, 69, 106, 85, 100, + 79, 93, 89, 97, 71, 79, 73, 20, 69, 135, 144, 150, 144, 139, 136, 143, + 138, 116, 115, 118, 118, 123, 126, 126, 123, 122, 127, 119, 102, 96, 89, 81, + 85, 97, 114, 123, 130, 134, 135, 132, 127, 132, 132, 135, 138, 136, 132, 132, + 123, 96, 28, 9, 1, 2, 5, 6, 44, 99, 132, 194, 204, 201, 198, 214, + 187, 114, 106, 120, 128, 126, 140, 147, 150, 146, 147, 143, 139, 135, 128, 120, + 118, 114, 126, 111, 76, 53, 53, 56, 68, 61, 88, 29, 12, 67, 42, 28, + 33, 45, 28, 29, 32, 22, 14, 17, 55, 71, 49, 45, 34, 33, 32, 22, + 24, 32, 20, 38, 34, 28, 20, 20, 21, 26, 14, 42, 51, 158, 220, 225, + 208, 142, 146, 150, 163, 171, 163, 155, 143, 118, 13, 5, 2, 12, 24, 14, + 17, 72, 75, 76, 80, 72, 77, 84, 85, 59, 25, 99, 99, 93, 97, 84, + 80, 72, 67, 59, 55, 45, 38, 42, 48, 65, 83, 96, 97, 103, 103, 103, + 104, 106, 111, 119, 124, 128, 135, 153, 150, 144, 142, 115, 91, 76, 57, 34, + 29, 28, 22, 17, 18, 22, 21, 42, 49, 41, 146, 191, 212, 193, 194, 178, + 155, 134, 122, 108, 89, 83, 79, 81, 85, 88, 91, 91, 95, 99, 100, 99, + 102, 104, 110, 115, 119, 118, 116, 120, 126, 126, 114, 80, 42, 72, 154, 175, + 181, 155, 158, 135, 128, 107, 110, 115, 110, 116, 115, 119, 111, 122, 123, 114, + 127, 123, 118, 108, 106, 106, 102, 93, 45, 25, 33, 48, 41, 45, 100, 171, + 178, 104, 115, 112, 115, 116, 116, 114, 118, 112, 112, 108, 106, 103, 103, 100, + 99, 91, 80, 46, 42, 48, 60, 92, 155, 173, 147, 153, 157, 155, 150, 159, + 165, 166, 170, 167, 158, 140, 136, 139, 123, 85, 46, 32, 26, 26, 49, 63, + 65, 126, 195, 175, 151, 162, 182, 195, 198, 201, 201, 201, 199, 201, 198, 199, + 199, 201, 199, 191, 182, 177, 174, 165, 139, 111, 37, 18, 18, 18, 20, 20, + 34, 32, 34, 42, 40, 41, 34, 33, 36, 40, 49, 33, 36, 42, 36, 34, + 44, 42, 38, 37, 48, 52, 57, 44, 45, 44, 42, 41, 44, 22, 2, 24, + 52, 56, 36, 40, 61, 154, 202, 198, 204, 218, 242, 212, 206, 198, 148, 120, + 114, 122, 132, 135, 134, 136, 136, 134, 132, 126, 130, 131, 128, 127, 123, 120, + 122, 123, 124, 122, 122, 123, 123, 132, 140, 159, 182, 187, 201, 201, 198, 195, + 197, 198, 185, 158, 119, 114, 116, 123, 123, 97, 25, 16, 12, 28, 32, 59, + 165, 186, 191, 201, 193, 201, 170, 139, 127, 111, 128, 115, 116, 118, 124, 107, + 112, 100, 107, 100, 120, 100, 103, 89, 79, 20, 18, 38, 26, 25, 9, 72, + 67, 34, 30, 26, 30, 29, 34, 25, 26, 21, 20, 20, 22, 22, 18, 20, + 18, 17, 17, 16, 16, 13, 14, 18, 14, 13, 10, 10, 10, 6, 6, 6, + 2, 2, 5, 13, 20, 13, 41, 33, 52, 136, 181, 181, 178, 193, 201, 171, + 122, 104, 112, 122, 116, 120, 127, 126, 128, 126, 130, 139, 135, 124, 140, 135, + 118, 115, 116, 153, 130, 37, 25, 57, 53, 57, 59, 63, 64, 68, 68, 73, + 73, 56, 16, 38, 84, 97, 88, 87, 83, 91, 95, 99, 103, 103, 99, 99, + 111, 112, 103, 99, 96, 73, 34, 13, 8, 4, 4, 5, 12, 53, 91, 100, + 104, 106, 102, 95, 96, 100, 99, 96, 95, 92, 80, 38, 16, 2, 0, 1, + 12, 10, 14, 84, 140, 179, 195, 183, 181, 201, 199, 134, 110, 114, 124, 118, + 119, 118, 127, 128, 130, 134, 130, 122, 124, 123, 123, 120, 112, 112, 128, 114, + 96, 84, 85, 76, 75, 57, 46, 14, 38, 53, 60, 45, 46, 32, 28, 29, + 24, 10, 16, 51, 40, 26, 33, 22, 16, 14, 21, 21, 21, 26, 22, 18, + 17, 13, 18, 14, 17, 37, 48, 63, 178, 225, 225, 204, 138, 143, 148, 158, + 166, 161, 154, 139, 96, 8, 4, 2, 6, 16, 10, 5, 84, 80, 79, 80, + 79, 87, 80, 73, 56, 25, 88, 95, 77, 83, 75, 75, 64, 65, 57, 56, + 49, 45, 40, 38, 33, 32, 33, 41, 46, 57, 68, 88, 88, 89, 89, 85, + 85, 80, 77, 76, 72, 63, 42, 32, 28, 24, 24, 18, 16, 16, 25, 33, + 33, 29, 37, 26, 26, 80, 126, 144, 139, 134, 135, 87, 75, 64, 59, 44, + 25, 28, 28, 24, 22, 22, 25, 26, 28, 33, 33, 30, 37, 68, 77, 84, + 81, 80, 79, 95, 88, 61, 33, 46, 68, 130, 131, 142, 139, 143, 115, 92, + 81, 81, 96, 97, 96, 93, 99, 100, 106, 103, 102, 102, 104, 99, 92, 89, + 89, 83, 49, 22, 22, 20, 24, 44, 34, 42, 103, 122, 104, 110, 88, 106, + 107, 111, 108, 110, 107, 103, 96, 96, 89, 97, 89, 92, 91, 76, 24, 26, + 59, 40, 67, 93, 157, 166, 146, 153, 151, 151, 151, 154, 154, 153, 148, 143, + 138, 138, 123, 97, 49, 32, 30, 30, 32, 38, 68, 61, 161, 183, 178, 163, + 118, 150, 181, 183, 187, 190, 189, 187, 185, 182, 175, 174, 177, 178, 177, 174, + 159, 143, 131, 103, 40, 21, 18, 18, 24, 28, 25, 30, 22, 22, 33, 34, + 38, 37, 42, 42, 56, 44, 46, 44, 48, 46, 46, 44, 44, 42, 37, 45, + 44, 30, 26, 13, 13, 20, 20, 18, 18, 2, 9, 13, 21, 38, 33, 57, + 144, 193, 209, 197, 199, 173, 143, 128, 119, 111, 120, 114, 130, 128, 128, 128, + 130, 130, 130, 126, 126, 123, 122, 122, 120, 112, 118, 119, 119, 119, 119, 116, + 119, 116, 114, 112, 111, 111, 112, 115, 116, 116, 114, 111, 111, 110, 111, 111, + 118, 120, 126, 119, 49, 13, 14, 17, 28, 30, 128, 186, 171, 182, 197, 169, + 135, 128, 111, 110, 96, 103, 100, 97, 104, 100, 97, 88, 93, 93, 92, 89, + 97, 91, 83, 76, 20, 21, 33, 26, 20, 12, 61, 65, 30, 24, 24, 24, + 22, 22, 20, 17, 14, 12, 13, 12, 12, 10, 12, 9, 9, 9, 6, 6, + 6, 8, 6, 5, 4, 5, 2, 2, 2, 4, 8, 6, 9, 17, 13, 16, + 26, 41, 41, 87, 166, 173, 185, 177, 154, 140, 115, 104, 114, 110, 116, 110, + 114, 111, 110, 112, 119, 124, 126, 119, 116, 126, 126, 114, 111, 120, 126, 100, + 24, 46, 55, 52, 52, 46, 55, 53, 55, 51, 60, 56, 28, 17, 20, 24, + 21, 16, 13, 14, 12, 9, 9, 10, 9, 8, 6, 8, 5, 5, 5, 5, + 4, 2, 2, 2, 1, 1, 2, 4, 2, 4, 2, 1, 1, 2, 2, 1, + 1, 2, 1, 1, 1, 2, 0, 0, 0, 1, 4, 8, 12, 14, 89, 157, + 198, 189, 195, 185, 154, 126, 115, 108, 112, 115, 108, 106, 114, 118, 116, 120, + 123, 119, 115, 112, 112, 108, 100, 104, 114, 111, 106, 77, 69, 56, 60, 51, + 33, 29, 25, 26, 25, 29, 28, 28, 25, 36, 28, 24, 13, 9, 45, 41, + 20, 14, 40, 71, 115, 153, 140, 84, 18, 30, 34, 9, 14, 14, 22, 14, + 41, 36, 88, 202, 224, 230, 199, 135, 138, 143, 154, 163, 159, 148, 135, 60, + 2, 5, 2, 2, 1, 1, 0, 29, 29, 32, 51, 52, 53, 61, 57, 53, + 24, 38, 44, 40, 41, 42, 40, 38, 36, 34, 34, 33, 30, 26, 29, 25, + 24, 22, 24, 22, 25, 24, 21, 21, 21, 24, 22, 24, 22, 22, 22, 22, + 22, 22, 17, 14, 12, 14, 21, 33, 25, 34, 40, 37, 25, 25, 36, 26, + 14, 26, 34, 33, 30, 28, 18, 26, 28, 20, 14, 16, 16, 16, 14, 13, + 14, 13, 13, 13, 16, 14, 12, 8, 12, 14, 13, 13, 18, 22, 5, 9, + 20, 20, 25, 14, 32, 42, 44, 63, 29, 4, 5, 16, 16, 13, 13, 14, + 17, 13, 13, 16, 13, 13, 14, 16, 20, 20, 18, 18, 17, 22, 26, 34, + 44, 41, 34, 26, 33, 30, 24, 20, 9, 10, 16, 13, 12, 10, 10, 8, + 6, 10, 6, 5, 10, 14, 6, 6, 13, 10, 12, 16, 13, 25, 59, 91, + 151, 154, 142, 140, 144, 143, 146, 148, 146, 143, 138, 134, 123, 85, 44, 32, + 29, 29, 28, 18, 41, 64, 60, 147, 181, 194, 175, 132, 107, 108, 124, 119, + 119, 112, 127, 122, 118, 115, 115, 115, 118, 114, 112, 108, 65, 49, 28, 20, + 18, 20, 21, 18, 18, 10, 8, 18, 8, 8, 8, 8, 20, 6, 6, 5, + 6, 8, 6, 6, 8, 8, 6, 6, 10, 21, 22, 34, 37, 65, 75, 79, + 80, 64, 57, 30, 5, 45, 55, 52, 28, 34, 55, 88, 120, 139, 126, 124, + 110, 93, 92, 93, 99, 100, 102, 126, 126, 120, 124, 124, 126, 126, 124, 124, + 123, 120, 122, 122, 118, 120, 120, 120, 120, 118, 116, 116, 115, 116, 115, 115, + 115, 114, 112, 114, 114, 112, 112, 112, 114, 116, 119, 123, 126, 122, 88, 21, + 12, 13, 14, 20, 29, 87, 151, 173, 138, 131, 102, 88, 83, 84, 85, 88, + 89, 89, 91, 91, 93, 92, 91, 91, 92, 87, 87, 83, 81, 76, 48, 21, + 18, 20, 21, 21, 10, 59, 22, 22, 14, 14, 13, 17, 9, 10, 12, 10, + 6, 6, 5, 5, 5, 6, 6, 6, 6, 5, 5, 5, 6, 8, 9, 10, + 10, 10, 10, 12, 13, 16, 17, 25, 12, 17, 29, 49, 41, 51, 143, 140, + 130, 123, 118, 108, 107, 99, 93, 99, 100, 106, 103, 100, 102, 108, 106, 106, + 111, 110, 108, 108, 104, 100, 95, 93, 95, 92, 33, 38, 5, 4, 5, 4, + 2, 4, 2, 4, 4, 1, 4, 2, 1, 10, 9, 6, 2, 9, 4, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 2, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 4, 4, 13, 9, 12, 17, 107, 150, 170, 154, 157, 131, 112, + 106, 100, 97, 100, 93, 99, 100, 96, 96, 106, 107, 110, 107, 106, 102, 96, + 96, 97, 95, 93, 87, 53, 20, 9, 5, 5, 5, 5, 4, 5, 4, 2, + 4, 5, 5, 5, 5, 6, 6, 13, 9, 41, 14, 32, 75, 138, 158, 171, + 186, 182, 169, 100, 21, 17, 49, 65, 56, 57, 48, 34, 60, 112, 214, 230, + 230, 189, 132, 138, 142, 154, 161, 158, 146, 130, 28, 2, 4, 5, 9, 14, + 29, 41, 85, 84, 83, 79, 57, 32, 40, 26, 38, 13, 0, 2, 2, 16, + 1, 2, 9, 12, 2, 2, 9, 10, 10, 6, 10, 10, 10, 5, 5, 14, + 13, 13, 12, 12, 12, 10, 9, 9, 9, 9, 9, 12, 10, 13, 20, 21, + 30, 28, 37, 42, 40, 44, 48, 51, 63, 59, 30, 34, 42, 52, 37, 33, + 29, 28, 32, 30, 28, 26, 28, 29, 29, 26, 25, 24, 22, 25, 29, 26, + 24, 22, 20, 17, 14, 20, 29, 33, 14, 24, 37, 17, 20, 17, 38, 34, + 44, 48, 46, 40, 33, 30, 34, 33, 30, 28, 32, 30, 30, 28, 29, 32, + 32, 29, 30, 30, 24, 26, 26, 30, 24, 29, 55, 48, 49, 49, 52, 46, + 33, 38, 33, 33, 36, 38, 36, 30, 32, 32, 30, 26, 29, 30, 28, 25, + 32, 32, 29, 28, 34, 41, 42, 53, 57, 48, 46, 92, 140, 148, 158, 142, + 147, 142, 146, 136, 139, 126, 114, 67, 36, 32, 30, 21, 20, 18, 32, 56, + 63, 128, 165, 190, 199, 171, 119, 81, 61, 59, 55, 51, 51, 41, 41, 38, + 42, 36, 38, 37, 37, 33, 36, 30, 30, 29, 32, 22, 36, 29, 33, 29, + 29, 29, 29, 28, 21, 20, 18, 6, 5, 26, 83, 110, 72, 77, 79, 79, + 73, 64, 69, 77, 83, 103, 89, 102, 103, 75, 81, 76, 84, 72, 45, 9, + 55, 49, 61, 57, 26, 41, 55, 73, 60, 60, 60, 52, 52, 44, 40, 37, + 32, 34, 32, 33, 28, 28, 25, 24, 22, 26, 22, 26, 24, 24, 22, 24, + 21, 22, 20, 22, 21, 26, 24, 25, 24, 21, 24, 29, 34, 55, 89, 104, + 114, 116, 118, 120, 120, 123, 124, 120, 106, 34, 13, 10, 12, 17, 28, 26, + 45, 53, 52, 56, 59, 60, 17, 12, 12, 12, 9, 9, 9, 9, 6, 8, + 8, 8, 9, 9, 9, 10, 9, 9, 10, 10, 8, 5, 8, 6, 8, 12, + 14, 30, 38, 37, 45, 51, 41, 36, 36, 36, 25, 5, 32, 46, 40, 38, + 26, 29, 25, 30, 20, 10, 16, 28, 49, 55, 52, 49, 45, 51, 45, 46, + 48, 41, 36, 8, 33, 49, 51, 41, 65, 88, 84, 93, 81, 76, 71, 69, + 68, 61, 38, 51, 36, 40, 36, 32, 28, 30, 29, 29, 28, 29, 28, 28, + 29, 29, 28, 32, 32, 28, 8, 10, 55, 60, 61, 67, 68, 61, 72, 60, + 56, 56, 21, 5, 53, 56, 63, 52, 56, 45, 51, 21, 12, 9, 8, 4, + 9, 9, 8, 6, 5, 4, 6, 5, 2, 5, 4, 4, 2, 9, 12, 10, + 5, 13, 10, 5, 2, 2, 5, 4, 6, 8, 8, 6, 6, 6, 8, 18, + 24, 10, 17, 13, 96, 99, 104, 95, 102, 88, 76, 52, 40, 38, 25, 24, + 22, 25, 18, 18, 18, 18, 13, 16, 14, 10, 9, 10, 13, 12, 10, 10, + 8, 9, 22, 24, 34, 36, 21, 32, 40, 46, 52, 48, 45, 24, 22, 17, + 12, 33, 34, 28, 13, 44, 81, 144, 189, 191, 187, 198, 186, 147, 100, 24, + 24, 49, 63, 53, 41, 51, 49, 81, 159, 220, 230, 232, 175, 130, 132, 140, + 151, 158, 153, 142, 106, 12, 4, 2, 5, 20, 41, 48, 55, 139, 128, 122, + 116, 88, 77, 71, 64, 42, 5, 26, 89, 103, 87, 83, 93, 104, 89, 85, + 84, 84, 84, 85, 91, 89, 89, 77, 65, 40, 33, 26, 18, 17, 16, 17, + 18, 25, 26, 24, 26, 29, 37, 36, 38, 41, 40, 38, 46, 57, 68, 75, + 72, 83, 76, 85, 71, 52, 25, 80, 68, 45, 41, 41, 37, 38, 37, 38, + 40, 37, 26, 34, 44, 46, 41, 40, 41, 44, 37, 29, 22, 18, 17, 10, + 13, 26, 28, 24, 21, 28, 26, 26, 30, 24, 5, 56, 45, 38, 37, 36, + 33, 41, 33, 29, 29, 32, 29, 28, 18, 21, 33, 26, 29, 30, 32, 25, + 32, 26, 25, 26, 51, 55, 48, 49, 49, 52, 49, 52, 44, 10, 67, 56, + 40, 41, 30, 34, 37, 33, 30, 33, 33, 32, 34, 34, 37, 37, 34, 36, + 37, 37, 46, 51, 53, 41, 48, 127, 136, 136, 140, 131, 128, 126, 124, 107, + 64, 49, 38, 36, 32, 34, 22, 18, 29, 56, 85, 76, 131, 186, 195, 201, + 158, 99, 51, 34, 29, 57, 34, 34, 32, 38, 40, 36, 33, 34, 36, 34, + 34, 28, 30, 26, 28, 25, 28, 24, 18, 24, 29, 29, 28, 32, 33, 28, + 36, 18, 6, 5, 91, 107, 97, 91, 77, 83, 79, 97, 88, 92, 52, 72, + 80, 77, 76, 84, 84, 73, 72, 80, 84, 44, 5, 34, 61, 57, 65, 48, + 25, 37, 41, 25, 20, 20, 34, 22, 24, 22, 22, 22, 22, 21, 17, 17, + 16, 20, 13, 14, 14, 17, 14, 17, 14, 14, 14, 14, 14, 13, 10, 13, + 13, 12, 12, 12, 12, 12, 12, 12, 13, 17, 22, 30, 41, 55, 69, 79, + 87, 87, 71, 33, 13, 13, 12, 17, 18, 32, 33, 34, 28, 29, 30, 25, + 33, 25, 25, 24, 20, 24, 21, 18, 17, 18, 17, 16, 16, 13, 14, 14, + 13, 13, 12, 12, 13, 12, 12, 18, 12, 18, 14, 56, 84, 87, 84, 81, + 87, 79, 76, 77, 49, 26, 1, 65, 51, 45, 41, 38, 49, 59, 40, 44, + 29, 16, 60, 71, 65, 63, 61, 68, 63, 63, 61, 55, 49, 36, 8, 55, + 48, 44, 63, 75, 64, 69, 61, 64, 61, 68, 45, 28, 29, 33, 29, 22, + 20, 18, 17, 17, 18, 16, 16, 16, 16, 12, 12, 10, 8, 12, 9, 9, + 6, 9, 12, 69, 71, 65, 64, 59, 55, 53, 56, 61, 72, 24, 5, 72, + 56, 42, 56, 46, 48, 45, 41, 37, 26, 12, 4, 18, 42, 36, 22, 26, + 37, 36, 22, 26, 33, 26, 16, 14, 26, 30, 29, 38, 34, 32, 26, 26, + 12, 2, 10, 22, 30, 24, 22, 26, 18, 21, 22, 22, 12, 17, 6, 69, + 77, 63, 45, 51, 48, 44, 26, 29, 29, 30, 20, 22, 20, 25, 18, 18, + 16, 16, 13, 17, 14, 13, 17, 20, 17, 17, 17, 21, 26, 24, 26, 32, + 38, 37, 26, 40, 57, 56, 26, 26, 49, 56, 51, 36, 34, 16, 12, 49, + 76, 134, 190, 189, 174, 187, 136, 112, 91, 99, 24, 26, 49, 76, 75, 80, + 65, 51, 88, 191, 222, 229, 228, 159, 128, 134, 139, 150, 151, 144, 134, 61, + 5, 5, 2, 4, 21, 44, 41, 69, 107, 107, 111, 108, 95, 108, 91, 83, + 45, 2, 107, 102, 93, 91, 91, 91, 85, 92, 89, 88, 83, 84, 85, 83, + 79, 80, 80, 79, 91, 84, 61, 40, 36, 24, 42, 57, 59, 56, 56, 53, + 52, 49, 52, 48, 42, 29, 36, 71, 80, 88, 83, 85, 81, 84, 87, 80, + 64, 28, 79, 69, 67, 61, 63, 61, 57, 56, 51, 49, 45, 26, 42, 56, + 65, 61, 60, 56, 59, 52, 42, 41, 38, 33, 10, 48, 49, 48, 59, 32, + 37, 55, 34, 32, 33, 12, 56, 71, 61, 64, 61, 49, 48, 36, 32, 38, + 30, 12, 21, 67, 36, 60, 45, 52, 38, 51, 38, 25, 17, 14, 26, 46, + 56, 55, 52, 52, 63, 52, 46, 40, 9, 67, 71, 41, 48, 40, 40, 40, + 40, 45, 37, 37, 26, 18, 32, 36, 45, 34, 40, 41, 48, 45, 46, 51, + 51, 41, 103, 132, 115, 84, 69, 65, 61, 51, 49, 42, 42, 34, 30, 33, + 26, 21, 37, 51, 55, 77, 79, 173, 186, 198, 197, 150, 97, 40, 34, 34, + 33, 34, 33, 36, 42, 41, 41, 59, 84, 124, 136, 154, 162, 153, 142, 97, + 52, 36, 29, 24, 26, 26, 21, 14, 17, 16, 21, 30, 21, 16, 17, 96, + 107, 68, 56, 55, 59, 55, 51, 75, 48, 63, 88, 88, 75, 95, 67, 69, + 63, 71, 73, 88, 41, 4, 45, 51, 72, 49, 41, 45, 25, 21, 21, 33, + 37, 13, 17, 14, 16, 18, 9, 14, 12, 12, 9, 6, 9, 9, 10, 12, + 12, 12, 10, 10, 10, 10, 12, 9, 12, 12, 12, 14, 14, 20, 14, 17, + 17, 20, 14, 13, 10, 13, 13, 14, 14, 16, 14, 14, 16, 13, 13, 12, + 12, 8, 17, 30, 40, 37, 30, 30, 28, 26, 24, 25, 24, 22, 28, 21, + 24, 21, 20, 20, 17, 17, 14, 14, 14, 14, 16, 13, 12, 14, 12, 14, + 16, 22, 26, 26, 22, 36, 67, 83, 79, 69, 68, 67, 69, 67, 75, 55, + 30, 2, 57, 53, 60, 33, 48, 48, 44, 40, 44, 34, 16, 63, 80, 84, + 79, 72, 77, 83, 77, 64, 64, 55, 38, 6, 55, 46, 51, 85, 88, 72, + 64, 87, 57, 26, 29, 32, 33, 36, 24, 21, 20, 17, 17, 17, 17, 16, + 13, 14, 14, 14, 12, 9, 9, 9, 10, 10, 8, 8, 10, 21, 68, 64, + 53, 56, 59, 52, 44, 44, 46, 91, 22, 6, 67, 64, 65, 64, 61, 60, + 53, 40, 41, 29, 12, 4, 37, 46, 45, 34, 32, 21, 26, 33, 24, 16, + 17, 9, 21, 40, 59, 53, 55, 41, 48, 42, 25, 14, 5, 42, 51, 32, + 32, 26, 26, 26, 25, 18, 16, 13, 17, 9, 48, 91, 65, 57, 42, 37, + 44, 29, 29, 29, 28, 21, 21, 24, 25, 17, 20, 20, 17, 20, 16, 16, + 18, 21, 18, 22, 24, 20, 21, 25, 26, 34, 25, 33, 13, 18, 57, 55, + 77, 51, 25, 22, 26, 18, 22, 18, 12, 46, 79, 85, 171, 189, 173, 170, + 139, 96, 89, 93, 68, 40, 32, 45, 69, 45, 51, 46, 63, 120, 204, 222, + 229, 222, 142, 127, 132, 139, 148, 147, 140, 112, 20, 4, 5, 1, 4, 22, + 41, 44, 59, 81, 88, 84, 77, 81, 79, 102, 79, 45, 10, 91, 108, 96, + 107, 92, 89, 91, 84, 80, 77, 61, 49, 64, 84, 97, 97, 91, 93, 72, + 80, 84, 67, 41, 29, 51, 63, 60, 63, 59, 61, 61, 57, 57, 61, 33, + 28, 57, 85, 92, 88, 87, 80, 85, 84, 76, 64, 53, 30, 75, 73, 67, + 67, 68, 63, 67, 56, 57, 59, 48, 28, 51, 55, 63, 63, 64, 75, 71, + 68, 56, 55, 41, 33, 13, 51, 60, 49, 59, 59, 53, 51, 55, 34, 30, + 9, 49, 69, 85, 88, 89, 64, 65, 53, 48, 34, 32, 9, 51, 75, 73, + 65, 63, 59, 59, 60, 49, 44, 28, 13, 34, 53, 59, 44, 42, 51, 55, + 53, 57, 28, 2, 75, 76, 71, 53, 33, 37, 28, 40, 34, 32, 36, 24, + 16, 30, 67, 56, 56, 55, 55, 49, 49, 48, 51, 59, 41, 119, 127, 108, + 85, 75, 61, 60, 53, 49, 41, 41, 33, 22, 21, 28, 33, 51, 53, 87, + 81, 112, 170, 198, 197, 201, 136, 96, 63, 59, 60, 49, 45, 49, 64, 80, + 112, 146, 179, 204, 216, 221, 225, 224, 217, 217, 208, 183, 153, 120, 65, 40, + 25, 22, 20, 20, 16, 12, 26, 17, 13, 4, 69, 107, 55, 45, 57, 60, + 56, 51, 71, 51, 67, 77, 85, 80, 85, 92, 83, 73, 75, 73, 81, 38, + 5, 45, 49, 57, 48, 41, 24, 25, 26, 22, 21, 20, 12, 55, 34, 26, + 24, 26, 40, 24, 30, 26, 25, 20, 21, 26, 16, 25, 29, 28, 25, 22, + 22, 21, 18, 18, 20, 20, 32, 28, 30, 28, 30, 28, 28, 25, 28, 18, + 16, 13, 14, 13, 10, 12, 12, 12, 13, 12, 13, 10, 5, 22, 37, 40, + 42, 45, 41, 44, 38, 38, 28, 26, 24, 52, 53, 34, 32, 30, 24, 25, + 29, 26, 10, 6, 25, 32, 36, 22, 17, 22, 29, 18, 33, 26, 30, 20, + 30, 65, 77, 69, 71, 73, 64, 64, 53, 61, 65, 22, 4, 37, 60, 56, + 55, 51, 61, 65, 44, 57, 29, 16, 59, 81, 81, 84, 80, 79, 85, 73, + 79, 63, 55, 45, 8, 53, 40, 45, 57, 68, 107, 83, 64, 29, 33, 30, + 46, 64, 61, 56, 40, 44, 44, 45, 37, 36, 25, 25, 24, 26, 22, 21, + 20, 17, 17, 16, 14, 18, 13, 12, 10, 51, 75, 84, 56, 40, 52, 73, + 49, 51, 71, 21, 8, 57, 63, 60, 56, 55, 49, 81, 36, 38, 37, 12, + 5, 41, 46, 32, 44, 28, 33, 17, 18, 20, 29, 14, 10, 38, 57, 63, + 60, 42, 30, 32, 53, 25, 16, 12, 46, 45, 29, 24, 25, 20, 32, 20, + 21, 12, 13, 16, 5, 51, 72, 44, 63, 49, 56, 56, 36, 28, 29, 32, + 25, 29, 28, 13, 20, 20, 20, 21, 18, 22, 21, 16, 21, 26, 26, 28, + 24, 25, 26, 30, 28, 45, 34, 22, 5, 46, 59, 51, 42, 42, 16, 26, + 16, 12, 21, 10, 51, 81, 102, 183, 179, 177, 146, 103, 93, 89, 110, 57, + 40, 29, 51, 56, 57, 48, 48, 64, 143, 212, 220, 226, 205, 131, 128, 134, + 140, 147, 143, 135, 71, 9, 5, 4, 1, 2, 22, 34, 26, 77, 77, 75, + 88, 88, 84, 80, 84, 65, 42, 20, 72, 102, 103, 96, 106, 92, 95, 91, + 93, 79, 60, 44, 83, 92, 93, 84, 77, 77, 80, 77, 79, 80, 49, 30, + 64, 72, 71, 72, 67, 67, 65, 60, 59, 69, 33, 26, 59, 88, 89, 95, + 93, 72, 73, 76, 75, 68, 45, 33, 73, 68, 65, 68, 64, 72, 67, 61, + 60, 64, 51, 36, 53, 63, 76, 65, 53, 76, 64, 80, 64, 57, 49, 37, + 14, 44, 64, 63, 53, 49, 49, 51, 55, 38, 34, 9, 60, 77, 83, 80, + 83, 88, 67, 73, 57, 48, 34, 6, 60, 73, 85, 73, 69, 68, 72, 65, + 64, 60, 26, 13, 57, 60, 67, 61, 45, 53, 72, 60, 52, 40, 8, 79, + 75, 64, 59, 44, 36, 37, 48, 51, 48, 44, 28, 13, 61, 69, 71, 68, + 67, 57, 59, 53, 55, 60, 57, 51, 108, 124, 111, 97, 84, 69, 63, 56, + 46, 41, 41, 24, 21, 30, 30, 49, 49, 63, 83, 71, 84, 182, 191, 208, + 177, 131, 99, 115, 119, 108, 118, 126, 150, 169, 194, 208, 218, 224, 225, 224, + 222, 220, 220, 220, 217, 212, 213, 206, 206, 175, 108, 42, 22, 21, 17, 24, + 18, 24, 32, 5, 4, 68, 103, 67, 51, 84, 59, 80, 67, 55, 42, 67, + 93, 89, 72, 83, 77, 93, 88, 65, 65, 76, 46, 8, 52, 48, 59, 52, + 52, 34, 33, 14, 24, 13, 29, 21, 41, 60, 52, 32, 36, 28, 38, 32, + 32, 32, 33, 20, 18, 32, 33, 34, 37, 30, 30, 30, 32, 32, 33, 28, + 26, 32, 38, 33, 34, 29, 32, 29, 30, 28, 18, 32, 37, 37, 37, 32, + 33, 20, 17, 17, 12, 13, 10, 6, 28, 40, 46, 41, 36, 37, 40, 44, + 41, 33, 26, 28, 48, 60, 38, 49, 46, 45, 33, 26, 28, 24, 8, 40, + 40, 37, 38, 38, 34, 32, 28, 28, 25, 25, 24, 21, 60, 75, 76, 69, + 68, 61, 63, 52, 59, 42, 29, 5, 53, 60, 72, 56, 48, 48, 53, 60, + 53, 33, 22, 71, 84, 77, 76, 79, 84, 87, 84, 83, 75, 61, 41, 6, + 53, 44, 55, 38, 52, 72, 93, 81, 29, 33, 28, 49, 67, 55, 52, 51, + 52, 49, 51, 52, 51, 33, 33, 22, 34, 33, 29, 28, 28, 24, 21, 25, + 25, 14, 12, 44, 65, 73, 60, 56, 48, 57, 48, 55, 53, 83, 28, 9, + 69, 64, 59, 76, 51, 53, 48, 53, 37, 37, 13, 4, 40, 52, 34, 71, + 40, 41, 40, 32, 24, 26, 14, 6, 49, 63, 64, 33, 26, 25, 26, 46, + 25, 12, 5, 38, 45, 30, 26, 22, 21, 16, 18, 17, 16, 16, 18, 10, + 57, 76, 64, 42, 49, 46, 60, 44, 46, 25, 24, 10, 8, 22, 18, 21, + 18, 21, 14, 17, 20, 10, 12, 21, 38, 41, 40, 44, 22, 16, 18, 22, + 29, 30, 25, 9, 52, 53, 49, 42, 32, 20, 24, 18, 14, 10, 10, 52, + 81, 106, 185, 179, 146, 112, 96, 85, 103, 100, 73, 37, 30, 38, 61, 52, + 40, 53, 96, 187, 216, 222, 228, 185, 124, 127, 132, 146, 143, 138, 114, 20, + 5, 5, 4, 1, 2, 12, 40, 21, 49, 108, 76, 76, 80, 73, 81, 81, + 88, 38, 2, 72, 108, 100, 97, 104, 99, 92, 89, 92, 71, 61, 42, 80, + 87, 76, 84, 85, 87, 103, 91, 80, 83, 60, 38, 71, 76, 80, 73, 80, + 73, 75, 64, 57, 64, 34, 24, 73, 91, 88, 89, 87, 71, 84, 77, 80, + 65, 56, 37, 69, 76, 61, 77, 76, 61, 64, 69, 67, 68, 55, 36, 59, + 72, 71, 68, 53, 65, 61, 75, 71, 64, 52, 37, 5, 46, 52, 63, 56, + 51, 49, 52, 55, 38, 34, 10, 55, 76, 79, 71, 67, 67, 68, 64, 63, + 49, 32, 8, 68, 85, 83, 73, 73, 67, 77, 75, 68, 59, 37, 14, 57, + 63, 69, 53, 64, 53, 65, 59, 49, 41, 6, 76, 67, 59, 53, 53, 41, + 42, 56, 59, 53, 44, 26, 13, 63, 65, 75, 69, 71, 59, 63, 63, 56, + 49, 46, 44, 95, 119, 116, 92, 96, 88, 72, 67, 52, 48, 25, 17, 25, + 45, 52, 52, 65, 53, 77, 69, 80, 155, 201, 204, 171, 119, 91, 111, 182, + 186, 191, 199, 204, 209, 218, 220, 220, 220, 213, 208, 193, 190, 190, 179, 170, + 159, 162, 166, 182, 198, 197, 151, 61, 29, 20, 16, 20, 20, 18, 1, 5, + 89, 114, 80, 56, 55, 67, 52, 65, 64, 37, 67, 88, 84, 68, 65, 67, + 68, 72, 72, 69, 71, 46, 9, 55, 34, 57, 44, 57, 52, 34, 30, 16, + 12, 21, 21, 49, 53, 37, 45, 45, 32, 38, 44, 46, 38, 29, 13, 30, + 48, 64, 60, 34, 34, 34, 40, 40, 38, 37, 21, 30, 57, 49, 51, 49, + 34, 33, 33, 30, 29, 21, 30, 44, 38, 42, 36, 36, 30, 28, 28, 25, + 25, 12, 5, 33, 40, 45, 51, 55, 55, 44, 30, 45, 34, 28, 22, 45, + 45, 61, 44, 41, 44, 41, 33, 34, 26, 4, 46, 40, 25, 41, 37, 22, + 24, 38, 30, 36, 28, 24, 16, 59, 75, 77, 59, 57, 51, 49, 61, 41, + 48, 30, 1, 55, 60, 69, 53, 42, 38, 42, 49, 63, 36, 24, 77, 85, + 93, 87, 80, 73, 75, 84, 85, 80, 67, 41, 6, 53, 40, 45, 36, 60, + 68, 67, 49, 30, 34, 33, 52, 63, 61, 53, 52, 49, 52, 46, 45, 52, + 52, 32, 26, 34, 37, 32, 30, 29, 29, 26, 30, 28, 17, 8, 59, 51, + 71, 42, 52, 51, 56, 53, 48, 53, 65, 32, 9, 68, 64, 72, 75, 76, + 75, 48, 53, 38, 37, 14, 4, 32, 53, 44, 46, 51, 38, 33, 38, 36, + 28, 14, 14, 53, 63, 59, 25, 24, 37, 37, 40, 24, 16, 5, 56, 33, + 36, 17, 17, 16, 17, 17, 20, 18, 16, 17, 8, 41, 85, 63, 55, 46, + 59, 37, 48, 40, 37, 26, 6, 10, 18, 29, 25, 16, 16, 14, 17, 21, + 12, 13, 42, 40, 40, 40, 30, 41, 36, 41, 28, 29, 25, 25, 16, 51, + 56, 44, 40, 32, 18, 12, 16, 16, 13, 12, 44, 77, 84, 178, 177, 131, + 102, 97, 95, 118, 112, 73, 25, 30, 40, 55, 52, 46, 72, 159, 202, 208, + 222, 217, 146, 122, 127, 139, 142, 136, 123, 48, 6, 4, 4, 2, 1, 4, + 20, 34, 25, 17, 108, 77, 76, 81, 85, 88, 83, 80, 37, 2, 80, 100, + 95, 104, 102, 100, 97, 97, 85, 71, 56, 38, 79, 75, 84, 83, 96, 93, + 95, 85, 87, 80, 72, 41, 75, 85, 87, 85, 77, 80, 71, 67, 61, 60, + 32, 48, 80, 87, 87, 76, 81, 61, 65, 65, 67, 67, 64, 38, 60, 73, + 63, 56, 61, 68, 72, 77, 64, 64, 65, 34, 59, 69, 67, 61, 60, 72, + 67, 79, 71, 71, 53, 37, 8, 42, 60, 65, 52, 67, 55, 51, 52, 38, + 36, 14, 56, 80, 72, 72, 72, 73, 72, 67, 67, 51, 32, 8, 63, 67, + 76, 76, 77, 77, 81, 77, 76, 59, 32, 25, 61, 60, 69, 59, 65, 65, + 79, 56, 46, 36, 6, 76, 76, 63, 57, 53, 69, 69, 69, 68, 63, 45, + 26, 10, 65, 72, 72, 67, 68, 64, 67, 72, 57, 59, 61, 40, 83, 111, + 112, 102, 84, 92, 77, 71, 56, 64, 29, 14, 38, 51, 65, 68, 65, 53, + 100, 72, 93, 108, 177, 197, 174, 115, 103, 111, 148, 183, 193, 195, 202, 205, + 206, 208, 199, 193, 185, 166, 147, 143, 143, 144, 136, 140, 136, 143, 146, 144, + 155, 179, 169, 73, 18, 16, 22, 18, 16, 12, 14, 91, 95, 81, 56, 57, + 65, 53, 64, 59, 37, 64, 88, 79, 69, 75, 68, 67, 63, 77, 76, 68, + 45, 9, 46, 33, 67, 72, 60, 40, 29, 22, 21, 13, 26, 9, 42, 59, + 44, 46, 34, 37, 42, 44, 44, 41, 28, 14, 42, 60, 59, 63, 65, 45, + 44, 42, 38, 44, 33, 22, 56, 52, 56, 52, 51, 48, 36, 34, 36, 32, + 21, 41, 40, 49, 44, 46, 42, 36, 29, 30, 30, 25, 12, 5, 37, 46, + 45, 42, 38, 44, 44, 30, 37, 37, 29, 18, 46, 45, 56, 52, 57, 60, + 44, 53, 32, 26, 4, 51, 41, 34, 40, 34, 44, 37, 44, 40, 41, 34, + 24, 29, 59, 83, 59, 60, 56, 65, 52, 55, 64, 42, 32, 1, 65, 60, + 55, 52, 61, 65, 67, 64, 51, 38, 21, 72, 80, 88, 99, 92, 85, 83, + 84, 77, 83, 67, 41, 5, 52, 48, 46, 42, 71, 26, 29, 28, 29, 36, + 30, 52, 61, 59, 63, 48, 61, 55, 53, 46, 49, 48, 40, 26, 30, 34, + 44, 41, 44, 38, 37, 36, 28, 18, 8, 51, 75, 69, 51, 55, 71, 64, + 63, 49, 45, 67, 24, 12, 64, 68, 55, 53, 56, 56, 56, 53, 37, 37, + 17, 5, 41, 61, 32, 40, 34, 55, 44, 45, 37, 24, 13, 20, 53, 67, + 38, 30, 26, 41, 42, 41, 22, 12, 5, 52, 57, 34, 30, 22, 25, 24, + 24, 26, 21, 18, 18, 9, 48, 72, 81, 59, 53, 42, 29, 36, 36, 33, + 22, 5, 22, 41, 38, 32, 26, 26, 25, 32, 22, 12, 8, 41, 34, 37, + 26, 36, 41, 28, 40, 32, 30, 25, 14, 16, 49, 65, 32, 34, 25, 20, + 14, 16, 14, 14, 10, 45, 67, 79, 127, 171, 143, 107, 99, 102, 126, 114, + 53, 44, 36, 45, 49, 41, 69, 134, 198, 208, 212, 220, 193, 124, 123, 128, + 143, 136, 128, 80, 10, 4, 8, 4, 2, 1, 2, 21, 34, 38, 18, 76, + 80, 85, 99, 96, 89, 81, 80, 38, 4, 92, 103, 97, 102, 102, 100, 91, + 99, 79, 68, 56, 36, 75, 100, 108, 100, 100, 97, 87, 83, 81, 81, 75, + 44, 45, 69, 75, 69, 73, 72, 72, 65, 64, 60, 32, 52, 85, 89, 72, + 69, 68, 71, 69, 71, 69, 64, 61, 38, 55, 80, 68, 65, 56, 67, 53, + 61, 53, 52, 65, 38, 63, 72, 68, 67, 71, 73, 71, 60, 63, 73, 53, + 36, 6, 46, 53, 65, 56, 56, 61, 52, 49, 42, 37, 9, 45, 79, 73, + 73, 75, 73, 69, 71, 63, 49, 33, 5, 44, 83, 71, 83, 77, 80, 81, + 80, 73, 72, 30, 10, 55, 67, 72, 65, 60, 61, 57, 59, 55, 28, 1, + 72, 69, 52, 63, 56, 52, 51, 56, 53, 60, 44, 25, 9, 67, 59, 65, + 65, 64, 65, 73, 85, 63, 59, 59, 46, 63, 107, 110, 100, 81, 88, 77, + 76, 68, 60, 34, 17, 45, 64, 67, 61, 57, 56, 100, 77, 102, 77, 147, + 205, 177, 107, 99, 100, 120, 130, 157, 166, 175, 178, 179, 173, 158, 140, 134, + 138, 139, 140, 144, 154, 157, 161, 146, 139, 134, 128, 135, 136, 173, 146, 69, + 16, 22, 16, 12, 8, 5, 75, 89, 79, 44, 55, 69, 57, 64, 55, 38, + 64, 84, 87, 79, 68, 75, 69, 68, 81, 75, 71, 44, 12, 38, 40, 42, + 46, 51, 51, 30, 22, 21, 13, 36, 8, 33, 48, 53, 52, 68, 65, 75, + 73, 69, 45, 34, 6, 46, 60, 55, 65, 55, 53, 55, 67, 71, 49, 37, + 20, 55, 49, 65, 52, 46, 52, 46, 45, 36, 33, 24, 42, 45, 45, 45, + 41, 41, 38, 36, 32, 29, 24, 13, 4, 37, 48, 40, 34, 44, 60, 37, + 40, 41, 34, 29, 18, 55, 52, 55, 46, 51, 51, 52, 55, 40, 21, 4, + 49, 48, 57, 45, 42, 45, 52, 40, 38, 37, 42, 29, 18, 41, 75, 81, + 81, 79, 73, 80, 81, 59, 55, 22, 0, 49, 61, 60, 68, 77, 64, 63, + 61, 48, 38, 21, 56, 85, 83, 85, 81, 83, 84, 85, 93, 88, 80, 41, + 5, 52, 36, 52, 65, 37, 56, 38, 44, 28, 36, 34, 51, 56, 69, 69, + 53, 56, 61, 64, 57, 59, 51, 48, 29, 34, 44, 38, 41, 45, 42, 41, + 41, 32, 17, 9, 64, 73, 67, 75, 59, 60, 57, 48, 48, 55, 68, 24, + 14, 36, 68, 57, 48, 56, 56, 52, 46, 37, 34, 14, 5, 45, 53, 44, + 40, 45, 46, 49, 37, 29, 20, 17, 12, 53, 64, 38, 25, 38, 33, 38, + 37, 22, 14, 4, 51, 38, 40, 33, 45, 44, 53, 51, 45, 26, 20, 20, + 9, 42, 76, 87, 85, 61, 64, 32, 32, 34, 28, 20, 14, 33, 33, 22, + 30, 40, 40, 41, 29, 18, 12, 9, 46, 33, 33, 18, 42, 41, 34, 38, + 28, 30, 29, 21, 9, 48, 63, 40, 32, 20, 20, 17, 30, 10, 17, 9, + 33, 52, 72, 95, 131, 166, 111, 99, 126, 136, 96, 45, 45, 57, 44, 53, + 71, 132, 186, 208, 209, 220, 209, 150, 120, 127, 138, 135, 124, 96, 20, 5, + 5, 5, 5, 2, 1, 1, 14, 33, 5, 28, 77, 79, 79, 77, 79, 81, + 83, 69, 33, 5, 65, 103, 96, 97, 96, 97, 100, 89, 71, 65, 57, 29, + 84, 83, 91, 81, 95, 84, 83, 76, 72, 72, 68, 67, 46, 51, 60, 59, + 69, 71, 72, 61, 63, 61, 28, 55, 81, 80, 69, 75, 76, 75, 69, 75, + 65, 81, 57, 42, 55, 79, 75, 77, 67, 72, 61, 59, 57, 67, 51, 42, + 67, 76, 71, 80, 63, 64, 73, 69, 71, 56, 53, 40, 10, 38, 60, 63, + 63, 57, 64, 55, 55, 44, 40, 13, 72, 80, 85, 87, 77, 73, 73, 72, + 68, 48, 33, 4, 61, 84, 72, 79, 81, 80, 88, 80, 76, 65, 42, 12, + 59, 73, 77, 63, 64, 61, 61, 65, 49, 44, 5, 67, 81, 67, 81, 69, + 81, 72, 71, 67, 63, 44, 25, 9, 71, 68, 69, 77, 64, 63, 61, 72, + 72, 57, 63, 45, 55, 99, 102, 97, 97, 84, 80, 79, 73, 65, 36, 17, + 53, 67, 68, 68, 69, 91, 75, 100, 65, 107, 84, 190, 189, 120, 108, 102, + 107, 114, 127, 131, 132, 136, 132, 130, 123, 115, 114, 112, 116, 130, 140, 150, + 154, 155, 158, 143, 140, 142, 139, 128, 138, 167, 80, 17, 16, 17, 13, 5, + 5, 67, 93, 75, 57, 59, 61, 59, 65, 49, 32, 61, 83, 93, 93, 81, + 80, 83, 83, 87, 73, 69, 44, 17, 37, 38, 51, 40, 37, 26, 24, 12, + 18, 24, 21, 28, 41, 69, 67, 65, 65, 59, 67, 51, 44, 45, 29, 9, + 44, 64, 67, 55, 56, 56, 53, 57, 55, 44, 37, 20, 72, 46, 69, 45, + 56, 49, 48, 46, 49, 36, 22, 37, 45, 38, 38, 38, 44, 36, 36, 33, + 33, 25, 14, 5, 37, 46, 40, 30, 40, 36, 36, 28, 29, 34, 26, 20, + 51, 61, 57, 48, 46, 48, 53, 55, 36, 28, 12, 49, 46, 45, 59, 46, + 45, 45, 48, 46, 51, 52, 40, 22, 38, 61, 71, 72, 69, 52, 56, 51, + 51, 44, 32, 4, 52, 60, 59, 64, 61, 57, 51, 49, 51, 44, 32, 36, + 73, 77, 79, 77, 76, 79, 79, 76, 77, 69, 46, 5, 49, 48, 33, 38, + 28, 33, 33, 33, 33, 37, 37, 33, 57, 46, 49, 45, 51, 46, 49, 46, + 51, 48, 48, 41, 32, 32, 32, 28, 32, 36, 37, 42, 32, 21, 9, 63, + 73, 61, 49, 48, 55, 48, 49, 57, 68, 69, 34, 12, 21, 63, 71, 63, + 71, 59, 53, 33, 34, 25, 14, 5, 38, 49, 53, 63, 49, 53, 46, 41, + 38, 18, 16, 18, 52, 76, 51, 24, 26, 41, 42, 53, 26, 10, 4, 33, + 51, 37, 36, 38, 30, 26, 30, 33, 40, 21, 22, 9, 38, 64, 77, 71, + 53, 55, 24, 32, 33, 29, 16, 13, 40, 29, 32, 26, 25, 20, 22, 26, + 20, 9, 9, 45, 26, 36, 38, 38, 32, 33, 33, 30, 30, 32, 22, 8, + 46, 53, 33, 17, 26, 20, 17, 12, 14, 9, 14, 34, 40, 34, 59, 77, + 155, 143, 100, 110, 132, 123, 56, 42, 52, 67, 107, 148, 185, 198, 204, 217, + 213, 162, 119, 123, 135, 131, 120, 87, 18, 6, 5, 6, 5, 4, 2, 1, + 1, 20, 25, 57, 65, 67, 65, 65, 65, 65, 65, 63, 61, 32, 13, 37, + 71, 103, 107, 87, 88, 71, 69, 69, 51, 51, 29, 79, 77, 75, 76, 76, + 79, 75, 64, 59, 57, 59, 56, 60, 71, 71, 61, 57, 57, 57, 55, 60, + 48, 26, 71, 80, 87, 69, 69, 61, 64, 61, 60, 59, 64, 63, 52, 45, + 61, 60, 55, 60, 59, 73, 64, 63, 67, 64, 57, 56, 55, 59, 68, 61, + 56, 55, 55, 53, 52, 49, 38, 5, 36, 60, 56, 55, 53, 53, 53, 55, + 56, 37, 16, 51, 68, 65, 67, 67, 68, 64, 77, 68, 48, 30, 6, 65, + 84, 79, 73, 72, 76, 68, 75, 73, 61, 34, 6, 56, 61, 72, 71, 63, + 71, 71, 64, 46, 42, 5, 61, 68, 67, 67, 64, 64, 63, 61, 59, 59, + 42, 24, 8, 65, 67, 72, 68, 73, 68, 75, 61, 68, 68, 60, 48, 45, + 76, 100, 87, 81, 71, 59, 61, 65, 63, 41, 16, 46, 64, 84, 75, 95, + 107, 77, 112, 112, 100, 69, 111, 174, 132, 100, 102, 108, 111, 112, 107, 120, + 116, 120, 112, 108, 104, 104, 108, 147, 153, 128, 148, 159, 154, 154, 162, 147, + 146, 143, 143, 139, 163, 81, 13, 12, 14, 13, 2, 4, 63, 85, 75, 60, + 55, 61, 59, 65, 52, 30, 63, 69, 83, 80, 73, 72, 68, 71, 68, 59, + 56, 45, 16, 8, 28, 26, 9, 5, 20, 21, 2, 5, 12, 14, 30, 44, + 60, 68, 56, 53, 48, 48, 45, 45, 49, 26, 9, 38, 59, 69, 61, 64, + 67, 57, 61, 59, 46, 38, 21, 52, 45, 60, 48, 40, 40, 33, 30, 40, + 37, 33, 33, 28, 32, 29, 29, 26, 25, 26, 28, 25, 24, 13, 4, 38, + 53, 22, 22, 25, 21, 22, 24, 24, 26, 24, 25, 25, 36, 48, 48, 36, + 34, 33, 32, 26, 29, 4, 46, 45, 42, 40, 40, 41, 42, 40, 40, 37, + 38, 37, 34, 26, 24, 30, 32, 30, 28, 30, 30, 30, 32, 34, 1, 26, + 52, 53, 51, 49, 49, 29, 26, 29, 33, 46, 48, 40, 52, 64, 57, 60, + 59, 63, 69, 68, 57, 41, 5, 41, 29, 26, 29, 29, 29, 32, 34, 20, + 18, 20, 38, 38, 41, 41, 45, 42, 44, 44, 45, 44, 45, 44, 44, 42, + 48, 42, 42, 40, 30, 32, 40, 30, 24, 12, 60, 75, 55, 60, 64, 48, + 67, 71, 57, 49, 46, 36, 13, 16, 59, 55, 59, 32, 29, 29, 20, 24, + 20, 14, 4, 36, 41, 36, 21, 34, 34, 37, 26, 26, 21, 16, 17, 49, + 61, 32, 33, 29, 38, 40, 56, 18, 13, 4, 48, 41, 42, 36, 32, 29, + 29, 29, 26, 24, 24, 25, 10, 21, 34, 57, 51, 34, 24, 29, 25, 22, + 29, 25, 13, 40, 30, 34, 24, 32, 25, 24, 21, 20, 10, 9, 38, 40, + 36, 32, 33, 33, 32, 25, 28, 24, 22, 14, 9, 40, 49, 24, 9, 10, + 13, 16, 14, 13, 10, 12, 24, 33, 32, 37, 57, 73, 170, 112, 107, 138, + 130, 124, 120, 123, 150, 177, 182, 193, 195, 209, 206, 162, 116, 122, 130, 119, + 111, 81, 22, 6, 6, 6, 5, 4, 4, 4, 1, 1, 12, 14, 12, 10, + 38, 36, 34, 30, 26, 25, 21, 20, 16, 18, 20, 26, 32, 30, 38, 40, + 48, 38, 48, 52, 42, 28, 42, 34, 40, 37, 30, 30, 36, 29, 28, 25, + 29, 28, 34, 28, 34, 34, 49, 67, 69, 69, 49, 38, 26, 61, 67, 69, + 61, 59, 53, 63, 60, 55, 64, 63, 59, 55, 59, 64, 72, 64, 63, 63, + 61, 61, 61, 59, 57, 57, 56, 56, 34, 36, 25, 18, 17, 17, 16, 16, + 13, 17, 5, 14, 16, 18, 20, 21, 25, 44, 52, 45, 37, 20, 5, 42, + 60, 32, 40, 46, 60, 32, 45, 44, 24, 6, 32, 44, 36, 36, 44, 44, + 37, 37, 45, 45, 18, 8, 32, 41, 30, 41, 37, 37, 28, 42, 34, 20, + 6, 16, 38, 38, 37, 36, 40, 40, 38, 38, 41, 40, 21, 8, 48, 71, + 65, 51, 49, 61, 61, 44, 49, 56, 61, 52, 56, 59, 53, 49, 56, 53, + 55, 48, 45, 45, 36, 16, 49, 75, 76, 65, 64, 79, 80, 76, 85, 107, + 108, 142, 174, 167, 112, 106, 97, 108, 99, 56, 45, 45, 46, 45, 42, 44, + 44, 81, 103, 163, 123, 126, 153, 155, 159, 157, 154, 161, 147, 147, 140, 162, + 91, 20, 12, 13, 2, 9, 8, 22, 42, 64, 83, 81, 75, 84, 55, 48, + 30, 55, 56, 71, 69, 65, 52, 46, 44, 40, 40, 30, 22, 21, 25, 10, + 13, 12, 10, 8, 9, 6, 6, 5, 5, 6, 14, 40, 46, 46, 44, 40, + 60, 46, 56, 42, 16, 9, 32, 55, 49, 42, 51, 52, 49, 46, 49, 46, + 38, 24, 63, 45, 37, 40, 38, 38, 38, 38, 36, 34, 33, 32, 33, 32, + 32, 32, 30, 29, 28, 28, 28, 25, 25, 4, 18, 21, 17, 17, 20, 21, + 20, 21, 21, 24, 21, 21, 24, 24, 25, 25, 24, 24, 24, 25, 24, 21, + 4, 25, 29, 26, 28, 28, 29, 29, 29, 30, 30, 32, 32, 26, 30, 33, + 32, 28, 34, 33, 29, 24, 34, 29, 22, 9, 33, 20, 17, 16, 20, 12, + 18, 21, 13, 13, 22, 13, 28, 34, 30, 28, 42, 48, 44, 33, 48, 49, + 29, 6, 37, 9, 10, 10, 10, 8, 8, 9, 9, 6, 6, 8, 6, 6, + 6, 8, 8, 8, 8, 10, 10, 9, 10, 12, 14, 14, 16, 18, 21, 40, + 38, 45, 32, 21, 9, 51, 69, 56, 67, 71, 64, 63, 51, 52, 36, 33, + 24, 20, 12, 18, 18, 20, 22, 21, 14, 14, 12, 10, 17, 6, 12, 12, + 12, 13, 13, 20, 28, 17, 14, 17, 16, 25, 32, 28, 21, 29, 20, 24, + 28, 25, 20, 12, 4, 38, 36, 38, 38, 33, 30, 29, 28, 29, 26, 25, + 26, 24, 25, 22, 22, 22, 22, 20, 22, 21, 22, 21, 20, 14, 36, 21, + 25, 24, 22, 21, 14, 18, 20, 12, 6, 5, 8, 6, 8, 8, 6, 5, + 6, 20, 18, 17, 9, 9, 33, 14, 9, 8, 10, 9, 5, 8, 8, 6, + 21, 24, 12, 26, 26, 37, 42, 88, 132, 112, 123, 148, 151, 159, 167, 174, + 181, 191, 194, 205, 198, 165, 120, 120, 119, 110, 96, 60, 18, 9, 6, 8, + 4, 5, 5, 6, 2, 4, 0, 0, 0, 0, 0, 65, 60, 75, 77, 69, + 63, 84, 80, 29, 6, 44, 73, 68, 52, 63, 57, 33, 29, 34, 32, 30, + 28, 17, 21, 40, 48, 63, 68, 81, 81, 96, 103, 84, 67, 85, 93, 85, + 76, 48, 37, 34, 30, 52, 45, 26, 42, 44, 36, 37, 29, 30, 22, 25, + 24, 22, 24, 21, 17, 16, 13, 13, 12, 12, 12, 12, 12, 12, 13, 12, + 10, 12, 21, 53, 69, 79, 77, 81, 80, 81, 75, 75, 42, 6, 79, 108, + 107, 89, 53, 52, 44, 28, 26, 37, 29, 5, 1, 13, 9, 10, 1, 10, + 6, 1, 1, 8, 6, 0, 0, 10, 2, 1, 1, 5, 2, 1, 4, 8, + 8, 1, 1, 4, 13, 1, 0, 4, 1, 2, 0, 0, 4, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 2, 14, 5, 16, 13, 17, 16, 18, 24, 29, + 44, 44, 46, 55, 37, 36, 29, 33, 29, 28, 28, 22, 21, 32, 26, 28, + 18, 48, 52, 51, 60, 72, 72, 67, 96, 76, 110, 132, 146, 194, 189, 150, + 110, 100, 102, 100, 32, 29, 28, 37, 34, 32, 37, 36, 56, 95, 154, 161, + 126, 122, 150, 153, 155, 155, 162, 143, 144, 158, 151, 85, 17, 13, 10, 4, + 2, 13, 18, 20, 26, 18, 17, 29, 29, 37, 51, 30, 51, 52, 46, 33, + 34, 37, 34, 22, 24, 25, 18, 12, 6, 8, 9, 5, 4, 4, 2, 4, + 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 2, 4, 5, 5, 5, + 6, 12, 14, 20, 18, 21, 21, 26, 34, 46, 49, 38, 25, 46, 34, 34, + 28, 21, 22, 20, 16, 14, 14, 10, 8, 8, 8, 5, 4, 4, 6, 2, + 2, 2, 6, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 2, 2, + 2, 4, 5, 1, 2, 8, 9, 1, 4, 12, 13, 10, 2, 10, 9, 1, + 1, 8, 1, 1, 5, 5, 0, 0, 0, 4, 1, 0, 2, 2, 0, 0, + 0, 2, 0, 0, 8, 10, 20, 40, 63, 42, 48, 57, 71, 60, 45, 25, + 17, 42, 60, 60, 45, 46, 22, 12, 12, 9, 13, 9, 5, 6, 26, 28, + 22, 22, 33, 29, 33, 26, 41, 20, 1, 16, 75, 96, 59, 69, 77, 88, + 67, 69, 64, 64, 60, 68, 76, 76, 65, 32, 22, 21, 21, 32, 18, 9, + 24, 22, 22, 21, 24, 21, 21, 22, 24, 22, 24, 21, 20, 16, 9, 6, + 14, 21, 10, 12, 38, 59, 64, 36, 6, 45, 59, 56, 22, 20, 18, 22, + 14, 20, 10, 34, 17, 12, 8, 8, 13, 8, 20, 17, 21, 13, 14, 17, + 6, 18, 18, 30, 14, 17, 16, 18, 16, 20, 20, 16, 16, 18, 18, 16, + 17, 20, 17, 16, 16, 21, 17, 6, 18, 36, 26, 26, 21, 25, 28, 30, + 41, 29, 21, 8, 45, 65, 65, 51, 64, 61, 59, 29, 21, 17, 8, 4, + 2, 9, 25, 33, 33, 36, 29, 32, 20, 28, 14, 14, 36, 75, 96, 65, + 63, 65, 53, 127, 151, 138, 146, 123, 126, 128, 144, 147, 154, 153, 155, 140, + 127, 131, 107, 72, 53, 29, 10, 9, 9, 8, 5, 9, 12, 18, 17, 21, + 1, 0, 18, 64, 64, 61, 115, 114, 110, 108, 96, 102, 96, 92, 61, 18, + 44, 59, 55, 59, 68, 63, 63, 64, 53, 55, 30, 18, 52, 112, 123, 115, + 116, 115, 114, 107, 103, 89, 102, 107, 106, 107, 99, 108, 106, 97, 87, 76, + 51, 48, 25, 28, 33, 42, 48, 61, 67, 91, 76, 83, 67, 48, 45, 53, + 100, 107, 100, 89, 112, 103, 80, 108, 95, 96, 88, 93, 91, 97, 112, 96, + 89, 76, 87, 91, 79, 87, 77, 45, 9, 80, 106, 106, 99, 107, 107, 83, + 93, 57, 38, 29, 42, 60, 60, 59, 51, 46, 34, 46, 36, 12, 14, 4, + 24, 108, 104, 72, 76, 99, 97, 76, 76, 73, 28, 2, 18, 67, 81, 53, + 56, 53, 52, 61, 52, 26, 10, 44, 57, 60, 46, 42, 46, 46, 44, 42, + 33, 29, 4, 6, 81, 99, 96, 80, 95, 69, 30, 21, 18, 17, 14, 16, + 20, 34, 52, 56, 61, 61, 65, 73, 71, 69, 51, 18, 85, 87, 88, 75, + 107, 80, 88, 75, 84, 126, 143, 199, 202, 190, 177, 119, 104, 100, 110, 30, + 28, 30, 29, 32, 26, 28, 42, 55, 92, 175, 177, 119, 126, 110, 127, 134, + 130, 126, 154, 150, 138, 97, 68, 17, 13, 5, 20, 16, 20, 69, 80, 63, + 63, 38, 30, 30, 28, 44, 22, 18, 29, 41, 44, 46, 37, 42, 41, 60, + 56, 59, 61, 96, 91, 100, 89, 97, 91, 84, 102, 97, 89, 91, 83, 81, + 84, 88, 100, 81, 85, 73, 44, 52, 41, 30, 2, 9, 69, 103, 108, 77, + 73, 61, 55, 45, 48, 30, 34, 26, 28, 42, 40, 44, 29, 41, 41, 64, + 36, 33, 37, 72, 96, 100, 83, 71, 84, 87, 80, 79, 85, 77, 13, 2, + 45, 104, 75, 77, 72, 80, 77, 85, 95, 91, 88, 77, 88, 89, 104, 88, + 87, 87, 88, 84, 81, 16, 5, 26, 91, 110, 84, 87, 89, 89, 87, 95, + 92, 93, 95, 89, 97, 108, 104, 102, 96, 92, 88, 80, 85, 80, 18, 1, + 44, 72, 83, 88, 81, 79, 83, 73, 80, 71, 34, 14, 44, 73, 59, 59, + 53, 51, 56, 48, 45, 36, 9, 28, 69, 79, 76, 75, 69, 64, 40, 42, + 53, 36, 22, 1, 80, 84, 67, 72, 68, 77, 65, 80, 63, 65, 59, 63, + 42, 59, 72, 60, 55, 65, 64, 57, 45, 26, 9, 8, 8, 6, 5, 6, + 6, 6, 5, 5, 6, 6, 6, 6, 13, 61, 76, 69, 61, 67, 57, 60, + 65, 64, 46, 6, 53, 69, 60, 55, 44, 42, 36, 48, 49, 38, 8, 13, + 63, 75, 72, 65, 59, 44, 22, 12, 12, 10, 4, 0, 0, 4, 2, 0, + 0, 2, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 6, 1, 1, 1, + 10, 2, 2, 17, 33, 49, 79, 80, 83, 81, 79, 73, 36, 26, 8, 53, + 65, 42, 48, 53, 45, 44, 42, 55, 46, 32, 10, 5, 45, 65, 73, 72, + 67, 75, 65, 65, 29, 16, 14, 100, 110, 88, 97, 85, 97, 89, 99, 41, + 61, 61, 88, 89, 99, 134, 135, 132, 127, 132, 131, 116, 84, 57, 22, 12, + 13, 14, 13, 8, 6, 10, 17, 13, 20, 29, 8, 1, 4, 42, 68, 83, + 84, 84, 91, 91, 103, 99, 104, 95, 100, 63, 18, 59, 61, 72, 52, 65, + 65, 48, 72, 72, 55, 29, 14, 103, 111, 104, 80, 85, 81, 75, 79, 84, + 79, 91, 67, 84, 89, 110, 111, 103, 106, 97, 97, 64, 59, 25, 69, 97, + 93, 97, 92, 97, 92, 106, 119, 83, 73, 73, 56, 72, 111, 103, 84, 89, + 104, 111, 118, 112, 96, 95, 97, 77, 79, 92, 92, 87, 88, 80, 76, 76, + 77, 80, 53, 6, 91, 108, 102, 104, 97, 97, 96, 102, 80, 56, 30, 53, + 65, 63, 68, 61, 60, 65, 75, 65, 30, 9, 12, 83, 107, 95, 89, 89, + 91, 96, 96, 93, 88, 33, 0, 89, 96, 100, 95, 88, 84, 88, 81, 76, + 51, 13, 67, 59, 56, 44, 48, 36, 37, 26, 25, 25, 32, 1, 5, 83, + 97, 99, 96, 93, 88, 85, 92, 84, 80, 67, 75, 59, 72, 89, 80, 88, + 84, 99, 100, 93, 84, 51, 18, 92, 104, 96, 112, 87, 100, 80, 83, 111, + 144, 197, 198, 194, 198, 170, 111, 104, 106, 110, 36, 28, 25, 30, 32, 28, + 46, 40, 60, 87, 186, 186, 123, 120, 127, 123, 92, 103, 99, 83, 76, 87, + 72, 49, 13, 13, 6, 18, 14, 45, 85, 77, 79, 71, 76, 76, 65, 68, + 36, 25, 42, 100, 104, 96, 95, 93, 104, 85, 99, 53, 83, 71, 69, 87, + 81, 93, 85, 77, 81, 88, 75, 72, 80, 73, 76, 65, 46, 33, 61, 38, + 42, 37, 36, 41, 33, 2, 8, 83, 118, 100, 96, 108, 107, 87, 96, 104, + 69, 52, 28, 55, 95, 99, 96, 95, 87, 95, 99, 93, 110, 89, 64, 61, + 65, 64, 61, 69, 76, 64, 77, 69, 76, 38, 4, 99, 91, 60, 71, 85, + 79, 85, 69, 81, 91, 88, 79, 59, 55, 61, 51, 46, 59, 59, 52, 48, + 18, 0, 97, 119, 115, 116, 112, 116, 111, 112, 106, 104, 108, 103, 80, 63, + 75, 77, 76, 81, 81, 81, 64, 63, 68, 18, 12, 60, 79, 80, 60, 52, + 61, 56, 57, 57, 76, 37, 20, 55, 71, 52, 59, 56, 69, 53, 34, 55, + 37, 9, 22, 73, 72, 57, 75, 61, 65, 71, 57, 36, 32, 22, 4, 79, + 79, 60, 59, 51, 64, 72, 72, 64, 73, 40, 32, 59, 72, 60, 57, 53, + 51, 49, 57, 32, 32, 12, 17, 80, 89, 71, 60, 81, 89, 85, 81, 85, + 77, 75, 68, 71, 75, 92, 93, 87, 83, 64, 60, 52, 59, 42, 8, 48, + 68, 65, 64, 61, 61, 56, 36, 30, 12, 8, 49, 104, 102, 110, 97, 100, + 89, 85, 77, 48, 22, 5, 57, 64, 75, 61, 76, 61, 69, 55, 65, 60, + 63, 51, 52, 85, 69, 83, 76, 83, 84, 63, 73, 100, 75, 25, 18, 60, + 83, 75, 72, 59, 57, 48, 57, 45, 21, 6, 51, 64, 67, 42, 48, 53, + 52, 48, 44, 41, 44, 13, 6, 55, 64, 72, 67, 67, 67, 59, 36, 22, + 12, 9, 108, 85, 96, 96, 95, 75, 130, 127, 56, 44, 36, 32, 38, 42, + 59, 65, 56, 59, 57, 51, 33, 18, 13, 10, 13, 13, 13, 2, 4, 9, + 20, 21, 13, 25, 10, 9, 0, 2, 38, 73, 55, 57, 77, 80, 87, 96, + 102, 96, 95, 97, 55, 8, 42, 59, 67, 60, 57, 52, 68, 63, 68, 49, + 29, 16, 107, 108, 83, 73, 87, 85, 102, 89, 73, 79, 83, 61, 81, 99, + 81, 97, 92, 97, 99, 96, 93, 57, 26, 87, 99, 104, 84, 80, 76, 76, + 71, 69, 64, 76, 71, 53, 108, 115, 106, 97, 103, 99, 97, 87, 100, 83, + 80, 60, 96, 99, 80, 75, 73, 79, 77, 81, 69, 77, 67, 49, 6, 84, + 97, 92, 104, 99, 96, 89, 92, 75, 57, 32, 59, 51, 72, 79, 77, 84, + 88, 80, 63, 33, 9, 2, 111, 104, 81, 84, 84, 81, 80, 75, 81, 77, + 33, 10, 95, 72, 77, 79, 83, 89, 88, 89, 71, 63, 17, 61, 49, 41, + 34, 21, 14, 34, 24, 13, 26, 34, 1, 2, 76, 96, 83, 79, 71, 77, + 89, 91, 83, 79, 52, 42, 87, 103, 99, 92, 85, 91, 87, 93, 93, 80, + 55, 20, 88, 93, 107, 99, 123, 104, 83, 91, 116, 173, 199, 197, 195, 194, + 138, 107, 106, 103, 97, 26, 24, 25, 28, 22, 36, 46, 36, 56, 88, 201, + 193, 175, 122, 124, 144, 135, 134, 134, 130, 130, 111, 100, 48, 13, 10, 6, + 21, 13, 48, 87, 69, 84, 75, 71, 65, 69, 61, 38, 22, 76, 88, 79, + 85, 88, 80, 72, 68, 65, 89, 73, 60, 83, 93, 95, 87, 75, 76, 60, + 67, 64, 76, 64, 61, 33, 52, 48, 28, 28, 30, 29, 41, 38, 45, 28, + 6, 6, 77, 123, 104, 108, 95, 93, 103, 103, 108, 112, 63, 29, 77, 100, + 103, 96, 107, 92, 99, 92, 81, 85, 57, 71, 88, 83, 80, 73, 68, 71, + 80, 80, 73, 75, 51, 5, 95, 57, 96, 88, 60, 64, 89, 75, 69, 69, + 72, 45, 64, 77, 88, 92, 81, 79, 80, 59, 57, 21, 8, 102, 115, 110, + 89, 93, 97, 104, 100, 107, 99, 104, 83, 61, 88, 89, 85, 80, 80, 81, + 69, 69, 64, 56, 25, 1, 59, 80, 71, 56, 59, 56, 72, 73, 67, 71, + 36, 18, 59, 64, 38, 57, 36, 44, 38, 36, 67, 37, 9, 21, 67, 65, + 61, 59, 57, 67, 64, 63, 36, 33, 21, 2, 51, 77, 64, 64, 48, 46, + 60, 45, 63, 48, 38, 29, 56, 72, 67, 59, 52, 61, 56, 48, 37, 32, + 12, 46, 92, 84, 83, 81, 84, 87, 84, 80, 71, 68, 64, 40, 72, 93, + 75, 61, 71, 64, 63, 67, 52, 69, 34, 9, 45, 51, 75, 38, 36, 37, + 22, 17, 22, 8, 5, 64, 104, 102, 84, 89, 91, 102, 95, 96, 68, 36, + 9, 49, 56, 33, 48, 63, 79, 44, 34, 56, 38, 37, 48, 57, 63, 85, + 99, 97, 95, 83, 81, 83, 93, 80, 46, 30, 64, 72, 55, 59, 59, 63, + 63, 64, 34, 22, 6, 55, 65, 65, 38, 38, 49, 37, 49, 51, 49, 41, + 12, 5, 57, 69, 63, 51, 57, 56, 52, 32, 18, 10, 6, 81, 97, 81, + 107, 115, 97, 97, 48, 65, 56, 51, 29, 33, 24, 24, 29, 20, 24, 20, + 21, 18, 16, 14, 10, 13, 5, 5, 13, 22, 21, 18, 17, 18, 26, 10, + 2, 0, 0, 44, 67, 48, 12, 112, 106, 102, 79, 80, 99, 91, 91, 55, + 6, 53, 64, 68, 81, 61, 57, 52, 60, 61, 34, 24, 14, 83, 111, 79, + 83, 69, 88, 76, 89, 73, 81, 85, 63, 77, 93, 75, 79, 87, 107, 100, + 87, 93, 65, 26, 83, 104, 79, 81, 75, 73, 73, 68, 65, 73, 71, 37, + 22, 111, 112, 100, 107, 95, 99, 95, 95, 107, 77, 81, 55, 91, 93, 77, + 79, 79, 73, 89, 89, 80, 72, 81, 45, 6, 80, 99, 93, 97, 92, 85, + 76, 106, 96, 59, 41, 37, 60, 61, 77, 69, 51, 63, 71, 57, 5, 9, + 2, 72, 103, 79, 84, 81, 88, 79, 87, 85, 84, 36, 1, 61, 85, 89, + 68, 67, 72, 73, 103, 84, 41, 20, 26, 46, 46, 33, 18, 24, 10, 17, + 16, 14, 22, 1, 4, 71, 92, 93, 72, 64, 69, 71, 69, 67, 51, 55, + 46, 102, 102, 91, 112, 83, 89, 87, 91, 93, 84, 60, 24, 93, 96, 92, + 69, 67, 85, 77, 103, 144, 202, 198, 198, 190, 140, 111, 100, 103, 114, 56, + 24, 24, 24, 25, 36, 38, 48, 46, 69, 92, 201, 202, 187, 122, 124, 128, + 143, 147, 148, 147, 143, 135, 116, 56, 12, 14, 5, 18, 10, 37, 83, 71, + 75, 73, 88, 87, 71, 67, 46, 24, 79, 81, 81, 72, 79, 85, 71, 68, + 71, 72, 69, 52, 79, 93, 69, 64, 81, 67, 71, 61, 61, 65, 68, 59, + 30, 49, 67, 64, 55, 34, 17, 46, 21, 22, 25, 6, 8, 91, 112, 95, + 99, 104, 106, 102, 99, 97, 93, 71, 36, 85, 102, 87, 84, 85, 83, 81, + 85, 77, 59, 52, 76, 91, 68, 76, 76, 75, 72, 73, 73, 76, 83, 32, + 5, 51, 87, 65, 79, 79, 76, 83, 87, 84, 76, 59, 41, 65, 77, 71, + 61, 52, 60, 61, 73, 65, 18, 6, 75, 115, 107, 114, 102, 100, 103, 108, + 106, 111, 93, 79, 60, 91, 95, 73, 81, 77, 79, 80, 81, 76, 52, 22, + 1, 57, 84, 69, 52, 53, 56, 61, 55, 60, 65, 38, 25, 44, 75, 42, + 44, 48, 42, 52, 41, 51, 29, 9, 21, 44, 68, 57, 49, 48, 59, 63, + 64, 36, 36, 22, 0, 49, 85, 52, 65, 46, 51, 56, 41, 63, 41, 33, + 21, 65, 73, 71, 61, 38, 45, 48, 60, 55, 45, 12, 63, 93, 77, 59, + 61, 64, 75, 64, 77, 68, 60, 42, 37, 72, 88, 69, 72, 68, 64, 55, + 53, 56, 64, 34, 10, 51, 57, 36, 38, 18, 25, 22, 24, 9, 6, 2, + 52, 102, 99, 83, 89, 88, 88, 84, 103, 75, 40, 6, 48, 49, 79, 64, + 73, 87, 34, 55, 57, 36, 44, 53, 42, 80, 97, 89, 88, 75, 84, 85, + 84, 81, 76, 55, 20, 72, 64, 61, 42, 46, 40, 46, 60, 44, 22, 9, + 49, 69, 72, 38, 37, 36, 41, 36, 33, 46, 26, 10, 4, 56, 60, 64, + 37, 42, 30, 30, 29, 21, 13, 9, 88, 93, 95, 79, 89, 68, 104, 64, + 67, 56, 53, 45, 36, 25, 24, 21, 21, 18, 17, 14, 16, 14, 13, 10, + 5, 6, 16, 21, 22, 30, 17, 14, 17, 30, 12, 21, 0, 0, 41, 67, + 37, 59, 77, 80, 80, 96, 80, 77, 89, 84, 60, 14, 52, 52, 64, 60, + 60, 63, 57, 69, 55, 40, 36, 13, 85, 103, 89, 71, 88, 77, 77, 72, + 75, 85, 75, 57, 87, 99, 93, 84, 93, 108, 95, 85, 102, 64, 32, 71, + 96, 75, 76, 71, 67, 84, 79, 77, 75, 68, 46, 20, 111, 112, 106, 99, + 92, 100, 83, 84, 88, 71, 73, 53, 91, 93, 79, 81, 79, 84, 69, 77, + 88, 71, 72, 48, 8, 83, 96, 85, 115, 100, 83, 89, 99, 88, 64, 42, + 55, 51, 56, 45, 32, 42, 45, 38, 49, 12, 6, 1, 71, 99, 76, 83, + 87, 85, 85, 89, 87, 80, 34, 1, 68, 81, 80, 76, 69, 67, 68, 83, + 77, 44, 18, 56, 65, 24, 29, 13, 32, 13, 12, 28, 24, 22, 0, 2, + 79, 93, 88, 69, 73, 76, 80, 75, 64, 55, 36, 42, 97, 106, 89, 97, + 77, 91, 103, 102, 91, 76, 56, 29, 79, 85, 93, 73, 68, 79, 67, 100, + 181, 198, 197, 194, 146, 115, 100, 107, 111, 65, 38, 21, 25, 25, 26, 36, + 41, 48, 48, 64, 89, 209, 206, 195, 120, 122, 128, 131, 139, 143, 146, 147, + 140, 120, 57, 10, 10, 5, 21, 9, 42, 84, 68, 73, 71, 87, 87, 68, + 79, 38, 24, 71, 79, 87, 96, 96, 100, 71, 63, 61, 71, 60, 49, 73, + 92, 75, 75, 61, 73, 75, 76, 60, 80, 65, 53, 36, 61, 57, 48, 28, + 21, 10, 16, 18, 25, 21, 4, 6, 91, 114, 111, 92, 114, 99, 97, 97, + 91, 96, 68, 42, 73, 97, 80, 77, 72, 95, 79, 67, 75, 63, 44, 79, + 93, 69, 68, 75, 67, 75, 69, 72, 76, 79, 33, 5, 55, 83, 92, 56, + 59, 81, 67, 68, 69, 71, 57, 38, 63, 93, 81, 48, 71, 87, 73, 56, + 56, 17, 0, 89, 110, 108, 106, 99, 100, 92, 93, 93, 102, 95, 75, 57, + 87, 85, 67, 69, 75, 79, 79, 81, 64, 61, 22, 1, 51, 75, 63, 60, + 52, 59, 45, 60, 60, 65, 42, 24, 48, 64, 34, 32, 46, 46, 45, 51, + 52, 29, 12, 18, 60, 67, 48, 75, 52, 68, 65, 41, 38, 37, 18, 1, + 73, 71, 57, 64, 44, 42, 52, 38, 73, 42, 33, 25, 56, 68, 80, 65, + 68, 56, 44, 42, 49, 32, 14, 53, 95, 88, 85, 67, 71, 52, 59, 59, + 65, 32, 30, 21, 67, 80, 59, 56, 53, 44, 52, 53, 65, 57, 37, 14, + 44, 61, 34, 29, 24, 38, 24, 25, 9, 6, 4, 56, 103, 100, 83, 99, + 89, 83, 81, 93, 67, 42, 6, 34, 41, 56, 67, 46, 51, 48, 57, 29, + 51, 49, 52, 8, 77, 95, 76, 88, 92, 84, 96, 100, 96, 81, 52, 22, + 63, 67, 51, 45, 44, 44, 59, 60, 65, 33, 8, 52, 55, 65, 38, 40, + 44, 41, 37, 53, 44, 40, 14, 2, 49, 76, 60, 41, 33, 42, 34, 28, + 24, 13, 8, 100, 104, 88, 91, 63, 65, 83, 64, 65, 52, 56, 55, 48, + 22, 33, 21, 24, 22, 21, 16, 14, 14, 17, 9, 2, 6, 17, 26, 29, + 26, 30, 22, 22, 21, 13, 5, 0, 6, 49, 61, 40, 30, 114, 114, 93, + 92, 96, 91, 89, 102, 63, 10, 34, 60, 65, 52, 75, 55, 59, 45, 57, + 36, 24, 12, 85, 108, 87, 89, 89, 77, 85, 84, 77, 84, 69, 56, 81, + 88, 85, 72, 93, 99, 93, 83, 100, 64, 34, 75, 96, 83, 83, 61, 69, + 83, 72, 69, 69, 68, 59, 41, 116, 120, 92, 104, 77, 92, 85, 88, 83, + 79, 77, 53, 92, 87, 80, 83, 87, 72, 81, 85, 85, 69, 73, 49, 8, + 79, 91, 97, 92, 102, 81, 85, 107, 81, 65, 36, 59, 69, 48, 55, 59, + 55, 53, 41, 32, 20, 5, 10, 77, 100, 91, 87, 89, 96, 97, 89, 92, + 79, 34, 0, 79, 83, 64, 77, 76, 67, 69, 72, 67, 53, 24, 51, 57, + 40, 24, 16, 29, 6, 13, 17, 16, 20, 0, 2, 83, 93, 88, 79, 79, + 72, 81, 88, 69, 55, 40, 53, 107, 99, 96, 84, 72, 92, 95, 84, 80, + 79, 56, 29, 81, 89, 96, 79, 91, 64, 61, 99, 190, 199, 193, 155, 116, + 97, 119, 57, 55, 37, 22, 24, 22, 26, 25, 32, 40, 42, 49, 75, 115, + 208, 205, 198, 118, 118, 126, 128, 131, 135, 143, 147, 140, 116, 48, 9, 8, + 5, 16, 13, 48, 83, 68, 72, 71, 88, 73, 80, 56, 44, 30, 71, 92, + 77, 93, 83, 81, 91, 80, 59, 68, 59, 46, 80, 92, 89, 55, 89, 65, + 71, 60, 79, 72, 65, 46, 40, 32, 53, 38, 24, 12, 12, 20, 20, 28, + 17, 1, 5, 95, 112, 92, 95, 103, 114, 103, 91, 103, 97, 72, 42, 64, + 102, 85, 79, 97, 84, 67, 75, 64, 53, 40, 79, 95, 69, 79, 88, 81, + 87, 92, 76, 72, 75, 38, 9, 60, 76, 84, 60, 73, 85, 77, 68, 76, + 68, 57, 36, 60, 76, 73, 65, 60, 59, 59, 59, 59, 18, 0, 88, 112, + 108, 108, 103, 107, 99, 93, 95, 99, 91, 52, 63, 89, 76, 67, 79, 89, + 88, 71, 63, 63, 56, 21, 17, 69, 76, 60, 56, 52, 68, 53, 64, 64, + 65, 44, 29, 52, 75, 34, 30, 51, 53, 55, 44, 44, 26, 10, 17, 57, + 64, 55, 65, 55, 64, 45, 41, 41, 40, 21, 8, 68, 67, 45, 56, 40, + 41, 55, 36, 56, 42, 32, 25, 51, 69, 67, 72, 72, 59, 34, 45, 46, + 32, 17, 41, 89, 81, 84, 63, 60, 63, 89, 65, 59, 33, 33, 34, 67, + 77, 61, 55, 52, 68, 71, 61, 68, 61, 42, 14, 44, 56, 37, 25, 12, + 18, 16, 33, 13, 6, 6, 65, 102, 96, 84, 99, 84, 84, 91, 95, 69, + 41, 6, 53, 44, 53, 57, 40, 51, 59, 38, 26, 37, 44, 25, 5, 79, + 93, 89, 96, 95, 85, 83, 84, 80, 81, 53, 26, 57, 69, 61, 40, 44, + 41, 49, 55, 56, 33, 6, 42, 63, 59, 38, 40, 33, 38, 33, 33, 42, + 34, 14, 4, 55, 63, 61, 40, 24, 33, 30, 18, 22, 12, 6, 102, 93, + 93, 64, 76, 81, 49, 65, 55, 59, 56, 52, 44, 26, 37, 25, 22, 16, + 18, 13, 22, 21, 17, 9, 4, 8, 17, 26, 21, 25, 29, 14, 20, 6, + 18, 5, 0, 1, 36, 63, 24, 18, 88, 100, 104, 97, 95, 88, 91, 88, + 59, 10, 46, 55, 61, 59, 52, 51, 55, 53, 56, 38, 25, 13, 77, 100, + 77, 77, 80, 80, 85, 81, 79, 67, 68, 45, 84, 89, 88, 65, 91, 83, + 83, 81, 87, 64, 36, 53, 89, 81, 87, 71, 75, 81, 81, 85, 80, 65, + 65, 38, 118, 106, 100, 108, 85, 102, 83, 88, 79, 83, 75, 56, 88, 87, + 80, 71, 76, 71, 87, 75, 81, 69, 63, 48, 8, 84, 81, 79, 92, 92, + 83, 84, 92, 81, 68, 37, 49, 44, 52, 41, 34, 34, 49, 48, 18, 10, + 8, 2, 76, 100, 77, 83, 99, 97, 83, 88, 93, 77, 36, 12, 83, 80, + 65, 79, 73, 64, 71, 69, 72, 64, 28, 56, 52, 61, 26, 18, 41, 12, + 12, 13, 28, 20, 0, 1, 83, 81, 92, 80, 75, 61, 77, 87, 71, 57, + 38, 63, 110, 96, 84, 80, 79, 97, 85, 77, 68, 71, 60, 30, 76, 91, + 89, 88, 65, 63, 72, 93, 183, 191, 166, 118, 99, 106, 56, 34, 24, 21, + 21, 22, 21, 25, 22, 33, 42, 44, 63, 81, 166, 210, 206, 199, 119, 119, + 126, 130, 130, 134, 143, 144, 138, 112, 26, 9, 9, 6, 16, 13, 44, 80, + 64, 73, 72, 83, 76, 77, 59, 40, 25, 72, 83, 85, 81, 73, 64, 64, + 65, 63, 65, 46, 42, 75, 89, 91, 65, 73, 61, 75, 73, 79, 68, 59, + 49, 30, 42, 52, 37, 37, 44, 46, 38, 28, 32, 16, 5, 4, 75, 112, + 91, 95, 87, 104, 114, 99, 93, 96, 69, 48, 64, 96, 79, 89, 87, 93, + 68, 71, 65, 52, 41, 83, 97, 79, 75, 91, 84, 85, 79, 76, 72, 67, + 51, 10, 69, 76, 84, 61, 72, 81, 72, 73, 71, 68, 53, 32, 53, 79, + 75, 81, 60, 65, 73, 63, 56, 20, 5, 89, 108, 118, 91, 85, 103, 100, + 99, 91, 93, 89, 46, 63, 95, 77, 71, 79, 97, 88, 77, 69, 55, 51, + 22, 2, 72, 75, 55, 53, 51, 64, 60, 64, 60, 64, 48, 22, 41, 71, + 41, 73, 37, 26, 38, 53, 40, 25, 9, 14, 63, 61, 45, 71, 51, 44, + 42, 38, 42, 38, 20, 5, 37, 56, 49, 38, 42, 40, 63, 36, 52, 40, + 30, 20, 55, 67, 77, 68, 76, 71, 57, 40, 44, 29, 16, 46, 85, 83, + 76, 49, 63, 53, 67, 57, 41, 37, 34, 32, 69, 71, 56, 61, 63, 51, + 45, 53, 48, 52, 38, 12, 38, 53, 41, 26, 21, 9, 9, 8, 14, 5, + 5, 67, 97, 96, 84, 88, 92, 85, 85, 100, 59, 41, 9, 48, 30, 51, + 40, 45, 36, 40, 41, 36, 38, 18, 37, 21, 77, 91, 89, 103, 77, 84, + 91, 87, 85, 77, 52, 28, 59, 61, 45, 30, 48, 59, 46, 56, 25, 28, + 8, 30, 38, 60, 32, 37, 41, 42, 32, 32, 38, 34, 12, 2, 53, 61, + 59, 34, 36, 29, 44, 21, 34, 10, 6, 59, 102, 79, 81, 79, 73, 59, + 65, 64, 63, 57, 61, 45, 28, 29, 25, 13, 28, 25, 24, 13, 16, 12, + 13, 4, 13, 20, 34, 37, 30, 25, 21, 8, 12, 12, 2, 0, 1, 49, + 38, 49, 20, 75, 106, 110, 89, 92, 95, 87, 81, 56, 5, 38, 61, 64, + 59, 56, 59, 68, 68, 48, 32, 24, 12, 72, 95, 79, 100, 80, 88, 80, + 72, 81, 73, 71, 41, 69, 103, 76, 63, 91, 87, 83, 83, 91, 65, 40, + 51, 89, 75, 89, 63, 76, 71, 75, 87, 75, 65, 41, 10, 115, 108, 95, + 89, 99, 88, 96, 92, 88, 76, 77, 52, 87, 84, 73, 77, 69, 71, 79, + 80, 75, 71, 67, 46, 8, 80, 93, 89, 95, 89, 73, 81, 87, 89, 69, + 53, 40, 51, 69, 60, 55, 61, 37, 33, 18, 1, 5, 1, 67, 96, 92, + 84, 87, 96, 85, 91, 83, 69, 37, 2, 60, 79, 61, 80, 73, 77, 59, + 68, 81, 52, 33, 16, 49, 49, 21, 20, 30, 13, 9, 17, 16, 16, 0, + 0, 79, 89, 89, 80, 80, 83, 81, 79, 68, 52, 41, 67, 108, 81, 91, + 92, 85, 85, 84, 97, 89, 67, 60, 32, 76, 87, 91, 88, 84, 75, 61, + 87, 170, 197, 162, 107, 89, 96, 44, 32, 24, 20, 25, 21, 20, 25, 22, + 45, 42, 41, 67, 93, 182, 217, 210, 204, 120, 119, 124, 130, 132, 138, 142, + 143, 130, 84, 13, 9, 8, 8, 16, 13, 51, 75, 65, 73, 75, 68, 80, + 71, 40, 46, 25, 65, 81, 76, 72, 71, 69, 81, 69, 64, 68, 57, 40, + 79, 80, 102, 72, 67, 68, 72, 73, 75, 59, 57, 30, 38, 28, 38, 33, + 32, 29, 29, 13, 18, 28, 18, 5, 4, 97, 114, 99, 88, 88, 88, 91, + 91, 89, 87, 81, 59, 67, 100, 79, 95, 83, 84, 61, 72, 53, 53, 38, + 77, 92, 73, 75, 81, 95, 76, 77, 75, 72, 64, 37, 9, 40, 56, 79, + 69, 83, 69, 68, 81, 68, 61, 48, 32, 48, 68, 69, 85, 80, 76, 59, + 63, 65, 18, 4, 76, 111, 110, 103, 99, 92, 97, 95, 95, 97, 72, 41, + 65, 88, 80, 63, 79, 99, 81, 72, 63, 57, 45, 24, 1, 57, 77, 53, + 46, 56, 55, 55, 60, 59, 61, 44, 36, 34, 63, 38, 36, 67, 26, 26, + 36, 32, 25, 8, 13, 56, 55, 48, 61, 61, 59, 48, 40, 48, 40, 22, + 5, 49, 67, 44, 37, 37, 32, 46, 46, 36, 38, 25, 14, 49, 63, 71, + 61, 69, 63, 60, 40, 42, 30, 17, 34, 73, 73, 103, 61, 68, 42, 37, + 44, 29, 28, 34, 28, 69, 69, 52, 45, 61, 49, 49, 44, 48, 44, 38, + 13, 37, 55, 42, 34, 26, 16, 26, 18, 8, 6, 2, 68, 96, 89, 92, + 95, 88, 75, 88, 103, 64, 42, 6, 49, 34, 63, 37, 25, 25, 57, 42, + 28, 25, 20, 45, 26, 81, 92, 92, 87, 87, 83, 83, 77, 83, 80, 73, + 29, 33, 64, 55, 46, 51, 49, 34, 30, 33, 25, 9, 20, 51, 56, 40, + 32, 29, 30, 34, 38, 36, 24, 9, 1, 41, 49, 53, 34, 44, 24, 30, + 22, 20, 10, 5, 89, 96, 76, 85, 80, 80, 65, 69, 69, 61, 57, 56, + 48, 28, 45, 30, 13, 13, 10, 9, 16, 10, 16, 8, 4, 17, 29, 28, + 13, 9, 10, 10, 8, 21, 13, 4, 0, 0, 22, 57, 21, 24, 80, 96, + 114, 107, 88, 83, 88, 81, 59, 8, 38, 56, 64, 69, 73, 65, 55, 52, + 45, 26, 17, 13, 71, 83, 97, 81, 100, 88, 81, 81, 80, 84, 65, 38, + 80, 89, 81, 80, 64, 71, 76, 71, 71, 69, 41, 53, 76, 73, 79, 80, + 76, 75, 75, 75, 75, 73, 46, 18, 106, 102, 77, 80, 88, 102, 100, 84, + 100, 75, 72, 46, 77, 85, 79, 72, 77, 73, 73, 76, 67, 69, 71, 46, + 9, 80, 83, 61, 75, 73, 59, 59, 75, 69, 72, 55, 34, 44, 30, 44, + 25, 28, 28, 34, 32, 1, 5, 8, 65, 92, 73, 80, 81, 80, 83, 93, + 87, 61, 36, 1, 59, 77, 64, 76, 77, 69, 68, 72, 69, 53, 22, 12, + 29, 21, 29, 21, 28, 24, 29, 22, 25, 16, 0, 0, 83, 92, 80, 83, + 85, 99, 89, 73, 59, 56, 29, 79, 108, 97, 102, 91, 93, 87, 72, 79, + 84, 77, 63, 34, 71, 85, 91, 87, 83, 61, 56, 69, 126, 198, 163, 114, + 97, 97, 49, 36, 22, 29, 29, 24, 24, 24, 24, 30, 42, 61, 83, 136, + 205, 216, 213, 198, 122, 119, 126, 131, 138, 143, 144, 139, 119, 41, 10, 8, + 5, 10, 21, 10, 42, 72, 71, 81, 76, 80, 77, 71, 53, 42, 24, 36, + 76, 79, 56, 61, 60, 52, 69, 67, 65, 52, 34, 68, 76, 79, 79, 73, + 73, 72, 71, 71, 64, 52, 32, 30, 45, 53, 57, 45, 42, 29, 45, 34, + 14, 13, 1, 2, 96, 110, 99, 68, 67, 67, 76, 63, 72, 73, 75, 60, + 55, 87, 83, 84, 83, 83, 59, 72, 51, 49, 32, 71, 85, 76, 75, 80, + 76, 76, 73, 76, 75, 72, 33, 9, 61, 73, 100, 79, 81, 79, 68, 65, + 63, 60, 49, 28, 38, 51, 60, 69, 76, 65, 72, 59, 64, 17, 10, 77, + 97, 102, 100, 92, 97, 99, 96, 95, 91, 73, 36, 61, 65, 91, 88, 95, + 88, 77, 65, 63, 51, 52, 21, 1, 67, 65, 55, 46, 53, 49, 48, 44, + 45, 45, 49, 37, 20, 44, 64, 49, 52, 18, 26, 38, 38, 26, 14, 10, + 57, 49, 44, 52, 46, 49, 46, 45, 45, 41, 20, 8, 48, 46, 42, 30, + 29, 26, 29, 33, 32, 36, 26, 14, 38, 57, 69, 68, 59, 49, 37, 42, + 44, 32, 18, 22, 46, 71, 68, 67, 34, 38, 36, 37, 34, 26, 25, 14, + 67, 69, 42, 56, 60, 56, 56, 41, 55, 46, 41, 21, 17, 52, 33, 36, + 14, 9, 16, 22, 20, 6, 14, 60, 91, 79, 93, 92, 91, 87, 88, 99, + 56, 41, 5, 48, 48, 52, 37, 24, 21, 18, 25, 36, 17, 33, 45, 4, + 68, 83, 81, 87, 79, 85, 76, 84, 79, 83, 64, 29, 33, 52, 53, 37, + 44, 33, 34, 36, 24, 29, 12, 16, 45, 25, 24, 17, 20, 25, 34, 37, + 25, 24, 14, 0, 44, 51, 61, 56, 38, 36, 37, 26, 21, 12, 4, 100, + 106, 72, 71, 73, 72, 73, 68, 68, 55, 59, 60, 48, 25, 22, 20, 10, + 9, 14, 16, 13, 10, 13, 9, 2, 17, 34, 9, 22, 40, 25, 26, 18, + 10, 9, 5, 0, 1, 45, 33, 30, 20, 81, 85, 88, 89, 99, 91, 91, + 73, 56, 6, 32, 48, 51, 49, 45, 48, 45, 46, 40, 29, 24, 12, 65, + 89, 97, 96, 87, 84, 85, 85, 84, 81, 57, 36, 77, 77, 81, 81, 83, + 72, 75, 72, 68, 68, 64, 60, 46, 48, 49, 46, 51, 49, 51, 55, 53, + 55, 56, 24, 116, 97, 92, 97, 88, 89, 89, 89, 88, 83, 76, 49, 89, + 87, 73, 73, 72, 64, 68, 61, 65, 64, 68, 46, 10, 77, 80, 73, 73, + 69, 84, 68, 65, 57, 71, 38, 33, 38, 28, 25, 24, 21, 21, 18, 17, + 13, 4, 1, 48, 91, 84, 84, 83, 91, 87, 91, 73, 73, 38, 1, 57, + 73, 63, 56, 77, 75, 71, 59, 61, 45, 40, 30, 18, 18, 12, 8, 5, + 5, 6, 5, 2, 4, 0, 1, 89, 89, 89, 83, 80, 77, 73, 73, 46, + 48, 29, 71, 103, 95, 84, 80, 80, 80, 72, 71, 71, 68, 63, 36, 46, + 76, 83, 77, 68, 44, 63, 59, 100, 182, 183, 143, 92, 119, 85, 44, 36, + 29, 33, 30, 30, 33, 38, 36, 65, 73, 116, 195, 216, 214, 216, 191, 120, + 120, 127, 135, 140, 146, 140, 128, 65, 12, 10, 8, 6, 9, 14, 16, 41, + 63, 67, 65, 64, 63, 59, 53, 56, 53, 30, 37, 72, 80, 55, 59, 64, + 60, 63, 61, 53, 48, 32, 46, 71, 75, 59, 56, 68, 71, 59, 59, 59, + 45, 29, 30, 29, 10, 14, 12, 25, 9, 12, 8, 4, 10, 0, 2, 84, + 97, 103, 96, 88, 87, 91, 88, 83, 81, 76, 75, 75, 52, 57, 63, 61, + 60, 72, 69, 64, 49, 29, 68, 84, 79, 81, 75, 76, 75, 77, 73, 72, + 68, 42, 13, 56, 59, 60, 60, 60, 60, 64, 57, 60, 49, 46, 25, 38, + 44, 57, 57, 52, 51, 51, 51, 44, 18, 0, 13, 48, 60, 49, 49, 57, + 67, 59, 56, 65, 57, 29, 26, 32, 34, 37, 41, 45, 41, 46, 44, 52, + 46, 18, 8, 64, 63, 64, 67, 59, 67, 56, 53, 49, 45, 41, 41, 20, + 18, 29, 37, 28, 20, 38, 37, 32, 25, 12, 9, 52, 45, 64, 49, 48, + 51, 49, 48, 46, 44, 24, 0, 38, 49, 25, 25, 28, 32, 30, 44, 33, + 38, 22, 14, 22, 45, 48, 37, 34, 38, 41, 32, 32, 37, 29, 18, 28, + 46, 45, 32, 32, 49, 36, 29, 32, 26, 25, 22, 60, 64, 63, 60, 55, + 60, 56, 49, 48, 53, 45, 17, 12, 38, 42, 42, 33, 12, 25, 25, 16, + 6, 6, 65, 93, 85, 88, 91, 92, 96, 88, 96, 69, 41, 5, 38, 45, + 36, 18, 25, 17, 17, 21, 17, 21, 25, 28, 12, 56, 68, 71, 49, 53, + 64, 64, 67, 59, 55, 46, 41, 42, 38, 33, 33, 32, 42, 30, 30, 25, + 25, 24, 10, 13, 16, 13, 17, 17, 20, 13, 37, 26, 17, 13, 0, 37, + 44, 42, 45, 41, 55, 24, 17, 20, 12, 2, 92, 92, 76, 65, 68, 60, + 59, 59, 60, 59, 55, 52, 44, 28, 30, 14, 22, 17, 13, 14, 10, 12, + 8, 8, 2, 20, 37, 44, 21, 16, 12, 8, 9, 8, 6, 4, 0, 0, + 32, 36, 25, 24, 72, 69, 69, 68, 69, 67, 69, 59, 41, 6, 29, 40, + 34, 25, 38, 40, 32, 29, 36, 32, 22, 10, 46, 89, 88, 85, 83, 63, + 56, 53, 64, 60, 51, 33, 53, 59, 59, 57, 56, 57, 60, 56, 56, 55, + 55, 51, 52, 37, 26, 21, 22, 32, 16, 12, 13, 10, 10, 21, 114, 77, + 92, 48, 88, 85, 83, 53, 84, 79, 72, 46, 81, 84, 65, 61, 57, 56, + 49, 53, 53, 53, 41, 21, 13, 44, 38, 41, 38, 37, 40, 37, 38, 36, + 33, 30, 26, 22, 21, 22, 20, 14, 13, 14, 12, 10, 12, 0, 18, 68, + 73, 51, 56, 77, 71, 64, 67, 65, 36, 16, 48, 64, 65, 61, 53, 51, + 49, 46, 42, 44, 18, 10, 6, 5, 9, 18, 22, 16, 8, 10, 10, 8, + 1, 0, 80, 51, 61, 59, 60, 64, 65, 71, 49, 42, 26, 63, 79, 85, + 83, 76, 79, 73, 69, 67, 71, 76, 67, 63, 64, 61, 41, 45, 59, 57, + 51, 56, 65, 162, 193, 157, 111, 111, 107, 72, 44, 30, 42, 41, 38, 36, + 40, 63, 73, 114, 183, 216, 216, 217, 213, 161, 119, 122, 128, 140, 143, 142, + 132, 92, 21, 10, 9, 8, 10, 10, 14, 17, 25, 52, 52, 48, 38, 51, + 49, 38, 41, 46, 36, 34, 67, 53, 51, 41, 40, 38, 37, 38, 40, 48, + 26, 16, 16, 22, 18, 17, 18, 24, 32, 44, 49, 34, 28, 8, 8, 5, + 5, 4, 4, 2, 0, 2, 4, 0, 5, 1, 10, 52, 63, 53, 53, 56, + 67, 60, 59, 61, 61, 61, 53, 63, 60, 63, 60, 67, 63, 65, 55, 48, + 34, 55, 75, 75, 77, 67, 64, 61, 60, 53, 56, 53, 38, 14, 24, 26, + 25, 26, 28, 30, 32, 36, 34, 36, 36, 24, 24, 13, 17, 17, 13, 9, + 9, 12, 12, 10, 2, 2, 5, 13, 5, 4, 12, 17, 8, 9, 16, 18, + 18, 16, 5, 13, 13, 12, 18, 26, 21, 26, 32, 32, 21, 0, 14, 24, + 28, 26, 26, 29, 30, 24, 25, 25, 22, 24, 20, 24, 33, 24, 22, 22, + 14, 22, 20, 24, 13, 16, 45, 40, 49, 46, 45, 44, 44, 40, 40, 38, + 18, 12, 34, 12, 16, 9, 9, 12, 14, 6, 5, 9, 13, 13, 9, 10, + 13, 12, 12, 14, 14, 17, 20, 28, 30, 30, 29, 32, 29, 26, 26, 28, + 26, 25, 24, 28, 28, 22, 57, 53, 51, 51, 41, 40, 38, 34, 33, 32, + 18, 21, 21, 18, 22, 16, 14, 9, 9, 9, 10, 5, 5, 61, 67, 83, + 85, 79, 76, 75, 81, 72, 53, 38, 8, 48, 33, 24, 21, 22, 20, 20, + 22, 22, 21, 22, 36, 17, 13, 14, 14, 13, 18, 21, 24, 24, 26, 34, + 38, 32, 29, 25, 26, 25, 25, 24, 25, 22, 22, 20, 18, 17, 20, 18, + 18, 16, 17, 16, 16, 12, 16, 16, 12, 0, 21, 29, 41, 17, 20, 25, + 36, 25, 16, 10, 2, 59, 92, 75, 63, 61, 61, 60, 55, 40, 38, 34, + 29, 29, 29, 16, 9, 20, 17, 13, 16, 13, 16, 10, 10, 2, 9, 18, + 16, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 45, 42, 38, 32, 30, 29, 25, 22, 0, 4, 8, 8, 6, 8, 14, 12, + 13, 18, 30, 17, 9, 64, 34, 33, 32, 32, 44, 33, 25, 22, 40, 36, + 20, 17, 13, 16, 13, 13, 12, 16, 13, 12, 10, 13, 12, 13, 29, 42, + 52, 52, 57, 91, 76, 95, 76, 55, 8, 122, 83, 96, 75, 63, 56, 57, + 57, 71, 73, 71, 44, 45, 46, 46, 40, 36, 33, 28, 25, 21, 22, 16, + 13, 12, 10, 9, 8, 6, 6, 5, 5, 4, 4, 4, 2, 1, 5, 6, + 1, 0, 1, 4, 0, 0, 1, 2, 0, 17, 13, 13, 17, 16, 34, 61, + 37, 46, 55, 33, 1, 44, 14, 20, 16, 17, 12, 17, 12, 16, 9, 8, + 9, 10, 24, 49, 44, 57, 61, 67, 59, 68, 64, 38, 0, 92, 79, 77, + 68, 61, 59, 59, 45, 55, 44, 25, 48, 49, 52, 49, 49, 51, 52, 52, + 53, 49, 55, 52, 51, 51, 33, 25, 26, 28, 37, 64, 63, 65, 108, 181, + 171, 114, 81, 151, 100, 77, 76, 80, 81, 81, 80, 79, 102, 150, 197, 216, + 216, 214, 214, 199, 132, 119, 127, 139, 142, 139, 132, 103, 29, 12, 10, 8, + 10, 14, 16, 8, 17, 24, 21, 25, 28, 28, 28, 29, 30, 34, 42, 42, + 36, 38, 30, 33, 40, 33, 37, 45, 61, 52, 46, 32, 37, 79, 81, 71, + 63, 46, 45, 41, 37, 13, 9, 6, 4, 0, 13, 2, 1, 2, 9, 0, + 2, 4, 0, 0, 5, 8, 2, 2, 2, 6, 5, 5, 6, 8, 9, 10, + 12, 13, 16, 18, 25, 25, 29, 30, 36, 37, 45, 33, 37, 51, 51, 32, + 33, 36, 37, 22, 22, 26, 21, 12, 2, 8, 2, 13, 14, 8, 6, 12, + 12, 6, 8, 10, 13, 45, 57, 69, 68, 60, 72, 64, 68, 36, 32, 1, + 14, 102, 108, 72, 67, 84, 92, 60, 64, 61, 21, 10, 40, 89, 85, 48, + 45, 48, 26, 25, 20, 25, 13, 10, 4, 1, 0, 8, 1, 0, 0, 6, + 4, 0, 2, 9, 8, 10, 6, 12, 9, 8, 20, 14, 10, 13, 21, 5, + 8, 37, 8, 12, 8, 9, 9, 9, 6, 6, 4, 4, 9, 6, 22, 34, + 40, 40, 42, 52, 59, 48, 46, 24, 10, 51, 76, 85, 64, 65, 42, 29, + 24, 16, 16, 13, 12, 14, 12, 17, 10, 12, 14, 12, 14, 16, 17, 17, + 13, 25, 21, 30, 24, 24, 18, 22, 21, 20, 18, 18, 16, 13, 6, 2, + 1, 1, 2, 2, 2, 2, 6, 4, 12, 18, 25, 21, 36, 37, 33, 24, + 40, 44, 25, 6, 34, 18, 25, 21, 18, 20, 22, 29, 33, 34, 33, 45, + 1, 32, 103, 103, 65, 65, 57, 56, 48, 34, 17, 13, 10, 8, 8, 8, + 6, 6, 6, 5, 5, 4, 6, 6, 4, 1, 0, 0, 1, 0, 0, 0, + 0, 1, 1, 0, 0, 4, 2, 6, 4, 5, 5, 6, 6, 17, 10, 1, + 55, 87, 61, 53, 51, 46, 45, 45, 41, 40, 48, 37, 41, 13, 17, 25, + 16, 13, 6, 4, 2, 2, 2, 1, 1, 2, 1, 1, 1, 4, 4, 1, + 1, 2, 1, 0, 0, 0, 1, 0, 0, 0, 52, 63, 64, 56, 68, 57, + 68, 67, 52, 0, 32, 83, 80, 55, 60, 65, 53, 36, 25, 20, 12, 12, + 22, 53, 56, 48, 59, 65, 88, 76, 68, 64, 52, 14, 65, 87, 89, 80, + 69, 83, 73, 84, 80, 77, 36, 9, 68, 119, 115, 110, 108, 103, 102, 102, + 111, 88, 51, 10, 122, 84, 88, 123, 115, 99, 81, 84, 61, 45, 25, 38, + 44, 51, 53, 59, 59, 57, 65, 69, 68, 46, 64, 61, 112, 115, 115, 116, + 122, 118, 111, 115, 123, 110, 93, 89, 110, 106, 100, 108, 107, 102, 91, 83, + 102, 81, 20, 1, 65, 106, 104, 81, 67, 49, 40, 36, 20, 14, 10, 1, + 10, 44, 51, 56, 48, 57, 61, 64, 61, 65, 41, 1, 52, 111, 123, 126, + 122, 120, 104, 114, 103, 76, 37, 0, 88, 77, 92, 89, 96, 88, 87, 75, + 63, 44, 25, 9, 9, 9, 9, 10, 10, 10, 13, 12, 12, 12, 16, 17, + 18, 59, 61, 79, 79, 76, 103, 97, 76, 69, 120, 179, 128, 88, 114, 126, + 123, 135, 131, 118, 124, 138, 148, 191, 210, 214, 218, 216, 213, 212, 150, 122, + 126, 135, 138, 134, 126, 89, 28, 13, 13, 10, 16, 14, 12, 17, 25, 32, + 38, 73, 88, 80, 63, 61, 48, 45, 45, 36, 32, 29, 53, 84, 99, 91, + 104, 75, 76, 88, 67, 49, 29, 55, 99, 80, 65, 64, 80, 72, 73, 46, + 42, 36, 0, 16, 118, 110, 85, 73, 87, 85, 81, 76, 84, 65, 33, 0, + 30, 76, 88, 87, 88, 88, 91, 83, 81, 76, 69, 63, 75, 76, 77, 79, + 73, 51, 37, 30, 24, 24, 25, 17, 22, 42, 38, 49, 42, 51, 48, 55, + 56, 45, 33, 4, 18, 61, 67, 77, 69, 64, 65, 57, 65, 67, 60, 60, + 59, 80, 89, 93, 88, 87, 79, 65, 61, 34, 4, 91, 88, 67, 84, 72, + 80, 68, 81, 75, 61, 25, 6, 83, 100, 96, 93, 93, 88, 79, 57, 64, + 65, 26, 18, 4, 14, 100, 93, 60, 45, 91, 85, 61, 49, 61, 55, 24, + 2, 36, 89, 84, 48, 46, 41, 34, 25, 17, 9, 4, 6, 33, 34, 37, + 28, 41, 45, 36, 40, 40, 29, 0, 30, 92, 87, 83, 85, 88, 77, 79, + 75, 59, 24, 9, 59, 85, 63, 60, 80, 80, 79, 79, 56, 29, 22, 5, + 37, 122, 115, 75, 68, 67, 60, 51, 24, 10, 12, 5, 5, 6, 6, 4, + 5, 4, 4, 1, 4, 2, 2, 2, 5, 12, 55, 64, 65, 63, 49, 72, + 57, 16, 5, 40, 79, 72, 67, 29, 24, 16, 12, 10, 6, 9, 2, 14, + 34, 76, 75, 75, 77, 75, 79, 69, 72, 53, 45, 4, 85, 119, 111, 95, + 112, 99, 100, 99, 99, 89, 89, 68, 63, 81, 61, 45, 57, 69, 60, 57, + 46, 34, 2, 0, 14, 68, 95, 64, 59, 63, 79, 64, 60, 52, 4, 0, + 48, 64, 60, 38, 64, 53, 53, 12, 6, 10, 1, 64, 68, 72, 69, 76, + 73, 72, 72, 73, 75, 68, 38, 24, 18, 21, 45, 40, 34, 38, 37, 25, + 18, 9, 12, 4, 2, 14, 37, 40, 52, 38, 44, 45, 60, 60, 67, 56, + 72, 76, 83, 81, 83, 120, 103, 110, 104, 99, 100, 64, 68, 53, 0, 67, + 77, 95, 91, 84, 87, 83, 81, 80, 75, 33, 12, 73, 112, 114, 108, 106, + 97, 110, 107, 96, 67, 57, 16, 91, 92, 85, 76, 73, 92, 81, 77, 75, + 77, 41, 8, 96, 118, 93, 99, 108, 119, 99, 102, 83, 92, 57, 14, 130, + 106, 81, 79, 59, 80, 93, 111, 119, 104, 85, 99, 116, 106, 108, 116, 106, + 107, 112, 103, 108, 92, 102, 88, 76, 110, 97, 85, 93, 96, 83, 76, 72, + 76, 91, 64, 76, 93, 110, 114, 99, 99, 88, 83, 92, 91, 45, 0, 84, + 102, 127, 89, 95, 71, 80, 77, 71, 55, 33, 8, 69, 112, 108, 108, 100, + 99, 64, 84, 87, 71, 46, 1, 102, 124, 106, 91, 77, 100, 89, 81, 84, + 73, 36, 0, 104, 75, 81, 87, 83, 80, 83, 84, 71, 56, 25, 30, 100, + 81, 76, 80, 93, 93, 77, 75, 72, 68, 67, 63, 69, 65, 104, 108, 106, + 89, 89, 91, 85, 56, 73, 169, 146, 97, 79, 158, 169, 177, 190, 199, 205, + 206, 210, 213, 214, 213, 209, 212, 205, 155, 124, 130, 134, 130, 126, 99, 56, + 26, 16, 13, 10, 18, 13, 18, 25, 40, 25, 26, 64, 103, 114, 100, 103, + 106, 112, 111, 112, 92, 83, 84, 87, 102, 99, 83, 72, 83, 72, 71, 71, + 52, 32, 51, 97, 93, 81, 67, 63, 59, 73, 80, 52, 40, 0, 118, 120, + 95, 97, 92, 93, 89, 67, 64, 59, 55, 65, 0, 110, 104, 92, 93, 81, + 92, 77, 80, 80, 81, 77, 55, 49, 77, 80, 72, 72, 60, 59, 64, 72, + 40, 22, 41, 91, 89, 96, 85, 87, 87, 81, 85, 83, 64, 36, 2, 99, + 93, 102, 96, 85, 80, 73, 65, 71, 67, 48, 59, 95, 114, 108, 93, 93, + 79, 83, 85, 59, 36, 2, 104, 84, 83, 73, 65, 64, 63, 63, 69, 75, + 26, 9, 96, 108, 85, 51, 68, 55, 83, 76, 60, 38, 33, 20, 0, 104, + 115, 96, 48, 65, 84, 75, 61, 59, 59, 56, 29, 2, 87, 96, 75, 72, + 77, 68, 83, 45, 30, 21, 2, 36, 87, 96, 102, 88, 83, 75, 72, 76, + 71, 41, 14, 80, 97, 92, 83, 71, 73, 71, 72, 69, 75, 28, 8, 67, + 93, 63, 65, 52, 52, 55, 67, 71, 60, 25, 4, 106, 126, 104, 102, 108, + 104, 100, 73, 85, 83, 81, 81, 92, 99, 89, 87, 91, 80, 97, 87, 88, + 87, 71, 69, 75, 61, 63, 60, 68, 56, 75, 63, 60, 20, 5, 52, 104, + 72, 64, 71, 48, 57, 51, 36, 28, 14, 24, 63, 85, 89, 97, 88, 88, + 80, 84, 71, 65, 55, 33, 12, 100, 110, 115, 103, 103, 93, 76, 71, 80, + 68, 65, 76, 77, 67, 40, 41, 57, 61, 28, 34, 24, 59, 2, 0, 71, + 96, 63, 60, 55, 49, 57, 49, 55, 61, 9, 0, 56, 56, 45, 55, 69, + 52, 53, 52, 16, 10, 0, 91, 72, 67, 67, 65, 61, 38, 53, 64, 52, + 49, 30, 21, 16, 30, 37, 21, 24, 17, 20, 17, 25, 21, 2, 0, 34, + 64, 75, 75, 79, 71, 63, 53, 67, 52, 61, 56, 57, 46, 65, 84, 72, + 143, 128, 106, 114, 122, 108, 119, 67, 55, 0, 71, 85, 92, 89, 73, 76, + 53, 67, 65, 73, 38, 13, 97, 118, 107, 100, 97, 100, 104, 111, 106, 72, + 57, 18, 91, 102, 111, 122, 104, 112, 102, 99, 83, 79, 46, 8, 88, 116, + 95, 96, 79, 83, 88, 81, 68, 68, 52, 13, 130, 102, 99, 69, 77, 77, + 81, 84, 65, 84, 95, 91, 65, 64, 77, 77, 79, 60, 55, 80, 61, 64, + 95, 64, 111, 97, 104, 100, 88, 95, 92, 95, 91, 79, 81, 57, 103, 124, + 110, 92, 103, 97, 96, 102, 96, 91, 49, 1, 89, 104, 131, 88, 75, 93, + 67, 84, 68, 60, 37, 21, 88, 107, 96, 102, 102, 91, 85, 91, 88, 83, + 46, 0, 99, 124, 71, 80, 85, 85, 77, 103, 79, 85, 41, 0, 97, 71, + 79, 75, 73, 75, 73, 76, 76, 53, 25, 92, 93, 89, 77, 65, 83, 89, + 80, 72, 84, 72, 84, 65, 46, 103, 114, 97, 76, 68, 73, 89, 93, 53, + 55, 124, 154, 104, 73, 112, 118, 136, 154, 179, 191, 199, 204, 202, 204, 208, + 193, 170, 147, 119, 132, 128, 112, 92, 56, 28, 16, 17, 14, 13, 16, 13, + 17, 22, 34, 26, 29, 29, 64, 104, 112, 112, 110, 106, 100, 102, 104, 85, + 83, 64, 103, 95, 69, 72, 84, 87, 84, 73, 52, 67, 30, 52, 85, 80, + 69, 72, 69, 64, 71, 71, 52, 38, 0, 122, 118, 114, 87, 79, 77, 73, + 57, 57, 57, 73, 67, 0, 107, 87, 80, 84, 96, 88, 87, 97, 83, 81, + 63, 36, 69, 116, 87, 72, 67, 65, 63, 75, 71, 40, 30, 85, 89, 83, + 75, 64, 77, 88, 69, 71, 64, 53, 40, 9, 97, 76, 73, 76, 96, 84, + 69, 63, 67, 51, 42, 84, 118, 91, 77, 91, 81, 60, 48, 71, 42, 34, + 0, 68, 81, 71, 56, 45, 53, 68, 67, 87, 64, 28, 6, 85, 107, 64, + 57, 41, 46, 49, 60, 37, 30, 32, 18, 2, 88, 91, 84, 65, 69, 57, + 53, 64, 56, 80, 61, 30, 4, 91, 95, 61, 53, 55, 51, 53, 63, 34, + 29, 4, 75, 95, 91, 87, 79, 87, 84, 77, 52, 49, 29, 8, 80, 95, + 84, 68, 69, 59, 63, 63, 63, 56, 25, 8, 65, 88, 72, 69, 67, 52, + 51, 46, 57, 65, 24, 5, 93, 115, 112, 111, 97, 91, 81, 95, 80, 76, + 65, 72, 89, 89, 103, 69, 84, 88, 80, 80, 65, 83, 69, 46, 42, 83, + 91, 67, 61, 40, 34, 65, 48, 25, 5, 42, 102, 77, 65, 63, 53, 65, + 51, 52, 32, 16, 30, 65, 95, 84, 73, 69, 69, 71, 69, 76, 83, 37, + 40, 10, 89, 106, 112, 106, 100, 69, 71, 99, 96, 92, 81, 61, 34, 73, + 73, 44, 41, 30, 26, 9, 32, 41, 1, 4, 85, 85, 59, 61, 51, 68, + 69, 61, 55, 52, 10, 0, 38, 45, 41, 29, 22, 22, 18, 36, 32, 10, + 0, 102, 81, 59, 67, 46, 42, 33, 42, 45, 48, 42, 29, 16, 22, 40, + 33, 21, 8, 4, 4, 5, 12, 20, 0, 4, 53, 93, 95, 61, 67, 60, + 61, 68, 53, 33, 40, 44, 51, 89, 107, 131, 136, 84, 89, 115, 108, 79, + 95, 116, 68, 53, 0, 64, 99, 89, 67, 65, 75, 72, 64, 52, 65, 38, + 16, 80, 120, 103, 108, 99, 95, 93, 95, 111, 73, 60, 25, 59, 104, 104, + 89, 97, 111, 107, 79, 77, 77, 45, 6, 104, 110, 112, 88, 97, 97, 88, + 99, 75, 87, 57, 5, 124, 107, 97, 68, 65, 71, 87, 80, 81, 77, 61, + 67, 60, 97, 71, 69, 87, 80, 83, 80, 79, 61, 56, 37, 111, 100, 103, + 95, 83, 85, 76, 73, 92, 84, 75, 59, 119, 122, 93, 87, 83, 91, 96, + 88, 85, 104, 45, 0, 93, 110, 114, 71, 76, 91, 84, 100, 99, 81, 40, + 6, 106, 106, 110, 92, 104, 97, 88, 89, 85, 69, 46, 0, 93, 118, 69, + 81, 77, 93, 96, 97, 83, 67, 40, 0, 99, 80, 80, 87, 84, 73, 75, + 73, 79, 59, 25, 92, 89, 79, 84, 89, 85, 77, 79, 79, 71, 71, 57, + 38, 61, 110, 104, 96, 69, 72, 76, 64, 89, 56, 48, 108, 153, 104, 67, + 81, 99, 111, 118, 124, 150, 161, 170, 169, 163, 159, 139, 126, 126, 119, 100, + 77, 45, 29, 17, 14, 14, 13, 17, 13, 13, 24, 22, 29, 32, 32, 28, + 25, 67, 116, 119, 112, 88, 97, 88, 80, 72, 71, 52, 88, 107, 69, 75, + 97, 77, 69, 65, 73, 55, 69, 37, 42, 87, 83, 75, 87, 71, 83, 69, + 67, 60, 37, 0, 76, 111, 92, 97, 111, 88, 81, 76, 60, 59, 63, 36, + 4, 76, 75, 87, 96, 84, 85, 83, 77, 76, 55, 51, 34, 73, 108, 71, + 67, 84, 97, 92, 73, 60, 38, 21, 83, 88, 76, 64, 60, 56, 77, 76, + 63, 53, 49, 40, 2, 91, 65, 76, 57, 83, 97, 85, 64, 67, 41, 26, + 80, 119, 89, 85, 89, 79, 55, 65, 55, 46, 37, 0, 87, 91, 91, 42, + 57, 63, 59, 77, 72, 79, 29, 5, 88, 104, 59, 52, 41, 53, 53, 42, + 45, 29, 25, 20, 1, 77, 95, 53, 69, 75, 61, 56, 55, 51, 63, 53, + 41, 4, 79, 89, 59, 44, 61, 63, 59, 59, 56, 29, 0, 81, 100, 77, + 73, 73, 59, 53, 46, 40, 45, 28, 1, 76, 96, 76, 56, 69, 55, 53, + 57, 55, 63, 26, 5, 64, 88, 84, 65, 79, 79, 75, 53, 52, 49, 25, + 5, 81, 108, 111, 106, 110, 100, 107, 107, 104, 95, 64, 91, 106, 83, 63, + 57, 59, 64, 59, 46, 51, 55, 34, 30, 55, 96, 89, 33, 53, 55, 87, + 46, 49, 24, 6, 52, 95, 73, 48, 68, 71, 56, 64, 52, 38, 17, 26, + 64, 95, 80, 68, 68, 80, 80, 65, 64, 76, 38, 41, 1, 88, 102, 99, + 103, 108, 68, 75, 83, 93, 88, 79, 56, 60, 84, 63, 24, 44, 18, 29, + 28, 33, 34, 1, 0, 68, 72, 63, 60, 49, 56, 64, 61, 59, 44, 10, + 0, 65, 57, 26, 37, 34, 28, 17, 33, 44, 12, 0, 96, 64, 61, 65, + 42, 67, 36, 33, 57, 49, 36, 33, 16, 12, 40, 29, 8, 12, 16, 10, + 8, 9, 16, 0, 10, 73, 96, 61, 53, 60, 37, 51, 84, 57, 41, 51, + 38, 51, 93, 131, 77, 30, 111, 112, 120, 83, 92, 97, 110, 64, 53, 1, + 64, 95, 91, 56, 61, 64, 77, 51, 51, 71, 40, 17, 72, 110, 104, 100, + 110, 114, 93, 91, 97, 76, 61, 22, 100, 112, 103, 89, 93, 106, 106, 80, + 79, 80, 45, 6, 93, 110, 87, 96, 99, 91, 96, 85, 77, 75, 55, 5, + 122, 97, 95, 68, 71, 68, 92, 84, 84, 73, 53, 73, 92, 89, 95, 91, + 68, 71, 80, 68, 72, 76, 77, 32, 110, 110, 100, 83, 85, 77, 93, 73, + 84, 81, 77, 61, 118, 119, 77, 79, 84, 85, 72, 84, 85, 83, 48, 1, + 93, 107, 123, 83, 93, 76, 67, 68, 92, 59, 40, 0, 93, 97, 116, 96, + 106, 92, 91, 87, 69, 79, 48, 0, 106, 118, 79, 91, 89, 88, 79, 95, + 89, 77, 40, 0, 89, 89, 81, 81, 80, 75, 73, 73, 75, 56, 28, 57, + 76, 93, 81, 71, 85, 76, 75, 80, 75, 67, 56, 36, 87, 111, 102, 91, + 81, 65, 72, 77, 95, 63, 46, 99, 154, 115, 84, 60, 64, 64, 69, 89, + 110, 114, 118, 122, 118, 116, 112, 87, 65, 44, 29, 21, 18, 18, 14, 10, + 16, 17, 12, 25, 26, 28, 29, 36, 37, 32, 32, 25, 60, 112, 96, 83, + 71, 81, 87, 84, 69, 55, 51, 93, 97, 71, 87, 77, 77, 60, 56, 79, + 65, 72, 38, 34, 81, 80, 71, 71, 75, 68, 61, 63, 46, 38, 0, 80, + 108, 106, 119, 95, 51, 49, 64, 52, 72, 72, 37, 2, 79, 89, 87, 91, + 72, 76, 77, 76, 56, 67, 53, 32, 75, 115, 83, 63, 65, 57, 60, 79, + 64, 38, 21, 71, 87, 73, 79, 71, 56, 71, 65, 52, 53, 42, 37, 1, + 73, 80, 76, 56, 76, 92, 85, 60, 51, 42, 30, 83, 123, 71, 77, 65, + 76, 56, 56, 46, 52, 34, 2, 92, 88, 79, 45, 52, 67, 72, 64, 75, + 65, 30, 4, 103, 106, 56, 42, 41, 38, 49, 48, 36, 38, 26, 18, 0, + 83, 111, 75, 73, 67, 59, 44, 77, 55, 57, 59, 28, 1, 77, 93, 51, + 45, 52, 49, 48, 53, 33, 28, 0, 84, 93, 57, 75, 55, 46, 52, 41, + 44, 37, 28, 9, 85, 95, 68, 65, 49, 55, 53, 51, 41, 60, 26, 5, + 63, 83, 77, 56, 45, 53, 45, 48, 53, 49, 26, 2, 97, 120, 110, 115, + 88, 91, 92, 100, 92, 91, 42, 89, 91, 84, 65, 57, 46, 55, 52, 52, + 53, 34, 46, 28, 91, 104, 102, 29, 67, 65, 73, 42, 44, 41, 10, 53, + 99, 76, 67, 69, 72, 53, 49, 65, 52, 17, 9, 51, 93, 64, 56, 51, + 59, 65, 59, 55, 83, 49, 41, 2, 99, 103, 96, 103, 95, 76, 73, 67, + 103, 83, 79, 51, 64, 92, 51, 21, 33, 10, 18, 26, 28, 30, 1, 0, + 57, 83, 53, 51, 46, 46, 49, 48, 40, 49, 10, 0, 42, 44, 42, 37, + 51, 41, 17, 24, 36, 12, 0, 106, 61, 59, 65, 37, 72, 36, 33, 32, + 38, 30, 30, 14, 18, 34, 24, 2, 9, 2, 4, 1, 5, 20, 0, 32, + 85, 87, 45, 48, 60, 48, 41, 68, 32, 28, 42, 33, 71, 108, 107, 24, + 32, 116, 119, 80, 87, 95, 83, 103, 79, 52, 0, 69, 100, 91, 59, 57, + 64, 71, 52, 51, 65, 42, 18, 68, 115, 108, 104, 92, 103, 104, 92, 93, + 89, 64, 25, 99, 104, 103, 96, 81, 84, 92, 77, 79, 75, 45, 5, 95, + 114, 91, 92, 92, 89, 102, 91, 77, 80, 59, 6, 124, 111, 91, 71, 68, + 69, 69, 76, 85, 79, 51, 97, 102, 89, 88, 71, 69, 91, 99, 68, 88, + 83, 84, 46, 119, 95, 84, 79, 84, 73, 93, 72, 89, 79, 65, 65, 122, + 110, 79, 87, 71, 83, 88, 103, 81, 81, 51, 0, 89, 110, 123, 83, 81, + 79, 71, 69, 103, 57, 42, 5, 100, 112, 99, 87, 99, 81, 81, 87, 71, + 81, 49, 1, 102, 122, 79, 76, 87, 85, 88, 95, 88, 72, 41, 0, 92, + 83, 83, 89, 76, 75, 76, 71, 67, 56, 30, 60, 81, 85, 83, 80, 85, + 75, 67, 71, 65, 71, 60, 29, 89, 110, 104, 75, 84, 64, 75, 87, 77, + 69, 42, 89, 150, 123, 93, 77, 60, 52, 46, 48, 42, 41, 41, 41, 45, + 38, 33, 30, 22, 22, 20, 18, 16, 14, 14, 16, 10, 18, 29, 34, 44, + 44, 41, 38, 32, 33, 33, 25, 63, 116, 85, 88, 88, 83, 72, 95, 83, + 69, 37, 87, 100, 69, 91, 67, 55, 55, 53, 73, 67, 73, 41, 24, 83, + 87, 92, 87, 88, 81, 73, 63, 51, 40, 0, 76, 102, 85, 104, 51, 48, + 59, 64, 51, 60, 61, 59, 0, 106, 96, 68, 100, 72, 64, 61, 64, 55, + 80, 57, 30, 81, 103, 76, 75, 59, 61, 53, 75, 65, 40, 24, 68, 83, + 99, 112, 65, 53, 49, 52, 53, 56, 49, 37, 0, 114, 72, 65, 59, 72, + 71, 85, 59, 52, 46, 29, 81, 122, 89, 83, 60, 72, 51, 51, 44, 56, + 40, 0, 96, 88, 91, 48, 51, 52, 77, 80, 77, 75, 30, 5, 95, 110, + 59, 42, 33, 37, 34, 49, 28, 37, 28, 21, 1, 115, 115, 73, 88, 38, + 59, 79, 42, 48, 63, 53, 30, 0, 84, 87, 55, 41, 49, 102, 55, 65, + 32, 26, 0, 83, 96, 60, 69, 42, 60, 45, 40, 40, 52, 28, 16, 79, + 91, 56, 69, 52, 51, 49, 51, 45, 61, 26, 4, 57, 85, 65, 44, 44, + 53, 77, 49, 49, 59, 28, 2, 91, 126, 107, 102, 85, 89, 88, 88, 93, + 85, 41, 91, 103, 69, 96, 72, 53, 48, 51, 46, 38, 37, 44, 28, 89, + 95, 87, 37, 75, 83, 42, 44, 25, 22, 9, 55, 100, 60, 61, 64, 38, + 32, 28, 52, 59, 17, 12, 67, 92, 79, 53, 52, 49, 53, 48, 65, 75, + 51, 37, 5, 97, 115, 97, 97, 69, 68, 71, 65, 97, 77, 79, 45, 64, + 91, 57, 13, 32, 9, 20, 22, 28, 28, 0, 0, 71, 75, 59, 48, 44, + 60, 59, 49, 34, 51, 10, 0, 61, 46, 32, 29, 18, 53, 26, 26, 26, + 12, 0, 91, 75, 69, 36, 21, 75, 33, 30, 26, 48, 20, 30, 14, 14, + 26, 21, 13, 34, 20, 21, 6, 6, 13, 0, 41, 89, 79, 41, 46, 48, + 41, 55, 75, 32, 29, 33, 33, 63, 108, 46, 38, 33, 118, 107, 77, 89, + 95, 80, 104, 67, 55, 0, 60, 93, 84, 59, 65, 57, 77, 49, 63, 72, + 46, 21, 45, 102, 114, 100, 104, 100, 89, 85, 93, 96, 60, 29, 73, 110, + 87, 97, 102, 87, 96, 81, 77, 87, 49, 6, 95, 111, 81, 83, 107, 89, + 87, 75, 68, 71, 59, 5, 123, 110, 106, 72, 72, 68, 72, 72, 84, 76, + 49, 103, 99, 91, 73, 68, 77, 114, 68, 69, 68, 81, 96, 42, 108, 89, + 88, 85, 83, 76, 100, 72, 83, 76, 45, 71, 123, 123, 79, 112, 79, 77, + 89, 107, 79, 79, 57, 0, 88, 103, 112, 81, 89, 76, 71, 65, 99, 61, + 44, 13, 96, 112, 92, 92, 83, 79, 104, 87, 77, 72, 51, 0, 99, 123, + 68, 89, 85, 80, 83, 102, 79, 71, 41, 0, 88, 83, 85, 80, 68, 72, + 73, 71, 77, 52, 30, 57, 93, 64, 77, 81, 89, 77, 85, 84, 53, 76, + 51, 26, 100, 116, 102, 85, 83, 61, 65, 85, 73, 71, 44, 84, 143, 127, + 104, 92, 81, 75, 53, 44, 41, 37, 34, 34, 29, 29, 28, 25, 22, 20, + 18, 18, 18, 18, 17, 6, 17, 29, 46, 51, 41, 42, 42, 42, 42, 36, + 36, 30, 59, 127, 88, 76, 92, 85, 85, 80, 76, 75, 30, 88, 88, 71, + 68, 69, 55, 76, 64, 60, 65, 77, 41, 20, 69, 84, 93, 71, 64, 60, + 68, 60, 51, 40, 0, 92, 99, 89, 97, 48, 49, 73, 51, 51, 71, 72, + 60, 0, 100, 87, 75, 99, 64, 61, 69, 53, 51, 76, 55, 26, 73, 122, + 72, 63, 65, 63, 57, 76, 64, 40, 25, 61, 95, 96, 68, 56, 67, 49, + 71, 68, 59, 51, 40, 6, 104, 59, 77, 51, 72, 49, 100, 55, 53, 45, + 30, 79, 120, 77, 88, 67, 65, 68, 45, 44, 41, 36, 0, 89, 87, 87, + 45, 61, 45, 56, 59, 81, 57, 30, 4, 97, 111, 65, 55, 36, 33, 32, + 63, 29, 33, 30, 20, 0, 106, 124, 67, 80, 38, 61, 53, 64, 53, 52, + 49, 30, 2, 73, 102, 53, 49, 84, 79, 60, 55, 33, 29, 5, 88, 97, + 51, 57, 45, 45, 40, 53, 38, 52, 29, 6, 76, 95, 67, 72, 67, 73, + 71, 73, 45, 67, 28, 2, 68, 77, 59, 51, 89, 44, 42, 46, 48, 65, + 26, 4, 124, 122, 110, 91, 91, 104, 88, 91, 91, 91, 45, 95, 87, 92, + 68, 89, 61, 44, 49, 34, 37, 36, 49, 25, 95, 107, 83, 29, 71, 63, + 41, 40, 41, 26, 10, 59, 106, 45, 51, 36, 28, 28, 25, 26, 51, 17, + 28, 64, 92, 91, 52, 48, 48, 61, 48, 51, 69, 55, 37, 4, 92, 115, + 93, 91, 77, 68, 67, 71, 84, 77, 73, 41, 76, 96, 46, 16, 13, 5, + 18, 21, 21, 46, 0, 2, 73, 80, 53, 53, 56, 51, 36, 57, 44, 48, + 12, 0, 67, 56, 29, 33, 29, 20, 28, 28, 21, 12, 1, 77, 83, 46, + 53, 34, 75, 30, 28, 28, 38, 21, 26, 9, 16, 21, 22, 24, 16, 20, + 21, 5, 6, 6, 0, 41, 97, 65, 42, 51, 53, 46, 57, 96, 36, 34, + 34, 30, 76, 107, 41, 63, 63, 122, 81, 76, 88, 88, 77, 116, 64, 56, + 0, 61, 84, 91, 60, 79, 59, 68, 48, 53, 61, 52, 29, 52, 96, 114, + 112, 108, 88, 112, 96, 91, 100, 61, 30, 46, 108, 107, 89, 88, 89, 77, + 89, 81, 76, 51, 5, 104, 116, 83, 83, 80, 88, 92, 72, 68, 73, 59, + 2, 123, 110, 100, 71, 68, 65, 91, 75, 73, 73, 45, 108, 84, 75, 69, + 76, 107, 73, 69, 75, 81, 69, 80, 24, 112, 95, 80, 81, 72, 76, 103, + 68, 84, 72, 51, 85, 124, 110, 83, 108, 83, 72, 81, 111, 76, 75, 56, + 0, 88, 92, 122, 80, 77, 67, 72, 68, 114, 75, 53, 5, 99, 114, 85, + 85, 77, 77, 103, 80, 77, 67, 55, 0, 85, 123, 81, 76, 79, 79, 76, + 102, 72, 71, 41, 0, 96, 69, 80, 71, 68, 65, 72, 68, 71, 55, 32, + 26, 57, 104, 77, 71, 57, 71, 59, 59, 57, 79, 53, 22, 111, 112, 108, + 72, 92, 65, 63, 85, 67, 69, 46, 75, 130, 123, 127, 95, 91, 79, 71, + 57, 53, 44, 40, 34, 30, 30, 28, 30, 26, 29, 26, 26, 24, 20, 30, + 6, 28, 51, 49, 45, 57, 51, 59, 64, 61, 37, 34, 24, 55, 131, 88, + 99, 63, 91, 102, 65, 75, 72, 33, 80, 89, 72, 75, 59, 55, 87, 67, + 64, 64, 83, 44, 21, 75, 81, 84, 69, 60, 61, 67, 61, 48, 38, 0, + 93, 95, 85, 114, 48, 49, 61, 49, 49, 56, 57, 38, 1, 67, 81, 64, + 110, 67, 64, 67, 53, 53, 83, 59, 24, 67, 120, 65, 63, 68, 57, 67, + 60, 56, 41, 24, 73, 92, 102, 53, 52, 51, 64, 60, 51, 49, 46, 40, + 0, 100, 61, 69, 52, 77, 51, 84, 55, 53, 40, 16, 71, 120, 83, 92, + 67, 63, 53, 49, 49, 44, 36, 0, 91, 75, 106, 42, 48, 45, 45, 57, + 85, 60, 32, 2, 99, 118, 69, 73, 29, 42, 29, 73, 30, 29, 28, 20, + 0, 91, 99, 51, 93, 38, 59, 45, 68, 49, 53, 48, 30, 2, 87, 108, + 55, 38, 80, 52, 53, 57, 42, 30, 0, 79, 87, 57, 42, 42, 40, 38, + 72, 40, 68, 32, 1, 61, 91, 83, 51, 64, 59, 51, 44, 44, 73, 29, + 1, 63, 77, 56, 79, 95, 68, 41, 45, 46, 60, 28, 2, 108, 114, 108, + 85, 92, 107, 87, 87, 87, 89, 44, 100, 102, 75, 75, 81, 53, 38, 60, + 36, 36, 40, 37, 21, 97, 96, 37, 87, 38, 42, 51, 38, 41, 29, 13, + 32, 97, 46, 40, 28, 25, 26, 24, 25, 52, 20, 10, 56, 84, 99, 48, + 41, 46, 71, 48, 51, 83, 41, 41, 1, 93, 116, 95, 67, 69, 67, 67, + 97, 83, 72, 71, 34, 76, 88, 67, 13, 13, 10, 12, 22, 20, 26, 0, + 0, 48, 69, 38, 33, 30, 46, 37, 60, 36, 73, 12, 0, 53, 53, 25, + 17, 24, 30, 25, 17, 30, 13, 2, 25, 96, 41, 36, 30, 59, 26, 24, + 24, 48, 17, 18, 5, 20, 14, 2, 6, 5, 18, 6, 4, 13, 1, 0, + 45, 91, 55, 32, 51, 38, 45, 45, 81, 42, 37, 33, 25, 71, 111, 45, + 61, 5, 122, 79, 81, 87, 89, 73, 116, 65, 51, 0, 55, 77, 97, 56, + 87, 56, 64, 49, 56, 46, 59, 29, 33, 88, 118, 115, 119, 87, 108, 122, + 80, 107, 57, 33, 26, 119, 112, 76, 76, 81, 93, 92, 76, 75, 52, 4, + 108, 120, 84, 77, 80, 80, 73, 75, 68, 73, 60, 2, 123, 111, 111, 71, + 68, 68, 73, 76, 73, 68, 37, 112, 77, 72, 65, 110, 88, 68, 71, 75, + 84, 72, 67, 21, 99, 97, 77, 72, 72, 76, 112, 67, 79, 71, 46, 96, + 128, 115, 80, 110, 71, 77, 81, 114, 76, 76, 60, 0, 80, 88, 122, 68, + 81, 68, 77, 67, 134, 61, 51, 0, 110, 115, 81, 83, 75, 75, 111, 77, + 73, 68, 52, 0, 79, 122, 76, 76, 73, 71, 76, 112, 76, 75, 42, 0, + 84, 76, 75, 67, 64, 73, 67, 68, 64, 51, 34, 32, 56, 107, 106, 59, + 71, 61, 53, 56, 53, 96, 52, 21, 108, 118, 120, 75, 100, 97, 60, 77, + 69, 60, 45, 69, 115, 126, 118, 114, 93, 85, 76, 71, 63, 55, 41, 42, + 41, 37, 36, 36, 22, 24, 24, 22, 20, 20, 36, 5, 28, 55, 37, 63, + 44, 45, 63, 85, 81, 52, 36, 32, 48, 136, 79, 108, 64, 102, 77, 68, + 72, 60, 29, 80, 84, 68, 72, 60, 55, 99, 61, 65, 60, 97, 46, 24, + 79, 75, 59, 60, 61, 61, 61, 63, 48, 38, 0, 96, 80, 80, 130, 48, + 48, 56, 49, 51, 55, 64, 42, 0, 69, 85, 67, 110, 64, 64, 63, 53, + 49, 92, 52, 20, 69, 134, 60, 65, 61, 53, 55, 56, 56, 41, 25, 65, + 97, 60, 52, 51, 52, 49, 52, 55, 51, 41, 38, 1, 115, 63, 61, 51, + 92, 49, 100, 51, 46, 37, 17, 65, 119, 67, 102, 57, 57, 53, 44, 38, + 48, 37, 0, 104, 73, 93, 42, 51, 81, 84, 56, 96, 59, 33, 1, 115, + 127, 77, 75, 25, 32, 30, 81, 37, 26, 28, 20, 0, 89, 111, 63, 95, + 38, 52, 44, 77, 48, 53, 48, 32, 0, 91, 99, 51, 42, 88, 44, 57, + 55, 34, 30, 0, 89, 106, 53, 42, 41, 38, 38, 81, 40, 40, 29, 0, + 55, 96, 97, 46, 44, 42, 41, 38, 38, 85, 29, 1, 57, 65, 55, 83, + 110, 45, 40, 40, 45, 77, 29, 1, 112, 126, 120, 84, 85, 115, 85, 84, + 85, 87, 26, 104, 99, 93, 57, 92, 51, 38, 44, 33, 36, 33, 37, 17, + 102, 97, 36, 97, 37, 40, 38, 37, 37, 29, 14, 22, 97, 42, 30, 29, + 68, 26, 24, 26, 40, 20, 10, 51, 56, 107, 44, 44, 45, 56, 48, 48, + 68, 45, 38, 1, 84, 119, 87, 71, 67, 67, 64, 99, 80, 75, 72, 28, + 81, 89, 71, 16, 5, 12, 17, 10, 17, 22, 0, 0, 40, 68, 21, 17, + 17, 24, 33, 72, 34, 45, 13, 0, 45, 44, 29, 17, 25, 24, 22, 26, + 30, 13, 8, 5, 97, 45, 33, 29, 48, 28, 22, 22, 26, 18, 16, 8, + 6, 14, 1, 30, 1, 0, 2, 5, 4, 1, 0, 38, 83, 40, 37, 53, + 41, 33, 53, 91, 28, 26, 38, 21, 92, 106, 9, 8, 0, 162, 165, 161, + 159, 159, 170, 173, 154, 132, 0, 162, 179, 179, 175, 181, 155, 165, 177, 178, + 148, 84, 124, 179, 181, 165, 181, 163, 165, 165, 174, 159, 153, 140, 0, 170, + 185, 182, 151, 186, 155, 153, 155, 169, 161, 72, 100, 169, 169, 170, 174, 175, + 173, 161, 158, 170, 163, 169, 46, 161, 157, 150, 150, 165, 171, 154, 140, 139, + 122, 130, 65, 148, 170, 148, 150, 147, 131, 161, 131, 155, 142, 126, 68, 102, + 170, 138, 146, 146, 169, 165, 146, 163, 124, 130, 8, 163, 166, 143, 171, 185, + 151, 134, 165, 144, 153, 77, 73, 153, 158, 158, 120, 115, 123, 138, 124, 142, + 123, 115, 30, 155, 163, 170, 166, 153, 157, 153, 138, 135, 115, 100, 0, 150, + 157, 153, 159, 140, 138, 128, 153, 173, 139, 136, 37, 148, 171, 158, 135, 134, + 150, 130, 131, 120, 119, 79, 102, 174, 159, 135, 157, 148, 130, 132, 130, 147, + 171, 114, 1, 153, 139, 154, 153, 138, 123, 131, 146, 148, 142, 33, 151, 154, + 127, 132, 128, 126, 153, 132, 114, 128, 147, 34, 144, 147, 134, 150, 148, 142, + 135, 130, 128, 110, 110, 99, 4, 104, 151, 127, 135, 112, 132, 102, 135, 111, + 106, 96, 34, 142, 147, 123, 148, 132, 116, 112, 104, 100, 104, 85, 13, 135, + 136, 144, 143, 112, 115, 123, 107, 135, 84, 17, 169, 153, 153, 132, 171, 151, + 148, 123, 135, 130, 130, 115, 65, 91, 147, 138, 120, 112, 118, 138, 115, 132, + 97, 56, 73, 163, 177, 162, 182, 144, 139, 140, 163, 132, 128, 38, 106, 135, + 138, 131, 107, 104, 107, 139, 104, 104, 108, 49, 91, 136, 157, 130, 162, 106, + 103, 95, 103, 92, 104, 99, 28, 124, 104, 108, 103, 126, 106, 97, 100, 122, + 83, 99, 26, 150, 130, 124, 126, 127, 108, 110, 132, 93, 92, 83, 8, 91, + 139, 120, 140, 87, 89, 87, 107, 88, 88, 36, 114, 124, 123, 122, 119, 95, + 99, 126, 126, 92, 84, 69, 4, 122, 102, 123, 123, 88, 99, 80, 85, 83, + 110, 81, 4, 146, 123, 154, 107, 95, 115, 84, 80, 80, 77, 38, 76, 116, + 84, 127, 114, 72, 111, 114, 64, 75, 69, 8, 119, 161, 136, 114, 104, 107, + 161, 131, 102, 103, 89, 85, 2, 91, 97, 97, 57, 52, 51, 57, 53, 55, + 56, 49, 16, 104, 106, 73, 119, 92, 103, 63, 68, 63, 63, 61, 8, 110, + 127, 111, 114, 130, 65, 106, 111, 73, 68, 61, 40, 0, 123, 131, 118, 110, + 110, 91, 87, 84, 76, 81, 4, 124, 103, 128, 87, 53, 93, 61, 99, 57, + 52, 13, 92, 122, 76, 88, 56, 87, 45, 84, 111, 76, 53, 41, 25, 56, + 103, 96, 103, 102, 68, 46, 48, 53, 56, 44, 12, 89, 89, 52, 84, 56, + 91, 48, 45, 42, 37, 1, 123, 116, 107, 42, 44, 93, 83, 87, 111, 49, + 38, 33, 2, 91, 38, 38, 36, 36, 104, 84, 55, 32, 32, 26, 2, 51, + 84, 60, 84, 100, 22, 30, 36, 24, 29, 20, 0, 77, 83, 33, 26, 21, + 22, 34, 76, 25, 22, 13, 8, 40, 97, 68, 42, 29, 97, 30, 30, 33, + 24, 59, 18, 12, 97, 38, 114, 30, 181, 178, 181, 158, 159, 167, 173, 155, + 127, 1, 163, 183, 177, 170, 183, 161, 162, 175, 178, 134, 75, 128, 173, 179, + 177, 161, 162, 158, 162, 174, 162, 153, 140, 0, 167, 181, 178, 155, 179, 157, + 150, 162, 162, 154, 88, 103, 159, 167, 170, 159, 162, 153, 155, 163, 158, 157, + 162, 67, 155, 159, 150, 151, 153, 169, 167, 158, 136, 122, 126, 83, 150, 173, + 151, 148, 158, 144, 167, 143, 157, 139, 111, 64, 106, 170, 140, 144, 144, 166, + 162, 147, 159, 120, 122, 5, 157, 159, 155, 169, 181, 155, 135, 163, 147, 144, + 64, 73, 142, 150, 122, 115, 118, 124, 127, 131, 127, 122, 110, 46, 150, 159, + 158, 178, 163, 150, 151, 153, 135, 116, 104, 0, 146, 154, 165, 155, 140, 139, + 136, 147, 162, 148, 134, 42, 143, 167, 157, 136, 135, 147, 150, 126, 112, 119, + 75, 103, 166, 148, 134, 140, 142, 142, 130, 130, 140, 162, 102, 0, 151, 143, + 144, 151, 139, 128, 134, 140, 147, 140, 40, 155, 148, 135, 135, 118, 144, 146, + 119, 126, 115, 135, 52, 136, 147, 143, 144, 132, 132, 134, 128, 136, 110, 112, + 88, 2, 111, 139, 119, 108, 119, 120, 108, 124, 110, 108, 99, 48, 135, 150, + 126, 143, 139, 123, 127, 127, 115, 103, 97, 12, 131, 132, 132, 116, 114, 128, + 112, 115, 127, 91, 22, 158, 151, 151, 140, 150, 151, 144, 128, 142, 131, 135, + 115, 60, 93, 148, 136, 108, 119, 134, 130, 114, 128, 103, 55, 77, 159, 169, + 157, 167, 142, 136, 140, 158, 132, 126, 46, 111, 134, 136, 123, 106, 110, 108, + 132, 106, 102, 100, 48, 89, 136, 148, 130, 147, 114, 107, 100, 100, 93, 103, + 99, 40, 107, 110, 111, 127, 124, 111, 97, 99, 111, 89, 96, 26, 146, 134, + 114, 116, 100, 100, 112, 128, 87, 93, 84, 6, 99, 128, 114, 138, 83, 91, + 91, 99, 85, 84, 34, 108, 120, 122, 118, 102, 119, 119, 120, 104, 91, 85, + 68, 4, 122, 104, 120, 114, 89, 95, 92, 75, 92, 99, 76, 4, 138, 136, + 128, 103, 84, 115, 84, 84, 77, 76, 36, 80, 111, 112, 120, 89, 71, 108, + 111, 65, 75, 68, 9, 112, 150, 132, 128, 96, 97, 134, 127, 99, 108, 95, + 89, 14, 89, 92, 91, 55, 51, 51, 46, 53, 52, 51, 48, 20, 103, 106, + 79, 106, 89, 102, 64, 67, 71, 61, 51, 9, 106, 107, 107, 114, 102, 69, + 99, 104, 81, 68, 56, 40, 0, 130, 135, 110, 104, 89, 88, 87, 79, 75, + 75, 0, 114, 116, 126, 76, 53, 87, 64, 97, 63, 49, 17, 89, 123, 84, + 81, 56, 79, 46, 51, 49, 49, 53, 41, 22, 56, 110, 80, 95, 99, 63, + 49, 51, 77, 60, 49, 14, 88, 79, 57, 64, 68, 87, 49, 45, 42, 30, + 1, 111, 102, 91, 59, 45, 96, 88, 71, 65, 57, 38, 30, 2, 88, 55, + 46, 37, 34, 44, 93, 83, 33, 40, 25, 1, 61, 83, 68, 93, 63, 38, + 29, 37, 24, 22, 18, 0, 81, 80, 30, 30, 24, 22, 24, 76, 29, 42, + 13, 8, 36, 87, 63, 48, 28, 80, 34, 28, 29, 21, 52, 16, 12, 104, + 51, 104, 41, 169, 174, 169, 161, 159, 162, 173, 155, 147, 17, 162, 179, 173, + 173, 178, 162, 162, 169, 175, 140, 69, 131, 175, 175, 179, 166, 155, 151, 158, + 169, 159, 155, 138, 0, 165, 174, 157, 173, 165, 154, 153, 155, 166, 153, 84, + 110, 170, 163, 153, 155, 163, 166, 166, 161, 158, 154, 166, 71, 150, 158, 153, + 150, 148, 158, 159, 162, 146, 123, 120, 80, 153, 175, 150, 148, 143, 146, 148, + 157, 151, 140, 136, 60, 118, 162, 144, 144, 154, 165, 153, 157, 155, 118, 123, + 6, 153, 163, 147, 150, 148, 139, 136, 162, 147, 139, 57, 76, 139, 151, 126, + 106, 119, 110, 115, 120, 116, 116, 111, 48, 144, 159, 158, 158, 169, 159, 140, + 147, 135, 122, 102, 1, 146, 162, 161, 150, 144, 136, 139, 136, 131, 142, 134, + 52, 135, 166, 153, 136, 132, 138, 151, 116, 124, 122, 72, 107, 165, 157, 153, + 142, 142, 142, 139, 131, 136, 148, 123, 4, 144, 144, 148, 144, 144, 132, 135, + 136, 143, 135, 48, 148, 150, 127, 123, 143, 127, 110, 128, 127, 107, 130, 56, + 132, 146, 138, 135, 139, 136, 131, 131, 123, 108, 108, 112, 18, 99, 134, 114, + 119, 116, 116, 114, 116, 108, 107, 99, 53, 131, 147, 126, 140, 130, 128, 119, + 122, 116, 111, 95, 10, 127, 131, 123, 115, 127, 107, 114, 106, 123, 79, 32, + 150, 150, 150, 144, 136, 126, 128, 139, 131, 135, 130, 115, 56, 97, 144, 134, + 114, 118, 146, 132, 118, 119, 107, 55, 110, 159, 158, 154, 159, 150, 140, 144, + 157, 131, 128, 56, 107, 134, 135, 122, 106, 112, 108, 130, 104, 97, 95, 44, + 93, 132, 143, 131, 143, 123, 104, 102, 96, 92, 102, 99, 44, 116, 114, 107, + 135, 108, 107, 99, 97, 110, 91, 99, 40, 135, 128, 111, 118, 136, 138, 136, + 124, 88, 95, 73, 13, 99, 120, 110, 108, 81, 85, 95, 81, 84, 84, 46, + 102, 120, 122, 118, 104, 100, 92, 103, 92, 88, 85, 67, 14, 127, 110, 131, + 87, 76, 84, 88, 75, 84, 88, 76, 5, 134, 120, 136, 123, 103, 120, 87, + 84, 83, 64, 42, 92, 100, 120, 104, 71, 77, 108, 112, 68, 71, 68, 10, + 107, 150, 134, 122, 112, 100, 107, 99, 100, 106, 95, 84, 8, 88, 99, 71, + 49, 48, 46, 46, 48, 56, 49, 38, 20, 97, 107, 88, 95, 77, 95, 64, + 64, 67, 64, 61, 1, 103, 106, 110, 123, 79, 69, 88, 107, 76, 71, 59, + 40, 0, 112, 136, 108, 102, 88, 92, 88, 93, 72, 76, 0, 107, 103, 77, + 56, 81, 77, 80, 92, 57, 51, 20, 83, 115, 77, 102, 55, 49, 48, 48, + 48, 49, 53, 36, 20, 55, 100, 87, 91, 92, 65, 51, 52, 55, 60, 45, + 20, 80, 73, 75, 75, 69, 80, 48, 44, 44, 37, 2, 107, 85, 77, 51, + 44, 91, 88, 65, 60, 52, 48, 33, 0, 96, 38, 41, 44, 36, 34, 33, + 85, 61, 38, 25, 1, 60, 72, 77, 110, 37, 28, 51, 51, 22, 22, 18, + 0, 72, 79, 51, 40, 26, 21, 55, 41, 26, 26, 12, 6, 34, 36, 64, + 51, 25, 22, 25, 28, 25, 25, 44, 13, 16, 96, 63, 93, 83, 166, 171, + 169, 155, 158, 162, 169, 150, 142, 0, 162, 183, 169, 169, 178, 173, 159, 167, + 169, 138, 60, 132, 174, 165, 153, 154, 170, 166, 166, 167, 166, 153, 136, 17, + 163, 171, 154, 163, 159, 155, 150, 158, 158, 135, 81, 115, 166, 162, 174, 162, + 171, 166, 162, 157, 155, 159, 158, 79, 147, 165, 154, 148, 150, 144, 151, 158, + 130, 131, 111, 85, 159, 182, 135, 138, 143, 153, 139, 142, 136, 135, 134, 55, + 115, 165, 143, 146, 158, 154, 154, 153, 138, 122, 118, 8, 155, 162, 159, 158, + 155, 136, 153, 150, 154, 120, 53, 75, 131, 111, 114, 100, 103, 106, 107, 112, + 111, 112, 103, 53, 139, 158, 153, 154, 165, 167, 146, 134, 139, 119, 88, 1, + 143, 155, 159, 147, 147, 154, 144, 144, 140, 142, 135, 60, 131, 153, 151, 138, + 132, 136, 146, 134, 120, 92, 64, 108, 161, 153, 155, 159, 147, 158, 147, 138, + 132, 143, 118, 1, 142, 147, 135, 139, 143, 134, 124, 136, 127, 131, 55, 144, + 148, 127, 130, 130, 128, 111, 111, 127, 102, 122, 63, 128, 142, 140, 142, 138, + 132, 131, 132, 134, 110, 111, 110, 5, 103, 119, 108, 104, 114, 112, 108, 120, + 100, 107, 100, 61, 126, 146, 128, 140, 144, 110, 123, 122, 116, 107, 85, 20, + 116, 128, 139, 122, 100, 127, 115, 118, 120, 75, 29, 136, 153, 148, 142, 127, + 134, 136, 131, 128, 135, 132, 116, 48, 103, 143, 128, 108, 122, 127, 122, 112, + 116, 106, 55, 87, 155, 165, 148, 139, 139, 144, 154, 151, 134, 127, 63, 106, + 131, 140, 108, 112, 108, 104, 136, 106, 85, 88, 41, 93, 134, 130, 124, 130, + 135, 104, 108, 97, 95, 103, 97, 48, 110, 112, 114, 118, 110, 110, 104, 99, + 104, 91, 99, 44, 132, 130, 111, 119, 115, 119, 106, 103, 103, 102, 69, 20, + 96, 111, 118, 106, 81, 89, 92, 77, 84, 88, 49, 102, 118, 119, 115, 122, + 97, 95, 96, 103, 80, 84, 68, 6, 114, 100, 100, 114, 69, 102, 102, 76, + 73, 92, 79, 6, 122, 124, 135, 108, 99, 132, 93, 88, 81, 73, 45, 92, + 84, 114, 99, 72, 75, 100, 100, 65, 72, 65, 9, 111, 143, 127, 99, 107, + 103, 99, 95, 102, 110, 95, 83, 10, 68, 95, 55, 44, 48, 40, 51, 48, + 53, 41, 37, 18, 92, 87, 79, 83, 75, 88, 71, 73, 69, 63, 61, 0, + 100, 103, 102, 120, 69, 76, 85, 96, 87, 65, 59, 38, 0, 119, 136, 100, + 96, 88, 92, 88, 93, 71, 72, 0, 100, 106, 73, 51, 76, 51, 67, 59, + 73, 51, 24, 80, 93, 97, 77, 65, 46, 46, 48, 48, 48, 59, 42, 17, + 63, 96, 91, 81, 83, 76, 51, 52, 61, 60, 49, 21, 85, 72, 71, 63, + 69, 64, 46, 44, 41, 38, 2, 100, 77, 68, 53, 45, 89, 95, 97, 72, + 57, 40, 34, 0, 93, 55, 51, 45, 29, 34, 33, 33, 52, 38, 26, 2, + 65, 75, 65, 48, 21, 33, 33, 29, 22, 21, 17, 0, 67, 77, 32, 41, + 30, 21, 40, 34, 36, 28, 12, 5, 20, 59, 55, 52, 24, 21, 21, 21, + 14, 18, 28, 10, 18, 80, 63, 64, 92, 153, 159, 162, 158, 158, 163, 166, + 148, 126, 0, 161, 170, 167, 174, 175, 173, 163, 163, 148, 135, 57, 131, 177, + 177, 165, 169, 174, 169, 167, 166, 158, 146, 132, 0, 162, 166, 151, 167, 157, + 155, 151, 153, 159, 124, 81, 112, 162, 170, 165, 163, 167, 171, 163, 161, 163, + 157, 158, 84, 97, 157, 157, 147, 150, 148, 147, 144, 143, 122, 114, 88, 153, + 157, 146, 158, 150, 158, 154, 146, 139, 136, 112, 49, 115, 162, 143, 155, 155, + 148, 153, 154, 131, 120, 119, 24, 153, 154, 154, 147, 140, 148, 142, 148, 154, + 116, 48, 77, 134, 112, 95, 104, 104, 108, 104, 108, 106, 111, 103, 59, 138, + 157, 154, 151, 166, 150, 148, 135, 138, 112, 88, 0, 138, 146, 163, 153, 136, + 142, 146, 150, 148, 140, 136, 68, 89, 150, 155, 144, 131, 130, 142, 135, 114, + 91, 61, 110, 158, 155, 139, 147, 153, 144, 142, 146, 131, 142, 100, 0, 146, + 151, 150, 139, 143, 136, 135, 136, 131, 132, 60, 139, 144, 143, 126, 136, 118, + 106, 107, 128, 128, 123, 64, 127, 136, 134, 134, 136, 135, 138, 136, 134, 107, + 111, 89, 8, 93, 120, 103, 115, 110, 100, 110, 110, 108, 102, 99, 64, 84, + 140, 126, 144, 143, 118, 123, 108, 114, 92, 84, 20, 122, 123, 119, 108, 127, + 130, 131, 124, 124, 72, 29, 85, 154, 146, 138, 131, 135, 132, 130, 131, 135, + 111, 114, 44, 110, 142, 130, 118, 126, 116, 115, 115, 115, 97, 53, 85, 157, + 146, 155, 135, 155, 143, 150, 138, 132, 131, 71, 81, 128, 140, 107, 112, 116, + 118, 130, 104, 81, 83, 41, 93, 128, 119, 120, 114, 116, 110, 107, 112, 92, + 103, 97, 51, 111, 114, 112, 114, 106, 106, 110, 99, 96, 93, 96, 48, 123, + 127, 120, 116, 93, 114, 104, 108, 103, 92, 83, 17, 102, 116, 104, 97, 77, + 89, 85, 77, 80, 77, 48, 63, 112, 118, 115, 118, 95, 87, 106, 92, 81, + 81, 65, 8, 111, 116, 95, 104, 93, 106, 108, 72, 80, 88, 75, 10, 118, + 118, 131, 99, 118, 122, 104, 88, 73, 72, 46, 89, 97, 108, 99, 96, 69, + 96, 97, 65, 71, 65, 16, 99, 147, 123, 106, 103, 100, 107, 104, 103, 106, + 104, 77, 18, 57, 89, 49, 46, 52, 41, 46, 38, 44, 38, 37, 20, 49, + 96, 67, 102, 76, 81, 79, 77, 71, 72, 55, 0, 100, 104, 104, 77, 92, + 93, 80, 97, 93, 71, 69, 37, 0, 122, 131, 102, 96, 91, 93, 89, 79, + 69, 80, 8, 106, 95, 64, 56, 83, 79, 61, 67, 76, 49, 28, 38, 84, + 102, 100, 60, 55, 53, 48, 44, 46, 53, 38, 17, 59, 95, 81, 81, 77, + 72, 48, 46, 59, 63, 44, 21, 79, 75, 68, 61, 68, 81, 49, 46, 41, + 36, 2, 104, 87, 68, 41, 48, 41, 51, 52, 42, 56, 38, 30, 6, 81, + 46, 38, 26, 29, 26, 28, 29, 37, 29, 24, 2, 63, 69, 65, 21, 40, + 26, 69, 38, 34, 32, 16, 0, 53, 69, 38, 51, 44, 20, 32, 41, 30, + 24, 12, 5, 10, 16, 29, 38, 51, 38, 14, 12, 10, 38, 18, 8, 26, + 84, 68, 41, 32, 154, 158, 159, 157, 158, 158, 167, 155, 116, 2, 157, 175, + 163, 173, 177, 173, 165, 170, 167, 110, 51, 134, 174, 179, 167, 166, 171, 171, + 170, 169, 159, 158, 135, 1, 159, 173, 157, 167, 157, 150, 151, 155, 157, 95, + 79, 111, 142, 173, 157, 167, 157, 163, 161, 162, 144, 161, 130, 89, 96, 150, + 157, 153, 150, 148, 147, 150, 136, 120, 102, 96, 150, 178, 151, 158, 150, 144, + 158, 146, 135, 138, 99, 40, 122, 163, 142, 157, 147, 148, 159, 153, 128, 110, + 114, 13, 146, 150, 159, 154, 148, 153, 155, 148, 151, 114, 44, 77, 143, 106, + 111, 107, 128, 111, 99, 100, 104, 111, 96, 71, 89, 155, 154, 147, 162, 159, + 163, 157, 130, 107, 112, 1, 134, 153, 163, 151, 146, 143, 140, 139, 140, 139, + 135, 75, 80, 136, 142, 151, 130, 110, 135, 134, 104, 89, 55, 99, 158, 151, + 148, 146, 146, 139, 144, 131, 131, 144, 87, 0, 143, 143, 143, 135, 143, 138, + 128, 123, 140, 135, 71, 100, 130, 151, 132, 150, 123, 119, 134, 138, 100, 120, + 71, 93, 128, 134, 134, 128, 128, 127, 128, 108, 106, 112, 72, 4, 91, 122, + 119, 99, 93, 103, 97, 97, 97, 102, 96, 68, 75, 132, 140, 140, 108, 122, + 118, 104, 112, 95, 97, 18, 118, 119, 114, 102, 107, 97, 118, 115, 130, 72, + 32, 83, 153, 147, 136, 130, 131, 134, 140, 136, 138, 119, 96, 36, 106, 136, + 123, 118, 136, 115, 114, 112, 112, 95, 52, 81, 147, 144, 134, 139, 132, 140, + 146, 135, 131, 132, 72, 45, 120, 135, 106, 116, 115, 127, 122, 93, 85, 76, + 33, 92, 122, 123, 128, 114, 108, 112, 92, 96, 92, 102, 97, 53, 102, 110, + 115, 114, 108, 107, 106, 110, 99, 92, 99, 51, 71, 128, 122, 106, 111, 118, + 103, 114, 91, 92, 87, 16, 99, 116, 99, 75, 77, 91, 85, 80, 77, 81, + 65, 60, 107, 112, 112, 107, 97, 112, 84, 88, 79, 72, 64, 8, 110, 103, + 87, 96, 103, 75, 92, 73, 72, 83, 83, 13, 108, 131, 114, 95, 91, 93, + 108, 93, 72, 75, 42, 85, 91, 112, 103, 93, 71, 93, 68, 68, 72, 68, + 17, 108, 138, 122, 93, 87, 110, 88, 108, 104, 111, 96, 89, 13, 77, 81, + 48, 34, 37, 52, 37, 40, 37, 30, 33, 18, 45, 89, 110, 79, 69, 57, + 64, 80, 68, 64, 41, 13, 84, 103, 77, 80, 87, 80, 93, 80, 80, 73, + 60, 36, 0, 115, 122, 96, 95, 89, 91, 91, 77, 68, 68, 8, 93, 97, + 61, 48, 79, 79, 71, 56, 72, 49, 41, 33, 79, 99, 102, 60, 45, 46, + 44, 44, 49, 55, 37, 12, 81, 87, 79, 99, 75, 61, 48, 51, 49, 65, + 48, 24, 32, 81, 69, 65, 60, 59, 53, 46, 42, 28, 4, 103, 76, 65, + 48, 48, 56, 51, 46, 45, 59, 36, 30, 5, 79, 41, 29, 29, 26, 28, + 51, 37, 33, 29, 24, 2, 61, 61, 77, 44, 41, 52, 53, 24, 36, 22, + 16, 0, 38, 67, 41, 40, 40, 44, 46, 38, 30, 22, 10, 4, 10, 8, + 21, 24, 24, 34, 14, 10, 10, 26, 13, 4, 36, 72, 37, 36, 32, 171, + 167, 163, 162, 161, 159, 158, 158, 143, 33, 155, 167, 163, 166, 167, 174, 169, + 169, 167, 130, 44, 134, 171, 169, 169, 159, 167, 166, 169, 154, 158, 153, 134, + 1, 157, 167, 162, 153, 153, 163, 159, 163, 127, 116, 71, 124, 159, 169, 170, + 163, 127, 118, 130, 140, 140, 128, 130, 136, 128, 108, 119, 148, 153, 153, 150, + 130, 127, 114, 92, 108, 153, 175, 154, 159, 147, 158, 146, 134, 144, 132, 130, + 36, 128, 159, 139, 161, 157, 158, 151, 154, 140, 108, 116, 16, 150, 155, 159, + 153, 151, 158, 154, 154, 150, 87, 38, 77, 93, 87, 89, 106, 103, 108, 104, + 84, 88, 88, 111, 77, 83, 142, 151, 150, 148, 143, 142, 142, 123, 119, 91, + 4, 134, 130, 161, 147, 147, 143, 134, 130, 134, 128, 126, 123, 120, 83, 89, + 100, 111, 111, 127, 134, 120, 112, 60, 114, 154, 140, 142, 131, 140, 142, 142, + 140, 142, 142, 114, 5, 139, 143, 144, 131, 142, 140, 122, 139, 138, 132, 79, + 76, 89, 124, 120, 142, 131, 112, 104, 134, 110, 81, 73, 76, 87, 127, 96, + 97, 102, 100, 102, 102, 102, 114, 107, 29, 95, 114, 93, 95, 88, 103, 93, + 91, 104, 95, 95, 100, 68, 88, 123, 124, 96, 92, 106, 102, 115, 108, 95, + 13, 112, 118, 103, 119, 112, 112, 107, 112, 104, 67, 76, 69, 148, 144, 139, + 139, 131, 132, 130, 132, 131, 116, 111, 32, 110, 132, 123, 110, 115, 120, 110, + 110, 112, 97, 46, 127, 153, 131, 128, 139, 140, 140, 128, 136, 136, 131, 80, + 67, 112, 131, 104, 122, 119, 111, 108, 103, 85, 73, 30, 93, 119, 111, 93, + 95, 93, 96, 93, 96, 99, 102, 97, 57, 63, 112, 115, 114, 111, 102, 102, + 108, 95, 93, 93, 67, 65, 119, 119, 108, 112, 128, 111, 104, 83, 92, 81, + 20, 93, 96, 79, 76, 77, 77, 68, 76, 57, 71, 80, 56, 71, 97, 97, + 104, 81, 84, 79, 77, 79, 85, 60, 10, 100, 118, 122, 97, 102, 100, 71, + 96, 83, 76, 71, 12, 112, 118, 107, 124, 84, 83, 95, 91, 81, 59, 34, + 93, 93, 108, 97, 85, 72, 87, 72, 71, 71, 61, 18, 96, 143, 124, 114, + 103, 104, 108, 107, 103, 99, 97, 83, 14, 64, 37, 37, 34, 25, 34, 33, + 32, 33, 32, 28, 24, 44, 84, 65, 56, 57, 52, 59, 61, 63, 65, 57, + 2, 92, 95, 76, 75, 93, 83, 76, 76, 76, 75, 57, 33, 0, 118, 124, + 95, 93, 97, 91, 91, 97, 65, 71, 1, 88, 87, 63, 48, 77, 76, 76, + 60, 60, 48, 42, 32, 72, 87, 79, 41, 42, 52, 44, 46, 49, 52, 42, + 13, 64, 87, 93, 55, 64, 61, 45, 53, 60, 67, 52, 34, 24, 49, 79, + 77, 68, 69, 65, 55, 46, 37, 4, 93, 79, 63, 40, 46, 48, 55, 52, + 46, 57, 32, 33, 0, 75, 36, 28, 29, 25, 29, 42, 55, 33, 30, 22, + 4, 63, 88, 60, 44, 38, 59, 29, 37, 37, 22, 14, 0, 18, 49, 52, + 52, 41, 40, 44, 42, 37, 17, 10, 4, 9, 14, 9, 12, 10, 9, 10, + 10, 10, 24, 26, 4, 71, 85, 64, 46, 41, 151, 154, 151, 157, 155, 161, + 157, 144, 128, 0, 153, 159, 161, 157, 159, 159, 162, 158, 151, 124, 32, 135, + 144, 144, 140, 144, 142, 144, 151, 143, 143, 134, 131, 26, 151, 165, 165, 161, + 163, 153, 159, 157, 122, 110, 71, 119, 153, 166, 163, 127, 136, 118, 116, 128, + 138, 126, 122, 114, 122, 123, 130, 142, 139, 138, 136, 135, 111, 108, 83, 108, + 157, 157, 153, 139, 132, 140, 147, 127, 127, 130, 130, 28, 122, 161, 154, 142, + 139, 148, 155, 147, 138, 120, 114, 17, 144, 153, 162, 153, 154, 159, 155, 148, + 119, 106, 33, 83, 104, 73, 80, 72, 91, 81, 85, 85, 84, 80, 83, 84, + 110, 91, 97, 103, 107, 107, 108, 115, 127, 103, 77, 8, 128, 142, 143, 140, + 136, 104, 131, 93, 103, 104, 122, 99, 102, 115, 126, 115, 118, 123, 122, 138, + 122, 84, 46, 111, 122, 130, 123, 120, 124, 127, 128, 130, 123, 115, 114, 4, + 134, 135, 139, 134, 130, 128, 128, 127, 126, 119, 116, 118, 122, 102, 97, 102, + 103, 99, 112, 107, 118, 112, 110, 111, 111, 97, 93, 116, 112, 97, 115, 118, + 115, 112, 110, 10, 81, 107, 110, 95, 77, 80, 87, 88, 89, 91, 100, 92, + 96, 102, 106, 107, 106, 106, 107, 110, 111, 99, 81, 26, 106, 108, 106, 97, + 92, 87, 95, 81, 75, 67, 59, 68, 91, 139, 147, 108, 127, 127, 132, 114, + 115, 111, 111, 25, 106, 103, 106, 96, 100, 100, 108, 108, 111, 96, 48, 93, + 140, 130, 127, 116, 119, 119, 114, 106, 93, 96, 80, 67, 106, 116, 112, 107, + 104, 104, 104, 107, 77, 73, 26, 93, 120, 114, 107, 110, 103, 108, 102, 106, + 110, 102, 91, 93, 61, 68, 75, 99, 72, 76, 102, 104, 103, 104, 91, 83, + 60, 77, 124, 112, 111, 108, 80, 83, 93, 83, 65, 32, 84, 100, 81, 69, + 67, 65, 60, 60, 69, 59, 59, 68, 79, 81, 91, 85, 88, 83, 84, 85, + 87, 83, 64, 12, 93, 106, 114, 99, 69, 103, 99, 102, 83, 81, 77, 17, + 104, 118, 97, 88, 103, 102, 97, 97, 75, 72, 41, 93, 87, 83, 75, 87, + 68, 67, 72, 69, 68, 65, 14, 99, 130, 111, 75, 103, 102, 76, 92, 97, + 96, 92, 42, 18, 21, 36, 40, 25, 24, 36, 26, 28, 28, 34, 36, 26, + 38, 51, 53, 49, 51, 55, 57, 55, 56, 55, 56, 0, 80, 87, 84, 81, + 80, 79, 77, 67, 71, 69, 53, 30, 0, 108, 120, 93, 92, 91, 92, 91, + 97, 63, 65, 13, 77, 85, 60, 46, 41, 51, 45, 45, 32, 33, 42, 34, + 36, 38, 40, 46, 49, 48, 49, 46, 51, 49, 38, 12, 29, 65, 63, 38, + 45, 59, 56, 41, 49, 49, 51, 36, 28, 30, 41, 37, 37, 36, 37, 42, + 46, 36, 5, 64, 75, 69, 63, 60, 59, 56, 45, 51, 57, 34, 32, 1, + 71, 48, 28, 25, 24, 41, 37, 37, 33, 32, 24, 4, 57, 84, 41, 44, + 18, 41, 40, 20, 22, 33, 12, 0, 17, 30, 45, 17, 20, 25, 33, 30, + 18, 18, 9, 2, 8, 13, 12, 10, 9, 10, 9, 12, 9, 18, 12, 2, + 56, 85, 42, 24, 24, 119, 114, 132, 108, 106, 99, 131, 96, 40, 0, 72, + 88, 83, 84, 96, 92, 91, 93, 103, 91, 38, 92, 106, 103, 99, 92, 91, + 85, 87, 84, 83, 81, 67, 0, 72, 79, 76, 89, 91, 80, 83, 102, 97, + 73, 71, 79, 119, 123, 84, 80, 85, 76, 72, 71, 68, 72, 65, 67, 64, + 65, 75, 85, 89, 92, 96, 104, 107, 102, 80, 95, 114, 126, 110, 103, 110, + 122, 102, 100, 114, 103, 68, 25, 80, 110, 127, 115, 120, 119, 128, 122, 124, + 111, 110, 22, 138, 151, 153, 153, 140, 136, 144, 135, 97, 95, 25, 102, 79, + 61, 75, 61, 65, 64, 76, 68, 56, 67, 60, 59, 61, 60, 48, 75, 80, + 84, 88, 88, 93, 96, 81, 4, 53, 77, 81, 59, 57, 57, 61, 48, 45, + 41, 59, 56, 41, 40, 55, 56, 59, 45, 107, 114, 111, 71, 42, 75, 88, + 85, 83, 83, 97, 87, 79, 72, 72, 63, 34, 64, 67, 75, 91, 93, 84, + 84, 95, 93, 92, 93, 97, 95, 102, 104, 111, 107, 106, 104, 107, 106, 114, + 99, 95, 93, 114, 100, 93, 87, 110, 87, 80, 77, 110, 77, 18, 16, 79, + 63, 63, 65, 44, 55, 37, 34, 40, 48, 42, 41, 44, 44, 44, 44, 57, + 64, 71, 75, 96, 80, 75, 26, 40, 42, 48, 45, 51, 41, 48, 45, 53, + 41, 38, 59, 89, 77, 92, 96, 89, 85, 91, 91, 88, 80, 76, 22, 77, + 84, 85, 89, 85, 85, 89, 97, 89, 83, 46, 37, 107, 119, 96, 99, 102, + 114, 103, 102, 108, 112, 103, 76, 69, 75, 84, 91, 93, 95, 104, 110, 72, + 67, 24, 87, 110, 118, 114, 96, 103, 104, 103, 91, 91, 89, 80, 77, 84, + 89, 89, 88, 88, 85, 88, 88, 87, 80, 80, 85, 83, 85, 89, 91, 88, + 87, 85, 85, 84, 75, 81, 21, 84, 55, 49, 46, 42, 41, 45, 38, 34, + 33, 36, 34, 36, 52, 36, 37, 37, 41, 38, 57, 60, 55, 53, 13, 36, + 97, 95, 51, 53, 84, 84, 53, 64, 77, 65, 16, 72, 106, 102, 79, 81, + 96, 92, 73, 73, 69, 42, 91, 85, 67, 61, 56, 56, 59, 56, 57, 60, + 60, 24, 85, 107, 96, 38, 34, 34, 38, 40, 29, 30, 18, 51, 25, 1, + 2, 12, 4, 17, 2, 8, 10, 17, 14, 20, 29, 36, 48, 45, 36, 51, + 46, 49, 33, 53, 52, 40, 1, 25, 30, 32, 30, 30, 28, 29, 29, 29, + 29, 28, 26, 0, 51, 108, 106, 103, 103, 102, 100, 95, 60, 81, 16, 55, + 73, 40, 42, 38, 40, 49, 45, 44, 42, 42, 41, 40, 28, 25, 22, 20, + 21, 20, 18, 17, 16, 16, 9, 16, 14, 17, 21, 17, 20, 22, 24, 29, + 28, 24, 29, 28, 32, 30, 34, 34, 33, 30, 34, 36, 32, 6, 18, 30, + 41, 26, 30, 33, 51, 52, 59, 37, 34, 26, 9, 65, 32, 33, 36, 29, + 30, 26, 30, 24, 24, 18, 5, 14, 22, 38, 8, 8, 8, 9, 8, 5, + 5, 17, 0, 5, 5, 5, 9, 6, 8, 6, 16, 18, 22, 8, 2, 13, + 6, 16, 6, 10, 14, 14, 10, 17, 20, 12, 5, 37, 85, 30, 29, 25, + 8, 4, 8, 28, 29, 4, 4, 40, 42, 13, 44, 34, 26, 24, 21, 49, + 18, 17, 13, 53, 42, 5, 38, 9, 6, 5, 24, 6, 5, 4, 2, 4, + 2, 6, 12, 16, 10, 16, 14, 14, 16, 20, 20, 20, 79, 76, 73, 107, + 107, 123, 124, 126, 132, 138, 136, 131, 132, 131, 134, 151, 134, 134, 95, 95, + 93, 88, 80, 80, 67, 44, 46, 42, 40, 36, 36, 36, 34, 34, 37, 40, + 40, 42, 46, 55, 56, 63, 69, 73, 80, 81, 85, 92, 99, 34, 34, 73, + 76, 76, 73, 77, 77, 79, 77, 69, 28, 79, 41, 71, 40, 56, 37, 40, + 68, 85, 110, 112, 96, 100, 116, 126, 140, 130, 119, 103, 95, 87, 87, 42, + 76, 5, 32, 30, 51, 53, 61, 73, 89, 102, 138, 130, 102, 95, 135, 139, + 122, 134, 138, 107, 89, 81, 71, 44, 22, 40, 33, 17, 24, 24, 21, 12, + 13, 13, 10, 8, 5, 6, 4, 5, 2, 2, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 14, 0, + 0, 0, 25, 0, 0, 0, 38, 0, 0, 9, 26, 33, 38, 37, 92, 123, + 127, 134, 128, 122, 92, 106, 127, 126, 116, 124, 120, 112, 96, 72, 69, 36, + 59, 29, 2, 1, 26, 22, 1, 0, 17, 5, 8, 1, 6, 9, 9, 1, + 5, 4, 1, 6, 18, 21, 1, 8, 4, 2, 36, 37, 2, 2, 21, 22, + 25, 26, 33, 29, 59, 21, 20, 32, 24, 20, 22, 32, 22, 20, 22, 30, + 24, 22, 22, 56, 25, 24, 24, 30, 36, 45, 41, 65, 22, 59, 80, 79, + 61, 61, 75, 73, 59, 60, 64, 60, 55, 42, 46, 49, 37, 41, 41, 45, + 51, 46, 69, 69, 67, 63, 69, 67, 51, 48, 60, 48, 38, 34, 59, 34, + 52, 26, 44, 63, 75, 75, 76, 87, 111, 93, 69, 73, 61, 59, 64, 97, + 95, 97, 89, 72, 57, 46, 42, 36, 29, 29, 32, 46, 36, 44, 32, 36, + 44, 49, 33, 34, 26, 52, 51, 52, 56, 55, 52, 46, 53, 53, 52, 49, + 44, 88, 59, 45, 56, 44, 48, 45, 45, 40, 40, 42, 53, 29, 41, 56, + 63, 71, 72, 75, 73, 69, 75, 64, 51, 12, 34, 119, 83, 77, 60, 34, + 34, 28, 25, 10, 9, 8, 5, 16, 12, 6, 5, 17, 17, 13, 5, 17, + 17, 5, 4, 13, 14, 13, 1, 9, 2, 9, 1, 5, 2, 0, 0, 26, + 30, 36, 38, 42, 46, 49, 53, 59, 56, 13, 60, 28, 29, 22, 22, 25, + 24, 21, 18, 21, 14, 16, 38, 51, 56, 69, 71, 73, 75, 68, 60, 53, + 34, 12, 68, 80, 79, 57, 72, 67, 60, 26, 14, 13, 6, 10, 10, 10, + 9, 13, 12, 8, 5, 6, 6, 4, 6, 17, 14, 18, 12, 12, 17, 25, + 26, 29, 29, 28, 25, 1, 55, 9, 9, 16, 10, 8, 6, 6, 9, 5, + 4, 5, 10, 21, 36, 32, 33, 44, 48, 45, 42, 34, 17, 0, 48, 75, + 68, 67, 67, 61, 30, 20, 10, 6, 2, 2, 0, 4, 1, 1, 6, 6, + 6, 4, 6, 4, 9, 4, 24, 76, 42, 40, 29, 191, 187, 182, 177, 171, + 159, 166, 135, 73, 32, 80, 151, 161, 147, 136, 142, 139, 139, 144, 123, 57, + 68, 155, 161, 162, 157, 165, 163, 162, 157, 163, 147, 157, 150, 162, 165, 162, + 167, 167, 163, 161, 151, 96, 64, 80, 114, 157, 167, 162, 159, 165, 166, 163, + 155, 165, 167, 162, 124, 114, 131, 122, 143, 143, 136, 146, 139, 75, 100, 69, + 64, 154, 153, 140, 136, 139, 136, 126, 128, 126, 114, 106, 116, 134, 151, 143, + 138, 112, 88, 61, 45, 56, 41, 24, 37, 42, 36, 34, 41, 48, 37, 30, + 34, 57, 51, 64, 59, 87, 100, 108, 119, 111, 122, 131, 126, 118, 132, 118, + 119, 91, 107, 134, 116, 119, 122, 126, 123, 131, 106, 97, 9, 57, 148, 153, + 153, 157, 148, 143, 130, 131, 150, 138, 88, 116, 134, 154, 143, 140, 136, 122, + 135, 102, 89, 48, 67, 114, 119, 134, 135, 134, 115, 126, 139, 139, 96, 92, + 97, 153, 150, 155, 154, 153, 148, 154, 150, 144, 97, 106, 138, 143, 148, 142, + 130, 134, 147, 130, 130, 128, 136, 114, 33, 64, 132, 142, 103, 120, 128, 140, + 102, 124, 124, 60, 55, 53, 136, 124, 130, 132, 136, 132, 142, 135, 97, 107, + 91, 95, 110, 130, 123, 127, 120, 107, 108, 114, 79, 45, 6, 44, 108, 126, + 102, 96, 108, 99, 97, 93, 75, 42, 0, 52, 110, 142, 106, 107, 106, 103, + 116, 122, 118, 71, 48, 61, 132, 139, 127, 131, 134, 136, 99, 120, 56, 63, + 56, 112, 122, 120, 104, 107, 99, 95, 115, 108, 92, 51, 57, 64, 100, 108, + 100, 104, 71, 71, 34, 32, 26, 25, 36, 37, 45, 49, 45, 48, 48, 48, + 57, 61, 59, 55, 53, 21, 73, 110, 116, 89, 107, 84, 83, 40, 46, 33, + 21, 30, 46, 71, 77, 75, 80, 85, 83, 81, 72, 60, 68, 95, 127, 138, + 127, 123, 123, 116, 115, 114, 114, 59, 57, 87, 119, 116, 122, 116, 112, 107, + 114, 107, 81, 60, 57, 85, 87, 92, 88, 77, 72, 75, 63, 37, 29, 21, + 30, 29, 41, 41, 34, 18, 21, 18, 37, 16, 17, 42, 37, 61, 77, 79, + 93, 96, 103, 96, 104, 92, 57, 52, 72, 89, 96, 100, 97, 100, 100, 102, + 93, 108, 84, 69, 1, 99, 87, 83, 67, 93, 92, 79, 72, 67, 85, 71, + 64, 96, 107, 95, 99, 107, 100, 92, 88, 85, 79, 28, 0, 22, 81, 114, + 87, 81, 81, 85, 76, 65, 88, 72, 26, 0, 77, 92, 88, 87, 80, 63, + 24, 46, 42, 40, 2, 24, 33, 52, 57, 57, 69, 79, 84, 68, 81, 68, + 83, 68, 73, 79, 75, 71, 80, 77, 87, 72, 59, 37, 13, 79, 81, 59, + 64, 72, 52, 57, 53, 61, 55, 34, 44, 34, 69, 77, 79, 69, 80, 76, + 69, 68, 24, 6, 34, 71, 68, 53, 56, 56, 51, 21, 12, 9, 8, 6, + 1, 4, 34, 36, 36, 37, 45, 48, 49, 49, 51, 24, 6, 46, 80, 76, + 79, 76, 71, 67, 61, 56, 37, 17, 0, 56, 84, 68, 63, 59, 67, 57, + 61, 53, 30, 12, 1, 42, 59, 57, 17, 13, 12, 9, 16, 10, 5, 10, + 2, 71, 48, 106, 116, 120, 186, 179, 173, 174, 167, 173, 166, 161, 87, 42, + 162, 161, 158, 153, 161, 159, 159, 157, 154, 158, 57, 166, 173, 170, 170, 166, + 173, 167, 174, 166, 175, 161, 155, 150, 165, 158, 163, 162, 165, 157, 157, 161, + 154, 153, 85, 147, 169, 157, 162, 165, 157, 163, 158, 161, 155, 120, 131, 107, + 126, 140, 136, 139, 130, 131, 134, 134, 143, 103, 91, 127, 158, 155, 155, 161, + 151, 154, 151, 153, 150, 144, 130, 143, 142, 146, 144, 140, 144, 138, 138, 140, + 135, 138, 104, 28, 56, 127, 136, 120, 123, 127, 135, 130, 123, 84, 61, 93, + 131, 134, 138, 128, 144, 151, 154, 147, 131, 147, 134, 73, 112, 146, 158, 154, + 123, 138, 140, 131, 136, 116, 99, 12, 124, 158, 147, 144, 143, 135, 148, 124, + 128, 158, 143, 95, 119, 158, 154, 147, 151, 148, 151, 123, 138, 100, 45, 116, + 132, 143, 130, 134, 134, 140, 130, 143, 140, 143, 138, 126, 107, 111, 115, 119, + 115, 116, 118, 122, 120, 128, 124, 95, 123, 132, 120, 114, 127, 136, 134, 135, + 140, 143, 140, 34, 147, 158, 147, 144, 147, 140, 134, 135, 131, 130, 72, 45, + 104, 123, 128, 127, 136, 136, 139, 138, 132, 123, 111, 85, 93, 128, 139, 127, + 130, 130, 124, 116, 118, 88, 49, 20, 123, 134, 135, 126, 130, 132, 128, 124, + 123, 107, 48, 2, 153, 155, 151, 150, 153, 151, 146, 139, 154, 147, 108, 51, + 138, 153, 151, 143, 143, 132, 138, 130, 127, 87, 63, 114, 136, 122, 116, 114, + 131, 132, 126, 128, 127, 128, 119, 56, 100, 119, 122, 118, 116, 112, 108, 100, + 73, 51, 24, 80, 100, 81, 93, 96, 92, 102, 92, 92, 85, 76, 61, 46, + 17, 100, 119, 107, 104, 102, 108, 119, 100, 112, 95, 77, 99, 76, 96, 103, + 111, 100, 114, 97, 107, 84, 69, 75, 115, 138, 108, 111, 111, 107, 95, 110, + 104, 93, 99, 77, 112, 106, 111, 103, 102, 100, 108, 103, 99, 91, 103, 92, + 99, 100, 102, 88, 102, 96, 97, 87, 81, 80, 76, 107, 100, 103, 106, 110, + 112, 108, 114, 120, 122, 57, 63, 80, 136, 139, 140, 138, 140, 136, 131, 134, + 132, 88, 52, 79, 106, 102, 97, 96, 89, 91, 81, 79, 83, 93, 57, 10, + 72, 91, 81, 69, 69, 77, 65, 81, 77, 61, 65, 71, 64, 77, 80, 77, + 67, 73, 73, 77, 69, 91, 34, 0, 112, 118, 120, 122, 116, 114, 111, 100, + 108, 103, 84, 48, 0, 81, 89, 95, 97, 97, 92, 87, 77, 69, 40, 9, + 63, 95, 99, 102, 103, 102, 102, 93, 84, 81, 42, 64, 93, 95, 95, 96, + 89, 81, 71, 71, 73, 60, 42, 14, 80, 85, 61, 56, 49, 55, 72, 64, + 79, 69, 30, 24, 72, 93, 91, 91, 89, 80, 76, 83, 80, 29, 8, 57, + 75, 75, 75, 77, 71, 71, 60, 57, 52, 40, 17, 40, 75, 91, 88, 85, + 81, 83, 80, 69, 76, 55, 32, 6, 68, 71, 61, 59, 59, 45, 46, 34, + 44, 55, 21, 2, 40, 83, 71, 59, 42, 46, 45, 46, 61, 49, 17, 1, + 61, 61, 69, 59, 55, 38, 48, 53, 51, 9, 12, 1, 69, 64, 85, 84, + 92, 191, 191, 185, 178, 175, 175, 150, 134, 87, 46, 155, 161, 153, 153, 154, + 111, 153, 151, 148, 80, 64, 171, 183, 182, 190, 201, 205, 209, 214, 217, 220, + 224, 228, 230, 226, 226, 226, 226, 218, 209, 189, 173, 167, 161, 142, 167, 159, + 158, 154, 148, 151, 150, 135, 112, 118, 128, 114, 96, 130, 144, 157, 142, 139, + 143, 144, 146, 144, 139, 65, 151, 161, 153, 154, 148, 148, 151, 148, 144, 146, + 147, 138, 139, 150, 154, 153, 147, 144, 139, 138, 146, 147, 131, 111, 34, 142, + 146, 157, 157, 148, 153, 153, 150, 150, 131, 56, 118, 162, 154, 138, 157, 150, + 138, 138, 150, 150, 151, 132, 77, 110, 151, 159, 148, 147, 150, 150, 148, 132, + 119, 108, 9, 132, 153, 154, 143, 134, 143, 130, 147, 138, 151, 144, 76, 107, + 148, 142, 148, 140, 142, 126, 126, 136, 107, 57, 126, 122, 128, 138, 124, 139, + 140, 147, 146, 138, 127, 97, 130, 123, 139, 139, 140, 139, 135, 127, 114, 112, + 104, 88, 118, 144, 134, 135, 146, 143, 140, 144, 143, 142, 140, 135, 33, 150, + 158, 131, 127, 130, 124, 126, 120, 131, 128, 72, 46, 103, 128, 132, 126, 126, + 122, 127, 127, 135, 124, 115, 67, 85, 126, 118, 123, 131, 132, 119, 108, 112, + 95, 81, 29, 123, 127, 128, 127, 127, 120, 120, 120, 114, 110, 64, 1, 131, + 150, 151, 153, 148, 151, 153, 146, 143, 147, 124, 60, 146, 143, 142, 130, 123, + 126, 115, 120, 120, 127, 112, 132, 119, 112, 116, 106, 115, 92, 96, 95, 99, + 80, 79, 64, 123, 142, 116, 119, 118, 122, 112, 108, 110, 64, 22, 89, 96, + 85, 99, 91, 84, 95, 89, 84, 87, 69, 65, 56, 22, 97, 130, 104, 104, + 118, 106, 107, 104, 93, 103, 59, 67, 127, 122, 120, 128, 123, 118, 112, 106, + 93, 76, 71, 127, 132, 103, 106, 106, 99, 92, 103, 116, 111, 116, 112, 122, + 120, 130, 123, 122, 123, 147, 123, 128, 123, 127, 116, 126, 126, 128, 122, 120, + 123, 122, 122, 104, 85, 59, 108, 108, 106, 110, 106, 103, 92, 103, 102, 97, + 69, 48, 108, 143, 135, 132, 130, 136, 134, 140, 128, 111, 104, 61, 81, 100, + 103, 87, 85, 93, 84, 83, 91, 93, 85, 56, 10, 61, 95, 83, 93, 75, + 89, 79, 92, 92, 80, 68, 61, 81, 99, 92, 107, 104, 100, 88, 106, 93, + 85, 36, 9, 104, 116, 110, 110, 112, 111, 107, 106, 99, 114, 87, 42, 0, + 88, 96, 89, 79, 79, 67, 83, 91, 73, 29, 14, 60, 102, 103, 93, 77, + 71, 88, 68, 67, 52, 45, 76, 100, 87, 87, 73, 65, 71, 83, 75, 65, + 42, 37, 9, 79, 88, 80, 59, 60, 67, 72, 69, 67, 64, 32, 45, 88, + 92, 87, 73, 87, 69, 68, 72, 85, 29, 8, 65, 77, 56, 55, 49, 41, + 44, 40, 45, 63, 53, 18, 36, 81, 77, 84, 91, 72, 60, 61, 77, 68, + 67, 30, 8, 67, 57, 38, 63, 49, 48, 41, 34, 40, 33, 18, 0, 55, + 77, 59, 67, 55, 42, 44, 68, 49, 45, 18, 1, 30, 65, 57, 65, 57, + 61, 51, 57, 46, 20, 13, 1, 83, 103, 84, 75, 84, 179, 171, 175, 171, + 166, 154, 157, 166, 92, 68, 106, 158, 154, 127, 122, 119, 120, 122, 116, 153, + 154, 178, 221, 220, 228, 229, 226, 225, 226, 229, 233, 236, 238, 240, 240, 236, + 234, 236, 234, 234, 232, 232, 216, 178, 167, 161, 173, 179, 205, 179, 167, 148, + 138, 104, 119, 122, 111, 96, 146, 157, 150, 151, 143, 151, 157, 155, 143, 153, + 132, 150, 144, 151, 115, 155, 148, 153, 147, 153, 143, 143, 140, 146, 153, 155, + 147, 147, 143, 161, 158, 131, 123, 131, 107, 34, 148, 153, 155, 155, 157, 147, + 147, 148, 143, 130, 83, 126, 148, 153, 151, 148, 146, 134, 144, 148, 154, 140, + 127, 69, 103, 150, 163, 150, 146, 150, 153, 142, 132, 114, 95, 10, 116, 144, + 147, 143, 140, 143, 131, 118, 157, 157, 136, 83, 114, 150, 147, 139, 134, 131, + 124, 130, 140, 111, 80, 80, 126, 130, 138, 146, 151, 132, 134, 136, 123, 126, + 89, 122, 143, 127, 143, 139, 140, 127, 134, 135, 134, 95, 81, 127, 142, 131, + 139, 132, 139, 138, 112, 138, 139, 95, 97, 45, 99, 161, 132, 123, 127, 112, + 119, 123, 130, 126, 77, 42, 103, 123, 127, 116, 119, 120, 122, 124, 138, 123, + 108, 61, 92, 118, 114, 103, 134, 139, 119, 110, 118, 83, 81, 26, 93, 136, + 126, 124, 127, 116, 128, 128, 111, 102, 55, 6, 84, 148, 142, 134, 130, 130, + 135, 136, 128, 124, 130, 126, 131, 143, 144, 136, 127, 139, 120, 128, 110, 116, + 104, 115, 106, 116, 115, 110, 108, 112, 114, 111, 106, 110, 106, 108, 111, 122, + 130, 100, 108, 108, 132, 108, 106, 60, 20, 79, 89, 85, 92, 97, 99, 93, + 93, 88, 80, 71, 57, 51, 20, 95, 115, 100, 108, 118, 118, 118, 114, 104, + 103, 55, 111, 135, 130, 122, 111, 112, 110, 103, 106, 81, 75, 80, 110, 128, + 96, 107, 100, 99, 104, 136, 206, 209, 201, 213, 224, 224, 212, 221, 230, 234, + 230, 228, 233, 244, 229, 230, 225, 242, 221, 212, 216, 246, 222, 167, 112, 84, + 63, 107, 127, 139, 136, 132, 132, 122, 116, 115, 99, 71, 63, 123, 138, 130, + 128, 134, 134, 143, 138, 110, 122, 97, 69, 69, 100, 93, 87, 83, 88, 85, + 83, 83, 93, 83, 46, 6, 71, 108, 96, 112, 88, 79, 91, 85, 76, 77, + 68, 36, 89, 99, 91, 93, 96, 95, 73, 96, 95, 87, 32, 9, 68, 112, + 107, 100, 96, 96, 89, 93, 97, 107, 85, 41, 0, 84, 84, 80, 61, 81, + 80, 75, 77, 79, 44, 17, 72, 100, 87, 83, 81, 76, 83, 56, 64, 56, + 33, 72, 91, 77, 71, 68, 84, 67, 67, 57, 49, 52, 38, 13, 76, 88, + 80, 76, 83, 84, 56, 64, 60, 64, 22, 36, 92, 91, 84, 61, 81, 72, + 85, 83, 80, 30, 9, 67, 61, 51, 51, 41, 41, 41, 41, 41, 57, 51, + 20, 32, 76, 75, 81, 100, 75, 56, 61, 65, 56, 51, 30, 9, 60, 67, + 41, 71, 41, 52, 37, 40, 49, 34, 17, 0, 56, 77, 61, 55, 49, 52, + 48, 64, 44, 26, 18, 1, 49, 46, 56, 57, 42, 45, 44, 34, 42, 36, + 13, 2, 67, 61, 59, 28, 17, 163, 163, 166, 162, 162, 154, 169, 157, 93, + 59, 114, 161, 157, 127, 124, 110, 103, 161, 167, 197, 214, 222, 228, 236, 233, + 233, 229, 229, 224, 230, 237, 238, 238, 236, 234, 233, 230, 225, 229, 230, 232, + 229, 233, 230, 221, 225, 222, 209, 202, 216, 157, 144, 131, 106, 123, 123, 114, + 110, 163, 193, 198, 194, 198, 205, 209, 210, 208, 208, 204, 206, 208, 177, 166, + 162, 155, 159, 153, 150, 154, 151, 169, 185, 199, 205, 202, 195, 190, 155, 139, + 131, 108, 130, 103, 44, 104, 151, 146, 148, 146, 147, 140, 148, 153, 132, 84, + 96, 150, 159, 142, 144, 148, 136, 134, 138, 154, 140, 128, 67, 112, 148, 158, + 147, 146, 147, 151, 139, 138, 115, 103, 14, 112, 151, 157, 150, 143, 155, 124, + 148, 148, 148, 135, 67, 116, 139, 148, 134, 134, 139, 128, 143, 134, 111, 76, + 75, 140, 146, 127, 131, 132, 143, 131, 135, 128, 116, 81, 127, 143, 135, 134, + 131, 130, 134, 148, 140, 134, 120, 76, 130, 140, 140, 126, 138, 136, 135, 138, + 130, 136, 138, 128, 49, 102, 158, 135, 123, 118, 106, 114, 111, 127, 126, 77, + 38, 104, 123, 122, 112, 112, 112, 115, 119, 128, 116, 102, 65, 84, 112, 110, + 103, 124, 110, 103, 108, 114, 85, 48, 10, 95, 139, 118, 116, 124, 127, 122, + 118, 115, 100, 55, 4, 134, 142, 136, 134, 138, 135, 128, 132, 157, 194, 205, + 209, 218, 222, 230, 232, 236, 237, 248, 248, 246, 238, 238, 224, 232, 236, 232, + 230, 225, 228, 222, 224, 204, 205, 187, 206, 198, 228, 191, 182, 177, 178, 199, + 155, 114, 63, 26, 85, 77, 92, 99, 91, 89, 97, 79, 81, 55, 68, 49, + 42, 13, 93, 122, 106, 111, 122, 122, 119, 104, 92, 104, 42, 116, 132, 124, + 108, 107, 114, 118, 111, 115, 89, 71, 56, 106, 126, 93, 99, 96, 97, 97, + 142, 199, 205, 206, 213, 213, 217, 216, 213, 217, 221, 224, 225, 226, 225, 224, + 222, 221, 213, 214, 210, 208, 209, 202, 154, 106, 79, 22, 100, 118, 122, 126, + 124, 123, 136, 135, 107, 106, 72, 71, 97, 136, 128, 144, 140, 124, 120, 97, + 103, 110, 103, 67, 64, 104, 96, 83, 87, 85, 85, 83, 87, 75, 80, 60, + 1, 73, 108, 83, 97, 80, 89, 88, 107, 71, 71, 67, 46, 79, 104, 99, + 104, 106, 104, 103, 93, 81, 81, 32, 0, 71, 112, 99, 91, 88, 93, 104, + 104, 107, 111, 91, 40, 0, 79, 80, 77, 65, 95, 76, 76, 80, 64, 38, + 10, 60, 106, 92, 77, 72, 68, 83, 60, 59, 44, 34, 68, 97, 69, 83, + 87, 76, 68, 63, 68, 72, 49, 38, 18, 72, 77, 71, 75, 65, 65, 59, + 69, 57, 63, 24, 40, 89, 83, 69, 80, 75, 95, 83, 81, 77, 32, 12, + 55, 76, 53, 52, 42, 40, 38, 38, 40, 40, 40, 18, 2, 75, 76, 88, + 95, 56, 63, 64, 57, 67, 51, 33, 10, 53, 68, 41, 75, 29, 52, 37, + 34, 44, 30, 17, 0, 42, 75, 67, 69, 53, 55, 45, 63, 49, 29, 17, + 1, 46, 59, 55, 29, 34, 32, 33, 24, 37, 18, 13, 8, 68, 60, 45, + 56, 18, 161, 161, 162, 163, 161, 154, 167, 151, 93, 65, 153, 150, 123, 119, + 128, 158, 159, 205, 233, 234, 236, 237, 230, 228, 228, 228, 204, 175, 162, 167, + 170, 163, 147, 136, 131, 127, 116, 112, 120, 128, 143, 191, 214, 228, 228, 228, + 225, 221, 221, 209, 157, 139, 119, 106, 124, 104, 115, 151, 175, 206, 205, 213, + 204, 214, 220, 218, 216, 226, 224, 229, 226, 225, 222, 225, 221, 218, 213, 206, + 210, 214, 218, 216, 222, 214, 213, 208, 208, 155, 135, 126, 102, 127, 104, 48, + 106, 154, 139, 140, 161, 154, 153, 151, 147, 131, 85, 67, 142, 154, 153, 148, + 150, 155, 155, 155, 155, 139, 128, 63, 107, 162, 163, 144, 150, 147, 153, 139, + 138, 115, 96, 17, 126, 153, 144, 146, 140, 148, 138, 142, 151, 142, 138, 67, + 118, 138, 144, 136, 134, 140, 138, 139, 135, 110, 77, 61, 139, 131, 131, 134, + 140, 130, 142, 135, 120, 108, 77, 116, 139, 131, 127, 131, 139, 136, 134, 136, + 126, 95, 77, 131, 143, 150, 140, 139, 120, 143, 136, 127, 138, 135, 131, 53, + 104, 155, 138, 118, 116, 104, 107, 119, 128, 127, 80, 37, 111, 116, 118, 115, + 115, 110, 110, 120, 124, 115, 106, 64, 89, 108, 107, 97, 95, 132, 131, 106, + 111, 88, 48, 21, 106, 139, 124, 124, 123, 118, 116, 102, 115, 119, 51, 4, + 148, 148, 135, 132, 139, 127, 136, 199, 202, 216, 212, 214, 220, 232, 233, 234, + 238, 241, 245, 248, 248, 244, 242, 242, 226, 236, 240, 229, 224, 228, 233, 229, + 221, 226, 216, 213, 205, 214, 206, 201, 186, 212, 199, 169, 107, 61, 28, 83, + 76, 92, 93, 88, 93, 87, 85, 81, 59, 65, 48, 40, 12, 100, 119, 106, + 115, 112, 122, 122, 112, 93, 95, 37, 115, 128, 110, 119, 119, 120, 127, 122, + 119, 104, 76, 81, 103, 131, 100, 104, 107, 96, 95, 116, 144, 190, 201, 206, + 208, 204, 210, 201, 205, 212, 214, 216, 222, 222, 224, 216, 210, 217, 209, 201, + 197, 204, 178, 116, 97, 51, 33, 106, 122, 107, 120, 120, 126, 126, 134, 110, + 110, 73, 67, 99, 132, 120, 116, 97, 99, 103, 97, 103, 107, 114, 83, 61, + 100, 96, 89, 80, 84, 85, 85, 79, 87, 100, 57, 8, 95, 84, 99, 80, + 84, 91, 96, 87, 87, 75, 65, 45, 81, 108, 87, 103, 89, 87, 85, 87, + 92, 87, 29, 1, 114, 103, 95, 99, 102, 100, 100, 108, 107, 104, 88, 57, + 1, 77, 96, 73, 102, 75, 63, 77, 72, 65, 36, 6, 56, 103, 89, 85, + 80, 83, 81, 71, 55, 49, 33, 72, 95, 67, 75, 89, 77, 68, 71, 71, + 57, 53, 42, 24, 75, 91, 83, 84, 85, 68, 59, 63, 60, 75, 28, 48, + 85, 79, 63, 87, 92, 95, 77, 81, 69, 36, 10, 59, 71, 59, 51, 41, + 40, 51, 37, 42, 53, 60, 20, 4, 69, 69, 63, 56, 59, 56, 56, 53, + 55, 53, 34, 12, 46, 72, 51, 87, 28, 51, 32, 46, 40, 36, 20, 4, + 53, 73, 69, 64, 52, 45, 52, 52, 53, 38, 20, 0, 48, 63, 36, 30, + 18, 22, 22, 26, 33, 14, 13, 1, 63, 56, 34, 13, 2, 173, 161, 158, + 158, 154, 154, 170, 140, 102, 69, 153, 159, 122, 131, 159, 179, 225, 236, 233, + 232, 233, 234, 229, 216, 185, 150, 118, 107, 103, 104, 104, 104, 104, 104, 103, + 106, 106, 107, 104, 107, 108, 111, 126, 136, 166, 197, 206, 214, 202, 162, 140, + 124, 93, 104, 115, 110, 118, 159, 178, 232, 234, 218, 229, 224, 232, 228, 232, + 230, 225, 225, 230, 234, 232, 229, 226, 221, 220, 228, 222, 221, 222, 222, 225, + 220, 216, 216, 208, 146, 127, 116, 99, 122, 107, 55, 139, 150, 143, 150, 158, + 139, 150, 151, 154, 155, 126, 56, 135, 153, 159, 161, 161, 157, 157, 151, 150, + 135, 127, 63, 100, 154, 158, 150, 146, 146, 154, 142, 140, 132, 100, 16, 120, + 151, 147, 153, 146, 148, 151, 153, 154, 128, 116, 53, 112, 134, 147, 135, 146, + 139, 136, 134, 136, 120, 110, 63, 131, 132, 135, 132, 128, 132, 135, 134, 118, + 89, 69, 112, 131, 127, 123, 134, 140, 134, 132, 128, 120, 81, 72, 124, 138, + 142, 142, 135, 122, 138, 131, 138, 115, 136, 126, 59, 79, 108, 155, 136, 114, + 110, 107, 116, 132, 119, 80, 44, 99, 114, 115, 106, 107, 104, 103, 127, 127, + 122, 100, 61, 80, 102, 102, 95, 92, 131, 108, 106, 108, 91, 67, 25, 110, + 123, 118, 128, 123, 126, 123, 115, 118, 104, 57, 1, 118, 146, 134, 134, 132, + 126, 189, 201, 208, 214, 217, 221, 220, 225, 230, 234, 234, 237, 241, 245, 244, + 246, 245, 244, 238, 230, 240, 233, 230, 232, 222, 222, 225, 229, 220, 220, 209, + 205, 202, 199, 195, 202, 159, 138, 73, 63, 28, 83, 81, 87, 99, 92, 88, + 81, 76, 79, 59, 60, 55, 46, 14, 75, 127, 108, 118, 108, 114, 119, 112, + 106, 88, 45, 112, 119, 126, 131, 132, 143, 139, 135, 128, 120, 104, 87, 114, + 136, 106, 104, 88, 87, 99, 93, 104, 112, 122, 122, 120, 112, 110, 107, 110, + 108, 108, 108, 114, 118, 118, 114, 114, 116, 111, 108, 108, 107, 106, 92, 87, + 49, 53, 103, 119, 106, 106, 126, 119, 120, 124, 108, 104, 76, 73, 93, 130, + 132, 112, 112, 132, 118, 120, 126, 92, 102, 102, 57, 89, 106, 95, 81, 85, + 80, 85, 91, 87, 91, 53, 9, 67, 93, 89, 80, 81, 80, 76, 85, 91, + 79, 63, 45, 72, 111, 77, 108, 110, 96, 100, 97, 96, 75, 38, 8, 111, + 112, 102, 106, 97, 102, 100, 112, 106, 106, 87, 44, 1, 84, 96, 80, 80, + 75, 76, 65, 79, 49, 30, 16, 56, 97, 93, 71, 84, 77, 69, 67, 57, + 56, 37, 75, 95, 81, 81, 84, 75, 67, 67, 84, 60, 41, 42, 16, 81, + 87, 79, 65, 76, 72, 57, 67, 56, 63, 25, 68, 81, 63, 81, 80, 77, + 73, 83, 84, 72, 32, 14, 36, 56, 68, 52, 52, 40, 55, 52, 38, 49, + 60, 20, 24, 65, 76, 65, 55, 55, 59, 55, 55, 55, 51, 36, 13, 48, + 72, 42, 59, 32, 44, 32, 49, 41, 30, 17, 1, 64, 75, 72, 71, 52, + 48, 60, 56, 55, 41, 18, 0, 30, 48, 29, 18, 13, 10, 12, 20, 26, + 16, 13, 1, 64, 77, 28, 2, 25, 189, 165, 163, 163, 162, 159, 158, 162, + 102, 87, 118, 118, 134, 162, 198, 229, 240, 233, 233, 225, 216, 195, 170, 126, + 110, 103, 104, 104, 106, 104, 106, 106, 112, 111, 103, 92, 88, 93, 97, 107, + 128, 108, 111, 114, 114, 122, 126, 127, 130, 127, 131, 102, 87, 104, 116, 100, + 111, 143, 162, 204, 212, 208, 174, 142, 128, 134, 138, 134, 131, 134, 140, 167, + 195, 204, 210, 216, 221, 220, 213, 201, 206, 213, 216, 212, 201, 159, 138, 123, + 119, 89, 89, 120, 99, 55, 97, 147, 148, 150, 150, 157, 157, 151, 151, 157, + 103, 68, 122, 153, 151, 153, 155, 151, 153, 153, 151, 128, 130, 56, 96, 139, + 158, 158, 159, 154, 155, 143, 140, 120, 92, 16, 116, 146, 148, 151, 144, 150, + 146, 147, 144, 142, 89, 42, 112, 134, 146, 128, 138, 142, 139, 134, 128, 128, + 103, 61, 95, 138, 132, 139, 130, 132, 132, 126, 116, 88, 61, 106, 144, 132, + 126, 134, 135, 136, 132, 134, 123, 83, 65, 130, 127, 138, 135, 135, 134, 139, + 138, 136, 114, 97, 115, 67, 72, 111, 134, 147, 123, 110, 103, 118, 126, 123, + 88, 38, 96, 118, 110, 112, 103, 103, 123, 147, 118, 114, 95, 41, 88, 106, + 88, 87, 93, 93, 102, 102, 99, 81, 68, 28, 80, 138, 130, 131, 123, 112, + 114, 124, 114, 108, 51, 8, 88, 143, 134, 132, 139, 124, 122, 161, 201, 208, + 204, 183, 139, 130, 126, 123, 128, 123, 111, 106, 110, 111, 114, 114, 112, 110, + 106, 107, 110, 110, 107, 102, 103, 111, 116, 112, 111, 104, 99, 104, 84, 79, + 77, 76, 65, 33, 22, 80, 88, 92, 87, 91, 85, 80, 80, 79, 55, 56, + 49, 40, 12, 92, 108, 111, 106, 112, 118, 103, 108, 99, 79, 48, 115, 123, + 139, 153, 181, 187, 195, 178, 177, 158, 135, 123, 111, 135, 97, 110, 95, 84, + 87, 89, 104, 95, 87, 92, 96, 97, 96, 95, 96, 95, 95, 95, 96, 96, + 97, 99, 99, 96, 97, 99, 96, 93, 97, 96, 36, 29, 48, 104, 114, 107, + 116, 112, 112, 116, 128, 107, 102, 88, 60, 72, 115, 126, 108, 95, 122, 130, + 127, 102, 99, 103, 89, 64, 75, 95, 97, 85, 87, 87, 85, 85, 87, 87, + 41, 6, 64, 100, 93, 77, 85, 81, 76, 83, 92, 72, 63, 29, 89, 106, + 88, 91, 108, 111, 93, 107, 96, 72, 30, 6, 69, 102, 92, 104, 108, 96, + 102, 104, 104, 106, 84, 42, 2, 79, 75, 93, 80, 64, 55, 69, 45, 44, + 37, 18, 57, 91, 91, 83, 89, 77, 72, 68, 68, 44, 24, 84, 91, 83, + 89, 88, 69, 68, 79, 65, 55, 45, 41, 21, 83, 79, 65, 79, 67, 60, + 63, 69, 55, 57, 21, 48, 89, 87, 91, 73, 48, 76, 77, 95, 73, 29, + 16, 29, 56, 68, 55, 51, 48, 55, 36, 37, 51, 49, 22, 21, 59, 75, + 69, 61, 65, 59, 60, 60, 57, 52, 40, 14, 25, 67, 49, 37, 33, 38, + 33, 45, 46, 33, 17, 1, 40, 73, 56, 64, 48, 57, 46, 48, 55, 28, + 18, 0, 57, 55, 18, 17, 12, 21, 10, 16, 28, 22, 9, 2, 64, 81, + 20, 6, 51, 177, 178, 169, 173, 161, 170, 157, 158, 104, 81, 120, 128, 170, + 218, 236, 236, 234, 237, 236, 191, 143, 114, 106, 106, 107, 110, 114, 102, 118, + 116, 108, 87, 67, 53, 56, 53, 61, 60, 63, 67, 85, 97, 126, 115, 116, + 119, 119, 120, 120, 128, 126, 83, 77, 89, 110, 106, 116, 124, 140, 134, 142, + 127, 127, 110, 103, 100, 107, 99, 103, 96, 104, 100, 103, 110, 111, 115, 115, + 115, 114, 111, 112, 116, 122, 124, 118, 119, 112, 110, 81, 85, 108, 112, 99, + 57, 85, 134, 154, 151, 159, 153, 155, 155, 151, 146, 108, 80, 100, 144, 148, + 151, 146, 148, 151, 151, 147, 127, 124, 44, 104, 126, 150, 153, 150, 147, 142, + 146, 132, 126, 97, 18, 118, 142, 151, 148, 151, 148, 148, 151, 140, 138, 114, + 44, 110, 130, 146, 143, 135, 138, 127, 130, 106, 103, 97, 75, 83, 84, 107, + 104, 100, 103, 107, 107, 116, 108, 64, 114, 140, 128, 123, 131, 132, 132, 132, + 131, 127, 93, 57, 127, 127, 127, 124, 120, 128, 126, 131, 128, 130, 128, 126, + 96, 73, 112, 128, 123, 103, 99, 102, 119, 120, 120, 89, 33, 106, 124, 115, + 110, 102, 99, 123, 136, 116, 110, 96, 45, 80, 99, 88, 87, 80, 83, 85, + 92, 84, 79, 55, 29, 76, 136, 112, 83, 103, 119, 120, 103, 108, 110, 48, + 8, 128, 135, 132, 128, 131, 128, 131, 131, 130, 128, 126, 118, 116, 112, 112, + 111, 111, 106, 100, 97, 99, 97, 99, 99, 97, 95, 93, 92, 92, 91, 92, + 84, 88, 88, 87, 87, 88, 83, 83, 84, 77, 72, 56, 56, 32, 24, 30, + 77, 75, 88, 83, 72, 57, 60, 51, 40, 55, 51, 56, 41, 6, 93, 128, + 114, 110, 110, 108, 111, 103, 96, 49, 75, 124, 138, 186, 202, 213, 212, 205, + 197, 201, 201, 197, 178, 151, 132, 103, 79, 80, 87, 72, 81, 72, 84, 83, + 81, 92, 103, 103, 102, 103, 102, 99, 100, 104, 106, 107, 107, 104, 104, 106, + 106, 103, 107, 83, 30, 38, 32, 14, 96, 104, 115, 100, 110, 97, 93, 89, + 111, 95, 84, 61, 77, 96, 106, 100, 119, 108, 107, 96, 91, 88, 89, 99, + 67, 67, 83, 108, 103, 99, 92, 99, 100, 87, 83, 63, 5, 72, 100, 100, + 92, 84, 91, 83, 87, 100, 60, 63, 33, 69, 108, 93, 102, 89, 72, 75, + 84, 85, 80, 30, 2, 71, 108, 95, 97, 97, 97, 103, 106, 99, 100, 95, + 38, 2, 76, 89, 67, 55, 56, 49, 45, 59, 45, 34, 18, 60, 91, 89, + 93, 75, 67, 76, 72, 72, 48, 28, 63, 85, 76, 81, 72, 69, 71, 68, + 68, 67, 44, 41, 24, 87, 79, 75, 61, 63, 60, 56, 64, 59, 32, 20, + 73, 76, 92, 73, 53, 65, 61, 80, 63, 73, 26, 20, 24, 55, 61, 59, + 64, 57, 49, 38, 38, 40, 45, 18, 4, 63, 72, 75, 59, 61, 61, 53, + 49, 53, 56, 32, 20, 21, 63, 55, 37, 42, 41, 33, 40, 37, 26, 17, + 1, 56, 71, 65, 53, 41, 46, 45, 53, 55, 40, 32, 1, 30, 45, 14, + 25, 14, 24, 14, 16, 29, 17, 9, 13, 55, 52, 26, 42, 95, 144, 140, + 143, 135, 124, 130, 128, 110, 83, 142, 132, 169, 226, 241, 238, 238, 236, 240, + 198, 131, 108, 110, 111, 116, 116, 111, 115, 120, 118, 92, 61, 48, 44, 45, + 48, 48, 56, 57, 61, 64, 69, 81, 103, 119, 154, 115, 120, 122, 124, 132, + 118, 79, 75, 76, 97, 103, 85, 127, 120, 119, 114, 106, 114, 111, 110, 110, + 108, 107, 108, 106, 104, 104, 104, 106, 104, 103, 104, 103, 104, 104, 103, 104, + 110, 108, 108, 111, 95, 72, 76, 75, 106, 108, 99, 61, 72, 128, 143, 154, + 139, 107, 122, 108, 104, 97, 96, 107, 84, 103, 123, 140, 136, 139, 139, 139, + 142, 122, 127, 41, 103, 120, 148, 150, 150, 146, 144, 128, 124, 122, 92, 24, + 123, 128, 131, 130, 127, 127, 127, 132, 135, 116, 112, 44, 104, 126, 138, 131, + 104, 120, 118, 107, 108, 115, 106, 103, 108, 120, 102, 123, 116, 118, 104, 119, + 116, 75, 64, 97, 115, 131, 115, 122, 126, 126, 119, 126, 122, 91, 57, 128, + 126, 126, 119, 123, 123, 123, 119, 119, 115, 122, 112, 114, 76, 87, 95, 97, + 99, 102, 107, 110, 120, 119, 92, 30, 110, 107, 116, 107, 100, 97, 95, 100, + 107, 107, 85, 64, 77, 92, 79, 72, 75, 76, 79, 77, 79, 77, 40, 30, + 59, 110, 118, 89, 104, 115, 114, 108, 115, 120, 45, 4, 122, 139, 132, 131, + 126, 124, 128, 123, 119, 108, 111, 106, 89, 99, 81, 87, 93, 83, 115, 114, + 111, 112, 111, 111, 111, 111, 108, 107, 104, 107, 104, 100, 96, 103, 99, 97, + 102, 97, 77, 48, 32, 28, 24, 24, 21, 14, 34, 29, 40, 42, 37, 34, + 34, 37, 36, 38, 36, 42, 40, 34, 6, 68, 115, 118, 116, 114, 122, 115, + 102, 95, 42, 85, 130, 174, 217, 216, 209, 218, 206, 208, 214, 210, 194, 190, + 166, 102, 88, 96, 87, 92, 89, 88, 77, 88, 96, 57, 65, 64, 102, 163, + 110, 116, 122, 119, 131, 126, 128, 132, 134, 134, 134, 131, 116, 92, 61, 26, + 45, 33, 20, 75, 99, 104, 106, 104, 107, 104, 108, 104, 100, 96, 93, 99, + 100, 79, 79, 84, 77, 76, 79, 89, 91, 79, 72, 80, 79, 77, 80, 76, + 76, 75, 61, 73, 71, 73, 40, 9, 67, 81, 84, 88, 87, 87, 84, 87, + 85, 72, 59, 30, 102, 112, 92, 89, 68, 87, 87, 77, 76, 79, 29, 4, + 99, 103, 93, 97, 91, 100, 92, 96, 92, 96, 79, 59, 2, 75, 87, 59, + 68, 48, 53, 46, 49, 44, 32, 8, 60, 84, 83, 80, 60, 64, 73, 73, + 55, 44, 25, 60, 72, 73, 68, 68, 71, 71, 71, 72, 67, 45, 51, 30, + 92, 79, 61, 60, 61, 59, 49, 60, 52, 28, 20, 64, 52, 65, 72, 68, + 64, 55, 59, 56, 53, 29, 24, 20, 40, 51, 52, 36, 42, 42, 49, 46, + 46, 45, 24, 2, 57, 63, 60, 55, 51, 48, 45, 45, 41, 40, 28, 26, + 25, 20, 21, 20, 29, 29, 22, 40, 34, 33, 17, 8, 51, 67, 61, 48, + 42, 41, 41, 44, 42, 34, 22, 1, 51, 48, 14, 20, 17, 24, 20, 20, + 13, 13, 8, 1, 42, 60, 45, 38, 30, 91, 80, 92, 91, 88, 83, 88, + 102, 134, 123, 150, 217, 241, 237, 238, 237, 241, 191, 136, 108, 116, 122, 120, + 112, 103, 120, 127, 122, 89, 49, 40, 42, 38, 42, 55, 73, 79, 80, 87, + 84, 80, 76, 89, 106, 147, 159, 120, 119, 119, 132, 119, 73, 68, 69, 92, + 104, 83, 116, 127, 124, 122, 120, 119, 118, 116, 115, 119, 116, 115, 116, 118, + 118, 111, 108, 108, 108, 108, 111, 107, 110, 107, 108, 107, 115, 104, 72, 69, + 68, 67, 56, 60, 100, 99, 93, 59, 71, 83, 95, 103, 76, 69, 67, 59, + 57, 51, 52, 56, 80, 80, 96, 107, 111, 115, 122, 122, 126, 111, 42, 92, + 112, 138, 143, 135, 130, 97, 61, 71, 60, 38, 26, 83, 87, 87, 89, 92, + 91, 91, 95, 99, 96, 69, 60, 81, 91, 92, 65, 60, 59, 60, 45, 30, + 46, 37, 29, 28, 21, 25, 22, 22, 30, 33, 33, 36, 37, 48, 36, 38, + 38, 38, 40, 65, 68, 48, 56, 63, 97, 55, 99, 114, 106, 100, 102, 102, + 100, 102, 103, 103, 106, 102, 99, 100, 106, 111, 111, 112, 115, 115, 116, 115, + 114, 92, 37, 100, 106, 99, 95, 89, 95, 89, 80, 97, 97, 69, 32, 68, + 60, 44, 32, 29, 28, 25, 28, 26, 20, 21, 32, 38, 36, 44, 37, 36, + 37, 37, 52, 52, 65, 49, 0, 18, 73, 81, 80, 79, 84, 91, 88, 91, + 87, 87, 49, 81, 111, 122, 134, 135, 130, 126, 127, 120, 127, 126, 127, 127, + 126, 123, 123, 120, 119, 116, 115, 115, 110, 114, 104, 84, 60, 28, 21, 21, + 18, 12, 13, 12, 10, 37, 37, 33, 40, 38, 36, 29, 33, 33, 32, 29, + 37, 30, 34, 10, 44, 99, 103, 96, 106, 108, 89, 72, 92, 36, 93, 144, + 205, 220, 217, 216, 220, 225, 202, 177, 146, 140, 123, 106, 91, 89, 68, 56, + 73, 76, 73, 72, 76, 69, 53, 68, 60, 102, 174, 150, 111, 110, 135, 132, + 134, 136, 139, 144, 142, 140, 136, 119, 83, 29, 25, 21, 52, 40, 46, 83, + 83, 73, 80, 84, 80, 79, 84, 83, 84, 81, 83, 87, 89, 88, 89, 88, + 88, 89, 85, 88, 88, 84, 76, 80, 80, 77, 67, 87, 75, 68, 56, 73, + 71, 38, 8, 30, 73, 76, 51, 59, 79, 77, 64, 65, 69, 53, 42, 87, + 124, 73, 64, 73, 73, 53, 55, 63, 52, 44, 8, 83, 110, 103, 104, 97, + 102, 91, 91, 97, 93, 60, 41, 4, 77, 84, 53, 56, 44, 40, 42, 41, + 38, 21, 17, 53, 26, 32, 33, 36, 33, 32, 32, 24, 22, 29, 30, 34, + 34, 33, 32, 38, 51, 60, 61, 61, 38, 38, 20, 88, 73, 57, 52, 55, + 38, 36, 36, 32, 30, 24, 44, 26, 37, 25, 28, 45, 41, 46, 41, 42, + 41, 28, 16, 33, 40, 42, 37, 33, 32, 33, 32, 30, 28, 22, 16, 28, + 29, 21, 21, 25, 25, 22, 24, 24, 22, 26, 25, 24, 26, 25, 26, 28, + 29, 28, 30, 28, 30, 16, 1, 45, 44, 41, 37, 38, 37, 36, 36, 34, + 21, 24, 0, 42, 36, 9, 9, 8, 8, 8, 6, 8, 10, 5, 1, 5, + 9, 8, 12, 2, 143, 140, 136, 132, 130, 126, 128, 144, 126, 139, 190, 240, + 241, 240, 238, 238, 190, 135, 111, 115, 126, 114, 106, 100, 124, 131, 126, 97, + 49, 37, 37, 37, 37, 59, 69, 68, 60, 60, 52, 59, 33, 38, 93, 110, + 134, 170, 143, 122, 120, 135, 123, 69, 64, 67, 88, 97, 77, 55, 56, 61, + 61, 57, 60, 73, 135, 171, 115, 116, 118, 119, 115, 104, 99, 99, 103, 107, + 116, 118, 119, 114, 112, 118, 116, 93, 60, 59, 57, 46, 49, 56, 49, 57, + 63, 61, 67, 55, 55, 55, 51, 87, 91, 96, 99, 106, 111, 108, 53, 122, + 127, 100, 92, 89, 91, 85, 80, 95, 111, 38, 84, 65, 55, 51, 46, 46, + 34, 33, 34, 28, 32, 17, 22, 21, 18, 18, 21, 22, 24, 22, 26, 29, + 30, 64, 29, 36, 64, 71, 77, 73, 81, 93, 128, 108, 116, 111, 132, 142, + 130, 142, 142, 136, 130, 127, 110, 63, 48, 102, 144, 147, 116, 112, 97, 83, + 75, 69, 26, 25, 20, 18, 18, 18, 18, 17, 18, 20, 21, 21, 24, 28, + 29, 32, 30, 34, 41, 46, 49, 57, 63, 95, 99, 112, 93, 41, 95, 87, + 69, 55, 52, 48, 44, 46, 46, 40, 38, 29, 25, 44, 72, 71, 79, 111, + 122, 120, 130, 119, 79, 25, 84, 130, 130, 99, 77, 79, 80, 67, 67, 26, + 18, 2, 9, 9, 34, 20, 17, 18, 36, 28, 29, 29, 42, 61, 91, 126, + 175, 174, 124, 131, 144, 138, 135, 138, 136, 136, 134, 132, 132, 131, 130, 128, + 126, 120, 119, 106, 112, 102, 55, 24, 21, 16, 16, 17, 20, 24, 26, 45, + 38, 44, 71, 80, 87, 92, 95, 88, 84, 69, 65, 32, 29, 20, 10, 36, + 36, 37, 52, 55, 91, 93, 85, 85, 28, 103, 157, 209, 234, 220, 222, 213, + 163, 136, 111, 110, 104, 96, 95, 91, 49, 64, 55, 61, 59, 51, 46, 51, + 49, 52, 71, 75, 102, 182, 178, 115, 103, 114, 128, 139, 142, 147, 148, 146, + 146, 139, 120, 75, 26, 26, 26, 32, 24, 10, 9, 12, 6, 5, 4, 6, + 2, 1, 1, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 9, 20, 20, + 22, 22, 22, 28, 29, 37, 40, 46, 61, 26, 60, 79, 76, 59, 59, 69, + 67, 51, 53, 61, 26, 6, 13, 52, 56, 48, 42, 56, 60, 48, 44, 63, + 57, 12, 4, 30, 71, 71, 32, 21, 17, 14, 13, 20, 44, 32, 25, 37, + 30, 45, 44, 49, 53, 55, 53, 48, 22, 63, 67, 75, 69, 44, 20, 17, + 25, 17, 33, 36, 46, 29, 72, 45, 44, 48, 42, 56, 64, 59, 65, 51, + 20, 60, 67, 71, 67, 40, 34, 36, 20, 25, 25, 17, 22, 36, 34, 25, + 28, 25, 24, 21, 20, 21, 17, 10, 12, 13, 4, 2, 2, 1, 1, 1, + 1, 0, 0, 0, 2, 5, 1, 5, 2, 5, 9, 8, 14, 18, 22, 22, + 13, 2, 18, 14, 16, 13, 12, 12, 13, 12, 10, 10, 12, 0, 4, 4, + 4, 4, 2, 2, 1, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 173, + 165, 163, 159, 158, 161, 154, 127, 138, 181, 232, 241, 241, 241, 240, 191, 127, + 114, 123, 128, 110, 102, 108, 126, 139, 132, 115, 55, 36, 33, 30, 33, 48, + 60, 52, 48, 45, 52, 68, 76, 93, 95, 97, 107, 128, 174, 159, 127, 122, + 136, 122, 71, 64, 65, 87, 100, 61, 65, 128, 143, 144, 138, 143, 144, 143, + 182, 154, 116, 110, 103, 97, 103, 114, 118, 127, 132, 135, 134, 139, 138, 131, + 116, 114, 60, 55, 52, 45, 44, 42, 46, 46, 45, 45, 55, 56, 81, 96, + 112, 124, 140, 143, 146, 153, 144, 143, 115, 69, 138, 144, 123, 112, 116, 122, + 110, 100, 99, 110, 37, 42, 46, 71, 71, 81, 120, 135, 146, 112, 88, 85, + 150, 153, 159, 144, 148, 138, 150, 142, 138, 140, 135, 69, 36, 96, 157, 151, + 159, 153, 131, 122, 134, 154, 126, 143, 128, 128, 107, 131, 147, 144, 128, 134, + 127, 143, 75, 45, 110, 157, 146, 144, 161, 159, 162, 165, 150, 139, 81, 41, + 120, 136, 135, 136, 135, 138, 144, 138, 136, 138, 135, 127, 127, 134, 134, 139, + 132, 130, 124, 87, 72, 73, 64, 93, 37, 53, 56, 87, 97, 96, 103, 118, + 110, 103, 93, 83, 51, 111, 142, 144, 143, 142, 144, 142, 138, 134, 122, 84, + 30, 102, 134, 135, 128, 130, 128, 128, 124, 95, 77, 69, 6, 75, 96, 97, + 91, 96, 104, 104, 103, 108, 108, 48, 57, 102, 123, 197, 182, 132, 122, 128, + 147, 146, 143, 147, 155, 157, 155, 155, 155, 147, 144, 122, 116, 106, 126, 111, + 93, 36, 24, 18, 17, 22, 25, 29, 40, 46, 51, 40, 61, 100, 103, 118, + 124, 127, 119, 116, 106, 100, 95, 81, 60, 8, 100, 108, 108, 106, 55, 55, + 52, 87, 83, 21, 116, 178, 216, 218, 225, 210, 148, 119, 110, 102, 92, 93, + 89, 95, 55, 38, 72, 69, 79, 83, 89, 79, 81, 79, 83, 88, 116, 103, + 191, 187, 153, 111, 110, 118, 139, 148, 144, 148, 151, 146, 135, 123, 71, 25, + 32, 32, 37, 22, 24, 65, 73, 72, 76, 71, 76, 67, 106, 92, 61, 64, + 115, 99, 118, 124, 123, 128, 126, 118, 131, 131, 127, 120, 99, 102, 119, 120, + 112, 111, 116, 112, 110, 83, 64, 37, 9, 68, 100, 91, 79, 76, 59, 45, + 44, 17, 26, 26, 29, 5, 4, 17, 4, 4, 1, 10, 0, 2, 1, 5, + 4, 1, 4, 1, 0, 0, 1, 1, 0, 0, 0, 2, 0, 6, 20, 17, + 22, 30, 46, 61, 38, 32, 53, 10, 30, 75, 87, 93, 89, 88, 92, 96, + 100, 67, 49, 24, 67, 79, 83, 92, 85, 77, 75, 69, 56, 56, 48, 63, + 48, 64, 72, 60, 67, 67, 79, 76, 79, 81, 51, 20, 72, 69, 52, 80, + 76, 72, 67, 57, 45, 38, 30, 21, 21, 8, 14, 33, 28, 45, 46, 48, + 34, 30, 25, 10, 13, 28, 79, 88, 69, 75, 80, 76, 68, 71, 48, 53, + 64, 71, 73, 84, 83, 76, 33, 10, 5, 4, 10, 4, 2, 9, 9, 5, + 6, 9, 8, 5, 5, 4, 2, 2, 9, 21, 25, 29, 20, 30, 45, 55, + 40, 25, 18, 4, 17, 69, 85, 71, 72, 83, 155, 158, 158, 161, 155, 154, + 132, 150, 179, 229, 237, 241, 241, 238, 183, 126, 116, 124, 132, 107, 104, 118, + 130, 146, 142, 131, 88, 40, 34, 32, 34, 48, 63, 60, 51, 60, 114, 115, + 112, 115, 115, 102, 107, 104, 112, 174, 181, 150, 120, 126, 115, 65, 61, 64, + 87, 93, 56, 110, 155, 166, 166, 159, 153, 146, 134, 194, 178, 134, 108, 97, + 110, 119, 132, 136, 139, 144, 146, 151, 148, 143, 134, 122, 102, 53, 51, 45, + 42, 46, 63, 68, 65, 71, 69, 75, 80, 136, 153, 158, 157, 154, 157, 150, + 138, 135, 120, 120, 51, 138, 136, 126, 122, 115, 126, 128, 126, 96, 118, 38, + 107, 147, 150, 157, 154, 159, 128, 158, 127, 159, 126, 116, 140, 143, 144, 148, + 139, 139, 140, 132, 148, 150, 83, 32, 126, 155, 158, 153, 154, 154, 148, 134, + 128, 146, 142, 95, 123, 144, 151, 151, 142, 148, 151, 139, 143, 77, 64, 130, + 159, 155, 134, 153, 150, 151, 143, 150, 159, 110, 42, 151, 161, 161, 115, 108, + 107, 108, 118, 119, 112, 139, 124, 87, 96, 114, 139, 120, 123, 123, 127, 136, + 123, 83, 100, 33, 76, 126, 138, 140, 138, 140, 135, 135, 134, 106, 85, 45, + 110, 142, 134, 131, 130, 128, 128, 128, 112, 126, 93, 30, 96, 132, 136, 131, + 124, 130, 131, 128, 123, 95, 69, 21, 122, 144, 142, 110, 106, 100, 123, 108, + 102, 107, 63, 56, 103, 120, 191, 202, 162, 119, 122, 143, 144, 158, 162, 171, + 175, 171, 174, 166, 159, 153, 118, 108, 126, 123, 112, 84, 29, 20, 17, 25, + 32, 34, 38, 49, 51, 59, 44, 83, 108, 124, 120, 116, 108, 112, 107, 114, + 115, 116, 96, 67, 8, 95, 106, 120, 114, 110, 103, 104, 89, 83, 21, 118, + 189, 218, 224, 217, 162, 123, 111, 97, 104, 87, 84, 100, 102, 45, 36, 63, + 52, 63, 60, 64, 67, 69, 59, 92, 126, 111, 115, 195, 193, 181, 112, 107, + 116, 139, 151, 151, 157, 155, 146, 136, 120, 56, 29, 21, 29, 37, 29, 44, + 93, 112, 99, 92, 89, 89, 89, 91, 91, 84, 87, 96, 120, 114, 115, 111, + 115, 96, 100, 122, 135, 107, 99, 103, 83, 99, 95, 99, 96, 96, 93, 93, + 96, 93, 42, 9, 67, 106, 99, 100, 83, 87, 80, 84, 61, 61, 46, 26, + 20, 104, 107, 83, 81, 83, 73, 68, 71, 60, 33, 9, 33, 106, 97, 76, + 80, 97, 96, 89, 75, 95, 80, 30, 5, 37, 73, 71, 34, 38, 42, 46, + 49, 37, 12, 57, 110, 103, 100, 87, 85, 73, 79, 65, 64, 53, 25, 73, + 87, 89, 80, 71, 68, 65, 63, 69, 77, 71, 61, 64, 75, 80, 81, 73, + 79, 88, 85, 75, 72, 52, 21, 71, 73, 71, 59, 61, 64, 68, 72, 71, + 60, 33, 36, 18, 55, 63, 55, 60, 48, 38, 16, 33, 37, 20, 13, 6, + 61, 79, 75, 67, 71, 67, 77, 61, 68, 60, 53, 52, 51, 67, 63, 56, + 59, 60, 57, 63, 55, 52, 42, 42, 71, 73, 84, 76, 87, 84, 76, 76, + 60, 67, 64, 68, 51, 53, 53, 64, 67, 38, 53, 40, 51, 32, 8, 56, + 87, 88, 63, 44, 29, 161, 161, 162, 155, 151, 138, 153, 151, 212, 233, 237, + 238, 238, 194, 130, 116, 127, 138, 115, 104, 131, 140, 148, 143, 139, 119, 61, + 34, 32, 36, 51, 64, 67, 52, 56, 115, 127, 128, 126, 123, 148, 148, 111, + 116, 116, 158, 186, 167, 124, 122, 108, 64, 59, 61, 87, 95, 67, 140, 170, + 158, 162, 150, 154, 155, 139, 198, 182, 167, 108, 97, 114, 126, 138, 144, 151, + 147, 151, 150, 153, 147, 128, 122, 73, 51, 45, 42, 64, 69, 76, 77, 76, + 87, 85, 73, 120, 165, 166, 159, 158, 143, 151, 135, 127, 136, 114, 119, 56, + 131, 143, 135, 120, 123, 123, 126, 132, 99, 119, 40, 114, 146, 143, 142, 162, + 130, 144, 153, 128, 142, 99, 132, 158, 155, 148, 148, 143, 146, 144, 147, 144, + 144, 75, 33, 139, 151, 151, 146, 153, 155, 144, 143, 144, 140, 127, 87, 118, + 148, 159, 148, 148, 150, 148, 138, 142, 75, 48, 123, 151, 158, 151, 147, 134, + 148, 135, 151, 140, 140, 49, 135, 130, 167, 155, 162, 161, 157, 158, 154, 148, + 131, 122, 81, 138, 150, 143, 148, 142, 142, 142, 130, 128, 107, 106, 38, 104, + 142, 138, 130, 126, 127, 119, 116, 127, 119, 87, 45, 106, 132, 136, 126, 132, + 127, 124, 127, 128, 119, 95, 37, 100, 112, 136, 122, 122, 126, 116, 132, 132, + 96, 76, 0, 120, 126, 135, 135, 142, 138, 127, 138, 110, 112, 68, 51, 104, + 126, 190, 214, 197, 132, 116, 132, 147, 155, 163, 177, 179, 178, 177, 179, 170, + 157, 119, 119, 135, 126, 114, 85, 26, 20, 20, 33, 44, 53, 52, 49, 56, + 55, 41, 95, 114, 122, 116, 104, 104, 103, 110, 102, 104, 110, 107, 67, 8, + 107, 110, 108, 104, 102, 104, 89, 61, 85, 29, 111, 193, 214, 226, 201, 124, + 108, 102, 106, 87, 85, 107, 107, 91, 46, 37, 40, 69, 65, 60, 57, 73, + 68, 55, 96, 124, 119, 114, 199, 205, 193, 111, 103, 115, 127, 142, 148, 153, + 159, 150, 135, 122, 61, 26, 18, 36, 49, 21, 56, 106, 92, 95, 95, 97, + 95, 102, 97, 80, 75, 79, 112, 131, 122, 111, 108, 100, 110, 104, 115, 118, + 116, 110, 77, 100, 115, 119, 119, 124, 120, 119, 106, 91, 57, 44, 12, 79, + 102, 99, 100, 99, 96, 79, 81, 77, 71, 49, 28, 73, 107, 95, 92, 92, + 89, 99, 93, 77, 80, 37, 6, 84, 104, 83, 76, 87, 91, 83, 84, 89, + 79, 75, 37, 6, 59, 64, 48, 32, 45, 28, 41, 53, 26, 12, 48, 110, + 91, 87, 68, 67, 65, 68, 69, 97, 52, 28, 65, 75, 65, 89, 97, 83, + 71, 77, 60, 67, 59, 37, 67, 83, 92, 91, 88, 102, 84, 89, 55, 81, + 55, 24, 68, 67, 71, 63, 49, 46, 51, 57, 52, 71, 42, 37, 5, 60, + 63, 63, 59, 34, 45, 33, 32, 34, 36, 13, 9, 77, 75, 46, 55, 49, + 56, 65, 71, 71, 61, 68, 29, 59, 52, 64, 56, 55, 55, 45, 41, 52, + 67, 22, 75, 84, 75, 75, 79, 69, 61, 69, 75, 72, 67, 30, 34, 60, + 84, 67, 68, 59, 45, 28, 56, 56, 40, 5, 64, 85, 64, 56, 28, 13, + 155, 153, 154, 163, 132, 147, 153, 175, 233, 233, 238, 240, 218, 150, 122, 123, + 136, 132, 106, 123, 147, 154, 150, 144, 135, 93, 41, 30, 30, 40, 52, 68, + 67, 30, 53, 122, 135, 150, 146, 140, 142, 140, 123, 115, 120, 138, 193, 182, + 132, 124, 100, 63, 57, 60, 87, 99, 83, 106, 167, 159, 159, 159, 157, 161, + 146, 204, 194, 179, 102, 99, 114, 134, 142, 153, 150, 159, 151, 148, 153, 140, + 127, 124, 53, 45, 42, 41, 69, 83, 81, 79, 87, 87, 81, 92, 148, 163, + 163, 158, 139, 146, 142, 139, 132, 131, 127, 114, 53, 128, 134, 139, 132, 131, + 126, 116, 116, 100, 115, 33, 124, 142, 161, 132, 139, 140, 132, 140, 143, 140, + 97, 127, 159, 154, 150, 151, 157, 151, 153, 144, 135, 135, 80, 40, 118, 155, + 144, 155, 142, 118, 146, 144, 140, 140, 130, 81, 126, 143, 158, 147, 158, 151, + 140, 143, 139, 75, 48, 122, 151, 148, 146, 143, 144, 134, 131, 140, 144, 151, + 55, 93, 157, 119, 147, 154, 142, 161, 154, 143, 151, 140, 107, 77, 140, 147, + 134, 127, 126, 122, 135, 139, 128, 124, 106, 45, 124, 138, 134, 136, 123, 112, + 114, 120, 127, 106, 83, 28, 111, 132, 127, 135, 127, 126, 130, 127, 127, 108, + 96, 49, 92, 119, 135, 131, 131, 116, 130, 124, 126, 92, 67, 0, 116, 131, + 132, 132, 138, 126, 146, 144, 143, 131, 72, 60, 106, 127, 190, 206, 197, 132, + 115, 128, 143, 147, 159, 177, 182, 183, 182, 174, 170, 151, 119, 132, 138, 130, + 122, 69, 25, 20, 24, 49, 55, 52, 49, 53, 61, 64, 48, 100, 122, 123, + 106, 111, 115, 112, 107, 106, 106, 107, 89, 68, 8, 106, 93, 114, 110, 108, + 103, 87, 64, 80, 24, 116, 187, 210, 222, 179, 118, 108, 99, 99, 87, 91, + 115, 107, 93, 45, 32, 33, 52, 64, 69, 59, 68, 68, 46, 91, 122, 108, + 120, 199, 198, 198, 110, 102, 110, 119, 134, 140, 155, 162, 154, 138, 115, 59, + 29, 18, 25, 51, 25, 57, 106, 108, 93, 91, 85, 85, 76, 85, 76, 68, + 24, 104, 127, 118, 106, 104, 103, 114, 118, 119, 104, 120, 107, 76, 106, 116, + 126, 118, 110, 102, 93, 102, 96, 97, 46, 12, 76, 83, 103, 89, 84, 72, + 80, 83, 88, 99, 52, 25, 91, 107, 79, 87, 75, 91, 95, 97, 87, 80, + 41, 6, 97, 103, 87, 79, 91, 102, 97, 96, 99, 87, 87, 38, 5, 64, + 55, 30, 33, 48, 26, 28, 40, 34, 9, 49, 93, 92, 67, 81, 83, 67, + 68, 71, 63, 65, 24, 59, 79, 69, 88, 72, 60, 67, 59, 71, 71, 63, + 41, 87, 75, 72, 67, 77, 85, 95, 77, 75, 69, 53, 25, 65, 65, 79, + 67, 55, 57, 53, 57, 60, 67, 60, 36, 28, 46, 71, 61, 41, 38, 57, + 32, 42, 26, 24, 13, 10, 38, 75, 71, 46, 49, 46, 45, 36, 46, 41, + 32, 26, 67, 59, 65, 48, 44, 41, 37, 40, 41, 65, 28, 76, 80, 76, + 59, 63, 52, 51, 57, 51, 48, 36, 33, 36, 61, 56, 51, 45, 36, 25, + 38, 38, 46, 44, 5, 28, 88, 57, 57, 14, 0, 171, 169, 165, 150, 135, + 150, 157, 208, 232, 241, 236, 229, 169, 128, 122, 134, 139, 122, 110, 144, 159, + 159, 151, 143, 124, 65, 33, 28, 34, 46, 65, 69, 67, 30, 108, 134, 134, + 146, 140, 144, 148, 143, 122, 118, 112, 132, 199, 193, 165, 123, 97, 61, 55, + 59, 81, 99, 73, 92, 169, 161, 158, 159, 157, 154, 142, 209, 199, 178, 102, + 103, 116, 128, 143, 151, 154, 154, 150, 151, 153, 138, 123, 123, 49, 41, 40, + 68, 79, 83, 87, 91, 87, 87, 80, 89, 154, 161, 162, 144, 143, 140, 146, + 139, 135, 127, 123, 123, 65, 139, 132, 124, 131, 126, 138, 111, 120, 97, 115, + 30, 122, 134, 142, 126, 143, 128, 148, 114, 140, 134, 89, 130, 158, 150, 153, + 153, 154, 157, 148, 147, 146, 134, 80, 33, 124, 148, 147, 155, 153, 150, 144, + 148, 135, 142, 127, 84, 123, 142, 143, 148, 158, 147, 135, 140, 132, 81, 46, + 127, 154, 157, 151, 143, 142, 140, 135, 135, 135, 151, 73, 60, 155, 162, 162, + 154, 154, 155, 148, 151, 159, 144, 119, 75, 136, 144, 138, 136, 143, 131, 127, + 126, 132, 114, 108, 44, 111, 140, 123, 126, 122, 116, 126, 116, 122, 110, 84, + 29, 104, 128, 127, 142, 124, 122, 120, 115, 111, 120, 97, 52, 95, 130, 134, + 138, 123, 126, 124, 128, 122, 96, 77, 10, 123, 124, 122, 139, 140, 128, 134, + 142, 146, 122, 65, 68, 107, 120, 163, 214, 202, 136, 111, 123, 143, 147, 159, + 173, 171, 174, 178, 179, 169, 132, 115, 134, 142, 131, 122, 51, 22, 20, 37, + 49, 56, 53, 55, 60, 73, 60, 55, 102, 123, 114, 112, 107, 108, 103, 108, + 111, 100, 104, 87, 63, 6, 88, 111, 107, 107, 104, 104, 77, 67, 85, 29, + 120, 199, 210, 216, 153, 118, 100, 107, 91, 81, 103, 108, 111, 93, 44, 32, + 34, 41, 65, 71, 72, 65, 75, 46, 88, 123, 118, 122, 199, 206, 202, 108, + 97, 106, 120, 126, 135, 154, 161, 155, 139, 110, 59, 32, 21, 29, 38, 29, + 52, 96, 99, 92, 87, 97, 87, 87, 88, 77, 65, 61, 122, 128, 122, 111, + 119, 112, 116, 116, 104, 103, 116, 99, 79, 108, 122, 119, 110, 103, 97, 97, + 103, 96, 95, 48, 13, 75, 99, 95, 81, 83, 84, 85, 79, 88, 73, 51, + 25, 55, 99, 76, 84, 87, 95, 87, 100, 91, 73, 44, 9, 55, 103, 79, + 88, 79, 88, 83, 81, 80, 76, 83, 36, 10, 60, 46, 38, 40, 51, 24, + 28, 30, 25, 10, 51, 97, 91, 76, 91, 99, 85, 68, 69, 71, 51, 28, + 56, 88, 69, 83, 71, 56, 64, 81, 68, 76, 65, 37, 87, 83, 80, 77, + 93, 89, 77, 51, 76, 71, 53, 26, 64, 61, 80, 87, 76, 71, 68, 72, + 61, 57, 41, 38, 28, 56, 72, 48, 46, 32, 48, 37, 55, 24, 20, 10, + 9, 40, 79, 73, 51, 42, 41, 42, 44, 42, 36, 34, 26, 64, 40, 59, + 57, 48, 44, 34, 36, 49, 42, 16, 57, 77, 69, 56, 48, 44, 45, 51, + 37, 56, 40, 22, 32, 65, 59, 63, 51, 46, 20, 42, 41, 42, 30, 6, + 29, 69, 57, 26, 1, 0, 171, 161, 163, 131, 146, 155, 179, 226, 234, 236, + 236, 193, 128, 124, 131, 139, 132, 108, 124, 155, 162, 157, 148, 138, 106, 42, + 29, 29, 38, 52, 57, 68, 71, 30, 124, 138, 138, 147, 146, 151, 150, 143, + 126, 124, 112, 120, 199, 197, 174, 123, 96, 61, 55, 57, 85, 96, 88, 81, + 165, 162, 159, 158, 155, 155, 136, 212, 201, 174, 106, 100, 114, 127, 139, 139, + 153, 148, 153, 153, 147, 131, 120, 123, 46, 38, 36, 69, 85, 77, 83, 97, + 95, 91, 85, 85, 154, 163, 158, 142, 136, 148, 131, 135, 143, 130, 120, 123, + 53, 134, 132, 136, 146, 142, 142, 118, 118, 95, 120, 40, 122, 138, 158, 143, + 138, 142, 123, 132, 139, 139, 92, 131, 154, 147, 154, 153, 157, 146, 140, 143, + 140, 136, 87, 34, 119, 147, 143, 155, 159, 154, 146, 144, 139, 139, 123, 76, + 124, 136, 135, 146, 153, 157, 154, 153, 131, 76, 48, 116, 154, 155, 154, 142, + 139, 140, 151, 130, 142, 148, 118, 61, 140, 158, 143, 142, 131, 150, 158, 159, + 138, 132, 108, 80, 139, 144, 124, 132, 131, 127, 126, 143, 134, 106, 108, 51, + 107, 123, 132, 123, 122, 114, 114, 128, 126, 107, 87, 40, 115, 131, 131, 147, + 131, 132, 118, 124, 135, 123, 110, 55, 97, 132, 123, 119, 123, 122, 114, 118, + 122, 97, 76, 10, 115, 126, 120, 128, 131, 130, 116, 130, 126, 103, 80, 67, + 95, 127, 155, 213, 213, 158, 107, 112, 140, 148, 162, 173, 178, 183, 178, 169, + 163, 123, 128, 143, 138, 132, 119, 32, 22, 17, 34, 53, 57, 55, 61, 68, + 68, 67, 56, 102, 120, 119, 114, 116, 104, 116, 108, 112, 100, 106, 97, 65, + 8, 97, 92, 102, 132, 103, 103, 100, 69, 80, 26, 114, 190, 214, 214, 142, + 106, 96, 97, 84, 89, 108, 108, 112, 106, 38, 29, 28, 37, 63, 72, 68, + 57, 73, 49, 93, 130, 112, 127, 204, 208, 201, 107, 100, 107, 111, 123, 138, + 151, 162, 158, 142, 123, 56, 30, 30, 26, 42, 33, 52, 95, 96, 91, 83, + 95, 68, 80, 102, 69, 69, 64, 123, 122, 108, 99, 108, 112, 120, 99, 95, + 103, 118, 91, 73, 104, 126, 111, 97, 103, 89, 95, 88, 103, 107, 49, 14, + 72, 93, 100, 79, 81, 84, 73, 80, 71, 76, 52, 25, 71, 95, 68, 81, + 84, 87, 100, 99, 81, 81, 45, 10, 53, 99, 79, 77, 77, 79, 75, 76, + 95, 79, 76, 40, 9, 72, 51, 34, 41, 49, 26, 24, 25, 20, 9, 65, + 100, 87, 95, 103, 104, 91, 76, 75, 69, 51, 29, 55, 93, 77, 81, 72, + 55, 56, 67, 57, 73, 68, 26, 91, 76, 80, 72, 83, 73, 57, 51, 80, + 65, 53, 29, 65, 63, 77, 57, 64, 67, 63, 65, 65, 53, 44, 37, 12, + 46, 72, 67, 30, 29, 46, 30, 44, 46, 36, 12, 9, 34, 77, 69, 41, + 48, 34, 38, 37, 40, 30, 30, 24, 59, 72, 46, 46, 44, 55, 42, 34, + 44, 52, 21, 59, 67, 61, 52, 33, 32, 42, 59, 45, 42, 25, 28, 42, + 60, 69, 40, 29, 34, 29, 40, 28, 49, 32, 9, 38, 60, 44, 30, 0, + 0, 183, 163, 148, 131, 150, 155, 206, 229, 236, 232, 222, 159, 124, 123, 136, + 142, 132, 112, 143, 161, 161, 155, 148, 135, 84, 34, 26, 30, 46, 55, 72, + 67, 71, 34, 130, 138, 146, 143, 148, 154, 148, 140, 127, 128, 116, 126, 199, + 199, 185, 120, 100, 64, 55, 57, 89, 99, 89, 67, 158, 165, 157, 166, 158, + 159, 147, 213, 194, 177, 108, 103, 114, 127, 135, 139, 147, 151, 153, 153, 136, + 128, 116, 119, 45, 36, 36, 72, 91, 95, 85, 84, 92, 93, 79, 103, 154, + 162, 147, 143, 139, 144, 144, 147, 136, 138, 115, 120, 56, 136, 136, 130, 131, + 136, 138, 111, 116, 95, 110, 38, 123, 142, 143, 127, 138, 131, 136, 132, 122, + 134, 89, 130, 153, 157, 154, 157, 147, 144, 146, 143, 138, 132, 83, 33, 116, + 142, 143, 139, 147, 148, 143, 142, 139, 135, 120, 67, 114, 139, 154, 148, 155, + 147, 143, 131, 143, 72, 51, 106, 153, 150, 150, 139, 144, 148, 140, 130, 140, + 144, 114, 48, 111, 157, 161, 132, 143, 157, 146, 139, 144, 131, 95, 85, 138, + 142, 124, 130, 139, 130, 130, 116, 130, 130, 107, 55, 112, 132, 128, 131, 130, + 112, 111, 111, 123, 116, 88, 44, 115, 136, 122, 126, 134, 120, 130, 131, 132, + 122, 106, 56, 99, 116, 130, 120, 120, 119, 126, 122, 115, 99, 79, 0, 127, + 127, 116, 99, 132, 127, 136, 134, 127, 110, 77, 59, 89, 130, 120, 214, 217, + 183, 110, 111, 135, 146, 158, 170, 174, 174, 173, 175, 153, 124, 134, 148, 139, + 131, 119, 29, 22, 20, 33, 59, 65, 63, 71, 83, 71, 63, 57, 91, 119, + 118, 120, 104, 114, 108, 107, 112, 97, 103, 100, 68, 9, 96, 99, 102, 103, + 130, 115, 106, 69, 79, 21, 103, 181, 208, 233, 153, 106, 91, 97, 83, 103, + 110, 110, 115, 91, 37, 32, 25, 38, 57, 71, 73, 60, 72, 45, 99, 120, + 116, 136, 210, 216, 199, 102, 95, 106, 118, 124, 140, 150, 163, 158, 142, 132, + 57, 36, 18, 30, 46, 36, 48, 95, 95, 92, 96, 87, 81, 87, 76, 85, + 57, 53, 110, 118, 116, 110, 114, 96, 92, 106, 100, 110, 112, 77, 84, 111, + 124, 106, 95, 97, 97, 89, 103, 96, 93, 51, 17, 77, 88, 92, 73, 88, + 75, 83, 79, 76, 65, 53, 24, 75, 104, 69, 76, 87, 89, 91, 92, 71, + 81, 46, 8, 57, 97, 83, 87, 83, 77, 83, 99, 71, 72, 73, 37, 9, + 59, 44, 36, 45, 46, 41, 22, 18, 14, 10, 57, 96, 77, 96, 93, 93, + 89, 99, 95, 72, 48, 28, 61, 84, 59, 85, 67, 56, 59, 67, 67, 76, + 64, 25, 83, 84, 92, 73, 76, 71, 59, 49, 48, 60, 52, 28, 46, 59, + 75, 71, 67, 67, 59, 67, 64, 67, 42, 37, 8, 45, 81, 63, 51, 26, + 42, 37, 41, 22, 28, 10, 9, 36, 76, 71, 53, 53, 40, 38, 37, 36, + 34, 46, 22, 49, 55, 30, 37, 37, 32, 40, 37, 38, 51, 29, 68, 77, + 75, 61, 26, 52, 48, 49, 38, 46, 34, 25, 46, 55, 36, 57, 33, 21, + 30, 29, 29, 24, 14, 8, 38, 55, 49, 21, 0, 0, 157, 170, 150, 142, + 151, 170, 221, 233, 229, 232, 182, 135, 124, 134, 139, 142, 122, 126, 158, 163, + 161, 154, 144, 127, 52, 30, 26, 33, 48, 68, 72, 72, 72, 33, 138, 136, + 144, 142, 151, 146, 144, 142, 131, 126, 111, 146, 199, 197, 191, 124, 97, 64, + 56, 57, 87, 95, 85, 64, 161, 158, 162, 162, 161, 157, 146, 217, 191, 189, + 110, 102, 112, 123, 132, 140, 144, 147, 153, 146, 135, 128, 114, 116, 42, 34, + 33, 71, 96, 91, 93, 91, 99, 92, 80, 107, 161, 162, 148, 143, 150, 154, + 142, 144, 147, 134, 116, 116, 56, 132, 131, 132, 135, 115, 118, 119, 111, 96, + 107, 36, 126, 148, 150, 139, 139, 144, 116, 140, 134, 135, 83, 139, 155, 155, + 148, 146, 150, 146, 147, 146, 140, 99, 95, 38, 112, 135, 146, 144, 140, 146, + 143, 139, 140, 136, 123, 60, 128, 135, 150, 150, 151, 148, 144, 150, 140, 71, + 51, 99, 139, 150, 148, 127, 146, 144, 127, 139, 139, 128, 120, 64, 108, 154, + 162, 158, 128, 144, 123, 139, 134, 124, 69, 100, 135, 140, 135, 131, 119, 115, + 120, 114, 116, 127, 110, 60, 89, 122, 132, 111, 100, 111, 120, 112, 114, 100, + 89, 22, 112, 127, 126, 122, 120, 112, 120, 128, 123, 118, 107, 63, 68, 112, + 128, 130, 132, 130, 130, 128, 114, 92, 71, 0, 119, 122, 115, 118, 111, 136, + 134, 131, 103, 134, 83, 73, 61, 127, 118, 220, 222, 216, 111, 111, 134, 151, + 154, 158, 175, 177, 174, 174, 142, 128, 150, 151, 139, 130, 119, 29, 22, 17, + 38, 64, 60, 68, 72, 81, 76, 72, 63, 83, 115, 116, 115, 114, 115, 115, + 112, 108, 106, 103, 99, 63, 10, 93, 89, 87, 102, 138, 106, 100, 69, 76, + 16, 84, 136, 189, 234, 159, 106, 100, 100, 102, 110, 106, 112, 106, 63, 36, + 30, 26, 38, 57, 72, 72, 68, 71, 36, 93, 116, 112, 131, 209, 208, 205, + 104, 96, 108, 120, 131, 140, 150, 161, 161, 151, 139, 59, 33, 17, 25, 42, + 33, 37, 89, 88, 96, 91, 89, 92, 84, 75, 80, 56, 16, 107, 120, 102, + 92, 99, 104, 106, 107, 108, 112, 114, 77, 88, 116, 107, 88, 111, 91, 88, + 91, 92, 96, 91, 55, 17, 69, 93, 97, 80, 75, 77, 79, 75, 85, 85, + 57, 21, 91, 97, 75, 79, 87, 85, 87, 88, 72, 69, 51, 5, 61, 89, + 84, 81, 80, 97, 96, 73, 69, 68, 79, 36, 8, 71, 48, 33, 30, 29, + 46, 18, 20, 16, 10, 51, 89, 87, 89, 88, 102, 84, 80, 76, 69, 56, + 26, 57, 87, 76, 79, 59, 56, 65, 68, 60, 80, 65, 28, 81, 76, 93, + 65, 65, 88, 59, 49, 56, 48, 53, 29, 37, 65, 55, 67, 88, 77, 63, + 63, 71, 63, 44, 37, 32, 46, 81, 49, 30, 38, 40, 25, 13, 14, 14, + 14, 10, 30, 49, 67, 49, 44, 48, 42, 40, 37, 36, 26, 20, 37, 36, + 34, 33, 36, 33, 44, 37, 41, 26, 25, 72, 75, 72, 68, 33, 53, 36, + 34, 56, 28, 36, 29, 51, 37, 26, 28, 18, 29, 13, 14, 9, 21, 12, + 9, 25, 55, 14, 14, 2, 0, 167, 155, 128, 146, 154, 185, 218, 233, 228, + 218, 148, 136, 132, 136, 142, 140, 114, 144, 166, 165, 161, 153, 143, 120, 44, + 29, 26, 37, 49, 55, 55, 73, 69, 30, 135, 135, 150, 146, 144, 143, 144, + 135, 128, 132, 107, 155, 198, 201, 185, 122, 95, 64, 56, 60, 88, 102, 96, + 76, 136, 171, 158, 158, 161, 155, 144, 221, 193, 198, 111, 103, 112, 123, 132, + 143, 148, 150, 150, 132, 131, 130, 118, 122, 40, 32, 32, 76, 93, 87, 92, + 87, 103, 93, 76, 114, 154, 158, 146, 115, 116, 132, 140, 126, 123, 127, 123, + 123, 65, 144, 136, 130, 120, 120, 118, 122, 110, 93, 104, 29, 124, 135, 148, + 127, 142, 143, 135, 143, 143, 130, 73, 128, 155, 161, 158, 158, 150, 142, 132, + 140, 112, 100, 91, 41, 99, 124, 128, 107, 120, 138, 132, 112, 122, 130, 116, + 61, 119, 128, 150, 153, 132, 124, 122, 118, 102, 85, 44, 95, 146, 151, 148, + 146, 134, 131, 128, 136, 127, 134, 131, 71, 91, 151, 159, 146, 122, 151, 144, + 134, 127, 118, 69, 83, 132, 139, 132, 126, 115, 118, 112, 114, 112, 120, 110, + 59, 81, 100, 100, 100, 103, 100, 106, 104, 114, 114, 87, 25, 111, 128, 128, + 122, 123, 120, 115, 118, 111, 110, 107, 68, 81, 106, 128, 130, 138, 128, 120, + 127, 91, 96, 83, 8, 116, 120, 112, 119, 100, 122, 127, 130, 119, 124, 69, + 69, 52, 124, 123, 222, 228, 220, 112, 108, 134, 148, 153, 157, 169, 174, 171, + 162, 130, 142, 148, 150, 142, 136, 122, 26, 21, 18, 38, 63, 65, 67, 71, + 79, 79, 75, 64, 72, 110, 118, 120, 108, 112, 114, 107, 107, 103, 96, 83, + 61, 10, 84, 92, 103, 100, 100, 95, 84, 79, 80, 17, 65, 111, 155, 150, + 112, 99, 89, 76, 93, 92, 97, 92, 60, 37, 33, 29, 28, 36, 60, 69, + 72, 67, 71, 37, 97, 115, 104, 103, 202, 217, 213, 104, 95, 108, 122, 131, + 142, 150, 165, 159, 139, 130, 56, 34, 18, 24, 42, 37, 33, 68, 91, 88, + 92, 88, 89, 87, 79, 83, 55, 38, 119, 115, 95, 103, 115, 116, 114, 116, + 112, 116, 108, 73, 95, 123, 102, 103, 103, 92, 93, 102, 95, 96, 87, 55, + 17, 76, 91, 95, 77, 72, 72, 71, 83, 87, 77, 56, 25, 61, 92, 72, + 65, 69, 72, 72, 68, 73, 77, 55, 13, 61, 59, 100, 95, 97, 99, 100, + 65, 75, 72, 75, 44, 14, 60, 37, 32, 25, 36, 30, 40, 21, 20, 10, + 46, 88, 84, 85, 100, 76, 79, 75, 65, 71, 51, 30, 59, 85, 65, 61, + 64, 85, 67, 83, 73, 67, 60, 32, 73, 76, 73, 75, 77, 71, 68, 64, + 52, 63, 57, 36, 34, 51, 63, 56, 44, 40, 40, 52, 46, 44, 42, 37, + 33, 65, 81, 51, 24, 6, 8, 20, 18, 8, 9, 17, 16, 21, 36, 42, + 41, 34, 33, 32, 30, 32, 34, 33, 29, 37, 36, 49, 37, 40, 30, 32, + 34, 34, 29, 33, 45, 67, 79, 53, 34, 30, 29, 32, 26, 22, 22, 26, + 29, 26, 26, 29, 25, 17, 38, 34, 38, 33, 20, 28, 30, 38, 38, 30, + 18, 12, 157, 158, 116, 142, 157, 189, 222, 228, 229, 169, 140, 132, 135, 140, + 146, 138, 119, 158, 169, 166, 159, 151, 139, 107, 38, 28, 25, 36, 48, 69, + 73, 76, 73, 36, 138, 142, 143, 148, 143, 138, 134, 136, 130, 124, 115, 165, + 195, 198, 182, 123, 91, 64, 57, 63, 89, 102, 97, 72, 127, 169, 163, 144, + 161, 153, 140, 221, 199, 210, 111, 104, 112, 127, 140, 139, 143, 142, 134, 123, + 130, 128, 119, 122, 36, 30, 29, 79, 87, 83, 87, 87, 76, 110, 103, 111, + 122, 130, 122, 122, 126, 122, 120, 127, 140, 134, 122, 116, 57, 135, 134, 115, + 110, 114, 116, 111, 103, 104, 114, 45, 126, 142, 143, 132, 127, 124, 112, 130, + 126, 123, 83, 111, 135, 148, 118, 122, 114, 114, 110, 95, 79, 67, 96, 84, + 93, 93, 95, 97, 85, 87, 88, 88, 89, 81, 73, 55, 93, 93, 97, 91, + 77, 79, 84, 85, 73, 72, 88, 87, 126, 138, 132, 112, 128, 132, 136, 120, + 118, 136, 128, 118, 84, 96, 148, 139, 110, 130, 131, 131, 128, 107, 72, 76, + 119, 124, 108, 108, 111, 122, 123, 110, 107, 108, 104, 102, 92, 107, 108, 108, + 95, 104, 88, 107, 100, 110, 91, 38, 119, 112, 112, 112, 112, 111, 110, 112, + 107, 108, 89, 104, 61, 72, 76, 83, 79, 83, 83, 84, 83, 93, 77, 5, + 51, 124, 119, 68, 91, 110, 115, 107, 99, 112, 104, 83, 59, 81, 103, 213, + 229, 220, 107, 104, 128, 143, 148, 147, 154, 167, 169, 161, 135, 153, 155, 154, + 144, 136, 122, 25, 20, 20, 34, 59, 65, 71, 73, 71, 75, 80, 79, 63, + 73, 95, 103, 102, 100, 99, 102, 103, 103, 97, 96, 61, 12, 80, 93, 96, + 85, 88, 76, 77, 77, 77, 32, 49, 68, 87, 108, 79, 48, 41, 30, 29, + 32, 30, 30, 29, 33, 30, 25, 25, 32, 63, 65, 65, 55, 71, 40, 91, + 103, 119, 102, 189, 214, 212, 102, 96, 112, 124, 136, 140, 153, 165, 159, 140, + 128, 51, 36, 37, 22, 44, 42, 34, 42, 64, 72, 71, 79, 76, 85, 76, + 75, 65, 52, 118, 107, 111, 110, 103, 103, 97, 100, 106, 102, 85, 72, 83, + 103, 112, 107, 103, 107, 102, 96, 75, 67, 69, 53, 20, 64, 75, 85, 95, + 102, 85, 92, 83, 72, 53, 59, 24, 64, 84, 89, 80, 79, 77, 75, 65, + 71, 65, 56, 12, 51, 41, 44, 55, 64, 67, 49, 53, 65, 42, 49, 41, + 14, 60, 37, 42, 40, 40, 30, 28, 28, 20, 16, 45, 48, 45, 48, 38, + 57, 68, 71, 71, 61, 46, 36, 36, 67, 59, 68, 55, 61, 60, 65, 59, + 53, 61, 17, 60, 72, 69, 53, 59, 61, 61, 53, 53, 56, 52, 44, 49, + 51, 48, 44, 44, 44, 42, 48, 42, 40, 38, 37, 6, 60, 5, 28, 4, + 25, 6, 9, 24, 22, 9, 13, 18, 20, 20, 20, 21, 21, 21, 22, 24, + 24, 22, 28, 21, 26, 29, 26, 32, 28, 24, 24, 26, 28, 28, 25, 37, + 49, 32, 46, 28, 29, 65, 71, 65, 34, 55, 52, 26, 25, 21, 22, 26, + 24, 25, 20, 17, 14, 16, 20, 41, 18, 17, 56, 60, 71, 104, 106, 111, + 146, 150, 201, 230, 179, 171, 151, 124, 148, 143, 140, 143, 132, 131, 165, 169, + 165, 158, 150, 134, 93, 33, 26, 26, 40, 52, 71, 76, 72, 72, 21, 134, + 136, 136, 136, 108, 119, 126, 118, 132, 130, 116, 175, 202, 195, 182, 119, 89, + 65, 59, 63, 92, 97, 108, 97, 95, 132, 161, 148, 147, 144, 140, 221, 210, + 214, 112, 104, 110, 126, 126, 126, 127, 126, 131, 134, 132, 131, 124, 123, 34, + 29, 30, 69, 76, 81, 89, 91, 87, 96, 91, 97, 110, 110, 99, 106, 107, + 110, 112, 112, 115, 120, 118, 118, 112, 119, 115, 112, 111, 108, 106, 104, 97, + 106, 93, 51, 119, 147, 120, 112, 106, 107, 110, 104, 102, 103, 87, 102, 103, + 99, 99, 93, 89, 84, 85, 81, 77, 65, 53, 32, 33, 30, 30, 29, 26, + 25, 25, 22, 25, 21, 21, 22, 22, 29, 34, 33, 29, 32, 42, 61, 56, + 60, 57, 76, 107, 102, 122, 130, 118, 108, 122, 124, 123, 120, 120, 106, 95, + 107, 96, 91, 77, 64, 63, 63, 73, 63, 51, 69, 73, 81, 80, 79, 107, + 110, 108, 88, 85, 69, 64, 75, 83, 95, 97, 96, 79, 69, 72, 92, 100, + 99, 88, 37, 69, 77, 68, 79, 79, 80, 80, 84, 84, 87, 89, 89, 87, + 93, 67, 67, 57, 40, 29, 26, 36, 42, 33, 0, 26, 26, 38, 34, 40, + 44, 52, 55, 65, 77, 104, 88, 79, 73, 114, 212, 230, 220, 106, 103, 110, + 119, 135, 146, 157, 154, 159, 154, 138, 155, 155, 153, 143, 131, 119, 24, 20, + 18, 26, 36, 52, 51, 60, 65, 68, 71, 67, 67, 83, 85, 88, 85, 88, + 87, 89, 88, 93, 93, 87, 63, 16, 88, 92, 72, 63, 63, 57, 48, 68, + 64, 36, 32, 33, 53, 41, 37, 32, 34, 28, 29, 37, 36, 28, 28, 28, + 29, 38, 40, 40, 41, 44, 44, 45, 71, 36, 53, 56, 68, 104, 178, 217, + 208, 104, 100, 111, 120, 134, 144, 153, 167, 158, 139, 126, 52, 40, 16, 30, + 32, 36, 34, 41, 40, 41, 38, 40, 41, 44, 41, 40, 51, 34, 48, 91, + 91, 79, 77, 87, 89, 80, 77, 80, 77, 73, 77, 76, 77, 79, 85, 73, + 75, 64, 57, 46, 56, 51, 52, 56, 53, 32, 59, 59, 46, 63, 46, 41, + 60, 52, 52, 55, 56, 53, 51, 51, 45, 46, 41, 55, 38, 34, 6, 16, + 14, 24, 24, 21, 22, 29, 26, 28, 36, 51, 33, 22, 33, 32, 24, 26, + 29, 29, 28, 48, 33, 37, 29, 34, 40, 37, 33, 33, 41, 48, 45, 42, + 42, 45, 42, 44, 45, 46, 44, 44, 42, 44, 44, 42, 37, 18, 29, 45, + 32, 33, 33, 45, 32, 33, 34, 40, 38, 32, 30, 37, 34, 33, 32, 30, + 30, 30, 30, 29, 28, 26, 2, 37, 34, 34, 32, 46, 42, 41, 42, 46, + 48, 51, 51, 59, 64, 68, 72, 83, 107, 128, 150, 163, 171, 228, 226, 222, + 209, 202, 205, 199, 204, 191, 187, 178, 162, 80, 36, 32, 29, 29, 22, 73, + 65, 155, 185, 165, 161, 159, 100, 83, 83, 61, 51, 48, 57, 87, 111, 144, + 162, 154, 116, 76, 45, 16, 9, 9, 142, 139, 140, 161, 159, 205, 140, 147, + 130, 124, 127, 135, 132, 143, 148, 140, 139, 169, 170, 162, 154, 140, 128, 55, + 29, 25, 30, 45, 56, 40, 67, 67, 55, 29, 77, 95, 88, 91, 91, 93, + 93, 99, 140, 119, 91, 166, 193, 198, 182, 118, 83, 63, 59, 68, 91, 91, + 95, 96, 102, 108, 106, 112, 114, 150, 118, 225, 218, 218, 111, 102, 108, 123, + 116, 116, 115, 116, 119, 131, 131, 134, 124, 120, 29, 24, 25, 42, 38, 42, + 45, 48, 38, 40, 46, 53, 60, 77, 73, 80, 84, 85, 83, 89, 93, 97, + 102, 96, 87, 100, 106, 99, 104, 110, 116, 146, 132, 92, 99, 110, 108, 95, + 92, 87, 80, 79, 72, 72, 63, 56, 56, 57, 49, 64, 59, 57, 56, 63, + 56, 61, 56, 89, 112, 146, 150, 144, 155, 147, 153, 146, 158, 157, 136, 110, + 111, 107, 116, 136, 136, 120, 110, 93, 73, 60, 51, 42, 29, 29, 25, 25, + 21, 21, 22, 24, 20, 24, 26, 26, 25, 24, 29, 37, 107, 114, 120, 126, + 132, 128, 96, 106, 57, 134, 130, 143, 116, 68, 64, 84, 60, 63, 111, 118, + 124, 114, 115, 123, 128, 123, 112, 103, 92, 84, 60, 59, 84, 40, 22, 21, + 21, 22, 16, 16, 17, 20, 13, 14, 16, 16, 16, 18, 52, 60, 91, 107, + 103, 106, 97, 65, 61, 0, 84, 124, 114, 80, 115, 81, 92, 89, 68, 57, + 55, 63, 60, 63, 106, 201, 216, 208, 95, 92, 103, 104, 99, 112, 130, 147, + 154, 159, 132, 148, 158, 154, 140, 134, 118, 20, 17, 17, 14, 14, 14, 16, + 16, 14, 17, 28, 25, 17, 21, 42, 59, 41, 44, 25, 30, 28, 49, 33, + 71, 24, 16, 92, 48, 38, 37, 37, 33, 40, 32, 26, 29, 26, 28, 29, + 28, 34, 30, 24, 24, 26, 25, 26, 28, 26, 28, 26, 28, 30, 32, 36, + 46, 53, 56, 73, 34, 83, 104, 104, 103, 177, 202, 193, 107, 100, 112, 124, + 132, 142, 155, 166, 159, 136, 111, 46, 42, 14, 24, 17, 22, 6, 6, 6, + 4, 5, 5, 4, 4, 2, 2, 2, 2, 4, 5, 5, 5, 8, 9, 9, + 10, 13, 14, 16, 16, 21, 21, 26, 28, 29, 33, 36, 36, 45, 68, 73, + 64, 57, 63, 49, 49, 52, 48, 44, 48, 49, 55, 71, 76, 85, 77, 72, + 69, 67, 71, 76, 68, 63, 49, 52, 56, 26, 38, 88, 96, 69, 60, 65, + 40, 29, 22, 24, 20, 24, 18, 25, 37, 36, 29, 34, 34, 30, 25, 33, + 38, 42, 55, 46, 48, 42, 45, 40, 36, 28, 24, 21, 22, 18, 20, 18, + 18, 17, 20, 18, 20, 17, 21, 21, 51, 20, 16, 14, 14, 12, 10, 10, + 9, 8, 6, 5, 4, 5, 4, 1, 1, 0, 18, 1, 0, 0, 1, 1, + 8, 44, 40, 56, 60, 85, 108, 146, 150, 165, 174, 165, 151, 140, 132, 120, + 122, 131, 118, 108, 118, 124, 139, 155, 165, 177, 186, 185, 182, 178, 179, 175, + 174, 169, 159, 147, 150, 139, 28, 22, 18, 72, 40, 132, 189, 194, 197, 194, + 191, 198, 190, 187, 195, 201, 190, 197, 197, 204, 201, 189, 197, 195, 138, 59, + 51, 13, 10, 173, 173, 178, 170, 199, 169, 173, 163, 140, 151, 103, 103, 108, + 111, 111, 132, 140, 167, 167, 163, 150, 139, 124, 52, 29, 26, 41, 46, 63, + 64, 73, 60, 67, 67, 71, 87, 96, 99, 112, 119, 130, 120, 110, 135, 103, + 161, 193, 197, 147, 120, 83, 64, 59, 81, 87, 85, 76, 81, 93, 99, 99, + 110, 130, 147, 147, 221, 218, 218, 110, 100, 108, 115, 112, 122, 128, 131, 132, + 130, 132, 140, 126, 126, 33, 26, 26, 41, 55, 75, 77, 84, 99, 175, 185, + 193, 198, 198, 193, 201, 208, 210, 205, 202, 195, 191, 197, 197, 194, 189, 190, + 185, 182, 178, 183, 178, 183, 142, 120, 80, 88, 91, 119, 157, 178, 194, 191, + 182, 177, 169, 167, 174, 167, 161, 142, 134, 140, 143, 136, 148, 161, 130, 163, + 178, 190, 195, 199, 198, 193, 193, 189, 169, 148, 130, 150, 147, 140, 151, 150, + 155, 146, 154, 140, 139, 124, 97, 75, 45, 112, 135, 128, 124, 124, 130, 128, + 135, 130, 130, 122, 120, 122, 120, 116, 135, 134, 134, 140, 132, 115, 115, 53, + 138, 151, 122, 119, 150, 148, 144, 132, 116, 140, 163, 174, 179, 171, 175, 175, + 171, 165, 154, 131, 118, 112, 92, 85, 38, 52, 131, 140, 116, 119, 110, 132, + 118, 122, 115, 110, 103, 112, 128, 120, 112, 110, 122, 106, 108, 122, 93, 65, + 2, 110, 128, 136, 142, 104, 138, 135, 115, 119, 96, 80, 77, 99, 104, 108, + 220, 229, 222, 107, 103, 114, 111, 111, 111, 114, 114, 119, 118, 139, 157, 159, + 151, 139, 130, 111, 22, 20, 18, 37, 48, 48, 53, 51, 52, 51, 59, 51, + 30, 56, 107, 104, 89, 93, 95, 61, 38, 36, 40, 42, 46, 33, 61, 80, + 88, 88, 95, 103, 100, 87, 79, 87, 102, 110, 97, 89, 81, 83, 73, 75, + 44, 44, 40, 34, 37, 45, 55, 53, 53, 59, 73, 77, 72, 76, 77, 32, + 103, 103, 111, 108, 187, 213, 179, 106, 102, 111, 126, 134, 146, 154, 169, 161, + 159, 130, 55, 44, 12, 12, 21, 22, 41, 83, 87, 91, 92, 92, 99, 97, + 96, 93, 57, 36, 84, 106, 118, 111, 108, 111, 119, 115, 108, 104, 108, 104, + 116, 134, 123, 122, 119, 103, 95, 99, 110, 169, 179, 190, 175, 154, 115, 81, + 72, 71, 77, 87, 124, 143, 162, 146, 150, 144, 136, 144, 123, 120, 115, 110, + 77, 57, 55, 44, 20, 85, 102, 124, 127, 102, 106, 79, 72, 76, 80, 67, + 64, 85, 134, 144, 154, 155, 155, 157, 157, 150, 157, 165, 181, 187, 185, 170, + 155, 110, 91, 51, 49, 44, 44, 32, 12, 32, 77, 92, 68, 77, 75, 69, + 64, 52, 41, 18, 34, 83, 95, 84, 84, 97, 96, 81, 110, 110, 110, 80, + 85, 120, 128, 157, 157, 153, 158, 147, 140, 132, 84, 48, 45, 67, 120, 158, + 170, 183, 194, 193, 193, 198, 201, 190, 179, 189, 175, 161, 159, 161, 148, 142, + 143, 143, 138, 140, 135, 148, 147, 153, 179, 179, 162, 150, 159, 146, 139, 134, + 150, 136, 114, 119, 102, 53, 167, 212, 202, 220, 179, 218, 174, 214, 204, 224, + 206, 212, 195, 205, 202, 201, 195, 202, 198, 147, 67, 68, 63, 64, 182, 189, + 171, 183, 210, 197, 238, 198, 135, 104, 108, 124, 128, 136, 123, 132, 148, 170, + 167, 153, 144, 139, 126, 49, 29, 26, 67, 65, 83, 97, 106, 110, 108, 132, + 147, 154, 157, 162, 162, 165, 163, 166, 144, 135, 91, 127, 169, 195, 136, 108, + 72, 68, 67, 84, 107, 107, 103, 96, 91, 134, 155, 155, 157, 153, 142, 226, + 221, 220, 108, 100, 110, 116, 131, 136, 135, 136, 135, 134, 130, 138, 124, 124, + 33, 25, 26, 57, 80, 95, 151, 110, 170, 191, 201, 210, 208, 210, 212, 220, + 222, 222, 222, 230, 232, 232, 233, 234, 234, 230, 236, 225, 233, 237, 237, 229, + 225, 225, 220, 224, 224, 216, 216, 218, 216, 221, 216, 214, 205, 204, 201, 204, + 199, 195, 187, 174, 174, 134, 132, 157, 174, 181, 193, 202, 210, 212, 209, 213, + 210, 210, 208, 204, 199, 186, 151, 139, 130, 122, 139, 139, 143, 148, 148, 148, + 146, 118, 92, 46, 142, 134, 147, 140, 143, 142, 130, 128, 130, 136, 135, 115, + 93, 140, 151, 157, 153, 147, 138, 130, 136, 112, 56, 147, 148, 146, 124, 154, + 120, 131, 147, 159, 193, 213, 222, 221, 220, 218, 214, 210, 206, 195, 193, 181, + 171, 116, 85, 46, 131, 139, 123, 120, 130, 134, 138, 118, 115, 130, 132, 123, + 99, 126, 126, 126, 126, 123, 123, 123, 116, 110, 76, 0, 99, 124, 132, 127, + 100, 104, 124, 123, 102, 112, 116, 65, 102, 126, 110, 228, 236, 222, 106, 97, + 108, 124, 131, 136, 140, 139, 138, 138, 143, 159, 155, 147, 139, 131, 118, 20, + 20, 20, 46, 48, 60, 76, 71, 72, 64, 61, 55, 40, 91, 118, 124, 122, + 124, 118, 108, 99, 111, 104, 88, 93, 103, 110, 100, 104, 100, 107, 116, 118, + 96, 106, 102, 123, 140, 135, 128, 143, 142, 140, 100, 88, 84, 75, 72, 65, + 72, 67, 57, 45, 61, 65, 59, 57, 59, 77, 40, 102, 111, 111, 108, 210, + 217, 187, 102, 99, 108, 124, 135, 143, 155, 167, 161, 143, 135, 55, 56, 61, + 64, 65, 92, 88, 99, 102, 103, 102, 107, 89, 93, 93, 92, 95, 42, 112, + 108, 111, 122, 116, 143, 159, 171, 174, 179, 179, 181, 189, 194, 191, 186, 187, + 185, 185, 183, 186, 193, 194, 195, 193, 186, 177, 177, 153, 146, 159, 146, 158, + 181, 186, 199, 195, 190, 189, 187, 174, 175, 182, 177, 155, 80, 51, 55, 26, + 97, 118, 106, 123, 128, 110, 124, 120, 97, 118, 130, 165, 165, 182, 186, 193, + 186, 189, 187, 190, 194, 194, 199, 206, 206, 208, 205, 205, 198, 179, 159, 110, + 69, 59, 30, 9, 84, 93, 80, 89, 95, 80, 89, 79, 67, 33, 21, 93, + 170, 181, 185, 178, 182, 189, 198, 206, 202, 197, 199, 195, 197, 194, 195, 179, + 193, 193, 185, 148, 171, 140, 65, 46, 96, 153, 178, 186, 194, 195, 201, 205, + 204, 205, 202, 179, 204, 198, 161, 110, 104, 151, 170, 167, 165, 150, 157, 153, + 142, 122, 120, 106, 116, 112, 107, 146, 150, 97, 150, 158, 118, 112, 110, 59, + 41, 93, 157, 187, 144, 126, 97, 102, 110, 110, 138, 179, 185, 185, 193, 173, + 178, 189, 193, 112, 79, 67, 88, 103, 115, 163, 162, 173, 189, 187, 204, 242, + 216, 138, 104, 122, 131, 139, 151, 158, 162, 166, 163, 154, 153, 143, 139, 126, + 46, 28, 29, 63, 80, 91, 124, 115, 134, 142, 131, 136, 140, 159, 163, 157, + 166, 161, 159, 155, 140, 130, 116, 124, 181, 127, 96, 77, 69, 65, 99, 104, + 99, 95, 75, 124, 162, 159, 157, 153, 153, 148, 233, 224, 218, 103, 99, 115, + 122, 136, 132, 138, 140, 138, 132, 130, 135, 124, 123, 33, 25, 26, 57, 77, + 144, 95, 104, 119, 135, 189, 197, 202, 212, 213, 216, 218, 221, 225, 226, 226, + 232, 233, 234, 234, 233, 236, 229, 236, 237, 236, 232, 225, 218, 213, 216, 217, + 222, 224, 221, 218, 220, 214, 199, 202, 189, 181, 198, 186, 187, 143, 122, 150, + 163, 171, 186, 201, 202, 197, 191, 204, 209, 209, 213, 213, 212, 210, 208, 205, + 202, 197, 185, 167, 138, 120, 118, 139, 135, 135, 140, 136, 135, 100, 61, 146, + 143, 146, 139, 139, 131, 128, 130, 130, 128, 127, 92, 111, 153, 140, 127, 151, + 153, 147, 119, 111, 108, 56, 153, 147, 157, 148, 155, 158, 150, 169, 214, 225, + 234, 232, 222, 216, 206, 194, 171, 159, 136, 116, 99, 92, 159, 102, 60, 142, + 134, 139, 144, 140, 138, 134, 126, 134, 127, 115, 87, 123, 135, 131, 118, 118, + 126, 120, 114, 123, 89, 71, 0, 104, 95, 103, 119, 124, 123, 131, 139, 134, + 120, 116, 72, 99, 124, 110, 233, 237, 233, 108, 100, 111, 132, 140, 148, 154, + 155, 154, 157, 153, 151, 144, 143, 142, 135, 124, 21, 20, 21, 45, 65, 64, + 61, 71, 71, 73, 64, 63, 42, 99, 124, 130, 127, 123, 128, 115, 116, 120, + 130, 119, 100, 88, 108, 150, 179, 185, 194, 201, 210, 212, 205, 209, 216, 220, + 218, 218, 226, 226, 217, 210, 214, 194, 201, 199, 204, 195, 169, 85, 46, 41, + 57, 55, 60, 55, 77, 42, 91, 102, 112, 120, 217, 224, 213, 97, 95, 108, + 123, 135, 144, 154, 166, 167, 159, 171, 97, 88, 84, 85, 88, 92, 93, 111, + 115, 120, 103, 106, 102, 115, 102, 97, 93, 93, 75, 108, 102, 93, 118, 177, + 187, 187, 173, 182, 194, 189, 197, 185, 182, 198, 185, 198, 199, 190, 186, 185, + 178, 181, 182, 187, 195, 185, 178, 139, 144, 182, 197, 197, 195, 189, 201, 189, + 174, 140, 143, 127, 119, 127, 115, 91, 42, 52, 28, 83, 91, 111, 96, 100, + 118, 97, 92, 115, 151, 158, 178, 182, 181, 178, 170, 178, 183, 190, 183, 182, + 178, 171, 175, 179, 185, 195, 201, 202, 202, 201, 191, 128, 60, 38, 9, 92, + 92, 81, 77, 73, 68, 73, 88, 80, 46, 30, 122, 178, 181, 174, 190, 204, + 204, 204, 205, 204, 208, 199, 189, 183, 187, 179, 174, 167, 151, 158, 150, 146, + 123, 73, 55, 119, 155, 177, 185, 190, 197, 208, 208, 170, 169, 151, 140, 142, + 138, 116, 73, 77, 99, 167, 171, 154, 144, 134, 134, 130, 128, 126, 120, 126, + 127, 134, 134, 142, 143, 144, 146, 107, 99, 102, 114, 53, 61, 75, 83, 79, + 77, 75, 73, 75, 79, 77, 79, 80, 84, 88, 91, 92, 85, 81, 76, 63, + 89, 22, 18, 13, 155, 155, 177, 182, 202, 208, 201, 205, 144, 110, 115, 138, + 161, 162, 162, 166, 166, 161, 155, 148, 142, 139, 127, 45, 28, 29, 67, 88, + 97, 126, 130, 136, 110, 154, 159, 154, 155, 163, 154, 166, 166, 165, 157, 142, + 123, 75, 116, 178, 131, 99, 73, 68, 71, 102, 111, 96, 97, 85, 146, 166, + 158, 153, 150, 148, 148, 238, 228, 221, 110, 100, 115, 124, 134, 135, 143, 140, + 134, 127, 126, 131, 124, 120, 32, 24, 26, 57, 83, 104, 110, 108, 161, 158, + 175, 177, 142, 165, 146, 148, 146, 142, 138, 136, 134, 132, 130, 130, 126, 123, + 123, 128, 123, 119, 118, 119, 112, 110, 112, 115, 169, 186, 220, 193, 185, 181, + 166, 144, 120, 115, 118, 120, 127, 120, 123, 144, 140, 174, 198, 199, 201, 206, + 189, 173, 175, 171, 162, 153, 143, 146, 144, 148, 148, 171, 186, 187, 194, 143, + 126, 107, 120, 130, 102, 124, 131, 135, 107, 59, 118, 142, 151, 135, 130, 134, + 139, 128, 122, 116, 131, 83, 106, 154, 153, 131, 135, 144, 122, 122, 116, 108, + 65, 155, 155, 142, 155, 155, 159, 165, 218, 234, 240, 230, 221, 197, 148, 124, + 110, 106, 99, 96, 85, 69, 72, 93, 93, 38, 93, 132, 128, 132, 124, 119, + 114, 119, 115, 131, 119, 67, 116, 130, 126, 118, 126, 120, 119, 112, 123, 93, + 64, 0, 102, 104, 124, 122, 120, 110, 114, 122, 120, 126, 88, 53, 103, 134, + 99, 232, 238, 234, 111, 103, 111, 138, 144, 153, 151, 159, 159, 165, 159, 161, + 155, 146, 140, 136, 124, 18, 17, 18, 44, 69, 67, 63, 68, 71, 89, 64, + 63, 33, 92, 120, 120, 122, 128, 126, 122, 126, 114, 111, 97, 63, 111, 126, + 115, 173, 195, 204, 210, 212, 216, 217, 221, 222, 226, 226, 232, 232, 228, 228, + 225, 222, 225, 224, 221, 218, 214, 190, 96, 52, 48, 56, 65, 53, 63, 76, + 41, 67, 93, 111, 107, 226, 230, 222, 102, 93, 108, 122, 134, 144, 154, 166, + 170, 166, 139, 173, 130, 135, 185, 198, 202, 204, 204, 205, 204, 201, 199, 202, + 199, 193, 185, 128, 92, 95, 96, 65, 111, 120, 122, 187, 198, 179, 195, 198, + 198, 173, 157, 135, 147, 166, 185, 185, 182, 165, 167, 146, 158, 157, 154, 151, + 148, 134, 122, 167, 197, 201, 199, 193, 189, 162, 144, 118, 111, 111, 106, 107, + 106, 115, 52, 44, 48, 26, 91, 95, 112, 120, 92, 102, 114, 85, 115, 147, + 165, 186, 191, 169, 157, 134, 132, 132, 139, 134, 134, 126, 123, 120, 127, 128, + 146, 154, 155, 167, 177, 190, 173, 88, 49, 14, 59, 97, 81, 72, 75, 72, + 79, 79, 84, 48, 26, 115, 165, 186, 197, 199, 230, 194, 201, 201, 199, 193, + 181, 175, 189, 181, 171, 167, 102, 88, 84, 79, 87, 79, 75, 64, 115, 162, + 177, 190, 205, 175, 166, 147, 123, 130, 120, 118, 122, 114, 119, 69, 60, 88, + 107, 167, 165, 144, 158, 132, 128, 116, 132, 130, 134, 134, 134, 134, 139, 140, + 143, 134, 103, 91, 95, 111, 61, 65, 67, 69, 65, 72, 80, 83, 79, 72, + 77, 69, 81, 75, 77, 76, 77, 75, 71, 91, 79, 16, 12, 12, 46, 144, + 147, 167, 175, 199, 212, 240, 199, 131, 106, 127, 144, 158, 165, 161, 163, 162, + 163, 155, 153, 144, 139, 122, 41, 26, 29, 65, 83, 108, 122, 130, 143, 119, + 151, 158, 148, 158, 150, 158, 150, 171, 163, 148, 136, 132, 77, 108, 175, 135, + 124, 92, 76, 71, 99, 99, 95, 79, 68, 154, 167, 158, 157, 153, 148, 147, + 238, 228, 222, 108, 102, 114, 126, 131, 138, 138, 130, 126, 124, 127, 126, 123, + 116, 30, 24, 24, 56, 72, 85, 108, 95, 126, 151, 151, 126, 148, 130, 119, + 119, 119, 119, 108, 114, 115, 114, 107, 107, 106, 107, 104, 104, 100, 103, 99, + 99, 99, 97, 97, 97, 106, 108, 110, 107, 106, 104, 106, 106, 96, 97, 100, + 104, 106, 110, 112, 144, 136, 190, 197, 208, 206, 189, 158, 132, 118, 111, 114, + 108, 106, 110, 112, 111, 114, 116, 132, 136, 163, 169, 126, 104, 127, 123, 132, + 134, 128, 130, 104, 61, 136, 150, 147, 139, 142, 134, 154, 127, 118, 114, 127, + 79, 114, 155, 150, 134, 120, 122, 114, 119, 116, 103, 63, 146, 157, 147, 166, + 161, 166, 216, 232, 242, 240, 222, 169, 103, 92, 83, 85, 85, 84, 77, 73, + 61, 57, 72, 91, 63, 99, 124, 132, 122, 116, 114, 112, 111, 116, 122, 111, + 81, 118, 134, 119, 119, 128, 127, 115, 118, 124, 108, 63, 5, 100, 115, 126, + 116, 130, 138, 131, 127, 126, 118, 85, 51, 96, 116, 96, 237, 242, 236, 111, + 103, 111, 138, 148, 157, 155, 163, 169, 171, 167, 162, 157, 147, 142, 134, 120, + 16, 18, 21, 42, 65, 61, 67, 67, 79, 77, 68, 59, 45, 87, 120, 122, + 110, 119, 128, 120, 123, 108, 96, 89, 64, 107, 122, 138, 124, 146, 166, 201, + 213, 210, 214, 220, 226, 226, 229, 216, 236, 234, 232, 218, 230, 234, 229, 206, + 234, 234, 190, 95, 46, 37, 65, 68, 55, 65, 73, 53, 52, 97, 110, 106, + 229, 234, 228, 103, 95, 108, 119, 132, 147, 153, 165, 171, 171, 163, 178, 183, + 190, 197, 204, 204, 205, 204, 204, 201, 202, 198, 199, 197, 193, 190, 187, 178, + 123, 104, 100, 99, 75, 93, 112, 130, 116, 111, 115, 103, 100, 97, 95, 102, + 100, 107, 107, 106, 104, 104, 103, 102, 104, 110, 110, 108, 136, 124, 165, 199, + 198, 190, 191, 142, 119, 112, 111, 110, 115, 114, 116, 123, 93, 42, 36, 37, + 20, 89, 97, 107, 111, 110, 96, 118, 119, 124, 167, 166, 153, 165, 153, 115, + 99, 96, 97, 99, 100, 100, 99, 99, 102, 104, 106, 110, 111, 116, 120, 126, + 135, 174, 128, 63, 14, 68, 95, 80, 79, 77, 73, 71, 68, 84, 49, 29, + 51, 87, 148, 166, 161, 151, 139, 116, 108, 102, 87, 80, 85, 80, 83, 80, + 73, 69, 71, 67, 67, 67, 63, 79, 69, 118, 166, 177, 178, 170, 131, 126, + 104, 110, 123, 124, 131, 123, 130, 114, 67, 68, 67, 72, 106, 190, 163, 154, + 147, 140, 136, 135, 136, 138, 134, 134, 138, 138, 132, 119, 135, 95, 37, 88, + 88, 89, 93, 96, 59, 68, 99, 128, 112, 114, 102, 99, 88, 91, 88, 83, + 96, 81, 81, 96, 85, 25, 10, 9, 16, 21, 138, 139, 142, 165, 195, 213, + 244, 185, 130, 110, 128, 153, 162, 165, 165, 169, 173, 165, 158, 151, 144, 136, + 123, 41, 26, 32, 68, 76, 102, 104, 119, 130, 108, 148, 155, 143, 170, 150, + 148, 163, 147, 146, 130, 132, 128, 87, 119, 169, 171, 138, 119, 96, 95, 96, + 97, 91, 79, 107, 151, 165, 159, 155, 148, 143, 140, 242, 232, 230, 103, 100, + 114, 123, 131, 138, 128, 127, 124, 136, 135, 132, 127, 122, 30, 22, 24, 55, + 67, 84, 122, 115, 88, 119, 148, 134, 134, 138, 126, 124, 112, 122, 124, 118, + 115, 111, 115, 115, 115, 115, 114, 111, 112, 114, 112, 114, 118, 119, 115, 112, + 99, 99, 97, 97, 97, 99, 97, 102, 108, 112, 116, 119, 122, 122, 120, 146, + 131, 157, 201, 186, 163, 142, 114, 122, 122, 119, 119, 119, 120, 120, 120, 118, + 116, 115, 110, 110, 115, 138, 128, 103, 123, 123, 127, 130, 130, 128, 107, 63, + 136, 150, 150, 146, 148, 126, 150, 131, 115, 123, 127, 73, 106, 146, 143, 134, + 134, 130, 126, 120, 120, 108, 71, 153, 161, 170, 155, 162, 208, 232, 242, 244, + 233, 171, 118, 84, 75, 68, 64, 61, 65, 64, 64, 49, 59, 64, 92, 64, + 67, 136, 134, 119, 115, 115, 119, 116, 108, 119, 116, 79, 115, 131, 118, 127, + 130, 118, 115, 120, 118, 118, 68, 1, 107, 111, 130, 111, 116, 112, 118, 124, + 127, 107, 79, 63, 85, 126, 100, 229, 238, 237, 110, 99, 111, 136, 151, 158, + 163, 169, 179, 179, 177, 165, 161, 150, 143, 132, 122, 16, 16, 20, 41, 67, + 68, 64, 71, 76, 81, 67, 59, 45, 88, 116, 119, 120, 124, 118, 123, 120, + 107, 93, 97, 59, 100, 130, 115, 136, 135, 136, 138, 147, 154, 148, 139, 138, + 139, 140, 142, 159, 153, 148, 163, 173, 146, 142, 155, 171, 135, 118, 88, 40, + 41, 67, 68, 59, 64, 67, 72, 33, 88, 100, 104, 233, 234, 232, 107, 96, + 108, 120, 132, 147, 155, 167, 174, 174, 170, 165, 135, 178, 189, 195, 204, 204, + 205, 202, 202, 202, 201, 199, 198, 198, 194, 189, 181, 177, 163, 158, 103, 97, + 96, 75, 77, 85, 97, 84, 95, 92, 95, 93, 97, 96, 103, 102, 102, 103, + 104, 106, 107, 106, 108, 112, 115, 138, 128, 157, 190, 183, 185, 126, 114, 116, + 112, 123, 122, 124, 122, 127, 124, 83, 32, 32, 41, 24, 87, 97, 104, 104, + 114, 110, 92, 110, 138, 142, 148, 128, 126, 100, 92, 100, 107, 106, 104, 106, + 106, 110, 110, 111, 110, 112, 111, 111, 112, 114, 115, 115, 126, 151, 73, 18, + 61, 87, 75, 80, 79, 80, 76, 72, 75, 63, 42, 44, 46, 65, 73, 76, + 71, 79, 80, 71, 71, 68, 71, 68, 75, 75, 72, 69, 72, 80, 108, 112, + 115, 114, 85, 77, 123, 197, 186, 144, 111, 111, 123, 126, 134, 135, 138, 136, + 136, 138, 102, 55, 24, 57, 75, 65, 89, 183, 165, 150, 151, 151, 146, 148, + 147, 153, 151, 153, 153, 148, 139, 111, 100, 89, 92, 80, 77, 81, 96, 87, + 65, 97, 185, 187, 136, 135, 118, 120, 120, 112, 126, 127, 128, 118, 114, 37, + 16, 10, 20, 25, 40, 132, 136, 131, 169, 202, 216, 244, 171, 132, 110, 130, + 154, 161, 165, 169, 170, 174, 170, 165, 148, 143, 135, 124, 41, 28, 33, 75, + 72, 97, 120, 111, 130, 114, 151, 154, 136, 165, 151, 147, 143, 174, 144, 132, + 131, 123, 72, 103, 162, 159, 134, 139, 126, 104, 111, 96, 80, 67, 107, 163, + 159, 163, 150, 159, 162, 147, 240, 232, 233, 108, 96, 114, 123, 134, 127, 138, + 140, 143, 150, 148, 140, 130, 126, 30, 22, 24, 60, 72, 87, 102, 96, 123, + 84, 103, 150, 130, 132, 120, 128, 144, 150, 134, 134, 134, 147, 131, 134, 134, + 140, 130, 128, 131, 140, 134, 135, 142, 143, 138, 135, 126, 118, 114, 115, 116, + 116, 118, 122, 126, 132, 135, 140, 140, 142, 130, 126, 120, 134, 148, 138, 114, + 127, 128, 148, 147, 131, 130, 131, 130, 131, 131, 131, 128, 127, 123, 122, 118, + 114, 134, 102, 108, 131, 123, 124, 130, 126, 108, 73, 132, 147, 144, 144, 148, + 136, 154, 142, 112, 120, 112, 68, 104, 144, 144, 118, 128, 100, 135, 132, 132, + 120, 110, 155, 178, 171, 171, 198, 225, 242, 246, 240, 217, 132, 89, 71, 46, + 46, 55, 51, 51, 56, 64, 57, 63, 60, 127, 68, 61, 135, 131, 118, 119, + 120, 122, 120, 115, 111, 114, 73, 112, 132, 119, 127, 122, 116, 115, 114, 120, + 96, 65, 2, 106, 111, 107, 116, 116, 119, 119, 126, 120, 107, 65, 73, 91, + 122, 119, 241, 244, 238, 116, 100, 111, 135, 147, 158, 163, 170, 179, 178, 177, + 175, 163, 146, 142, 134, 123, 16, 17, 18, 40, 64, 65, 67, 71, 81, 76, + 67, 63, 42, 76, 106, 120, 122, 119, 123, 126, 107, 87, 85, 77, 59, 107, + 120, 115, 139, 139, 122, 126, 128, 127, 127, 131, 128, 124, 128, 132, 131, 134, + 135, 136, 135, 136, 126, 130, 124, 123, 99, 64, 34, 32, 68, 64, 59, 63, + 63, 68, 22, 85, 111, 107, 233, 241, 233, 110, 99, 111, 124, 134, 146, 155, + 167, 173, 175, 174, 166, 167, 148, 143, 143, 140, 138, 135, 134, 131, 132, 130, + 128, 128, 126, 122, 122, 116, 122, 120, 122, 108, 114, 97, 110, 103, 107, 103, + 103, 103, 104, 106, 104, 104, 108, 110, 108, 108, 111, 114, 115, 115, 116, 119, + 122, 124, 118, 127, 124, 167, 198, 130, 120, 124, 128, 132, 134, 135, 132, 130, + 131, 127, 72, 32, 32, 38, 14, 79, 95, 102, 107, 100, 100, 97, 102, 96, + 97, 92, 97, 97, 85, 80, 73, 79, 95, 95, 115, 114, 115, 118, 120, 120, + 122, 122, 124, 124, 124, 123, 122, 119, 163, 92, 37, 41, 73, 91, 87, 77, + 68, 71, 73, 64, 76, 48, 28, 63, 60, 69, 73, 83, 83, 84, 84, 92, + 89, 95, 97, 102, 103, 107, 108, 106, 111, 122, 124, 128, 124, 95, 80, 116, + 166, 158, 130, 108, 132, 136, 144, 142, 143, 142, 142, 142, 132, 83, 22, 40, + 53, 61, 60, 71, 110, 169, 165, 142, 132, 158, 157, 158, 158, 162, 162, 163, + 161, 157, 144, 123, 96, 44, 81, 85, 79, 79, 79, 59, 100, 194, 182, 166, + 163, 136, 130, 131, 136, 124, 132, 148, 126, 107, 38, 14, 8, 22, 26, 8, + 126, 130, 126, 165, 210, 221, 237, 166, 122, 110, 130, 151, 162, 166, 167, 169, + 173, 170, 165, 153, 140, 138, 127, 44, 28, 36, 69, 89, 108, 112, 119, 123, + 106, 147, 148, 139, 157, 153, 148, 144, 127, 131, 138, 130, 115, 65, 102, 155, + 157, 143, 150, 138, 122, 163, 128, 76, 61, 131, 162, 157, 155, 147, 157, 153, + 143, 241, 233, 234, 108, 96, 111, 123, 136, 139, 153, 158, 163, 165, 158, 144, + 132, 128, 30, 22, 25, 56, 63, 84, 85, 108, 136, 115, 83, 91, 142, 146, + 122, 174, 182, 162, 134, 148, 166, 142, 142, 148, 154, 143, 140, 144, 151, 142, + 144, 148, 143, 147, 148, 147, 144, 140, 136, 136, 135, 140, 143, 143, 147, 148, + 154, 154, 153, 154, 147, 128, 153, 116, 112, 136, 132, 112, 88, 81, 95, 119, + 134, 161, 134, 136, 159, 138, 138, 136, 134, 132, 128, 118, 134, 112, 85, 122, + 128, 127, 122, 132, 112, 73, 80, 143, 148, 154, 148, 132, 154, 142, 106, 123, + 106, 65, 132, 135, 142, 135, 136, 134, 147, 162, 174, 179, 186, 208, 217, 225, + 226, 229, 241, 246, 248, 238, 177, 104, 60, 73, 69, 81, 68, 83, 77, 75, + 72, 72, 72, 76, 72, 84, 57, 108, 127, 120, 122, 123, 122, 126, 120, 114, + 115, 68, 111, 126, 118, 127, 120, 116, 118, 118, 123, 102, 63, 4, 103, 115, + 120, 126, 122, 122, 123, 123, 123, 93, 45, 60, 83, 122, 106, 238, 245, 241, + 114, 102, 110, 136, 148, 155, 163, 170, 174, 177, 177, 175, 166, 146, 138, 135, + 123, 14, 16, 22, 37, 59, 63, 67, 68, 77, 68, 68, 57, 41, 69, 99, + 114, 127, 119, 116, 110, 107, 84, 88, 83, 46, 110, 119, 124, 115, 116, 108, + 110, 148, 150, 123, 134, 136, 142, 143, 142, 135, 135, 136, 136, 134, 130, 131, + 128, 126, 114, 97, 46, 33, 33, 64, 69, 59, 65, 65, 69, 28, 85, 104, + 108, 229, 238, 237, 110, 100, 112, 124, 135, 146, 157, 169, 173, 175, 174, 159, + 151, 120, 96, 89, 110, 107, 120, 119, 119, 116, 115, 112, 108, 102, 100, 102, + 102, 96, 96, 91, 88, 84, 83, 79, 83, 91, 83, 87, 174, 111, 108, 108, + 114, 112, 116, 118, 118, 119, 123, 127, 127, 128, 128, 131, 134, 132, 135, 126, + 127, 124, 124, 131, 140, 144, 144, 144, 142, 139, 138, 134, 115, 52, 32, 25, + 37, 22, 65, 95, 93, 102, 104, 104, 106, 95, 89, 80, 73, 61, 57, 51, + 45, 51, 52, 64, 77, 89, 102, 119, 116, 123, 123, 127, 122, 126, 130, 135, + 134, 131, 130, 127, 126, 65, 18, 65, 72, 61, 59, 73, 68, 71, 64, 68, + 48, 40, 64, 57, 55, 67, 63, 138, 93, 100, 106, 108, 108, 112, 116, 115, + 118, 118, 116, 116, 128, 132, 134, 134, 128, 87, 108, 153, 132, 126, 139, 148, + 144, 147, 144, 146, 148, 146, 146, 134, 67, 37, 36, 45, 44, 56, 67, 72, + 139, 174, 157, 134, 135, 157, 167, 167, 165, 170, 170, 174, 174, 169, 150, 111, + 81, 72, 45, 67, 76, 61, 65, 112, 193, 193, 182, 140, 153, 136, 139, 139, + 144, 151, 150, 120, 122, 30, 16, 20, 24, 8, 0, 119, 126, 123, 161, 210, + 224, 238, 148, 119, 108, 128, 144, 159, 165, 165, 166, 173, 170, 167, 154, 144, + 136, 130, 41, 28, 36, 64, 92, 111, 108, 144, 136, 95, 138, 144, 140, 158, + 158, 147, 140, 135, 135, 132, 131, 119, 63, 104, 167, 186, 147, 142, 144, 142, + 120, 131, 87, 53, 127, 159, 154, 157, 148, 151, 148, 142, 242, 238, 233, 107, + 97, 111, 126, 140, 150, 163, 169, 169, 169, 161, 147, 134, 128, 28, 22, 24, + 57, 73, 80, 84, 92, 120, 115, 91, 81, 131, 142, 127, 198, 193, 127, 124, + 132, 150, 146, 161, 163, 147, 148, 153, 155, 148, 151, 148, 153, 153, 150, 163, + 163, 167, 159, 153, 148, 150, 155, 159, 157, 162, 161, 163, 165, 165, 163, 159, + 142, 157, 157, 138, 110, 77, 59, 48, 51, 60, 96, 130, 143, 177, 182, 181, + 167, 174, 171, 161, 139, 135, 127, 116, 123, 85, 89, 118, 120, 120, 122, 116, + 95, 75, 136, 139, 120, 147, 138, 140, 112, 115, 111, 80, 95, 130, 132, 165, + 175, 197, 213, 230, 230, 242, 241, 248, 246, 250, 250, 249, 249, 250, 250, 244, + 220, 143, 102, 76, 42, 73, 79, 79, 75, 77, 76, 79, 83, 77, 73, 76, + 83, 72, 104, 134, 130, 130, 130, 126, 132, 124, 110, 108, 72, 111, 128, 118, + 120, 123, 119, 132, 122, 114, 108, 60, 6, 107, 128, 115, 134, 128, 124, 130, + 126, 116, 95, 46, 64, 88, 119, 103, 238, 245, 240, 111, 100, 110, 135, 147, + 154, 162, 167, 170, 177, 175, 175, 167, 147, 140, 135, 126, 13, 18, 18, 37, + 61, 63, 69, 67, 67, 71, 65, 59, 52, 57, 93, 96, 100, 96, 97, 97, + 80, 84, 87, 83, 53, 80, 115, 116, 108, 108, 104, 103, 112, 93, 106, 173, + 134, 127, 131, 146, 147, 151, 151, 155, 155, 158, 147, 153, 122, 114, 99, 37, + 28, 32, 56, 53, 68, 71, 56, 65, 41, 79, 100, 110, 220, 240, 238, 110, + 100, 111, 126, 138, 147, 157, 170, 174, 174, 170, 161, 130, 69, 38, 34, 34, + 73, 92, 111, 110, 114, 112, 112, 112, 112, 111, 115, 115, 114, 110, 64, 68, + 81, 79, 77, 76, 76, 80, 84, 177, 179, 118, 100, 122, 130, 120, 122, 126, + 126, 127, 132, 134, 136, 139, 140, 139, 139, 132, 132, 122, 119, 143, 148, 150, + 151, 146, 146, 144, 139, 140, 130, 85, 32, 26, 25, 36, 25, 46, 89, 92, + 91, 81, 69, 55, 59, 59, 60, 49, 61, 63, 61, 59, 73, 69, 52, 48, + 75, 107, 119, 171, 174, 170, 148, 157, 170, 155, 155, 151, 138, 140, 128, 155, + 96, 36, 28, 67, 72, 65, 60, 64, 65, 65, 73, 42, 36, 48, 60, 65, + 52, 59, 136, 163, 103, 103, 112, 123, 120, 122, 124, 124, 124, 124, 127, 131, + 140, 139, 140, 139, 134, 92, 91, 135, 147, 151, 151, 151, 151, 143, 147, 148, + 146, 143, 102, 46, 40, 37, 18, 46, 48, 64, 61, 67, 155, 166, 140, 128, + 140, 157, 163, 171, 174, 177, 178, 178, 178, 171, 140, 76, 69, 52, 71, 65, + 72, 65, 123, 204, 198, 216, 151, 155, 140, 138, 142, 142, 155, 148, 120, 120, + 26, 14, 6, 12, 8, 0, 110, 110, 111, 153, 222, 224, 240, 147, 103, 112, + 132, 147, 155, 159, 162, 169, 171, 170, 165, 157, 138, 132, 126, 42, 29, 37, + 67, 89, 91, 108, 118, 120, 92, 155, 153, 138, 131, 128, 130, 127, 127, 126, + 124, 132, 124, 81, 116, 134, 161, 143, 72, 88, 83, 83, 79, 67, 51, 92, + 130, 131, 126, 124, 147, 142, 139, 244, 240, 233, 104, 97, 110, 124, 139, 153, + 167, 171, 166, 169, 162, 146, 134, 127, 28, 21, 25, 55, 51, 72, 84, 79, + 91, 76, 83, 87, 112, 144, 126, 201, 198, 170, 127, 128, 136, 153, 150, 154, + 162, 159, 150, 159, 150, 151, 150, 151, 158, 170, 174, 181, 187, 187, 183, 163, + 162, 165, 171, 170, 171, 171, 171, 173, 173, 170, 165, 147, 159, 158, 114, 75, + 46, 46, 42, 38, 48, 77, 106, 136, 178, 181, 194, 185, 179, 155, 174, 167, + 154, 134, 120, 130, 93, 75, 95, 114, 119, 118, 112, 114, 102, 89, 95, 103, + 103, 106, 104, 104, 106, 83, 116, 126, 155, 201, 226, 238, 242, 242, 246, 250, + 253, 253, 253, 252, 253, 252, 252, 250, 250, 248, 238, 178, 138, 103, 73, 40, + 73, 69, 69, 69, 73, 73, 76, 76, 81, 75, 81, 79, 76, 75, 93, 99, + 97, 108, 104, 107, 106, 104, 111, 68, 106, 115, 115, 103, 108, 108, 111, 106, + 106, 93, 60, 5, 102, 114, 118, 122, 116, 115, 115, 115, 102, 92, 41, 69, + 84, 116, 96, 238, 242, 238, 110, 96, 110, 135, 147, 155, 161, 162, 163, 175, + 177, 175, 163, 153, 140, 132, 122, 12, 16, 17, 36, 57, 57, 56, 65, 68, + 65, 75, 68, 64, 64, 71, 77, 71, 73, 77, 81, 75, 80, 85, 73, 48, + 87, 108, 104, 102, 102, 103, 104, 104, 100, 91, 175, 179, 126, 124, 132, 136, + 146, 150, 155, 155, 150, 155, 151, 126, 115, 99, 34, 26, 30, 44, 45, 56, + 61, 49, 51, 48, 56, 80, 107, 228, 241, 237, 115, 100, 112, 126, 139, 144, + 154, 169, 174, 173, 182, 151, 83, 45, 26, 21, 18, 37, 85, 131, 165, 169, + 162, 120, 153, 155, 153, 151, 123, 120, 115, 83, 55, 79, 77, 76, 75, 76, + 73, 76, 163, 190, 169, 111, 112, 130, 131, 134, 134, 136, 138, 139, 142, 142, + 143, 143, 147, 144, 142, 140, 142, 154, 153, 155, 151, 146, 132, 126, 116, 103, + 100, 77, 40, 25, 22, 24, 36, 25, 38, 45, 51, 46, 52, 56, 55, 65, + 67, 71, 60, 77, 75, 75, 71, 71, 73, 73, 75, 87, 111, 179, 190, 191, + 183, 174, 174, 177, 173, 166, 170, 161, 147, 142, 128, 120, 67, 20, 34, 77, + 76, 59, 61, 59, 56, 71, 49, 37, 42, 60, 57, 56, 61, 131, 169, 159, + 102, 104, 124, 126, 130, 130, 128, 132, 131, 130, 144, 151, 155, 151, 150, 143, + 147, 157, 157, 154, 154, 150, 144, 136, 131, 122, 116, 112, 89, 49, 32, 28, + 37, 28, 38, 26, 41, 42, 33, 100, 171, 165, 134, 127, 140, 157, 162, 170, + 175, 178, 179, 182, 181, 165, 114, 60, 71, 80, 83, 71, 64, 158, 206, 202, + 191, 170, 165, 147, 144, 150, 153, 151, 148, 120, 116, 24, 9, 5, 17, 13, + 13, 114, 107, 97, 150, 214, 225, 240, 139, 99, 108, 132, 148, 158, 161, 167, + 170, 171, 161, 158, 158, 140, 134, 128, 45, 28, 37, 63, 67, 93, 112, 110, + 119, 96, 150, 138, 119, 122, 116, 124, 124, 122, 115, 130, 134, 110, 73, 88, + 76, 53, 51, 51, 49, 44, 42, 45, 45, 46, 57, 63, 72, 80, 84, 110, + 138, 140, 242, 240, 229, 104, 97, 111, 130, 140, 153, 167, 174, 173, 165, 159, + 144, 132, 123, 24, 20, 22, 49, 56, 63, 73, 65, 67, 76, 65, 73, 85, + 139, 128, 208, 201, 197, 126, 122, 132, 147, 170, 169, 153, 159, 150, 153, 159, + 165, 167, 171, 174, 178, 181, 173, 161, 179, 187, 193, 185, 167, 183, 182, 181, + 177, 189, 182, 179, 183, 178, 186, 166, 159, 106, 61, 46, 38, 36, 34, 36, + 67, 102, 134, 189, 193, 165, 169, 186, 183, 163, 159, 165, 138, 126, 132, 99, + 68, 77, 95, 110, 108, 104, 104, 102, 112, 110, 104, 107, 106, 104, 108, 77, + 126, 135, 175, 228, 244, 244, 244, 248, 249, 252, 253, 252, 245, 240, 234, 234, + 233, 229, 225, 220, 216, 183, 147, 138, 110, 69, 69, 67, 75, 72, 75, 79, + 77, 80, 81, 80, 81, 84, 81, 79, 89, 89, 91, 91, 89, 92, 91, 91, + 88, 87, 83, 84, 73, 84, 84, 84, 68, 76, 73, 68, 59, 65, 8, 33, + 57, 63, 67, 65, 67, 64, 79, 69, 44, 24, 88, 69, 108, 104, 241, 244, + 238, 110, 95, 104, 131, 144, 157, 162, 166, 173, 174, 177, 165, 159, 148, 140, + 134, 126, 13, 18, 18, 42, 45, 48, 49, 45, 51, 45, 42, 49, 51, 49, + 51, 61, 59, 56, 56, 53, 55, 56, 53, 63, 71, 64, 71, 61, 59, 93, + 97, 92, 95, 100, 84, 155, 185, 173, 124, 127, 138, 136, 146, 150, 148, 150, + 154, 154, 130, 119, 91, 30, 24, 25, 42, 41, 46, 61, 60, 45, 45, 55, + 77, 108, 234, 244, 241, 115, 103, 114, 126, 138, 147, 157, 170, 174, 169, 161, + 116, 48, 30, 20, 24, 21, 32, 71, 148, 179, 131, 163, 155, 155, 159, 169, + 143, 147, 124, 119, 110, 51, 51, 65, 75, 73, 72, 80, 69, 111, 199, 189, + 120, 111, 120, 144, 139, 142, 142, 142, 144, 146, 146, 148, 148, 150, 153, 157, + 161, 157, 157, 155, 142, 108, 71, 49, 30, 24, 24, 25, 24, 22, 20, 24, + 22, 34, 24, 46, 41, 45, 48, 57, 77, 116, 183, 201, 212, 214, 212, 204, + 190, 181, 112, 100, 95, 95, 116, 191, 216, 166, 194, 187, 189, 186, 177, 182, + 181, 173, 166, 159, 146, 135, 150, 95, 32, 22, 45, 52, 57, 60, 57, 60, + 63, 63, 45, 40, 53, 61, 41, 52, 112, 178, 177, 112, 103, 114, 127, 138, + 134, 134, 138, 147, 150, 157, 161, 161, 161, 158, 157, 159, 159, 155, 150, 134, + 99, 72, 42, 32, 25, 18, 26, 26, 28, 32, 30, 9, 12, 12, 44, 46, + 37, 34, 42, 124, 175, 147, 122, 123, 147, 158, 163, 170, 175, 179, 183, 185, + 179, 138, 71, 41, 49, 67, 79, 92, 190, 204, 205, 194, 166, 155, 157, 155, + 157, 158, 153, 151, 131, 112, 21, 10, 6, 9, 13, 10, 53, 63, 69, 120, + 208, 228, 232, 139, 110, 110, 132, 147, 157, 163, 166, 170, 169, 154, 161, 151, + 139, 134, 127, 52, 30, 34, 49, 53, 55, 67, 114, 112, 87, 114, 112, 106, + 83, 75, 84, 76, 67, 59, 44, 60, 60, 68, 33, 68, 72, 79, 87, 89, + 85, 100, 93, 80, 40, 99, 153, 150, 124, 131, 135, 143, 140, 244, 240, 222, + 106, 97, 108, 126, 135, 151, 166, 173, 170, 166, 162, 143, 127, 127, 29, 22, + 24, 51, 56, 55, 68, 69, 69, 67, 69, 69, 69, 135, 128, 212, 210, 206, + 127, 132, 128, 142, 166, 170, 159, 155, 157, 167, 178, 178, 178, 177, 173, 182, + 150, 99, 76, 97, 162, 189, 187, 173, 165, 178, 179, 181, 179, 179, 183, 183, + 189, 190, 169, 165, 100, 57, 44, 38, 34, 34, 36, 71, 97, 130, 202, 199, + 166, 190, 191, 191, 169, 185, 174, 143, 131, 119, 114, 76, 68, 85, 72, 67, + 59, 63, 57, 60, 57, 61, 61, 61, 67, 84, 97, 144, 191, 240, 245, 246, + 244, 252, 250, 242, 225, 197, 173, 130, 118, 120, 112, 115, 120, 118, 115, 120, + 136, 126, 131, 124, 97, 83, 25, 22, 20, 17, 14, 14, 14, 12, 10, 13, + 13, 8, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 10, + 12, 9, 2, 2, 8, 6, 9, 10, 8, 30, 28, 30, 13, 30, 32, 30, + 26, 33, 34, 33, 81, 51, 48, 115, 103, 241, 244, 242, 114, 97, 106, 132, + 146, 158, 165, 173, 177, 177, 173, 162, 165, 146, 138, 134, 122, 10, 16, 21, + 25, 17, 14, 14, 17, 16, 17, 18, 20, 20, 25, 36, 76, 83, 96, 91, + 97, 91, 93, 88, 81, 79, 108, 115, 108, 75, 63, 64, 63, 88, 104, 95, + 100, 195, 189, 130, 124, 135, 136, 142, 144, 144, 154, 150, 148, 123, 118, 91, + 29, 22, 26, 38, 24, 36, 40, 42, 37, 48, 83, 77, 111, 234, 245, 241, + 111, 99, 110, 123, 136, 143, 157, 170, 173, 169, 148, 77, 37, 24, 22, 25, + 18, 38, 85, 186, 194, 165, 132, 162, 165, 153, 143, 132, 153, 127, 122, 112, + 46, 49, 57, 64, 68, 67, 80, 75, 97, 212, 202, 132, 111, 122, 138, 147, + 146, 144, 144, 143, 146, 147, 151, 151, 162, 167, 165, 161, 161, 153, 104, 57, + 22, 17, 16, 14, 14, 16, 16, 17, 20, 22, 22, 24, 38, 45, 44, 63, + 71, 85, 135, 190, 236, 242, 245, 245, 244, 242, 240, 240, 237, 238, 237, 233, + 225, 230, 229, 225, 210, 191, 186, 182, 182, 179, 178, 181, 178, 174, 171, 153, + 144, 130, 119, 65, 21, 29, 36, 44, 36, 41, 45, 44, 52, 52, 52, 53, + 48, 44, 56, 104, 189, 187, 124, 108, 111, 126, 134, 138, 140, 155, 161, 167, + 166, 165, 162, 165, 169, 163, 161, 157, 138, 93, 51, 17, 13, 10, 12, 13, + 14, 18, 16, 8, 10, 9, 14, 18, 13, 13, 17, 28, 22, 32, 71, 157, + 166, 130, 119, 135, 151, 159, 163, 171, 178, 181, 186, 187, 161, 102, 77, 77, + 81, 79, 116, 204, 208, 210, 201, 171, 161, 170, 158, 154, 159, 148, 151, 127, + 122, 21, 9, 10, 2, 2, 1, 194, 189, 183, 143, 209, 228, 230, 150, 112, + 108, 128, 148, 157, 161, 166, 166, 161, 162, 163, 140, 136, 135, 130, 57, 30, + 36, 49, 83, 76, 71, 68, 75, 80, 73, 77, 99, 115, 112, 130, 136, 136, + 144, 148, 140, 128, 42, 96, 119, 144, 153, 142, 138, 135, 134, 107, 93, 37, + 140, 158, 158, 158, 161, 162, 144, 147, 246, 233, 236, 106, 95, 104, 128, 136, + 151, 165, 171, 169, 163, 161, 144, 134, 130, 30, 24, 25, 57, 59, 73, 87, + 100, 108, 72, 100, 65, 127, 138, 138, 218, 213, 213, 136, 131, 136, 134, 159, + 167, 158, 155, 170, 182, 182, 181, 179, 171, 173, 159, 103, 55, 57, 81, 128, + 183, 199, 182, 161, 178, 183, 182, 183, 186, 187, 190, 191, 189, 162, 170, 108, + 60, 51, 44, 40, 38, 38, 69, 110, 127, 206, 205, 173, 170, 174, 191, 193, + 190, 175, 155, 136, 123, 134, 93, 61, 75, 89, 92, 88, 89, 119, 127, 134, + 132, 140, 132, 115, 134, 174, 205, 242, 244, 245, 250, 246, 225, 190, 147, 122, + 115, 108, 103, 111, 114, 115, 103, 118, 116, 115, 111, 127, 128, 130, 127, 123, + 87, 102, 80, 79, 83, 91, 84, 84, 84, 79, 77, 68, 69, 99, 124, 127, + 143, 132, 124, 143, 147, 130, 102, 93, 103, 155, 126, 127, 163, 161, 126, 116, + 116, 144, 106, 16, 0, 48, 92, 110, 75, 76, 73, 72, 71, 46, 59, 44, + 76, 116, 115, 112, 242, 244, 241, 114, 96, 111, 134, 147, 155, 165, 174, 174, + 175, 169, 165, 163, 144, 135, 135, 127, 12, 20, 21, 32, 63, 80, 85, 93, + 100, 99, 97, 87, 93, 95, 91, 107, 131, 123, 124, 108, 114, 116, 118, 120, + 108, 122, 126, 123, 102, 91, 79, 76, 69, 92, 93, 95, 202, 197, 147, 124, + 131, 140, 135, 139, 150, 151, 150, 148, 127, 115, 87, 26, 21, 28, 40, 51, + 57, 71, 72, 83, 83, 68, 103, 114, 234, 245, 241, 107, 99, 111, 126, 138, + 146, 159, 171, 170, 182, 136, 48, 30, 25, 26, 28, 16, 56, 84, 197, 199, + 189, 132, 157, 158, 158, 140, 131, 131, 128, 124, 115, 48, 42, 52, 72, 68, + 67, 72, 67, 88, 213, 210, 189, 116, 114, 128, 140, 151, 155, 146, 148, 148, + 155, 155, 162, 171, 166, 163, 163, 148, 87, 30, 17, 14, 16, 17, 21, 21, + 22, 22, 22, 22, 25, 25, 37, 36, 48, 60, 75, 119, 208, 237, 240, 242, + 242, 244, 241, 242, 244, 244, 242, 241, 237, 237, 234, 232, 233, 233, 229, 224, + 170, 167, 185, 187, 193, 177, 187, 181, 178, 174, 163, 148, 135, 140, 91, 29, + 32, 37, 45, 42, 56, 48, 42, 34, 28, 32, 38, 40, 46, 65, 103, 194, + 201, 170, 107, 107, 116, 132, 138, 151, 166, 166, 163, 166, 166, 163, 166, 170, + 163, 158, 140, 80, 21, 16, 9, 8, 5, 6, 5, 8, 8, 18, 24, 17, + 18, 18, 24, 33, 24, 24, 14, 17, 32, 45, 142, 163, 139, 119, 119, 135, + 157, 161, 169, 174, 179, 186, 186, 186, 134, 76, 68, 64, 92, 148, 213, 209, + 218, 212, 175, 165, 170, 154, 158, 158, 153, 154, 130, 120, 25, 14, 12, 12, + 34, 42, 165, 157, 157, 136, 193, 225, 232, 157, 114, 108, 128, 144, 157, 162, + 165, 166, 158, 162, 158, 140, 135, 135, 128, 64, 32, 37, 57, 73, 103, 115, + 119, 115, 87, 104, 146, 167, 162, 167, 177, 178, 171, 170, 174, 157, 132, 45, + 99, 183, 170, 169, 155, 157, 157, 128, 111, 95, 42, 148, 161, 151, 148, 142, + 154, 146, 144, 246, 234, 234, 106, 93, 107, 131, 136, 151, 166, 173, 170, 165, + 161, 146, 135, 130, 32, 24, 25, 57, 67, 79, 106, 92, 106, 88, 99, 64, + 131, 134, 143, 217, 218, 214, 136, 115, 122, 131, 142, 165, 161, 166, 179, 183, + 182, 183, 182, 175, 173, 128, 63, 52, 53, 60, 85, 167, 202, 189, 162, 163, + 179, 194, 195, 198, 199, 202, 202, 197, 189, 177, 138, 75, 49, 46, 45, 40, + 57, 84, 116, 127, 208, 210, 186, 169, 189, 191, 177, 190, 173, 166, 139, 130, + 120, 111, 67, 63, 85, 89, 120, 108, 107, 131, 134, 147, 127, 138, 151, 175, + 230, 244, 244, 245, 250, 233, 187, 139, 116, 112, 111, 114, 126, 80, 60, 57, + 60, 69, 115, 120, 128, 158, 178, 185, 175, 131, 130, 118, 97, 87, 112, 111, + 93, 95, 91, 89, 85, 107, 123, 84, 123, 153, 148, 151, 104, 135, 155, 158, + 135, 128, 112, 96, 142, 147, 157, 154, 157, 146, 147, 144, 131, 128, 92, 0, + 108, 107, 111, 118, 108, 104, 108, 88, 72, 68, 38, 116, 116, 112, 116, 244, + 244, 241, 104, 100, 112, 135, 144, 157, 166, 173, 171, 177, 166, 162, 159, 143, + 135, 134, 123, 10, 18, 38, 53, 84, 81, 89, 92, 95, 100, 97, 104, 92, + 102, 135, 122, 116, 115, 119, 124, 114, 114, 122, 155, 165, 208, 195, 147, 116, + 99, 92, 93, 91, 91, 92, 85, 208, 208, 179, 124, 128, 135, 138, 134, 140, + 155, 147, 154, 126, 116, 85, 28, 22, 34, 46, 72, 80, 84, 85, 91, 59, + 87, 122, 158, 236, 244, 238, 114, 100, 112, 127, 139, 146, 163, 171, 169, 162, + 118, 42, 30, 21, 25, 32, 18, 63, 95, 205, 205, 197, 161, 154, 154, 159, + 142, 146, 134, 128, 131, 119, 45, 42, 41, 60, 72, 75, 68, 68, 85, 214, + 212, 197, 115, 114, 122, 136, 147, 154, 154, 154, 169, 173, 171, 173, 174, 165, + 163, 150, 92, 25, 13, 14, 16, 17, 26, 22, 28, 28, 28, 29, 29, 38, + 40, 44, 33, 49, 64, 107, 224, 240, 238, 244, 242, 240, 230, 220, 199, 197, + 186, 189, 193, 204, 206, 209, 220, 222, 226, 222, 225, 213, 175, 201, 199, 209, + 209, 199, 181, 185, 179, 170, 153, 140, 135, 112, 57, 26, 28, 59, 53, 59, + 73, 73, 68, 61, 69, 76, 77, 77, 63, 111, 195, 204, 187, 108, 107, 118, + 131, 143, 154, 166, 170, 171, 169, 169, 169, 171, 169, 165, 140, 80, 20, 14, + 9, 8, 9, 12, 8, 9, 17, 9, 24, 37, 45, 37, 51, 48, 49, 53, + 57, 48, 49, 26, 49, 127, 162, 158, 118, 115, 130, 148, 159, 163, 171, 177, + 182, 189, 194, 181, 120, 59, 83, 106, 178, 213, 212, 213, 198, 183, 170, 165, + 161, 165, 158, 154, 154, 131, 122, 17, 12, 13, 22, 20, 6, 166, 161, 155, + 153, 161, 224, 222, 186, 120, 108, 123, 146, 155, 161, 165, 161, 162, 158, 146, + 128, 135, 134, 128, 87, 37, 38, 65, 76, 116, 132, 118, 114, 71, 147, 174, + 181, 178, 171, 190, 186, 186, 179, 182, 148, 128, 37, 120, 189, 179, 175, 174, + 165, 151, 143, 104, 89, 46, 142, 159, 150, 151, 148, 153, 147, 148, 241, 229, + 234, 102, 92, 107, 131, 139, 151, 166, 171, 173, 162, 161, 147, 138, 131, 32, + 26, 29, 59, 57, 84, 102, 92, 93, 87, 107, 49, 147, 135, 173, 224, 221, + 217, 123, 114, 120, 140, 143, 154, 159, 173, 183, 185, 183, 182, 179, 174, 165, + 100, 52, 48, 52, 59, 89, 148, 205, 201, 167, 157, 175, 182, 194, 201, 204, + 205, 204, 204, 197, 178, 167, 95, 55, 44, 46, 41, 73, 102, 118, 132, 204, + 216, 201, 174, 190, 191, 186, 190, 175, 174, 144, 135, 126, 126, 84, 61, 80, + 83, 84, 99, 131, 126, 131, 127, 134, 132, 151, 213, 245, 244, 246, 248, 222, + 163, 119, 115, 114, 118, 138, 126, 75, 55, 49, 57, 49, 68, 115, 183, 195, + 189, 163, 170, 170, 174, 131, 131, 122, 99, 64, 97, 99, 108, 96, 95, 95, + 99, 88, 89, 165, 162, 158, 153, 150, 144, 136, 144, 128, 114, 95, 119, 161, + 159, 151, 150, 144, 148, 148, 155, 144, 142, 106, 29, 115, 104, 93, 87, 85, + 91, 95, 107, 83, 63, 41, 116, 127, 119, 144, 245, 244, 238, 107, 100, 114, + 135, 144, 154, 165, 171, 173, 175, 165, 161, 142, 131, 134, 134, 122, 13, 22, + 38, 71, 77, 95, 95, 103, 87, 92, 97, 87, 57, 106, 132, 124, 114, 110, + 119, 115, 118, 119, 179, 228, 216, 218, 208, 174, 119, 103, 85, 103, 91, 87, + 92, 83, 206, 208, 195, 126, 128, 138, 144, 138, 139, 147, 140, 139, 126, 120, + 77, 28, 22, 42, 57, 75, 76, 83, 96, 73, 57, 85, 123, 163, 236, 244, + 240, 120, 104, 115, 128, 144, 151, 165, 171, 166, 158, 88, 40, 26, 24, 28, + 33, 18, 69, 104, 204, 208, 204, 128, 150, 153, 158, 128, 135, 138, 128, 130, + 116, 45, 37, 41, 55, 60, 67, 75, 72, 87, 220, 214, 199, 114, 114, 119, + 132, 147, 155, 159, 171, 175, 178, 179, 175, 171, 169, 154, 89, 28, 13, 17, + 17, 17, 24, 24, 34, 42, 45, 46, 42, 45, 41, 45, 51, 41, 53, 80, + 175, 240, 240, 241, 237, 232, 197, 177, 154, 153, 151, 155, 158, 162, 167, 171, + 175, 179, 183, 186, 197, 198, 206, 201, 202, 199, 199, 201, 202, 199, 191, 181, + 171, 157, 148, 131, 122, 77, 30, 38, 53, 59, 55, 65, 51, 60, 69, 71, + 71, 59, 56, 56, 97, 199, 208, 197, 110, 107, 116, 132, 142, 158, 166, 170, + 170, 171, 170, 173, 170, 169, 153, 99, 29, 16, 9, 12, 12, 12, 13, 13, + 22, 18, 12, 40, 49, 53, 51, 53, 42, 40, 34, 44, 46, 56, 12, 51, + 107, 146, 170, 132, 112, 122, 142, 153, 159, 166, 173, 179, 186, 199, 198, 187, + 139, 114, 153, 208, 206, 214, 212, 195, 197, 178, 183, 169, 165, 163, 157, 154, + 138, 122, 24, 12, 5, 30, 5, 59, 146, 155, 155, 146, 147, 214, 226, 208, + 122, 106, 118, 143, 154, 159, 161, 162, 159, 155, 136, 136, 135, 132, 127, 103, + 40, 42, 67, 88, 118, 126, 111, 123, 83, 151, 190, 186, 189, 187, 183, 186, + 186, 187, 171, 144, 130, 36, 127, 182, 194, 204, 186, 171, 157, 148, 114, 92, + 51, 134, 154, 151, 159, 150, 148, 142, 153, 241, 236, 232, 93, 93, 106, 128, + 136, 148, 165, 173, 170, 165, 161, 150, 139, 130, 32, 28, 25, 60, 71, 84, + 104, 95, 95, 87, 103, 51, 136, 142, 175, 229, 226, 220, 124, 120, 119, 128, + 142, 158, 162, 175, 182, 186, 186, 182, 179, 171, 147, 67, 49, 44, 52, 77, + 83, 135, 198, 206, 175, 154, 157, 177, 187, 198, 204, 204, 205, 205, 201, 197, + 181, 131, 63, 48, 44, 52, 76, 106, 122, 128, 201, 221, 213, 178, 174, 189, + 177, 189, 175, 169, 151, 138, 130, 134, 97, 57, 67, 83, 80, 96, 120, 140, + 143, 135, 126, 146, 167, 233, 238, 244, 245, 228, 148, 116, 116, 118, 123, 142, + 144, 92, 63, 48, 41, 53, 52, 73, 131, 199, 194, 167, 169, 174, 171, 178, + 142, 135, 118, 111, 89, 61, 85, 83, 92, 83, 93, 95, 83, 37, 154, 166, + 143, 159, 153, 159, 166, 162, 143, 114, 93, 112, 165, 155, 153, 146, 144, 148, + 147, 144, 146, 151, 65, 30, 81, 106, 100, 88, 88, 88, 91, 99, 68, 63, + 38, 118, 128, 115, 131, 242, 245, 241, 111, 102, 112, 134, 146, 151, 165, 171, + 174, 178, 165, 161, 136, 130, 131, 132, 120, 13, 22, 26, 42, 79, 92, 107, + 103, 92, 106, 89, 95, 61, 93, 136, 115, 127, 115, 107, 120, 115, 126, 208, + 228, 213, 217, 195, 153, 115, 89, 75, 85, 92, 87, 93, 85, 213, 210, 202, + 130, 130, 136, 140, 143, 144, 134, 147, 136, 123, 119, 65, 28, 24, 41, 63, + 75, 75, 81, 106, 76, 52, 84, 124, 159, 234, 242, 240, 123, 106, 116, 127, + 140, 148, 166, 169, 167, 147, 67, 33, 25, 25, 29, 38, 24, 69, 102, 205, + 209, 233, 130, 150, 150, 150, 140, 134, 130, 128, 124, 114, 40, 37, 34, 56, + 56, 67, 65, 75, 88, 224, 221, 209, 114, 111, 120, 131, 144, 155, 159, 171, + 177, 178, 177, 173, 169, 162, 115, 37, 14, 17, 17, 14, 18, 24, 36, 46, + 52, 52, 45, 46, 45, 46, 49, 49, 52, 59, 100, 220, 237, 237, 230, 217, + 181, 147, 135, 138, 143, 151, 161, 170, 178, 190, 199, 202, 206, 208, 205, 189, + 193, 198, 199, 202, 205, 209, 208, 209, 206, 185, 181, 166, 157, 150, 135, 131, + 97, 37, 36, 44, 51, 68, 60, 61, 65, 48, 45, 64, 72, 71, 73, 87, + 201, 213, 202, 112, 108, 118, 132, 143, 157, 166, 170, 171, 171, 175, 174, 170, + 161, 119, 42, 20, 10, 12, 14, 16, 13, 14, 17, 17, 17, 8, 44, 52, + 45, 40, 41, 46, 41, 34, 48, 51, 48, 14, 53, 96, 120, 166, 144, 116, + 112, 131, 140, 158, 165, 171, 177, 186, 193, 204, 201, 199, 185, 208, 213, 213, + 214, 216, 199, 187, 185, 178, 171, 173, 163, 157, 155, 139, 127, 18, 12, 9, + 20, 6, 1, 169, 146, 148, 143, 124, 175, 225, 217, 130, 104, 114, 132, 148, + 155, 161, 162, 162, 159, 147, 131, 136, 130, 131, 115, 46, 45, 65, 75, 112, + 130, 116, 135, 81, 120, 179, 187, 185, 183, 183, 185, 190, 181, 169, 148, 134, + 42, 157, 194, 218, 218, 226, 197, 167, 153, 131, 91, 49, 135, 154, 158, 151, + 147, 148, 142, 148, 240, 241, 225, 99, 92, 103, 122, 135, 148, 166, 171, 171, + 165, 162, 151, 140, 131, 33, 28, 33, 61, 69, 79, 89, 107, 108, 76, 99, + 69, 131, 139, 157, 230, 226, 224, 131, 122, 128, 128, 146, 143, 166, 171, 185, + 178, 186, 183, 173, 169, 130, 56, 45, 37, 52, 65, 85, 119, 193, 209, 191, + 155, 153, 171, 183, 194, 197, 204, 205, 208, 205, 201, 186, 167, 79, 48, 42, + 49, 79, 106, 122, 130, 186, 225, 218, 187, 187, 185, 189, 189, 179, 163, 151, + 140, 131, 123, 111, 64, 61, 80, 79, 91, 126, 146, 123, 123, 136, 140, 201, + 237, 241, 245, 234, 159, 119, 119, 123, 130, 146, 144, 150, 81, 60, 46, 33, + 59, 57, 88, 112, 205, 201, 169, 170, 174, 166, 169, 169, 135, 128, 124, 99, + 60, 65, 81, 85, 81, 84, 95, 92, 64, 159, 173, 148, 159, 154, 158, 166, + 151, 138, 132, 81, 131, 166, 158, 143, 147, 144, 154, 150, 148, 150, 144, 92, + 0, 102, 102, 91, 85, 89, 106, 110, 93, 65, 63, 34, 108, 124, 110, 130, + 245, 242, 232, 110, 100, 114, 132, 142, 157, 165, 169, 174, 175, 162, 157, 146, + 136, 131, 130, 116, 14, 24, 29, 49, 80, 99, 106, 102, 93, 103, 91, 89, + 57, 103, 126, 110, 118, 122, 116, 114, 112, 130, 220, 226, 230, 226, 189, 127, + 102, 72, 65, 87, 81, 85, 89, 88, 217, 213, 209, 132, 130, 140, 142, 147, + 142, 135, 153, 134, 119, 115, 55, 26, 22, 38, 63, 75, 72, 81, 93, 81, + 46, 103, 120, 126, 232, 241, 237, 122, 107, 116, 126, 139, 147, 167, 167, 165, + 144, 49, 28, 24, 26, 30, 33, 21, 67, 103, 206, 208, 209, 148, 140, 144, + 143, 139, 132, 131, 124, 122, 107, 36, 32, 33, 52, 57, 63, 68, 69, 83, + 229, 224, 216, 116, 111, 122, 132, 142, 154, 161, 171, 177, 178, 173, 161, 166, + 140, 53, 14, 17, 18, 16, 25, 26, 26, 55, 60, 56, 53, 52, 55, 51, + 52, 59, 49, 46, 76, 183, 217, 233, 220, 197, 162, 138, 126, 134, 144, 159, + 171, 181, 187, 197, 206, 216, 218, 221, 222, 221, 218, 202, 197, 201, 194, 190, + 189, 213, 212, 210, 187, 182, 163, 159, 153, 139, 131, 107, 53, 34, 36, 60, + 59, 69, 61, 57, 48, 55, 40, 51, 67, 45, 73, 198, 217, 209, 112, 108, + 118, 134, 142, 158, 165, 169, 171, 173, 175, 170, 166, 140, 56, 18, 14, 13, + 16, 16, 18, 18, 17, 14, 17, 17, 8, 48, 52, 38, 40, 38, 42, 32, + 37, 55, 41, 55, 13, 51, 80, 102, 130, 163, 123, 112, 118, 135, 153, 163, + 169, 173, 181, 190, 199, 206, 206, 209, 212, 208, 212, 224, 213, 195, 189, 189, + 179, 174, 165, 165, 157, 155, 138, 124, 16, 12, 5, 12, 63, 72, 162, 135, + 144, 140, 135, 153, 213, 220, 144, 104, 112, 127, 144, 153, 157, 159, 166, 167, + 161, 150, 124, 124, 128, 122, 57, 44, 67, 69, 110, 127, 115, 118, 114, 85, + 165, 186, 187, 190, 187, 187, 186, 182, 165, 153, 139, 57, 195, 212, 228, 212, + 205, 201, 214, 165, 142, 93, 52, 130, 148, 147, 139, 142, 146, 135, 138, 241, + 241, 230, 103, 95, 99, 116, 132, 150, 165, 174, 173, 165, 162, 150, 140, 130, + 34, 28, 33, 65, 68, 77, 92, 108, 104, 102, 93, 72, 124, 139, 147, 230, + 229, 225, 130, 110, 119, 128, 135, 139, 155, 166, 178, 186, 187, 183, 170, 161, + 110, 49, 44, 36, 52, 77, 92, 115, 186, 217, 201, 159, 148, 161, 178, 187, + 197, 197, 202, 206, 208, 205, 198, 183, 108, 49, 44, 49, 79, 107, 115, 123, + 166, 225, 222, 191, 173, 183, 190, 179, 167, 146, 140, 142, 135, 124, 122, 79, + 61, 75, 75, 91, 124, 147, 132, 127, 132, 131, 209, 240, 242, 242, 193, 126, + 120, 127, 132, 132, 148, 151, 153, 76, 48, 44, 36, 52, 57, 77, 115, 208, + 209, 187, 167, 173, 170, 167, 171, 139, 136, 122, 96, 53, 56, 84, 71, 80, + 85, 100, 71, 97, 154, 159, 151, 146, 144, 151, 148, 150, 136, 111, 64, 139, + 165, 158, 144, 151, 144, 151, 151, 148, 142, 140, 83, 0, 106, 99, 96, 85, + 91, 76, 68, 65, 75, 64, 34, 111, 123, 116, 126, 241, 241, 226, 106, 100, + 114, 135, 146, 155, 165, 170, 169, 177, 175, 163, 155, 139, 124, 126, 114, 14, + 24, 34, 63, 79, 93, 106, 106, 110, 107, 88, 95, 57, 97, 127, 110, 107, + 118, 104, 118, 112, 138, 222, 233, 230, 179, 128, 118, 80, 64, 69, 80, 79, + 77, 84, 88, 218, 220, 216, 135, 130, 139, 146, 159, 148, 147, 150, 122, 118, + 111, 41, 25, 24, 37, 63, 71, 73, 81, 95, 81, 41, 112, 122, 104, 228, + 240, 236, 123, 106, 116, 127, 142, 148, 167, 166, 161, 136, 42, 26, 25, 29, + 28, 30, 24, 61, 111, 210, 216, 208, 143, 138, 140, 146, 139, 134, 132, 132, + 115, 104, 32, 29, 29, 48, 51, 53, 71, 81, 83, 229, 229, 220, 118, 112, + 123, 131, 143, 155, 162, 166, 178, 173, 167, 165, 155, 100, 28, 16, 18, 18, + 18, 17, 21, 26, 49, 64, 84, 83, 81, 79, 68, 57, 46, 59, 68, 131, + 220, 228, 213, 179, 144, 127, 126, 139, 148, 161, 174, 181, 190, 197, 204, 213, + 204, 154, 123, 150, 198, 222, 220, 205, 198, 193, 201, 202, 213, 209, 206, 186, + 178, 166, 159, 150, 135, 128, 114, 72, 36, 29, 51, 55, 68, 72, 57, 46, + 53, 48, 55, 68, 32, 87, 205, 220, 216, 115, 108, 120, 134, 142, 158, 165, + 170, 173, 174, 175, 167, 155, 99, 29, 18, 16, 16, 17, 21, 22, 18, 17, + 17, 18, 20, 12, 48, 57, 45, 40, 30, 36, 37, 52, 48, 38, 40, 12, + 52, 69, 88, 110, 162, 157, 114, 106, 127, 147, 159, 167, 173, 179, 190, 191, + 197, 205, 202, 204, 216, 220, 213, 202, 194, 191, 186, 181, 173, 166, 166, 157, + 154, 136, 123, 13, 9, 9, 17, 5, 10, 155, 166, 144, 136, 134, 119, 175, + 218, 175, 106, 108, 119, 136, 147, 153, 159, 169, 163, 165, 155, 124, 120, 130, + 126, 73, 44, 56, 76, 99, 127, 124, 128, 110, 84, 161, 185, 190, 186, 189, + 187, 187, 185, 169, 157, 135, 57, 201, 218, 225, 217, 220, 202, 195, 162, 138, + 88, 56, 124, 154, 147, 154, 142, 146, 135, 155, 241, 241, 233, 108, 95, 97, + 111, 138, 148, 165, 171, 171, 166, 161, 150, 142, 132, 37, 32, 25, 65, 72, + 67, 80, 107, 110, 114, 76, 48, 120, 134, 148, 230, 228, 221, 122, 108, 119, + 130, 126, 130, 144, 161, 174, 182, 181, 179, 165, 151, 84, 44, 42, 33, 55, + 88, 87, 112, 173, 217, 208, 163, 146, 151, 171, 182, 189, 194, 195, 199, 206, + 208, 199, 190, 151, 60, 46, 44, 75, 104, 114, 124, 150, 224, 225, 194, 174, + 185, 185, 177, 155, 144, 136, 143, 142, 127, 127, 92, 59, 67, 75, 87, 126, + 150, 128, 116, 119, 138, 217, 234, 242, 238, 159, 120, 127, 134, 138, 142, 151, + 154, 158, 72, 49, 42, 28, 53, 57, 77, 108, 208, 214, 206, 173, 173, 173, + 169, 174, 144, 140, 120, 93, 46, 49, 65, 79, 71, 83, 85, 83, 83, 161, + 158, 153, 147, 150, 151, 147, 157, 132, 99, 81, 108, 151, 157, 147, 150, 150, + 148, 150, 148, 148, 138, 83, 24, 103, 96, 96, 81, 88, 95, 71, 72, 84, + 56, 36, 120, 124, 116, 131, 240, 236, 179, 102, 100, 114, 134, 142, 151, 158, + 166, 169, 177, 177, 171, 161, 146, 126, 126, 118, 16, 26, 37, 72, 71, 95, + 99, 103, 108, 96, 92, 83, 55, 110, 119, 108, 111, 115, 110, 118, 116, 144, + 233, 236, 229, 150, 118, 102, 69, 60, 65, 80, 76, 76, 88, 97, 216, 220, + 216, 136, 130, 143, 166, 163, 163, 158, 148, 119, 118, 111, 37, 26, 25, 40, + 61, 72, 73, 83, 84, 68, 42, 79, 119, 131, 226, 238, 237, 126, 106, 118, + 126, 140, 148, 169, 167, 162, 128, 40, 26, 25, 30, 30, 33, 25, 61, 107, + 209, 214, 229, 122, 135, 136, 142, 134, 138, 142, 135, 114, 92, 30, 29, 30, + 49, 49, 49, 67, 64, 84, 234, 225, 218, 116, 112, 123, 134, 144, 157, 163, + 166, 177, 171, 165, 163, 142, 56, 18, 18, 18, 18, 24, 26, 22, 56, 61, + 79, 73, 75, 80, 88, 69, 51, 45, 56, 89, 204, 225, 222, 195, 135, 114, + 126, 136, 148, 161, 173, 179, 187, 190, 201, 206, 208, 111, 72, 67, 77, 112, + 161, 224, 213, 208, 194, 202, 210, 214, 212, 199, 182, 179, 171, 162, 150, 135, + 123, 118, 84, 41, 45, 51, 56, 63, 61, 56, 45, 56, 53, 51, 67, 46, + 72, 218, 221, 218, 116, 111, 122, 135, 143, 157, 165, 169, 171, 175, 170, 162, + 139, 59, 18, 14, 17, 20, 25, 22, 21, 17, 17, 22, 21, 22, 13, 53, + 61, 46, 44, 49, 44, 48, 53, 33, 40, 41, 10, 49, 65, 85, 89, 138, + 171, 122, 104, 123, 139, 157, 165, 173, 178, 185, 191, 194, 194, 193, 193, 197, + 204, 206, 202, 198, 198, 187, 178, 174, 165, 166, 158, 155, 138, 118, 12, 10, + 6, 25, 9, 9, 148, 147, 144, 130, 134, 122, 153, 206, 205, 111, 107, 115, + 124, 143, 154, 161, 170, 166, 167, 155, 120, 122, 130, 127, 100, 48, 51, 60, + 72, 95, 135, 124, 112, 79, 138, 186, 187, 186, 189, 186, 189, 185, 167, 153, + 144, 45, 212, 224, 225, 218, 202, 181, 155, 138, 127, 84, 55, 95, 148, 154, + 165, 138, 143, 136, 146, 242, 242, 234, 108, 97, 95, 114, 131, 144, 162, 170, + 171, 167, 158, 147, 143, 132, 37, 33, 38, 69, 75, 89, 93, 93, 103, 106, + 89, 72, 110, 130, 142, 229, 236, 225, 130, 118, 118, 123, 123, 126, 134, 147, + 162, 181, 181, 165, 163, 146, 69, 44, 38, 29, 53, 81, 85, 104, 163, 213, + 213, 178, 143, 144, 163, 174, 181, 187, 191, 194, 199, 204, 201, 190, 178, 87, + 45, 42, 75, 97, 114, 124, 142, 220, 225, 198, 173, 183, 187, 167, 150, 131, + 126, 130, 135, 130, 127, 107, 64, 59, 73, 81, 120, 139, 126, 116, 131, 140, + 216, 233, 241, 221, 144, 124, 131, 138, 136, 153, 157, 162, 165, 69, 49, 45, + 32, 53, 64, 71, 106, 208, 218, 214, 175, 174, 177, 170, 173, 147, 138, 120, + 92, 42, 44, 64, 64, 61, 71, 79, 32, 84, 154, 148, 151, 153, 153, 147, + 147, 162, 134, 93, 73, 140, 163, 146, 151, 153, 159, 163, 157, 146, 146, 144, + 63, 32, 79, 92, 93, 79, 85, 72, 71, 75, 68, 63, 37, 115, 123, 116, + 126, 237, 234, 165, 99, 97, 112, 122, 134, 144, 154, 165, 169, 179, 175, 171, + 161, 147, 126, 127, 119, 17, 28, 29, 52, 69, 80, 97, 103, 103, 97, 92, + 89, 53, 89, 116, 106, 107, 106, 104, 108, 116, 175, 244, 236, 220, 131, 114, + 95, 56, 59, 63, 76, 73, 75, 85, 96, 218, 220, 214, 136, 131, 142, 166, + 159, 163, 151, 153, 116, 118, 108, 38, 25, 25, 41, 61, 69, 75, 75, 79, + 69, 34, 80, 123, 128, 228, 238, 236, 123, 107, 114, 126, 142, 151, 169, 163, + 166, 127, 36, 25, 26, 34, 28, 42, 26, 57, 97, 206, 214, 210, 135, 130, + 132, 142, 136, 135, 138, 134, 112, 85, 28, 26, 29, 45, 48, 53, 61, 68, + 100, 233, 234, 221, 116, 111, 123, 134, 144, 158, 165, 167, 174, 169, 165, 161, + 112, 36, 18, 20, 21, 18, 22, 18, 16, 63, 67, 80, 95, 84, 71, 89, + 68, 61, 55, 64, 142, 216, 220, 212, 166, 111, 120, 134, 144, 159, 171, 174, + 185, 185, 194, 201, 209, 170, 80, 46, 33, 37, 55, 110, 204, 222, 213, 199, + 191, 213, 213, 210, 208, 193, 178, 173, 161, 148, 132, 118, 119, 93, 45, 44, + 45, 65, 56, 61, 69, 44, 55, 49, 59, 60, 36, 81, 218, 228, 218, 116, + 112, 122, 135, 140, 157, 165, 165, 169, 170, 165, 159, 112, 37, 17, 16, 21, + 24, 28, 25, 20, 18, 20, 25, 20, 22, 12, 49, 49, 56, 41, 52, 48, + 48, 48, 46, 41, 37, 14, 45, 61, 71, 72, 97, 162, 136, 103, 111, 134, + 151, 162, 170, 175, 182, 189, 197, 197, 198, 197, 195, 194, 198, 209, 199, 199, + 190, 182, 173, 167, 169, 158, 153, 136, 123, 13, 9, 6, 18, 12, 9, 136, + 134, 130, 132, 119, 119, 119, 173, 204, 136, 102, 107, 116, 140, 153, 159, 165, + 171, 163, 148, 128, 123, 131, 126, 116, 55, 56, 76, 72, 89, 128, 111, 130, + 89, 132, 169, 182, 190, 187, 190, 186, 179, 155, 155, 146, 52, 212, 229, 229, + 220, 167, 144, 127, 120, 103, 73, 55, 79, 132, 148, 159, 136, 135, 132, 148, + 241, 241, 230, 104, 95, 99, 119, 131, 142, 162, 167, 170, 165, 158, 148, 146, + 131, 40, 36, 38, 69, 75, 83, 83, 76, 99, 93, 95, 84, 91, 134, 155, + 233, 233, 226, 130, 120, 126, 122, 120, 124, 136, 151, 147, 157, 159, 154, 158, + 138, 53, 40, 36, 29, 49, 56, 79, 104, 134, 208, 213, 187, 140, 142, 154, + 167, 175, 177, 179, 186, 194, 201, 199, 195, 190, 114, 48, 41, 76, 89, 111, + 120, 132, 214, 225, 206, 177, 182, 187, 167, 158, 148, 147, 142, 127, 131, 123, + 114, 71, 59, 69, 67, 111, 131, 114, 111, 128, 134, 217, 236, 241, 190, 135, + 130, 135, 140, 138, 151, 157, 162, 165, 68, 46, 44, 30, 53, 61, 84, 102, + 208, 220, 220, 177, 178, 175, 166, 175, 150, 138, 123, 88, 42, 38, 46, 57, + 61, 67, 83, 52, 122, 155, 161, 157, 150, 158, 147, 151, 134, 134, 128, 67, + 134, 155, 163, 161, 167, 161, 158, 151, 157, 150, 136, 93, 0, 91, 93, 81, + 79, 76, 71, 68, 71, 69, 67, 36, 96, 122, 108, 127, 234, 229, 178, 103, + 102, 110, 114, 126, 135, 151, 163, 171, 175, 178, 165, 159, 143, 127, 132, 114, + 18, 28, 30, 52, 65, 81, 96, 100, 93, 106, 92, 87, 49, 91, 107, 110, + 97, 110, 108, 104, 124, 209, 240, 237, 216, 130, 114, 76, 55, 52, 61, 63, + 71, 65, 84, 92, 214, 220, 210, 134, 132, 144, 169, 163, 157, 151, 148, 119, + 118, 106, 33, 24, 28, 41, 57, 69, 72, 81, 80, 76, 30, 93, 118, 104, + 224, 237, 232, 122, 108, 119, 127, 142, 157, 169, 166, 163, 120, 41, 28, 25, + 22, 33, 38, 24, 48, 87, 206, 212, 202, 132, 128, 131, 142, 140, 130, 135, + 134, 114, 87, 25, 24, 22, 38, 46, 56, 59, 64, 87, 234, 228, 222, 116, + 111, 123, 135, 144, 158, 166, 169, 173, 163, 161, 148, 77, 22, 21, 22, 20, + 21, 28, 26, 16, 51, 69, 81, 89, 88, 72, 83, 71, 59, 55, 57, 166, + 212, 220, 202, 134, 107, 122, 135, 150, 163, 169, 181, 186, 190, 197, 202, 212, + 136, 53, 29, 28, 33, 51, 89, 167, 225, 214, 209, 186, 213, 217, 218, 209, + 197, 181, 173, 163, 148, 135, 123, 123, 108, 53, 45, 41, 45, 57, 61, 55, + 30, 53, 41, 71, 55, 45, 69, 212, 228, 226, 115, 110, 120, 134, 142, 155, + 166, 162, 170, 169, 163, 148, 84, 25, 18, 20, 21, 26, 24, 25, 25, 22, + 25, 24, 22, 22, 12, 49, 55, 40, 51, 52, 48, 49, 48, 48, 36, 34, + 6, 38, 52, 59, 72, 87, 128, 155, 118, 102, 122, 143, 159, 167, 177, 179, + 186, 193, 187, 186, 189, 199, 195, 190, 195, 208, 201, 191, 183, 177, 169, 170, + 159, 154, 143, 123, 8, 12, 8, 10, 16, 2, 127, 126, 126, 114, 104, 102, + 108, 142, 201, 185, 102, 106, 116, 139, 151, 158, 159, 158, 154, 150, 120, 122, + 123, 128, 131, 79, 55, 61, 69, 79, 122, 123, 126, 103, 104, 157, 169, 173, + 178, 167, 170, 171, 161, 158, 150, 64, 216, 230, 234, 198, 163, 126, 119, 123, + 93, 73, 60, 69, 88, 106, 120, 114, 135, 123, 136, 240, 240, 222, 104, 95, + 102, 116, 126, 138, 159, 170, 167, 165, 158, 146, 146, 130, 42, 38, 42, 65, + 75, 60, 84, 84, 69, 96, 104, 80, 85, 128, 147, 233, 233, 225, 131, 107, + 114, 130, 130, 128, 139, 142, 139, 151, 150, 153, 154, 134, 52, 41, 40, 29, + 51, 63, 83, 107, 120, 199, 214, 195, 147, 139, 144, 159, 167, 169, 173, 179, + 187, 194, 197, 194, 191, 148, 60, 44, 68, 85, 104, 110, 122, 205, 226, 214, + 178, 178, 187, 174, 163, 158, 151, 148, 144, 127, 120, 123, 91, 59, 68, 65, + 104, 131, 150, 124, 122, 124, 198, 237, 241, 185, 130, 135, 142, 144, 140, 151, + 161, 165, 166, 68, 48, 41, 30, 44, 57, 76, 107, 216, 221, 221, 177, 177, + 178, 170, 174, 151, 138, 126, 89, 41, 38, 44, 53, 77, 57, 87, 51, 115, + 128, 118, 127, 128, 130, 127, 131, 127, 127, 95, 53, 131, 146, 150, 143, 155, + 147, 139, 136, 148, 144, 126, 61, 0, 92, 76, 76, 69, 81, 72, 85, 69, + 77, 61, 34, 99, 118, 115, 124, 238, 237, 220, 106, 102, 106, 115, 114, 135, + 155, 165, 177, 179, 170, 159, 148, 132, 127, 124, 111, 22, 29, 33, 48, 68, + 79, 92, 96, 100, 102, 88, 84, 51, 89, 110, 108, 100, 102, 106, 108, 136, + 226, 238, 241, 217, 131, 110, 67, 51, 45, 71, 56, 68, 69, 72, 83, 214, + 213, 209, 130, 132, 143, 162, 157, 155, 146, 138, 119, 115, 100, 33, 22, 26, + 40, 51, 68, 71, 76, 96, 75, 28, 104, 118, 111, 220, 236, 228, 126, 110, + 118, 128, 144, 157, 163, 165, 166, 134, 49, 28, 28, 33, 33, 40, 25, 45, + 81, 206, 202, 199, 124, 131, 130, 142, 132, 134, 131, 134, 114, 81, 22, 24, + 21, 46, 42, 45, 48, 61, 83, 233, 230, 224, 118, 111, 120, 131, 144, 158, + 166, 171, 171, 161, 159, 144, 57, 21, 21, 21, 22, 20, 20, 29, 16, 69, + 75, 76, 68, 63, 71, 69, 68, 61, 51, 59, 173, 210, 202, 190, 118, 110, + 122, 135, 148, 170, 170, 183, 189, 189, 197, 202, 205, 122, 48, 33, 28, 28, + 41, 68, 142, 226, 218, 212, 194, 209, 213, 214, 213, 205, 182, 178, 163, 154, + 136, 126, 120, 114, 75, 48, 51, 46, 51, 63, 55, 44, 41, 38, 37, 36, + 34, 65, 198, 226, 226, 118, 110, 120, 134, 139, 155, 162, 161, 169, 166, 157, + 139, 63, 21, 18, 20, 24, 26, 29, 25, 24, 24, 22, 22, 22, 26, 16, + 42, 49, 51, 56, 52, 51, 51, 49, 51, 32, 36, 6, 37, 46, 60, 65, + 79, 87, 162, 136, 102, 112, 139, 154, 165, 174, 181, 183, 185, 186, 183, 186, + 190, 201, 201, 189, 197, 199, 195, 189, 178, 169, 171, 161, 157, 142, 123, 8, + 9, 8, 18, 13, 5, 127, 102, 114, 126, 92, 88, 84, 95, 146, 209, 128, + 102, 112, 128, 144, 150, 158, 159, 151, 132, 119, 120, 120, 124, 127, 110, 63, + 65, 73, 76, 91, 100, 99, 106, 124, 146, 127, 130, 138, 131, 134, 127, 162, + 157, 146, 56, 195, 230, 236, 182, 138, 124, 119, 116, 92, 67, 59, 72, 76, + 87, 92, 91, 92, 130, 136, 241, 238, 229, 108, 88, 96, 114, 115, 135, 151, + 162, 167, 165, 158, 144, 143, 132, 42, 38, 24, 61, 65, 68, 76, 57, 53, + 75, 89, 83, 75, 124, 136, 232, 233, 232, 127, 102, 114, 123, 131, 143, 144, + 140, 136, 142, 136, 151, 150, 128, 56, 38, 40, 24, 49, 52, 81, 91, 114, + 193, 214, 198, 147, 136, 139, 153, 159, 165, 167, 174, 182, 190, 193, 191, 189, + 169, 81, 48, 56, 81, 96, 108, 123, 193, 229, 220, 183, 173, 187, 190, 161, + 170, 165, 155, 150, 144, 130, 122, 116, 71, 64, 61, 96, 130, 140, 115, 107, + 128, 191, 225, 240, 171, 128, 138, 144, 147, 139, 153, 169, 171, 173, 75, 55, + 38, 29, 42, 55, 89, 116, 222, 225, 222, 182, 179, 178, 173, 174, 155, 142, + 128, 87, 38, 41, 41, 44, 48, 46, 60, 71, 71, 103, 103, 107, 108, 116, + 110, 100, 124, 123, 60, 61, 51, 122, 110, 96, 89, 116, 95, 83, 77, 110, + 76, 14, 51, 75, 64, 45, 48, 56, 48, 44, 44, 61, 49, 37, 89, 104, + 118, 135, 240, 234, 228, 107, 106, 110, 114, 122, 136, 162, 165, 170, 177, 173, + 162, 147, 120, 130, 131, 108, 25, 33, 34, 41, 52, 61, 79, 89, 92, 89, + 85, 84, 46, 92, 99, 104, 95, 96, 99, 111, 155, 242, 245, 241, 198, 127, + 111, 60, 48, 44, 59, 67, 57, 63, 73, 80, 216, 218, 212, 135, 134, 142, + 155, 157, 155, 154, 119, 120, 115, 97, 28, 24, 24, 42, 45, 61, 69, 73, + 79, 64, 38, 60, 106, 107, 212, 232, 229, 126, 112, 120, 130, 146, 157, 169, + 167, 166, 142, 55, 30, 29, 32, 26, 34, 24, 63, 96, 199, 210, 210, 131, + 128, 126, 135, 135, 132, 130, 126, 111, 73, 24, 20, 21, 38, 32, 37, 46, + 61, 77, 233, 232, 228, 120, 114, 119, 127, 144, 159, 167, 171, 171, 161, 159, + 142, 49, 21, 24, 24, 37, 28, 22, 30, 22, 65, 73, 63, 71, 68, 65, + 61, 69, 60, 53, 56, 171, 205, 202, 166, 104, 111, 120, 131, 151, 167, 170, + 177, 181, 189, 193, 199, 212, 114, 46, 36, 32, 32, 32, 52, 134, 229, 222, + 214, 194, 199, 213, 212, 220, 212, 195, 177, 166, 154, 144, 135, 119, 119, 88, + 53, 56, 37, 40, 45, 37, 45, 29, 17, 26, 20, 30, 68, 182, 221, 228, + 116, 110, 122, 134, 139, 155, 163, 163, 166, 163, 155, 132, 55, 25, 18, 24, + 32, 28, 32, 25, 28, 28, 29, 28, 30, 28, 17, 22, 41, 61, 28, 32, + 42, 44, 40, 45, 37, 33, 6, 36, 37, 42, 40, 65, 69, 100, 151, 104, + 100, 130, 147, 161, 170, 177, 178, 182, 181, 185, 186, 189, 191, 199, 198, 190, + 195, 194, 190, 182, 173, 171, 162, 158, 144, 124, 9, 9, 6, 10, 4, 2, + 87, 99, 104, 104, 110, 118, 120, 134, 97, 181, 190, 111, 107, 112, 132, 144, + 148, 154, 148, 136, 126, 120, 112, 126, 130, 130, 80, 65, 61, 61, 63, 63, + 60, 59, 65, 68, 71, 84, 89, 97, 104, 107, 131, 153, 154, 59, 201, 232, + 232, 170, 130, 118, 118, 115, 91, 64, 46, 55, 73, 72, 72, 79, 80, 119, + 111, 241, 237, 226, 107, 99, 95, 114, 128, 127, 144, 159, 170, 165, 155, 144, + 146, 126, 42, 46, 45, 56, 60, 71, 68, 72, 73, 93, 65, 69, 76, 119, + 140, 232, 234, 225, 131, 114, 116, 126, 130, 143, 136, 139, 135, 138, 136, 150, + 146, 124, 52, 49, 38, 32, 73, 91, 88, 104, 110, 186, 210, 206, 153, 132, + 136, 148, 155, 159, 166, 170, 175, 183, 189, 190, 190, 181, 104, 51, 45, 65, + 88, 102, 115, 175, 229, 224, 186, 173, 179, 189, 186, 154, 170, 161, 157, 144, + 144, 131, 126, 95, 61, 67, 89, 106, 111, 99, 111, 123, 162, 230, 238, 171, + 132, 139, 148, 146, 146, 161, 171, 175, 179, 81, 60, 48, 36, 67, 85, 93, + 127, 226, 228, 226, 189, 179, 182, 174, 174, 159, 144, 126, 95, 34, 33, 36, + 13, 13, 9, 12, 13, 34, 36, 16, 14, 32, 33, 25, 25, 36, 41, 36, + 61, 30, 30, 18, 24, 29, 32, 9, 22, 30, 34, 6, 24, 76, 22, 51, + 64, 71, 75, 84, 84, 87, 85, 88, 40, 118, 112, 120, 143, 238, 240, 229, + 107, 106, 112, 118, 127, 142, 158, 161, 166, 170, 174, 161, 146, 124, 130, 127, + 103, 29, 34, 34, 42, 53, 53, 55, 57, 60, 72, 68, 56, 46, 85, 91, + 84, 81, 93, 107, 107, 202, 242, 246, 238, 173, 122, 107, 53, 45, 38, 36, + 40, 44, 51, 71, 79, 221, 224, 208, 131, 127, 124, 147, 154, 153, 146, 118, + 110, 118, 89, 25, 22, 26, 36, 44, 55, 59, 59, 64, 57, 33, 41, 104, + 112, 206, 228, 228, 127, 114, 122, 130, 146, 155, 169, 171, 170, 148, 73, 34, + 29, 34, 24, 29, 44, 75, 124, 208, 214, 197, 128, 124, 123, 131, 131, 135, + 131, 123, 110, 67, 21, 18, 17, 25, 28, 30, 49, 63, 68, 233, 236, 230, + 118, 110, 118, 127, 144, 159, 167, 174, 170, 159, 157, 143, 46, 22, 22, 25, + 26, 37, 32, 24, 17, 44, 49, 44, 45, 56, 55, 46, 46, 55, 56, 61, + 159, 204, 187, 143, 99, 111, 118, 131, 150, 169, 177, 183, 178, 189, 190, 193, + 208, 136, 52, 37, 25, 33, 38, 61, 138, 226, 224, 218, 195, 183, 209, 213, + 213, 212, 198, 177, 169, 158, 153, 138, 118, 119, 102, 59, 61, 49, 41, 38, + 33, 12, 21, 17, 22, 20, 26, 80, 175, 229, 225, 118, 112, 123, 134, 139, + 155, 163, 163, 169, 162, 154, 134, 55, 22, 22, 29, 21, 20, 16, 14, 14, + 12, 10, 10, 10, 6, 17, 21, 13, 21, 18, 16, 12, 14, 24, 34, 34, + 25, 8, 37, 36, 38, 36, 34, 40, 72, 135, 120, 95, 123, 143, 157, 166, + 171, 174, 174, 173, 174, 175, 178, 187, 194, 202, 191, 191, 199, 191, 183, 173, + 173, 162, 159, 146, 127, 6, 6, 6, 10, 5, 4, 197, 191, 183, 179, 179, + 177, 179, 126, 138, 135, 194, 136, 104, 108, 115, 130, 146, 144, 143, 132, 139, + 139, 126, 115, 124, 130, 120, 76, 75, 93, 99, 104, 97, 104, 106, 123, 136, + 126, 132, 126, 106, 110, 95, 104, 143, 64, 187, 232, 233, 191, 128, 118, 116, + 106, 83, 55, 56, 52, 79, 102, 115, 115, 114, 124, 132, 228, 234, 224, 102, + 91, 104, 118, 116, 120, 131, 154, 167, 159, 153, 140, 143, 128, 41, 42, 48, + 30, 34, 40, 40, 30, 48, 67, 44, 40, 118, 110, 163, 230, 232, 226, 128, + 118, 126, 132, 130, 140, 127, 148, 143, 140, 134, 148, 142, 118, 51, 49, 38, + 45, 81, 95, 99, 110, 111, 173, 216, 202, 158, 132, 134, 142, 151, 155, 162, + 165, 170, 179, 186, 189, 185, 185, 132, 55, 56, 65, 95, 107, 126, 167, 225, + 226, 187, 171, 177, 185, 189, 181, 154, 169, 163, 157, 147, 144, 127, 120, 76, + 65, 69, 73, 79, 96, 115, 122, 154, 222, 229, 175, 135, 144, 154, 142, 143, + 159, 178, 181, 183, 92, 52, 44, 25, 61, 88, 102, 162, 229, 229, 225, 185, + 183, 179, 171, 171, 159, 143, 127, 93, 40, 36, 38, 29, 53, 33, 56, 38, + 112, 124, 119, 106, 116, 120, 119, 107, 119, 120, 63, 37, 51, 138, 132, 114, + 114, 134, 126, 111, 108, 108, 103, 72, 32, 52, 118, 134, 138, 131, 135, 130, + 132, 93, 84, 37, 119, 123, 122, 182, 236, 240, 218, 106, 106, 110, 119, 131, + 144, 153, 153, 151, 158, 170, 162, 148, 128, 136, 138, 106, 34, 38, 41, 57, + 67, 69, 49, 68, 69, 67, 60, 72, 65, 76, 81, 92, 95, 99, 112, 169, + 237, 244, 246, 240, 150, 116, 103, 49, 42, 38, 41, 45, 56, 61, 75, 91, + 220, 222, 212, 130, 127, 130, 136, 142, 154, 143, 119, 115, 119, 99, 28, 24, + 28, 40, 45, 42, 44, 48, 38, 57, 25, 48, 89, 103, 202, 224, 221, 130, + 114, 122, 130, 142, 155, 163, 167, 169, 157, 95, 38, 32, 28, 33, 34, 59, + 87, 185, 221, 222, 208, 126, 124, 127, 128, 127, 139, 136, 116, 110, 57, 21, + 17, 24, 38, 40, 49, 56, 67, 83, 232, 230, 230, 119, 110, 122, 134, 144, + 158, 169, 173, 167, 159, 153, 144, 51, 25, 29, 40, 46, 55, 52, 26, 22, + 25, 24, 33, 25, 29, 25, 30, 21, 30, 25, 37, 147, 199, 191, 128, 99, + 112, 118, 128, 132, 166, 177, 174, 177, 181, 191, 197, 206, 154, 65, 41, 32, + 48, 40, 83, 143, 228, 225, 222, 193, 179, 199, 212, 210, 208, 199, 182, 177, + 158, 161, 143, 128, 120, 111, 68, 55, 64, 61, 57, 41, 9, 25, 89, 120, + 93, 91, 128, 194, 216, 222, 114, 111, 120, 134, 132, 151, 159, 166, 162, 161, + 153, 136, 59, 26, 26, 41, 46, 68, 83, 88, 88, 84, 93, 91, 84, 37, + 16, 53, 73, 72, 63, 67, 67, 49, 26, 14, 13, 25, 24, 14, 18, 20, + 25, 25, 18, 34, 104, 132, 100, 100, 138, 144, 155, 162, 157, 159, 154, 154, + 143, 150, 148, 186, 201, 209, 183, 197, 191, 182, 171, 171, 161, 158, 146, 122, + 6, 6, 6, 6, 22, 24, 198, 187, 193, 186, 182, 194, 148, 173, 140, 60, + 194, 171, 112, 107, 107, 108, 119, 131, 134, 144, 135, 132, 140, 131, 122, 134, + 134, 110, 80, 80, 75, 96, 108, 106, 115, 126, 158, 135, 150, 148, 138, 120, + 146, 150, 143, 88, 208, 234, 237, 190, 126, 112, 111, 95, 69, 51, 55, 53, + 97, 111, 112, 116, 115, 126, 128, 212, 226, 222, 96, 89, 104, 118, 118, 118, + 127, 140, 163, 159, 153, 138, 143, 131, 52, 48, 46, 34, 57, 75, 102, 110, + 114, 122, 118, 116, 102, 122, 213, 217, 222, 225, 127, 110, 118, 118, 132, 142, + 120, 132, 142, 146, 138, 146, 144, 123, 46, 42, 41, 41, 88, 88, 99, 100, + 110, 161, 209, 204, 167, 131, 131, 132, 144, 154, 161, 167, 169, 177, 183, 185, + 181, 183, 158, 77, 53, 60, 106, 114, 122, 155, 220, 226, 193, 167, 173, 182, + 189, 189, 163, 153, 167, 169, 159, 154, 139, 127, 107, 84, 84, 88, 114, 120, + 122, 128, 139, 209, 226, 177, 142, 147, 157, 140, 146, 161, 183, 189, 186, 138, + 72, 48, 22, 68, 95, 114, 187, 233, 230, 228, 183, 181, 181, 173, 170, 159, + 143, 127, 85, 37, 34, 38, 63, 55, 59, 64, 38, 131, 139, 124, 110, 107, + 116, 103, 107, 112, 123, 75, 29, 106, 139, 128, 131, 131, 128, 132, 124, 130, + 123, 126, 76, 28, 115, 136, 132, 132, 127, 128, 116, 124, 106, 99, 37, 126, + 126, 124, 199, 240, 241, 221, 106, 103, 108, 118, 134, 147, 159, 155, 140, 151, + 153, 148, 124, 124, 139, 139, 106, 36, 40, 40, 64, 49, 60, 69, 73, 80, + 85, 85, 79, 88, 100, 103, 110, 116, 124, 155, 214, 244, 245, 242, 218, 127, + 118, 80, 44, 37, 37, 49, 53, 56, 68, 72, 96, 222, 228, 221, 123, 122, + 131, 115, 131, 132, 131, 114, 120, 118, 104, 29, 24, 26, 45, 49, 65, 69, + 69, 61, 59, 20, 112, 107, 111, 183, 221, 216, 135, 115, 122, 130, 142, 150, + 166, 167, 171, 170, 135, 52, 38, 33, 37, 56, 72, 103, 197, 222, 224, 208, + 126, 124, 126, 122, 132, 130, 127, 116, 100, 34, 18, 14, 28, 45, 52, 53, + 64, 63, 89, 232, 232, 232, 120, 112, 122, 131, 144, 158, 167, 173, 163, 153, + 148, 136, 61, 33, 26, 40, 60, 68, 67, 52, 17, 32, 106, 107, 97, 96, + 106, 100, 93, 95, 99, 64, 132, 190, 185, 118, 100, 114, 119, 124, 124, 153, + 158, 178, 173, 170, 183, 194, 197, 198, 114, 56, 48, 55, 63, 131, 201, 229, + 226, 222, 187, 177, 193, 204, 204, 202, 199, 175, 175, 166, 157, 155, 136, 122, + 122, 73, 76, 93, 132, 122, 46, 16, 75, 131, 119, 128, 150, 158, 210, 220, + 209, 115, 110, 120, 131, 127, 147, 157, 163, 165, 157, 150, 135, 65, 30, 25, + 45, 80, 95, 93, 87, 92, 93, 93, 93, 96, 63, 22, 67, 81, 80, 80, + 75, 76, 72, 71, 59, 29, 21, 22, 38, 88, 95, 61, 75, 83, 68, 38, + 144, 120, 91, 115, 128, 136, 142, 144, 123, 124, 131, 71, 57, 81, 165, 199, + 213, 190, 187, 190, 179, 170, 170, 159, 153, 143, 116, 5, 8, 9, 17, 57, + 64, 186, 183, 161, 187, 185, 173, 140, 171, 139, 60, 182, 177, 116, 108, 106, + 104, 103, 104, 112, 134, 148, 139, 131, 139, 124, 120, 126, 131, 104, 81, 89, + 103, 73, 99, 112, 155, 147, 140, 154, 138, 132, 122, 147, 111, 89, 146, 226, + 237, 232, 202, 127, 110, 104, 85, 61, 46, 56, 46, 95, 110, 104, 108, 111, + 123, 162, 229, 225, 204, 102, 99, 108, 119, 124, 118, 124, 132, 151, 155, 146, + 130, 146, 132, 49, 51, 22, 83, 83, 93, 97, 111, 123, 118, 116, 103, 115, + 136, 232, 228, 226, 212, 130, 103, 111, 120, 144, 147, 130, 119, 127, 135, 134, + 144, 144, 123, 60, 40, 40, 40, 88, 93, 112, 95, 104, 144, 201, 199, 166, + 132, 130, 130, 143, 147, 158, 163, 161, 170, 175, 182, 177, 177, 170, 99, 56, + 51, 97, 115, 122, 140, 205, 222, 201, 167, 170, 179, 187, 191, 183, 153, 154, + 169, 173, 162, 153, 138, 130, 104, 108, 110, 116, 116, 112, 126, 130, 193, 230, + 179, 142, 153, 161, 140, 143, 173, 185, 190, 191, 163, 63, 51, 41, 81, 103, + 122, 197, 234, 232, 228, 185, 182, 173, 173, 171, 162, 143, 124, 81, 36, 36, + 36, 53, 76, 83, 63, 41, 123, 143, 131, 142, 134, 132, 142, 131, 123, 120, + 77, 59, 134, 143, 128, 124, 120, 114, 110, 123, 114, 103, 122, 56, 26, 118, + 136, 127, 118, 112, 118, 123, 127, 99, 91, 40, 124, 127, 128, 218, 238, 234, + 216, 110, 104, 110, 114, 126, 150, 159, 161, 159, 151, 136, 130, 119, 131, 138, + 144, 111, 65, 41, 42, 68, 52, 64, 77, 81, 76, 76, 80, 79, 95, 115, + 123, 131, 123, 151, 209, 241, 246, 245, 238, 161, 123, 115, 67, 42, 40, 34, + 51, 56, 57, 67, 72, 96, 222, 225, 220, 131, 131, 126, 132, 116, 110, 106, + 112, 123, 112, 103, 29, 28, 25, 48, 63, 76, 77, 72, 76, 53, 21, 106, + 118, 107, 157, 212, 217, 151, 116, 123, 130, 142, 148, 159, 166, 163, 170, 153, + 108, 60, 60, 65, 87, 112, 174, 198, 221, 216, 217, 126, 123, 126, 124, 124, + 132, 118, 112, 71, 24, 18, 16, 30, 44, 51, 61, 71, 71, 102, 229, 230, + 229, 119, 114, 123, 136, 146, 158, 169, 173, 162, 155, 151, 138, 75, 34, 28, + 45, 65, 63, 64, 68, 18, 116, 118, 110, 104, 102, 111, 108, 100, 106, 95, + 69, 77, 179, 177, 116, 104, 115, 118, 122, 127, 131, 166, 175, 182, 161, 177, + 183, 194, 205, 161, 85, 61, 77, 122, 143, 220, 225, 226, 222, 189, 171, 178, + 189, 185, 187, 189, 179, 174, 169, 165, 162, 153, 127, 120, 84, 91, 130, 139, + 135, 38, 10, 84, 134, 122, 144, 150, 162, 216, 222, 217, 110, 108, 120, 131, + 122, 138, 158, 169, 162, 154, 146, 135, 91, 36, 29, 49, 85, 84, 89, 83, + 93, 89, 79, 81, 93, 96, 22, 71, 80, 73, 56, 48, 46, 48, 53, 71, + 46, 22, 16, 85, 85, 85, 87, 89, 75, 68, 63, 44, 48, 52, 75, 104, + 99, 108, 92, 68, 45, 42, 32, 36, 69, 143, 201, 213, 197, 181, 189, 177, + 171, 171, 158, 151, 143, 108, 4, 8, 13, 26, 41, 44, 191, 173, 166, 171, + 163, 169, 143, 138, 131, 64, 185, 177, 136, 119, 107, 103, 104, 104, 100, 108, + 134, 151, 138, 128, 138, 120, 130, 122, 132, 104, 99, 99, 93, 89, 107, 151, + 138, 132, 127, 127, 123, 116, 120, 134, 171, 208, 233, 232, 229, 186, 124, 108, + 88, 65, 53, 45, 51, 45, 75, 103, 108, 100, 110, 130, 209, 229, 228, 208, + 106, 99, 108, 123, 124, 139, 124, 119, 135, 150, 148, 139, 140, 123, 55, 51, + 38, 79, 85, 83, 110, 97, 95, 99, 95, 99, 112, 183, 220, 225, 228, 217, + 131, 123, 110, 119, 135, 134, 147, 135, 119, 119, 130, 135, 144, 126, 64, 37, + 34, 40, 91, 106, 99, 100, 106, 134, 191, 198, 165, 126, 131, 126, 139, 146, + 154, 162, 159, 161, 166, 171, 177, 171, 173, 128, 63, 68, 102, 107, 123, 134, + 175, 222, 208, 166, 165, 177, 189, 190, 190, 174, 148, 153, 170, 167, 161, 150, + 132, 128, 126, 120, 107, 110, 115, 118, 119, 151, 220, 190, 148, 151, 167, 143, + 144, 178, 189, 197, 198, 182, 89, 56, 41, 52, 106, 128, 210, 234, 234, 230, + 179, 179, 174, 170, 174, 163, 142, 118, 57, 34, 34, 24, 59, 60, 72, 69, + 51, 79, 102, 139, 96, 134, 131, 127, 124, 130, 119, 80, 57, 92, 143, 128, + 135, 110, 114, 124, 108, 112, 112, 112, 64, 24, 115, 130, 116, 123, 128, 122, + 124, 104, 95, 95, 52, 111, 118, 136, 225, 237, 237, 214, 112, 108, 111, 112, + 123, 144, 158, 166, 158, 153, 150, 146, 128, 134, 143, 144, 118, 95, 44, 45, + 67, 46, 59, 60, 67, 69, 71, 69, 93, 96, 124, 130, 126, 153, 198, 236, + 244, 248, 245, 225, 132, 119, 107, 56, 40, 36, 37, 51, 53, 60, 68, 83, + 127, 205, 216, 221, 132, 116, 123, 124, 115, 119, 108, 108, 119, 120, 103, 30, + 24, 34, 38, 40, 77, 81, 71, 68, 63, 17, 111, 115, 104, 120, 197, 214, + 183, 122, 119, 131, 138, 147, 153, 165, 163, 174, 175, 155, 114, 115, 135, 165, + 190, 205, 197, 226, 210, 210, 127, 124, 126, 126, 134, 124, 114, 91, 30, 17, + 17, 21, 41, 40, 46, 65, 67, 71, 103, 224, 232, 225, 118, 108, 118, 128, + 146, 158, 167, 171, 162, 154, 148, 139, 114, 42, 28, 46, 59, 61, 60, 55, + 18, 122, 120, 134, 118, 108, 111, 93, 93, 102, 107, 89, 55, 130, 177, 126, + 97, 114, 119, 123, 130, 126, 151, 158, 171, 158, 169, 175, 189, 197, 206, 170, + 138, 158, 185, 217, 225, 226, 221, 222, 185, 170, 166, 178, 181, 178, 183, 181, + 181, 174, 165, 155, 162, 146, 124, 88, 99, 119, 146, 126, 33, 12, 71, 118, + 135, 134, 148, 175, 220, 216, 221, 111, 108, 120, 134, 127, 144, 158, 167, 162, + 154, 143, 136, 112, 46, 36, 48, 84, 84, 84, 92, 100, 97, 92, 79, 95, + 68, 30, 63, 77, 72, 51, 53, 52, 42, 41, 68, 56, 25, 16, 89, 76, + 80, 77, 71, 71, 57, 49, 49, 42, 45, 38, 41, 53, 48, 33, 30, 33, + 28, 22, 38, 69, 150, 209, 220, 198, 177, 187, 181, 174, 170, 161, 148, 140, + 99, 2, 6, 12, 28, 4, 2, 190, 171, 179, 173, 170, 163, 183, 144, 130, + 59, 187, 173, 142, 106, 115, 114, 106, 106, 104, 100, 111, 132, 142, 139, 136, + 134, 114, 124, 124, 131, 123, 115, 124, 119, 136, 136, 154, 146, 135, 132, 130, + 135, 173, 208, 228, 234, 236, 232, 208, 170, 112, 97, 75, 56, 42, 45, 51, + 52, 88, 100, 103, 110, 112, 158, 222, 218, 229, 205, 96, 95, 110, 119, 120, + 136, 115, 118, 123, 143, 138, 136, 140, 124, 59, 56, 71, 106, 102, 80, 91, + 84, 102, 95, 95, 91, 112, 195, 226, 224, 216, 193, 132, 111, 118, 134, 148, + 144, 153, 153, 140, 120, 118, 134, 142, 127, 64, 48, 49, 48, 89, 99, 102, + 95, 102, 107, 189, 199, 175, 130, 124, 124, 138, 143, 150, 159, 165, 153, 153, + 158, 159, 169, 170, 147, 92, 67, 65, 93, 118, 124, 159, 216, 217, 167, 163, + 174, 183, 187, 191, 190, 178, 144, 154, 173, 167, 157, 150, 139, 128, 128, 135, + 116, 104, 111, 122, 130, 194, 214, 163, 154, 166, 142, 146, 183, 193, 204, 202, + 195, 150, 87, 51, 53, 115, 165, 221, 233, 234, 232, 186, 182, 169, 170, 171, + 162, 134, 107, 40, 34, 33, 29, 65, 61, 68, 72, 53, 57, 138, 144, 135, + 138, 135, 128, 128, 126, 115, 79, 64, 93, 144, 112, 119, 110, 128, 116, 107, + 115, 112, 111, 71, 28, 116, 132, 112, 110, 110, 97, 112, 102, 91, 73, 77, + 112, 124, 179, 226, 242, 234, 213, 112, 111, 116, 107, 118, 139, 153, 162, 167, + 162, 155, 147, 140, 124, 130, 147, 134, 103, 46, 48, 52, 59, 60, 76, 80, + 75, 71, 76, 88, 108, 128, 127, 142, 189, 233, 241, 246, 246, 244, 170, 120, + 119, 95, 44, 36, 24, 40, 46, 55, 67, 69, 83, 179, 208, 214, 206, 127, + 120, 126, 128, 118, 118, 119, 103, 107, 119, 108, 34, 25, 26, 37, 63, 75, + 81, 64, 67, 61, 14, 106, 114, 107, 108, 134, 201, 198, 127, 120, 127, 135, + 143, 146, 153, 150, 177, 181, 178, 169, 185, 198, 201, 208, 206, 213, 202, 212, + 163, 127, 127, 134, 136, 130, 119, 114, 38, 20, 17, 14, 28, 38, 44, 51, + 61, 65, 72, 173, 226, 228, 226, 118, 104, 118, 126, 143, 153, 165, 165, 167, + 159, 153, 147, 140, 61, 38, 36, 60, 63, 61, 57, 22, 88, 123, 135, 127, + 119, 130, 112, 112, 106, 99, 106, 55, 76, 171, 142, 100, 104, 118, 122, 124, + 127, 132, 158, 161, 157, 165, 169, 182, 189, 204, 213, 208, 217, 218, 225, 222, + 221, 226, 209, 186, 165, 166, 143, 165, 171, 181, 182, 181, 181, 170, 169, 161, + 162, 142, 118, 100, 132, 143, 69, 29, 10, 63, 118, 119, 124, 135, 158, 217, + 228, 217, 112, 107, 118, 130, 122, 151, 158, 163, 158, 155, 146, 139, 126, 67, + 37, 56, 83, 80, 89, 91, 93, 92, 93, 96, 80, 80, 26, 53, 76, 68, + 44, 51, 37, 38, 46, 48, 48, 25, 18, 48, 72, 46, 60, 61, 69, 48, + 42, 40, 37, 32, 38, 36, 40, 30, 26, 30, 26, 29, 26, 64, 71, 173, + 214, 221, 187, 173, 185, 179, 174, 171, 162, 146, 135, 52, 2, 6, 13, 38, + 2, 1, 189, 177, 161, 169, 170, 163, 159, 162, 130, 52, 177, 169, 140, 127, + 103, 100, 118, 110, 104, 103, 102, 107, 134, 146, 142, 143, 135, 118, 116, 136, + 158, 144, 139, 143, 150, 154, 159, 166, 170, 171, 185, 206, 224, 230, 236, 234, + 229, 217, 187, 124, 103, 77, 61, 48, 41, 49, 53, 73, 92, 88, 100, 111, + 154, 190, 229, 232, 229, 213, 111, 95, 103, 115, 131, 134, 120, 124, 119, 130, + 131, 139, 144, 131, 107, 88, 61, 93, 106, 108, 89, 88, 97, 119, 95, 102, + 130, 209, 220, 220, 220, 163, 118, 120, 124, 131, 136, 151, 150, 153, 151, 139, + 115, 124, 138, 132, 107, 60, 55, 51, 95, 83, 97, 93, 99, 100, 175, 198, + 177, 127, 120, 124, 136, 146, 151, 157, 162, 151, 150, 144, 144, 154, 163, 155, + 110, 65, 45, 81, 111, 126, 147, 202, 217, 174, 161, 173, 181, 185, 187, 187, + 190, 178, 150, 154, 169, 166, 157, 150, 144, 132, 132, 135, 118, 111, 120, 126, + 158, 222, 177, 155, 163, 147, 183, 187, 202, 208, 205, 206, 190, 123, 64, 69, + 126, 191, 233, 233, 234, 226, 181, 179, 177, 171, 170, 150, 135, 88, 36, 33, + 34, 46, 65, 71, 57, 76, 65, 55, 128, 143, 134, 138, 128, 128, 136, 126, + 123, 87, 67, 97, 138, 127, 119, 114, 119, 100, 115, 111, 111, 115, 68, 18, + 122, 130, 106, 112, 104, 107, 93, 75, 77, 108, 99, 112, 131, 216, 236, 230, + 238, 202, 115, 116, 116, 118, 110, 127, 150, 159, 162, 163, 159, 155, 148, 135, + 138, 131, 154, 118, 102, 85, 83, 92, 95, 96, 96, 104, 104, 100, 99, 118, + 134, 127, 186, 229, 233, 238, 245, 242, 220, 126, 122, 114, 65, 41, 36, 30, + 44, 49, 61, 67, 76, 179, 209, 208, 216, 198, 114, 128, 135, 124, 130, 131, + 134, 124, 104, 120, 115, 46, 22, 25, 53, 60, 63, 77, 81, 60, 56, 13, + 103, 107, 104, 110, 110, 138, 198, 136, 120, 124, 128, 134, 135, 136, 138, 140, + 155, 185, 183, 193, 195, 206, 212, 213, 202, 208, 189, 127, 126, 134, 135, 132, + 122, 120, 59, 20, 17, 16, 13, 37, 44, 48, 64, 65, 68, 93, 206, 220, + 226, 224, 119, 107, 115, 123, 135, 148, 162, 165, 166, 162, 151, 144, 127, 110, + 53, 34, 37, 64, 61, 59, 28, 84, 123, 135, 112, 123, 130, 95, 123, 104, + 99, 97, 63, 51, 159, 175, 108, 95, 112, 122, 124, 123, 124, 140, 142, 154, + 166, 171, 173, 179, 185, 201, 198, 208, 214, 216, 220, 217, 210, 194, 177, 165, + 142, 140, 139, 144, 165, 171, 181, 179, 175, 165, 163, 165, 162, 134, 107, 140, + 96, 36, 14, 12, 59, 112, 122, 134, 144, 166, 218, 221, 220, 118, 108, 116, + 124, 124, 159, 159, 161, 158, 155, 146, 135, 126, 110, 49, 63, 87, 92, 83, + 85, 89, 89, 95, 93, 99, 91, 40, 48, 77, 68, 46, 38, 46, 46, 46, + 45, 45, 24, 18, 75, 69, 65, 59, 48, 49, 40, 45, 40, 49, 40, 34, + 42, 36, 33, 28, 28, 22, 26, 20, 59, 84, 202, 217, 220, 166, 167, 185, + 183, 174, 169, 161, 144, 132, 42, 2, 4, 12, 32, 4, 10, 181, 182, 162, + 165, 173, 174, 154, 165, 130, 60, 170, 167, 143, 130, 122, 111, 91, 96, 114, + 112, 107, 103, 104, 127, 147, 139, 130, 123, 131, 151, 163, 177, 181, 189, 194, + 193, 201, 198, 204, 216, 218, 225, 228, 230, 229, 218, 217, 181, 136, 102, 76, + 63, 51, 44, 45, 63, 75, 88, 81, 106, 144, 171, 187, 212, 220, 226, 229, + 209, 118, 89, 112, 106, 115, 131, 146, 148, 131, 122, 120, 144, 144, 143, 130, + 119, 122, 124, 130, 123, 108, 97, 85, 115, 95, 104, 169, 208, 224, 221, 204, + 161, 127, 115, 116, 132, 147, 154, 143, 155, 155, 147, 136, 118, 131, 134, 120, + 100, 65, 64, 96, 99, 93, 93, 89, 97, 154, 202, 177, 126, 119, 127, 140, + 146, 151, 159, 142, 136, 132, 130, 130, 134, 148, 154, 135, 97, 72, 61, 93, + 115, 138, 174, 212, 185, 158, 163, 174, 179, 182, 181, 185, 185, 171, 151, 162, + 169, 161, 157, 144, 134, 132, 132, 108, 111, 110, 120, 127, 193, 212, 158, 157, + 143, 189, 199, 208, 212, 212, 208, 208, 183, 139, 146, 191, 225, 236, 236, 234, + 218, 189, 183, 177, 173, 162, 139, 123, 56, 32, 30, 34, 51, 72, 71, 87, + 85, 75, 55, 131, 146, 107, 134, 118, 115, 135, 138, 123, 111, 68, 79, 140, + 107, 118, 111, 107, 106, 116, 111, 102, 118, 53, 24, 115, 127, 103, 107, 92, + 95, 104, 102, 104, 108, 114, 153, 209, 226, 234, 237, 232, 189, 116, 120, 110, + 119, 123, 112, 138, 150, 154, 158, 155, 157, 154, 151, 143, 126, 140, 157, 119, + 115, 116, 115, 115, 120, 119, 118, 118, 115, 110, 120, 148, 191, 226, 229, 236, + 241, 241, 233, 146, 120, 123, 110, 55, 36, 32, 36, 56, 59, 60, 73, 182, + 206, 210, 214, 206, 199, 123, 116, 128, 122, 139, 123, 130, 124, 131, 111, 115, + 97, 26, 41, 30, 32, 63, 79, 79, 64, 46, 22, 95, 106, 107, 95, 99, + 107, 122, 178, 173, 127, 127, 124, 128, 130, 130, 130, 131, 132, 132, 143, 162, + 166, 170, 179, 183, 161, 126, 130, 128, 126, 124, 120, 115, 49, 20, 16, 14, + 12, 17, 29, 37, 49, 64, 64, 73, 173, 220, 220, 224, 217, 120, 110, 118, + 126, 136, 146, 158, 166, 166, 163, 157, 154, 138, 138, 104, 69, 48, 42, 46, + 61, 29, 88, 123, 131, 130, 115, 114, 99, 102, 118, 93, 100, 59, 41, 134, + 169, 135, 93, 102, 119, 123, 126, 120, 122, 126, 153, 163, 159, 170, 165, 165, + 159, 154, 175, 187, 193, 202, 198, 187, 162, 139, 143, 139, 138, 139, 142, 138, + 143, 155, 161, 157, 155, 162, 151, 142, 119, 132, 96, 34, 8, 14, 10, 53, + 102, 128, 150, 143, 189, 206, 216, 218, 120, 108, 110, 124, 147, 158, 170, 158, + 155, 155, 143, 136, 127, 126, 95, 60, 49, 60, 80, 87, 95, 89, 87, 99, + 76, 110, 34, 30, 69, 53, 57, 49, 48, 52, 49, 42, 45, 25, 14, 65, + 69, 72, 73, 73, 65, 56, 53, 44, 52, 48, 26, 42, 44, 44, 34, 30, + 28, 26, 34, 44, 112, 212, 225, 218, 157, 161, 178, 182, 174, 169, 159, 146, + 131, 30, 2, 4, 10, 30, 4, 1, 183, 162, 163, 159, 161, 151, 150, 138, + 124, 56, 165, 165, 143, 128, 126, 119, 106, 83, 80, 95, 108, 108, 103, 106, + 112, 120, 128, 135, 136, 140, 140, 151, 173, 185, 194, 197, 206, 202, 206, 214, + 220, 221, 217, 217, 214, 199, 162, 128, 97, 72, 60, 49, 41, 42, 53, 69, + 88, 75, 147, 173, 204, 213, 209, 216, 216, 217, 212, 158, 114, 92, 139, 120, + 127, 132, 136, 130, 134, 143, 138, 134, 148, 147, 142, 138, 146, 148, 162, 147, + 136, 122, 112, 83, 81, 103, 193, 218, 218, 216, 217, 154, 131, 126, 124, 155, + 155, 147, 146, 142, 140, 142, 147, 135, 115, 134, 131, 119, 91, 111, 100, 108, + 84, 97, 92, 93, 124, 189, 187, 143, 126, 127, 138, 142, 142, 140, 136, 131, + 128, 120, 120, 120, 122, 140, 142, 119, 83, 44, 75, 110, 126, 144, 194, 204, + 155, 159, 166, 174, 177, 178, 179, 185, 182, 158, 151, 165, 166, 154, 138, 138, + 132, 114, 81, 68, 91, 111, 119, 140, 208, 171, 165, 150, 191, 199, 213, 213, + 216, 210, 216, 210, 206, 212, 228, 232, 230, 234, 233, 205, 183, 185, 181, 170, + 143, 132, 92, 36, 32, 30, 37, 61, 73, 73, 84, 80, 81, 53, 115, 112, + 139, 127, 135, 140, 138, 135, 124, 120, 65, 72, 104, 134, 128, 96, 110, 102, + 110, 115, 114, 111, 63, 22, 112, 119, 119, 102, 99, 97, 103, 108, 134, 182, + 198, 222, 217, 232, 226, 230, 228, 157, 118, 119, 126, 131, 143, 123, 116, 135, + 142, 142, 143, 144, 150, 150, 153, 142, 136, 148, 157, 148, 169, 178, 187, 197, + 202, 206, 210, 216, 218, 216, 221, 221, 225, 230, 237, 238, 226, 157, 120, 124, + 122, 89, 38, 32, 30, 40, 59, 61, 93, 159, 222, 208, 205, 218, 218, 163, + 130, 132, 138, 132, 134, 127, 139, 123, 127, 115, 112, 97, 71, 55, 33, 32, + 30, 73, 77, 60, 60, 20, 95, 99, 95, 92, 96, 88, 103, 111, 116, 120, + 124, 154, 158, 153, 150, 148, 144, 142, 138, 132, 134, 130, 130, 130, 131, 130, + 126, 124, 122, 120, 116, 83, 34, 20, 16, 14, 12, 14, 40, 34, 48, 61, + 65, 69, 150, 206, 214, 216, 220, 212, 118, 111, 114, 126, 136, 139, 143, 151, + 158, 158, 154, 146, 150, 140, 144, 115, 99, 87, 67, 42, 28, 67, 126, 118, + 128, 100, 120, 116, 115, 119, 96, 99, 72, 41, 95, 154, 177, 112, 102, 110, + 118, 119, 120, 123, 124, 128, 130, 134, 132, 132, 142, 130, 128, 126, 127, 131, + 128, 126, 130, 132, 132, 138, 138, 140, 143, 140, 139, 143, 138, 134, 132, 131, + 131, 127, 138, 139, 103, 33, 8, 12, 16, 10, 52, 100, 107, 136, 193, 198, + 198, 214, 208, 118, 114, 118, 122, 150, 155, 157, 148, 157, 153, 146, 139, 130, + 124, 123, 123, 103, 72, 69, 55, 92, 88, 84, 85, 73, 96, 37, 22, 83, + 44, 45, 45, 57, 52, 52, 41, 42, 25, 14, 59, 65, 67, 63, 49, 53, + 40, 36, 30, 34, 36, 25, 40, 48, 42, 36, 37, 40, 24, 48, 56, 140, + 221, 224, 212, 148, 155, 165, 178, 178, 167, 159, 146, 127, 25, 4, 4, 12, + 24, 6, 2, 162, 161, 157, 154, 154, 154, 151, 128, 127, 52, 132, 158, 147, + 135, 139, 130, 118, 106, 89, 75, 71, 81, 102, 107, 107, 106, 106, 112, 110, + 118, 119, 124, 130, 144, 166, 178, 186, 199, 204, 201, 202, 202, 199, 182, 162, + 127, 99, 85, 69, 57, 48, 38, 40, 46, 55, 69, 68, 126, 228, 206, 214, + 206, 217, 208, 217, 183, 146, 122, 107, 119, 119, 120, 116, 123, 116, 122, 120, + 127, 126, 132, 138, 130, 139, 144, 142, 150, 151, 153, 163, 155, 110, 83, 95, + 118, 222, 208, 210, 210, 216, 150, 134, 136, 148, 131, 151, 148, 144, 134, 134, + 132, 134, 132, 131, 132, 134, 120, 127, 124, 120, 100, 87, 88, 92, 87, 97, + 162, 191, 169, 123, 124, 130, 134, 136, 136, 130, 130, 122, 120, 119, 114, 111, + 108, 115, 134, 96, 83, 87, 87, 107, 126, 159, 209, 165, 155, 162, 162, 162, + 169, 173, 178, 182, 177, 155, 154, 162, 147, 136, 139, 124, 85, 59, 57, 59, + 106, 108, 112, 175, 185, 174, 138, 185, 201, 202, 209, 214, 220, 218, 221, 218, + 222, 230, 228, 232, 229, 221, 194, 190, 183, 179, 165, 135, 104, 51, 34, 32, + 30, 30, 65, 73, 73, 77, 85, 85, 57, 89, 123, 138, 132, 116, 122, 116, + 132, 110, 85, 72, 64, 104, 136, 111, 92, 112, 108, 110, 114, 120, 84, 61, + 16, 100, 115, 107, 107, 71, 95, 111, 195, 216, 212, 216, 236, 220, 229, 242, + 226, 199, 128, 119, 120, 140, 142, 134, 142, 132, 127, 127, 124, 127, 130, 123, + 127, 130, 136, 146, 143, 131, 166, 169, 181, 189, 198, 202, 208, 212, 216, 218, + 221, 222, 228, 228, 230, 226, 201, 140, 118, 122, 127, 118, 59, 33, 29, 32, + 48, 59, 97, 186, 193, 197, 208, 212, 232, 210, 146, 126, 116, 123, 120, 134, + 128, 119, 131, 119, 118, 127, 99, 84, 77, 68, 53, 29, 42, 76, 56, 57, + 17, 91, 100, 91, 71, 64, 69, 77, 77, 73, 75, 75, 89, 108, 114, 115, + 112, 107, 112, 116, 116, 116, 115, 112, 114, 119, 118, 115, 108, 104, 76, 37, + 24, 16, 14, 12, 9, 12, 17, 33, 38, 63, 64, 72, 155, 201, 205, 206, + 209, 216, 155, 118, 108, 118, 132, 127, 131, 139, 139, 148, 147, 158, 154, 144, + 147, 132, 140, 151, 147, 108, 73, 51, 32, 88, 126, 104, 122, 99, 116, 108, + 115, 92, 100, 95, 33, 84, 142, 148, 151, 146, 139, 138, 142, 138, 115, 114, + 118, 119, 124, 126, 127, 124, 123, 128, 120, 104, 99, 92, 85, 89, 100, 116, + 124, 131, 136, 138, 134, 127, 134, 134, 136, 139, 138, 135, 135, 126, 102, 34, + 17, 9, 8, 16, 10, 51, 110, 139, 195, 205, 202, 199, 216, 189, 116, 108, + 123, 131, 130, 144, 150, 154, 151, 151, 147, 142, 138, 131, 122, 120, 118, 130, + 118, 83, 60, 60, 61, 75, 68, 95, 34, 21, 77, 59, 46, 49, 60, 42, + 44, 46, 34, 26, 20, 63, 79, 60, 56, 45, 42, 41, 32, 33, 40, 29, + 46, 42, 37, 30, 28, 29, 33, 18, 49, 57, 161, 221, 226, 209, 143, 148, + 154, 169, 175, 166, 159, 147, 120, 13, 5, 2, 12, 24, 14, 17, 150, 153, + 154, 158, 151, 151, 155, 159, 120, 49, 154, 154, 147, 146, 136, 132, 124, 115, + 99, 91, 76, 65, 64, 64, 76, 91, 100, 103, 107, 107, 107, 108, 110, 115, + 122, 127, 131, 138, 154, 153, 148, 146, 123, 103, 91, 76, 57, 53, 53, 42, + 36, 38, 45, 46, 76, 84, 75, 166, 208, 220, 206, 206, 187, 165, 142, 128, + 114, 95, 87, 83, 84, 88, 92, 95, 93, 100, 104, 107, 106, 110, 115, 122, + 128, 134, 131, 131, 135, 147, 140, 134, 107, 77, 107, 181, 198, 198, 171, 174, + 150, 143, 120, 115, 127, 122, 128, 127, 128, 120, 132, 134, 124, 138, 134, 130, + 122, 119, 122, 118, 112, 69, 45, 56, 87, 80, 83, 131, 175, 177, 126, 134, + 131, 131, 132, 131, 127, 128, 123, 122, 119, 114, 111, 111, 108, 106, 97, 89, + 63, 75, 87, 106, 135, 178, 187, 150, 157, 159, 158, 153, 162, 167, 169, 174, + 171, 161, 140, 138, 142, 131, 97, 65, 55, 44, 45, 77, 103, 112, 154, 199, + 175, 155, 165, 185, 199, 202, 205, 205, 204, 202, 204, 201, 202, 202, 205, 202, + 195, 186, 181, 179, 169, 140, 116, 48, 29, 30, 30, 33, 36, 65, 64, 71, + 81, 79, 83, 75, 68, 69, 76, 89, 69, 72, 81, 72, 72, 92, 89, 77, + 79, 88, 93, 108, 96, 97, 97, 97, 92, 95, 53, 13, 55, 96, 100, 77, + 83, 97, 170, 208, 210, 214, 225, 244, 218, 214, 206, 157, 130, 122, 124, 134, + 136, 136, 139, 139, 136, 134, 127, 130, 132, 130, 127, 123, 120, 122, 123, 124, + 122, 122, 123, 123, 132, 140, 159, 182, 189, 201, 202, 199, 195, 198, 199, 186, + 159, 120, 116, 119, 127, 127, 104, 36, 28, 20, 53, 53, 79, 171, 189, 193, + 205, 199, 204, 178, 146, 132, 118, 132, 120, 119, 123, 127, 111, 115, 106, 111, + 103, 123, 106, 108, 96, 81, 30, 36, 76, 53, 53, 21, 96, 93, 60, 57, + 53, 56, 53, 57, 46, 46, 41, 37, 34, 36, 36, 32, 32, 30, 30, 29, + 26, 25, 22, 24, 28, 24, 22, 21, 18, 20, 14, 14, 12, 10, 10, 14, + 24, 34, 28, 63, 59, 76, 151, 191, 191, 187, 201, 209, 181, 131, 114, 120, + 130, 124, 127, 132, 131, 134, 132, 134, 143, 139, 130, 143, 140, 123, 122, 123, + 154, 135, 49, 32, 73, 72, 76, 79, 83, 84, 88, 88, 93, 93, 71, 22, + 56, 96, 111, 100, 95, 89, 97, 100, 104, 108, 107, 103, 103, 114, 115, 107, + 103, 100, 77, 41, 21, 16, 12, 12, 13, 20, 57, 93, 103, 108, 110, 106, + 97, 100, 103, 103, 102, 99, 96, 84, 44, 24, 12, 8, 6, 18, 22, 18, + 95, 148, 182, 198, 186, 181, 202, 202, 136, 112, 116, 127, 122, 122, 122, 130, + 132, 134, 136, 132, 126, 127, 126, 127, 123, 115, 116, 132, 119, 103, 89, 91, + 81, 80, 64, 52, 25, 51, 64, 71, 59, 60, 45, 42, 45, 37, 24, 18, + 59, 49, 37, 42, 30, 25, 22, 32, 30, 30, 34, 30, 26, 28, 25, 29, + 25, 26, 41, 53, 69, 179, 225, 226, 206, 140, 147, 151, 162, 170, 163, 158, + 142, 99, 8, 4, 2, 6, 16, 10, 5, 162, 158, 158, 158, 154, 162, 153, + 144, 118, 52, 143, 153, 132, 139, 130, 130, 116, 118, 108, 104, 93, 87, 73, + 69, 60, 56, 53, 57, 60, 68, 79, 95, 96, 99, 97, 95, 95, 91, 89, + 88, 85, 77, 63, 52, 49, 46, 45, 37, 33, 36, 48, 61, 63, 59, 69, + 49, 49, 99, 143, 159, 153, 146, 144, 93, 80, 69, 64, 49, 34, 37, 38, + 32, 30, 30, 33, 34, 34, 40, 38, 36, 44, 72, 81, 88, 88, 85, 83, + 114, 110, 68, 40, 59, 99, 157, 151, 159, 157, 159, 130, 107, 87, 88, 102, + 106, 103, 102, 107, 108, 112, 112, 114, 114, 115, 111, 106, 102, 103, 96, 67, + 42, 40, 36, 41, 76, 68, 76, 131, 146, 128, 130, 108, 124, 124, 127, 123, + 124, 122, 115, 110, 108, 102, 111, 103, 106, 106, 91, 38, 44, 80, 76, 112, + 132, 178, 169, 150, 155, 154, 154, 153, 155, 157, 155, 150, 144, 139, 140, 131, + 108, 65, 53, 48, 49, 56, 63, 106, 108, 178, 189, 179, 167, 120, 151, 183, + 187, 191, 194, 193, 191, 189, 185, 178, 177, 181, 182, 181, 178, 163, 146, 135, + 108, 51, 33, 30, 30, 42, 55, 49, 60, 45, 46, 69, 73, 80, 79, 83, + 87, 103, 92, 96, 92, 100, 99, 97, 93, 93, 91, 79, 97, 95, 65, 56, + 30, 28, 42, 40, 38, 38, 14, 34, 40, 55, 80, 73, 95, 163, 205, 218, + 210, 210, 183, 157, 140, 130, 123, 130, 124, 131, 128, 130, 130, 131, 131, 131, + 126, 126, 123, 123, 122, 120, 112, 118, 119, 119, 119, 119, 118, 120, 116, 114, + 112, 111, 112, 114, 116, 118, 118, 115, 112, 112, 111, 114, 112, 119, 123, 128, + 123, 57, 22, 25, 29, 55, 51, 139, 189, 183, 193, 205, 175, 143, 135, 119, + 115, 103, 108, 106, 102, 108, 103, 102, 92, 97, 99, 97, 95, 102, 96, 88, + 84, 32, 42, 57, 51, 42, 26, 89, 92, 60, 52, 52, 51, 49, 49, 45, + 38, 34, 26, 30, 26, 25, 26, 25, 22, 22, 22, 18, 17, 16, 18, 17, + 16, 14, 13, 12, 10, 9, 9, 13, 12, 17, 30, 22, 29, 40, 61, 65, + 107, 179, 183, 193, 186, 163, 151, 124, 115, 124, 120, 126, 119, 123, 118, 116, + 120, 126, 131, 132, 127, 124, 131, 131, 122, 118, 124, 131, 110, 30, 60, 69, + 69, 68, 63, 73, 71, 73, 68, 80, 76, 38, 24, 36, 41, 40, 34, 30, + 26, 25, 21, 21, 21, 21, 17, 17, 17, 16, 14, 14, 14, 13, 12, 10, + 9, 8, 9, 10, 12, 10, 13, 12, 10, 10, 12, 10, 9, 8, 10, 10, + 9, 10, 10, 9, 9, 8, 4, 8, 20, 24, 20, 100, 161, 201, 191, 197, + 186, 157, 130, 118, 112, 116, 119, 111, 108, 116, 122, 120, 126, 128, 124, 119, + 116, 116, 112, 104, 108, 119, 116, 111, 83, 77, 65, 69, 60, 44, 41, 36, + 38, 40, 42, 40, 42, 38, 49, 42, 36, 25, 10, 55, 52, 29, 22, 48, + 76, 118, 155, 142, 89, 28, 36, 40, 13, 20, 20, 28, 18, 45, 42, 93, + 205, 225, 232, 202, 136, 140, 146, 158, 169, 163, 151, 138, 61, 2, 5, 2, + 2, 1, 1, 0, 61, 60, 65, 106, 110, 111, 126, 119, 111, 49, 79, 88, + 87, 87, 87, 83, 83, 79, 76, 75, 73, 67, 59, 63, 57, 53, 49, 52, + 49, 51, 46, 42, 41, 40, 44, 42, 44, 42, 44, 44, 44, 44, 42, 36, + 30, 26, 30, 40, 56, 44, 60, 67, 63, 52, 51, 65, 45, 28, 38, 45, + 41, 38, 34, 26, 38, 40, 30, 24, 25, 25, 25, 22, 21, 22, 20, 18, + 20, 21, 20, 17, 12, 16, 20, 17, 17, 24, 28, 6, 12, 26, 26, 33, + 18, 34, 45, 48, 67, 32, 5, 8, 20, 20, 17, 18, 20, 22, 18, 18, + 22, 20, 21, 22, 25, 30, 30, 30, 29, 26, 34, 41, 48, 61, 61, 51, + 44, 56, 53, 44, 37, 17, 18, 28, 24, 22, 17, 20, 17, 13, 17, 13, + 10, 16, 22, 13, 13, 20, 20, 24, 26, 26, 44, 96, 132, 173, 158, 146, + 144, 148, 147, 150, 153, 147, 144, 142, 142, 131, 97, 61, 51, 46, 46, 49, + 36, 64, 103, 106, 167, 186, 195, 178, 136, 111, 112, 128, 123, 123, 118, 131, + 126, 122, 119, 118, 119, 122, 118, 116, 112, 73, 60, 40, 30, 29, 33, 34, + 30, 29, 14, 13, 33, 13, 13, 13, 14, 38, 13, 10, 29, 30, 12, 12, + 29, 13, 13, 13, 16, 26, 44, 41, 59, 56, 97, 111, 119, 118, 104, 95, + 63, 13, 92, 100, 100, 56, 76, 89, 118, 142, 157, 143, 140, 128, 114, 108, + 110, 112, 114, 112, 127, 127, 120, 126, 126, 127, 127, 126, 124, 124, 122, 123, + 123, 120, 120, 122, 122, 122, 119, 116, 118, 116, 118, 116, 116, 116, 115, 114, + 115, 115, 115, 115, 114, 115, 118, 120, 124, 127, 126, 95, 29, 21, 24, 24, + 38, 48, 102, 161, 178, 148, 140, 111, 96, 91, 92, 93, 96, 97, 96, 97, + 97, 100, 100, 100, 97, 102, 95, 95, 92, 92, 89, 63, 40, 38, 46, 48, + 42, 24, 84, 48, 44, 34, 32, 32, 33, 24, 25, 22, 20, 14, 13, 12, + 12, 12, 12, 12, 12, 10, 9, 9, 9, 10, 12, 13, 13, 16, 14, 16, + 17, 18, 24, 26, 38, 21, 29, 41, 71, 64, 76, 157, 154, 143, 135, 130, + 122, 120, 112, 107, 112, 112, 115, 114, 110, 111, 115, 112, 112, 118, 115, 116, + 115, 111, 106, 100, 100, 102, 99, 37, 49, 9, 6, 9, 6, 5, 6, 5, + 8, 9, 4, 10, 8, 4, 24, 21, 13, 4, 18, 9, 1, 1, 2, 2, + 4, 4, 5, 6, 5, 5, 5, 5, 4, 5, 6, 9, 9, 9, 9, 10, + 10, 10, 9, 8, 8, 8, 8, 8, 5, 8, 8, 8, 6, 6, 5, 2, + 5, 8, 18, 21, 25, 22, 118, 154, 173, 158, 159, 135, 116, 111, 104, 102, + 104, 97, 103, 104, 99, 100, 108, 111, 114, 111, 110, 106, 100, 99, 102, 97, + 97, 91, 60, 26, 13, 9, 9, 10, 10, 9, 12, 10, 6, 10, 14, 16, + 14, 14, 17, 18, 22, 12, 51, 24, 41, 81, 143, 162, 174, 186, 183, 171, + 104, 30, 20, 52, 69, 61, 61, 52, 41, 65, 116, 216, 232, 232, 191, 134, + 140, 144, 158, 165, 161, 148, 132, 29, 2, 4, 5, 9, 14, 29, 41, 139, + 138, 132, 130, 103, 60, 81, 51, 83, 20, 0, 5, 5, 32, 2, 5, 20, + 22, 4, 5, 17, 20, 18, 12, 18, 17, 17, 9, 9, 32, 30, 29, 28, + 28, 25, 24, 21, 21, 21, 20, 20, 22, 21, 24, 33, 36, 49, 49, 60, + 73, 72, 72, 76, 80, 102, 95, 63, 63, 64, 73, 59, 53, 48, 46, 52, + 48, 45, 42, 46, 45, 45, 41, 38, 38, 36, 38, 44, 42, 37, 34, 30, + 26, 22, 30, 44, 49, 22, 37, 57, 28, 30, 28, 57, 45, 56, 61, 59, + 52, 45, 42, 46, 45, 42, 40, 45, 41, 42, 40, 41, 44, 45, 41, 44, + 45, 38, 40, 41, 44, 37, 44, 85, 75, 85, 85, 91, 69, 52, 64, 51, + 59, 64, 57, 53, 46, 48, 48, 45, 41, 42, 46, 42, 40, 48, 49, 45, + 45, 52, 63, 64, 84, 92, 76, 79, 131, 166, 153, 162, 147, 153, 147, 150, + 143, 146, 134, 123, 79, 52, 46, 45, 32, 33, 36, 52, 93, 104, 153, 177, + 193, 199, 175, 124, 92, 73, 71, 68, 64, 65, 59, 56, 52, 56, 51, 52, + 52, 52, 48, 49, 44, 51, 49, 52, 38, 59, 46, 60, 51, 52, 51, 52, + 52, 52, 52, 53, 46, 12, 38, 114, 147, 103, 108, 111, 112, 110, 93, 103, + 107, 122, 144, 136, 144, 144, 114, 120, 119, 131, 116, 96, 22, 103, 100, 115, + 114, 64, 79, 88, 104, 92, 87, 87, 77, 79, 68, 65, 61, 53, 55, 41, + 41, 36, 34, 33, 30, 30, 33, 30, 33, 30, 30, 29, 30, 29, 29, 28, + 28, 28, 32, 30, 32, 32, 29, 32, 37, 41, 60, 92, 107, 115, 119, 120, + 123, 123, 126, 127, 123, 111, 42, 24, 18, 17, 28, 56, 45, 61, 68, 67, + 68, 69, 71, 26, 20, 20, 18, 17, 17, 17, 16, 14, 14, 16, 16, 18, + 20, 18, 22, 22, 22, 24, 24, 12, 6, 12, 9, 13, 25, 32, 51, 63, + 57, 72, 76, 67, 59, 67, 64, 52, 9, 41, 59, 55, 55, 38, 46, 37, + 48, 29, 18, 25, 37, 64, 69, 65, 64, 61, 65, 61, 63, 64, 56, 53, + 20, 46, 68, 73, 67, 88, 107, 107, 112, 100, 96, 88, 87, 81, 71, 52, + 60, 45, 49, 44, 41, 36, 38, 36, 37, 36, 37, 36, 36, 37, 37, 36, + 41, 41, 36, 12, 17, 71, 76, 79, 87, 87, 81, 92, 81, 80, 81, 41, + 12, 69, 72, 79, 69, 72, 63, 68, 34, 21, 13, 10, 6, 13, 13, 12, + 9, 9, 6, 9, 8, 5, 9, 6, 8, 4, 12, 14, 13, 8, 16, 13, + 8, 4, 4, 8, 6, 8, 10, 10, 10, 9, 10, 12, 24, 30, 24, 30, + 20, 108, 107, 111, 102, 108, 95, 81, 59, 46, 44, 32, 30, 28, 30, 24, + 22, 22, 24, 18, 21, 20, 16, 14, 14, 17, 14, 14, 14, 12, 13, 28, + 29, 41, 42, 30, 40, 46, 55, 61, 56, 51, 30, 29, 22, 17, 40, 40, + 34, 22, 52, 85, 148, 191, 193, 187, 201, 187, 150, 104, 32, 29, 53, 68, + 60, 49, 56, 55, 85, 162, 221, 232, 232, 178, 132, 135, 143, 154, 161, 155, + 144, 107, 12, 4, 2, 5, 20, 41, 48, 55, 194, 189, 185, 178, 154, 134, + 124, 115, 87, 13, 44, 131, 159, 127, 127, 140, 162, 136, 134, 134, 132, 130, + 131, 134, 138, 138, 124, 104, 71, 61, 53, 29, 28, 25, 26, 29, 38, 40, + 40, 42, 48, 63, 60, 65, 68, 65, 69, 69, 91, 111, 119, 119, 132, 126, + 140, 116, 102, 52, 120, 115, 79, 77, 75, 72, 71, 71, 75, 75, 72, 52, + 60, 83, 85, 79, 79, 81, 84, 75, 57, 45, 36, 32, 18, 20, 44, 46, + 42, 42, 51, 49, 52, 59, 46, 8, 88, 71, 64, 64, 63, 61, 67, 48, + 45, 42, 45, 42, 42, 34, 37, 48, 42, 45, 46, 46, 41, 48, 41, 38, + 44, 84, 87, 77, 85, 91, 95, 95, 99, 89, 14, 100, 92, 76, 75, 55, + 60, 55, 53, 53, 57, 56, 52, 56, 57, 61, 61, 61, 65, 65, 69, 81, + 87, 93, 77, 83, 159, 162, 142, 146, 138, 136, 134, 132, 116, 77, 64, 53, + 51, 41, 51, 40, 33, 49, 87, 120, 118, 157, 194, 198, 202, 162, 104, 71, + 56, 51, 69, 55, 55, 51, 56, 56, 55, 52, 57, 59, 60, 59, 56, 56, + 53, 53, 53, 55, 53, 52, 59, 64, 65, 67, 72, 73, 73, 77, 71, 48, + 9, 122, 146, 138, 134, 119, 119, 114, 138, 122, 132, 81, 114, 123, 120, 114, + 127, 131, 120, 122, 124, 128, 85, 16, 92, 110, 112, 118, 96, 68, 79, 87, + 61, 51, 49, 64, 46, 48, 45, 45, 42, 42, 30, 26, 26, 24, 26, 21, + 22, 24, 25, 24, 24, 22, 22, 22, 22, 22, 20, 20, 18, 21, 20, 20, + 20, 20, 20, 21, 20, 22, 25, 30, 38, 49, 61, 76, 84, 92, 92, 77, + 41, 24, 24, 22, 24, 33, 59, 59, 57, 44, 46, 49, 42, 51, 42, 41, + 37, 36, 37, 34, 29, 26, 28, 25, 22, 22, 18, 21, 20, 17, 17, 14, + 14, 16, 16, 18, 33, 21, 40, 28, 76, 112, 118, 118, 115, 118, 112, 111, + 111, 81, 59, 2, 85, 68, 67, 60, 56, 71, 83, 59, 61, 51, 26, 75, + 91, 87, 84, 81, 87, 81, 83, 80, 72, 67, 53, 20, 76, 75, 67, 85, + 95, 91, 93, 84, 84, 76, 80, 59, 42, 44, 45, 41, 33, 30, 28, 25, + 25, 25, 21, 22, 22, 21, 17, 17, 14, 13, 16, 14, 13, 10, 16, 16, + 85, 89, 85, 85, 85, 83, 81, 84, 87, 95, 46, 13, 93, 81, 72, 81, + 73, 75, 72, 63, 55, 42, 24, 6, 24, 53, 48, 26, 32, 45, 44, 26, + 32, 40, 34, 21, 24, 38, 40, 41, 46, 48, 41, 38, 36, 17, 4, 13, + 26, 37, 28, 26, 30, 25, 26, 29, 33, 28, 32, 13, 81, 84, 73, 52, + 60, 55, 51, 33, 36, 37, 37, 26, 26, 28, 30, 24, 24, 22, 22, 20, + 21, 20, 18, 22, 24, 22, 21, 22, 25, 32, 29, 34, 41, 46, 49, 36, + 45, 65, 61, 37, 40, 60, 65, 61, 45, 45, 26, 18, 57, 81, 139, 193, + 190, 177, 187, 142, 116, 93, 104, 32, 32, 53, 80, 79, 84, 71, 57, 93, + 194, 222, 230, 229, 163, 131, 136, 142, 153, 154, 147, 136, 63, 5, 5, 2, + 4, 21, 44, 41, 69, 177, 174, 179, 174, 170, 175, 158, 147, 92, 6, 165, + 163, 159, 155, 155, 159, 151, 155, 154, 151, 147, 146, 147, 147, 146, 147, 142, + 143, 147, 138, 110, 79, 69, 46, 75, 93, 95, 88, 87, 87, 84, 81, 83, + 79, 75, 56, 60, 114, 132, 142, 140, 140, 138, 130, 135, 135, 114, 59, 122, + 116, 116, 112, 115, 112, 104, 104, 95, 93, 85, 52, 75, 97, 111, 108, 104, + 106, 106, 97, 84, 83, 80, 68, 18, 79, 84, 85, 99, 57, 65, 91, 64, + 60, 65, 20, 81, 106, 99, 106, 103, 89, 88, 65, 60, 67, 56, 29, 40, + 102, 59, 93, 76, 87, 63, 81, 64, 44, 30, 22, 44, 85, 89, 92, 85, + 91, 115, 99, 95, 79, 12, 106, 103, 73, 88, 79, 73, 75, 75, 81, 69, + 68, 52, 42, 52, 61, 77, 64, 69, 76, 85, 83, 85, 92, 93, 76, 142, + 161, 140, 95, 81, 76, 75, 65, 63, 56, 55, 44, 41, 49, 45, 38, 56, + 80, 95, 116, 119, 189, 195, 201, 198, 154, 104, 63, 56, 55, 56, 55, 56, + 56, 61, 61, 64, 77, 100, 136, 148, 165, 173, 165, 154, 115, 75, 63, 57, + 53, 57, 60, 59, 59, 63, 63, 65, 73, 72, 72, 34, 135, 143, 123, 110, + 110, 110, 107, 104, 119, 80, 97, 134, 138, 119, 131, 115, 122, 112, 122, 119, + 132, 88, 14, 97, 103, 120, 110, 99, 92, 61, 59, 55, 72, 71, 45, 37, + 36, 36, 42, 26, 32, 22, 22, 21, 20, 20, 20, 18, 20, 20, 21, 20, + 20, 20, 21, 20, 20, 20, 20, 20, 21, 25, 32, 28, 30, 32, 30, 26, + 22, 20, 21, 21, 24, 25, 25, 24, 25, 26, 24, 24, 21, 22, 13, 25, + 60, 67, 65, 59, 59, 56, 53, 49, 45, 42, 41, 45, 40, 38, 37, 33, + 33, 30, 30, 26, 26, 26, 25, 28, 24, 24, 24, 21, 24, 29, 38, 46, + 48, 46, 59, 93, 116, 114, 108, 107, 100, 99, 100, 107, 88, 64, 6, 80, + 73, 79, 60, 71, 72, 69, 61, 64, 59, 26, 80, 102, 108, 103, 95, 100, + 107, 103, 87, 85, 73, 56, 18, 69, 68, 80, 110, 111, 88, 81, 102, 75, + 46, 46, 46, 49, 51, 37, 33, 32, 26, 26, 26, 25, 24, 20, 21, 21, + 20, 18, 16, 14, 14, 16, 16, 13, 12, 22, 30, 88, 81, 76, 80, 84, + 80, 75, 75, 75, 111, 46, 16, 89, 89, 91, 91, 88, 87, 81, 68, 64, + 46, 28, 6, 48, 61, 64, 48, 45, 29, 34, 42, 36, 24, 26, 18, 28, + 55, 73, 69, 69, 60, 65, 59, 40, 26, 6, 55, 63, 46, 46, 40, 40, + 40, 37, 32, 30, 29, 34, 16, 61, 103, 73, 65, 49, 42, 51, 36, 34, + 36, 34, 25, 25, 28, 29, 20, 22, 24, 20, 24, 18, 18, 21, 24, 21, + 26, 28, 24, 25, 32, 34, 42, 34, 42, 22, 26, 63, 63, 85, 61, 38, + 36, 40, 33, 34, 29, 22, 53, 85, 92, 175, 190, 175, 171, 139, 96, 91, + 96, 73, 46, 37, 48, 75, 53, 57, 52, 69, 124, 206, 222, 230, 224, 144, + 130, 135, 140, 153, 150, 142, 114, 21, 4, 5, 1, 4, 22, 41, 44, 59, + 163, 169, 163, 158, 163, 159, 174, 144, 95, 22, 155, 173, 170, 175, 162, 162, + 162, 154, 147, 143, 120, 104, 115, 147, 158, 159, 153, 155, 130, 143, 143, 123, + 80, 55, 91, 104, 104, 106, 102, 103, 102, 100, 99, 103, 69, 52, 95, 136, + 147, 146, 136, 140, 138, 143, 144, 114, 108, 63, 119, 123, 118, 120, 120, 116, + 122, 107, 107, 110, 91, 56, 95, 102, 114, 116, 119, 132, 127, 124, 108, 108, + 83, 68, 18, 80, 103, 87, 99, 107, 93, 95, 93, 65, 63, 17, 72, 107, + 142, 144, 146, 107, 110, 96, 89, 64, 59, 26, 75, 114, 122, 112, 108, 103, + 104, 107, 87, 75, 53, 21, 56, 92, 96, 81, 69, 91, 99, 99, 110, 63, + 5, 114, 111, 118, 110, 68, 72, 56, 75, 71, 67, 69, 46, 33, 49, 108, + 92, 92, 91, 91, 84, 84, 83, 93, 111, 73, 154, 159, 139, 99, 87, 72, + 69, 61, 61, 51, 51, 42, 40, 37, 46, 55, 77, 83, 122, 120, 142, 186, + 204, 202, 202, 139, 103, 83, 77, 81, 71, 68, 71, 80, 95, 124, 155, 186, + 208, 218, 224, 226, 226, 218, 220, 212, 190, 163, 138, 88, 67, 57, 60, 60, + 63, 60, 60, 71, 69, 68, 12, 96, 142, 100, 97, 114, 114, 107, 107, 114, + 81, 102, 123, 135, 132, 126, 131, 127, 120, 127, 123, 126, 81, 14, 97, 102, + 112, 108, 97, 64, 63, 61, 61, 67, 49, 29, 80, 68, 56, 49, 56, 68, + 48, 52, 49, 44, 40, 38, 44, 40, 51, 51, 51, 44, 42, 42, 40, 37, + 34, 36, 33, 55, 48, 51, 49, 57, 55, 57, 51, 48, 38, 29, 22, 26, + 24, 21, 21, 20, 20, 22, 20, 24, 22, 9, 33, 64, 77, 81, 84, 81, + 85, 79, 79, 67, 56, 48, 76, 80, 60, 57, 59, 48, 48, 57, 55, 24, + 9, 38, 53, 61, 40, 32, 40, 48, 32, 55, 48, 52, 45, 53, 95, 114, + 108, 107, 108, 100, 99, 84, 95, 102, 48, 8, 59, 84, 77, 87, 85, 95, + 96, 72, 87, 51, 28, 73, 104, 110, 110, 104, 103, 112, 99, 104, 85, 75, + 64, 20, 71, 64, 72, 83, 96, 128, 107, 93, 53, 56, 46, 61, 85, 81, + 76, 55, 61, 61, 64, 55, 53, 44, 40, 34, 37, 34, 32, 30, 28, 28, + 26, 25, 28, 22, 25, 16, 68, 95, 104, 83, 72, 80, 99, 80, 79, 96, + 45, 18, 77, 89, 88, 84, 83, 77, 104, 65, 63, 60, 28, 8, 51, 63, + 48, 64, 45, 53, 34, 37, 38, 51, 28, 21, 48, 72, 80, 77, 65, 56, + 55, 68, 40, 30, 13, 59, 60, 46, 42, 44, 38, 48, 37, 37, 25, 32, + 34, 13, 63, 83, 61, 79, 65, 71, 72, 51, 41, 41, 40, 33, 37, 36, + 21, 28, 28, 28, 28, 26, 29, 28, 24, 29, 32, 33, 33, 30, 32, 33, + 38, 34, 52, 48, 33, 12, 53, 65, 57, 51, 53, 30, 38, 29, 25, 32, + 21, 59, 88, 106, 186, 181, 175, 144, 103, 96, 93, 112, 64, 45, 33, 55, + 60, 61, 55, 55, 71, 147, 213, 220, 228, 208, 134, 131, 136, 143, 150, 146, + 138, 72, 9, 5, 4, 1, 2, 22, 34, 26, 77, 162, 157, 167, 165, 162, + 155, 157, 128, 88, 38, 110, 171, 174, 170, 175, 166, 163, 165, 163, 147, 120, + 97, 143, 155, 159, 154, 150, 146, 151, 136, 143, 139, 96, 61, 107, 128, 132, + 131, 127, 127, 127, 118, 110, 119, 67, 48, 97, 143, 146, 148, 148, 132, 131, + 138, 132, 120, 89, 71, 118, 118, 123, 114, 115, 127, 124, 116, 114, 118, 97, + 67, 96, 115, 131, 124, 106, 134, 122, 132, 123, 111, 103, 77, 25, 67, 110, + 103, 97, 95, 95, 92, 102, 72, 69, 17, 97, 115, 143, 138, 139, 144, 115, + 120, 106, 92, 63, 13, 95, 116, 131, 127, 119, 118, 120, 115, 111, 104, 52, + 21, 100, 102, 104, 104, 79, 96, 120, 110, 102, 85, 12, 118, 120, 110, 103, + 89, 75, 79, 99, 103, 97, 91, 56, 20, 99, 110, 115, 114, 104, 95, 96, + 91, 91, 102, 103, 91, 146, 159, 148, 130, 106, 87, 77, 69, 61, 53, 55, + 45, 37, 48, 52, 79, 79, 100, 118, 112, 123, 195, 198, 210, 183, 135, 104, + 122, 127, 118, 126, 136, 158, 174, 198, 210, 221, 225, 226, 225, 224, 221, 220, + 221, 218, 213, 213, 208, 210, 181, 127, 71, 61, 59, 61, 65, 61, 69, 76, + 51, 10, 99, 146, 120, 106, 132, 114, 132, 116, 99, 71, 100, 139, 138, 127, + 132, 124, 138, 132, 118, 116, 122, 97, 18, 103, 102, 114, 111, 110, 87, 83, + 63, 75, 65, 67, 49, 72, 89, 87, 68, 67, 59, 65, 63, 60, 59, 59, + 40, 33, 49, 51, 55, 60, 52, 56, 57, 57, 59, 57, 49, 45, 53, 64, + 60, 63, 57, 59, 57, 57, 56, 37, 59, 63, 64, 63, 56, 56, 34, 32, + 30, 28, 28, 24, 10, 41, 71, 85, 85, 83, 85, 85, 89, 83, 75, 63, + 53, 71, 89, 68, 80, 77, 77, 61, 52, 60, 53, 13, 64, 65, 67, 64, + 64, 59, 55, 52, 51, 46, 49, 51, 44, 85, 107, 111, 104, 106, 95, 95, + 85, 95, 77, 64, 12, 76, 81, 95, 80, 77, 81, 84, 88, 84, 57, 37, + 91, 106, 103, 104, 106, 112, 115, 112, 110, 99, 83, 60, 20, 71, 67, 83, + 69, 84, 99, 119, 107, 56, 57, 46, 67, 91, 77, 75, 73, 75, 71, 73, + 75, 71, 53, 52, 41, 57, 59, 56, 53, 53, 44, 40, 46, 46, 32, 22, + 56, 87, 93, 81, 83, 76, 87, 79, 84, 81, 106, 53, 21, 88, 89, 87, + 100, 79, 81, 75, 79, 60, 63, 28, 6, 53, 69, 56, 88, 59, 60, 63, + 53, 44, 49, 28, 18, 63, 80, 80, 57, 51, 51, 52, 67, 41, 25, 5, + 48, 60, 49, 52, 42, 41, 32, 37, 36, 33, 34, 37, 21, 71, 85, 80, + 60, 68, 65, 76, 61, 63, 40, 37, 18, 14, 32, 28, 32, 29, 30, 24, + 26, 29, 20, 17, 26, 46, 51, 51, 52, 29, 25, 25, 30, 38, 45, 37, + 17, 57, 60, 57, 51, 44, 33, 36, 32, 28, 24, 22, 60, 88, 110, 186, + 182, 146, 112, 99, 89, 107, 104, 80, 44, 36, 44, 65, 56, 48, 61, 102, + 189, 217, 224, 228, 187, 127, 130, 135, 148, 146, 140, 116, 20, 5, 5, 4, + 1, 4, 12, 40, 21, 49, 181, 162, 162, 161, 155, 159, 155, 153, 79, 5, + 122, 174, 171, 170, 174, 169, 165, 162, 165, 135, 118, 93, 142, 155, 146, 153, + 150, 157, 165, 157, 148, 144, 114, 71, 120, 138, 140, 124, 139, 135, 135, 124, + 108, 106, 69, 45, 120, 147, 147, 151, 140, 130, 143, 136, 138, 119, 111, 79, + 116, 126, 114, 135, 124, 114, 115, 127, 124, 127, 104, 69, 103, 128, 131, 130, + 107, 118, 119, 127, 123, 119, 107, 79, 8, 71, 97, 108, 100, 95, 93, 97, + 100, 72, 69, 20, 88, 116, 138, 132, 127, 131, 130, 115, 111, 96, 60, 28, + 108, 126, 130, 127, 130, 122, 132, 131, 119, 107, 71, 20, 104, 104, 108, 96, + 104, 100, 111, 108, 100, 85, 10, 118, 104, 97, 92, 102, 87, 91, 114, 116, + 103, 91, 55, 36, 102, 110, 124, 124, 123, 102, 103, 107, 102, 92, 92, 83, + 136, 157, 154, 132, 132, 123, 95, 91, 71, 64, 48, 33, 42, 71, 80, 81, + 100, 96, 118, 116, 122, 178, 206, 208, 179, 122, 96, 114, 183, 187, 193, 201, + 205, 212, 220, 221, 221, 221, 214, 209, 194, 193, 193, 181, 171, 161, 162, 166, + 182, 199, 199, 161, 87, 67, 57, 60, 61, 64, 67, 42, 9, 118, 154, 128, + 115, 110, 119, 107, 114, 111, 63, 102, 132, 135, 122, 122, 122, 123, 124, 122, + 119, 116, 96, 20, 102, 95, 112, 107, 111, 107, 99, 81, 73, 64, 55, 52, + 80, 88, 79, 81, 81, 64, 81, 85, 87, 75, 53, 38, 44, 79, 95, 91, + 59, 59, 60, 64, 65, 65, 68, 37, 51, 87, 83, 84, 83, 65, 64, 67, + 63, 63, 42, 59, 72, 69, 73, 65, 65, 56, 52, 51, 48, 45, 25, 8, + 64, 72, 87, 93, 97, 95, 85, 73, 91, 79, 68, 44, 71, 73, 91, 75, + 73, 80, 76, 67, 67, 57, 6, 72, 69, 53, 75, 72, 42, 48, 72, 64, + 68, 53, 51, 37, 83, 110, 112, 96, 95, 89, 87, 97, 76, 83, 64, 2, + 76, 83, 102, 83, 73, 71, 75, 83, 96, 60, 38, 97, 110, 116, 114, 107, + 100, 102, 112, 115, 104, 89, 61, 20, 69, 63, 69, 63, 85, 99, 96, 81, + 57, 59, 52, 69, 88, 85, 79, 76, 75, 76, 72, 71, 73, 73, 53, 44, + 60, 63, 63, 60, 59, 57, 56, 56, 55, 34, 16, 77, 67, 88, 72, 80, + 80, 84, 84, 77, 80, 92, 57, 22, 89, 89, 95, 99, 100, 99, 75, 81, + 63, 63, 30, 6, 46, 71, 67, 68, 65, 57, 53, 59, 59, 51, 29, 24, + 71, 81, 79, 46, 48, 60, 60, 63, 38, 28, 5, 72, 53, 53, 40, 41, + 41, 44, 42, 45, 45, 36, 40, 18, 59, 97, 77, 72, 65, 76, 57, 65, + 59, 55, 44, 13, 20, 29, 42, 38, 28, 29, 29, 32, 34, 24, 18, 49, + 48, 53, 51, 40, 52, 49, 51, 37, 42, 38, 37, 21, 56, 61, 53, 49, + 44, 32, 25, 29, 29, 26, 22, 51, 85, 91, 183, 178, 130, 103, 100, 99, + 120, 118, 80, 32, 36, 44, 59, 57, 53, 79, 163, 204, 208, 224, 220, 148, + 124, 130, 142, 143, 138, 126, 49, 6, 4, 4, 2, 1, 4, 20, 34, 25, + 17, 178, 166, 161, 161, 165, 161, 159, 147, 76, 6, 132, 170, 166, 174, 169, + 171, 169, 167, 157, 132, 112, 89, 136, 140, 155, 154, 161, 155, 150, 153, 154, + 142, 134, 80, 122, 130, 136, 132, 126, 131, 130, 126, 119, 108, 68, 83, 135, + 146, 146, 134, 140, 123, 128, 135, 128, 123, 122, 83, 103, 127, 123, 108, 111, + 123, 126, 135, 122, 123, 119, 72, 106, 130, 128, 116, 110, 124, 128, 128, 126, + 126, 111, 77, 13, 77, 108, 110, 99, 111, 100, 99, 97, 75, 73, 26, 81, + 122, 131, 134, 136, 136, 136, 131, 116, 97, 60, 28, 100, 112, 118, 126, 134, + 135, 135, 134, 128, 108, 64, 46, 107, 104, 108, 103, 123, 118, 122, 104, 96, + 72, 9, 123, 118, 107, 102, 108, 124, 126, 126, 124, 118, 96, 55, 18, 107, + 120, 130, 127, 127, 127, 128, 130, 108, 107, 108, 79, 124, 153, 151, 143, 128, + 131, 116, 111, 83, 96, 52, 30, 59, 75, 100, 103, 104, 96, 136, 118, 131, + 144, 191, 204, 175, 118, 106, 112, 151, 185, 194, 197, 204, 206, 206, 209, 201, + 195, 186, 167, 150, 144, 144, 147, 139, 142, 138, 144, 147, 144, 155, 181, 173, + 96, 57, 60, 64, 63, 67, 63, 29, 128, 132, 132, 115, 111, 118, 107, 111, + 102, 64, 96, 136, 131, 123, 128, 120, 122, 114, 128, 127, 115, 92, 20, 97, + 92, 118, 122, 114, 100, 87, 73, 75, 68, 55, 29, 76, 99, 83, 89, 77, + 80, 92, 93, 95, 84, 55, 37, 64, 95, 95, 103, 100, 75, 76, 73, 67, + 77, 63, 36, 81, 85, 91, 89, 91, 84, 71, 68, 69, 67, 45, 71, 73, + 81, 77, 77, 73, 65, 57, 57, 52, 48, 25, 6, 69, 84, 89, 75, 85, + 93, 95, 73, 83, 81, 68, 37, 72, 76, 88, 83, 89, 93, 76, 83, 67, + 60, 6, 80, 72, 65, 69, 67, 73, 71, 76, 73, 75, 68, 52, 55, 85, + 116, 96, 97, 93, 102, 89, 89, 97, 77, 68, 4, 85, 84, 80, 79, 99, + 95, 100, 89, 81, 63, 36, 92, 104, 112, 120, 118, 111, 110, 111, 104, 110, + 89, 61, 20, 68, 68, 71, 69, 96, 55, 60, 63, 56, 61, 51, 71, 87, + 85, 88, 71, 85, 80, 79, 73, 76, 73, 63, 44, 55, 64, 73, 72, 72, + 68, 67, 65, 56, 36, 16, 69, 96, 89, 77, 84, 93, 91, 89, 77, 73, + 92, 51, 26, 87, 93, 84, 83, 84, 83, 84, 80, 61, 63, 33, 9, 57, + 79, 52, 61, 49, 73, 63, 69, 61, 46, 28, 30, 68, 85, 60, 55, 49, + 64, 65, 63, 37, 25, 5, 68, 73, 53, 51, 45, 48, 49, 51, 51, 46, + 38, 41, 22, 61, 85, 92, 71, 67, 60, 49, 55, 53, 52, 41, 9, 32, + 53, 55, 46, 42, 40, 44, 48, 36, 25, 14, 48, 46, 49, 42, 48, 53, + 41, 52, 45, 46, 38, 28, 21, 55, 72, 41, 45, 37, 33, 28, 29, 28, + 25, 20, 52, 73, 85, 131, 173, 142, 108, 103, 106, 130, 118, 60, 51, 40, + 48, 53, 48, 76, 138, 201, 208, 212, 221, 194, 126, 124, 131, 146, 139, 130, + 81, 12, 4, 8, 4, 2, 1, 2, 21, 34, 38, 18, 162, 163, 165, 174, + 171, 166, 157, 150, 80, 9, 154, 171, 170, 171, 171, 171, 165, 165, 144, 130, + 112, 81, 130, 154, 167, 165, 162, 159, 153, 151, 148, 143, 135, 87, 85, 119, + 128, 123, 131, 131, 126, 123, 124, 107, 65, 92, 143, 144, 130, 130, 130, 138, + 138, 135, 134, 115, 119, 83, 102, 135, 126, 123, 110, 128, 104, 120, 103, 96, + 123, 77, 108, 132, 131, 115, 122, 134, 132, 118, 112, 127, 111, 75, 9, 81, + 103, 115, 102, 102, 107, 99, 93, 81, 77, 20, 75, 124, 132, 128, 130, 128, + 124, 134, 116, 99, 65, 25, 73, 127, 116, 132, 135, 138, 138, 138, 128, 126, + 61, 18, 104, 112, 111, 112, 107, 115, 110, 110, 110, 61, 4, 120, 116, 97, + 115, 108, 102, 95, 108, 99, 119, 92, 52, 16, 108, 110, 118, 124, 119, 128, + 132, 138, 110, 108, 108, 89, 103, 148, 150, 142, 128, 134, 119, 118, 112, 99, + 63, 32, 72, 97, 106, 102, 100, 99, 135, 123, 136, 122, 171, 209, 178, 110, + 103, 106, 120, 131, 158, 167, 177, 178, 181, 174, 159, 143, 135, 140, 142, 143, + 146, 157, 158, 163, 147, 140, 135, 130, 136, 136, 173, 153, 93, 53, 63, 60, + 60, 59, 14, 103, 128, 127, 96, 112, 122, 114, 114, 96, 65, 99, 134, 136, + 130, 122, 127, 123, 122, 131, 126, 116, 89, 25, 92, 97, 99, 104, 107, 107, + 89, 72, 77, 73, 60, 29, 55, 91, 93, 92, 103, 104, 119, 118, 115, 89, + 60, 16, 68, 96, 96, 103, 91, 84, 89, 108, 100, 80, 67, 34, 83, 87, + 95, 87, 84, 88, 84, 84, 71, 67, 49, 69, 80, 81, 80, 76, 77, 73, + 67, 61, 57, 46, 28, 6, 71, 88, 69, 73, 81, 102, 88, 84, 88, 77, + 68, 40, 83, 81, 88, 80, 87, 83, 85, 87, 71, 46, 8, 79, 79, 95, + 77, 76, 79, 89, 77, 75, 73, 81, 60, 42, 68, 104, 114, 115, 108, 103, + 110, 115, 92, 85, 46, 1, 69, 88, 87, 96, 106, 95, 95, 93, 80, 64, + 34, 73, 107, 107, 111, 108, 111, 112, 111, 118, 114, 106, 63, 21, 67, 60, + 73, 88, 65, 83, 67, 68, 53, 63, 55, 71, 77, 95, 93, 76, 79, 88, + 89, 83, 85, 79, 72, 48, 57, 75, 60, 69, 76, 75, 72, 71, 59, 38, + 18, 87, 95, 91, 97, 87, 87, 84, 77, 77, 81, 95, 51, 33, 53, 92, + 84, 77, 83, 81, 79, 75, 61, 59, 32, 9, 59, 73, 65, 61, 68, 67, + 69, 59, 53, 41, 32, 24, 69, 80, 63, 46, 61, 55, 61, 60, 38, 29, + 4, 64, 60, 57, 53, 68, 68, 75, 73, 69, 53, 41, 42, 24, 57, 91, + 97, 96, 77, 77, 51, 51, 53, 46, 33, 22, 45, 48, 40, 46, 55, 55, + 53, 44, 34, 25, 14, 53, 48, 46, 32, 55, 52, 48, 51, 44, 46, 42, + 34, 13, 53, 68, 48, 41, 32, 33, 30, 41, 24, 29, 18, 42, 60, 79, + 102, 135, 167, 112, 103, 130, 139, 100, 52, 51, 60, 48, 57, 77, 135, 187, + 208, 209, 221, 210, 151, 120, 130, 140, 138, 126, 97, 18, 5, 5, 5, 5, + 2, 1, 1, 14, 33, 5, 28, 158, 159, 157, 154, 157, 155, 154, 138, 71, + 12, 116, 171, 169, 169, 169, 171, 171, 158, 134, 126, 112, 72, 150, 147, 158, + 148, 157, 148, 146, 142, 138, 138, 132, 130, 91, 96, 108, 107, 124, 130, 134, + 119, 123, 116, 60, 93, 142, 146, 124, 134, 135, 136, 131, 135, 122, 143, 106, + 88, 100, 135, 126, 128, 119, 130, 114, 111, 107, 123, 96, 84, 112, 134, 127, + 139, 111, 114, 132, 128, 130, 115, 110, 84, 21, 68, 107, 110, 112, 104, 108, + 103, 103, 83, 81, 26, 119, 127, 128, 139, 127, 122, 123, 124, 120, 96, 64, + 8, 108, 130, 119, 130, 134, 132, 140, 134, 128, 120, 83, 20, 114, 122, 120, + 110, 118, 115, 118, 123, 99, 93, 9, 118, 134, 123, 130, 122, 123, 124, 119, + 114, 118, 95, 52, 13, 119, 118, 122, 135, 126, 116, 114, 130, 127, 108, 111, + 91, 96, 143, 147, 142, 142, 134, 128, 127, 118, 107, 68, 32, 80, 100, 106, + 108, 116, 132, 119, 136, 114, 140, 126, 201, 191, 123, 111, 107, 115, 119, 127, + 132, 134, 139, 134, 132, 126, 118, 115, 115, 118, 132, 143, 153, 157, 158, 159, + 144, 142, 142, 140, 130, 139, 170, 100, 53, 59, 60, 63, 51, 14, 102, 140, + 128, 116, 114, 116, 115, 118, 95, 52, 96, 130, 142, 139, 134, 132, 132, 132, + 135, 122, 114, 95, 34, 93, 99, 107, 100, 91, 84, 81, 65, 76, 79, 52, + 64, 76, 106, 116, 102, 107, 103, 116, 99, 92, 89, 55, 16, 76, 100, 106, + 95, 97, 97, 96, 99, 97, 75, 69, 30, 97, 87, 96, 83, 91, 85, 88, + 89, 89, 71, 49, 67, 75, 73, 75, 73, 76, 69, 68, 65, 65, 48, 30, + 9, 73, 89, 87, 67, 89, 73, 72, 79, 79, 76, 65, 44, 79, 91, 91, + 83, 80, 81, 87, 87, 67, 64, 22, 80, 80, 80, 93, 83, 81, 81, 87, + 87, 88, 87, 76, 51, 68, 91, 99, 102, 99, 83, 91, 85, 85, 80, 69, + 8, 72, 91, 89, 92, 93, 89, 83, 80, 81, 75, 55, 52, 95, 103, 103, + 103, 102, 104, 104, 103, 103, 95, 68, 21, 65, 67, 56, 64, 55, 69, 64, + 63, 63, 72, 64, 55, 79, 71, 73, 69, 75, 72, 75, 73, 77, 75, 75, + 69, 55, 61, 61, 55, 63, 67, 65, 72, 63, 44, 16, 76, 95, 85, 79, + 79, 83, 77, 79, 85, 93, 96, 60, 28, 38, 87, 95, 88, 95, 84, 79, + 57, 59, 49, 32, 9, 55, 71, 73, 81, 71, 76, 69, 65, 63, 38, 32, + 28, 69, 93, 72, 45, 48, 63, 64, 75, 42, 24, 5, 45, 68, 57, 60, + 61, 53, 49, 53, 57, 64, 42, 44, 24, 55, 80, 92, 85, 71, 71, 42, + 51, 52, 49, 29, 18, 52, 46, 51, 44, 41, 37, 40, 42, 34, 21, 14, + 55, 44, 48, 52, 52, 48, 49, 48, 45, 46, 48, 36, 10, 52, 59, 41, + 29, 38, 32, 29, 24, 26, 20, 20, 45, 49, 42, 65, 81, 157, 144, 103, + 114, 135, 127, 61, 49, 56, 72, 111, 150, 186, 198, 202, 217, 213, 165, 119, + 124, 136, 134, 122, 87, 18, 6, 5, 6, 5, 5, 2, 1, 2, 21, 25, + 57, 65, 139, 138, 138, 138, 136, 138, 131, 130, 67, 26, 79, 128, 173, 174, + 151, 155, 134, 134, 132, 104, 99, 72, 142, 146, 144, 140, 143, 147, 142, 132, + 126, 122, 124, 119, 124, 138, 134, 123, 110, 110, 110, 106, 111, 97, 59, 119, + 140, 148, 127, 128, 118, 124, 120, 119, 114, 123, 122, 107, 92, 111, 114, 108, + 116, 115, 127, 122, 122, 123, 123, 116, 111, 99, 104, 128, 123, 118, 114, 115, + 112, 108, 103, 81, 9, 64, 107, 104, 102, 104, 102, 100, 102, 93, 77, 30, + 83, 119, 119, 122, 120, 123, 120, 128, 122, 95, 59, 30, 112, 128, 123, 122, + 122, 127, 115, 128, 123, 108, 72, 12, 108, 106, 124, 124, 120, 122, 126, 116, + 96, 88, 9, 110, 120, 119, 118, 119, 118, 116, 115, 114, 115, 89, 49, 29, + 112, 116, 124, 119, 123, 118, 124, 114, 118, 119, 111, 97, 85, 120, 146, 138, + 131, 124, 110, 115, 122, 106, 71, 30, 80, 103, 126, 122, 134, 146, 127, 150, + 147, 135, 116, 144, 182, 134, 103, 106, 110, 118, 119, 115, 124, 123, 126, 120, + 118, 115, 116, 120, 151, 155, 131, 150, 161, 157, 157, 165, 148, 147, 143, 144, + 140, 166, 96, 46, 52, 57, 61, 44, 9, 92, 124, 127, 118, 111, 118, 115, + 106, 95, 51, 96, 115, 132, 130, 124, 122, 119, 119, 116, 108, 104, 93, 29, + 48, 84, 85, 61, 55, 75, 73, 49, 52, 60, 61, 67, 79, 99, 108, 99, + 96, 93, 96, 93, 92, 91, 48, 30, 68, 95, 110, 104, 104, 110, 97, 102, + 97, 77, 68, 33, 85, 83, 89, 84, 79, 77, 67, 64, 80, 76, 72, 71, + 56, 59, 59, 59, 55, 53, 55, 57, 52, 51, 29, 6, 77, 95, 59, 60, + 64, 60, 61, 61, 65, 69, 63, 61, 59, 64, 76, 76, 65, 65, 63, 64, + 59, 67, 5, 79, 79, 80, 76, 76, 79, 81, 79, 79, 75, 79, 77, 72, + 53, 52, 61, 65, 63, 61, 65, 65, 65, 69, 73, 5, 41, 85, 85, 83, + 83, 80, 53, 51, 53, 59, 73, 73, 59, 73, 85, 79, 83, 80, 85, 91, + 91, 81, 63, 21, 57, 51, 52, 57, 55, 56, 60, 63, 40, 38, 41, 69, + 71, 73, 75, 76, 75, 76, 77, 79, 75, 77, 73, 73, 72, 77, 75, 76, + 73, 60, 60, 71, 60, 46, 20, 85, 96, 81, 87, 92, 79, 93, 96, 84, + 73, 71, 63, 32, 32, 83, 77, 85, 55, 53, 53, 42, 46, 42, 32, 9, + 53, 63, 60, 42, 59, 59, 63, 49, 51, 42, 30, 25, 68, 81, 55, 56, + 49, 60, 60, 76, 34, 26, 5, 67, 63, 60, 57, 55, 52, 52, 52, 49, + 48, 46, 46, 26, 34, 52, 73, 67, 52, 41, 48, 44, 41, 49, 45, 18, + 52, 48, 51, 42, 48, 42, 40, 37, 34, 24, 14, 48, 53, 49, 46, 48, + 48, 46, 41, 42, 40, 36, 24, 13, 44, 56, 34, 21, 22, 25, 28, 26, + 25, 21, 21, 33, 42, 41, 46, 67, 77, 171, 114, 110, 140, 134, 128, 124, + 126, 153, 179, 182, 193, 195, 210, 206, 163, 116, 124, 131, 120, 111, 83, 22, + 6, 6, 6, 5, 4, 5, 4, 1, 2, 12, 14, 12, 10, 81, 77, 75, + 67, 60, 56, 49, 45, 36, 40, 40, 56, 65, 63, 80, 84, 95, 77, 97, + 107, 84, 69, 106, 75, 99, 93, 65, 67, 85, 71, 60, 55, 68, 64, 77, + 60, 76, 75, 99, 131, 134, 132, 95, 81, 56, 114, 123, 127, 118, 116, 110, + 123, 118, 115, 126, 127, 120, 115, 119, 130, 135, 134, 130, 132, 128, 130, 128, + 124, 122, 122, 119, 119, 75, 76, 53, 40, 37, 36, 33, 33, 28, 36, 10, + 32, 32, 37, 41, 44, 55, 84, 99, 89, 76, 37, 10, 85, 112, 68, 83, + 95, 114, 68, 91, 91, 48, 29, 60, 83, 68, 67, 84, 80, 69, 67, 84, + 85, 38, 13, 63, 83, 61, 87, 77, 77, 59, 91, 75, 42, 10, 33, 80, + 81, 80, 79, 87, 88, 83, 84, 88, 87, 45, 17, 85, 122, 118, 96, 92, + 108, 111, 84, 95, 103, 115, 102, 107, 111, 104, 93, 107, 103, 103, 95, 92, + 89, 69, 33, 76, 112, 112, 103, 100, 112, 112, 103, 106, 130, 136, 167, 182, + 170, 115, 108, 103, 110, 106, 65, 56, 56, 57, 57, 56, 60, 60, 97, 116, + 165, 124, 130, 154, 158, 161, 158, 155, 162, 148, 148, 142, 163, 102, 46, 46, + 55, 44, 53, 18, 48, 75, 102, 128, 126, 120, 132, 97, 87, 55, 91, 100, + 122, 122, 115, 95, 87, 83, 77, 77, 60, 48, 63, 69, 61, 65, 63, 61, + 53, 55, 53, 53, 44, 45, 45, 55, 87, 85, 93, 100, 96, 104, 87, 97, + 83, 32, 28, 63, 91, 87, 77, 88, 89, 85, 81, 85, 80, 68, 36, 87, + 84, 72, 79, 77, 76, 76, 77, 73, 71, 69, 67, 71, 69, 67, 68, 67, + 64, 61, 61, 60, 56, 53, 6, 49, 59, 53, 55, 56, 59, 57, 60, 61, + 63, 61, 57, 63, 60, 61, 61, 59, 57, 56, 60, 53, 46, 5, 52, 60, + 55, 59, 59, 63, 64, 64, 65, 67, 68, 68, 59, 67, 73, 68, 60, 73, + 71, 63, 51, 75, 63, 48, 18, 52, 38, 33, 33, 36, 26, 32, 34, 29, + 30, 34, 29, 46, 55, 46, 44, 64, 72, 65, 51, 71, 72, 44, 25, 51, + 21, 22, 22, 21, 18, 18, 20, 20, 14, 14, 20, 14, 13, 13, 17, 16, + 16, 17, 20, 21, 20, 21, 24, 28, 29, 32, 34, 40, 72, 69, 76, 60, + 41, 17, 73, 93, 80, 89, 93, 88, 87, 75, 76, 63, 60, 48, 45, 28, + 41, 40, 44, 48, 44, 33, 32, 28, 25, 34, 13, 24, 21, 21, 28, 29, + 36, 48, 34, 30, 33, 29, 34, 46, 49, 45, 51, 41, 46, 48, 45, 34, + 24, 5, 60, 57, 61, 60, 56, 55, 53, 52, 53, 52, 49, 49, 46, 48, + 45, 45, 46, 45, 44, 45, 44, 44, 42, 38, 18, 46, 37, 41, 40, 38, + 36, 28, 34, 36, 24, 13, 12, 13, 13, 16, 13, 13, 12, 14, 29, 26, + 25, 18, 12, 38, 21, 16, 16, 18, 17, 13, 16, 14, 12, 30, 30, 13, + 33, 33, 42, 49, 93, 132, 114, 126, 151, 153, 161, 169, 174, 181, 191, 194, + 205, 199, 166, 120, 122, 119, 110, 97, 61, 18, 10, 8, 8, 4, 5, 5, + 8, 4, 4, 0, 0, 0, 0, 0, 99, 88, 118, 123, 102, 92, 135, 134, + 64, 13, 84, 131, 127, 95, 107, 99, 60, 53, 65, 61, 57, 69, 34, 36, + 60, 71, 89, 102, 119, 122, 140, 151, 127, 108, 127, 143, 131, 122, 87, 76, + 75, 68, 108, 93, 56, 88, 92, 73, 73, 61, 60, 49, 51, 51, 46, 51, + 42, 37, 32, 26, 26, 24, 24, 25, 25, 24, 22, 26, 24, 21, 24, 37, + 88, 112, 124, 124, 128, 131, 131, 127, 128, 89, 10, 120, 161, 161, 138, 88, + 89, 76, 56, 55, 71, 57, 10, 1, 29, 20, 21, 1, 21, 12, 2, 2, + 14, 32, 1, 0, 41, 22, 2, 1, 21, 16, 4, 6, 20, 17, 5, 4, + 9, 30, 2, 1, 10, 2, 6, 0, 1, 9, 0, 0, 1, 4, 2, 2, + 1, 2, 2, 4, 26, 8, 34, 29, 38, 37, 42, 51, 63, 85, 87, 95, + 106, 79, 76, 69, 72, 65, 61, 60, 51, 46, 67, 57, 59, 36, 67, 72, + 73, 81, 93, 93, 93, 118, 120, 142, 161, 163, 199, 190, 153, 114, 104, 106, + 107, 48, 49, 49, 56, 53, 51, 57, 56, 73, 111, 158, 162, 127, 126, 151, + 154, 157, 157, 163, 144, 146, 159, 153, 97, 42, 41, 45, 32, 10, 33, 45, + 46, 55, 41, 41, 57, 61, 72, 96, 53, 83, 95, 89, 68, 64, 67, 64, + 44, 45, 46, 34, 25, 14, 16, 16, 12, 9, 9, 8, 8, 5, 5, 5, + 4, 2, 2, 1, 1, 0, 0, 0, 6, 8, 12, 12, 14, 16, 22, 26, + 36, 33, 38, 49, 46, 61, 79, 83, 65, 37, 76, 64, 64, 53, 44, 44, + 38, 33, 29, 29, 22, 16, 14, 20, 10, 9, 8, 21, 6, 5, 5, 24, + 4, 2, 1, 2, 2, 0, 1, 4, 2, 2, 5, 8, 5, 6, 9, 12, + 4, 6, 18, 20, 4, 8, 26, 28, 24, 6, 21, 21, 4, 2, 16, 4, + 4, 12, 13, 1, 1, 0, 8, 2, 0, 5, 8, 0, 0, 0, 6, 0, + 0, 17, 22, 29, 55, 84, 63, 71, 87, 99, 89, 73, 51, 34, 64, 92, + 92, 76, 80, 36, 26, 25, 22, 25, 21, 16, 13, 40, 44, 38, 41, 53, + 52, 52, 51, 65, 45, 5, 21, 95, 116, 76, 85, 97, 110, 85, 88, 87, + 84, 81, 87, 97, 99, 85, 49, 36, 41, 41, 60, 41, 18, 45, 46, 46, + 44, 48, 46, 46, 48, 48, 46, 52, 45, 44, 34, 21, 17, 24, 34, 18, + 21, 52, 76, 84, 57, 13, 56, 75, 73, 37, 32, 28, 36, 22, 28, 18, + 49, 30, 24, 18, 18, 25, 20, 30, 30, 34, 26, 26, 22, 17, 36, 37, + 46, 33, 37, 36, 38, 36, 41, 42, 37, 36, 38, 40, 37, 37, 42, 38, + 34, 34, 42, 36, 14, 25, 48, 38, 38, 30, 36, 38, 42, 52, 42, 37, + 14, 56, 77, 77, 61, 75, 72, 69, 38, 30, 28, 14, 9, 5, 14, 30, + 40, 38, 42, 37, 40, 29, 37, 26, 17, 38, 80, 102, 69, 67, 69, 59, + 132, 154, 138, 148, 123, 126, 130, 144, 147, 155, 154, 157, 140, 128, 131, 107, + 72, 55, 29, 12, 9, 9, 8, 6, 10, 12, 18, 18, 22, 2, 0, 18, + 64, 64, 61, 178, 178, 174, 174, 166, 170, 165, 150, 124, 38, 87, 142, 130, + 136, 138, 130, 130, 130, 112, 119, 85, 40, 79, 158, 173, 177, 177, 175, 174, + 173, 169, 157, 165, 170, 167, 167, 165, 165, 162, 153, 143, 127, 104, 95, 53, + 56, 63, 73, 79, 93, 103, 136, 115, 124, 108, 77, 79, 81, 148, 161, 150, + 135, 167, 158, 135, 159, 147, 150, 140, 143, 140, 147, 166, 154, 139, 134, 139, + 143, 139, 144, 135, 95, 16, 122, 162, 163, 159, 163, 163, 127, 147, 110, 73, + 61, 88, 116, 122, 112, 108, 106, 100, 103, 97, 65, 53, 8, 36, 155, 158, + 112, 119, 151, 151, 123, 128, 122, 63, 6, 30, 102, 126, 95, 95, 91, 91, + 111, 97, 53, 29, 76, 97, 99, 87, 84, 84, 83, 79, 77, 73, 72, 37, + 9, 123, 142, 139, 116, 139, 106, 56, 42, 40, 37, 33, 36, 40, 63, 84, + 93, 96, 107, 108, 119, 120, 118, 100, 34, 116, 134, 132, 114, 143, 127, 130, + 120, 123, 157, 162, 206, 205, 191, 179, 123, 108, 104, 116, 46, 48, 48, 49, + 51, 41, 41, 61, 72, 110, 178, 178, 120, 127, 114, 132, 136, 135, 131, 157, + 153, 143, 106, 83, 41, 40, 38, 38, 45, 45, 100, 114, 96, 97, 73, 61, + 63, 57, 76, 40, 37, 45, 61, 64, 68, 59, 61, 60, 84, 80, 80, 84, + 130, 132, 140, 131, 139, 134, 128, 139, 136, 132, 131, 120, 122, 123, 127, 135, + 123, 127, 118, 93, 96, 89, 79, 33, 14, 92, 135, 143, 104, 100, 85, 79, + 67, 72, 51, 57, 41, 46, 61, 61, 65, 51, 60, 65, 89, 60, 55, 60, + 99, 131, 135, 112, 100, 122, 123, 107, 103, 122, 112, 26, 5, 61, 134, 96, + 100, 97, 104, 103, 111, 119, 119, 115, 110, 116, 120, 135, 119, 119, 119, 120, + 116, 114, 34, 12, 33, 108, 135, 103, 108, 111, 111, 110, 118, 119, 120, 119, + 114, 124, 135, 130, 128, 126, 123, 119, 103, 116, 112, 38, 2, 64, 96, 115, + 120, 115, 114, 115, 110, 114, 102, 67, 32, 69, 106, 97, 97, 93, 92, 95, + 87, 83, 76, 37, 36, 91, 107, 106, 104, 102, 96, 68, 75, 88, 63, 53, + 4, 103, 106, 92, 99, 95, 102, 93, 104, 92, 93, 87, 89, 59, 84, 99, + 88, 76, 92, 88, 81, 71, 51, 20, 17, 14, 13, 13, 13, 12, 13, 12, + 10, 12, 12, 12, 12, 20, 77, 93, 85, 79, 87, 76, 76, 85, 88, 67, + 14, 67, 87, 76, 71, 61, 61, 53, 65, 69, 53, 20, 18, 73, 85, 84, + 77, 72, 56, 33, 21, 22, 20, 9, 0, 0, 9, 5, 0, 0, 6, 4, + 0, 0, 4, 2, 0, 2, 2, 2, 1, 9, 2, 2, 4, 14, 4, 5, + 24, 46, 61, 91, 93, 95, 95, 92, 88, 49, 45, 14, 64, 79, 61, 64, + 69, 63, 59, 59, 69, 59, 44, 21, 8, 53, 75, 84, 84, 77, 85, 76, + 76, 38, 29, 17, 106, 115, 95, 103, 91, 103, 95, 104, 46, 65, 65, 91, + 92, 102, 135, 136, 134, 128, 134, 132, 118, 85, 59, 24, 13, 13, 14, 13, + 10, 8, 12, 18, 14, 22, 32, 10, 4, 4, 42, 68, 83, 84, 166, 170, + 169, 174, 171, 174, 167, 167, 124, 38, 111, 142, 140, 135, 136, 136, 128, 144, + 139, 122, 88, 32, 144, 169, 170, 144, 155, 153, 136, 155, 153, 153, 158, 115, + 144, 158, 170, 173, 166, 169, 159, 155, 118, 120, 53, 110, 150, 143, 150, 144, + 144, 139, 161, 174, 130, 120, 119, 93, 106, 157, 150, 138, 140, 157, 159, 169, + 165, 150, 146, 148, 120, 120, 150, 151, 151, 154, 147, 143, 143, 138, 139, 112, + 13, 135, 165, 155, 162, 161, 158, 157, 162, 131, 107, 64, 123, 128, 130, 130, + 128, 126, 131, 135, 124, 96, 53, 24, 122, 162, 155, 151, 151, 151, 155, 155, + 154, 140, 71, 1, 130, 143, 155, 144, 142, 142, 147, 140, 138, 100, 33, 119, + 119, 118, 110, 111, 104, 102, 95, 95, 93, 92, 36, 9, 123, 142, 146, 146, + 139, 135, 130, 136, 131, 122, 107, 116, 93, 106, 130, 128, 128, 128, 143, 147, + 140, 131, 100, 37, 128, 150, 140, 150, 130, 139, 130, 127, 150, 166, 204, 204, + 198, 201, 174, 115, 108, 110, 115, 48, 46, 42, 53, 51, 44, 64, 60, 80, + 107, 189, 187, 126, 123, 130, 123, 100, 107, 104, 93, 89, 95, 87, 68, 37, + 38, 37, 49, 42, 75, 128, 123, 126, 111, 114, 116, 107, 107, 76, 46, 63, + 138, 144, 135, 131, 135, 142, 123, 139, 93, 127, 110, 96, 120, 118, 130, 124, + 111, 122, 126, 112, 115, 120, 111, 115, 111, 81, 83, 99, 89, 81, 88, 84, + 87, 79, 34, 14, 110, 151, 139, 132, 144, 143, 118, 131, 139, 103, 85, 42, + 79, 128, 134, 132, 131, 124, 131, 134, 128, 142, 126, 92, 89, 95, 97, 97, + 102, 107, 99, 112, 107, 118, 67, 8, 132, 128, 84, 99, 119, 116, 123, 99, + 118, 127, 123, 112, 83, 88, 95, 88, 83, 93, 92, 88, 83, 40, 0, 119, + 146, 138, 143, 139, 144, 139, 140, 135, 135, 138, 132, 108, 81, 103, 107, 107, + 111, 111, 110, 99, 97, 99, 40, 24, 85, 110, 114, 97, 93, 100, 96, 97, + 97, 108, 71, 40, 83, 106, 92, 97, 93, 104, 92, 77, 89, 77, 41, 30, + 96, 99, 88, 106, 88, 99, 103, 93, 76, 61, 53, 8, 100, 102, 85, 84, + 80, 93, 99, 99, 92, 99, 67, 48, 79, 100, 91, 87, 84, 83, 83, 85, + 55, 57, 24, 29, 100, 111, 88, 80, 99, 108, 100, 97, 104, 95, 91, 84, + 89, 92, 112, 112, 107, 103, 89, 81, 80, 84, 68, 17, 65, 85, 81, 79, + 76, 76, 71, 53, 49, 26, 17, 59, 118, 116, 124, 112, 116, 106, 100, 93, + 64, 34, 12, 65, 80, 88, 75, 87, 76, 83, 65, 77, 75, 73, 61, 61, + 97, 87, 96, 89, 97, 99, 77, 87, 112, 88, 32, 25, 72, 95, 89, 87, + 75, 75, 65, 75, 57, 38, 14, 63, 79, 79, 60, 64, 68, 68, 64, 60, + 59, 59, 28, 9, 63, 77, 84, 79, 79, 79, 72, 52, 34, 24, 10, 114, + 92, 102, 102, 100, 81, 135, 132, 63, 48, 38, 36, 41, 46, 60, 68, 59, + 61, 59, 53, 36, 21, 14, 10, 13, 13, 13, 4, 5, 12, 21, 22, 16, + 28, 12, 12, 4, 2, 38, 73, 55, 57, 161, 161, 165, 171, 174, 171, 169, + 167, 118, 17, 79, 140, 143, 140, 136, 118, 143, 139, 142, 119, 88, 34, 155, + 173, 155, 144, 162, 162, 173, 162, 151, 157, 151, 108, 140, 162, 151, 165, 142, + 163, 163, 162, 150, 119, 56, 138, 153, 166, 143, 138, 134, 143, 136, 142, 134, + 139, 128, 89, 153, 170, 165, 161, 158, 157, 155, 147, 151, 142, 140, 100, 143, + 158, 142, 139, 138, 143, 143, 150, 135, 142, 123, 103, 13, 131, 154, 151, 162, + 161, 159, 154, 155, 130, 110, 65, 122, 118, 130, 131, 131, 136, 139, 135, 124, + 100, 55, 5, 159, 161, 147, 147, 147, 144, 144, 140, 139, 131, 75, 25, 138, + 132, 140, 142, 144, 148, 147, 147, 126, 120, 40, 116, 103, 100, 85, 99, 95, + 103, 92, 91, 89, 92, 41, 5, 124, 143, 142, 135, 128, 131, 140, 142, 131, + 131, 96, 73, 126, 148, 151, 144, 140, 144, 144, 148, 142, 132, 110, 38, 127, + 142, 151, 142, 161, 146, 126, 135, 150, 186, 205, 202, 199, 198, 142, 112, 110, + 108, 106, 40, 41, 42, 49, 33, 53, 64, 56, 79, 111, 201, 194, 177, 123, + 126, 147, 136, 135, 134, 131, 131, 112, 102, 67, 37, 36, 40, 48, 38, 79, + 130, 119, 128, 124, 120, 116, 120, 104, 84, 42, 110, 131, 128, 132, 132, 128, + 122, 118, 107, 132, 118, 88, 116, 138, 138, 132, 120, 123, 107, 112, 108, 123, + 110, 103, 68, 99, 99, 87, 88, 88, 88, 95, 95, 96, 73, 42, 12, 102, + 157, 142, 143, 135, 135, 144, 143, 147, 147, 95, 45, 107, 138, 140, 135, 143, + 131, 136, 132, 123, 123, 89, 99, 126, 123, 122, 115, 108, 112, 119, 120, 114, + 114, 84, 13, 130, 83, 132, 127, 93, 96, 126, 112, 103, 103, 111, 67, 91, + 115, 123, 126, 118, 114, 118, 100, 99, 42, 18, 124, 144, 138, 124, 126, 130, + 135, 132, 136, 131, 134, 111, 85, 120, 122, 119, 115, 115, 115, 104, 104, 103, + 91, 52, 5, 81, 112, 107, 95, 97, 96, 108, 108, 104, 108, 69, 40, 85, + 97, 84, 95, 80, 87, 80, 81, 99, 77, 38, 29, 89, 93, 91, 96, 92, + 103, 100, 97, 77, 65, 49, 6, 65, 99, 88, 87, 79, 76, 89, 76, 93, + 76, 63, 45, 77, 100, 95, 89, 84, 91, 87, 80, 63, 60, 24, 61, 112, + 104, 104, 103, 106, 106, 104, 102, 92, 89, 87, 55, 91, 114, 99, 88, 95, + 91, 88, 92, 80, 93, 61, 18, 63, 68, 92, 59, 55, 57, 42, 40, 40, + 21, 14, 75, 119, 118, 103, 108, 107, 118, 112, 111, 83, 51, 17, 60, 65, + 45, 65, 81, 95, 53, 46, 71, 53, 48, 60, 73, 73, 97, 110, 110, 106, + 95, 93, 96, 106, 92, 56, 40, 76, 87, 72, 76, 76, 77, 76, 79, 49, + 40, 13, 65, 79, 79, 56, 57, 67, 55, 65, 65, 65, 57, 26, 8, 67, + 83, 75, 64, 68, 69, 65, 46, 30, 22, 9, 87, 104, 87, 112, 120, 104, + 103, 53, 73, 63, 57, 34, 38, 26, 25, 30, 21, 25, 21, 22, 20, 17, + 16, 12, 13, 8, 8, 14, 24, 24, 21, 18, 21, 29, 12, 5, 2, 0, + 44, 67, 48, 12, 178, 177, 174, 161, 161, 173, 165, 150, 116, 13, 110, 142, + 146, 148, 136, 136, 127, 138, 132, 100, 83, 34, 134, 167, 154, 158, 143, 162, + 155, 163, 148, 159, 146, 102, 128, 162, 130, 151, 143, 169, 163, 155, 151, 131, + 59, 134, 167, 143, 148, 142, 143, 146, 142, 139, 146, 146, 80, 42, 155, 169, + 155, 167, 158, 157, 155, 161, 163, 138, 143, 92, 139, 155, 138, 139, 140, 138, + 147, 146, 142, 136, 136, 97, 12, 130, 154, 151, 158, 155, 150, 130, 166, 158, + 114, 79, 81, 123, 127, 131, 128, 115, 123, 126, 123, 55, 56, 5, 110, 161, + 144, 147, 143, 151, 138, 150, 140, 135, 77, 4, 91, 147, 150, 136, 134, 138, + 139, 157, 146, 85, 46, 76, 100, 107, 92, 100, 102, 93, 92, 99, 99, 81, + 40, 5, 114, 139, 150, 130, 124, 126, 131, 127, 124, 103, 100, 77, 146, 154, + 146, 161, 142, 147, 144, 146, 146, 132, 114, 42, 127, 142, 143, 123, 120, 131, + 124, 142, 167, 212, 205, 204, 195, 146, 118, 107, 106, 118, 67, 42, 41, 42, + 45, 57, 56, 65, 65, 95, 115, 202, 205, 190, 123, 126, 131, 146, 148, 151, + 150, 146, 138, 118, 73, 36, 38, 37, 46, 34, 67, 124, 120, 126, 124, 135, + 130, 123, 108, 91, 46, 112, 127, 128, 126, 130, 135, 120, 119, 110, 118, 112, + 79, 112, 136, 116, 115, 130, 116, 118, 112, 111, 114, 119, 100, 64, 97, 114, + 110, 103, 92, 83, 100, 80, 85, 71, 41, 12, 123, 146, 135, 136, 142, 143, + 143, 142, 139, 128, 104, 52, 116, 139, 128, 127, 126, 126, 123, 126, 120, 97, + 80, 108, 127, 112, 116, 118, 119, 116, 118, 118, 116, 120, 59, 12, 69, 124, + 92, 119, 120, 115, 119, 123, 120, 114, 95, 63, 92, 116, 111, 104, 96, 103, + 104, 112, 104, 40, 14, 95, 143, 135, 143, 134, 130, 134, 138, 135, 140, 123, + 107, 85, 122, 127, 110, 115, 115, 112, 116, 116, 110, 84, 51, 2, 77, 114, + 104, 91, 93, 96, 102, 96, 99, 99, 71, 48, 72, 108, 85, 83, 89, 83, + 93, 85, 87, 68, 38, 28, 65, 92, 87, 84, 85, 93, 96, 99, 76, 65, + 52, 0, 63, 106, 80, 91, 79, 80, 87, 73, 93, 69, 55, 34, 85, 100, + 97, 92, 72, 79, 80, 89, 83, 73, 24, 84, 115, 102, 84, 89, 91, 97, + 89, 100, 93, 84, 64, 52, 89, 111, 93, 96, 93, 89, 83, 81, 83, 89, + 60, 24, 64, 73, 57, 59, 41, 45, 44, 44, 29, 20, 10, 61, 116, 115, + 102, 108, 106, 106, 103, 119, 89, 56, 14, 59, 59, 91, 73, 81, 103, 51, + 72, 75, 51, 63, 71, 52, 89, 110, 103, 102, 91, 99, 99, 99, 96, 91, + 65, 28, 84, 80, 77, 61, 64, 59, 61, 76, 57, 41, 17, 61, 83, 87, + 57, 53, 53, 59, 55, 52, 63, 41, 21, 5, 67, 73, 75, 53, 56, 48, + 44, 41, 34, 25, 10, 93, 100, 100, 85, 96, 73, 110, 69, 72, 63, 60, + 52, 40, 29, 25, 24, 22, 20, 18, 16, 17, 14, 14, 10, 9, 10, 18, + 24, 25, 36, 18, 17, 20, 34, 14, 24, 2, 0, 41, 67, 37, 59, 163, + 165, 163, 169, 159, 157, 167, 151, 126, 30, 110, 138, 142, 131, 138, 142, 134, + 139, 128, 111, 89, 29, 131, 163, 162, 146, 165, 157, 157, 148, 148, 162, 138, + 99, 146, 165, 159, 157, 161, 170, 162, 155, 159, 130, 69, 120, 155, 142, 144, + 140, 140, 154, 147, 148, 143, 142, 95, 38, 155, 169, 163, 159, 154, 161, 146, + 148, 150, 130, 134, 88, 136, 150, 139, 140, 140, 142, 134, 140, 147, 132, 131, + 102, 16, 131, 154, 151, 169, 162, 150, 155, 161, 151, 120, 87, 107, 120, 126, + 116, 115, 118, 120, 114, 122, 68, 52, 4, 108, 154, 144, 146, 151, 150, 150, + 147, 146, 136, 75, 2, 93, 143, 142, 139, 136, 135, 136, 143, 131, 93, 48, + 108, 104, 87, 92, 97, 104, 95, 92, 97, 104, 76, 41, 2, 124, 142, 146, + 128, 132, 139, 142, 139, 118, 106, 75, 72, 144, 155, 144, 150, 138, 148, 150, + 150, 142, 128, 108, 55, 116, 135, 144, 130, 119, 126, 114, 136, 195, 206, 205, + 201, 153, 122, 107, 108, 115, 73, 53, 40, 41, 45, 44, 57, 59, 68, 69, + 89, 115, 210, 208, 198, 123, 124, 131, 134, 142, 147, 148, 151, 143, 123, 75, + 34, 34, 33, 49, 30, 72, 126, 118, 123, 123, 132, 131, 119, 122, 81, 46, + 102, 130, 135, 142, 142, 144, 120, 114, 107, 119, 100, 75, 108, 136, 123, 122, + 114, 124, 124, 122, 108, 127, 118, 96, 61, 107, 107, 102, 88, 84, 77, 80, + 79, 83, 67, 34, 10, 123, 148, 148, 132, 151, 138, 134, 138, 131, 134, 103, + 63, 103, 136, 123, 122, 118, 134, 119, 106, 116, 100, 71, 107, 131, 115, 115, + 116, 114, 119, 114, 115, 119, 120, 60, 10, 85, 122, 126, 91, 93, 118, 111, + 108, 108, 112, 96, 59, 88, 128, 119, 92, 112, 124, 112, 99, 99, 37, 0, + 114, 138, 139, 136, 131, 134, 124, 127, 128, 130, 124, 100, 80, 120, 119, 106, + 108, 112, 116, 115, 115, 100, 97, 51, 5, 84, 107, 99, 99, 92, 97, 87, + 100, 100, 100, 77, 46, 77, 100, 80, 79, 91, 91, 89, 92, 91, 69, 42, + 24, 81, 93, 81, 108, 91, 102, 100, 80, 77, 71, 46, 2, 95, 91, 81, + 88, 75, 73, 81, 71, 100, 72, 55, 38, 79, 96, 106, 93, 96, 87, 77, + 76, 79, 61, 29, 68, 114, 111, 106, 93, 93, 77, 83, 84, 88, 53, 49, + 33, 85, 103, 85, 83, 80, 72, 80, 81, 91, 84, 60, 28, 57, 80, 55, + 49, 48, 61, 46, 49, 28, 24, 9, 65, 119, 116, 100, 115, 107, 102, 100, + 110, 80, 57, 14, 46, 55, 65, 80, 65, 65, 67, 75, 52, 67, 69, 69, + 13, 87, 107, 92, 103, 107, 97, 110, 112, 110, 96, 60, 30, 76, 81, 67, + 60, 61, 61, 75, 73, 81, 52, 17, 64, 71, 80, 57, 59, 61, 59, 55, + 68, 60, 55, 29, 4, 59, 88, 71, 57, 48, 56, 46, 40, 36, 26, 10, + 107, 111, 93, 96, 69, 71, 87, 72, 71, 57, 63, 61, 53, 26, 38, 26, + 29, 28, 26, 20, 18, 20, 22, 13, 5, 8, 20, 29, 34, 32, 36, 26, + 25, 24, 14, 9, 4, 6, 49, 61, 40, 30, 181, 178, 170, 167, 167, 163, + 165, 167, 126, 24, 83, 140, 142, 127, 146, 135, 139, 123, 130, 104, 83, 28, + 132, 171, 161, 163, 166, 153, 161, 159, 151, 161, 131, 100, 144, 153, 140, 143, + 161, 163, 161, 153, 157, 128, 76, 126, 157, 155, 150, 134, 144, 153, 144, 139, + 140, 143, 104, 69, 162, 173, 153, 163, 142, 155, 151, 150, 142, 138, 138, 87, + 142, 144, 140, 142, 143, 132, 143, 146, 146, 131, 132, 106, 17, 132, 154, 154, + 151, 162, 144, 151, 166, 138, 124, 76, 114, 134, 114, 115, 115, 112, 115, 102, + 111, 83, 51, 20, 120, 159, 153, 147, 150, 158, 158, 151, 154, 136, 75, 1, + 118, 143, 127, 140, 140, 134, 138, 138, 126, 108, 57, 110, 104, 95, 87, 99, + 104, 92, 99, 93, 97, 77, 38, 4, 132, 143, 146, 136, 139, 132, 143, 147, + 124, 104, 79, 91, 151, 150, 147, 142, 132, 148, 146, 135, 132, 130, 107, 56, + 118, 138, 146, 130, 138, 115, 110, 135, 202, 208, 201, 161, 123, 104, 123, 71, + 69, 56, 41, 41, 40, 46, 42, 45, 59, 64, 73, 102, 136, 209, 208, 199, + 120, 120, 130, 131, 132, 138, 147, 150, 143, 119, 65, 33, 30, 32, 40, 37, + 79, 124, 116, 122, 122, 135, 123, 126, 103, 91, 60, 100, 136, 128, 139, 131, + 131, 135, 128, 107, 116, 100, 71, 111, 135, 131, 108, 134, 115, 116, 108, 124, + 120, 114, 85, 65, 91, 106, 93, 87, 79, 76, 80, 79, 87, 61, 36, 9, + 123, 148, 132, 132, 142, 150, 142, 132, 144, 136, 107, 64, 96, 139, 127, 119, + 136, 126, 112, 118, 103, 88, 64, 108, 134, 115, 123, 127, 123, 128, 131, 120, + 115, 118, 69, 18, 89, 118, 123, 96, 114, 119, 116, 110, 115, 108, 95, 55, + 85, 116, 114, 107, 103, 103, 103, 100, 100, 41, 0, 110, 139, 139, 139, 135, + 138, 132, 128, 128, 130, 122, 69, 89, 122, 112, 106, 116, 123, 118, 106, 97, + 96, 92, 48, 30, 99, 108, 99, 95, 92, 104, 93, 104, 103, 103, 79, 55, + 81, 107, 80, 75, 91, 93, 93, 84, 81, 68, 42, 22, 79, 89, 91, 100, + 91, 99, 84, 80, 79, 72, 51, 14, 88, 88, 72, 80, 69, 72, 89, 68, + 87, 72, 53, 37, 72, 97, 96, 99, 99, 91, 68, 77, 75, 63, 33, 57, + 111, 103, 104, 85, 85, 88, 110, 88, 83, 56, 52, 53, 87, 102, 88, 83, + 80, 93, 93, 87, 92, 87, 68, 29, 60, 73, 57, 46, 34, 42, 40, 57, + 34, 20, 12, 76, 118, 114, 103, 115, 103, 103, 108, 111, 87, 57, 16, 64, + 55, 63, 72, 57, 67, 79, 56, 49, 53, 64, 40, 10, 89, 107, 104, 110, + 108, 100, 96, 99, 95, 95, 63, 34, 71, 85, 73, 55, 61, 57, 67, 72, + 71, 52, 17, 56, 79, 73, 57, 59, 51, 57, 51, 49, 59, 51, 29, 5, + 64, 76, 73, 56, 40, 46, 41, 32, 36, 24, 9, 107, 99, 99, 71, 83, + 88, 55, 73, 60, 67, 63, 59, 51, 29, 42, 30, 30, 25, 26, 21, 29, + 29, 25, 14, 5, 10, 20, 32, 25, 30, 33, 18, 24, 9, 21, 9, 4, + 1, 36, 63, 24, 18, 167, 173, 177, 169, 169, 162, 166, 161, 123, 24, 87, + 138, 142, 134, 134, 132, 132, 130, 134, 106, 84, 32, 119, 169, 151, 154, 157, + 155, 161, 155, 154, 138, 128, 83, 144, 158, 157, 132, 161, 154, 154, 153, 151, + 130, 79, 102, 148, 154, 153, 142, 148, 154, 146, 155, 151, 139, 123, 65, 165, + 161, 163, 163, 151, 163, 144, 153, 132, 144, 132, 91, 138, 143, 139, 132, 136, + 135, 147, 142, 144, 131, 118, 102, 17, 136, 146, 140, 155, 154, 150, 150, 155, + 140, 127, 79, 102, 93, 126, 116, 104, 104, 123, 119, 89, 67, 52, 6, 114, + 158, 144, 146, 158, 153, 143, 153, 154, 135, 79, 25, 127, 134, 132, 142, 139, + 134, 138, 135, 131, 123, 64, 115, 122, 122, 91, 102, 110, 97, 97, 96, 106, + 76, 40, 2, 131, 131, 148, 136, 138, 120, 142, 147, 126, 110, 75, 100, 158, + 148, 140, 139, 138, 146, 139, 134, 120, 124, 115, 59, 112, 136, 136, 135, 111, + 116, 119, 131, 198, 201, 174, 126, 108, 108, 69, 56, 42, 38, 37, 40, 38, + 45, 34, 48, 59, 67, 89, 111, 177, 212, 209, 202, 122, 122, 130, 131, 132, + 136, 146, 147, 140, 116, 46, 33, 32, 20, 40, 37, 79, 123, 114, 123, 123, + 131, 123, 124, 103, 84, 53, 108, 124, 131, 131, 124, 119, 120, 118, 114, 110, + 87, 65, 110, 134, 135, 116, 120, 110, 124, 123, 126, 118, 107, 85, 61, 96, + 104, 95, 92, 95, 96, 93, 88, 87, 52, 36, 8, 97, 147, 134, 132, 120, + 144, 151, 139, 136, 136, 106, 69, 97, 135, 122, 130, 126, 134, 111, 114, 106, + 85, 65, 118, 135, 120, 120, 131, 126, 127, 122, 120, 116, 108, 84, 22, 103, + 116, 122, 99, 112, 118, 112, 112, 110, 107, 91, 49, 80, 119, 114, 119, 103, + 107, 114, 104, 99, 42, 12, 111, 138, 146, 120, 118, 134, 131, 130, 122, 124, + 119, 61, 88, 127, 115, 110, 115, 128, 122, 111, 103, 88, 85, 53, 6, 92, + 108, 95, 93, 91, 102, 99, 103, 100, 103, 83, 48, 73, 104, 85, 106, 75, + 69, 84, 91, 81, 67, 40, 20, 81, 84, 77, 104, 89, 83, 83, 79, 80, + 72, 49, 13, 55, 79, 75, 67, 72, 69, 96, 67, 83, 69, 51, 30, 77, + 95, 106, 96, 104, 99, 88, 73, 72, 59, 33, 64, 107, 103, 99, 73, 88, + 81, 91, 84, 65, 60, 53, 48, 89, 96, 81, 87, 88, 76, 71, 79, 75, + 77, 65, 28, 56, 71, 63, 46, 44, 34, 34, 33, 36, 17, 10, 79, 112, + 114, 100, 106, 110, 103, 104, 115, 73, 56, 18, 59, 45, 63, 60, 61, 53, + 61, 57, 55, 56, 36, 55, 29, 89, 104, 104, 116, 93, 99, 104, 102, 100, + 92, 63, 37, 71, 77, 65, 51, 65, 72, 63, 71, 42, 46, 18, 42, 49, + 75, 51, 56, 59, 60, 51, 51, 55, 51, 28, 2, 63, 75, 71, 51, 51, + 44, 59, 33, 46, 24, 8, 64, 107, 85, 88, 84, 79, 65, 72, 72, 68, + 65, 68, 51, 30, 36, 32, 24, 36, 33, 32, 22, 24, 20, 20, 8, 17, + 25, 37, 41, 36, 29, 24, 12, 14, 14, 6, 5, 1, 49, 38, 49, 20, + 155, 177, 177, 163, 167, 166, 163, 147, 120, 12, 89, 139, 142, 136, 136, 136, + 143, 140, 128, 96, 84, 28, 118, 159, 153, 167, 158, 159, 153, 139, 154, 140, + 130, 69, 122, 166, 139, 126, 157, 157, 148, 151, 153, 131, 87, 103, 151, 144, + 155, 134, 148, 147, 147, 155, 147, 138, 89, 21, 165, 167, 157, 154, 161, 151, + 157, 158, 146, 131, 135, 84, 135, 139, 132, 135, 132, 135, 144, 142, 136, 134, + 127, 100, 16, 135, 146, 154, 158, 151, 140, 147, 146, 151, 128, 102, 83, 102, + 130, 122, 115, 128, 100, 111, 92, 51, 52, 2, 106, 157, 154, 147, 151, 157, + 147, 154, 146, 123, 79, 5, 87, 132, 130, 143, 138, 140, 123, 135, 144, 104, + 71, 65, 108, 103, 83, 97, 106, 97, 97, 102, 99, 72, 38, 0, 130, 135, + 144, 138, 135, 143, 143, 142, 123, 107, 77, 104, 157, 139, 148, 148, 143, 143, + 143, 151, 147, 119, 114, 61, 111, 135, 142, 139, 134, 124, 110, 126, 190, 208, + 171, 116, 93, 107, 63, 55, 41, 37, 42, 38, 38, 48, 40, 69, 60, 63, + 92, 122, 190, 220, 212, 205, 123, 122, 128, 132, 136, 142, 144, 146, 132, 95, + 34, 30, 30, 28, 42, 36, 77, 118, 114, 123, 124, 120, 126, 119, 85, 92, + 52, 99, 122, 123, 122, 120, 123, 131, 119, 112, 116, 100, 59, 114, 127, 143, + 122, 116, 119, 120, 120, 123, 107, 103, 63, 80, 89, 96, 92, 89, 87, 91, + 80, 84, 85, 61, 41, 6, 131, 148, 134, 127, 123, 127, 130, 134, 128, 124, + 116, 81, 100, 138, 123, 135, 126, 126, 100, 115, 88, 88, 60, 111, 130, 116, + 119, 124, 134, 119, 122, 118, 115, 104, 65, 20, 63, 91, 118, 111, 122, 111, + 111, 120, 110, 100, 80, 46, 71, 107, 111, 123, 119, 116, 102, 103, 106, 41, + 8, 100, 140, 140, 134, 131, 126, 130, 126, 126, 130, 100, 55, 96, 120, 116, + 102, 115, 130, 114, 107, 96, 92, 77, 59, 5, 77, 110, 93, 84, 95, 93, + 92, 102, 97, 96, 77, 63, 68, 97, 83, 83, 100, 68, 69, 72, 72, 67, + 36, 18, 72, 77, 76, 97, 97, 95, 85, 79, 85, 72, 52, 12, 63, 87, + 69, 64, 65, 65, 76, 77, 65, 68, 45, 24, 72, 91, 100, 91, 97, 93, + 91, 71, 72, 60, 34, 52, 96, 95, 123, 85, 93, 68, 63, 69, 51, 48, + 53, 38, 89, 93, 80, 75, 88, 76, 77, 72, 75, 71, 64, 29, 51, 71, + 63, 56, 48, 37, 49, 42, 33, 18, 9, 80, 111, 107, 110, 112, 107, 93, + 107, 118, 80, 56, 14, 60, 48, 79, 55, 45, 46, 77, 60, 51, 44, 38, + 64, 33, 93, 103, 107, 102, 102, 97, 97, 92, 96, 95, 84, 38, 46, 80, + 71, 64, 64, 64, 51, 46, 52, 44, 21, 32, 64, 73, 57, 51, 48, 49, + 53, 56, 52, 38, 20, 1, 52, 63, 67, 51, 60, 41, 44, 34, 34, 24, + 6, 96, 102, 83, 91, 85, 87, 72, 75, 76, 67, 64, 64, 53, 30, 51, + 37, 24, 24, 21, 17, 25, 21, 25, 17, 8, 20, 33, 32, 18, 16, 14, + 14, 12, 24, 17, 9, 5, 0, 22, 57, 21, 24, 157, 169, 181, 177, 163, + 158, 166, 150, 124, 17, 79, 135, 140, 146, 146, 140, 134, 131, 128, 91, 79, + 32, 118, 136, 166, 155, 169, 155, 154, 153, 155, 157, 126, 68, 147, 159, 148, + 150, 135, 138, 144, 135, 139, 138, 89, 106, 138, 144, 150, 146, 142, 144, 146, + 147, 147, 139, 100, 33, 153, 159, 144, 148, 150, 163, 163, 153, 158, 131, 128, + 72, 127, 138, 135, 130, 135, 131, 138, 134, 128, 131, 128, 99, 18, 136, 140, + 132, 136, 136, 126, 127, 135, 131, 130, 104, 72, 108, 107, 112, 93, 97, 107, + 115, 112, 52, 46, 16, 100, 153, 142, 144, 146, 143, 144, 154, 148, 111, 76, + 2, 85, 139, 124, 142, 142, 135, 134, 138, 131, 108, 59, 60, 77, 79, 99, + 96, 104, 99, 103, 99, 104, 67, 33, 0, 131, 143, 138, 139, 139, 153, 147, + 131, 115, 110, 60, 122, 157, 153, 157, 146, 146, 140, 131, 134, 138, 131, 115, + 63, 110, 134, 142, 139, 135, 110, 108, 115, 155, 210, 174, 124, 100, 108, 68, + 52, 41, 46, 48, 42, 45, 44, 42, 46, 63, 87, 111, 157, 206, 218, 216, + 201, 123, 122, 130, 134, 142, 147, 148, 142, 122, 57, 32, 28, 26, 29, 49, + 32, 73, 118, 116, 128, 124, 127, 124, 120, 97, 85, 51, 67, 116, 122, 107, + 112, 111, 99, 119, 118, 114, 92, 56, 102, 123, 126, 126, 120, 120, 120, 119, + 118, 111, 97, 57, 65, 96, 102, 106, 97, 95, 87, 97, 89, 73, 52, 29, + 5, 131, 146, 140, 104, 103, 102, 115, 95, 110, 112, 107, 85, 84, 122, 126, + 123, 122, 122, 97, 115, 84, 81, 51, 100, 126, 120, 120, 123, 120, 119, 116, + 118, 116, 114, 60, 20, 93, 114, 134, 115, 120, 118, 110, 108, 103, 100, 85, + 42, 65, 76, 102, 111, 116, 106, 112, 100, 104, 36, 22, 102, 127, 132, 130, + 124, 128, 130, 128, 126, 122, 99, 46, 92, 96, 122, 120, 127, 119, 110, 100, + 97, 83, 88, 46, 2, 99, 102, 95, 81, 92, 88, 85, 84, 83, 83, 85, + 64, 45, 83, 102, 80, 84, 61, 69, 76, 77, 69, 51, 14, 76, 76, 83, + 89, 84, 87, 84, 84, 83, 77, 51, 17, 64, 69, 68, 59, 56, 52, 57, + 61, 61, 64, 45, 22, 52, 85, 97, 97, 88, 79, 67, 72, 72, 61, 38, + 41, 67, 92, 89, 89, 60, 64, 60, 63, 63, 45, 42, 24, 88, 93, 71, + 83, 85, 81, 83, 71, 81, 72, 67, 40, 32, 69, 56, 57, 41, 33, 37, + 46, 41, 16, 22, 71, 108, 96, 111, 108, 108, 104, 106, 114, 71, 56, 14, + 60, 60, 68, 57, 42, 41, 38, 45, 56, 37, 52, 63, 8, 79, 96, 95, + 100, 92, 99, 88, 97, 93, 97, 75, 38, 46, 67, 67, 55, 61, 51, 52, + 55, 42, 46, 28, 28, 60, 45, 44, 33, 36, 40, 52, 55, 41, 40, 32, + 1, 55, 64, 75, 68, 53, 51, 53, 40, 36, 26, 6, 106, 111, 79, 79, + 80, 79, 80, 75, 75, 61, 65, 67, 53, 28, 29, 28, 18, 18, 22, 24, + 20, 18, 22, 17, 6, 20, 38, 16, 28, 42, 29, 30, 20, 13, 13, 10, + 6, 1, 45, 33, 30, 20, 162, 163, 165, 159, 171, 162, 161, 144, 118, 16, + 71, 128, 131, 134, 127, 130, 127, 130, 124, 93, 87, 29, 112, 153, 166, 162, + 154, 154, 157, 157, 155, 153, 115, 67, 146, 146, 146, 148, 147, 140, 143, 139, + 136, 136, 131, 126, 100, 103, 107, 103, 111, 107, 110, 119, 114, 115, 111, 40, + 166, 154, 154, 161, 150, 153, 153, 154, 147, 144, 135, 75, 140, 138, 130, 130, + 134, 123, 128, 122, 127, 126, 128, 97, 22, 138, 135, 128, 124, 120, 130, 119, + 115, 104, 124, 104, 103, 107, 91, 87, 87, 81, 84, 77, 76, 69, 46, 2, + 73, 153, 147, 148, 147, 153, 150, 151, 131, 130, 83, 2, 87, 138, 123, 126, + 140, 136, 127, 112, 115, 89, 83, 93, 91, 92, 73, 61, 53, 49, 53, 55, + 51, 49, 29, 1, 140, 140, 142, 135, 135, 132, 130, 127, 91, 97, 59, 115, + 151, 148, 142, 134, 138, 136, 131, 128, 130, 123, 115, 71, 77, 118, 126, 126, + 108, 85, 111, 104, 135, 198, 195, 155, 99, 124, 97, 57, 56, 52, 56, 53, + 55, 56, 60, 56, 91, 97, 139, 201, 217, 217, 218, 194, 122, 123, 130, 138, + 144, 150, 144, 132, 79, 32, 29, 28, 29, 28, 37, 41, 68, 106, 110, 111, + 111, 110, 103, 100, 104, 99, 64, 72, 116, 123, 103, 107, 114, 110, 110, 112, + 99, 88, 55, 80, 116, 122, 104, 100, 115, 119, 106, 107, 106, 84, 51, 61, + 69, 63, 63, 61, 68, 63, 53, 52, 41, 42, 26, 6, 116, 135, 140, 134, + 127, 126, 130, 130, 123, 123, 118, 119, 118, 84, 92, 96, 97, 97, 118, 115, + 106, 83, 46, 95, 123, 120, 123, 118, 119, 118, 120, 114, 114, 110, 73, 28, + 91, 95, 100, 102, 100, 100, 106, 97, 100, 85, 84, 37, 64, 71, 99, 96, + 93, 92, 91, 89, 84, 40, 0, 22, 68, 81, 71, 69, 80, 89, 83, 77, + 89, 79, 36, 49, 56, 63, 65, 75, 77, 72, 77, 76, 89, 80, 41, 25, + 99, 97, 100, 102, 93, 95, 93, 91, 87, 84, 79, 80, 53, 56, 64, 71, + 67, 61, 81, 80, 64, 69, 51, 12, 71, 69, 100, 85, 84, 87, 84, 83, + 81, 79, 55, 1, 53, 69, 51, 49, 53, 59, 57, 68, 61, 67, 38, 21, + 36, 75, 76, 65, 64, 69, 71, 61, 61, 65, 57, 36, 46, 64, 64, 52, + 52, 65, 55, 48, 53, 48, 44, 40, 83, 89, 88, 84, 80, 84, 83, 75, + 75, 79, 72, 37, 28, 55, 60, 61, 52, 32, 44, 45, 40, 18, 13, 76, + 110, 103, 104, 108, 108, 112, 106, 112, 85, 56, 14, 52, 57, 55, 37, 46, + 37, 36, 40, 36, 38, 44, 44, 16, 68, 81, 84, 63, 67, 76, 76, 77, + 69, 65, 57, 57, 60, 55, 52, 51, 48, 59, 49, 49, 44, 42, 42, 24, + 28, 32, 29, 33, 32, 34, 29, 52, 41, 34, 29, 0, 48, 57, 56, 60, + 56, 67, 40, 30, 33, 25, 6, 99, 97, 83, 72, 75, 67, 65, 65, 65, + 65, 61, 57, 48, 30, 37, 22, 30, 25, 24, 24, 22, 22, 18, 17, 6, + 24, 41, 45, 24, 20, 16, 13, 14, 13, 12, 10, 6, 0, 32, 36, 25, + 24, 153, 147, 147, 143, 144, 140, 143, 124, 88, 14, 63, 119, 115, 95, 122, + 124, 112, 106, 120, 100, 84, 26, 89, 153, 155, 155, 150, 124, 115, 110, 130, + 123, 99, 64, 107, 119, 120, 120, 118, 120, 126, 120, 120, 116, 118, 111, 114, + 83, 61, 48, 53, 73, 37, 28, 33, 24, 24, 37, 161, 126, 144, 92, 146, + 147, 146, 108, 147, 139, 128, 73, 131, 132, 123, 120, 115, 115, 103, 111, 111, + 111, 88, 45, 28, 92, 92, 97, 95, 91, 99, 93, 99, 93, 91, 87, 84, + 81, 81, 84, 77, 67, 68, 68, 61, 57, 57, 0, 32, 124, 132, 100, 110, + 138, 128, 119, 124, 120, 76, 36, 72, 119, 134, 130, 116, 118, 114, 110, 107, + 114, 76, 60, 52, 44, 41, 60, 63, 55, 37, 44, 41, 34, 25, 0, 126, + 92, 114, 107, 115, 120, 123, 126, 96, 87, 55, 108, 123, 130, 124, 118, 124, + 123, 119, 115, 122, 123, 114, 111, 108, 108, 77, 83, 108, 106, 97, 100, 102, + 186, 208, 171, 123, 112, 119, 88, 56, 44, 55, 55, 52, 52, 57, 83, 96, + 132, 190, 216, 218, 218, 214, 163, 122, 124, 132, 144, 146, 146, 136, 104, 38, + 29, 26, 25, 29, 32, 34, 41, 53, 89, 92, 87, 79, 93, 92, 83, 83, + 89, 77, 69, 103, 95, 99, 83, 83, 79, 76, 80, 80, 85, 48, 40, 40, + 55, 48, 48, 49, 57, 60, 80, 92, 65, 46, 52, 56, 56, 53, 51, 51, + 51, 41, 40, 40, 30, 33, 4, 18, 83, 97, 83, 85, 91, 104, 93, 97, + 99, 99, 97, 92, 102, 104, 106, 106, 111, 110, 111, 95, 81, 57, 81, 115, + 115, 119, 104, 103, 100, 99, 88, 95, 89, 68, 30, 52, 56, 52, 55, 55, + 59, 60, 65, 64, 65, 61, 37, 52, 28, 32, 32, 25, 21, 20, 25, 24, + 22, 6, 6, 10, 25, 10, 9, 20, 33, 17, 17, 30, 34, 38, 33, 12, + 26, 30, 30, 41, 59, 45, 56, 65, 64, 52, 0, 32, 53, 59, 59, 59, + 63, 65, 57, 59, 61, 57, 60, 56, 64, 64, 65, 61, 64, 49, 65, 57, + 68, 48, 28, 63, 64, 87, 83, 81, 80, 79, 73, 76, 75, 45, 22, 49, + 28, 33, 21, 22, 24, 30, 14, 13, 18, 28, 20, 18, 20, 24, 24, 25, + 28, 30, 34, 38, 51, 57, 57, 59, 60, 53, 53, 52, 52, 51, 48, 46, + 48, 44, 38, 80, 77, 75, 73, 63, 63, 63, 60, 56, 55, 41, 44, 42, + 42, 46, 38, 36, 30, 30, 28, 29, 14, 10, 73, 81, 100, 102, 95, 92, + 92, 97, 88, 67, 51, 18, 61, 48, 44, 41, 41, 37, 38, 38, 38, 37, + 40, 53, 22, 20, 21, 18, 17, 26, 30, 34, 34, 38, 48, 53, 48, 41, + 44, 45, 41, 42, 41, 42, 40, 41, 38, 36, 34, 40, 38, 37, 33, 37, + 34, 34, 26, 34, 34, 28, 0, 29, 41, 55, 29, 32, 38, 51, 37, 29, + 24, 5, 65, 99, 80, 69, 68, 68, 65, 60, 44, 42, 38, 32, 30, 32, + 20, 14, 28, 25, 21, 25, 22, 25, 20, 20, 8, 13, 22, 20, 16, 8, + 9, 8, 6, 6, 6, 5, 4, 0, 0, 0, 0, 0, 104, 96, 91, 84, + 71, 67, 64, 57, 51, 0, 25, 33, 37, 34, 40, 53, 51, 57, 73, 93, + 76, 25, 107, 73, 72, 68, 67, 89, 67, 55, 48, 83, 76, 42, 36, 29, + 36, 30, 29, 28, 34, 29, 28, 26, 29, 29, 29, 49, 59, 84, 84, 95, + 144, 122, 150, 124, 110, 16, 171, 128, 142, 111, 96, 87, 89, 93, 123, 128, + 122, 68, 84, 87, 91, 76, 72, 68, 57, 53, 46, 52, 38, 32, 21, 18, + 17, 16, 13, 13, 10, 9, 8, 9, 8, 5, 4, 9, 12, 4, 0, 2, + 8, 0, 0, 2, 9, 0, 37, 24, 28, 30, 33, 71, 112, 80, 96, 108, + 71, 4, 68, 48, 53, 48, 49, 49, 55, 42, 46, 44, 42, 45, 32, 38, + 72, 57, 85, 93, 106, 77, 108, 104, 95, 0, 142, 123, 122, 112, 104, 102, + 103, 85, 107, 91, 53, 96, 96, 106, 102, 100, 100, 103, 104, 107, 100, 108, + 103, 102, 99, 68, 51, 51, 52, 59, 100, 97, 106, 150, 198, 187, 128, 88, + 154, 112, 92, 95, 97, 102, 102, 100, 99, 120, 163, 201, 218, 218, 217, 216, + 202, 135, 122, 130, 143, 146, 143, 136, 111, 44, 29, 28, 26, 28, 33, 34, + 20, 42, 53, 48, 53, 59, 60, 60, 63, 64, 71, 80, 81, 76, 80, 64, + 65, 68, 61, 67, 73, 93, 89, 95, 56, 65, 115, 120, 108, 97, 77, 79, + 77, 72, 48, 41, 44, 8, 0, 29, 6, 4, 6, 18, 0, 4, 4, 0, + 0, 29, 29, 21, 20, 18, 24, 24, 21, 21, 25, 26, 28, 29, 32, 36, + 41, 48, 51, 56, 59, 65, 68, 77, 57, 63, 80, 77, 55, 56, 60, 57, + 42, 41, 46, 34, 24, 6, 18, 6, 29, 32, 16, 12, 24, 25, 14, 14, + 22, 25, 68, 83, 93, 97, 91, 103, 96, 99, 69, 64, 4, 18, 128, 139, + 95, 91, 116, 127, 81, 96, 95, 46, 21, 49, 118, 115, 71, 71, 73, 51, + 51, 46, 57, 34, 25, 6, 4, 2, 26, 6, 4, 5, 22, 14, 6, 12, + 28, 24, 24, 24, 33, 32, 29, 53, 45, 37, 38, 64, 34, 12, 55, 21, + 28, 21, 25, 22, 21, 18, 18, 13, 10, 22, 14, 34, 48, 55, 56, 61, + 75, 76, 69, 69, 49, 14, 72, 100, 108, 85, 92, 65, 51, 44, 29, 29, + 25, 24, 30, 25, 34, 20, 22, 32, 22, 29, 32, 34, 34, 28, 49, 44, + 59, 51, 49, 42, 51, 48, 45, 42, 44, 41, 36, 21, 12, 12, 9, 9, + 8, 9, 10, 17, 12, 17, 26, 33, 29, 46, 49, 45, 32, 53, 57, 34, + 14, 46, 34, 37, 34, 33, 30, 33, 41, 45, 48, 48, 64, 4, 37, 112, + 114, 72, 73, 65, 64, 55, 41, 21, 16, 12, 10, 9, 9, 9, 8, 6, + 6, 6, 4, 13, 12, 4, 2, 6, 4, 1, 0, 5, 2, 0, 1, 6, + 0, 0, 9, 9, 14, 13, 13, 14, 16, 17, 30, 24, 4, 63, 92, 65, + 56, 53, 49, 49, 49, 45, 44, 52, 41, 45, 17, 21, 29, 18, 17, 10, + 9, 8, 8, 9, 9, 9, 8, 8, 6, 6, 8, 8, 4, 4, 5, 4, + 2, 2, 2, 2, 1, 1, 1, 84, 97, 100, 99, 114, 110, 120, 123, 115, + 1, 71, 146, 143, 99, 111, 123, 104, 71, 60, 55, 45, 32, 48, 91, 96, + 87, 102, 111, 143, 127, 120, 119, 104, 32, 106, 136, 140, 135, 127, 139, 135, + 140, 140, 140, 79, 24, 93, 171, 174, 161, 158, 154, 151, 154, 166, 151, 104, + 21, 167, 131, 139, 174, 167, 150, 128, 126, 91, 71, 44, 63, 65, 76, 83, + 89, 89, 88, 97, 103, 107, 80, 88, 93, 153, 165, 165, 169, 170, 167, 162, + 163, 171, 162, 138, 130, 162, 158, 153, 165, 163, 159, 139, 120, 161, 136, 42, + 4, 99, 158, 157, 130, 112, 87, 77, 72, 36, 26, 20, 2, 28, 67, 75, + 83, 77, 91, 97, 102, 102, 110, 89, 20, 77, 155, 169, 174, 171, 170, 155, + 165, 157, 122, 95, 0, 138, 127, 150, 146, 150, 143, 139, 122, 112, 89, 52, + 20, 18, 18, 18, 21, 21, 20, 24, 22, 22, 22, 29, 32, 34, 88, 99, + 120, 111, 110, 148, 136, 126, 108, 154, 199, 147, 99, 115, 135, 131, 144, 143, + 134, 140, 151, 162, 195, 213, 216, 220, 218, 214, 213, 153, 124, 128, 139, 142, + 138, 130, 97, 42, 29, 28, 24, 34, 25, 25, 34, 55, 57, 68, 99, 115, + 108, 91, 89, 75, 69, 69, 59, 55, 53, 80, 118, 135, 131, 142, 114, 115, + 124, 103, 100, 52, 93, 140, 126, 108, 108, 123, 112, 116, 87, 81, 73, 12, + 20, 151, 150, 110, 102, 115, 116, 112, 104, 124, 103, 52, 16, 40, 97, 116, + 108, 111, 114, 122, 111, 111, 108, 102, 88, 106, 111, 118, 115, 110, 84, 64, + 52, 37, 38, 42, 33, 37, 67, 63, 76, 69, 80, 81, 89, 88, 81, 69, + 9, 26, 80, 89, 95, 89, 87, 88, 84, 88, 91, 84, 92, 81, 110, 123, + 127, 123, 122, 116, 104, 97, 69, 8, 118, 124, 108, 122, 112, 118, 110, 119, + 115, 96, 57, 16, 110, 127, 128, 118, 119, 122, 114, 87, 100, 102, 63, 52, + 6, 20, 130, 124, 81, 73, 122, 119, 88, 73, 91, 87, 45, 12, 52, 116, + 111, 67, 67, 63, 56, 48, 41, 36, 6, 16, 45, 49, 53, 46, 60, 64, + 59, 63, 67, 57, 0, 41, 116, 115, 112, 114, 116, 108, 108, 104, 81, 51, + 13, 80, 111, 93, 92, 107, 106, 106, 104, 84, 57, 46, 9, 42, 139, 131, + 84, 79, 77, 71, 60, 32, 16, 20, 10, 10, 10, 12, 9, 9, 8, 8, + 5, 8, 6, 6, 5, 10, 17, 67, 79, 83, 81, 68, 91, 76, 33, 12, + 52, 96, 91, 84, 42, 40, 21, 16, 16, 10, 13, 6, 25, 45, 92, 91, + 91, 93, 91, 96, 88, 89, 68, 64, 6, 93, 130, 123, 108, 123, 111, 112, + 111, 110, 102, 100, 77, 72, 92, 73, 59, 68, 81, 72, 69, 59, 48, 12, + 0, 18, 77, 106, 69, 69, 73, 91, 69, 72, 64, 10, 0, 59, 75, 71, + 46, 73, 64, 64, 22, 14, 24, 4, 71, 72, 76, 76, 83, 80, 80, 79, + 80, 83, 76, 49, 30, 21, 24, 49, 42, 37, 41, 40, 29, 22, 13, 16, + 6, 4, 16, 38, 41, 52, 40, 45, 46, 61, 61, 68, 57, 72, 77, 83, + 83, 83, 182, 173, 175, 173, 169, 169, 124, 127, 115, 2, 123, 148, 163, 162, + 158, 159, 155, 153, 155, 147, 85, 30, 118, 173, 175, 173, 167, 165, 174, 169, + 159, 123, 114, 36, 148, 158, 157, 142, 140, 159, 153, 147, 147, 142, 89, 17, + 139, 177, 157, 163, 171, 175, 157, 162, 148, 158, 116, 24, 178, 162, 134, 143, + 107, 135, 148, 162, 169, 151, 131, 139, 159, 148, 158, 167, 155, 155, 165, 158, + 159, 142, 153, 143, 107, 159, 148, 144, 148, 151, 134, 127, 118, 128, 142, 114, + 119, 136, 153, 155, 144, 150, 142, 138, 146, 155, 91, 1, 120, 159, 177, 151, + 154, 122, 134, 134, 126, 107, 72, 16, 95, 166, 163, 163, 158, 158, 112, 146, + 148, 118, 100, 14, 140, 170, 161, 153, 143, 159, 153, 146, 148, 120, 91, 0, + 154, 127, 144, 146, 144, 142, 144, 142, 122, 116, 52, 46, 147, 135, 115, 119, + 139, 139, 115, 115, 114, 111, 108, 102, 104, 93, 144, 158, 155, 146, 143, 144, + 131, 107, 107, 193, 167, 116, 85, 159, 170, 179, 193, 201, 206, 208, 212, 214, + 217, 216, 210, 213, 206, 158, 127, 134, 138, 134, 130, 106, 67, 40, 30, 26, + 24, 33, 24, 36, 46, 60, 56, 51, 92, 132, 150, 143, 138, 142, 150, 144, + 148, 127, 114, 116, 128, 140, 142, 131, 126, 132, 124, 122, 114, 106, 60, 88, + 140, 136, 122, 112, 111, 107, 119, 126, 95, 81, 0, 154, 157, 140, 142, 138, + 139, 136, 118, 116, 111, 108, 114, 14, 147, 142, 131, 132, 126, 130, 119, 122, + 122, 123, 120, 95, 75, 115, 120, 116, 111, 96, 97, 108, 115, 71, 38, 64, + 120, 123, 128, 116, 123, 123, 119, 112, 112, 100, 72, 5, 131, 126, 132, 128, + 118, 115, 108, 100, 104, 100, 81, 85, 126, 144, 140, 130, 130, 120, 122, 124, + 97, 73, 4, 134, 120, 120, 114, 107, 107, 104, 106, 111, 106, 60, 18, 122, + 135, 118, 96, 107, 99, 118, 114, 102, 87, 67, 57, 2, 134, 139, 127, 73, + 88, 115, 111, 89, 88, 89, 89, 52, 14, 112, 123, 106, 103, 107, 100, 114, + 75, 57, 60, 5, 52, 114, 123, 127, 118, 112, 106, 103, 107, 103, 71, 20, + 104, 123, 119, 111, 102, 102, 102, 104, 100, 99, 57, 12, 91, 118, 88, 97, + 85, 87, 88, 96, 99, 87, 53, 8, 120, 142, 118, 114, 123, 119, 115, 84, + 100, 96, 93, 95, 106, 116, 104, 102, 106, 99, 111, 102, 104, 103, 85, 83, + 91, 81, 77, 79, 87, 77, 97, 88, 84, 38, 13, 64, 119, 93, 84, 89, + 68, 79, 73, 55, 48, 33, 34, 77, 102, 106, 114, 106, 106, 97, 102, 89, + 84, 72, 51, 16, 110, 120, 128, 115, 115, 107, 87, 83, 91, 77, 75, 88, + 89, 80, 51, 52, 72, 75, 41, 45, 36, 69, 14, 0, 80, 107, 77, 75, + 69, 65, 72, 65, 69, 75, 22, 0, 67, 68, 61, 69, 83, 67, 68, 64, + 26, 25, 4, 96, 76, 76, 76, 75, 71, 49, 63, 72, 63, 57, 41, 28, + 18, 34, 40, 22, 26, 20, 21, 18, 26, 24, 5, 1, 34, 65, 77, 77, + 81, 73, 64, 55, 68, 53, 63, 57, 59, 48, 65, 84, 72, 195, 187, 175, + 179, 183, 177, 181, 128, 122, 2, 130, 151, 162, 162, 151, 155, 136, 144, 143, + 154, 96, 32, 153, 179, 175, 170, 169, 170, 173, 175, 171, 131, 119, 40, 146, + 170, 175, 182, 173, 174, 169, 165, 151, 144, 99, 20, 136, 177, 163, 165, 146, + 148, 157, 153, 130, 124, 110, 22, 178, 154, 161, 128, 142, 142, 147, 151, 130, + 135, 150, 143, 104, 106, 126, 128, 130, 108, 103, 135, 108, 111, 155, 100, 157, + 154, 165, 163, 155, 161, 158, 161, 153, 144, 140, 96, 148, 175, 166, 155, 161, + 158, 157, 161, 148, 150, 99, 2, 134, 162, 179, 151, 126, 154, 124, 148, 127, + 112, 83, 33, 134, 163, 157, 161, 159, 154, 151, 151, 148, 138, 100, 16, 143, + 171, 138, 143, 148, 150, 144, 159, 142, 131, 100, 0, 150, 123, 142, 142, 139, + 139, 138, 138, 128, 112, 53, 142, 147, 138, 118, 108, 131, 135, 119, 112, 127, + 115, 124, 110, 71, 144, 161, 151, 134, 131, 136, 146, 143, 100, 87, 162, 179, + 126, 81, 115, 119, 136, 155, 182, 194, 202, 205, 204, 205, 210, 194, 173, 148, + 122, 135, 131, 118, 99, 67, 41, 30, 30, 28, 26, 28, 25, 33, 46, 56, + 56, 63, 60, 91, 135, 150, 148, 147, 142, 139, 143, 144, 123, 118, 88, 143, + 142, 124, 126, 134, 136, 134, 126, 96, 116, 57, 84, 130, 127, 120, 122, 119, + 111, 115, 119, 97, 80, 18, 158, 155, 154, 134, 128, 127, 124, 114, 114, 112, + 124, 114, 13, 144, 130, 123, 124, 134, 128, 126, 134, 123, 122, 103, 60, 103, + 150, 131, 119, 116, 111, 111, 120, 115, 76, 52, 114, 120, 116, 111, 108, 118, + 124, 110, 108, 99, 91, 81, 21, 131, 114, 116, 119, 132, 126, 112, 107, 100, + 89, 64, 112, 147, 128, 119, 128, 120, 104, 96, 106, 81, 69, 0, 93, 119, + 111, 100, 92, 97, 110, 110, 123, 102, 61, 13, 110, 132, 106, 100, 83, 92, + 95, 103, 85, 68, 69, 59, 4, 122, 112, 119, 103, 106, 96, 92, 100, 95, + 114, 93, 57, 14, 118, 122, 99, 92, 92, 89, 89, 96, 64, 68, 6, 99, + 123, 120, 115, 104, 115, 114, 107, 87, 85, 60, 13, 107, 122, 111, 100, 99, + 89, 89, 89, 88, 80, 55, 10, 89, 112, 99, 99, 96, 83, 84, 81, 89, + 93, 53, 12, 110, 131, 130, 128, 116, 110, 96, 115, 93, 88, 79, 84, 106, + 111, 122, 92, 102, 106, 102, 100, 87, 100, 92, 71, 55, 102, 111, 92, 88, + 71, 68, 87, 75, 45, 13, 59, 116, 97, 88, 84, 76, 85, 73, 75, 52, + 34, 40, 81, 111, 102, 92, 89, 89, 89, 89, 95, 100, 56, 59, 13, 99, + 118, 126, 119, 115, 85, 85, 114, 110, 107, 96, 69, 45, 84, 84, 57, 53, + 44, 41, 26, 46, 51, 13, 8, 97, 97, 73, 76, 67, 83, 83, 76, 69, + 68, 24, 0, 51, 60, 57, 46, 41, 41, 37, 52, 42, 25, 5, 107, 85, + 65, 76, 59, 55, 46, 55, 55, 57, 55, 41, 21, 26, 44, 36, 24, 9, + 4, 4, 6, 13, 22, 1, 5, 55, 96, 97, 64, 69, 63, 64, 69, 55, + 34, 41, 46, 51, 89, 107, 131, 136, 165, 166, 179, 178, 155, 167, 181, 131, + 122, 2, 127, 162, 162, 147, 144, 153, 147, 146, 139, 143, 104, 37, 130, 182, + 173, 175, 166, 165, 163, 166, 174, 132, 122, 51, 102, 171, 173, 163, 167, 175, + 173, 153, 148, 143, 97, 17, 147, 166, 175, 150, 159, 155, 161, 165, 140, 146, + 122, 10, 175, 155, 157, 128, 136, 140, 155, 147, 146, 143, 95, 100, 104, 158, + 122, 122, 150, 146, 144, 142, 144, 112, 107, 65, 158, 158, 165, 159, 150, 154, + 143, 140, 151, 150, 136, 93, 165, 173, 157, 150, 150, 153, 155, 148, 142, 159, + 93, 0, 138, 163, 158, 131, 130, 151, 150, 158, 158, 144, 87, 14, 154, 162, + 166, 157, 163, 158, 151, 154, 148, 119, 102, 13, 139, 165, 138, 147, 146, 154, + 157, 157, 144, 120, 97, 0, 151, 131, 143, 147, 144, 138, 140, 135, 136, 119, + 53, 143, 134, 135, 131, 139, 135, 116, 128, 127, 118, 111, 107, 68, 88, 153, + 155, 150, 131, 135, 138, 128, 140, 103, 88, 144, 183, 131, 80, 88, 103, 114, + 119, 126, 151, 162, 173, 170, 166, 161, 140, 128, 130, 124, 107, 87, 57, 44, + 32, 28, 26, 26, 36, 21, 26, 45, 46, 52, 55, 69, 64, 55, 96, 154, + 154, 153, 138, 139, 128, 128, 118, 114, 77, 126, 150, 124, 128, 143, 130, 126, + 122, 126, 102, 116, 69, 71, 131, 128, 122, 132, 112, 122, 116, 118, 103, 79, + 14, 106, 151, 139, 142, 151, 135, 130, 126, 115, 111, 115, 75, 17, 104, 123, + 128, 135, 127, 126, 118, 119, 120, 104, 93, 61, 111, 146, 119, 118, 128, 135, + 134, 120, 107, 79, 40, 112, 127, 118, 111, 110, 106, 119, 115, 99, 95, 88, + 80, 5, 114, 108, 119, 104, 124, 134, 126, 107, 103, 80, 46, 110, 150, 127, + 124, 127, 118, 102, 104, 93, 87, 75, 2, 111, 126, 126, 89, 102, 106, 102, + 115, 112, 112, 64, 12, 114, 131, 103, 97, 92, 95, 92, 81, 89, 69, 64, + 61, 4, 97, 114, 83, 107, 108, 99, 97, 95, 93, 95, 89, 67, 13, 104, + 116, 93, 85, 99, 102, 97, 95, 83, 69, 1, 107, 127, 107, 106, 106, 93, + 89, 84, 77, 81, 60, 4, 103, 122, 106, 91, 99, 85, 83, 87, 84, 88, + 56, 9, 88, 112, 110, 96, 107, 107, 103, 87, 87, 73, 55, 10, 100, 127, + 130, 124, 127, 119, 126, 127, 123, 115, 76, 106, 123, 106, 87, 80, 85, 87, + 84, 69, 75, 79, 60, 44, 65, 116, 111, 67, 83, 83, 106, 72, 76, 46, + 17, 64, 111, 95, 75, 91, 92, 81, 84, 75, 59, 37, 37, 80, 112, 99, + 88, 88, 97, 99, 85, 84, 95, 56, 60, 2, 97, 112, 112, 118, 122, 84, + 91, 99, 107, 102, 92, 63, 71, 95, 76, 38, 57, 33, 44, 40, 44, 46, + 12, 0, 76, 85, 76, 75, 65, 72, 77, 76, 75, 60, 24, 0, 75, 69, + 44, 53, 52, 45, 36, 49, 57, 26, 5, 102, 69, 69, 75, 55, 75, 48, + 46, 65, 59, 48, 44, 20, 13, 44, 32, 8, 13, 17, 10, 9, 9, 17, + 1, 10, 76, 99, 65, 56, 63, 41, 55, 85, 60, 42, 52, 40, 51, 93, + 131, 77, 30, 177, 177, 183, 162, 170, 173, 177, 130, 122, 2, 127, 159, 162, + 142, 140, 143, 151, 136, 138, 144, 110, 44, 124, 170, 171, 169, 175, 177, 165, + 162, 166, 135, 124, 51, 157, 175, 171, 163, 165, 173, 173, 154, 150, 147, 99, + 16, 144, 167, 158, 162, 163, 161, 165, 148, 146, 139, 115, 12, 173, 146, 153, + 131, 139, 136, 159, 148, 151, 140, 85, 108, 159, 154, 158, 155, 142, 143, 146, + 138, 142, 134, 134, 57, 157, 169, 163, 154, 155, 147, 159, 140, 146, 144, 134, + 92, 166, 171, 147, 151, 154, 148, 142, 153, 144, 143, 99, 2, 138, 162, 175, + 150, 154, 132, 127, 127, 147, 115, 88, 1, 146, 153, 170, 158, 163, 155, 153, + 153, 128, 128, 103, 13, 148, 163, 143, 153, 153, 148, 144, 153, 148, 130, 97, + 0, 144, 147, 143, 143, 142, 139, 140, 136, 128, 116, 61, 96, 124, 144, 134, + 119, 136, 120, 122, 122, 116, 114, 106, 60, 124, 154, 150, 146, 140, 128, 134, + 138, 143, 116, 87, 138, 186, 144, 110, 72, 75, 73, 79, 95, 114, 116, 120, + 123, 122, 120, 118, 95, 76, 57, 45, 37, 34, 32, 28, 24, 28, 34, 22, + 48, 52, 53, 55, 60, 63, 69, 68, 57, 89, 144, 139, 131, 115, 127, 128, + 127, 116, 95, 77, 131, 143, 124, 135, 130, 131, 118, 116, 130, 115, 118, 76, + 60, 120, 127, 118, 116, 119, 115, 108, 111, 93, 81, 12, 110, 150, 148, 157, + 139, 108, 106, 116, 107, 120, 120, 77, 14, 114, 132, 127, 130, 115, 120, 120, + 120, 106, 106, 97, 57, 110, 150, 127, 115, 116, 110, 108, 123, 108, 77, 41, + 96, 126, 119, 123, 118, 106, 114, 102, 96, 97, 84, 79, 2, 103, 118, 119, + 103, 119, 130, 124, 103, 89, 81, 46, 112, 153, 115, 118, 108, 116, 102, 103, + 87, 92, 72, 4, 122, 124, 118, 92, 99, 110, 112, 106, 112, 104, 67, 9, + 127, 132, 100, 92, 92, 81, 92, 92, 76, 75, 68, 57, 1, 104, 135, 112, + 110, 104, 99, 89, 110, 93, 96, 92, 56, 8, 104, 120, 89, 88, 91, 89, + 87, 92, 64, 67, 1, 107, 122, 93, 107, 91, 84, 88, 79, 83, 68, 60, + 14, 111, 122, 100, 95, 81, 87, 83, 80, 72, 87, 56, 8, 87, 108, 106, + 88, 81, 88, 81, 83, 87, 76, 56, 6, 114, 138, 128, 132, 111, 115, 114, + 119, 112, 111, 52, 104, 112, 106, 92, 84, 76, 80, 77, 77, 77, 60, 69, + 41, 106, 123, 120, 64, 93, 89, 95, 71, 71, 60, 21, 65, 115, 97, 89, + 92, 95, 79, 73, 84, 73, 36, 18, 68, 110, 84, 76, 73, 79, 85, 79, + 73, 99, 67, 60, 5, 110, 115, 111, 116, 110, 92, 88, 83, 116, 96, 92, + 57, 76, 103, 65, 37, 46, 25, 30, 40, 37, 42, 14, 0, 67, 95, 69, + 67, 64, 64, 67, 63, 57, 63, 25, 0, 55, 59, 59, 55, 64, 56, 37, + 42, 46, 26, 5, 110, 68, 67, 75, 49, 79, 46, 46, 45, 51, 44, 40, + 18, 22, 37, 25, 4, 10, 2, 4, 1, 5, 22, 1, 33, 89, 89, 49, + 52, 64, 52, 44, 68, 33, 29, 44, 36, 71, 108, 107, 24, 32, 181, 183, + 162, 166, 170, 154, 171, 142, 116, 2, 132, 163, 162, 142, 142, 144, 144, 138, + 138, 139, 114, 49, 118, 173, 175, 174, 167, 173, 173, 162, 163, 148, 123, 56, + 157, 171, 170, 167, 159, 161, 162, 153, 151, 143, 97, 12, 148, 174, 162, 159, + 161, 158, 167, 155, 144, 146, 123, 12, 177, 166, 146, 148, 138, 139, 138, 150, + 154, 142, 81, 151, 162, 154, 153, 146, 142, 154, 159, 139, 154, 144, 146, 73, + 165, 157, 155, 148, 154, 140, 159, 139, 148, 143, 120, 102, 170, 166, 148, 155, + 147, 154, 151, 163, 143, 144, 104, 0, 136, 165, 175, 148, 138, 135, 132, 130, + 159, 112, 93, 10, 148, 166, 161, 154, 159, 148, 147, 153, 130, 134, 104, 10, + 148, 170, 144, 144, 150, 150, 150, 153, 147, 128, 100, 0, 148, 138, 144, 148, + 139, 138, 142, 132, 122, 118, 64, 99, 122, 128, 124, 126, 138, 127, 116, 122, + 112, 120, 111, 52, 124, 155, 155, 136, 140, 127, 136, 144, 131, 124, 85, 126, + 185, 155, 124, 103, 77, 64, 60, 60, 55, 55, 53, 53, 57, 53, 49, 46, + 41, 40, 36, 34, 30, 30, 29, 34, 18, 30, 53, 60, 67, 68, 68, 65, + 67, 72, 72, 59, 91, 151, 130, 134, 134, 131, 122, 140, 126, 112, 59, 127, + 144, 124, 139, 123, 115, 115, 114, 127, 116, 115, 83, 42, 123, 134, 136, 132, + 130, 126, 118, 111, 100, 81, 2, 111, 144, 134, 146, 107, 102, 114, 116, 108, + 111, 116, 107, 9, 146, 138, 116, 138, 120, 110, 108, 110, 106, 122, 100, 55, + 118, 140, 123, 123, 111, 111, 104, 118, 112, 80, 45, 95, 124, 138, 147, 115, + 103, 96, 99, 97, 100, 92, 76, 0, 143, 112, 112, 104, 116, 115, 124, 104, + 91, 87, 45, 111, 151, 127, 122, 104, 114, 99, 99, 85, 96, 80, 0, 130, + 124, 126, 93, 97, 97, 116, 116, 115, 111, 67, 12, 123, 136, 102, 92, 87, + 81, 77, 93, 71, 77, 69, 63, 2, 142, 142, 112, 119, 85, 99, 114, 87, + 87, 100, 89, 60, 5, 111, 116, 91, 85, 89, 128, 93, 100, 64, 67, 0, + 108, 124, 95, 103, 83, 93, 81, 77, 79, 88, 63, 22, 106, 118, 91, 100, + 84, 81, 81, 83, 76, 89, 56, 5, 85, 111, 96, 80, 81, 88, 106, 84, + 83, 87, 57, 5, 110, 142, 126, 123, 110, 111, 110, 110, 114, 104, 49, 106, + 123, 93, 115, 97, 83, 77, 77, 72, 67, 64, 68, 38, 104, 114, 110, 69, + 99, 103, 69, 72, 52, 44, 20, 68, 115, 85, 85, 87, 67, 60, 57, 75, + 79, 37, 25, 81, 108, 97, 76, 73, 71, 72, 69, 83, 93, 71, 56, 6, + 110, 126, 112, 112, 85, 85, 87, 83, 111, 91, 93, 52, 76, 100, 71, 29, + 45, 25, 32, 37, 40, 41, 12, 0, 81, 88, 73, 65, 61, 75, 73, 67, + 52, 64, 25, 0, 71, 61, 49, 46, 38, 67, 44, 44, 40, 26, 8, 96, + 80, 77, 46, 33, 81, 44, 44, 41, 59, 33, 40, 17, 17, 29, 22, 14, + 36, 21, 22, 8, 6, 14, 0, 44, 92, 81, 45, 49, 51, 45, 59, 76, + 33, 30, 34, 34, 63, 108, 46, 38, 33, 181, 177, 161, 169, 170, 153, 174, + 136, 123, 0, 130, 158, 161, 142, 144, 140, 151, 134, 142, 143, 118, 60, 88, + 163, 178, 170, 173, 170, 165, 161, 162, 158, 124, 64, 123, 174, 159, 167, 170, + 163, 166, 157, 148, 153, 106, 16, 148, 174, 159, 157, 169, 161, 161, 144, 131, + 136, 124, 9, 175, 162, 166, 143, 139, 139, 143, 153, 153, 139, 77, 157, 162, + 155, 148, 142, 144, 169, 140, 136, 131, 146, 158, 65, 161, 153, 158, 154, 153, + 147, 163, 138, 144, 142, 92, 106, 171, 174, 150, 169, 151, 150, 158, 166, 139, + 144, 115, 0, 140, 162, 169, 148, 153, 139, 136, 126, 153, 120, 96, 22, 143, + 166, 157, 157, 151, 144, 162, 153, 140, 132, 110, 12, 150, 171, 136, 151, 150, + 146, 147, 157, 140, 128, 99, 0, 147, 136, 144, 143, 134, 134, 139, 134, 135, + 112, 68, 99, 146, 115, 128, 131, 146, 123, 135, 131, 103, 124, 100, 46, 139, + 163, 154, 143, 140, 124, 128, 143, 128, 127, 87, 118, 181, 163, 139, 127, 112, + 96, 71, 61, 56, 52, 49, 48, 46, 44, 44, 41, 38, 37, 36, 34, 34, + 37, 37, 14, 28, 57, 69, 73, 72, 84, 85, 88, 89, 76, 76, 68, 85, + 162, 136, 126, 138, 131, 128, 127, 126, 118, 51, 128, 138, 124, 124, 126, 115, + 130, 119, 119, 118, 119, 85, 37, 107, 131, 136, 122, 118, 112, 112, 111, 102, + 84, 12, 123, 143, 138, 142, 103, 104, 122, 107, 108, 119, 123, 111, 9, 142, + 131, 119, 138, 115, 112, 114, 103, 100, 119, 99, 45, 111, 154, 122, 115, 115, + 112, 108, 120, 111, 80, 49, 87, 132, 135, 116, 104, 114, 96, 112, 110, 106, + 93, 84, 14, 138, 104, 120, 99, 114, 97, 135, 102, 92, 84, 45, 112, 150, + 119, 126, 108, 108, 111, 89, 85, 84, 76, 0, 114, 123, 124, 92, 106, 92, + 102, 103, 118, 96, 68, 8, 122, 136, 107, 100, 88, 85, 84, 96, 75, 71, + 73, 63, 1, 134, 150, 107, 114, 85, 102, 95, 102, 88, 89, 87, 61, 9, + 103, 127, 92, 92, 115, 112, 97, 91, 65, 68, 8, 112, 124, 88, 93, 81, + 81, 79, 88, 79, 87, 64, 9, 104, 122, 100, 102, 96, 102, 99, 102, 77, + 92, 60, 4, 93, 104, 89, 87, 116, 81, 80, 81, 83, 93, 59, 9, 142, + 139, 128, 114, 112, 124, 108, 112, 111, 111, 56, 111, 108, 112, 93, 110, 89, + 75, 77, 64, 65, 63, 69, 34, 110, 124, 106, 64, 93, 87, 69, 68, 71, + 48, 22, 71, 120, 73, 76, 64, 56, 56, 55, 57, 72, 38, 42, 77, 108, + 107, 75, 71, 67, 83, 68, 69, 89, 72, 57, 5, 103, 126, 108, 106, 92, + 84, 83, 87, 97, 91, 88, 48, 87, 107, 60, 32, 28, 20, 28, 36, 29, + 57, 12, 5, 87, 92, 69, 69, 72, 68, 55, 72, 60, 63, 26, 0, 77, + 68, 46, 51, 46, 38, 45, 44, 36, 28, 8, 84, 87, 56, 64, 48, 83, + 41, 41, 42, 51, 34, 36, 12, 17, 22, 24, 25, 17, 22, 22, 5, 8, + 8, 0, 44, 100, 68, 46, 55, 57, 51, 60, 96, 37, 34, 36, 32, 76, + 107, 41, 63, 63, 183, 163, 161, 162, 167, 151, 181, 134, 127, 0, 130, 155, + 162, 142, 154, 139, 143, 131, 136, 135, 127, 84, 93, 162, 178, 178, 174, 163, + 178, 170, 163, 162, 124, 65, 83, 173, 173, 163, 163, 163, 155, 163, 151, 144, + 111, 12, 157, 171, 159, 158, 153, 157, 157, 142, 131, 139, 124, 6, 175, 162, + 154, 139, 144, 135, 161, 154, 147, 139, 69, 163, 151, 147, 146, 146, 165, 144, + 138, 143, 146, 131, 143, 38, 166, 157, 153, 153, 136, 150, 163, 132, 153, 132, + 93, 126, 177, 165, 151, 165, 154, 147, 153, 167, 138, 139, 112, 0, 146, 154, + 174, 147, 138, 130, 138, 131, 166, 138, 115, 12, 151, 167, 153, 153, 143, 143, + 162, 148, 140, 126, 115, 9, 140, 170, 147, 144, 144, 140, 144, 157, 134, 132, + 96, 0, 148, 128, 140, 136, 131, 128, 136, 131, 131, 118, 72, 52, 108, 155, + 140, 131, 104, 124, 108, 114, 107, 127, 104, 41, 151, 161, 158, 134, 147, 126, + 127, 143, 122, 124, 92, 102, 171, 163, 162, 132, 126, 114, 97, 81, 77, 63, + 57, 52, 49, 48, 46, 49, 48, 52, 49, 51, 46, 42, 51, 13, 53, 73, + 75, 77, 96, 99, 106, 110, 110, 79, 77, 60, 84, 167, 136, 144, 114, 138, + 144, 114, 122, 116, 51, 123, 138, 126, 128, 119, 115, 136, 119, 122, 115, 123, + 89, 41, 110, 130, 132, 122, 115, 115, 114, 115, 100, 83, 9, 124, 140, 135, + 154, 102, 106, 114, 104, 110, 108, 114, 79, 9, 106, 128, 111, 146, 118, 118, + 112, 104, 104, 123, 100, 40, 111, 154, 116, 115, 116, 108, 116, 107, 106, 84, + 48, 99, 131, 139, 104, 104, 97, 108, 106, 97, 96, 89, 83, 1, 124, 108, + 115, 99, 119, 96, 123, 100, 92, 80, 28, 107, 150, 123, 128, 108, 106, 97, + 93, 91, 88, 76, 0, 118, 114, 136, 89, 96, 92, 92, 102, 122, 102, 69, + 6, 124, 142, 108, 111, 84, 92, 81, 104, 75, 68, 71, 64, 0, 112, 122, + 88, 124, 87, 100, 88, 103, 87, 91, 84, 60, 8, 112, 131, 92, 84, 112, + 91, 92, 92, 77, 71, 0, 107, 116, 95, 80, 79, 79, 76, 103, 80, 100, + 67, 2, 91, 119, 112, 87, 95, 89, 85, 80, 76, 99, 61, 4, 89, 104, + 87, 108, 120, 99, 79, 80, 81, 85, 60, 6, 126, 131, 128, 110, 112, 127, + 108, 108, 107, 110, 52, 116, 122, 96, 99, 103, 84, 68, 88, 65, 64, 69, + 61, 30, 112, 116, 69, 107, 67, 71, 77, 69, 71, 52, 28, 45, 114, 75, + 68, 59, 53, 56, 52, 56, 73, 41, 25, 72, 103, 114, 72, 63, 65, 89, + 68, 69, 100, 60, 60, 2, 104, 127, 110, 84, 85, 81, 83, 111, 97, 85, + 85, 40, 87, 99, 80, 29, 28, 21, 26, 37, 30, 38, 14, 0, 61, 84, + 56, 52, 49, 63, 55, 75, 52, 84, 26, 0, 64, 67, 45, 38, 41, 46, + 42, 36, 45, 30, 9, 36, 102, 52, 48, 44, 67, 38, 38, 38, 60, 32, + 29, 8, 24, 16, 2, 6, 6, 20, 8, 5, 13, 2, 0, 49, 93, 59, + 37, 55, 42, 49, 48, 83, 44, 38, 34, 26, 71, 111, 45, 61, 5, 183, + 162, 163, 166, 169, 142, 181, 135, 118, 0, 128, 151, 166, 139, 159, 136, 142, + 134, 134, 123, 138, 88, 68, 157, 181, 179, 181, 163, 175, 183, 158, 169, 120, + 72, 55, 179, 177, 150, 150, 159, 166, 166, 148, 144, 114, 10, 159, 177, 159, + 158, 157, 154, 147, 150, 132, 139, 124, 6, 173, 162, 165, 138, 138, 138, 147, + 153, 148, 136, 55, 169, 146, 151, 138, 169, 155, 142, 138, 148, 154, 134, 130, + 33, 158, 161, 150, 138, 140, 151, 170, 128, 148, 131, 84, 136, 178, 169, 150, + 166, 147, 150, 151, 170, 140, 140, 118, 0, 140, 153, 174, 132, 143, 132, 144, + 132, 179, 120, 110, 1, 158, 165, 151, 151, 139, 140, 166, 146, 136, 131, 112, + 8, 136, 169, 143, 144, 142, 134, 144, 163, 136, 138, 99, 0, 144, 139, 136, + 131, 124, 140, 131, 130, 123, 110, 75, 64, 108, 157, 158, 115, 131, 123, 104, + 112, 103, 142, 99, 33, 147, 161, 166, 138, 153, 151, 124, 138, 120, 115, 92, + 96, 161, 169, 158, 154, 134, 122, 111, 104, 92, 80, 64, 68, 65, 64, 63, + 63, 51, 55, 52, 49, 42, 44, 56, 10, 57, 79, 72, 92, 93, 95, 116, + 127, 126, 106, 77, 69, 76, 167, 132, 150, 116, 143, 130, 116, 120, 104, 41, + 127, 135, 123, 127, 119, 116, 144, 115, 123, 114, 135, 99, 46, 112, 126, 114, + 116, 116, 116, 108, 118, 102, 80, 2, 128, 131, 131, 165, 102, 103, 108, 103, + 110, 106, 119, 88, 5, 114, 132, 114, 144, 116, 118, 110, 104, 99, 130, 93, + 33, 112, 163, 114, 116, 114, 106, 103, 104, 102, 84, 52, 88, 134, 111, 104, + 102, 102, 99, 100, 104, 97, 87, 81, 2, 139, 108, 110, 97, 130, 95, 135, + 96, 87, 75, 26, 103, 148, 112, 135, 102, 102, 102, 89, 81, 93, 79, 0, + 134, 114, 128, 88, 97, 119, 122, 102, 130, 103, 72, 4, 138, 150, 114, 112, + 81, 85, 84, 115, 87, 67, 75, 64, 0, 114, 136, 104, 124, 87, 95, 89, + 112, 84, 93, 85, 64, 4, 115, 124, 91, 87, 119, 87, 96, 91, 69, 71, + 0, 114, 131, 92, 79, 80, 73, 76, 111, 80, 72, 65, 2, 88, 122, 123, + 85, 81, 80, 77, 71, 72, 110, 61, 2, 85, 96, 87, 110, 132, 80, 79, + 77, 81, 102, 63, 4, 130, 143, 138, 108, 107, 132, 106, 106, 106, 107, 32, + 122, 119, 114, 85, 114, 83, 69, 75, 61, 64, 61, 63, 24, 118, 116, 69, + 115, 65, 71, 69, 68, 68, 52, 30, 36, 114, 72, 60, 56, 88, 57, 52, + 56, 63, 41, 26, 60, 76, 122, 68, 65, 64, 79, 67, 65, 87, 65, 56, + 2, 97, 130, 103, 85, 83, 83, 81, 112, 95, 89, 87, 30, 92, 100, 83, + 29, 20, 20, 30, 25, 26, 32, 17, 0, 55, 83, 42, 38, 38, 45, 52, + 84, 51, 60, 29, 0, 57, 59, 48, 37, 42, 41, 40, 44, 46, 29, 20, + 16, 103, 57, 45, 44, 59, 38, 37, 37, 40, 33, 26, 9, 8, 16, 1, + 32, 2, 0, 2, 5, 5, 2, 0, 42, 85, 45, 42, 57, 45, 37, 56, + 91, 29, 28, 40, 22, 92, 106, 9, 8, 0, 9, 12, 9, 12, 12, 56, + 59, 12, 14, 0, 34, 80, 80, 75, 80, 34, 30, 73, 80, 22, 10, 68, + 85, 88, 60, 85, 40, 44, 44, 76, 42, 30, 26, 0, 85, 110, 104, 32, + 108, 34, 36, 41, 77, 77, 16, 38, 91, 88, 91, 93, 96, 91, 60, 51, + 81, 77, 84, 16, 76, 53, 42, 44, 85, 89, 60, 48, 42, 38, 42, 24, + 89, 108, 56, 59, 60, 49, 95, 51, 67, 49, 42, 21, 59, 102, 52, 53, + 55, 100, 92, 57, 93, 45, 48, 2, 99, 103, 68, 110, 130, 71, 56, 97, + 61, 89, 32, 34, 112, 120, 114, 52, 42, 51, 80, 52, 83, 46, 48, 12, + 99, 106, 118, 111, 96, 100, 96, 69, 68, 57, 49, 0, 104, 108, 102, 106, + 76, 71, 68, 99, 130, 73, 71, 20, 99, 131, 112, 73, 73, 103, 77, 72, + 65, 65, 44, 72, 139, 119, 80, 116, 104, 76, 80, 77, 107, 139, 68, 1, + 114, 93, 116, 114, 91, 77, 83, 108, 112, 104, 21, 118, 120, 87, 91, 88, + 88, 119, 92, 76, 87, 115, 24, 115, 116, 96, 119, 119, 111, 100, 93, 95, + 77, 77, 71, 2, 76, 136, 106, 110, 84, 108, 75, 114, 84, 80, 72, 26, + 120, 126, 99, 128, 108, 92, 88, 83, 80, 83, 68, 10, 119, 122, 130, 127, + 93, 96, 106, 89, 122, 69, 14, 159, 140, 142, 118, 161, 140, 136, 112, 122, + 116, 118, 104, 60, 87, 139, 128, 111, 104, 108, 130, 107, 127, 92, 53, 69, + 159, 175, 159, 181, 142, 136, 138, 162, 130, 127, 38, 106, 136, 139, 132, 110, + 106, 111, 142, 108, 107, 111, 52, 93, 140, 161, 135, 166, 114, 112, 102, 111, + 100, 115, 110, 30, 131, 116, 119, 114, 136, 119, 112, 115, 135, 96, 114, 30, + 162, 144, 140, 140, 142, 126, 128, 148, 112, 112, 102, 9, 110, 153, 136, 157, + 108, 114, 110, 126, 112, 112, 49, 134, 146, 146, 144, 143, 124, 128, 150, 148, + 122, 115, 96, 5, 144, 134, 150, 151, 122, 134, 112, 119, 119, 139, 116, 5, + 170, 153, 178, 143, 135, 147, 122, 119, 123, 119, 60, 93, 148, 123, 161, 147, + 112, 147, 148, 103, 122, 112, 10, 153, 191, 174, 157, 150, 154, 193, 170, 150, + 150, 134, 131, 5, 124, 131, 135, 103, 104, 99, 111, 106, 118, 119, 107, 34, + 153, 157, 136, 158, 140, 154, 124, 134, 123, 124, 123, 17, 162, 174, 163, 165, + 175, 132, 162, 165, 144, 139, 134, 92, 0, 170, 181, 174, 169, 170, 153, 150, + 147, 140, 144, 12, 163, 151, 167, 144, 128, 157, 140, 159, 139, 128, 37, 159, + 179, 155, 150, 135, 150, 123, 163, 177, 151, 142, 112, 76, 96, 171, 167, 171, + 170, 155, 146, 147, 146, 151, 135, 41, 166, 169, 151, 167, 147, 170, 148, 147, + 147, 131, 6, 187, 185, 182, 153, 146, 175, 171, 170, 185, 157, 138, 136, 14, + 154, 138, 139, 153, 150, 178, 167, 155, 130, 135, 124, 14, 153, 154, 169, 157, + 174, 139, 148, 147, 136, 139, 115, 0, 173, 179, 158, 159, 146, 150, 163, 177, + 162, 144, 116, 73, 115, 185, 173, 161, 155, 183, 155, 155, 144, 151, 163, 76, + 88, 187, 174, 198, 174, 68, 57, 63, 12, 12, 45, 55, 20, 13, 0, 41, + 89, 71, 65, 84, 41, 29, 68, 79, 21, 9, 68, 72, 85, 73, 55, 38, + 45, 44, 71, 52, 34, 26, 0, 83, 97, 92, 37, 91, 37, 34, 55, 67, + 64, 26, 44, 87, 85, 87, 69, 67, 48, 51, 71, 53, 65, 75, 28, 72, + 61, 44, 44, 52, 89, 79, 59, 44, 37, 41, 30, 89, 112, 61, 59, 71, + 57, 93, 61, 72, 49, 37, 20, 59, 102, 55, 53, 55, 95, 88, 60, 89, + 44, 45, 1, 97, 99, 87, 104, 123, 77, 56, 93, 65, 80, 25, 40, 93, + 111, 64, 42, 49, 57, 65, 67, 53, 42, 42, 17, 95, 100, 97, 131, 106, + 92, 96, 95, 65, 59, 51, 0, 102, 106, 112, 100, 76, 72, 77, 92, 112, + 89, 71, 22, 93, 126, 110, 77, 76, 99, 103, 72, 61, 67, 41, 72, 127, + 103, 80, 91, 92, 96, 77, 77, 99, 126, 61, 0, 112, 100, 103, 111, 92, + 81, 87, 100, 110, 102, 26, 124, 116, 93, 96, 80, 111, 111, 84, 87, 77, + 103, 36, 110, 116, 110, 114, 97, 97, 99, 92, 104, 76, 79, 63, 1, 85, + 122, 96, 83, 95, 97, 80, 100, 83, 83, 75, 37, 115, 128, 102, 120, 116, + 100, 106, 104, 92, 81, 79, 9, 115, 118, 116, 99, 95, 112, 95, 97, 112, + 75, 20, 148, 139, 140, 126, 138, 140, 132, 118, 130, 116, 124, 106, 55, 88, + 140, 127, 100, 110, 124, 122, 104, 123, 99, 52, 75, 155, 166, 154, 165, 140, + 132, 136, 157, 130, 124, 46, 111, 135, 138, 124, 107, 110, 111, 134, 110, 104, + 103, 49, 92, 140, 153, 135, 153, 122, 115, 108, 108, 102, 114, 108, 45, 116, + 120, 123, 138, 136, 124, 111, 112, 124, 104, 111, 32, 157, 148, 131, 131, 119, + 119, 130, 144, 106, 112, 103, 8, 116, 142, 128, 154, 103, 114, 114, 118, 110, + 107, 48, 130, 143, 146, 142, 128, 143, 144, 144, 131, 119, 112, 96, 5, 144, + 134, 147, 142, 123, 130, 126, 107, 128, 130, 110, 6, 163, 163, 159, 139, 127, + 148, 123, 124, 119, 116, 57, 100, 144, 144, 153, 127, 112, 144, 147, 106, 122, + 108, 12, 147, 183, 170, 167, 136, 140, 173, 166, 147, 150, 142, 135, 24, 131, + 127, 135, 103, 97, 100, 100, 111, 115, 115, 106, 42, 150, 155, 130, 148, 148, + 154, 126, 130, 131, 123, 103, 18, 158, 162, 161, 163, 157, 136, 158, 161, 148, + 139, 124, 93, 0, 174, 181, 170, 165, 155, 151, 150, 139, 138, 138, 1, 154, + 159, 165, 136, 124, 153, 139, 157, 140, 126, 48, 155, 179, 159, 144, 132, 143, + 124, 134, 136, 138, 140, 110, 71, 99, 175, 161, 165, 169, 151, 144, 148, 154, + 150, 139, 51, 162, 163, 154, 157, 159, 169, 148, 147, 144, 110, 6, 181, 178, + 173, 159, 147, 177, 173, 162, 162, 159, 136, 124, 14, 150, 139, 150, 151, 150, + 151, 171, 165, 142, 139, 119, 8, 151, 154, 147, 162, 170, 158, 136, 143, 138, + 130, 112, 0, 178, 175, 154, 158, 148, 151, 155, 177, 163, 158, 112, 67, 120, + 181, 170, 163, 154, 177, 157, 154, 146, 147, 161, 72, 87, 190, 175, 194, 177, + 22, 46, 24, 12, 12, 38, 56, 20, 14, 2, 49, 81, 65, 73, 73, 45, + 28, 51, 73, 22, 9, 67, 79, 76, 79, 45, 48, 38, 48, 65, 51, 36, + 25, 0, 81, 80, 45, 75, 57, 37, 37, 44, 75, 64, 24, 46, 89, 72, + 49, 49, 72, 69, 69, 61, 64, 60, 81, 24, 64, 60, 46, 42, 44, 64, + 81, 75, 55, 38, 38, 32, 89, 114, 59, 63, 60, 60, 68, 75, 64, 51, + 48, 18, 64, 84, 60, 53, 73, 93, 67, 79, 81, 44, 45, 1, 83, 97, + 72, 71, 68, 63, 57, 92, 69, 75, 24, 40, 100, 106, 60, 36, 57, 36, + 42, 41, 42, 48, 42, 17, 91, 100, 99, 100, 116, 100, 80, 91, 68, 59, + 51, 0, 99, 114, 107, 92, 83, 71, 72, 75, 72, 81, 72, 28, 85, 124, + 106, 77, 73, 84, 104, 68, 68, 68, 40, 75, 124, 114, 110, 97, 93, 95, + 93, 80, 93, 112, 75, 2, 102, 103, 110, 102, 100, 85, 89, 96, 104, 96, + 30, 118, 116, 89, 87, 110, 89, 77, 91, 88, 72, 96, 40, 104, 115, 103, + 99, 106, 102, 96, 96, 91, 76, 76, 80, 13, 73, 116, 92, 91, 96, 93, + 85, 93, 81, 80, 75, 41, 111, 126, 102, 119, 107, 107, 96, 99, 93, 88, + 76, 8, 112, 116, 107, 99, 111, 89, 96, 88, 107, 64, 26, 140, 138, 139, + 132, 123, 114, 116, 127, 116, 122, 119, 104, 52, 92, 135, 124, 104, 110, 138, + 124, 108, 114, 102, 52, 107, 155, 155, 153, 158, 147, 138, 142, 155, 130, 127, + 55, 107, 136, 136, 124, 107, 114, 112, 131, 108, 102, 97, 45, 96, 136, 148, + 136, 148, 131, 112, 108, 103, 100, 112, 108, 49, 124, 124, 119, 146, 122, 120, + 114, 112, 123, 106, 114, 46, 146, 144, 128, 134, 151, 153, 151, 140, 107, 114, + 91, 16, 115, 134, 124, 126, 102, 108, 115, 104, 107, 107, 64, 123, 143, 144, + 142, 132, 128, 123, 130, 120, 116, 116, 93, 17, 148, 139, 157, 116, 107, 114, + 120, 107, 122, 119, 110, 8, 161, 151, 165, 155, 140, 153, 126, 123, 126, 99, + 65, 112, 136, 150, 139, 112, 119, 144, 147, 110, 114, 107, 14, 140, 183, 171, + 163, 157, 143, 151, 143, 148, 150, 139, 127, 10, 130, 136, 119, 100, 100, 103, + 103, 107, 119, 115, 89, 46, 146, 155, 142, 140, 128, 148, 126, 124, 127, 126, + 124, 2, 154, 159, 162, 171, 140, 136, 150, 163, 144, 142, 124, 91, 0, 163, + 186, 169, 165, 154, 155, 154, 159, 131, 142, 1, 148, 147, 132, 124, 151, 147, + 143, 154, 136, 127, 55, 153, 177, 158, 167, 130, 124, 127, 128, 132, 135, 138, + 96, 61, 104, 170, 158, 161, 166, 154, 147, 150, 148, 151, 135, 65, 154, 161, + 159, 161, 158, 163, 150, 142, 147, 134, 8, 179, 170, 167, 155, 148, 174, 174, + 163, 155, 155, 134, 130, 0, 153, 130, 135, 154, 150, 147, 144, 169, 154, 139, + 115, 10, 150, 154, 147, 190, 159, 135, 162, 158, 131, 132, 110, 0, 173, 175, + 169, 162, 157, 148, 165, 169, 161, 148, 112, 63, 124, 139, 169, 163, 148, 144, + 146, 150, 150, 147, 150, 63, 103, 189, 178, 190, 185, 16, 36, 25, 10, 12, + 33, 45, 16, 14, 0, 51, 92, 61, 60, 72, 68, 33, 45, 59, 22, 8, + 65, 75, 67, 42, 41, 61, 51, 52, 56, 64, 33, 25, 2, 79, 73, 40, + 65, 42, 40, 37, 49, 57, 41, 25, 52, 84, 67, 92, 60, 79, 68, 64, + 60, 49, 63, 68, 26, 63, 76, 55, 42, 44, 44, 51, 64, 44, 40, 37, + 33, 92, 123, 48, 53, 57, 75, 65, 59, 49, 48, 48, 17, 61, 91, 56, + 57, 81, 71, 73, 75, 59, 45, 44, 2, 93, 97, 91, 89, 85, 59, 76, + 71, 81, 52, 21, 40, 89, 55, 36, 29, 30, 24, 29, 28, 30, 44, 36, + 16, 87, 99, 89, 93, 110, 112, 83, 72, 73, 65, 42, 0, 97, 106, 104, + 89, 87, 99, 83, 81, 76, 80, 72, 32, 83, 104, 103, 80, 76, 80, 96, + 80, 65, 51, 34, 73, 119, 108, 112, 120, 102, 116, 106, 92, 88, 103, 72, + 0, 99, 107, 95, 97, 97, 87, 83, 96, 89, 91, 34, 114, 114, 91, 91, + 89, 89, 76, 79, 88, 68, 88, 44, 102, 110, 107, 110, 104, 100, 97, 99, + 103, 77, 77, 79, 4, 81, 100, 84, 77, 93, 88, 83, 93, 75, 81, 75, + 48, 107, 126, 106, 118, 123, 89, 100, 99, 93, 84, 68, 16, 99, 115, 124, + 104, 83, 110, 97, 102, 103, 60, 24, 127, 140, 138, 130, 115, 120, 123, 116, + 115, 123, 122, 106, 44, 96, 134, 119, 100, 114, 119, 114, 104, 111, 102, 52, + 84, 153, 162, 146, 136, 136, 142, 151, 150, 131, 126, 61, 106, 132, 143, 111, + 112, 110, 107, 139, 108, 89, 91, 41, 96, 138, 135, 130, 135, 140, 112, 116, + 106, 102, 112, 108, 53, 118, 123, 124, 130, 123, 122, 118, 112, 119, 106, 114, + 51, 144, 144, 128, 135, 131, 135, 124, 122, 122, 120, 85, 22, 112, 126, 135, + 123, 100, 111, 112, 100, 108, 110, 67, 123, 140, 143, 139, 146, 124, 123, 123, + 128, 110, 114, 96, 9, 136, 131, 120, 142, 100, 134, 134, 108, 103, 126, 112, + 9, 150, 154, 163, 143, 136, 162, 131, 127, 123, 114, 68, 115, 122, 143, 135, + 114, 116, 138, 138, 106, 115, 103, 12, 146, 178, 167, 143, 153, 148, 143, 140, + 150, 153, 138, 127, 16, 102, 134, 100, 95, 108, 95, 110, 112, 116, 106, 97, + 52, 139, 130, 126, 132, 126, 142, 132, 130, 131, 123, 126, 0, 153, 158, 158, + 169, 136, 140, 148, 155, 151, 135, 124, 88, 0, 165, 186, 163, 161, 155, 155, + 154, 159, 128, 131, 1, 142, 147, 130, 118, 151, 124, 138, 131, 140, 124, 64, + 147, 165, 148, 139, 132, 124, 128, 128, 132, 131, 143, 102, 55, 112, 167, 159, + 148, 161, 161, 146, 147, 151, 144, 138, 68, 155, 161, 158, 147, 154, 155, 150, + 147, 143, 136, 9, 170, 167, 162, 155, 150, 173, 178, 179, 169, 157, 135, 127, + 2, 147, 134, 146, 122, 130, 146, 144, 140, 148, 139, 122, 14, 150, 157, 143, + 163, 130, 138, 131, 132, 131, 124, 106, 0, 148, 175, 159, 159, 158, 155, 161, + 163, 159, 144, 104, 53, 130, 143, 143, 163, 151, 151, 153, 151, 143, 134, 135, + 59, 104, 183, 177, 178, 185, 9, 10, 10, 10, 12, 38, 38, 12, 12, 0, + 48, 56, 61, 59, 67, 67, 38, 34, 46, 21, 6, 61, 84, 75, 48, 60, + 75, 60, 55, 59, 42, 30, 25, 0, 77, 79, 36, 71, 40, 41, 36, 41, + 61, 40, 28, 52, 80, 83, 64, 61, 75, 81, 67, 67, 67, 59, 68, 26, + 36, 65, 59, 42, 46, 44, 45, 45, 51, 37, 38, 36, 89, 99, 57, 75, + 63, 79, 72, 61, 52, 48, 38, 16, 63, 87, 57, 76, 73, 67, 75, 77, + 49, 44, 44, 9, 88, 83, 80, 69, 57, 73, 60, 68, 85, 49, 18, 37, + 91, 44, 20, 21, 28, 37, 20, 24, 33, 49, 36, 20, 84, 97, 93, 89, + 110, 88, 89, 75, 75, 55, 42, 0, 93, 93, 111, 97, 73, 81, 85, 92, + 88, 77, 75, 36, 49, 100, 108, 92, 72, 73, 91, 84, 61, 51, 34, 73, + 118, 111, 91, 100, 110, 100, 97, 102, 88, 104, 60, 0, 104, 112, 111, 93, + 99, 91, 91, 95, 93, 91, 38, 107, 111, 108, 92, 97, 83, 72, 72, 88, + 89, 89, 44, 100, 103, 102, 100, 106, 103, 107, 106, 103, 76, 77, 64, 5, + 69, 104, 81, 87, 88, 77, 87, 87, 81, 77, 73, 49, 69, 119, 103, 123, + 123, 95, 100, 87, 89, 73, 67, 16, 107, 108, 104, 92, 110, 112, 115, 110, + 107, 59, 24, 79, 143, 135, 124, 118, 122, 119, 116, 118, 124, 102, 103, 40, + 103, 132, 120, 108, 116, 108, 106, 107, 108, 93, 51, 83, 153, 143, 154, 131, + 153, 142, 147, 135, 130, 130, 69, 81, 130, 142, 110, 112, 119, 120, 132, 107, + 84, 84, 42, 96, 132, 124, 127, 120, 123, 118, 116, 120, 100, 114, 107, 57, + 119, 124, 123, 127, 119, 119, 123, 112, 111, 108, 110, 57, 136, 143, 136, 132, + 108, 130, 123, 126, 122, 111, 100, 20, 115, 130, 120, 114, 97, 108, 104, 99, + 103, 99, 65, 81, 135, 140, 139, 142, 122, 114, 132, 119, 110, 110, 91, 10, + 132, 143, 118, 128, 127, 136, 138, 103, 116, 120, 106, 14, 146, 150, 159, 136, + 148, 153, 139, 127, 112, 111, 69, 110, 132, 139, 135, 132, 111, 134, 132, 106, + 114, 103, 21, 135, 182, 163, 148, 150, 142, 150, 147, 151, 150, 146, 119, 30, + 93, 128, 97, 104, 114, 108, 112, 107, 110, 103, 100, 56, 81, 148, 115, 155, + 124, 139, 135, 130, 132, 132, 114, 0, 150, 158, 158, 142, 153, 154, 144, 157, + 153, 142, 131, 84, 0, 167, 179, 162, 161, 155, 157, 154, 138, 126, 136, 21, + 142, 138, 122, 118, 155, 151, 128, 132, 140, 123, 64, 89, 154, 167, 166, 127, + 128, 128, 127, 123, 128, 138, 99, 51, 111, 166, 161, 153, 151, 155, 144, 144, + 148, 147, 132, 72, 154, 161, 158, 147, 148, 166, 151, 146, 143, 127, 13, 166, + 169, 162, 150, 155, 147, 153, 155, 150, 155, 134, 120, 25, 138, 124, 130, 100, + 115, 118, 115, 118, 140, 122, 111, 16, 142, 150, 135, 122, 157, 131, 167, 135, + 148, 139, 93, 0, 124, 171, 161, 167, 162, 155, 159, 161, 155, 144, 102, 49, + 110, 138, 139, 147, 148, 158, 148, 140, 138, 147, 122, 51, 97, 182, 179, 173, + 170, 17, 20, 21, 13, 26, 29, 42, 22, 12, 0, 40, 75, 51, 56, 69, + 61, 36, 52, 53, 17, 6, 59, 77, 80, 53, 55, 68, 67, 64, 56, 53, + 48, 25, 0, 73, 81, 49, 69, 38, 37, 42, 45, 57, 26, 24, 41, 64, + 87, 72, 72, 55, 63, 61, 65, 55, 68, 46, 29, 36, 56, 63, 55, 48, + 48, 42, 55, 42, 37, 36, 36, 76, 118, 65, 75, 65, 65, 79, 63, 49, + 48, 33, 12, 67, 91, 53, 79, 63, 68, 83, 75, 48, 40, 42, 4, 87, + 87, 88, 79, 69, 77, 81, 68, 80, 48, 17, 42, 85, 22, 42, 40, 45, + 41, 16, 18, 30, 42, 33, 24, 51, 99, 93, 84, 107, 102, 110, 97, 72, + 53, 56, 0, 91, 99, 111, 95, 85, 81, 79, 77, 80, 77, 73, 40, 44, + 84, 91, 103, 71, 60, 83, 80, 57, 49, 30, 64, 116, 106, 103, 100, 100, + 93, 99, 84, 87, 104, 52, 0, 102, 103, 103, 91, 100, 92, 84, 81, 100, + 95, 46, 72, 96, 118, 103, 115, 91, 89, 97, 103, 67, 88, 49, 71, 97, + 102, 100, 97, 97, 95, 96, 79, 75, 79, 52, 2, 68, 107, 91, 73, 71, + 80, 73, 73, 73, 76, 72, 52, 60, 111, 119, 119, 88, 99, 95, 84, 88, + 75, 77, 14, 102, 106, 99, 84, 89, 79, 99, 97, 115, 59, 25, 75, 142, + 135, 124, 116, 118, 120, 128, 124, 126, 108, 87, 33, 99, 128, 114, 110, 128, + 107, 104, 106, 106, 89, 49, 79, 143, 142, 131, 136, 130, 138, 144, 132, 128, + 130, 71, 45, 122, 136, 107, 116, 118, 130, 124, 96, 88, 79, 34, 96, 126, + 128, 134, 120, 116, 119, 100, 103, 99, 111, 107, 60, 111, 120, 126, 126, 122, + 120, 119, 123, 114, 107, 112, 59, 80, 143, 138, 123, 127, 134, 122, 131, 107, + 111, 104, 17, 114, 130, 115, 93, 96, 110, 106, 102, 99, 102, 87, 80, 130, + 136, 138, 134, 124, 138, 111, 115, 107, 100, 89, 12, 134, 130, 110, 128, 135, + 106, 126, 106, 106, 115, 112, 17, 139, 159, 147, 134, 130, 131, 142, 132, 110, + 115, 64, 108, 126, 150, 132, 131, 108, 131, 107, 108, 116, 104, 22, 140, 173, + 162, 134, 123, 154, 127, 153, 148, 154, 140, 134, 18, 110, 122, 99, 85, 104, + 112, 104, 108, 102, 92, 95, 57, 83, 144, 158, 126, 118, 111, 116, 139, 126, + 120, 87, 28, 140, 158, 139, 146, 148, 144, 154, 144, 147, 143, 124, 81, 0, + 163, 171, 159, 161, 155, 154, 157, 136, 123, 124, 20, 132, 136, 118, 111, 153, + 150, 146, 126, 132, 122, 97, 85, 153, 167, 166, 126, 122, 122, 123, 122, 127, + 135, 95, 37, 140, 162, 158, 171, 150, 143, 127, 144, 147, 151, 136, 81, 87, + 159, 158, 154, 150, 140, 143, 143, 142, 99, 16, 177, 165, 161, 151, 154, 155, + 154, 150, 148, 154, 128, 119, 24, 131, 123, 112, 128, 112, 114, 132, 115, 135, + 126, 115, 17, 139, 130, 173, 158, 155, 163, 159, 132, 148, 123, 89, 1, 100, + 170, 161, 163, 159, 159, 163, 158, 155, 142, 97, 36, 111, 130, 136, 138, 142, + 142, 151, 142, 142, 144, 124, 44, 114, 179, 165, 161, 158, 53, 41, 34, 28, + 28, 28, 24, 28, 13, 4, 41, 55, 52, 49, 51, 60, 53, 60, 55, 20, + 5, 52, 69, 59, 59, 49, 52, 52, 57, 44, 53, 41, 25, 0, 68, 72, + 60, 45, 51, 67, 61, 63, 42, 28, 25, 63, 67, 80, 80, 68, 40, 38, + 41, 45, 46, 37, 41, 45, 40, 37, 42, 53, 57, 56, 52, 44, 37, 34, + 34, 41, 84, 112, 71, 81, 68, 77, 69, 49, 59, 46, 46, 10, 64, 84, + 52, 80, 81, 81, 71, 75, 60, 40, 44, 4, 87, 87, 89, 76, 72, 85, + 77, 81, 81, 36, 16, 36, 36, 17, 16, 41, 32, 41, 18, 16, 18, 20, + 48, 24, 40, 85, 95, 88, 85, 81, 85, 79, 60, 56, 45, 1, 87, 83, + 106, 88, 88, 83, 79, 75, 76, 72, 71, 69, 68, 45, 49, 55, 61, 61, + 71, 81, 65, 61, 33, 77, 111, 95, 95, 87, 97, 97, 96, 97, 100, 103, + 69, 2, 96, 103, 103, 93, 102, 100, 84, 96, 96, 91, 51, 53, 61, 92, + 89, 108, 100, 81, 76, 99, 79, 55, 51, 56, 63, 96, 69, 71, 75, 72, + 75, 73, 72, 79, 76, 21, 75, 99, 72, 71, 67, 77, 72, 69, 79, 72, + 72, 77, 53, 71, 100, 103, 77, 73, 87, 81, 91, 85, 76, 10, 97, 103, + 87, 103, 95, 95, 89, 95, 87, 55, 65, 61, 138, 134, 127, 126, 120, 120, + 119, 120, 120, 106, 100, 29, 102, 124, 114, 102, 107, 112, 102, 103, 106, 92, + 45, 123, 148, 128, 126, 136, 138, 138, 126, 135, 135, 128, 79, 67, 112, 134, + 106, 123, 120, 114, 111, 107, 88, 76, 32, 97, 123, 116, 102, 103, 103, 104, + 102, 104, 108, 111, 107, 64, 71, 122, 126, 126, 123, 115, 114, 122, 110, 108, + 107, 79, 75, 134, 135, 126, 128, 143, 130, 123, 100, 111, 100, 22, 108, 111, + 96, 93, 96, 97, 87, 99, 75, 92, 104, 75, 93, 120, 122, 128, 107, 110, + 106, 104, 107, 115, 83, 14, 124, 144, 150, 128, 134, 132, 100, 130, 114, 106, + 100, 16, 140, 148, 140, 155, 126, 126, 132, 128, 120, 89, 52, 118, 126, 147, + 131, 122, 111, 124, 114, 112, 114, 96, 25, 131, 178, 165, 154, 144, 146, 153, + 151, 147, 143, 140, 124, 20, 102, 91, 88, 85, 79, 95, 91, 91, 96, 92, + 84, 68, 75, 140, 111, 104, 107, 102, 114, 116, 118, 122, 120, 6, 143, 153, + 142, 140, 153, 148, 143, 144, 144, 142, 118, 76, 0, 166, 178, 158, 157, 159, + 155, 155, 159, 118, 135, 4, 128, 128, 116, 107, 150, 150, 150, 124, 127, 118, + 103, 85, 146, 158, 155, 114, 116, 132, 116, 120, 124, 132, 115, 37, 126, 162, + 166, 128, 143, 142, 124, 132, 144, 151, 140, 111, 80, 115, 157, 159, 157, 155, + 153, 140, 142, 130, 17, 171, 166, 158, 147, 150, 154, 157, 155, 151, 153, 118, + 120, 4, 131, 115, 112, 115, 107, 110, 120, 140, 131, 127, 107, 21, 139, 178, + 142, 158, 154, 162, 131, 150, 150, 123, 84, 1, 64, 162, 166, 166, 161, 157, + 157, 158, 155, 128, 93, 32, 112, 135, 132, 138, 135, 138, 138, 140, 138, 139, + 131, 36, 166, 182, 169, 162, 161, 21, 26, 18, 25, 25, 36, 29, 16, 12, + 0, 34, 34, 36, 36, 37, 36, 41, 34, 28, 20, 4, 51, 52, 48, 44, + 45, 44, 44, 53, 40, 41, 25, 24, 4, 61, 64, 63, 63, 60, 53, 61, + 60, 40, 26, 30, 48, 63, 71, 68, 42, 45, 32, 32, 38, 45, 36, 34, + 33, 37, 38, 38, 49, 42, 44, 42, 41, 32, 37, 33, 42, 80, 79, 72, + 60, 52, 57, 61, 46, 45, 46, 46, 9, 61, 84, 73, 56, 52, 68, 77, + 68, 56, 45, 44, 5, 80, 85, 95, 76, 80, 88, 84, 79, 55, 42, 13, + 45, 36, 8, 13, 9, 17, 12, 14, 16, 16, 14, 18, 21, 51, 36, 44, + 48, 48, 48, 51, 56, 61, 48, 37, 4, 80, 85, 88, 84, 80, 56, 76, + 49, 53, 56, 68, 52, 57, 61, 69, 61, 63, 67, 67, 87, 65, 46, 25, + 72, 77, 88, 79, 77, 77, 80, 81, 84, 76, 71, 69, 2, 93, 92, 97, + 91, 88, 85, 87, 87, 84, 79, 76, 77, 83, 68, 65, 69, 71, 68, 81, + 75, 81, 77, 75, 79, 77, 73, 65, 81, 80, 69, 81, 83, 81, 79, 77, + 6, 61, 89, 83, 71, 59, 60, 65, 67, 68, 69, 76, 72, 75, 80, 81, + 83, 81, 81, 84, 87, 87, 77, 64, 21, 89, 93, 89, 84, 79, 73, 83, + 68, 63, 56, 48, 60, 83, 128, 136, 97, 116, 116, 122, 104, 106, 100, 100, + 22, 99, 95, 97, 89, 93, 92, 100, 102, 104, 92, 45, 92, 136, 126, 124, + 114, 116, 116, 111, 103, 92, 93, 79, 65, 107, 118, 114, 108, 106, 106, 107, + 108, 79, 75, 28, 97, 126, 120, 115, 118, 111, 116, 110, 115, 119, 111, 100, + 103, 71, 77, 84, 111, 83, 87, 114, 116, 115, 118, 103, 97, 69, 91, 139, + 130, 127, 126, 96, 99, 112, 100, 80, 36, 97, 114, 100, 89, 84, 83, 77, + 79, 89, 76, 77, 88, 102, 106, 118, 112, 115, 110, 112, 115, 115, 112, 91, + 16, 115, 135, 143, 131, 96, 135, 132, 134, 114, 114, 110, 24, 135, 148, 134, + 118, 140, 139, 136, 135, 114, 111, 61, 119, 120, 118, 111, 122, 107, 106, 114, + 112, 110, 100, 21, 135, 169, 154, 108, 144, 146, 112, 134, 142, 140, 135, 61, + 26, 57, 89, 96, 73, 69, 91, 79, 80, 83, 92, 96, 72, 75, 96, 100, + 97, 103, 107, 110, 108, 112, 112, 116, 2, 134, 148, 147, 143, 142, 142, 140, + 128, 136, 135, 112, 72, 0, 157, 175, 158, 157, 155, 155, 155, 159, 115, 116, + 30, 120, 124, 114, 106, 102, 115, 110, 111, 79, 79, 104, 92, 95, 103, 106, + 124, 126, 124, 126, 123, 130, 127, 102, 33, 73, 138, 136, 111, 115, 138, 135, + 118, 127, 130, 134, 116, 93, 100, 112, 112, 118, 118, 123, 127, 142, 124, 18, + 132, 165, 161, 155, 155, 151, 154, 148, 151, 153, 126, 118, 9, 127, 118, 107, + 106, 106, 122, 123, 123, 124, 122, 112, 26, 131, 175, 136, 154, 104, 150, 148, + 112, 122, 138, 76, 2, 53, 130, 158, 111, 120, 135, 154, 151, 135, 131, 81, + 26, 111, 136, 136, 135, 134, 134, 134, 139, 138, 134, 128, 32, 154, 181, 165, + 154, 153, 8, 8, 10, 8, 8, 8, 10, 8, 2, 0, 9, 10, 10, 10, + 13, 12, 12, 12, 14, 12, 5, 16, 20, 18, 18, 16, 16, 14, 14, 14, + 14, 14, 12, 0, 14, 16, 16, 20, 20, 17, 17, 24, 21, 16, 36, 21, + 37, 42, 20, 18, 32, 24, 21, 25, 21, 21, 18, 21, 18, 18, 21, 22, + 24, 25, 26, 29, 30, 38, 30, 34, 52, 46, 40, 36, 40, 44, 37, 36, + 42, 36, 24, 8, 28, 44, 53, 42, 46, 45, 51, 45, 46, 41, 40, 6, + 73, 84, 83, 81, 69, 67, 75, 65, 40, 38, 10, 57, 20, 6, 12, 8, + 9, 10, 14, 14, 12, 18, 14, 17, 20, 22, 18, 30, 32, 34, 36, 37, + 40, 42, 40, 1, 26, 38, 45, 29, 29, 29, 30, 24, 24, 21, 30, 29, + 21, 22, 30, 30, 32, 24, 59, 61, 60, 38, 24, 44, 52, 51, 49, 49, + 64, 59, 49, 44, 44, 38, 20, 40, 42, 48, 57, 64, 53, 55, 60, 60, + 60, 61, 64, 61, 67, 69, 73, 69, 69, 69, 71, 69, 77, 67, 64, 63, + 77, 68, 64, 59, 76, 60, 55, 53, 77, 53, 13, 10, 59, 46, 46, 49, + 33, 41, 28, 26, 30, 37, 32, 32, 34, 33, 33, 33, 45, 49, 55, 59, + 75, 63, 60, 21, 30, 33, 37, 36, 40, 32, 37, 36, 42, 33, 30, 48, + 77, 68, 81, 84, 79, 76, 81, 80, 79, 73, 69, 21, 71, 77, 79, 83, + 79, 79, 83, 91, 84, 79, 44, 36, 106, 116, 95, 97, 99, 111, 102, 102, + 108, 111, 102, 77, 71, 76, 85, 92, 95, 97, 107, 112, 75, 69, 24, 91, + 114, 124, 120, 103, 111, 112, 111, 99, 99, 97, 88, 85, 93, 100, 100, 99, + 100, 97, 100, 102, 102, 93, 93, 99, 96, 100, 106, 108, 104, 103, 102, 103, + 102, 92, 99, 24, 96, 65, 61, 57, 53, 52, 57, 49, 45, 44, 46, 45, + 48, 65, 48, 49, 51, 57, 53, 77, 81, 75, 76, 18, 51, 126, 123, 71, + 76, 111, 112, 75, 89, 107, 93, 22, 99, 139, 138, 111, 115, 132, 128, 108, + 111, 106, 61, 116, 116, 104, 93, 85, 85, 87, 87, 88, 92, 92, 33, 119, + 147, 132, 56, 60, 53, 59, 65, 57, 63, 29, 77, 59, 14, 12, 30, 22, + 49, 25, 36, 40, 55, 52, 59, 80, 87, 110, 103, 85, 112, 103, 107, 76, + 118, 111, 88, 4, 53, 65, 68, 65, 64, 61, 64, 64, 64, 63, 61, 61, + 0, 83, 165, 166, 163, 163, 163, 161, 158, 108, 134, 36, 92, 116, 89, 96, + 89, 89, 106, 106, 104, 104, 106, 104, 102, 73, 68, 59, 53, 55, 51, 49, + 45, 42, 40, 29, 48, 41, 49, 61, 51, 57, 71, 75, 92, 92, 80, 96, + 93, 104, 99, 118, 119, 116, 99, 119, 124, 111, 24, 68, 99, 119, 100, 110, + 112, 142, 151, 155, 127, 122, 106, 37, 114, 102, 102, 131, 111, 111, 108, 115, + 106, 107, 91, 32, 63, 85, 108, 48, 46, 46, 51, 48, 37, 36, 53, 4, + 28, 28, 32, 34, 37, 38, 40, 103, 124, 134, 79, 25, 106, 126, 136, 131, + 135, 135, 136, 136, 140, 134, 116, 30, 112, 183, 157, 151, 154, 0, 0, 0, + 2, 4, 0, 0, 5, 5, 1, 6, 5, 4, 4, 2, 8, 2, 2, 1, + 9, 6, 0, 12, 1, 1, 0, 6, 1, 0, 1, 0, 0, 0, 1, 2, + 4, 1, 6, 2, 2, 2, 8, 4, 4, 30, 37, 42, 60, 59, 67, 68, + 68, 76, 76, 71, 64, 67, 65, 64, 84, 64, 67, 37, 41, 37, 37, 30, + 30, 28, 20, 24, 18, 18, 13, 14, 13, 13, 12, 14, 14, 16, 14, 17, + 20, 21, 22, 25, 26, 29, 29, 32, 33, 37, 13, 9, 28, 29, 29, 28, + 30, 30, 32, 32, 28, 12, 26, 6, 20, 10, 16, 10, 16, 34, 53, 68, + 72, 59, 61, 75, 79, 88, 79, 72, 59, 53, 45, 46, 18, 37, 2, 16, + 20, 34, 36, 41, 51, 60, 69, 95, 87, 69, 60, 93, 96, 83, 92, 93, + 68, 53, 48, 38, 25, 12, 22, 18, 9, 13, 13, 12, 5, 8, 8, 5, + 4, 2, 4, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0, 18, + 0, 0, 0, 29, 0, 0, 6, 20, 26, 32, 32, 79, 107, 111, 118, 111, + 106, 79, 91, 110, 108, 96, 107, 103, 96, 81, 60, 56, 28, 46, 24, 2, + 1, 21, 18, 1, 0, 14, 4, 6, 1, 5, 6, 8, 1, 4, 2, 1, + 6, 17, 20, 1, 6, 4, 2, 33, 36, 2, 2, 20, 21, 24, 25, 32, + 26, 55, 20, 20, 30, 22, 20, 22, 30, 22, 20, 22, 30, 25, 24, 24, + 56, 26, 24, 25, 32, 37, 46, 42, 67, 22, 63, 85, 84, 65, 65, 79, + 79, 64, 67, 71, 65, 61, 46, 52, 57, 44, 48, 49, 53, 59, 53, 80, + 80, 77, 72, 81, 79, 60, 56, 72, 57, 45, 41, 72, 42, 60, 29, 52, + 73, 85, 85, 87, 99, 128, 110, 83, 89, 77, 73, 79, 115, 112, 115, 106, + 88, 73, 61, 57, 48, 40, 41, 44, 64, 49, 63, 44, 51, 65, 72, 48, + 49, 38, 73, 73, 77, 84, 81, 77, 71, 81, 80, 79, 76, 63, 114, 87, + 68, 80, 64, 68, 65, 67, 59, 59, 61, 79, 42, 65, 81, 92, 100, 102, + 106, 104, 103, 110, 100, 81, 36, 51, 158, 107, 104, 84, 57, 51, 46, 41, + 26, 29, 24, 17, 36, 29, 18, 16, 37, 36, 33, 17, 38, 40, 10, 8, + 28, 30, 26, 2, 18, 5, 18, 2, 10, 5, 0, 0, 48, 56, 64, 71, + 77, 83, 89, 96, 103, 102, 32, 97, 61, 65, 55, 56, 59, 55, 49, 44, + 48, 37, 37, 72, 88, 95, 116, 120, 124, 127, 124, 116, 114, 93, 30, 120, + 130, 128, 95, 119, 111, 100, 48, 33, 28, 16, 20, 25, 20, 18, 25, 20, + 14, 10, 14, 21, 8, 25, 65, 52, 63, 46, 45, 65, 96, 103, 114, 114, + 111, 96, 9, 97, 45, 46, 71, 55, 40, 36, 34, 46, 25, 20, 32, 52, + 80, 102, 99, 103, 118, 123, 120, 124, 115, 97, 5, 118, 166, 162, 158, 153, + 153, 95, 77, 41, 32, 21, 22, 38, 45, 49, 57, 89, 104, 110, 93, 104, + 114, 115, 29, 111, 173, 96, 89, 65, 107, 97, 87, 76, 64, 69, 57, 36, + 10, 5, 34, 75, 79, 64, 51, 49, 57, 59, 59, 36, 14, 24, 76, 79, + 81, 76, 87, 83, 84, 72, 79, 68, 80, 77, 87, 87, 93, 104, 99, 85, + 92, 81, 42, 38, 44, 72, 91, 108, 95, 80, 92, 89, 95, 83, 84, 92, + 84, 53, 49, 61, 55, 63, 61, 60, 69, 63, 32, 37, 34, 34, 89, 85, + 76, 67, 76, 76, 64, 64, 67, 55, 56, 63, 71, 83, 71, 73, 49, 42, + 29, 17, 28, 18, 10, 13, 20, 8, 6, 9, 25, 5, 4, 5, 34, 18, + 14, 22, 55, 63, 67, 73, 68, 73, 81, 75, 71, 79, 71, 61, 53, 67, + 84, 69, 73, 72, 75, 71, 77, 60, 49, 4, 37, 104, 107, 107, 111, 102, + 96, 89, 88, 97, 88, 55, 81, 95, 107, 96, 97, 92, 77, 88, 59, 51, + 26, 40, 83, 88, 97, 102, 100, 87, 93, 107, 107, 71, 68, 73, 120, 119, + 122, 122, 120, 116, 122, 119, 114, 76, 80, 110, 115, 119, 114, 100, 107, 119, + 103, 104, 103, 107, 91, 22, 51, 108, 115, 84, 96, 104, 114, 87, 100, 99, + 42, 40, 44, 118, 104, 108, 112, 112, 108, 119, 111, 80, 89, 75, 81, 93, + 112, 104, 108, 102, 89, 91, 95, 64, 36, 5, 38, 97, 111, 92, 87, 97, + 87, 85, 83, 64, 36, 0, 48, 103, 132, 99, 100, 99, 96, 110, 114, 111, + 65, 45, 57, 126, 131, 120, 124, 126, 131, 93, 114, 53, 60, 53, 108, 118, + 118, 102, 103, 96, 92, 112, 106, 91, 49, 56, 63, 100, 108, 100, 104, 71, + 72, 36, 33, 26, 26, 38, 40, 48, 52, 48, 53, 53, 53, 63, 67, 65, + 61, 61, 24, 79, 118, 124, 95, 115, 91, 91, 45, 55, 38, 25, 36, 53, + 80, 87, 84, 92, 97, 97, 93, 85, 72, 79, 107, 140, 153, 143, 139, 139, + 130, 130, 130, 131, 72, 71, 104, 139, 135, 142, 136, 132, 127, 134, 128, 97, + 75, 72, 100, 104, 110, 107, 93, 87, 89, 76, 45, 38, 28, 41, 37, 51, + 51, 46, 25, 28, 25, 51, 22, 24, 59, 53, 81, 97, 99, 116, 120, 126, + 120, 131, 118, 80, 77, 99, 123, 134, 138, 136, 140, 143, 142, 139, 148, 123, + 108, 13, 138, 115, 116, 104, 132, 131, 114, 107, 97, 123, 104, 99, 136, 153, + 139, 143, 148, 147, 139, 138, 132, 130, 57, 0, 29, 115, 159, 122, 119, 124, + 124, 120, 91, 136, 115, 48, 0, 116, 142, 140, 138, 131, 89, 38, 80, 73, + 80, 9, 53, 55, 81, 84, 88, 110, 124, 127, 106, 127, 114, 135, 114, 122, + 130, 128, 127, 138, 138, 148, 134, 119, 99, 33, 124, 139, 111, 127, 135, 108, + 107, 103, 120, 108, 73, 91, 80, 124, 131, 138, 134, 140, 144, 143, 146, 71, + 26, 85, 146, 144, 122, 124, 131, 120, 77, 36, 36, 25, 22, 8, 18, 71, + 75, 77, 87, 99, 107, 106, 115, 122, 102, 44, 115, 163, 167, 167, 167, 165, + 166, 165, 161, 123, 102, 5, 130, 175, 171, 166, 167, 171, 167, 166, 157, 115, + 93, 21, 130, 163, 161, 81, 73, 81, 76, 83, 87, 68, 108, 28, 165, 111, + 182, 190, 197, 88, 76, 67, 69, 63, 64, 51, 48, 12, 10, 77, 68, 57, + 46, 63, 61, 53, 49, 46, 63, 17, 91, 92, 95, 89, 84, 89, 89, 100, + 87, 93, 85, 77, 69, 81, 73, 80, 80, 87, 85, 84, 83, 81, 85, 41, + 110, 91, 77, 71, 80, 69, 88, 68, 76, 72, 46, 48, 40, 59, 72, 65, + 68, 55, 52, 53, 60, 68, 44, 40, 75, 84, 79, 84, 91, 77, 83, 80, + 81, 77, 73, 60, 72, 68, 67, 67, 59, 67, 55, 55, 60, 53, 57, 42, + 9, 28, 75, 81, 59, 69, 71, 83, 73, 68, 34, 16, 57, 83, 83, 89, + 77, 85, 87, 99, 89, 79, 85, 71, 38, 68, 89, 102, 96, 72, 84, 83, + 76, 79, 64, 53, 5, 80, 114, 92, 95, 97, 87, 99, 81, 85, 106, 85, + 57, 81, 111, 107, 96, 103, 99, 103, 77, 92, 57, 26, 84, 96, 104, 95, + 97, 93, 100, 93, 106, 102, 107, 102, 93, 84, 84, 84, 84, 85, 84, 84, + 88, 89, 97, 92, 75, 95, 99, 92, 85, 100, 103, 106, 106, 112, 110, 106, + 24, 119, 132, 119, 116, 119, 112, 103, 103, 100, 102, 52, 33, 89, 103, 107, + 106, 114, 112, 115, 115, 108, 99, 87, 69, 80, 112, 120, 110, 112, 111, 104, + 97, 96, 72, 38, 14, 110, 118, 119, 110, 115, 116, 112, 108, 107, 92, 40, + 2, 142, 146, 142, 140, 143, 142, 136, 130, 144, 139, 102, 46, 130, 146, 144, + 136, 136, 126, 134, 126, 122, 84, 60, 110, 132, 118, 114, 111, 128, 128, 122, + 124, 124, 126, 116, 56, 99, 119, 122, 119, 118, 114, 110, 102, 75, 53, 25, + 85, 106, 87, 100, 102, 97, 108, 99, 99, 93, 84, 69, 55, 20, 110, 127, + 118, 118, 111, 119, 128, 110, 122, 104, 85, 110, 84, 106, 112, 120, 111, 124, + 111, 119, 96, 79, 83, 128, 151, 124, 127, 128, 122, 112, 128, 124, 112, 118, + 93, 130, 128, 132, 128, 126, 126, 132, 128, 126, 116, 126, 116, 124, 126, 127, + 115, 126, 120, 122, 111, 103, 97, 92, 130, 124, 126, 128, 136, 142, 136, 142, + 150, 153, 79, 88, 102, 166, 170, 171, 170, 173, 171, 166, 169, 167, 118, 77, + 115, 146, 143, 143, 143, 136, 138, 131, 127, 124, 136, 95, 30, 108, 123, 115, + 104, 110, 111, 110, 130, 128, 103, 106, 108, 92, 120, 123, 128, 115, 124, 123, + 124, 119, 143, 69, 0, 161, 170, 169, 171, 166, 166, 165, 158, 163, 162, 136, + 85, 0, 119, 146, 155, 158, 157, 154, 147, 135, 126, 77, 20, 103, 142, 153, + 154, 153, 150, 153, 150, 142, 143, 81, 102, 142, 153, 148, 159, 158, 154, 147, + 139, 139, 124, 111, 32, 142, 144, 130, 114, 110, 114, 148, 138, 155, 147, 73, + 60, 127, 159, 165, 169, 165, 159, 162, 166, 155, 96, 26, 116, 157, 161, 166, + 166, 162, 162, 154, 135, 140, 114, 71, 71, 143, 177, 174, 170, 173, 173, 171, + 150, 171, 136, 120, 42, 150, 170, 166, 166, 166, 158, 148, 153, 159, 143, 114, + 8, 131, 178, 173, 170, 163, 163, 165, 161, 167, 155, 106, 17, 150, 151, 175, + 171, 167, 159, 161, 170, 158, 96, 122, 26, 173, 131, 187, 187, 190, 107, 104, + 88, 84, 68, 68, 14, 25, 10, 6, 55, 63, 40, 38, 45, 28, 40, 49, + 45, 18, 17, 95, 112, 123, 136, 163, 174, 189, 197, 205, 205, 213, 214, 221, + 212, 222, 222, 218, 202, 193, 147, 112, 107, 107, 75, 91, 89, 92, 88, 81, + 88, 91, 65, 41, 40, 40, 38, 41, 60, 80, 92, 68, 60, 72, 68, 72, + 67, 59, 29, 81, 89, 76, 77, 67, 71, 71, 69, 63, 72, 71, 63, 61, + 80, 81, 80, 69, 67, 59, 60, 67, 69, 51, 45, 12, 85, 81, 93, 92, + 77, 88, 87, 81, 83, 67, 17, 71, 107, 93, 72, 96, 87, 81, 80, 80, + 91, 85, 68, 45, 68, 92, 100, 83, 81, 88, 84, 91, 75, 64, 60, 4, + 85, 107, 104, 95, 83, 91, 85, 100, 85, 96, 92, 42, 75, 99, 99, 102, + 87, 88, 81, 80, 87, 63, 33, 89, 81, 89, 93, 85, 100, 99, 107, 108, + 96, 89, 73, 103, 87, 104, 97, 99, 99, 97, 91, 80, 79, 68, 65, 88, + 108, 102, 103, 108, 107, 103, 107, 107, 106, 106, 100, 22, 122, 131, 97, 96, + 97, 92, 93, 89, 99, 97, 52, 34, 87, 110, 110, 103, 100, 96, 102, 103, + 112, 100, 92, 52, 73, 108, 100, 104, 114, 112, 97, 88, 95, 77, 65, 22, + 108, 112, 111, 110, 110, 103, 103, 103, 96, 96, 53, 0, 123, 140, 142, 143, + 139, 140, 143, 135, 134, 138, 116, 56, 139, 136, 135, 122, 115, 118, 108, 115, + 115, 123, 107, 128, 116, 110, 114, 103, 112, 89, 93, 92, 97, 79, 77, 64, + 122, 144, 118, 120, 119, 124, 115, 110, 112, 67, 24, 95, 103, 92, 104, 97, + 91, 103, 97, 92, 93, 79, 73, 65, 26, 106, 139, 115, 118, 130, 118, 119, + 116, 106, 114, 68, 75, 138, 134, 132, 140, 136, 130, 126, 118, 106, 87, 80, + 140, 147, 120, 122, 123, 118, 112, 123, 134, 130, 136, 132, 140, 139, 148, 143, + 143, 143, 165, 143, 148, 142, 147, 132, 146, 146, 148, 143, 140, 139, 140, 140, + 126, 107, 76, 134, 138, 138, 140, 138, 135, 122, 135, 135, 127, 95, 69, 135, + 175, 169, 165, 163, 170, 166, 174, 162, 143, 134, 91, 118, 140, 146, 135, 135, + 139, 132, 131, 131, 139, 128, 91, 29, 99, 132, 118, 143, 114, 140, 122, 139, + 142, 134, 114, 97, 115, 144, 146, 157, 154, 151, 143, 157, 146, 138, 76, 18, + 155, 169, 163, 165, 166, 165, 162, 162, 157, 167, 140, 76, 0, 136, 154, 143, + 146, 143, 130, 144, 147, 131, 67, 29, 108, 142, 158, 155, 142, 139, 148, 134, + 134, 108, 88, 119, 163, 155, 159, 148, 135, 142, 146, 143, 136, 108, 99, 25, + 139, 143, 142, 119, 120, 138, 144, 142, 148, 142, 81, 95, 151, 166, 161, 158, + 161, 157, 157, 148, 158, 95, 29, 131, 161, 155, 155, 151, 146, 146, 143, 147, + 157, 139, 76, 60, 157, 169, 170, 177, 169, 147, 146, 165, 144, 150, 124, 46, + 155, 165, 157, 150, 154, 148, 155, 150, 154, 127, 106, 6, 135, 170, 169, 173, + 169, 165, 165, 173, 163, 157, 120, 16, 134, 153, 153, 175, 173, 174, 171, 173, + 166, 114, 118, 21, 174, 190, 187, 185, 187, 73, 52, 68, 60, 40, 22, 28, + 46, 10, 13, 44, 57, 44, 41, 28, 24, 26, 30, 38, 61, 76, 110, 204, + 216, 228, 230, 230, 232, 234, 234, 238, 241, 244, 242, 241, 238, 236, 236, 233, + 229, 222, 224, 189, 139, 122, 110, 140, 159, 191, 165, 135, 92, 67, 38, 40, + 40, 42, 41, 84, 96, 84, 81, 67, 80, 85, 87, 69, 80, 68, 73, 72, + 73, 52, 75, 69, 77, 69, 71, 63, 63, 64, 79, 97, 108, 91, 95, 91, + 93, 89, 75, 59, 51, 46, 12, 93, 85, 91, 88, 89, 77, 77, 71, 69, + 64, 26, 77, 85, 96, 84, 80, 87, 75, 81, 91, 92, 77, 63, 37, 63, + 95, 107, 87, 80, 87, 91, 84, 77, 61, 48, 5, 73, 99, 97, 95, 92, + 89, 87, 69, 104, 104, 83, 49, 80, 100, 97, 89, 87, 85, 75, 85, 89, + 67, 46, 55, 84, 87, 95, 104, 111, 91, 92, 96, 83, 85, 65, 93, 104, + 85, 102, 97, 100, 84, 92, 92, 91, 63, 60, 96, 104, 99, 102, 95, 100, + 102, 79, 102, 103, 65, 68, 32, 79, 134, 99, 92, 99, 81, 89, 92, 97, + 95, 56, 32, 87, 104, 106, 92, 95, 96, 95, 97, 111, 99, 85, 49, 79, + 102, 96, 85, 115, 119, 97, 89, 100, 65, 65, 21, 83, 120, 108, 107, 110, + 99, 112, 111, 95, 88, 45, 6, 79, 139, 132, 123, 119, 120, 126, 128, 119, + 116, 122, 118, 123, 136, 138, 131, 120, 132, 115, 123, 104, 111, 100, 111, 102, + 112, 111, 107, 104, 110, 111, 110, 104, 108, 104, 107, 112, 123, 132, 103, 110, + 111, 136, 112, 107, 61, 21, 84, 96, 92, 99, 104, 106, 100, 100, 96, 88, + 79, 67, 59, 22, 103, 123, 112, 122, 130, 130, 130, 126, 116, 114, 61, 120, + 147, 142, 134, 126, 126, 123, 118, 119, 95, 87, 88, 123, 140, 112, 124, 120, + 116, 122, 150, 212, 214, 208, 218, 228, 230, 220, 226, 236, 238, 236, 233, 236, + 248, 233, 234, 232, 248, 226, 216, 220, 249, 226, 179, 132, 107, 81, 131, 158, + 169, 166, 162, 163, 153, 150, 146, 131, 96, 87, 150, 170, 165, 163, 169, 169, + 177, 173, 142, 158, 128, 100, 103, 143, 139, 135, 131, 136, 134, 134, 134, 139, + 126, 77, 21, 106, 148, 144, 153, 127, 122, 139, 136, 120, 126, 114, 65, 130, + 143, 144, 148, 148, 147, 128, 148, 148, 140, 65, 20, 96, 166, 163, 159, 157, + 155, 153, 154, 155, 163, 139, 75, 0, 131, 128, 135, 122, 148, 136, 132, 134, + 142, 91, 33, 118, 143, 147, 148, 144, 143, 142, 126, 128, 110, 68, 116, 162, + 155, 147, 138, 148, 139, 138, 127, 118, 115, 100, 28, 130, 143, 142, 144, 151, + 154, 140, 144, 143, 138, 67, 69, 159, 163, 163, 151, 151, 158, 161, 159, 159, + 93, 32, 132, 154, 153, 151, 147, 144, 142, 142, 142, 150, 138, 81, 57, 150, + 167, 170, 179, 169, 147, 148, 161, 140, 132, 126, 59, 147, 169, 155, 153, 144, + 148, 154, 153, 155, 126, 103, 6, 138, 171, 170, 161, 163, 169, 167, 170, 157, + 126, 116, 13, 136, 124, 147, 173, 166, 170, 166, 159, 161, 150, 127, 24, 171, + 143, 179, 171, 169, 24, 25, 36, 25, 36, 14, 46, 37, 10, 14, 49, 57, + 48, 26, 21, 22, 24, 71, 89, 150, 195, 218, 234, 242, 240, 241, 238, 238, + 234, 238, 244, 245, 244, 241, 240, 238, 234, 228, 232, 230, 230, 224, 224, 217, + 224, 210, 202, 212, 206, 189, 122, 92, 65, 37, 38, 46, 53, 57, 114, 186, + 195, 189, 191, 199, 205, 206, 204, 199, 198, 195, 195, 130, 103, 93, 89, 91, + 79, 76, 87, 88, 132, 171, 201, 206, 199, 201, 194, 132, 92, 76, 42, 52, + 37, 13, 60, 84, 77, 73, 72, 71, 63, 73, 77, 65, 29, 52, 84, 96, + 77, 81, 80, 76, 77, 81, 89, 73, 64, 36, 71, 84, 100, 89, 77, 84, + 88, 83, 77, 60, 51, 6, 65, 103, 107, 102, 92, 102, 76, 91, 95, 93, + 83, 40, 80, 91, 100, 81, 81, 91, 80, 96, 83, 65, 44, 49, 99, 104, + 83, 88, 89, 100, 88, 92, 88, 80, 59, 100, 103, 93, 92, 89, 87, 91, + 110, 100, 89, 81, 57, 100, 103, 108, 91, 100, 100, 96, 100, 92, 100, 103, + 95, 34, 79, 131, 103, 93, 88, 76, 81, 80, 97, 96, 56, 28, 87, 103, + 97, 87, 87, 87, 88, 92, 104, 92, 79, 52, 69, 97, 93, 85, 104, 91, + 84, 89, 96, 68, 37, 8, 83, 123, 100, 99, 107, 111, 106, 100, 99, 85, + 45, 4, 124, 131, 126, 123, 130, 127, 122, 124, 154, 194, 205, 210, 218, 222, + 229, 232, 236, 237, 250, 250, 249, 242, 244, 229, 238, 242, 240, 237, 233, 233, + 230, 230, 210, 212, 195, 214, 206, 234, 199, 191, 186, 186, 206, 161, 116, 65, + 28, 91, 84, 99, 104, 97, 96, 104, 85, 89, 63, 75, 57, 51, 16, 102, + 131, 118, 123, 132, 132, 131, 118, 104, 116, 48, 127, 146, 138, 123, 123, 128, + 131, 126, 128, 102, 87, 60, 119, 139, 110, 115, 115, 116, 115, 154, 209, 213, + 212, 221, 222, 226, 225, 222, 228, 230, 232, 232, 233, 232, 230, 230, 229, 222, + 224, 220, 220, 220, 213, 165, 122, 97, 33, 124, 150, 155, 157, 157, 157, 166, + 165, 140, 136, 99, 96, 124, 170, 163, 178, 174, 158, 157, 134, 142, 143, 134, + 96, 93, 146, 142, 131, 136, 136, 135, 134, 131, 124, 123, 99, 10, 110, 150, + 126, 146, 122, 132, 131, 153, 116, 115, 112, 75, 111, 146, 148, 153, 155, 154, + 153, 150, 132, 134, 65, 1, 99, 167, 157, 153, 148, 153, 162, 161, 163, 166, + 146, 73, 1, 119, 139, 143, 126, 158, 132, 134, 138, 116, 84, 20, 111, 154, + 153, 144, 135, 134, 143, 130, 130, 95, 72, 110, 163, 150, 151, 150, 144, 142, + 132, 139, 143, 111, 99, 36, 128, 140, 147, 148, 142, 143, 144, 148, 138, 140, + 71, 76, 155, 157, 154, 153, 158, 167, 162, 158, 161, 99, 42, 124, 159, 154, + 150, 147, 143, 143, 131, 136, 139, 126, 77, 8, 154, 167, 174, 178, 148, 150, + 151, 143, 146, 136, 131, 64, 140, 169, 134, 161, 131, 155, 155, 151, 157, 116, + 100, 8, 128, 171, 170, 173, 167, 169, 166, 170, 159, 126, 104, 12, 135, 146, + 146, 136, 144, 144, 143, 139, 157, 122, 131, 32, 174, 140, 174, 181, 169, 17, + 16, 18, 28, 18, 14, 45, 33, 10, 16, 67, 51, 28, 24, 32, 51, 75, + 171, 233, 241, 242, 245, 240, 238, 238, 237, 216, 185, 171, 175, 178, 169, 153, + 139, 132, 127, 116, 111, 118, 123, 136, 187, 208, 221, 220, 214, 210, 197, 199, + 183, 131, 91, 56, 34, 40, 34, 55, 108, 142, 208, 205, 218, 206, 218, 221, + 224, 221, 232, 228, 232, 229, 228, 224, 230, 228, 225, 218, 208, 217, 220, 213, + 221, 217, 202, 198, 189, 191, 132, 91, 69, 38, 51, 40, 16, 60, 84, 65, + 64, 93, 77, 79, 77, 68, 63, 30, 30, 80, 88, 87, 84, 81, 89, 89, + 92, 91, 75, 64, 34, 63, 106, 110, 80, 85, 85, 89, 81, 76, 60, 48, + 9, 81, 104, 96, 92, 85, 100, 83, 87, 96, 83, 87, 40, 84, 88, 95, + 87, 83, 93, 87, 91, 84, 65, 44, 38, 97, 87, 84, 88, 97, 87, 97, + 92, 80, 73, 55, 89, 103, 88, 84, 85, 96, 95, 91, 92, 85, 63, 57, + 100, 107, 116, 104, 102, 85, 106, 100, 88, 102, 100, 96, 37, 81, 127, 106, + 89, 87, 75, 77, 89, 100, 95, 57, 28, 93, 97, 93, 88, 89, 84, 84, + 92, 100, 89, 84, 52, 77, 93, 91, 80, 77, 114, 110, 88, 92, 71, 37, + 17, 92, 123, 107, 107, 107, 100, 99, 85, 99, 104, 42, 4, 139, 139, 126, + 124, 131, 119, 131, 197, 202, 214, 213, 213, 220, 232, 232, 233, 237, 241, 249, + 250, 250, 248, 246, 246, 232, 242, 245, 237, 232, 236, 240, 236, 228, 233, 225, + 221, 214, 224, 216, 209, 195, 220, 206, 173, 110, 64, 28, 88, 81, 97, 100, + 95, 100, 93, 92, 89, 65, 72, 55, 46, 13, 110, 128, 118, 127, 124, 132, + 132, 124, 104, 107, 42, 126, 140, 124, 132, 134, 134, 139, 135, 132, 118, 88, + 88, 118, 144, 115, 120, 124, 116, 112, 131, 154, 201, 210, 216, 217, 213, 220, + 212, 216, 221, 224, 226, 230, 230, 230, 225, 222, 225, 220, 213, 210, 214, 193, + 132, 118, 67, 45, 132, 151, 142, 154, 154, 158, 158, 163, 142, 142, 100, 92, + 127, 165, 157, 153, 134, 135, 138, 128, 135, 139, 147, 114, 91, 143, 142, 138, + 130, 134, 136, 131, 130, 131, 138, 96, 24, 131, 126, 144, 124, 135, 140, 144, + 132, 132, 124, 107, 73, 112, 153, 142, 153, 147, 144, 142, 140, 146, 143, 60, + 2, 162, 161, 155, 158, 161, 159, 159, 166, 163, 162, 144, 104, 2, 120, 153, + 136, 161, 142, 122, 136, 127, 122, 77, 14, 110, 153, 153, 150, 140, 147, 146, + 136, 123, 103, 69, 118, 163, 143, 143, 157, 146, 142, 142, 142, 128, 120, 107, + 42, 136, 153, 151, 155, 158, 150, 143, 146, 140, 151, 77, 88, 150, 157, 147, + 159, 166, 165, 159, 155, 153, 107, 38, 136, 158, 157, 150, 146, 144, 147, 130, + 140, 144, 144, 81, 13, 151, 166, 154, 151, 148, 159, 162, 159, 159, 140, 131, + 71, 126, 170, 159, 170, 131, 142, 154, 157, 157, 134, 110, 12, 138, 173, 170, + 167, 166, 161, 163, 166, 166, 147, 116, 9, 150, 140, 138, 134, 130, 132, 132, + 132, 153, 118, 123, 26, 173, 143, 173, 169, 161, 56, 22, 16, 16, 14, 13, + 49, 21, 13, 9, 68, 55, 28, 37, 64, 110, 221, 245, 242, 240, 242, 242, + 237, 226, 194, 159, 124, 112, 107, 110, 108, 108, 107, 106, 103, 106, 103, 103, + 102, 102, 99, 102, 115, 124, 151, 185, 190, 197, 185, 136, 108, 71, 32, 33, + 36, 41, 57, 122, 150, 230, 237, 202, 221, 214, 228, 229, 234, 232, 228, 226, + 234, 238, 236, 230, 230, 224, 221, 226, 221, 217, 216, 214, 220, 210, 202, 205, + 195, 114, 75, 59, 40, 48, 40, 18, 84, 81, 77, 73, 84, 71, 79, 75, + 81, 81, 61, 22, 76, 87, 99, 99, 99, 92, 92, 85, 85, 71, 63, 36, + 60, 93, 99, 89, 85, 88, 95, 84, 77, 77, 51, 8, 73, 102, 96, 102, + 93, 100, 97, 100, 99, 72, 69, 30, 80, 85, 102, 80, 103, 88, 88, 81, + 85, 76, 65, 38, 91, 88, 87, 84, 84, 88, 89, 89, 79, 63, 52, 84, + 95, 83, 81, 89, 97, 88, 88, 85, 80, 53, 53, 91, 100, 107, 107, 97, + 85, 100, 91, 100, 83, 102, 91, 40, 59, 84, 127, 104, 85, 81, 76, 85, + 102, 89, 57, 33, 80, 92, 91, 79, 81, 79, 77, 100, 103, 99, 79, 48, + 65, 85, 85, 77, 75, 111, 87, 88, 89, 73, 53, 20, 96, 108, 100, 111, + 107, 110, 107, 97, 102, 89, 48, 1, 111, 136, 124, 124, 126, 119, 186, 201, + 206, 212, 216, 221, 220, 226, 230, 236, 234, 238, 246, 249, 248, 249, 250, 248, + 244, 236, 245, 241, 240, 241, 230, 230, 232, 236, 228, 226, 217, 213, 210, 206, + 202, 208, 163, 142, 76, 65, 28, 88, 88, 92, 104, 99, 95, 89, 84, 88, + 67, 68, 63, 55, 17, 81, 136, 119, 128, 122, 124, 130, 124, 119, 99, 51, + 123, 132, 138, 143, 144, 155, 150, 147, 140, 136, 116, 103, 127, 148, 122, 120, + 104, 106, 119, 110, 119, 126, 132, 131, 130, 122, 119, 115, 119, 116, 116, 116, + 120, 126, 126, 123, 123, 126, 120, 119, 118, 116, 118, 104, 103, 65, 68, 131, + 148, 139, 140, 157, 153, 154, 154, 143, 136, 104, 99, 122, 163, 167, 148, 151, + 167, 154, 155, 161, 120, 131, 134, 80, 131, 148, 140, 131, 135, 131, 134, 139, + 131, 134, 87, 22, 103, 136, 130, 127, 128, 130, 126, 131, 138, 124, 104, 72, + 104, 151, 127, 157, 161, 150, 150, 146, 148, 127, 76, 16, 159, 166, 159, 163, + 158, 161, 159, 166, 162, 161, 144, 80, 5, 131, 153, 144, 146, 130, 131, 118, + 140, 99, 71, 32, 114, 136, 158, 139, 144, 143, 136, 139, 126, 115, 73, 122, + 161, 150, 147, 148, 147, 136, 138, 154, 131, 108, 107, 30, 140, 147, 151, 136, + 147, 147, 140, 144, 136, 140, 69, 124, 153, 143, 151, 162, 161, 157, 161, 159, + 154, 110, 53, 104, 134, 155, 153, 150, 144, 150, 147, 134, 136, 144, 79, 48, + 143, 167, 154, 157, 157, 161, 159, 159, 159, 140, 135, 75, 134, 170, 157, 139, + 132, 136, 153, 157, 157, 132, 103, 9, 143, 170, 171, 170, 165, 162, 169, 170, + 166, 146, 122, 9, 126, 131, 130, 127, 118, 116, 119, 130, 139, 126, 116, 18, + 158, 181, 169, 165, 173, 95, 34, 29, 28, 29, 36, 40, 33, 12, 21, 49, + 26, 38, 69, 155, 232, 246, 241, 241, 233, 225, 205, 178, 132, 115, 108, 110, + 110, 110, 110, 108, 110, 115, 107, 91, 73, 64, 71, 81, 96, 130, 112, 100, + 99, 95, 104, 106, 103, 103, 99, 92, 49, 33, 33, 36, 32, 55, 104, 127, + 182, 191, 194, 162, 124, 116, 122, 128, 127, 124, 128, 140, 169, 199, 208, 214, + 220, 224, 222, 213, 205, 204, 210, 208, 202, 187, 139, 114, 88, 72, 37, 34, + 45, 34, 18, 56, 79, 77, 73, 73, 85, 84, 75, 76, 84, 48, 25, 64, + 87, 83, 85, 91, 83, 85, 87, 84, 67, 64, 30, 57, 85, 102, 104, 106, + 99, 99, 84, 79, 65, 46, 6, 67, 96, 95, 96, 88, 100, 92, 93, 88, + 84, 52, 26, 80, 88, 97, 79, 89, 89, 92, 84, 80, 84, 59, 38, 61, + 95, 88, 95, 88, 88, 88, 84, 77, 59, 45, 75, 103, 88, 84, 89, 92, + 92, 89, 89, 83, 53, 48, 95, 95, 99, 95, 96, 96, 102, 99, 100, 80, + 68, 81, 46, 52, 85, 104, 116, 95, 81, 73, 89, 93, 92, 63, 28, 77, + 97, 87, 87, 77, 79, 95, 122, 93, 91, 75, 34, 76, 91, 73, 71, 77, + 76, 83, 83, 81, 65, 55, 22, 68, 122, 112, 114, 106, 95, 97, 108, 97, + 95, 42, 8, 83, 134, 124, 124, 132, 118, 116, 158, 198, 206, 202, 183, 139, + 128, 126, 123, 127, 123, 115, 110, 114, 115, 116, 118, 116, 112, 110, 112, 115, + 114, 112, 107, 108, 116, 120, 118, 115, 108, 104, 108, 88, 83, 81, 79, 69, + 34, 24, 85, 95, 97, 93, 96, 93, 87, 88, 87, 61, 63, 57, 46, 14, + 100, 118, 122, 118, 124, 128, 116, 122, 112, 88, 53, 126, 136, 153, 163, 190, + 197, 206, 191, 186, 169, 147, 136, 123, 146, 114, 124, 111, 99, 104, 108, 122, + 110, 100, 103, 107, 107, 106, 106, 106, 104, 106, 106, 106, 104, 106, 110, 108, + 107, 107, 111, 108, 106, 110, 111, 46, 44, 60, 131, 144, 140, 148, 146, 147, + 150, 159, 140, 135, 116, 83, 95, 146, 159, 144, 131, 151, 166, 161, 136, 135, + 135, 123, 91, 114, 139, 142, 135, 136, 134, 132, 131, 131, 128, 68, 18, 102, + 143, 136, 120, 135, 130, 126, 131, 138, 120, 104, 52, 134, 147, 143, 136, 158, + 161, 148, 158, 146, 124, 63, 14, 96, 159, 153, 162, 163, 155, 161, 162, 162, + 161, 140, 76, 5, 122, 130, 154, 146, 118, 110, 126, 96, 93, 80, 34, 108, + 136, 153, 146, 151, 142, 138, 131, 134, 99, 48, 144, 162, 153, 157, 157, 140, + 142, 146, 142, 126, 110, 102, 40, 136, 148, 134, 151, 144, 140, 142, 144, 132, + 122, 59, 93, 161, 165, 167, 151, 140, 159, 161, 170, 155, 99, 56, 87, 134, + 158, 151, 150, 148, 148, 130, 128, 139, 139, 88, 40, 140, 166, 158, 159, 162, + 150, 150, 159, 158, 143, 138, 80, 104, 166, 161, 128, 130, 140, 154, 157, 157, + 134, 103, 12, 134, 171, 169, 167, 163, 167, 166, 166, 165, 136, 124, 8, 134, + 131, 124, 120, 118, 116, 112, 127, 147, 135, 115, 24, 166, 183, 169, 158, 173, + 71, 73, 53, 61, 45, 56, 28, 26, 12, 24, 25, 36, 85, 198, 240, 244, + 241, 242, 242, 199, 153, 119, 110, 110, 112, 114, 118, 108, 124, 120, 104, 72, + 38, 20, 20, 17, 24, 17, 21, 25, 49, 73, 122, 118, 99, 102, 95, 95, + 91, 102, 87, 29, 28, 29, 33, 33, 56, 76, 100, 97, 115, 102, 107, 91, + 85, 84, 95, 88, 92, 88, 100, 95, 97, 106, 106, 110, 104, 106, 106, 102, + 99, 102, 107, 108, 95, 92, 83, 69, 33, 36, 41, 42, 34, 21, 46, 75, + 83, 75, 88, 77, 83, 83, 80, 76, 51, 28, 53, 83, 81, 81, 76, 80, + 85, 88, 80, 61, 60, 24, 61, 72, 87, 91, 88, 84, 81, 85, 71, 69, + 49, 8, 67, 89, 102, 96, 97, 92, 93, 95, 85, 81, 65, 26, 73, 83, + 97, 97, 84, 89, 79, 87, 65, 63, 53, 44, 53, 52, 69, 67, 63, 65, + 68, 69, 76, 72, 45, 83, 100, 84, 79, 89, 89, 88, 89, 88, 85, 61, + 42, 93, 92, 92, 88, 85, 91, 88, 93, 92, 93, 92, 91, 69, 52, 89, + 104, 96, 77, 71, 73, 92, 88, 89, 64, 25, 87, 103, 92, 85, 76, 75, + 95, 111, 93, 87, 75, 37, 67, 84, 73, 71, 64, 67, 68, 75, 67, 63, + 44, 22, 65, 119, 96, 69, 88, 103, 104, 87, 93, 93, 40, 6, 120, 126, + 123, 120, 123, 120, 124, 124, 124, 123, 120, 114, 114, 111, 111, 110, 110, 106, + 104, 102, 102, 102, 103, 103, 102, 97, 97, 96, 96, 95, 96, 88, 93, 92, + 92, 92, 92, 87, 87, 87, 83, 76, 60, 57, 33, 24, 32, 83, 80, 93, + 89, 77, 63, 67, 56, 45, 60, 57, 61, 48, 8, 103, 138, 124, 122, 120, + 120, 123, 116, 110, 57, 83, 136, 150, 194, 213, 221, 221, 212, 208, 213, 213, + 209, 186, 163, 144, 119, 95, 96, 102, 87, 97, 88, 100, 100, 97, 110, 118, + 112, 112, 112, 111, 110, 110, 114, 115, 115, 115, 114, 112, 115, 115, 114, 118, + 96, 41, 51, 46, 21, 123, 134, 147, 134, 144, 130, 126, 122, 146, 126, 112, + 85, 106, 126, 136, 130, 153, 138, 139, 126, 123, 120, 119, 132, 93, 103, 124, + 146, 144, 142, 134, 143, 144, 131, 127, 103, 13, 111, 146, 146, 140, 134, 140, + 131, 136, 146, 103, 104, 53, 99, 146, 146, 150, 143, 120, 126, 135, 142, 136, + 61, 6, 100, 163, 155, 158, 157, 157, 161, 163, 159, 157, 154, 71, 6, 114, + 143, 135, 112, 110, 99, 93, 114, 97, 79, 33, 111, 147, 151, 155, 138, 136, + 139, 135, 138, 107, 57, 104, 159, 148, 147, 142, 140, 144, 139, 142, 140, 107, + 102, 44, 140, 150, 144, 140, 142, 140, 139, 140, 136, 81, 57, 131, 143, 169, + 154, 148, 144, 150, 161, 153, 159, 93, 75, 80, 140, 147, 146, 157, 148, 144, + 134, 130, 130, 131, 76, 14, 143, 165, 159, 151, 157, 157, 150, 147, 150, 150, + 135, 107, 104, 159, 153, 150, 136, 144, 153, 154, 154, 111, 100, 13, 139, 171, + 166, 165, 161, 162, 162, 166, 163, 155, 118, 8, 127, 123, 115, 124, 112, 118, + 114, 127, 143, 126, 118, 40, 170, 153, 173, 174, 189, 12, 12, 14, 13, 12, + 13, 13, 10, 10, 34, 32, 84, 216, 245, 242, 244, 241, 245, 206, 139, 112, + 114, 115, 120, 122, 118, 122, 127, 119, 81, 37, 16, 13, 12, 13, 14, 18, + 18, 18, 21, 18, 37, 69, 108, 155, 118, 100, 99, 97, 102, 83, 29, 25, + 25, 30, 32, 44, 75, 73, 73, 68, 71, 87, 89, 91, 91, 92, 93, 95, + 92, 93, 93, 95, 96, 95, 95, 95, 92, 92, 91, 87, 87, 91, 88, 84, + 81, 56, 29, 32, 28, 41, 41, 37, 21, 30, 72, 73, 83, 71, 48, 59, + 52, 42, 40, 42, 49, 32, 46, 63, 75, 73, 72, 72, 69, 75, 61, 60, + 22, 61, 67, 88, 92, 89, 85, 81, 69, 67, 64, 45, 12, 69, 73, 75, + 75, 75, 75, 75, 76, 79, 67, 61, 26, 69, 79, 92, 83, 63, 75, 72, + 63, 63, 71, 64, 60, 64, 76, 60, 80, 72, 75, 65, 75, 75, 51, 45, + 68, 81, 91, 76, 81, 84, 85, 79, 84, 80, 60, 41, 95, 92, 92, 83, + 87, 85, 87, 81, 84, 80, 88, 77, 80, 52, 64, 71, 72, 72, 73, 80, + 81, 87, 87, 65, 22, 91, 85, 93, 83, 76, 75, 72, 77, 83, 81, 67, + 51, 64, 77, 63, 56, 60, 60, 61, 61, 63, 61, 32, 24, 49, 93, 100, + 75, 88, 99, 96, 92, 97, 104, 37, 2, 112, 130, 124, 122, 118, 118, 120, + 115, 112, 103, 106, 102, 88, 96, 81, 87, 93, 84, 118, 115, 112, 115, 114, + 114, 114, 112, 111, 110, 106, 110, 107, 103, 100, 106, 102, 102, 106, 103, 81, + 49, 32, 28, 24, 24, 21, 16, 36, 32, 44, 46, 41, 40, 40, 41, 40, + 44, 40, 48, 45, 41, 8, 73, 126, 128, 128, 126, 132, 126, 114, 107, 49, + 95, 142, 183, 222, 222, 214, 225, 213, 212, 221, 217, 205, 199, 175, 118, 103, + 112, 102, 110, 107, 106, 93, 104, 114, 68, 80, 77, 116, 170, 114, 124, 128, + 126, 136, 132, 134, 138, 138, 138, 138, 135, 127, 104, 75, 37, 59, 48, 29, + 95, 127, 134, 136, 135, 139, 135, 140, 136, 132, 130, 126, 134, 134, 106, 106, + 114, 107, 106, 108, 122, 123, 108, 99, 122, 120, 120, 124, 119, 120, 120, 102, + 116, 115, 116, 68, 20, 107, 130, 131, 135, 136, 131, 136, 138, 127, 120, 99, + 49, 146, 157, 144, 143, 119, 142, 140, 130, 132, 132, 59, 8, 148, 159, 154, + 155, 151, 158, 151, 155, 151, 157, 134, 106, 6, 126, 146, 110, 123, 95, 104, + 97, 103, 96, 72, 16, 111, 142, 144, 143, 127, 132, 138, 140, 119, 95, 55, + 102, 139, 146, 139, 139, 144, 144, 147, 146, 139, 110, 116, 53, 151, 148, 134, + 142, 138, 136, 122, 136, 122, 80, 60, 122, 118, 134, 148, 146, 146, 130, 143, + 135, 134, 104, 79, 60, 115, 136, 138, 119, 127, 130, 132, 131, 130, 135, 91, + 18, 144, 147, 151, 144, 147, 142, 146, 139, 144, 136, 140, 135, 132, 103, 107, + 112, 142, 143, 119, 147, 151, 142, 104, 22, 139, 170, 165, 161, 154, 151, 147, + 151, 153, 140, 126, 9, 153, 120, 114, 116, 114, 127, 128, 132, 126, 119, 108, + 26, 166, 175, 161, 159, 163, 10, 4, 13, 13, 9, 5, 12, 24, 63, 32, + 63, 190, 242, 240, 241, 241, 245, 199, 143, 114, 122, 124, 126, 120, 111, 126, + 132, 124, 81, 22, 10, 9, 9, 12, 18, 18, 22, 21, 24, 18, 20, 24, + 46, 79, 144, 158, 122, 120, 120, 104, 85, 26, 24, 21, 29, 33, 26, 59, + 65, 67, 68, 72, 80, 88, 92, 93, 97, 97, 99, 100, 103, 104, 100, 99, + 99, 97, 97, 100, 93, 95, 92, 89, 88, 93, 76, 34, 28, 28, 25, 20, + 22, 37, 36, 33, 25, 26, 33, 41, 46, 32, 26, 26, 22, 24, 20, 20, + 22, 33, 32, 44, 45, 51, 53, 59, 60, 61, 52, 24, 52, 60, 77, 79, + 75, 68, 53, 29, 33, 28, 17, 12, 41, 44, 44, 45, 48, 48, 46, 51, + 52, 51, 37, 32, 49, 52, 59, 36, 33, 33, 36, 25, 14, 25, 21, 16, + 14, 12, 14, 13, 14, 20, 21, 22, 24, 26, 33, 22, 24, 24, 24, 25, + 42, 42, 29, 36, 41, 68, 40, 71, 84, 73, 69, 69, 69, 68, 69, 69, + 69, 71, 69, 67, 68, 72, 77, 77, 79, 81, 81, 83, 83, 84, 65, 28, + 81, 84, 76, 72, 67, 72, 67, 60, 75, 73, 53, 25, 57, 48, 34, 25, + 22, 21, 20, 21, 21, 16, 16, 25, 30, 29, 36, 30, 29, 30, 30, 42, + 42, 56, 40, 0, 18, 68, 76, 73, 75, 79, 85, 83, 85, 83, 83, 49, + 80, 111, 120, 131, 134, 131, 128, 130, 124, 130, 128, 130, 130, 128, 127, 127, + 124, 123, 120, 118, 118, 112, 119, 111, 89, 63, 28, 21, 21, 18, 12, 13, + 12, 10, 38, 40, 36, 42, 41, 38, 30, 36, 36, 36, 32, 41, 34, 41, + 12, 48, 110, 114, 107, 118, 120, 102, 81, 104, 40, 103, 155, 210, 225, 224, + 220, 224, 230, 209, 185, 155, 148, 134, 116, 103, 102, 80, 67, 87, 89, 88, + 87, 91, 83, 67, 84, 75, 119, 179, 155, 115, 114, 139, 139, 140, 142, 144, + 148, 147, 146, 140, 128, 93, 40, 33, 29, 69, 55, 60, 107, 110, 100, 110, + 114, 108, 108, 114, 114, 115, 111, 112, 120, 124, 123, 126, 124, 126, 126, 122, + 128, 127, 122, 111, 119, 122, 118, 102, 128, 119, 106, 88, 116, 114, 63, 18, + 56, 122, 126, 92, 102, 128, 130, 111, 111, 118, 91, 72, 136, 165, 122, 111, + 126, 124, 99, 103, 114, 99, 87, 16, 127, 163, 159, 159, 151, 159, 142, 146, + 157, 151, 107, 75, 9, 124, 144, 102, 107, 92, 89, 93, 89, 87, 44, 33, + 110, 79, 72, 75, 79, 72, 72, 73, 68, 59, 59, 77, 85, 87, 85, 85, + 99, 116, 131, 135, 135, 102, 96, 36, 148, 138, 132, 126, 128, 93, 85, 88, + 83, 81, 64, 84, 59, 76, 69, 83, 102, 107, 115, 107, 108, 110, 93, 55, + 97, 112, 115, 112, 107, 106, 122, 120, 114, 110, 87, 37, 100, 107, 95, 97, + 108, 110, 103, 111, 112, 110, 136, 131, 123, 138, 138, 139, 143, 143, 139, 143, + 139, 135, 97, 14, 138, 154, 153, 151, 151, 148, 151, 151, 151, 118, 127, 6, + 124, 107, 103, 110, 104, 108, 106, 91, 114, 122, 88, 24, 68, 100, 112, 111, + 108, 77, 71, 61, 57, 49, 57, 49, 56, 29, 36, 136, 238, 241, 240, 240, + 241, 195, 140, 116, 120, 130, 122, 114, 108, 131, 136, 131, 93, 28, 9, 9, + 8, 10, 18, 20, 21, 21, 22, 17, 21, 12, 20, 40, 67, 122, 169, 142, + 122, 120, 106, 91, 26, 24, 22, 29, 30, 25, 37, 40, 44, 45, 46, 52, + 63, 107, 175, 119, 97, 100, 106, 104, 107, 100, 99, 103, 104, 111, 111, 111, + 104, 100, 104, 100, 69, 26, 22, 21, 17, 18, 21, 18, 21, 22, 22, 25, + 21, 21, 22, 20, 40, 44, 46, 49, 55, 56, 51, 21, 71, 71, 48, 42, + 42, 44, 38, 36, 41, 52, 20, 45, 30, 25, 22, 21, 22, 16, 14, 16, + 14, 16, 9, 13, 12, 9, 9, 12, 12, 13, 13, 14, 17, 17, 36, 14, + 25, 46, 51, 57, 49, 60, 68, 93, 76, 85, 76, 97, 104, 96, 106, 106, + 99, 92, 87, 72, 38, 33, 79, 115, 118, 89, 85, 73, 60, 55, 49, 18, + 16, 12, 12, 12, 12, 12, 10, 13, 13, 13, 14, 16, 18, 20, 22, 21, + 25, 29, 33, 34, 40, 44, 65, 69, 83, 67, 30, 76, 64, 52, 40, 38, + 36, 33, 34, 36, 32, 30, 24, 20, 37, 63, 61, 68, 95, 104, 102, 111, + 100, 63, 20, 73, 115, 115, 88, 68, 69, 69, 57, 56, 22, 16, 2, 9, + 9, 30, 18, 18, 18, 34, 28, 29, 29, 41, 60, 89, 124, 179, 175, 124, + 131, 144, 139, 136, 139, 139, 139, 136, 135, 135, 134, 132, 131, 130, 123, 126, + 114, 118, 107, 56, 24, 21, 16, 16, 17, 20, 24, 26, 48, 41, 46, 73, + 83, 92, 96, 100, 92, 89, 75, 71, 33, 32, 21, 10, 41, 41, 44, 59, + 63, 102, 104, 97, 97, 32, 112, 167, 214, 238, 224, 228, 220, 170, 143, 119, + 119, 115, 108, 107, 103, 60, 72, 64, 69, 68, 60, 56, 60, 60, 63, 83, + 85, 119, 189, 182, 119, 110, 118, 135, 144, 147, 151, 153, 151, 150, 142, 128, + 85, 36, 36, 37, 46, 34, 17, 14, 18, 10, 8, 6, 9, 5, 2, 2, + 4, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 4, 4, 18, 37, 37, 42, 41, 40, + 51, 52, 67, 71, 81, 104, 48, 97, 130, 128, 106, 106, 120, 116, 97, 102, + 112, 53, 13, 25, 91, 99, 84, 75, 99, 106, 84, 79, 111, 103, 24, 10, + 67, 131, 126, 72, 46, 38, 32, 29, 40, 79, 68, 80, 85, 80, 99, 100, + 106, 112, 115, 118, 111, 51, 123, 116, 130, 119, 84, 46, 40, 68, 45, 87, + 93, 102, 51, 135, 96, 89, 100, 88, 108, 122, 119, 130, 124, 59, 118, 131, + 140, 136, 88, 87, 89, 55, 67, 65, 55, 63, 102, 100, 91, 89, 83, 79, + 72, 67, 69, 64, 40, 41, 29, 18, 16, 17, 9, 8, 9, 12, 1, 1, + 1, 17, 29, 17, 36, 33, 40, 52, 40, 83, 103, 126, 123, 84, 17, 80, + 89, 85, 84, 84, 80, 79, 79, 73, 75, 71, 5, 52, 55, 65, 60, 46, + 60, 59, 55, 56, 48, 56, 42, 52, 59, 59, 60, 65, 73, 56, 59, 48, + 45, 55, 51, 28, 32, 115, 225, 238, 238, 240, 238, 194, 130, 118, 127, 134, + 118, 112, 116, 132, 143, 139, 115, 42, 10, 8, 8, 8, 16, 16, 17, 22, + 28, 25, 40, 42, 59, 52, 40, 56, 110, 171, 157, 126, 120, 115, 91, 28, + 24, 21, 30, 30, 34, 44, 76, 84, 85, 77, 84, 81, 107, 186, 161, 97, + 99, 108, 102, 106, 115, 118, 132, 139, 140, 140, 144, 143, 136, 106, 97, 32, + 24, 21, 18, 17, 17, 18, 17, 17, 17, 24, 22, 41, 56, 69, 79, 92, + 95, 100, 99, 96, 88, 57, 38, 83, 88, 60, 60, 65, 65, 59, 48, 46, + 52, 20, 20, 28, 45, 48, 53, 83, 93, 103, 73, 59, 56, 103, 103, 112, + 92, 100, 85, 106, 91, 85, 91, 84, 36, 21, 68, 112, 102, 112, 104, 88, + 80, 91, 108, 87, 102, 92, 87, 76, 92, 106, 103, 91, 93, 85, 103, 46, + 32, 85, 124, 114, 112, 127, 123, 126, 130, 116, 107, 57, 29, 96, 112, 106, + 110, 108, 112, 119, 112, 111, 111, 106, 102, 100, 108, 107, 112, 103, 103, 95, + 65, 52, 55, 46, 67, 28, 38, 42, 69, 80, 79, 84, 99, 89, 83, 73, + 64, 42, 95, 123, 124, 124, 122, 124, 120, 116, 112, 102, 67, 24, 89, 118, + 119, 114, 114, 114, 114, 110, 84, 65, 57, 6, 71, 89, 91, 84, 89, 97, + 96, 95, 102, 100, 42, 56, 97, 120, 201, 183, 134, 123, 131, 148, 148, 147, + 151, 159, 159, 158, 159, 159, 153, 148, 130, 124, 114, 131, 118, 99, 37, 24, + 18, 17, 24, 25, 29, 40, 48, 52, 44, 64, 106, 108, 123, 130, 134, 126, + 123, 112, 107, 102, 88, 65, 9, 108, 116, 118, 115, 61, 63, 59, 99, 95, + 24, 127, 186, 220, 224, 230, 217, 157, 127, 120, 111, 102, 106, 100, 107, 65, + 45, 88, 80, 88, 93, 100, 91, 93, 89, 95, 99, 131, 120, 197, 191, 157, + 115, 114, 126, 144, 151, 148, 153, 155, 151, 140, 131, 81, 36, 42, 44, 53, + 34, 32, 85, 96, 93, 100, 92, 97, 88, 135, 114, 80, 80, 140, 123, 146, + 155, 155, 159, 157, 151, 165, 165, 161, 154, 128, 132, 154, 155, 150, 150, 155, + 151, 150, 123, 100, 65, 18, 102, 144, 138, 119, 119, 95, 77, 73, 32, 42, + 45, 45, 10, 8, 33, 9, 8, 4, 20, 1, 5, 2, 12, 9, 4, 8, + 5, 1, 0, 2, 2, 0, 0, 0, 5, 1, 14, 42, 34, 42, 61, 85, + 114, 83, 71, 115, 71, 77, 128, 142, 151, 148, 148, 151, 158, 161, 127, 112, + 56, 126, 135, 147, 153, 143, 134, 130, 122, 102, 106, 83, 103, 91, 115, 130, + 112, 128, 123, 139, 138, 124, 146, 130, 57, 131, 144, 131, 159, 158, 153, 146, + 131, 110, 106, 91, 61, 59, 24, 30, 79, 75, 111, 119, 124, 102, 96, 102, + 87, 37, 76, 167, 171, 140, 155, 167, 151, 144, 148, 114, 131, 140, 140, 140, + 146, 150, 143, 87, 46, 36, 33, 53, 32, 30, 33, 33, 28, 24, 28, 28, + 24, 24, 26, 30, 29, 33, 53, 68, 72, 72, 85, 112, 122, 104, 87, 81, + 89, 93, 142, 154, 140, 140, 146, 21, 24, 24, 37, 40, 44, 32, 38, 97, + 216, 232, 241, 237, 236, 185, 127, 119, 128, 136, 115, 112, 126, 136, 151, 146, + 135, 83, 18, 10, 9, 9, 14, 14, 17, 25, 29, 65, 64, 61, 65, 67, + 52, 44, 48, 77, 170, 175, 147, 118, 106, 85, 25, 21, 20, 28, 29, 29, + 77, 92, 99, 97, 96, 79, 69, 92, 197, 182, 122, 97, 103, 112, 122, 139, + 142, 144, 148, 151, 154, 153, 147, 139, 114, 84, 22, 20, 17, 17, 20, 25, + 29, 26, 29, 28, 29, 44, 92, 102, 104, 97, 93, 95, 88, 83, 75, 60, + 53, 20, 81, 81, 67, 60, 59, 65, 68, 75, 44, 55, 20, 71, 102, 99, + 102, 99, 108, 88, 108, 81, 110, 72, 75, 93, 97, 97, 102, 88, 85, 89, + 83, 97, 99, 44, 18, 89, 107, 111, 102, 104, 103, 104, 91, 89, 99, 92, + 64, 87, 100, 110, 108, 96, 104, 107, 99, 103, 49, 45, 102, 124, 120, 99, + 116, 114, 115, 107, 114, 124, 79, 30, 123, 131, 131, 92, 84, 81, 83, 91, + 92, 85, 111, 100, 65, 79, 92, 114, 96, 100, 97, 103, 107, 93, 60, 72, + 24, 60, 106, 115, 116, 112, 118, 111, 111, 110, 84, 65, 37, 93, 122, 112, + 108, 107, 106, 106, 106, 93, 106, 75, 24, 83, 118, 120, 114, 108, 115, 116, + 114, 108, 81, 57, 17, 111, 134, 131, 102, 97, 92, 112, 99, 93, 99, 57, + 55, 100, 116, 195, 205, 163, 120, 124, 146, 148, 162, 167, 174, 177, 174, 177, + 170, 163, 157, 126, 116, 130, 130, 118, 88, 30, 20, 17, 25, 32, 34, 40, + 51, 53, 60, 48, 87, 114, 130, 127, 124, 116, 120, 115, 122, 123, 123, 104, + 73, 8, 102, 115, 130, 123, 120, 114, 115, 103, 95, 24, 128, 194, 221, 228, + 222, 167, 131, 119, 106, 115, 97, 95, 111, 114, 55, 42, 77, 64, 76, 72, + 77, 80, 83, 71, 104, 140, 128, 132, 202, 197, 185, 115, 111, 120, 143, 155, + 157, 161, 159, 151, 140, 128, 65, 40, 29, 40, 55, 42, 57, 116, 140, 128, + 118, 115, 119, 114, 120, 118, 112, 108, 116, 146, 140, 142, 138, 146, 123, 128, + 151, 163, 136, 124, 140, 108, 134, 134, 140, 139, 135, 136, 132, 135, 136, 76, + 18, 102, 150, 148, 148, 128, 138, 122, 134, 102, 102, 83, 42, 33, 148, 150, + 118, 120, 124, 115, 104, 114, 103, 64, 20, 56, 159, 155, 115, 120, 154, 153, + 131, 112, 151, 130, 68, 12, 63, 116, 115, 93, 114, 112, 116, 112, 106, 69, + 106, 169, 165, 163, 155, 157, 148, 154, 144, 130, 123, 57, 135, 148, 162, 157, + 134, 135, 128, 128, 124, 135, 122, 116, 122, 130, 138, 131, 116, 124, 135, 147, + 148, 142, 134, 63, 135, 153, 144, 154, 142, 140, 150, 157, 157, 147, 97, 114, + 51, 97, 135, 128, 143, 144, 140, 128, 138, 138, 103, 95, 30, 136, 163, 161, + 155, 157, 157, 161, 150, 161, 151, 142, 131, 108, 150, 151, 143, 146, 147, 148, + 151, 114, 102, 95, 102, 148, 151, 165, 161, 169, 166, 167, 167, 144, 138, 138, + 144, 155, 155, 154, 170, 171, 150, 159, 153, 155, 134, 91, 130, 169, 167, 162, + 167, 166, 30, 36, 38, 24, 38, 24, 33, 45, 179, 228, 229, 232, 233, 193, + 130, 118, 131, 140, 123, 114, 138, 147, 153, 148, 144, 120, 46, 9, 9, 10, + 13, 21, 14, 14, 24, 63, 73, 71, 60, 56, 59, 57, 41, 53, 64, 147, + 179, 162, 120, 102, 79, 24, 20, 17, 28, 30, 33, 84, 104, 83, 85, 75, + 75, 75, 88, 204, 187, 173, 99, 103, 116, 130, 143, 148, 155, 151, 155, 154, + 157, 151, 135, 114, 53, 24, 17, 17, 24, 28, 29, 32, 28, 32, 34, 34, + 80, 108, 108, 100, 100, 85, 87, 71, 64, 69, 53, 52, 22, 73, 87, 73, + 55, 59, 63, 63, 73, 45, 55, 21, 75, 93, 99, 95, 111, 80, 89, 93, + 72, 81, 63, 89, 106, 103, 91, 92, 83, 87, 85, 89, 92, 92, 38, 18, + 103, 103, 102, 95, 102, 106, 96, 93, 95, 88, 81, 57, 83, 107, 116, 104, + 103, 104, 102, 95, 99, 48, 33, 95, 119, 122, 115, 112, 99, 112, 100, 114, + 107, 106, 36, 108, 103, 139, 127, 130, 128, 124, 126, 122, 116, 100, 93, 64, + 111, 122, 115, 122, 112, 111, 111, 104, 102, 80, 76, 28, 88, 119, 114, 108, + 99, 103, 92, 89, 102, 97, 67, 38, 87, 110, 115, 106, 110, 106, 104, 107, + 108, 99, 75, 29, 87, 99, 120, 107, 104, 111, 102, 118, 116, 81, 64, 0, + 110, 114, 123, 123, 130, 127, 116, 127, 102, 103, 63, 49, 102, 122, 194, 217, + 201, 136, 119, 136, 150, 159, 167, 178, 182, 179, 179, 181, 173, 161, 127, 126, + 140, 131, 120, 88, 28, 20, 20, 34, 45, 55, 53, 52, 57, 57, 44, 99, + 119, 128, 123, 112, 112, 111, 118, 110, 112, 118, 115, 73, 9, 115, 119, 118, + 115, 111, 115, 97, 71, 97, 33, 122, 199, 218, 230, 206, 131, 115, 110, 114, + 99, 97, 116, 118, 102, 56, 45, 46, 81, 83, 73, 72, 89, 87, 67, 108, + 140, 136, 132, 206, 209, 198, 114, 108, 119, 132, 146, 153, 157, 163, 155, 140, + 128, 71, 36, 28, 49, 68, 32, 73, 134, 123, 124, 127, 134, 131, 136, 132, + 111, 103, 99, 135, 163, 157, 147, 142, 135, 148, 142, 153, 154, 153, 146, 104, + 136, 157, 158, 158, 162, 159, 158, 148, 131, 95, 77, 22, 116, 147, 147, 150, + 150, 146, 124, 128, 122, 114, 89, 42, 110, 151, 144, 143, 143, 142, 150, 147, + 127, 128, 72, 13, 132, 159, 144, 139, 147, 148, 144, 146, 148, 140, 126, 77, + 14, 93, 108, 102, 99, 118, 110, 112, 118, 89, 67, 95, 167, 159, 157, 146, + 147, 144, 147, 147, 159, 118, 63, 128, 131, 134, 161, 166, 158, 142, 154, 130, + 147, 115, 75, 111, 143, 147, 134, 136, 155, 150, 163, 130, 144, 135, 68, 134, + 138, 147, 154, 136, 135, 138, 148, 142, 154, 120, 118, 24, 120, 130, 136, 135, + 134, 139, 132, 131, 138, 131, 107, 42, 167, 162, 148, 151, 148, 151, 154, 155, + 154, 151, 146, 122, 132, 143, 151, 144, 146, 151, 153, 150, 154, 159, 83, 150, + 170, 157, 161, 170, 154, 155, 155, 171, 170, 144, 119, 135, 170, 181, 173, 171, + 169, 162, 148, 169, 167, 150, 92, 138, 171, 162, 166, 163, 162, 16, 18, 20, + 59, 21, 41, 34, 104, 222, 226, 230, 233, 212, 146, 119, 126, 139, 138, 114, + 130, 153, 159, 155, 150, 139, 87, 18, 9, 8, 12, 14, 25, 16, 10, 28, + 65, 57, 59, 46, 38, 40, 37, 49, 45, 59, 114, 185, 174, 126, 104, 75, + 24, 21, 17, 28, 30, 26, 71, 99, 83, 84, 79, 75, 85, 95, 206, 199, + 185, 95, 104, 116, 138, 147, 155, 154, 163, 155, 153, 157, 146, 134, 116, 30, + 20, 17, 16, 25, 37, 36, 30, 33, 36, 30, 49, 96, 106, 108, 100, 83, + 79, 76, 73, 64, 63, 60, 49, 22, 71, 76, 80, 73, 68, 64, 56, 57, + 45, 52, 17, 83, 91, 110, 81, 79, 80, 77, 84, 83, 81, 60, 85, 106, + 99, 93, 93, 104, 96, 96, 89, 81, 85, 41, 21, 83, 107, 92, 108, 92, + 75, 99, 92, 89, 89, 81, 55, 85, 100, 116, 102, 116, 106, 96, 103, 95, + 51, 32, 95, 116, 114, 108, 108, 108, 97, 96, 103, 108, 116, 40, 75, 124, + 95, 119, 128, 114, 127, 122, 111, 122, 108, 80, 61, 114, 119, 106, 96, 95, + 89, 104, 108, 100, 95, 76, 33, 104, 114, 111, 115, 97, 87, 88, 95, 100, + 84, 63, 22, 93, 112, 106, 115, 107, 104, 110, 107, 107, 88, 77, 40, 80, + 104, 118, 115, 115, 100, 112, 108, 111, 79, 56, 0, 107, 120, 119, 120, 127, + 114, 135, 134, 134, 120, 67, 57, 102, 123, 194, 210, 199, 135, 118, 132, 146, + 150, 163, 178, 183, 185, 186, 177, 173, 155, 127, 138, 142, 136, 127, 72, 26, + 20, 24, 51, 55, 53, 52, 56, 64, 67, 51, 104, 127, 128, 114, 118, 122, + 120, 115, 114, 112, 115, 97, 75, 8, 112, 103, 122, 119, 118, 114, 97, 75, + 92, 28, 127, 193, 214, 226, 185, 124, 115, 107, 107, 99, 102, 124, 116, 103, + 55, 40, 40, 65, 79, 84, 73, 85, 87, 60, 104, 138, 128, 138, 208, 205, + 202, 114, 107, 115, 124, 139, 146, 159, 166, 158, 143, 123, 69, 38, 25, 36, + 71, 40, 73, 135, 140, 126, 128, 123, 122, 110, 122, 107, 96, 34, 124, 159, + 154, 142, 143, 139, 150, 154, 155, 140, 155, 142, 103, 144, 157, 163, 157, 150, + 144, 139, 138, 134, 142, 81, 21, 114, 130, 151, 143, 140, 116, 136, 139, 140, + 147, 93, 40, 134, 151, 136, 144, 136, 144, 147, 148, 142, 130, 76, 13, 154, + 158, 147, 143, 150, 159, 153, 153, 158, 150, 144, 80, 12, 103, 102, 97, 103, + 118, 108, 108, 111, 104, 59, 93, 153, 159, 143, 155, 155, 147, 147, 148, 130, + 130, 60, 119, 138, 140, 161, 150, 143, 146, 138, 143, 148, 138, 81, 150, 144, + 142, 138, 148, 153, 161, 153, 139, 142, 132, 76, 130, 142, 153, 143, 138, 139, + 139, 142, 148, 150, 142, 120, 56, 100, 143, 127, 128, 138, 146, 124, 140, 134, + 111, 111, 40, 112, 166, 158, 139, 148, 144, 148, 142, 147, 144, 126, 111, 146, + 143, 148, 154, 151, 147, 150, 148, 138, 159, 100, 154, 178, 170, 163, 174, 167, + 150, 169, 154, 136, 128, 130, 139, 170, 166, 165, 150, 157, 151, 162, 161, 157, + 140, 89, 108, 170, 162, 165, 157, 161, 75, 67, 64, 25, 32, 37, 56, 170, + 218, 236, 224, 218, 162, 132, 122, 138, 142, 128, 119, 151, 163, 163, 155, 147, + 126, 52, 10, 6, 9, 10, 16, 24, 16, 12, 55, 75, 64, 46, 37, 44, + 49, 34, 40, 42, 52, 107, 190, 182, 157, 102, 69, 24, 18, 14, 25, 30, + 32, 57, 103, 83, 80, 83, 72, 71, 83, 213, 204, 186, 95, 108, 119, 132, + 147, 155, 158, 157, 155, 155, 157, 144, 122, 118, 28, 17, 16, 25, 32, 37, + 33, 40, 34, 36, 30, 46, 99, 102, 104, 81, 75, 76, 75, 71, 65, 61, + 55, 61, 34, 79, 75, 64, 67, 65, 76, 53, 68, 44, 52, 16, 76, 85, + 92, 68, 85, 71, 89, 63, 81, 75, 53, 85, 106, 93, 97, 95, 96, 103, + 92, 93, 97, 80, 41, 20, 85, 102, 96, 108, 100, 103, 93, 99, 85, 93, + 80, 56, 84, 100, 103, 103, 116, 103, 89, 99, 89, 57, 30, 96, 120, 122, + 118, 107, 106, 104, 100, 100, 102, 116, 53, 45, 124, 131, 132, 126, 123, 122, + 119, 119, 130, 112, 89, 60, 108, 119, 106, 104, 115, 97, 95, 95, 104, 85, + 77, 32, 92, 122, 100, 104, 95, 88, 100, 89, 95, 88, 64, 24, 84, 106, + 106, 122, 103, 102, 100, 96, 92, 99, 79, 41, 83, 115, 118, 120, 106, 108, + 107, 111, 107, 81, 64, 8, 114, 112, 110, 127, 128, 116, 123, 131, 136, 112, + 59, 64, 103, 115, 165, 220, 206, 140, 115, 127, 147, 151, 163, 174, 173, 177, + 181, 181, 173, 139, 123, 139, 146, 135, 127, 53, 22, 20, 38, 49, 57, 56, + 57, 63, 77, 64, 59, 107, 128, 120, 119, 115, 116, 111, 116, 119, 108, 112, + 95, 69, 8, 96, 119, 115, 116, 114, 115, 85, 77, 97, 33, 131, 204, 213, + 220, 159, 126, 107, 115, 100, 93, 112, 118, 119, 102, 52, 40, 40, 52, 80, + 85, 89, 81, 93, 57, 104, 139, 135, 139, 209, 210, 206, 112, 103, 111, 126, + 131, 140, 159, 165, 159, 143, 118, 68, 41, 30, 40, 59, 44, 69, 124, 131, + 126, 126, 134, 118, 118, 120, 111, 92, 79, 148, 162, 157, 147, 155, 151, 155, + 154, 140, 142, 153, 135, 106, 147, 161, 158, 150, 143, 135, 136, 142, 132, 139, + 85, 25, 112, 144, 146, 138, 138, 140, 140, 136, 142, 116, 92, 42, 87, 142, + 136, 142, 144, 146, 142, 151, 144, 123, 83, 18, 99, 158, 140, 150, 146, 151, + 144, 144, 146, 138, 140, 79, 24, 99, 102, 100, 111, 119, 108, 112, 110, 93, + 60, 96, 157, 159, 153, 159, 165, 158, 148, 147, 136, 118, 68, 120, 148, 144, + 148, 148, 140, 140, 157, 146, 150, 146, 88, 144, 154, 151, 150, 162, 158, 151, + 128, 146, 144, 132, 81, 130, 139, 155, 165, 150, 150, 157, 161, 150, 143, 120, + 122, 55, 111, 135, 118, 132, 128, 139, 132, 142, 127, 110, 100, 40, 120, 167, + 162, 146, 138, 132, 140, 138, 135, 120, 130, 103, 138, 131, 138, 150, 151, 150, + 147, 143, 150, 139, 77, 127, 170, 157, 155, 150, 161, 150, 155, 159, 155, 151, + 103, 120, 171, 167, 155, 167, 169, 143, 163, 162, 154, 138, 85, 116, 165, 163, + 163, 161, 157, 71, 28, 44, 21, 40, 37, 100, 206, 220, 221, 222, 182, 120, + 126, 134, 142, 136, 116, 132, 159, 166, 161, 153, 142, 102, 22, 6, 6, 9, + 14, 16, 21, 14, 13, 61, 65, 57, 41, 42, 45, 51, 41, 42, 48, 49, + 87, 187, 183, 163, 102, 69, 20, 17, 17, 26, 30, 29, 48, 97, 85, 81, + 83, 76, 81, 81, 214, 205, 173, 102, 104, 116, 131, 143, 142, 155, 153, 157, + 157, 151, 138, 119, 118, 26, 16, 14, 25, 38, 32, 33, 38, 41, 37, 32, + 46, 100, 106, 100, 76, 71, 76, 63, 67, 72, 60, 56, 57, 24, 75, 71, + 83, 87, 81, 80, 53, 60, 42, 55, 20, 73, 88, 106, 80, 80, 77, 65, + 72, 77, 79, 55, 91, 100, 88, 96, 97, 103, 88, 85, 88, 89, 80, 45, + 18, 79, 97, 89, 108, 111, 107, 96, 95, 87, 88, 79, 51, 85, 93, 95, + 99, 111, 116, 114, 111, 88, 49, 30, 87, 119, 120, 116, 106, 102, 102, 111, + 96, 106, 114, 85, 45, 111, 127, 118, 114, 102, 115, 124, 128, 107, 102, 81, + 64, 110, 120, 95, 100, 102, 96, 96, 115, 104, 79, 79, 36, 88, 104, 110, + 103, 96, 87, 85, 102, 99, 84, 65, 33, 97, 110, 110, 127, 111, 110, 96, + 104, 112, 102, 91, 42, 84, 116, 107, 102, 107, 103, 96, 102, 107, 83, 64, + 9, 104, 114, 108, 116, 118, 118, 104, 119, 115, 93, 73, 63, 91, 122, 155, + 218, 217, 162, 111, 116, 143, 150, 166, 175, 179, 185, 181, 171, 167, 131, 135, + 147, 143, 136, 123, 33, 22, 18, 36, 55, 59, 59, 64, 71, 72, 71, 60, + 107, 126, 126, 120, 124, 112, 123, 116, 119, 108, 114, 106, 71, 8, 104, 102, + 111, 142, 112, 112, 110, 79, 91, 30, 126, 195, 220, 220, 150, 112, 102, 106, + 93, 100, 116, 116, 120, 114, 45, 37, 33, 46, 76, 87, 84, 72, 91, 61, + 108, 146, 131, 144, 213, 213, 206, 111, 106, 111, 118, 130, 142, 157, 166, 162, + 146, 130, 67, 40, 41, 38, 63, 49, 69, 123, 128, 128, 122, 124, 100, 111, + 135, 99, 97, 83, 151, 154, 142, 135, 140, 148, 154, 134, 130, 143, 154, 124, + 96, 146, 163, 153, 135, 143, 131, 135, 131, 138, 148, 87, 28, 111, 142, 148, + 136, 136, 138, 128, 134, 119, 123, 93, 41, 106, 135, 127, 139, 143, 144, 153, + 148, 138, 132, 84, 22, 100, 151, 142, 144, 144, 143, 142, 143, 154, 134, 127, + 87, 20, 114, 107, 97, 111, 119, 110, 108, 107, 96, 60, 110, 162, 157, 162, + 166, 167, 159, 153, 150, 136, 122, 72, 118, 154, 151, 157, 150, 140, 140, 148, + 138, 146, 146, 56, 150, 153, 153, 150, 157, 150, 144, 127, 144, 142, 138, 85, + 131, 140, 150, 139, 154, 150, 146, 147, 154, 136, 123, 120, 33, 106, 131, 138, + 112, 120, 136, 122, 131, 140, 130, 102, 40, 116, 167, 161, 134, 142, 135, 132, + 132, 131, 115, 120, 104, 135, 157, 148, 147, 148, 155, 146, 144, 143, 153, 81, + 130, 169, 165, 159, 153, 151, 155, 153, 146, 138, 122, 115, 143, 169, 170, 150, + 157, 159, 158, 151, 153, 155, 142, 92, 123, 163, 159, 162, 159, 155, 93, 45, + 20, 20, 37, 45, 161, 209, 224, 214, 206, 159, 116, 119, 139, 144, 138, 120, + 148, 165, 165, 161, 153, 138, 77, 12, 4, 5, 10, 16, 18, 20, 16, 16, + 69, 64, 56, 36, 48, 56, 44, 37, 46, 53, 52, 93, 185, 185, 171, 110, + 71, 24, 16, 16, 28, 32, 30, 34, 93, 91, 79, 89, 79, 81, 83, 217, + 201, 186, 106, 107, 118, 131, 139, 143, 150, 155, 157, 155, 143, 135, 116, 115, + 28, 16, 13, 26, 42, 38, 34, 32, 40, 37, 30, 60, 95, 110, 84, 83, + 72, 75, 75, 73, 67, 69, 53, 53, 24, 81, 72, 67, 67, 71, 76, 52, + 59, 44, 51, 18, 73, 87, 95, 71, 76, 72, 77, 65, 64, 75, 55, 85, + 99, 103, 97, 102, 87, 89, 92, 89, 88, 77, 42, 17, 75, 96, 89, 87, + 100, 100, 93, 93, 88, 87, 75, 44, 79, 97, 108, 102, 112, 102, 97, 88, + 97, 45, 33, 77, 119, 115, 111, 102, 104, 108, 100, 96, 104, 108, 81, 36, + 85, 124, 128, 104, 114, 123, 118, 108, 112, 97, 72, 69, 110, 116, 92, 99, + 108, 97, 97, 85, 97, 97, 77, 40, 92, 110, 106, 110, 106, 87, 87, 84, + 96, 92, 67, 36, 96, 115, 100, 104, 112, 99, 108, 110, 111, 102, 85, 45, + 85, 102, 114, 103, 103, 100, 108, 104, 100, 84, 65, 0, 118, 115, 104, 88, + 119, 115, 124, 122, 115, 100, 71, 55, 85, 124, 115, 220, 222, 189, 114, 114, + 139, 150, 162, 173, 177, 178, 175, 178, 158, 132, 139, 151, 143, 136, 123, 29, + 22, 20, 34, 60, 68, 65, 75, 87, 73, 67, 61, 95, 124, 124, 127, 112, + 122, 116, 115, 119, 106, 111, 108, 75, 10, 103, 107, 110, 112, 139, 124, 115, + 79, 91, 22, 114, 186, 213, 237, 159, 112, 97, 106, 93, 111, 119, 116, 123, + 99, 44, 38, 30, 46, 71, 85, 91, 76, 93, 56, 115, 138, 135, 154, 220, + 220, 208, 107, 100, 111, 123, 130, 144, 155, 167, 162, 147, 139, 68, 45, 26, + 42, 67, 53, 67, 124, 127, 128, 131, 120, 114, 122, 110, 119, 81, 69, 134, + 150, 150, 143, 148, 132, 128, 142, 139, 147, 147, 106, 119, 153, 162, 142, 134, + 136, 142, 131, 140, 134, 139, 89, 29, 119, 132, 142, 128, 139, 132, 136, 134, + 124, 111, 95, 38, 114, 148, 130, 134, 143, 147, 146, 146, 124, 134, 87, 17, + 106, 151, 144, 150, 146, 143, 147, 157, 130, 126, 128, 81, 21, 100, 104, 104, + 110, 116, 115, 106, 103, 85, 60, 103, 161, 150, 163, 162, 161, 157, 163, 159, + 140, 120, 71, 123, 142, 132, 158, 147, 140, 142, 150, 144, 147, 143, 53, 144, + 157, 158, 150, 153, 150, 124, 130, 124, 134, 136, 85, 108, 138, 146, 151, 146, + 148, 140, 148, 150, 154, 128, 120, 26, 103, 138, 136, 130, 116, 130, 132, 130, + 110, 126, 100, 45, 120, 166, 153, 144, 144, 136, 131, 128, 124, 115, 132, 100, + 130, 148, 142, 142, 140, 139, 144, 139, 140, 153, 93, 153, 173, 162, 162, 153, + 151, 158, 155, 134, 147, 144, 110, 154, 165, 161, 165, 153, 151, 135, 146, 140, + 136, 124, 87, 136, 161, 162, 154, 159, 159, 20, 65, 20, 33, 38, 83, 190, + 218, 208, 212, 171, 132, 116, 138, 142, 144, 128, 132, 162, 167, 165, 158, 148, + 130, 36, 8, 5, 6, 10, 17, 20, 29, 17, 14, 76, 63, 49, 40, 57, + 45, 41, 40, 48, 44, 45, 116, 185, 182, 178, 103, 67, 22, 17, 16, 26, + 29, 29, 33, 92, 89, 84, 92, 85, 80, 80, 221, 199, 197, 107, 106, 115, + 127, 136, 143, 147, 151, 157, 151, 142, 135, 115, 114, 25, 14, 10, 25, 46, + 36, 38, 36, 48, 38, 29, 61, 102, 108, 83, 75, 80, 83, 73, 75, 77, + 65, 52, 52, 24, 72, 79, 72, 68, 56, 60, 64, 56, 45, 49, 17, 72, + 92, 103, 77, 77, 83, 61, 79, 67, 75, 51, 89, 102, 99, 91, 88, 97, + 95, 96, 92, 87, 51, 48, 20, 71, 88, 93, 91, 91, 93, 89, 88, 92, + 85, 77, 40, 92, 96, 106, 104, 106, 107, 102, 108, 96, 45, 33, 73, 106, + 114, 108, 92, 108, 108, 91, 102, 100, 96, 88, 46, 83, 123, 131, 126, 100, + 112, 93, 108, 104, 95, 53, 81, 104, 115, 103, 103, 88, 84, 89, 83, 87, + 97, 79, 45, 68, 99, 114, 88, 77, 88, 96, 88, 91, 76, 68, 17, 92, + 107, 106, 100, 99, 91, 100, 108, 102, 97, 87, 51, 57, 96, 111, 112, 116, + 114, 112, 112, 99, 77, 59, 0, 108, 110, 104, 107, 102, 124, 122, 119, 92, + 123, 76, 69, 59, 122, 111, 226, 226, 220, 115, 114, 138, 153, 157, 163, 177, + 179, 177, 177, 148, 136, 154, 154, 143, 135, 123, 30, 22, 18, 38, 67, 63, + 71, 76, 85, 80, 76, 68, 88, 122, 123, 122, 120, 122, 122, 119, 116, 112, + 112, 106, 69, 10, 100, 97, 96, 111, 147, 116, 110, 79, 87, 18, 93, 146, + 193, 237, 165, 112, 108, 107, 110, 118, 114, 120, 114, 69, 42, 36, 32, 46, + 71, 88, 91, 84, 91, 46, 110, 135, 132, 148, 220, 214, 210, 110, 102, 112, + 126, 135, 146, 155, 166, 165, 157, 144, 71, 45, 25, 37, 64, 51, 56, 119, + 122, 131, 126, 124, 127, 116, 106, 112, 81, 24, 126, 154, 136, 127, 138, 142, + 144, 144, 146, 148, 148, 104, 126, 157, 150, 124, 150, 131, 131, 131, 132, 136, + 136, 93, 29, 112, 140, 144, 136, 132, 127, 134, 126, 136, 138, 102, 37, 134, + 143, 132, 131, 142, 142, 142, 143, 127, 119, 89, 13, 111, 148, 146, 146, 144, + 157, 154, 128, 130, 128, 138, 77, 17, 108, 102, 100, 97, 100, 116, 103, 104, + 88, 52, 96, 151, 155, 158, 157, 165, 150, 144, 143, 138, 124, 71, 114, 148, + 143, 154, 143, 140, 144, 148, 139, 151, 144, 53, 148, 153, 162, 144, 146, 161, + 138, 139, 139, 134, 136, 93, 100, 140, 135, 147, 161, 157, 146, 150, 153, 146, + 126, 126, 52, 95, 140, 111, 124, 115, 132, 120, 111, 115, 107, 110, 49, 114, + 127, 158, 140, 135, 136, 132, 134, 126, 119, 122, 92, 132, 142, 143, 142, 138, + 142, 147, 143, 135, 134, 96, 158, 177, 167, 163, 144, 157, 146, 142, 158, 134, + 143, 126, 161, 144, 134, 139, 131, 144, 134, 127, 115, 130, 108, 93, 120, 162, + 146, 144, 157, 163, 64, 25, 18, 41, 45, 114, 189, 213, 204, 204, 134, 136, + 134, 139, 144, 144, 122, 150, 169, 169, 165, 157, 147, 120, 26, 6, 5, 6, + 12, 18, 12, 20, 17, 13, 68, 56, 48, 52, 40, 40, 38, 36, 42, 53, + 46, 126, 185, 182, 166, 99, 61, 22, 16, 14, 30, 38, 33, 37, 83, 99, + 76, 84, 83, 73, 76, 225, 199, 205, 108, 106, 115, 127, 135, 146, 151, 153, + 153, 138, 139, 136, 122, 119, 22, 13, 10, 29, 41, 32, 37, 32, 53, 38, + 29, 63, 92, 92, 80, 49, 49, 68, 71, 53, 55, 59, 57, 61, 37, 84, + 76, 71, 56, 61, 55, 63, 53, 42, 46, 14, 72, 80, 93, 65, 77, 80, + 72, 80, 79, 71, 42, 84, 102, 110, 106, 106, 99, 87, 79, 85, 63, 51, + 46, 21, 57, 77, 81, 63, 73, 92, 83, 67, 73, 83, 69, 40, 79, 89, + 106, 108, 89, 81, 79, 77, 63, 55, 29, 68, 114, 116, 112, 110, 99, 97, + 96, 102, 93, 99, 96, 51, 67, 118, 127, 116, 95, 119, 112, 103, 97, 88, + 52, 67, 103, 114, 103, 97, 85, 88, 80, 83, 83, 88, 80, 42, 64, 79, + 77, 77, 79, 77, 81, 81, 89, 89, 65, 18, 91, 108, 108, 100, 100, 99, + 92, 97, 89, 88, 87, 55, 68, 91, 114, 114, 122, 112, 104, 111, 76, 81, + 69, 6, 107, 110, 100, 107, 89, 111, 115, 118, 107, 114, 63, 65, 48, 119, + 116, 226, 232, 222, 116, 111, 139, 151, 155, 159, 171, 177, 174, 165, 136, 147, + 153, 154, 146, 140, 126, 28, 21, 18, 40, 64, 68, 69, 75, 83, 83, 79, + 68, 77, 115, 124, 127, 115, 119, 120, 114, 114, 110, 103, 89, 68, 12, 92, + 100, 112, 110, 111, 106, 92, 88, 92, 20, 73, 122, 163, 157, 120, 106, 96, + 83, 100, 97, 103, 99, 68, 44, 40, 34, 33, 44, 75, 87, 89, 83, 91, + 48, 114, 134, 123, 122, 213, 224, 220, 110, 97, 112, 127, 136, 146, 155, 169, + 163, 144, 138, 67, 46, 26, 34, 64, 56, 51, 93, 123, 120, 126, 122, 123, + 122, 111, 114, 79, 48, 150, 148, 131, 140, 150, 153, 151, 153, 148, 154, 143, + 100, 131, 162, 140, 142, 139, 134, 134, 139, 134, 139, 135, 95, 32, 122, 138, + 143, 134, 128, 127, 126, 134, 134, 124, 102, 44, 95, 136, 131, 122, 128, 131, + 130, 123, 131, 128, 97, 26, 112, 110, 158, 154, 155, 157, 158, 115, 131, 128, + 131, 93, 30, 102, 97, 97, 96, 102, 99, 114, 103, 91, 56, 104, 154, 148, + 151, 161, 144, 146, 144, 136, 142, 123, 81, 119, 151, 142, 144, 144, 155, 139, + 157, 144, 136, 138, 77, 144, 154, 153, 151, 155, 148, 148, 147, 139, 146, 142, + 110, 93, 120, 138, 135, 116, 110, 118, 135, 123, 123, 126, 123, 52, 116, 142, + 127, 102, 102, 88, 114, 115, 104, 110, 112, 73, 97, 123, 134, 134, 128, 128, + 135, 131, 128, 130, 146, 127, 139, 139, 153, 146, 146, 136, 147, 146, 139, 140, + 135, 126, 174, 171, 142, 144, 142, 140, 142, 135, 130, 135, 135, 142, 128, 130, + 136, 124, 115, 139, 147, 154, 143, 146, 142, 148, 155, 158, 155, 150, 146, 25, + 25, 13, 38, 48, 126, 191, 202, 209, 146, 139, 122, 139, 143, 148, 142, 127, + 162, 171, 169, 165, 155, 143, 106, 18, 6, 4, 6, 9, 17, 16, 30, 14, + 14, 69, 52, 41, 46, 38, 36, 34, 36, 44, 41, 51, 136, 179, 177, 162, + 102, 57, 21, 17, 16, 29, 33, 33, 30, 71, 97, 91, 75, 84, 77, 75, + 225, 208, 210, 108, 107, 116, 131, 144, 143, 147, 146, 139, 131, 136, 134, 122, + 122, 20, 13, 10, 29, 37, 37, 32, 32, 32, 48, 49, 55, 64, 67, 60, + 56, 60, 55, 56, 59, 80, 71, 59, 52, 25, 68, 76, 56, 51, 52, 51, + 49, 46, 53, 52, 21, 72, 88, 85, 67, 63, 63, 57, 67, 67, 65, 46, + 65, 84, 100, 67, 72, 63, 63, 56, 48, 40, 34, 51, 45, 49, 51, 51, + 60, 46, 48, 48, 48, 49, 46, 41, 36, 59, 59, 61, 56, 48, 48, 52, + 52, 44, 44, 59, 59, 93, 106, 99, 83, 93, 99, 102, 88, 87, 102, 95, + 85, 63, 72, 116, 107, 83, 96, 96, 97, 96, 81, 56, 61, 93, 96, 81, + 81, 83, 91, 92, 80, 79, 81, 77, 75, 68, 79, 80, 80, 69, 77, 67, + 84, 79, 84, 68, 30, 97, 91, 93, 92, 91, 91, 89, 92, 87, 88, 72, + 85, 51, 59, 63, 68, 65, 69, 68, 69, 69, 77, 64, 4, 45, 114, 107, + 60, 81, 99, 104, 96, 89, 103, 95, 77, 55, 77, 96, 220, 233, 224, 111, + 108, 132, 147, 151, 150, 157, 170, 170, 165, 143, 158, 158, 157, 148, 140, 126, + 25, 20, 20, 34, 61, 68, 75, 76, 75, 80, 85, 84, 68, 79, 100, 110, + 108, 107, 107, 110, 111, 111, 106, 104, 68, 12, 87, 100, 104, 95, 97, 84, + 87, 88, 88, 36, 57, 77, 96, 118, 87, 56, 48, 37, 34, 37, 37, 37, + 34, 40, 36, 30, 30, 40, 77, 80, 81, 68, 89, 49, 107, 120, 136, 120, + 201, 222, 218, 107, 100, 116, 130, 140, 146, 158, 169, 165, 146, 136, 63, 48, + 49, 33, 64, 63, 53, 63, 92, 100, 99, 107, 107, 116, 106, 106, 93, 68, + 148, 138, 144, 144, 135, 135, 128, 131, 139, 134, 115, 96, 119, 138, 148, 140, + 138, 143, 139, 138, 119, 107, 114, 93, 37, 106, 118, 136, 144, 147, 136, 140, + 131, 122, 97, 104, 44, 102, 122, 140, 128, 128, 127, 124, 108, 119, 111, 96, + 26, 97, 83, 89, 107, 118, 119, 100, 107, 120, 89, 100, 91, 30, 104, 102, + 103, 103, 106, 100, 97, 103, 95, 61, 102, 116, 118, 114, 102, 112, 134, 126, + 142, 128, 116, 95, 83, 134, 126, 139, 124, 134, 131, 138, 132, 128, 139, 37, + 134, 146, 143, 132, 139, 139, 143, 135, 134, 142, 134, 124, 130, 135, 135, 132, + 132, 127, 128, 134, 131, 123, 124, 123, 22, 108, 84, 115, 75, 110, 91, 95, + 118, 114, 96, 107, 111, 118, 115, 122, 122, 120, 119, 123, 127, 124, 112, 131, + 104, 124, 126, 131, 134, 136, 119, 123, 134, 130, 132, 128, 140, 147, 127, 155, + 147, 128, 138, 150, 147, 116, 132, 132, 126, 128, 138, 143, 143, 138, 142, 144, + 126, 107, 102, 95, 147, 99, 147, 163, 163, 173, 14, 17, 17, 40, 48, 150, + 209, 148, 143, 150, 112, 147, 131, 144, 146, 138, 138, 169, 173, 169, 162, 154, + 138, 89, 14, 6, 5, 8, 12, 17, 16, 20, 14, 9, 61, 53, 37, 37, + 29, 34, 38, 33, 45, 42, 48, 151, 181, 175, 163, 95, 53, 21, 17, 16, + 32, 34, 37, 36, 48, 71, 89, 84, 83, 76, 72, 225, 217, 220, 110, 107, + 112, 130, 131, 131, 134, 132, 138, 142, 139, 138, 127, 124, 18, 12, 9, 25, + 28, 30, 36, 38, 34, 38, 37, 40, 46, 44, 41, 46, 48, 46, 51, 48, + 49, 51, 51, 49, 48, 53, 51, 51, 48, 48, 51, 51, 46, 46, 42, 24, + 64, 89, 59, 53, 49, 49, 52, 51, 49, 51, 42, 51, 51, 49, 51, 48, + 45, 44, 44, 42, 40, 36, 30, 20, 20, 18, 20, 18, 16, 16, 16, 14, + 16, 13, 13, 14, 13, 18, 21, 21, 17, 18, 25, 37, 33, 37, 34, 48, + 73, 71, 84, 93, 83, 77, 84, 87, 87, 85, 85, 75, 67, 76, 69, 64, + 56, 48, 46, 46, 55, 48, 38, 51, 55, 63, 59, 59, 81, 83, 81, 64, + 63, 51, 46, 56, 64, 73, 75, 75, 60, 51, 53, 68, 75, 73, 67, 29, + 55, 61, 53, 64, 63, 64, 64, 68, 68, 69, 72, 73, 71, 77, 55, 53, + 46, 32, 24, 21, 29, 34, 28, 0, 24, 24, 34, 30, 36, 40, 46, 51, + 60, 71, 96, 81, 73, 69, 107, 217, 234, 225, 110, 106, 115, 124, 140, 150, + 158, 157, 162, 159, 144, 159, 159, 155, 147, 135, 123, 24, 20, 20, 28, 37, + 53, 53, 63, 68, 71, 75, 71, 71, 88, 91, 93, 92, 95, 93, 96, 96, + 100, 102, 93, 69, 17, 95, 99, 80, 71, 72, 64, 53, 77, 73, 40, 38, + 40, 63, 49, 44, 38, 41, 33, 34, 44, 42, 33, 33, 33, 36, 48, 51, + 51, 53, 56, 55, 57, 91, 46, 68, 68, 84, 123, 191, 224, 216, 108, 104, + 115, 126, 139, 148, 158, 171, 163, 144, 132, 63, 51, 22, 45, 48, 55, 51, + 61, 61, 63, 59, 60, 61, 67, 63, 63, 72, 45, 68, 123, 123, 111, 108, + 120, 123, 115, 112, 118, 112, 110, 119, 118, 118, 122, 124, 116, 116, 104, 93, + 79, 87, 85, 87, 97, 91, 60, 103, 97, 87, 112, 84, 73, 99, 93, 91, + 100, 97, 96, 92, 92, 85, 88, 77, 93, 59, 53, 12, 40, 37, 55, 59, + 53, 59, 73, 73, 77, 89, 104, 91, 73, 91, 95, 89, 84, 89, 95, 92, + 99, 100, 99, 77, 84, 93, 88, 81, 80, 112, 123, 122, 114, 114, 115, 115, + 116, 116, 118, 112, 111, 110, 111, 111, 107, 95, 36, 84, 128, 95, 97, 96, + 130, 97, 103, 104, 119, 111, 102, 97, 114, 107, 106, 103, 99, 99, 100, 100, + 97, 93, 91, 13, 108, 97, 89, 80, 76, 75, 68, 67, 69, 65, 68, 67, + 73, 80, 83, 84, 95, 119, 139, 161, 173, 179, 238, 236, 233, 225, 221, 222, + 220, 228, 220, 213, 209, 198, 153, 126, 142, 139, 143, 114, 150, 140, 193, 204, + 202, 194, 197, 167, 146, 150, 134, 128, 122, 130, 150, 165, 170, 197, 174, 150, + 126, 142, 84, 143, 143, 53, 41, 46, 59, 77, 165, 114, 144, 106, 112, 110, + 135, 135, 143, 153, 144, 144, 173, 174, 166, 158, 146, 131, 44, 9, 5, 6, + 12, 12, 6, 13, 12, 14, 12, 21, 25, 22, 25, 24, 24, 25, 26, 44, + 37, 33, 131, 173, 173, 162, 95, 45, 18, 16, 18, 29, 32, 33, 34, 40, + 42, 42, 44, 48, 80, 60, 229, 224, 222, 111, 104, 112, 128, 123, 123, 122, + 124, 127, 139, 138, 140, 128, 122, 16, 9, 9, 17, 16, 18, 20, 20, 17, + 20, 25, 28, 32, 41, 41, 44, 46, 46, 45, 51, 55, 57, 63, 55, 51, + 63, 71, 60, 73, 80, 93, 127, 110, 51, 46, 56, 49, 44, 44, 42, 42, + 53, 45, 44, 33, 30, 30, 32, 28, 38, 36, 36, 36, 41, 33, 38, 34, + 65, 85, 115, 116, 111, 122, 108, 114, 104, 118, 115, 100, 80, 83, 80, 85, + 102, 103, 88, 80, 65, 49, 37, 32, 25, 18, 18, 16, 16, 13, 13, 14, + 16, 13, 16, 18, 18, 17, 16, 21, 28, 84, 89, 95, 102, 106, 103, 73, + 77, 46, 111, 110, 122, 96, 53, 51, 68, 45, 48, 89, 97, 112, 102, 106, + 115, 119, 116, 104, 88, 75, 65, 45, 44, 64, 30, 17, 17, 17, 17, 13, + 13, 14, 16, 10, 12, 13, 13, 13, 16, 44, 52, 79, 95, 89, 93, 84, + 56, 52, 0, 77, 115, 104, 76, 107, 77, 87, 84, 64, 53, 52, 59, 57, + 60, 97, 209, 221, 214, 100, 97, 110, 111, 107, 119, 136, 151, 157, 162, 139, + 154, 161, 157, 144, 138, 122, 20, 17, 17, 14, 14, 16, 17, 17, 16, 18, + 30, 28, 18, 22, 46, 63, 44, 48, 28, 33, 30, 53, 37, 77, 26, 17, + 100, 53, 44, 42, 42, 38, 44, 36, 32, 33, 30, 32, 34, 34, 41, 37, + 29, 30, 33, 32, 34, 36, 34, 36, 34, 36, 38, 41, 45, 57, 64, 69, + 95, 45, 96, 120, 120, 123, 187, 212, 199, 111, 104, 116, 130, 138, 146, 162, + 170, 165, 143, 120, 57, 53, 22, 36, 25, 34, 9, 9, 9, 6, 6, 8, + 6, 5, 5, 5, 5, 5, 6, 8, 9, 9, 14, 14, 16, 17, 22, 24, + 26, 26, 34, 36, 44, 48, 51, 56, 61, 63, 75, 99, 103, 93, 85, 93, + 79, 84, 89, 84, 79, 87, 83, 85, 96, 102, 108, 103, 99, 96, 93, 97, + 100, 97, 93, 89, 93, 96, 52, 61, 126, 139, 103, 92, 96, 67, 55, 46, + 52, 51, 57, 49, 59, 81, 84, 72, 88, 91, 87, 76, 91, 93, 100, 112, + 103, 103, 96, 95, 91, 88, 72, 60, 59, 63, 52, 53, 48, 49, 46, 53, + 51, 53, 46, 59, 59, 102, 55, 42, 41, 37, 33, 30, 29, 28, 24, 20, + 22, 21, 20, 18, 20, 20, 20, 24, 6, 29, 29, 21, 40, 63, 102, 73, + 77, 84, 110, 135, 171, 177, 190, 199, 190, 181, 169, 165, 155, 159, 165, 151, + 143, 146, 150, 165, 177, 179, 190, 197, 201, 199, 201, 193, 195, 198, 195, 177, + 178, 183, 182, 104, 95, 89, 146, 136, 174, 199, 205, 208, 205, 205, 208, 208, + 205, 213, 216, 210, 212, 208, 212, 208, 198, 205, 202, 161, 123, 150, 65, 56, + 76, 80, 92, 88, 144, 166, 162, 163, 126, 153, 108, 110, 115, 118, 118, 136, + 146, 171, 170, 167, 154, 143, 127, 40, 9, 6, 12, 18, 28, 25, 32, 18, + 26, 28, 30, 40, 42, 44, 48, 55, 57, 49, 34, 49, 36, 122, 171, 170, + 120, 89, 41, 20, 16, 29, 34, 33, 30, 33, 40, 45, 52, 57, 72, 72, + 72, 226, 225, 224, 111, 104, 112, 120, 118, 127, 135, 138, 139, 136, 139, 147, + 132, 128, 20, 12, 9, 20, 29, 37, 38, 45, 59, 153, 161, 177, 183, 185, + 182, 190, 199, 204, 198, 199, 197, 195, 199, 201, 199, 195, 197, 194, 191, 187, + 193, 189, 193, 134, 102, 59, 69, 75, 107, 150, 177, 189, 189, 177, 170, 159, + 158, 161, 148, 139, 122, 108, 118, 116, 110, 119, 124, 100, 142, 169, 189, 195, + 201, 197, 190, 189, 183, 151, 122, 93, 107, 107, 97, 111, 107, 116, 104, 116, + 103, 99, 88, 61, 45, 26, 87, 107, 102, 96, 96, 100, 103, 110, 102, 100, + 92, 95, 96, 91, 89, 106, 106, 106, 108, 103, 92, 84, 41, 115, 130, 103, + 100, 130, 127, 122, 114, 100, 127, 154, 165, 171, 165, 169, 170, 165, 157, 143, + 122, 106, 99, 73, 65, 30, 44, 116, 124, 102, 104, 93, 118, 104, 107, 99, + 96, 89, 99, 115, 104, 97, 95, 106, 91, 93, 106, 81, 56, 2, 100, 118, + 127, 131, 96, 127, 123, 106, 110, 88, 75, 73, 95, 99, 102, 225, 234, 226, + 111, 107, 118, 116, 118, 116, 120, 120, 127, 127, 143, 161, 162, 157, 143, 134, + 115, 22, 21, 20, 38, 49, 51, 56, 53, 55, 53, 61, 53, 34, 59, 112, + 111, 95, 99, 100, 65, 42, 38, 42, 48, 51, 37, 67, 87, 95, 95, 102, + 110, 108, 93, 85, 93, 110, 118, 106, 99, 92, 91, 83, 83, 51, 51, 45, + 41, 44, 53, 63, 63, 63, 69, 84, 91, 85, 89, 99, 42, 120, 122, 130, + 128, 201, 218, 190, 110, 107, 116, 131, 138, 148, 161, 173, 166, 165, 138, 67, + 57, 17, 18, 26, 29, 53, 104, 107, 114, 115, 116, 120, 123, 123, 119, 80, + 49, 104, 132, 147, 140, 139, 142, 151, 144, 139, 136, 142, 131, 143, 159, 151, + 147, 143, 128, 122, 126, 134, 187, 198, 208, 194, 173, 139, 108, 100, 95, 103, + 111, 148, 166, 181, 161, 163, 159, 153, 162, 142, 139, 134, 132, 104, 89, 88, + 85, 42, 123, 148, 167, 169, 151, 154, 119, 115, 120, 132, 110, 110, 135, 171, + 177, 185, 186, 186, 186, 185, 175, 183, 189, 201, 206, 201, 189, 179, 144, 134, + 103, 99, 93, 97, 77, 22, 52, 128, 148, 118, 130, 122, 127, 119, 97, 110, + 51, 59, 138, 151, 140, 143, 155, 151, 140, 161, 163, 161, 131, 128, 167, 170, + 193, 194, 189, 186, 182, 177, 174, 118, 63, 87, 85, 148, 183, 193, 201, 210, + 208, 209, 212, 213, 206, 208, 208, 197, 191, 190, 189, 175, 170, 167, 167, 162, + 157, 153, 166, 171, 178, 191, 193, 177, 179, 171, 162, 171, 171, 170, 187, 167, + 181, 169, 142, 187, 229, 225, 234, 212, 233, 206, 228, 221, 232, 220, 220, 214, + 212, 210, 210, 205, 220, 217, 169, 122, 161, 159, 166, 97, 111, 84, 108, 195, + 199, 234, 197, 110, 111, 114, 130, 134, 140, 128, 138, 154, 174, 171, 158, 148, + 143, 127, 37, 10, 6, 24, 25, 40, 42, 44, 45, 49, 64, 67, 76, 68, + 77, 76, 81, 77, 79, 61, 51, 30, 61, 128, 165, 104, 71, 26, 21, 18, + 32, 46, 46, 46, 41, 45, 81, 91, 87, 87, 73, 71, 230, 228, 224, 111, + 103, 114, 120, 136, 142, 142, 143, 142, 140, 136, 144, 131, 128, 21, 9, 9, + 24, 40, 49, 118, 64, 124, 165, 186, 191, 191, 194, 202, 206, 212, 213, 218, + 226, 229, 230, 233, 234, 236, 234, 240, 233, 241, 242, 242, 236, 230, 230, 225, + 225, 224, 216, 216, 218, 216, 217, 212, 208, 201, 195, 193, 194, 186, 175, 166, + 150, 146, 103, 106, 135, 163, 183, 199, 209, 218, 217, 216, 218, 216, 214, 210, + 205, 199, 181, 130, 111, 97, 87, 92, 96, 102, 108, 107, 107, 104, 81, 59, + 28, 107, 100, 114, 107, 110, 108, 96, 95, 96, 104, 104, 81, 73, 115, 120, + 127, 126, 120, 104, 97, 108, 81, 44, 126, 126, 124, 106, 135, 103, 114, 130, + 146, 186, 212, 222, 220, 217, 216, 210, 205, 201, 193, 190, 171, 162, 103, 67, + 37, 115, 120, 103, 102, 111, 115, 119, 102, 99, 112, 118, 107, 85, 111, 110, + 107, 107, 106, 104, 106, 102, 95, 64, 0, 88, 114, 120, 115, 91, 93, 112, + 111, 92, 103, 107, 59, 95, 119, 102, 233, 240, 226, 110, 102, 112, 130, 136, + 140, 144, 143, 142, 143, 147, 162, 159, 151, 144, 135, 122, 20, 20, 20, 48, + 49, 61, 77, 73, 75, 67, 64, 59, 44, 96, 123, 131, 128, 131, 123, 115, + 106, 119, 112, 95, 99, 110, 118, 107, 112, 107, 115, 124, 126, 106, 116, 111, + 132, 150, 146, 139, 153, 151, 150, 111, 97, 93, 85, 83, 73, 81, 76, 65, + 53, 75, 80, 75, 73, 77, 99, 52, 119, 130, 130, 128, 222, 225, 195, 107, + 104, 114, 130, 140, 147, 161, 171, 166, 148, 142, 67, 68, 75, 79, 81, 110, + 107, 119, 123, 126, 124, 131, 116, 122, 123, 120, 123, 57, 140, 140, 143, 153, + 148, 170, 182, 194, 197, 204, 201, 202, 209, 214, 212, 208, 209, 208, 206, 205, + 208, 212, 212, 213, 210, 205, 198, 198, 174, 170, 183, 162, 171, 190, 195, 206, + 204, 199, 205, 198, 186, 186, 197, 187, 169, 107, 84, 99, 52, 138, 163, 154, + 169, 173, 158, 169, 165, 150, 165, 165, 191, 194, 208, 206, 216, 209, 209, 208, + 209, 213, 212, 216, 221, 218, 220, 217, 214, 212, 195, 179, 143, 116, 108, 77, + 18, 140, 161, 153, 159, 161, 154, 159, 154, 132, 87, 45, 153, 193, 198, 212, + 204, 202, 208, 214, 220, 220, 214, 217, 216, 216, 210, 213, 198, 208, 208, 199, + 170, 189, 171, 87, 76, 118, 177, 193, 199, 206, 208, 212, 217, 221, 220, 218, + 209, 217, 217, 187, 139, 167, 194, 190, 189, 183, 169, 171, 161, 150, 136, 138, + 118, 136, 123, 131, 155, 158, 124, 163, 166, 143, 159, 167, 146, 135, 144, 187, + 208, 174, 161, 136, 136, 140, 142, 171, 204, 209, 214, 209, 204, 205, 210, 213, + 154, 124, 119, 143, 157, 167, 79, 80, 84, 114, 185, 206, 241, 216, 116, 110, + 127, 135, 142, 154, 161, 165, 169, 167, 159, 158, 148, 143, 128, 33, 9, 6, + 20, 34, 36, 53, 44, 55, 65, 61, 65, 71, 71, 71, 56, 77, 64, 68, + 63, 48, 36, 49, 64, 144, 89, 51, 29, 24, 16, 41, 37, 37, 37, 32, + 72, 92, 88, 77, 76, 67, 68, 237, 230, 226, 106, 103, 119, 127, 142, 139, + 144, 147, 146, 140, 136, 142, 130, 127, 21, 10, 10, 20, 33, 106, 41, 59, + 71, 114, 174, 182, 189, 198, 201, 204, 209, 214, 220, 225, 226, 229, 232, 233, + 233, 236, 237, 234, 240, 240, 240, 234, 228, 220, 214, 217, 217, 222, 224, 218, + 214, 214, 210, 195, 197, 183, 174, 189, 177, 175, 130, 92, 128, 147, 174, 194, + 209, 210, 208, 202, 214, 220, 218, 221, 218, 218, 214, 213, 209, 205, 198, 179, + 155, 112, 89, 83, 93, 91, 91, 95, 93, 96, 64, 37, 110, 104, 114, 104, + 99, 88, 85, 85, 87, 85, 87, 64, 87, 127, 110, 96, 124, 124, 116, 89, + 85, 79, 44, 130, 127, 136, 127, 138, 140, 132, 157, 212, 225, 233, 230, 222, + 216, 206, 194, 169, 155, 131, 108, 88, 80, 148, 80, 48, 124, 115, 120, 126, + 122, 119, 114, 104, 115, 107, 95, 73, 110, 118, 115, 97, 99, 108, 103, 97, + 107, 76, 59, 0, 93, 87, 93, 107, 112, 112, 119, 127, 123, 110, 108, 65, + 92, 116, 102, 238, 242, 237, 112, 104, 115, 136, 144, 151, 158, 158, 158, 161, + 158, 155, 151, 147, 147, 138, 128, 22, 20, 22, 45, 68, 67, 64, 73, 73, + 76, 67, 67, 46, 104, 130, 135, 134, 130, 135, 122, 123, 127, 136, 127, 107, + 93, 116, 159, 187, 193, 201, 209, 214, 216, 210, 214, 221, 224, 222, 222, 230, + 229, 221, 216, 220, 201, 206, 204, 208, 199, 174, 95, 55, 51, 71, 71, 77, + 72, 100, 55, 107, 120, 132, 139, 228, 233, 222, 103, 99, 114, 128, 139, 150, + 159, 170, 171, 165, 175, 111, 102, 97, 102, 104, 114, 116, 132, 138, 143, 131, + 132, 130, 142, 131, 126, 122, 122, 95, 138, 128, 126, 143, 193, 201, 202, 190, + 198, 210, 206, 216, 204, 202, 217, 204, 217, 217, 209, 205, 204, 198, 201, 202, + 206, 214, 205, 199, 157, 159, 190, 204, 205, 205, 198, 214, 195, 183, 150, 153, + 138, 128, 142, 131, 116, 73, 96, 53, 126, 140, 157, 150, 153, 166, 150, 144, + 157, 179, 187, 204, 206, 201, 202, 191, 201, 205, 209, 202, 201, 195, 189, 191, + 195, 199, 209, 212, 212, 212, 209, 202, 153, 110, 92, 18, 140, 161, 154, 153, + 150, 147, 148, 158, 151, 114, 61, 159, 194, 197, 190, 208, 214, 225, 225, 218, + 218, 222, 218, 206, 201, 206, 197, 193, 186, 174, 178, 170, 165, 148, 99, 87, + 142, 174, 191, 198, 204, 206, 218, 217, 193, 183, 170, 155, 157, 155, 140, 116, + 142, 165, 202, 191, 169, 157, 142, 139, 138, 136, 132, 127, 135, 135, 140, 142, + 150, 151, 155, 159, 134, 128, 155, 171, 146, 134, 130, 134, 127, 120, 119, 112, + 112, 112, 111, 114, 116, 119, 124, 130, 127, 120, 122, 118, 114, 135, 89, 103, + 112, 68, 72, 87, 99, 199, 210, 206, 191, 146, 114, 120, 140, 162, 165, 166, + 170, 170, 166, 159, 153, 147, 143, 130, 32, 9, 6, 24, 40, 34, 49, 51, + 63, 44, 76, 80, 60, 53, 60, 55, 65, 65, 64, 69, 49, 36, 21, 52, + 139, 85, 51, 24, 18, 18, 40, 40, 37, 36, 37, 80, 92, 84, 75, 71, + 67, 67, 241, 234, 230, 112, 103, 119, 130, 139, 142, 150, 147, 142, 134, 134, + 138, 131, 124, 18, 9, 10, 20, 38, 55, 52, 60, 114, 146, 181, 181, 135, + 167, 144, 148, 148, 146, 140, 139, 138, 136, 131, 132, 130, 127, 126, 134, 127, + 122, 122, 123, 116, 114, 115, 116, 171, 187, 220, 191, 185, 179, 165, 140, 115, + 108, 107, 108, 114, 107, 104, 122, 126, 182, 208, 209, 212, 218, 193, 177, 183, + 181, 167, 157, 147, 151, 150, 153, 154, 177, 191, 191, 194, 122, 99, 72, 87, + 85, 61, 76, 84, 93, 69, 34, 84, 104, 118, 97, 84, 92, 97, 85, 80, + 75, 92, 59, 81, 128, 126, 100, 104, 115, 93, 93, 89, 77, 55, 134, 136, + 120, 132, 138, 143, 151, 216, 236, 238, 232, 222, 197, 147, 120, 106, 99, 92, + 89, 77, 57, 60, 80, 72, 29, 81, 112, 110, 112, 103, 96, 91, 97, 95, + 111, 99, 56, 103, 114, 108, 99, 108, 103, 102, 96, 107, 79, 53, 0, 92, + 96, 111, 110, 110, 100, 102, 111, 110, 115, 81, 46, 97, 127, 91, 237, 242, + 238, 116, 106, 115, 142, 147, 155, 155, 165, 165, 170, 165, 165, 161, 150, 144, + 140, 128, 18, 17, 18, 45, 72, 69, 67, 72, 75, 91, 67, 67, 37, 99, + 126, 126, 128, 134, 132, 128, 132, 122, 119, 106, 67, 118, 136, 123, 179, 202, + 209, 216, 214, 220, 221, 225, 225, 229, 230, 234, 234, 230, 230, 229, 226, 228, + 226, 225, 222, 220, 195, 104, 61, 56, 72, 80, 71, 81, 96, 56, 79, 114, + 130, 128, 236, 238, 232, 106, 99, 114, 128, 139, 148, 161, 170, 174, 170, 146, + 177, 143, 148, 191, 204, 209, 210, 210, 212, 212, 209, 209, 212, 209, 204, 197, + 153, 119, 122, 126, 85, 139, 147, 146, 208, 217, 199, 214, 216, 216, 191, 175, + 155, 165, 186, 204, 202, 201, 185, 186, 165, 177, 174, 170, 169, 166, 153, 139, + 177, 204, 213, 212, 201, 198, 175, 154, 130, 123, 123, 120, 119, 122, 128, 80, + 73, 88, 49, 126, 142, 157, 165, 147, 154, 162, 131, 148, 178, 194, 212, 214, + 190, 179, 153, 151, 150, 155, 148, 147, 139, 135, 134, 136, 139, 157, 163, 166, + 177, 187, 198, 183, 123, 95, 24, 96, 163, 153, 150, 153, 147, 153, 153, 155, + 127, 57, 153, 191, 204, 208, 225, 241, 212, 224, 224, 222, 216, 202, 193, 205, + 198, 190, 182, 119, 107, 103, 95, 106, 103, 93, 88, 136, 179, 191, 206, 214, + 195, 183, 162, 138, 143, 134, 135, 136, 134, 140, 108, 118, 158, 171, 201, 181, + 158, 163, 139, 138, 130, 140, 139, 144, 143, 142, 144, 148, 150, 155, 148, 123, + 122, 136, 166, 147, 153, 127, 124, 123, 123, 122, 123, 119, 112, 112, 106, 112, + 107, 114, 111, 112, 114, 115, 127, 120, 81, 80, 122, 110, 45, 63, 73, 81, + 199, 213, 236, 195, 119, 111, 132, 147, 162, 169, 165, 167, 167, 167, 161, 155, + 150, 143, 123, 25, 8, 5, 18, 36, 42, 48, 52, 63, 45, 77, 75, 55, + 61, 51, 52, 64, 81, 79, 59, 44, 36, 24, 53, 124, 88, 72, 49, 25, + 20, 36, 30, 37, 25, 30, 88, 95, 77, 81, 73, 67, 60, 242, 236, 230, + 111, 104, 116, 131, 138, 143, 144, 138, 134, 131, 134, 134, 128, 120, 18, 10, + 8, 18, 33, 37, 55, 34, 71, 104, 136, 111, 147, 123, 111, 111, 115, 114, + 103, 112, 116, 114, 106, 107, 107, 108, 106, 106, 103, 106, 103, 103, 103, 103, + 102, 103, 107, 108, 108, 106, 103, 102, 102, 100, 102, 103, 106, 108, 111, 114, + 118, 123, 126, 198, 208, 206, 209, 190, 157, 131, 116, 111, 112, 111, 108, 112, + 115, 115, 118, 122, 139, 140, 170, 165, 102, 72, 95, 75, 87, 87, 81, 88, + 65, 37, 102, 114, 111, 97, 100, 92, 115, 85, 76, 73, 87, 56, 89, 128, + 120, 100, 88, 91, 84, 89, 88, 75, 49, 124, 136, 127, 150, 144, 153, 214, + 234, 242, 241, 222, 167, 97, 87, 79, 79, 79, 77, 68, 63, 49, 44, 61, + 72, 48, 85, 107, 114, 100, 95, 91, 91, 89, 93, 102, 91, 68, 104, 116, + 100, 100, 111, 111, 97, 103, 108, 93, 53, 4, 89, 107, 112, 103, 118, 127, + 120, 116, 114, 107, 80, 46, 89, 108, 88, 241, 245, 240, 116, 107, 115, 142, + 151, 159, 161, 169, 174, 175, 173, 167, 161, 151, 146, 138, 124, 16, 18, 21, + 44, 68, 64, 72, 71, 83, 80, 71, 61, 49, 92, 126, 127, 116, 126, 134, + 127, 130, 116, 103, 96, 68, 114, 132, 147, 132, 154, 174, 208, 218, 218, 220, + 225, 232, 232, 234, 224, 241, 241, 237, 226, 237, 238, 234, 212, 240, 240, 195, + 103, 55, 46, 80, 84, 71, 84, 95, 69, 63, 119, 130, 127, 237, 242, 236, + 107, 100, 112, 126, 139, 151, 158, 170, 175, 175, 169, 185, 190, 197, 204, 210, + 214, 213, 212, 212, 210, 212, 210, 210, 209, 206, 202, 201, 191, 144, 131, 130, + 128, 97, 123, 135, 151, 138, 131, 132, 122, 115, 112, 108, 114, 111, 118, 116, + 114, 112, 112, 111, 108, 111, 116, 115, 114, 151, 139, 174, 210, 208, 199, 202, + 154, 128, 124, 122, 119, 126, 126, 128, 138, 111, 69, 60, 73, 40, 127, 142, + 153, 155, 154, 151, 161, 157, 163, 193, 193, 182, 189, 174, 139, 118, 115, 114, + 114, 114, 114, 111, 110, 111, 112, 112, 116, 118, 122, 126, 132, 142, 181, 150, + 104, 22, 111, 162, 157, 153, 151, 148, 148, 146, 155, 127, 64, 92, 111, 175, + 194, 185, 174, 161, 138, 130, 119, 103, 97, 102, 97, 100, 96, 89, 85, 85, + 81, 81, 80, 80, 93, 89, 138, 181, 190, 193, 186, 144, 138, 122, 123, 138, + 142, 143, 138, 148, 134, 99, 102, 128, 147, 171, 214, 177, 162, 154, 147, 142, + 139, 143, 142, 140, 140, 144, 144, 139, 130, 154, 123, 88, 122, 142, 158, 159, + 169, 147, 155, 132, 150, 144, 139, 130, 126, 122, 123, 120, 115, 126, 116, 120, + 127, 122, 79, 72, 73, 102, 118, 22, 57, 79, 65, 195, 216, 242, 189, 127, + 115, 132, 155, 165, 169, 170, 171, 177, 169, 162, 155, 148, 140, 126, 29, 8, + 6, 18, 33, 36, 40, 48, 59, 41, 65, 69, 49, 71, 52, 41, 56, 42, + 46, 53, 41, 38, 29, 61, 119, 114, 87, 61, 46, 34, 36, 32, 33, 25, + 56, 87, 88, 81, 76, 72, 61, 59, 245, 237, 236, 107, 104, 116, 128, 138, + 143, 134, 132, 131, 140, 139, 139, 132, 126, 18, 9, 8, 20, 29, 37, 67, + 53, 36, 65, 103, 111, 118, 124, 111, 112, 99, 110, 115, 111, 110, 108, 112, + 114, 114, 114, 114, 111, 114, 115, 116, 118, 120, 122, 120, 116, 104, 103, 100, + 103, 103, 104, 103, 107, 112, 116, 120, 123, 126, 127, 124, 128, 120, 150, 210, + 186, 159, 138, 111, 127, 127, 126, 124, 124, 124, 124, 124, 123, 122, 120, 114, + 116, 120, 143, 108, 75, 87, 76, 79, 81, 84, 88, 67, 38, 100, 114, 114, + 110, 108, 87, 111, 88, 75, 84, 87, 52, 83, 119, 115, 104, 103, 99, 96, + 91, 88, 77, 55, 132, 140, 154, 135, 147, 202, 233, 244, 244, 234, 170, 114, + 80, 67, 57, 52, 49, 53, 51, 51, 38, 45, 51, 75, 49, 56, 118, 115, + 96, 93, 93, 97, 93, 88, 99, 96, 65, 103, 114, 99, 110, 112, 100, 97, + 104, 102, 103, 57, 1, 96, 102, 116, 100, 104, 100, 106, 112, 116, 97, 72, + 57, 80, 118, 91, 240, 246, 241, 114, 103, 115, 140, 154, 161, 167, 173, 182, + 183, 181, 170, 165, 154, 147, 136, 126, 16, 16, 20, 41, 69, 71, 68, 75, + 79, 84, 69, 61, 49, 93, 123, 124, 126, 131, 124, 130, 126, 115, 102, 106, + 63, 107, 139, 126, 146, 143, 144, 146, 157, 162, 157, 146, 144, 146, 146, 147, + 165, 158, 154, 169, 177, 151, 147, 161, 177, 142, 126, 96, 48, 51, 83, 83, + 77, 84, 87, 92, 42, 106, 120, 126, 240, 242, 238, 111, 100, 112, 127, 138, + 151, 161, 171, 178, 178, 174, 170, 142, 186, 197, 202, 210, 212, 212, 212, 210, + 210, 210, 209, 209, 209, 205, 201, 194, 191, 182, 177, 131, 127, 126, 95, 97, + 104, 112, 97, 110, 108, 110, 107, 108, 107, 112, 111, 111, 112, 112, 114, 114, + 114, 116, 119, 119, 148, 143, 167, 199, 191, 195, 140, 126, 126, 123, 132, 131, + 135, 132, 139, 138, 100, 57, 57, 79, 45, 124, 142, 150, 148, 155, 151, 139, + 147, 166, 166, 173, 154, 154, 124, 114, 122, 124, 123, 119, 120, 118, 122, 120, + 120, 120, 120, 118, 118, 119, 119, 118, 119, 131, 163, 111, 26, 102, 155, 153, + 157, 154, 153, 153, 151, 148, 135, 103, 84, 88, 88, 95, 93, 88, 95, 96, + 87, 87, 84, 88, 84, 89, 89, 87, 85, 87, 93, 116, 119, 122, 120, 97, + 91, 142, 206, 198, 163, 126, 126, 132, 139, 146, 140, 143, 142, 142, 153, 123, + 85, 72, 112, 139, 142, 154, 208, 175, 157, 158, 155, 150, 151, 151, 158, 155, + 158, 157, 154, 147, 123, 122, 114, 118, 131, 131, 147, 158, 159, 150, 139, 189, + 195, 157, 154, 139, 139, 139, 134, 140, 140, 140, 142, 138, 77, 67, 65, 84, + 93, 111, 14, 60, 56, 72, 197, 217, 244, 162, 132, 114, 134, 157, 165, 169, + 173, 174, 179, 174, 170, 153, 147, 139, 127, 28, 9, 6, 22, 30, 38, 49, + 42, 53, 46, 73, 72, 45, 65, 59, 42, 42, 84, 44, 52, 37, 38, 21, + 51, 116, 114, 80, 81, 64, 53, 55, 28, 28, 21, 60, 87, 81, 83, 67, + 88, 91, 61, 245, 237, 238, 112, 99, 118, 128, 139, 132, 143, 146, 147, 154, + 153, 146, 135, 130, 18, 9, 8, 20, 33, 38, 51, 41, 61, 32, 49, 103, + 72, 83, 97, 110, 128, 139, 116, 119, 122, 144, 123, 127, 131, 140, 128, 127, + 130, 144, 134, 136, 144, 146, 139, 139, 130, 122, 119, 119, 120, 120, 122, 126, + 131, 138, 140, 144, 146, 146, 134, 130, 107, 124, 139, 131, 108, 132, 132, 150, + 147, 136, 135, 136, 134, 135, 135, 135, 132, 132, 127, 126, 123, 119, 122, 77, + 72, 87, 75, 79, 84, 84, 68, 44, 95, 108, 108, 107, 110, 95, 115, 100, + 73, 80, 75, 48, 79, 119, 116, 89, 99, 77, 106, 104, 104, 93, 89, 135, + 163, 157, 157, 190, 225, 244, 246, 241, 218, 130, 87, 63, 38, 37, 44, 38, + 38, 42, 49, 45, 49, 46, 112, 52, 51, 116, 111, 95, 96, 97, 99, 97, + 93, 91, 93, 60, 99, 115, 102, 111, 104, 97, 97, 97, 106, 83, 55, 1, + 95, 102, 95, 103, 103, 106, 107, 114, 108, 96, 60, 68, 83, 115, 111, 245, + 248, 242, 120, 104, 115, 139, 151, 161, 169, 175, 183, 182, 181, 181, 167, 150, + 146, 138, 127, 16, 18, 18, 41, 67, 68, 71, 76, 85, 80, 69, 65, 48, + 81, 112, 126, 127, 126, 130, 131, 114, 93, 93, 84, 63, 114, 131, 127, 148, + 148, 131, 134, 136, 134, 134, 138, 134, 131, 134, 138, 136, 139, 140, 142, 140, + 143, 132, 135, 131, 131, 106, 72, 42, 40, 83, 80, 76, 81, 84, 88, 30, + 104, 130, 128, 241, 246, 241, 114, 103, 115, 131, 139, 151, 161, 171, 178, 181, + 178, 171, 173, 154, 150, 148, 146, 144, 142, 140, 140, 139, 138, 138, 139, 135, + 134, 132, 131, 134, 136, 138, 132, 136, 127, 128, 123, 126, 126, 123, 122, 120, + 120, 119, 118, 120, 120, 119, 119, 120, 123, 123, 123, 124, 126, 128, 130, 123, + 139, 136, 177, 208, 142, 130, 134, 138, 142, 142, 144, 142, 142, 143, 139, 89, + 55, 55, 75, 25, 119, 138, 147, 151, 144, 143, 140, 142, 138, 134, 127, 128, + 126, 116, 110, 104, 107, 119, 118, 128, 127, 127, 128, 131, 130, 131, 130, 131, + 131, 131, 128, 126, 123, 169, 122, 68, 71, 140, 161, 159, 150, 144, 147, 148, + 143, 143, 124, 61, 107, 103, 92, 95, 99, 99, 100, 97, 107, 104, 108, 111, + 114, 115, 116, 119, 115, 120, 128, 131, 134, 131, 111, 103, 135, 182, 175, 140, + 122, 139, 142, 147, 146, 147, 144, 144, 146, 147, 106, 67, 71, 103, 122, 127, + 143, 162, 193, 174, 147, 136, 163, 162, 162, 162, 166, 166, 169, 165, 162, 151, + 142, 123, 88, 124, 130, 134, 136, 148, 144, 140, 198, 187, 179, 175, 157, 147, + 147, 151, 140, 146, 151, 144, 134, 73, 63, 59, 75, 93, 99, 17, 51, 49, + 60, 206, 222, 230, 170, 122, 115, 135, 154, 165, 170, 171, 173, 178, 174, 169, + 157, 146, 142, 130, 30, 9, 9, 26, 38, 41, 46, 48, 51, 45, 69, 63, + 46, 51, 59, 55, 41, 42, 48, 40, 36, 32, 18, 49, 111, 96, 61, 63, + 64, 38, 92, 55, 26, 20, 71, 88, 75, 76, 67, 83, 72, 60, 245, 241, + 240, 111, 99, 115, 128, 142, 144, 157, 161, 166, 167, 161, 148, 138, 132, 18, + 9, 10, 16, 25, 36, 34, 51, 77, 52, 34, 46, 91, 89, 92, 171, 185, + 166, 118, 138, 165, 130, 134, 143, 155, 138, 139, 143, 154, 140, 144, 151, 146, + 150, 153, 151, 148, 143, 140, 139, 139, 143, 146, 147, 150, 153, 158, 158, 157, + 158, 151, 132, 139, 106, 104, 142, 136, 107, 76, 68, 83, 110, 127, 161, 138, + 140, 159, 142, 142, 140, 138, 136, 132, 123, 139, 95, 59, 80, 84, 81, 75, + 91, 71, 44, 51, 104, 110, 120, 110, 93, 115, 99, 67, 84, 69, 48, 106, + 108, 116, 104, 111, 107, 123, 143, 159, 166, 175, 201, 216, 222, 226, 229, 242, + 246, 248, 241, 178, 102, 53, 63, 53, 65, 55, 65, 61, 57, 56, 56, 56, + 60, 59, 67, 45, 92, 107, 99, 99, 102, 99, 104, 99, 93, 93, 56, 96, + 107, 99, 110, 103, 99, 100, 100, 107, 88, 53, 4, 91, 106, 108, 114, 111, + 111, 111, 111, 112, 85, 41, 53, 77, 112, 96, 244, 249, 245, 118, 104, 114, + 142, 154, 159, 167, 174, 179, 182, 181, 179, 170, 151, 144, 139, 127, 14, 16, + 22, 37, 61, 65, 71, 72, 80, 71, 72, 61, 46, 75, 104, 119, 132, 124, + 123, 116, 114, 91, 96, 89, 51, 116, 130, 135, 126, 127, 119, 120, 157, 158, + 131, 140, 143, 147, 148, 148, 142, 142, 144, 144, 142, 136, 138, 135, 132, 120, + 103, 52, 38, 40, 80, 84, 77, 85, 85, 87, 37, 103, 123, 131, 238, 246, + 244, 114, 104, 116, 131, 140, 151, 162, 173, 177, 179, 178, 165, 155, 126, 102, + 95, 112, 114, 127, 127, 128, 124, 124, 122, 120, 115, 115, 116, 116, 114, 115, + 112, 112, 111, 111, 108, 114, 124, 116, 116, 178, 127, 119, 120, 127, 126, 128, + 130, 128, 130, 131, 134, 134, 134, 134, 136, 138, 136, 144, 138, 139, 136, 134, + 139, 148, 153, 153, 153, 151, 150, 148, 146, 128, 72, 53, 46, 75, 44, 100, + 136, 136, 147, 146, 147, 146, 135, 127, 119, 111, 99, 95, 84, 81, 85, 87, + 96, 108, 114, 119, 130, 128, 135, 135, 136, 134, 136, 138, 140, 139, 136, 134, + 131, 140, 95, 34, 114, 140, 123, 124, 140, 144, 147, 143, 139, 123, 95, 123, + 108, 92, 118, 116, 157, 106, 114, 119, 120, 120, 123, 127, 126, 128, 127, 126, + 126, 136, 138, 140, 140, 134, 108, 126, 171, 142, 135, 146, 151, 155, 151, 158, + 159, 151, 157, 158, 150, 92, 65, 65, 79, 107, 126, 134, 146, 186, 191, 165, + 140, 140, 159, 171, 170, 170, 174, 174, 177, 177, 173, 155, 134, 104, 110, 102, + 128, 136, 136, 146, 151, 197, 198, 195, 165, 169, 155, 154, 154, 158, 155, 153, + 142, 142, 65, 57, 55, 64, 68, 75, 10, 46, 48, 53, 206, 224, 236, 142, + 123, 114, 134, 147, 162, 167, 169, 171, 178, 175, 173, 158, 150, 140, 131, 26, + 8, 6, 21, 38, 44, 44, 59, 63, 36, 68, 56, 48, 48, 49, 59, 42, + 38, 37, 36, 34, 32, 21, 46, 115, 130, 73, 72, 72, 73, 44, 55, 29, + 16, 68, 83, 75, 75, 67, 76, 67, 56, 248, 244, 240, 111, 100, 115, 130, + 146, 154, 166, 171, 170, 171, 163, 151, 138, 132, 14, 9, 8, 16, 33, 36, + 34, 40, 55, 53, 37, 36, 72, 79, 88, 199, 195, 132, 110, 120, 140, 138, + 158, 163, 143, 143, 153, 158, 148, 154, 150, 158, 157, 155, 167, 167, 170, 163, + 155, 153, 153, 159, 162, 161, 165, 165, 167, 169, 169, 167, 163, 146, 147, 148, + 142, 111, 64, 41, 29, 33, 44, 83, 118, 138, 178, 185, 185, 173, 177, 175, + 162, 142, 139, 131, 122, 111, 64, 59, 79, 77, 76, 77, 75, 59, 45, 96, + 97, 85, 108, 99, 100, 76, 76, 72, 57, 71, 103, 100, 142, 155, 183, 206, + 228, 232, 244, 245, 250, 249, 252, 252, 250, 250, 250, 250, 246, 222, 143, 99, + 68, 36, 57, 59, 60, 59, 59, 59, 60, 65, 63, 57, 60, 64, 57, 88, + 114, 108, 108, 110, 104, 111, 103, 91, 88, 59, 96, 111, 100, 103, 108, 103, + 118, 107, 97, 93, 51, 5, 96, 118, 106, 122, 118, 112, 118, 114, 106, 87, + 42, 56, 80, 110, 92, 244, 249, 245, 115, 104, 114, 139, 151, 158, 166, 171, + 175, 182, 181, 181, 173, 153, 146, 139, 128, 13, 18, 18, 37, 64, 67, 73, + 69, 69, 75, 68, 61, 57, 63, 100, 103, 107, 103, 104, 104, 87, 91, 93, + 89, 57, 87, 124, 127, 120, 119, 116, 115, 123, 106, 115, 179, 140, 132, 136, + 151, 154, 157, 157, 159, 159, 162, 153, 158, 127, 119, 104, 44, 34, 38, 71, + 69, 85, 89, 73, 84, 55, 96, 119, 131, 230, 248, 245, 114, 104, 115, 131, + 142, 151, 161, 173, 178, 179, 175, 165, 134, 76, 48, 45, 45, 83, 102, 115, + 114, 118, 116, 115, 115, 116, 115, 118, 119, 118, 114, 72, 83, 107, 104, 106, + 106, 107, 115, 116, 182, 183, 128, 112, 131, 142, 132, 132, 135, 135, 136, 139, + 140, 142, 143, 144, 144, 144, 138, 142, 135, 128, 150, 155, 158, 159, 154, 154, + 153, 148, 150, 143, 99, 52, 45, 45, 69, 46, 76, 130, 132, 132, 123, 107, + 88, 92, 93, 95, 77, 93, 92, 91, 91, 102, 95, 88, 84, 104, 123, 131, + 175, 178, 174, 155, 162, 174, 161, 161, 157, 146, 144, 132, 161, 118, 64, 57, + 122, 142, 127, 127, 128, 142, 144, 143, 110, 91, 92, 114, 119, 103, 118, 158, + 175, 115, 115, 124, 135, 131, 131, 134, 134, 132, 132, 134, 138, 144, 144, 146, + 144, 139, 106, 112, 143, 151, 154, 161, 161, 161, 158, 158, 158, 158, 157, 123, + 76, 68, 63, 63, 107, 111, 127, 135, 142, 194, 179, 148, 132, 143, 161, 169, + 175, 177, 181, 182, 182, 182, 175, 148, 107, 100, 102, 127, 135, 147, 142, 158, + 206, 204, 222, 171, 173, 161, 155, 158, 157, 158, 153, 139, 138, 59, 53, 52, + 45, 88, 87, 14, 20, 40, 46, 213, 222, 238, 144, 107, 116, 136, 151, 159, + 163, 166, 174, 177, 174, 170, 161, 143, 138, 128, 30, 8, 8, 22, 36, 37, + 44, 40, 49, 37, 73, 73, 46, 33, 33, 36, 33, 34, 30, 33, 34, 32, + 28, 51, 69, 91, 77, 17, 25, 21, 21, 20, 22, 14, 36, 61, 60, 51, + 51, 68, 59, 56, 248, 245, 241, 108, 100, 112, 128, 144, 157, 170, 173, 170, + 171, 165, 151, 138, 131, 14, 8, 9, 16, 18, 28, 30, 29, 34, 29, 32, + 41, 75, 88, 84, 202, 201, 175, 116, 119, 126, 143, 144, 151, 163, 161, 150, + 163, 154, 158, 157, 157, 163, 175, 178, 185, 190, 191, 186, 167, 165, 167, 174, + 173, 174, 174, 174, 175, 177, 174, 170, 151, 151, 150, 116, 64, 29, 30, 26, + 22, 30, 61, 91, 126, 182, 185, 199, 189, 183, 158, 178, 170, 157, 139, 126, + 123, 76, 49, 57, 73, 76, 75, 71, 72, 63, 56, 60, 67, 65, 69, 68, + 69, 69, 59, 88, 100, 130, 189, 222, 240, 245, 246, 249, 252, 255, 255, 255, + 253, 255, 255, 255, 253, 253, 250, 241, 182, 134, 103, 64, 33, 56, 53, 53, + 53, 57, 56, 59, 59, 64, 57, 64, 61, 59, 59, 76, 81, 79, 91, 85, + 88, 87, 85, 89, 56, 92, 99, 99, 87, 92, 92, 95, 89, 91, 77, 51, + 5, 89, 102, 106, 111, 106, 104, 104, 104, 92, 84, 37, 61, 75, 108, 87, + 244, 248, 244, 114, 100, 115, 140, 151, 159, 165, 167, 170, 179, 181, 181, 167, + 157, 146, 138, 126, 12, 17, 18, 37, 60, 60, 60, 69, 72, 71, 79, 73, + 69, 69, 76, 83, 76, 80, 84, 88, 81, 87, 93, 80, 52, 92, 119, 115, + 112, 112, 115, 115, 116, 112, 102, 183, 186, 132, 131, 138, 143, 153, 157, 161, + 161, 155, 159, 155, 132, 120, 104, 40, 33, 37, 57, 60, 71, 80, 65, 67, + 61, 67, 96, 127, 234, 246, 242, 119, 104, 115, 131, 143, 148, 159, 173, 179, + 178, 187, 154, 88, 55, 36, 29, 25, 46, 96, 140, 169, 174, 167, 126, 159, + 161, 158, 154, 128, 124, 119, 88, 63, 97, 103, 104, 103, 108, 112, 111, 170, + 193, 179, 120, 123, 139, 140, 142, 142, 144, 144, 146, 148, 148, 148, 148, 153, + 151, 148, 146, 147, 161, 159, 161, 158, 154, 142, 136, 128, 116, 114, 92, 57, + 44, 41, 45, 68, 46, 67, 77, 84, 77, 85, 92, 89, 99, 103, 106, 85, + 114, 108, 110, 104, 102, 100, 100, 100, 108, 126, 185, 194, 195, 187, 179, 179, + 181, 178, 171, 175, 165, 153, 144, 131, 134, 91, 34, 72, 142, 143, 123, 130, + 127, 124, 143, 127, 92, 85, 111, 118, 110, 122, 158, 183, 170, 112, 115, 134, + 136, 140, 140, 138, 142, 139, 138, 150, 155, 158, 155, 154, 148, 151, 159, 159, + 162, 162, 158, 155, 148, 142, 135, 131, 130, 110, 73, 59, 55, 64, 61, 97, + 100, 114, 120, 119, 159, 198, 174, 140, 132, 144, 161, 166, 174, 179, 182, 182, + 186, 183, 170, 132, 96, 114, 124, 138, 143, 142, 181, 221, 221, 197, 183, 178, + 165, 163, 166, 165, 155, 153, 138, 134, 55, 51, 48, 68, 85, 99, 5, 5, + 33, 46, 201, 224, 238, 134, 104, 114, 135, 151, 161, 165, 173, 174, 177, 169, + 162, 162, 144, 136, 130, 33, 6, 9, 22, 22, 38, 42, 36, 45, 40, 65, + 59, 32, 33, 32, 36, 32, 32, 30, 34, 33, 28, 26, 34, 22, 12, 10, + 10, 13, 10, 8, 10, 10, 14, 20, 21, 25, 32, 32, 38, 59, 57, 246, + 245, 240, 108, 99, 114, 134, 144, 157, 170, 177, 175, 167, 162, 148, 136, 126, + 13, 8, 8, 13, 12, 26, 29, 22, 24, 24, 22, 28, 41, 79, 84, 209, + 204, 201, 118, 112, 124, 140, 171, 170, 151, 162, 158, 159, 165, 169, 171, 175, + 178, 182, 186, 177, 161, 181, 190, 197, 189, 170, 186, 185, 183, 178, 190, 185, + 181, 185, 181, 187, 157, 153, 106, 49, 29, 22, 20, 18, 20, 52, 85, 122, + 189, 197, 170, 175, 191, 189, 167, 165, 169, 143, 131, 138, 85, 49, 49, 65, + 71, 69, 65, 67, 65, 71, 69, 65, 69, 69, 67, 72, 55, 99, 108, 154, + 225, 246, 248, 248, 250, 252, 253, 255, 255, 248, 241, 237, 237, 236, 232, 229, + 222, 218, 186, 148, 138, 110, 64, 60, 53, 59, 57, 57, 63, 60, 61, 63, + 63, 64, 65, 63, 61, 69, 69, 71, 72, 71, 73, 72, 72, 71, 71, 67, + 68, 59, 68, 68, 72, 56, 63, 61, 57, 49, 56, 8, 28, 51, 55, 59, + 57, 59, 56, 71, 63, 38, 21, 79, 63, 100, 95, 245, 248, 244, 115, 100, + 110, 136, 148, 159, 166, 171, 178, 179, 182, 173, 163, 154, 144, 136, 128, 13, + 18, 20, 44, 46, 51, 52, 49, 53, 49, 46, 53, 55, 52, 53, 65, 64, + 61, 61, 59, 60, 61, 59, 67, 76, 69, 77, 68, 65, 103, 108, 103, 107, + 111, 93, 162, 191, 179, 128, 131, 143, 143, 153, 157, 155, 155, 158, 157, 135, + 124, 95, 36, 30, 33, 56, 55, 60, 77, 76, 61, 59, 65, 95, 128, 241, + 248, 245, 119, 106, 116, 131, 142, 151, 162, 174, 178, 174, 165, 120, 56, 40, + 28, 36, 28, 44, 83, 157, 185, 135, 169, 161, 159, 163, 174, 148, 153, 127, + 123, 114, 59, 63, 87, 102, 103, 102, 115, 107, 139, 202, 199, 130, 119, 130, + 154, 148, 150, 150, 150, 151, 151, 151, 154, 154, 154, 158, 163, 166, 163, 163, + 161, 148, 118, 83, 63, 44, 40, 38, 41, 40, 36, 36, 40, 41, 63, 41, + 81, 72, 76, 77, 89, 110, 143, 197, 210, 220, 221, 218, 210, 199, 189, 131, + 120, 116, 116, 130, 195, 220, 173, 198, 191, 193, 190, 182, 186, 185, 178, 173, + 165, 151, 139, 155, 114, 40, 44, 95, 114, 120, 124, 124, 127, 132, 134, 110, + 81, 103, 122, 87, 112, 148, 191, 186, 123, 114, 123, 135, 147, 142, 142, 142, + 150, 153, 159, 163, 163, 163, 161, 159, 163, 162, 162, 158, 143, 114, 88, 63, + 52, 48, 45, 49, 51, 51, 56, 56, 48, 56, 57, 96, 104, 114, 122, 120, + 177, 190, 155, 128, 127, 150, 161, 167, 174, 178, 183, 187, 189, 183, 146, 103, + 93, 102, 120, 138, 139, 201, 220, 210, 210, 182, 171, 171, 170, 170, 167, 158, + 154, 144, 130, 49, 46, 46, 60, 84, 83, 20, 29, 20, 41, 193, 225, 221, + 132, 114, 115, 135, 150, 159, 166, 170, 174, 174, 159, 165, 155, 144, 139, 131, + 41, 9, 9, 12, 17, 18, 24, 46, 42, 37, 33, 36, 26, 21, 20, 18, + 16, 13, 13, 9, 13, 13, 24, 10, 32, 36, 37, 40, 44, 41, 46, 37, + 21, 12, 46, 89, 91, 69, 73, 72, 64, 59, 248, 245, 232, 110, 100, 112, + 132, 142, 157, 169, 177, 174, 169, 165, 148, 132, 130, 17, 9, 9, 10, 10, + 9, 17, 21, 22, 20, 21, 26, 36, 81, 87, 212, 213, 210, 120, 131, 120, + 136, 167, 170, 158, 161, 162, 171, 181, 181, 181, 179, 177, 185, 150, 93, 60, + 83, 157, 191, 191, 175, 167, 182, 183, 185, 183, 183, 186, 187, 190, 193, 161, + 158, 99, 45, 26, 22, 18, 18, 21, 53, 79, 115, 202, 204, 173, 195, 197, + 195, 173, 189, 179, 147, 135, 124, 106, 60, 45, 56, 51, 44, 37, 44, 41, + 41, 42, 45, 45, 45, 49, 63, 77, 119, 177, 241, 249, 252, 246, 253, 252, + 244, 226, 199, 175, 132, 119, 123, 116, 118, 123, 120, 116, 123, 139, 127, 134, + 126, 97, 73, 24, 21, 17, 16, 13, 13, 13, 10, 9, 12, 12, 6, 5, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 9, 10, 8, 2, + 2, 6, 5, 9, 9, 6, 26, 24, 26, 12, 28, 28, 26, 24, 29, 30, + 30, 72, 45, 44, 107, 93, 246, 249, 246, 119, 102, 111, 136, 150, 161, 167, + 177, 181, 181, 179, 169, 169, 150, 143, 139, 126, 10, 16, 21, 26, 17, 16, + 16, 17, 17, 18, 20, 21, 21, 26, 38, 79, 85, 100, 95, 103, 95, 99, + 93, 87, 84, 115, 122, 116, 81, 69, 71, 71, 97, 116, 107, 110, 202, 195, + 134, 130, 139, 143, 147, 150, 151, 159, 154, 154, 130, 124, 96, 34, 26, 32, + 48, 29, 44, 49, 52, 45, 59, 100, 93, 130, 241, 249, 245, 114, 103, 114, + 128, 140, 148, 162, 174, 178, 174, 153, 83, 45, 32, 32, 36, 25, 49, 96, + 191, 198, 169, 135, 166, 169, 158, 150, 138, 157, 131, 126, 118, 55, 57, 75, + 84, 93, 95, 114, 110, 127, 213, 205, 140, 119, 130, 144, 155, 155, 153, 153, + 151, 153, 153, 157, 158, 167, 171, 170, 166, 166, 158, 112, 68, 36, 30, 26, + 25, 26, 28, 29, 30, 33, 38, 41, 48, 73, 77, 73, 97, 107, 120, 158, + 202, 240, 245, 246, 248, 246, 248, 244, 244, 240, 240, 238, 236, 229, 233, 233, + 228, 214, 198, 191, 187, 187, 187, 186, 187, 185, 181, 178, 159, 148, 132, 132, + 85, 33, 59, 80, 95, 84, 96, 104, 103, 114, 116, 118, 119, 111, 85, 118, + 148, 202, 197, 134, 118, 120, 134, 142, 144, 144, 158, 163, 169, 169, 167, 165, + 169, 171, 167, 166, 162, 146, 103, 64, 37, 30, 28, 26, 29, 32, 34, 36, + 36, 38, 44, 60, 61, 60, 63, 63, 97, 102, 112, 138, 189, 177, 136, 124, + 138, 154, 162, 167, 175, 181, 186, 190, 190, 170, 120, 99, 107, 138, 142, 155, + 209, 212, 213, 214, 186, 175, 179, 171, 169, 169, 155, 155, 140, 135, 42, 38, + 38, 12, 10, 8, 115, 104, 97, 48, 185, 222, 224, 142, 114, 114, 132, 151, + 159, 165, 170, 171, 167, 167, 166, 146, 142, 139, 132, 48, 10, 9, 8, 24, + 22, 18, 20, 24, 30, 20, 29, 45, 56, 53, 65, 71, 76, 81, 80, 71, + 49, 14, 56, 64, 91, 96, 89, 79, 80, 76, 55, 26, 9, 76, 88, 84, + 81, 88, 87, 67, 65, 250, 240, 242, 110, 97, 110, 132, 142, 157, 169, 173, + 171, 166, 165, 148, 138, 132, 18, 9, 9, 14, 10, 16, 26, 26, 34, 4, + 29, 25, 79, 80, 95, 220, 217, 217, 135, 131, 136, 127, 161, 169, 163, 161, + 175, 185, 185, 185, 182, 175, 177, 162, 93, 34, 34, 60, 112, 181, 204, 185, + 163, 179, 186, 183, 186, 189, 190, 193, 194, 193, 166, 163, 108, 51, 34, 25, + 24, 22, 24, 56, 91, 110, 206, 209, 178, 177, 181, 198, 197, 194, 179, 159, + 140, 128, 132, 81, 42, 49, 59, 64, 60, 65, 91, 99, 107, 102, 110, 104, + 93, 108, 148, 193, 245, 248, 249, 250, 248, 228, 193, 150, 124, 119, 111, 104, + 112, 116, 116, 104, 122, 120, 118, 112, 131, 132, 134, 130, 126, 84, 92, 72, + 69, 72, 79, 73, 72, 71, 65, 65, 56, 60, 87, 111, 112, 128, 119, 112, + 130, 132, 116, 89, 83, 93, 142, 114, 116, 150, 146, 115, 107, 107, 131, 97, + 14, 0, 42, 81, 99, 65, 68, 64, 63, 63, 40, 52, 40, 71, 108, 107, + 103, 246, 249, 245, 118, 100, 115, 138, 151, 159, 167, 178, 178, 181, 175, 170, + 167, 148, 140, 138, 130, 12, 21, 21, 33, 63, 81, 87, 95, 103, 102, 100, + 89, 96, 97, 95, 111, 136, 127, 130, 114, 120, 123, 124, 127, 115, 128, 131, + 130, 108, 100, 87, 85, 77, 103, 104, 104, 209, 204, 151, 130, 135, 146, 142, + 146, 155, 157, 154, 153, 131, 120, 92, 32, 26, 33, 49, 61, 69, 85, 88, + 99, 99, 83, 120, 135, 241, 249, 246, 111, 102, 115, 131, 142, 151, 163, 175, + 175, 186, 142, 55, 38, 34, 37, 37, 22, 67, 97, 202, 204, 191, 135, 159, + 162, 162, 146, 135, 136, 131, 128, 118, 55, 51, 65, 92, 89, 93, 104, 102, + 118, 216, 213, 197, 123, 122, 136, 146, 158, 163, 154, 155, 155, 162, 162, 170, + 175, 171, 169, 167, 154, 95, 44, 30, 25, 26, 29, 33, 36, 36, 38, 38, + 44, 46, 49, 69, 60, 81, 99, 108, 147, 217, 241, 244, 246, 246, 248, 246, + 246, 246, 246, 245, 245, 242, 242, 240, 238, 238, 237, 234, 228, 175, 174, 191, + 193, 199, 182, 194, 187, 183, 181, 169, 154, 138, 146, 108, 38, 51, 72, 76, + 77, 95, 83, 75, 68, 61, 63, 73, 76, 87, 126, 143, 206, 210, 181, 116, + 116, 126, 139, 144, 154, 167, 169, 167, 170, 171, 169, 170, 173, 167, 162, 147, + 91, 40, 33, 26, 26, 28, 30, 29, 30, 32, 63, 59, 42, 46, 48, 57, + 80, 65, 68, 53, 76, 106, 114, 183, 179, 147, 124, 123, 139, 158, 165, 171, + 177, 183, 189, 190, 190, 147, 108, 102, 134, 134, 177, 216, 214, 228, 218, 186, + 178, 178, 170, 170, 169, 158, 157, 142, 132, 48, 42, 41, 32, 81, 91, 68, + 44, 55, 42, 140, 216, 226, 147, 115, 114, 132, 147, 159, 165, 170, 171, 165, + 166, 163, 146, 140, 139, 131, 56, 12, 10, 10, 24, 29, 38, 37, 38, 25, + 52, 81, 100, 92, 95, 100, 100, 95, 85, 95, 84, 53, 13, 55, 124, 107, + 108, 87, 89, 93, 64, 55, 25, 12, 85, 83, 67, 57, 61, 77, 67, 68, + 250, 242, 241, 110, 96, 111, 135, 140, 157, 170, 175, 173, 167, 163, 150, 139, + 132, 18, 10, 9, 12, 12, 22, 30, 20, 33, 10, 24, 29, 76, 91, 102, + 218, 221, 218, 136, 111, 118, 127, 139, 167, 166, 170, 182, 187, 187, 187, 186, + 179, 175, 126, 46, 29, 32, 37, 64, 158, 206, 193, 165, 166, 181, 195, 197, + 199, 201, 204, 204, 198, 193, 171, 139, 71, 36, 28, 26, 22, 42, 69, 95, + 104, 208, 214, 193, 175, 194, 198, 183, 195, 178, 173, 143, 134, 126, 104, 51, + 41, 57, 57, 91, 79, 84, 103, 107, 122, 97, 112, 119, 153, 229, 246, 248, + 248, 252, 236, 189, 142, 119, 115, 114, 115, 127, 77, 49, 44, 46, 57, 110, + 116, 124, 161, 183, 189, 181, 135, 132, 120, 99, 76, 100, 99, 80, 84, 77, + 79, 73, 92, 107, 72, 110, 134, 131, 131, 89, 118, 138, 142, 120, 115, 99, + 88, 131, 134, 143, 140, 143, 132, 134, 131, 119, 116, 81, 0, 96, 93, 97, + 106, 95, 92, 95, 79, 61, 60, 36, 108, 108, 103, 110, 249, 248, 245, 110, + 104, 116, 140, 150, 161, 169, 175, 177, 183, 173, 166, 165, 147, 140, 138, 126, + 12, 18, 40, 55, 85, 84, 92, 95, 97, 103, 100, 107, 96, 104, 139, 127, + 122, 120, 124, 130, 120, 120, 130, 162, 170, 210, 199, 153, 123, 107, 100, 103, + 100, 102, 103, 93, 213, 213, 185, 130, 134, 140, 144, 142, 146, 161, 151, 159, + 131, 122, 91, 32, 28, 44, 57, 87, 95, 104, 106, 111, 73, 100, 142, 174, + 242, 248, 242, 116, 104, 115, 132, 144, 151, 167, 175, 174, 167, 123, 49, 38, + 29, 37, 44, 26, 73, 108, 209, 209, 199, 163, 157, 158, 165, 147, 150, 139, + 132, 136, 122, 53, 49, 52, 80, 93, 97, 103, 108, 120, 217, 218, 205, 122, + 120, 128, 142, 153, 161, 162, 162, 174, 178, 177, 177, 178, 170, 169, 154, 99, + 37, 25, 25, 26, 32, 48, 41, 49, 48, 51, 52, 51, 68, 71, 84, 59, + 81, 99, 138, 230, 244, 244, 249, 248, 245, 236, 224, 204, 201, 190, 193, 197, + 208, 212, 214, 224, 226, 229, 226, 230, 217, 181, 206, 205, 216, 216, 205, 187, + 191, 185, 177, 158, 146, 139, 126, 72, 45, 57, 103, 104, 112, 124, 127, 118, + 111, 122, 128, 127, 130, 118, 158, 206, 213, 197, 118, 116, 124, 138, 148, 157, + 169, 173, 174, 173, 173, 171, 174, 173, 167, 144, 91, 36, 29, 25, 28, 30, + 37, 36, 40, 59, 28, 55, 88, 99, 85, 111, 103, 110, 124, 127, 111, 112, + 111, 115, 181, 186, 166, 126, 119, 132, 150, 162, 166, 174, 179, 186, 193, 197, + 186, 142, 99, 135, 144, 194, 216, 216, 216, 201, 193, 185, 177, 174, 175, 169, + 158, 157, 142, 135, 44, 41, 40, 63, 91, 91, 65, 56, 55, 64, 77, 210, + 216, 178, 115, 112, 127, 148, 158, 163, 169, 167, 166, 163, 153, 134, 140, 138, + 132, 83, 17, 10, 17, 30, 34, 37, 30, 37, 16, 81, 93, 100, 95, 88, + 114, 106, 110, 99, 102, 77, 51, 12, 71, 134, 128, 134, 127, 115, 88, 75, + 46, 24, 13, 79, 84, 65, 65, 61, 73, 63, 63, 248, 236, 242, 107, 95, + 111, 135, 143, 155, 170, 174, 177, 165, 163, 151, 140, 134, 20, 12, 10, 10, + 5, 25, 25, 13, 24, 10, 37, 18, 95, 91, 142, 225, 224, 221, 119, 111, + 118, 142, 142, 153, 166, 177, 186, 187, 187, 185, 182, 178, 169, 95, 33, 29, + 30, 36, 65, 130, 208, 204, 170, 159, 177, 183, 197, 202, 206, 206, 205, 205, + 198, 175, 163, 92, 44, 26, 28, 24, 57, 80, 96, 107, 201, 220, 206, 181, + 195, 197, 193, 195, 179, 178, 148, 139, 130, 123, 73, 42, 56, 53, 55, 71, + 104, 89, 96, 92, 102, 100, 119, 209, 248, 248, 249, 250, 225, 166, 122, 116, + 116, 120, 140, 127, 69, 41, 36, 42, 37, 56, 108, 187, 199, 191, 169, 175, + 175, 181, 136, 134, 126, 100, 59, 84, 83, 93, 79, 79, 79, 81, 73, 77, + 147, 143, 138, 131, 131, 126, 118, 124, 111, 97, 84, 108, 147, 144, 135, 134, + 128, 132, 132, 140, 130, 127, 95, 25, 104, 89, 79, 72, 71, 75, 79, 93, + 72, 55, 37, 107, 119, 110, 138, 249, 248, 244, 111, 104, 116, 139, 148, 158, + 167, 175, 178, 182, 170, 165, 148, 136, 139, 136, 126, 13, 24, 40, 72, 80, + 97, 97, 106, 89, 95, 100, 91, 60, 108, 138, 128, 120, 115, 124, 120, 124, + 126, 186, 229, 220, 220, 209, 178, 126, 110, 92, 111, 99, 97, 104, 91, 212, + 214, 201, 130, 131, 143, 150, 144, 144, 154, 146, 144, 131, 124, 81, 32, 28, + 53, 71, 92, 96, 104, 115, 93, 72, 99, 143, 179, 242, 246, 244, 123, 107, + 118, 132, 147, 157, 169, 175, 171, 162, 95, 48, 34, 33, 40, 45, 28, 80, + 119, 208, 212, 208, 130, 151, 155, 162, 134, 139, 144, 131, 135, 119, 52, 45, + 52, 72, 80, 89, 108, 110, 122, 222, 221, 209, 120, 119, 126, 139, 151, 159, + 165, 177, 178, 182, 182, 179, 175, 173, 158, 96, 40, 25, 28, 29, 36, 45, + 41, 55, 67, 76, 79, 75, 80, 76, 83, 89, 72, 91, 114, 193, 244, 246, + 246, 245, 237, 205, 181, 157, 155, 154, 158, 161, 165, 169, 174, 178, 181, 185, + 189, 199, 202, 210, 206, 206, 204, 202, 206, 208, 205, 197, 187, 178, 162, 153, + 135, 131, 95, 42, 63, 92, 100, 106, 120, 93, 124, 130, 122, 120, 114, 115, + 119, 153, 210, 217, 206, 118, 115, 124, 138, 147, 161, 169, 173, 173, 174, 173, + 175, 174, 171, 157, 106, 44, 30, 26, 30, 34, 40, 46, 51, 73, 64, 28, + 89, 112, 120, 118, 115, 111, 110, 107, 128, 132, 135, 72, 116, 166, 181, 182, + 140, 118, 126, 143, 155, 162, 170, 177, 183, 189, 204, 201, 193, 155, 142, 175, + 213, 217, 218, 222, 205, 201, 189, 189, 178, 175, 173, 161, 157, 146, 132, 44, + 38, 37, 85, 85, 108, 10, 45, 55, 40, 51, 190, 216, 199, 116, 110, 123, + 147, 157, 162, 166, 169, 163, 161, 143, 140, 140, 136, 131, 102, 20, 12, 17, + 28, 30, 33, 26, 44, 21, 84, 110, 103, 108, 106, 99, 103, 102, 106, 89, + 73, 55, 13, 77, 127, 163, 193, 163, 136, 104, 89, 49, 25, 13, 72, 79, + 69, 83, 63, 72, 60, 73, 245, 242, 241, 99, 96, 111, 132, 140, 154, 169, + 175, 174, 167, 165, 154, 143, 132, 16, 12, 9, 8, 13, 25, 25, 14, 16, + 13, 29, 17, 81, 96, 142, 229, 229, 224, 123, 123, 118, 127, 143, 162, 167, + 179, 185, 190, 190, 186, 182, 175, 150, 53, 29, 25, 30, 48, 53, 110, 199, + 210, 179, 157, 159, 179, 190, 199, 205, 206, 208, 208, 204, 198, 177, 130, 55, + 32, 26, 30, 59, 81, 96, 97, 197, 224, 218, 185, 179, 195, 183, 194, 179, + 174, 155, 143, 135, 138, 91, 40, 44, 53, 51, 69, 93, 103, 108, 102, 92, + 110, 144, 234, 244, 246, 248, 230, 151, 119, 119, 119, 126, 146, 147, 89, 56, + 34, 34, 41, 38, 60, 124, 205, 198, 170, 174, 179, 177, 183, 143, 138, 120, + 114, 91, 55, 72, 68, 75, 68, 79, 79, 68, 30, 138, 147, 124, 139, 132, + 139, 147, 143, 123, 96, 83, 103, 151, 139, 136, 130, 128, 132, 131, 127, 130, + 136, 57, 26, 71, 92, 85, 73, 73, 72, 76, 85, 57, 55, 34, 110, 119, + 106, 124, 249, 249, 246, 115, 106, 116, 139, 151, 157, 167, 175, 179, 183, 170, + 166, 142, 135, 136, 136, 124, 13, 24, 26, 44, 80, 95, 110, 106, 95, 110, + 93, 99, 64, 96, 142, 120, 132, 120, 112, 126, 122, 132, 212, 229, 216, 218, + 199, 157, 122, 95, 83, 93, 102, 99, 106, 95, 218, 216, 208, 132, 132, 142, + 146, 148, 151, 140, 151, 143, 128, 123, 71, 32, 28, 52, 77, 91, 96, 103, + 122, 97, 65, 97, 144, 175, 240, 245, 242, 126, 108, 120, 132, 144, 153, 169, + 174, 171, 151, 73, 41, 34, 37, 44, 51, 33, 81, 116, 209, 213, 236, 132, + 153, 153, 154, 146, 138, 135, 131, 130, 118, 46, 45, 46, 75, 76, 89, 99, + 112, 124, 226, 224, 216, 119, 116, 124, 136, 148, 158, 163, 175, 181, 181, 181, + 177, 173, 165, 122, 49, 26, 28, 28, 34, 38, 38, 51, 71, 87, 88, 81, + 84, 83, 85, 93, 77, 91, 92, 128, 228, 244, 244, 238, 224, 187, 151, 139, + 140, 146, 154, 163, 173, 181, 191, 201, 205, 208, 209, 208, 191, 195, 199, 202, + 204, 206, 209, 209, 213, 210, 191, 187, 173, 162, 154, 139, 138, 112, 48, 56, + 80, 93, 111, 115, 115, 116, 85, 110, 131, 126, 122, 140, 150, 213, 222, 212, + 119, 115, 124, 139, 147, 159, 169, 173, 174, 174, 178, 177, 173, 163, 123, 55, + 33, 25, 30, 38, 48, 48, 51, 56, 69, 60, 24, 99, 122, 122, 124, 119, + 131, 122, 123, 132, 134, 134, 80, 122, 162, 174, 185, 154, 122, 118, 134, 143, + 161, 167, 175, 179, 189, 195, 208, 206, 204, 194, 213, 216, 216, 225, 225, 206, + 195, 193, 187, 181, 179, 171, 161, 158, 146, 135, 40, 38, 37, 63, 85, 106, + 92, 38, 41, 40, 34, 108, 212, 206, 120, 108, 118, 136, 151, 159, 165, 167, + 166, 163, 154, 136, 142, 134, 135, 115, 26, 14, 18, 28, 29, 37, 29, 46, + 17, 60, 95, 102, 102, 96, 100, 99, 112, 96, 95, 75, 55, 16, 106, 153, + 214, 220, 230, 189, 138, 104, 64, 25, 13, 72, 79, 77, 65, 65, 67, 63, + 64, 245, 245, 234, 103, 95, 107, 127, 139, 153, 169, 175, 174, 167, 165, 154, + 143, 134, 17, 9, 14, 9, 12, 22, 28, 28, 26, 6, 25, 25, 80, 91, + 110, 230, 229, 228, 134, 124, 131, 127, 148, 146, 170, 175, 187, 182, 190, 187, + 177, 173, 128, 41, 28, 22, 32, 41, 56, 91, 190, 214, 195, 158, 154, 173, + 186, 195, 199, 205, 208, 209, 206, 202, 183, 163, 73, 34, 25, 29, 59, 79, + 95, 97, 179, 228, 224, 193, 194, 191, 195, 194, 185, 170, 157, 146, 135, 128, + 107, 48, 41, 53, 49, 64, 97, 110, 93, 93, 106, 104, 191, 240, 246, 248, + 238, 163, 122, 122, 126, 132, 150, 147, 153, 77, 52, 34, 24, 45, 45, 76, + 103, 210, 205, 173, 175, 179, 173, 173, 175, 140, 132, 127, 100, 55, 56, 67, + 71, 67, 68, 77, 75, 55, 142, 155, 130, 139, 134, 139, 147, 131, 118, 114, + 72, 119, 151, 143, 127, 131, 127, 136, 134, 132, 134, 128, 81, 0, 89, 87, + 76, 69, 76, 91, 96, 81, 55, 55, 30, 100, 116, 100, 123, 250, 248, 240, + 114, 104, 118, 138, 146, 162, 169, 173, 179, 181, 169, 162, 151, 142, 136, 135, + 120, 14, 25, 29, 51, 81, 102, 108, 104, 96, 106, 93, 92, 60, 106, 130, + 115, 123, 127, 122, 119, 119, 136, 225, 229, 233, 229, 191, 131, 107, 77, 75, + 95, 89, 96, 102, 97, 222, 221, 213, 136, 134, 146, 147, 151, 147, 142, 157, + 139, 124, 120, 60, 32, 28, 48, 77, 92, 92, 102, 112, 106, 59, 120, 140, + 146, 237, 244, 240, 124, 108, 119, 132, 143, 151, 170, 173, 169, 150, 56, 36, + 34, 38, 44, 46, 30, 80, 118, 210, 214, 212, 151, 143, 148, 148, 144, 138, + 136, 127, 126, 112, 42, 40, 42, 72, 80, 87, 103, 108, 118, 230, 226, 221, + 122, 115, 126, 138, 146, 157, 163, 175, 181, 181, 178, 167, 169, 144, 64, 29, + 28, 30, 34, 49, 48, 40, 87, 96, 95, 93, 92, 95, 92, 97, 92, 88, + 83, 108, 198, 225, 240, 229, 206, 167, 140, 130, 138, 148, 162, 174, 182, 190, + 198, 209, 218, 220, 222, 224, 222, 218, 205, 201, 204, 198, 197, 194, 214, 214, + 216, 194, 187, 170, 166, 157, 142, 138, 120, 61, 49, 71, 106, 106, 127, 114, + 110, 84, 107, 106, 120, 118, 108, 143, 210, 226, 218, 119, 116, 124, 139, 146, + 161, 167, 171, 174, 175, 177, 173, 169, 143, 63, 33, 29, 32, 41, 49, 52, + 53, 57, 60, 72, 64, 24, 102, 127, 134, 119, 120, 126, 111, 134, 139, 128, + 136, 72, 120, 151, 165, 166, 174, 130, 118, 120, 138, 155, 165, 171, 177, 183, + 194, 202, 209, 212, 210, 214, 217, 216, 229, 218, 202, 195, 194, 187, 181, 174, + 171, 161, 158, 144, 132, 36, 36, 33, 55, 118, 124, 84, 20, 36, 45, 41, + 60, 193, 206, 132, 108, 116, 131, 148, 157, 161, 165, 171, 173, 165, 154, 131, + 131, 134, 122, 41, 12, 16, 21, 25, 38, 30, 40, 37, 36, 91, 103, 103, + 107, 100, 100, 103, 102, 87, 77, 59, 26, 144, 191, 232, 214, 210, 206, 217, + 138, 89, 29, 13, 65, 69, 73, 59, 55, 61, 53, 61, 246, 245, 238, 107, + 97, 104, 122, 138, 155, 167, 177, 175, 167, 165, 154, 143, 131, 14, 10, 12, + 12, 10, 21, 25, 33, 30, 28, 22, 29, 72, 83, 99, 230, 230, 228, 134, + 110, 119, 130, 139, 143, 161, 173, 183, 189, 191, 186, 174, 165, 104, 33, 25, + 22, 32, 48, 61, 84, 178, 221, 205, 162, 150, 163, 181, 189, 198, 201, 205, + 208, 209, 206, 199, 182, 106, 38, 28, 29, 59, 80, 85, 89, 151, 226, 226, + 197, 179, 191, 197, 185, 174, 155, 150, 147, 140, 130, 120, 67, 41, 48, 46, + 64, 96, 111, 99, 97, 102, 93, 206, 244, 246, 245, 195, 130, 123, 130, 135, + 136, 151, 155, 155, 71, 34, 30, 28, 38, 44, 64, 104, 214, 212, 190, 173, + 178, 175, 173, 178, 144, 140, 127, 97, 46, 49, 69, 57, 65, 72, 81, 57, + 85, 134, 140, 131, 124, 123, 131, 128, 131, 115, 95, 55, 127, 151, 143, 127, + 135, 127, 135, 134, 132, 126, 126, 75, 0, 92, 84, 81, 69, 75, 64, 57, + 53, 64, 56, 32, 103, 114, 107, 119, 248, 246, 233, 110, 104, 119, 140, 150, + 161, 169, 175, 174, 182, 181, 170, 159, 144, 131, 131, 118, 14, 25, 34, 64, + 80, 96, 108, 108, 112, 111, 91, 97, 60, 100, 131, 115, 111, 123, 110, 123, + 119, 144, 226, 234, 233, 183, 132, 123, 84, 71, 75, 88, 87, 87, 96, 97, + 224, 225, 220, 139, 135, 144, 151, 165, 154, 153, 155, 128, 124, 116, 46, 29, + 29, 48, 77, 89, 93, 102, 112, 106, 52, 128, 142, 126, 233, 242, 238, 126, + 110, 119, 132, 146, 153, 170, 170, 165, 140, 49, 36, 36, 41, 41, 41, 34, + 76, 124, 214, 220, 210, 146, 140, 144, 150, 143, 139, 138, 136, 122, 108, 38, + 37, 40, 68, 71, 76, 100, 116, 116, 232, 232, 225, 122, 116, 126, 136, 146, + 157, 165, 170, 181, 178, 173, 169, 159, 107, 40, 28, 30, 33, 40, 41, 38, + 42, 72, 104, 130, 130, 127, 127, 119, 102, 79, 96, 108, 153, 228, 237, 222, + 187, 150, 130, 130, 142, 153, 163, 177, 183, 191, 199, 206, 216, 208, 165, 139, + 162, 204, 224, 222, 209, 201, 197, 205, 205, 216, 212, 212, 193, 185, 173, 167, + 155, 140, 136, 123, 85, 49, 59, 91, 100, 126, 124, 110, 80, 107, 108, 122, + 119, 96, 147, 217, 229, 222, 122, 115, 126, 139, 146, 161, 167, 173, 175, 177, + 177, 170, 158, 106, 41, 33, 32, 38, 51, 56, 59, 57, 61, 68, 77, 69, + 26, 108, 135, 131, 123, 115, 134, 131, 139, 143, 120, 134, 63, 123, 139, 155, + 165, 182, 165, 119, 111, 131, 148, 162, 169, 175, 182, 194, 194, 201, 208, 205, + 206, 220, 224, 220, 209, 201, 198, 193, 189, 179, 173, 171, 159, 157, 143, 131, + 32, 34, 34, 61, 85, 104, 63, 77, 49, 32, 29, 28, 114, 202, 161, 111, + 112, 124, 142, 151, 158, 165, 174, 169, 170, 159, 130, 127, 135, 130, 61, 16, + 12, 26, 22, 33, 32, 42, 34, 30, 84, 100, 107, 103, 107, 107, 106, 103, + 91, 80, 56, 26, 159, 209, 229, 222, 226, 209, 181, 140, 91, 26, 14, 65, + 81, 72, 73, 59, 63, 55, 80, 245, 246, 241, 112, 97, 103, 118, 143, 154, + 167, 174, 174, 170, 165, 154, 144, 134, 20, 13, 6, 12, 13, 18, 18, 30, + 30, 38, 13, 10, 72, 80, 97, 229, 232, 226, 120, 108, 119, 134, 128, 132, + 148, 166, 178, 186, 185, 182, 169, 154, 76, 29, 26, 20, 34, 63, 53, 80, + 158, 222, 213, 166, 146, 154, 174, 183, 191, 197, 199, 204, 209, 209, 202, 189, + 148, 52, 32, 25, 53, 76, 84, 91, 127, 224, 229, 202, 181, 191, 191, 182, + 163, 153, 146, 151, 147, 132, 131, 83, 40, 41, 48, 61, 95, 115, 95, 85, + 88, 102, 216, 238, 244, 242, 163, 124, 130, 136, 140, 144, 157, 158, 161, 65, + 36, 30, 21, 40, 44, 64, 96, 213, 218, 210, 177, 178, 178, 174, 181, 150, + 144, 124, 96, 40, 41, 55, 64, 57, 67, 69, 67, 72, 142, 138, 134, 128, + 128, 130, 127, 136, 114, 84, 72, 99, 136, 142, 131, 134, 134, 132, 135, 132, + 134, 123, 75, 21, 91, 83, 81, 65, 73, 83, 59, 59, 71, 49, 32, 112, + 115, 107, 123, 246, 244, 189, 106, 106, 118, 139, 146, 157, 163, 173, 174, 182, + 182, 177, 166, 150, 132, 131, 123, 16, 28, 37, 73, 72, 97, 102, 106, 111, + 99, 95, 87, 57, 114, 123, 114, 116, 120, 115, 123, 123, 151, 236, 237, 232, + 153, 123, 107, 75, 65, 73, 88, 84, 87, 100, 107, 222, 226, 220, 140, 134, + 148, 170, 170, 167, 162, 154, 124, 124, 116, 42, 30, 30, 49, 75, 89, 95, + 104, 102, 87, 52, 92, 139, 151, 233, 241, 240, 128, 108, 120, 131, 144, 154, + 171, 171, 166, 134, 48, 34, 36, 45, 45, 46, 37, 75, 123, 214, 220, 233, + 126, 138, 139, 147, 138, 143, 146, 138, 118, 97, 38, 37, 40, 72, 68, 73, + 99, 102, 119, 236, 233, 224, 120, 116, 127, 138, 147, 158, 166, 170, 179, 175, + 169, 166, 146, 65, 32, 30, 33, 38, 49, 53, 38, 88, 99, 127, 123, 123, + 126, 132, 120, 91, 79, 99, 124, 216, 233, 230, 205, 140, 118, 130, 140, 153, + 165, 175, 182, 189, 194, 204, 210, 210, 127, 95, 89, 99, 128, 170, 225, 217, + 210, 198, 206, 214, 217, 217, 205, 189, 185, 177, 169, 154, 140, 131, 127, 96, + 53, 67, 91, 102, 115, 115, 110, 79, 110, 114, 120, 119, 103, 143, 226, 230, + 225, 122, 116, 127, 139, 146, 159, 167, 171, 175, 178, 173, 165, 143, 71, 33, + 29, 37, 52, 57, 57, 61, 61, 65, 73, 83, 76, 29, 115, 142, 135, 140, + 138, 136, 139, 142, 118, 127, 132, 65, 123, 136, 155, 161, 175, 181, 128, 110, + 126, 142, 158, 166, 174, 181, 189, 195, 197, 198, 197, 197, 198, 205, 208, 208, + 205, 201, 194, 186, 181, 173, 170, 162, 158, 144, 126, 30, 32, 30, 73, 60, + 103, 64, 59, 60, 22, 32, 30, 63, 181, 186, 114, 111, 120, 131, 148, 159, + 166, 175, 171, 173, 159, 127, 128, 135, 131, 93, 20, 14, 16, 18, 24, 37, + 41, 41, 29, 67, 103, 103, 99, 106, 102, 106, 102, 89, 76, 63, 21, 177, + 217, 228, 225, 186, 165, 130, 100, 87, 24, 14, 42, 75, 79, 80, 53, 61, + 55, 67, 245, 246, 242, 112, 100, 100, 119, 136, 151, 166, 173, 174, 171, 161, + 151, 146, 131, 18, 14, 17, 12, 14, 29, 21, 21, 26, 33, 21, 22, 63, + 75, 89, 226, 237, 230, 132, 120, 119, 126, 127, 131, 138, 154, 167, 185, 185, + 170, 166, 147, 57, 29, 22, 20, 34, 53, 49, 69, 143, 218, 217, 182, 143, + 146, 166, 177, 183, 190, 193, 197, 202, 206, 204, 190, 177, 83, 32, 26, 52, + 67, 83, 88, 112, 220, 229, 205, 179, 190, 194, 174, 161, 139, 135, 138, 144, + 136, 132, 104, 49, 37, 48, 57, 92, 102, 93, 87, 100, 104, 217, 237, 245, + 225, 148, 128, 132, 140, 139, 155, 161, 165, 167, 61, 37, 33, 26, 40, 49, + 56, 91, 214, 221, 217, 179, 178, 182, 175, 178, 153, 142, 124, 95, 37, 37, + 52, 52, 49, 57, 63, 25, 75, 135, 131, 132, 134, 132, 127, 126, 143, 115, + 80, 64, 127, 148, 130, 135, 138, 143, 148, 142, 132, 130, 130, 55, 26, 68, + 79, 80, 64, 71, 60, 59, 61, 56, 55, 33, 107, 115, 107, 118, 245, 242, + 171, 103, 102, 116, 128, 139, 150, 159, 171, 174, 183, 181, 177, 166, 151, 131, + 132, 123, 17, 29, 29, 53, 71, 81, 102, 107, 107, 100, 95, 93, 55, 92, + 120, 111, 111, 111, 110, 114, 123, 181, 246, 237, 222, 135, 119, 100, 61, 64, + 69, 84, 80, 85, 97, 106, 225, 226, 220, 140, 135, 147, 171, 163, 169, 157, + 158, 123, 124, 115, 44, 30, 30, 52, 76, 88, 96, 95, 96, 88, 44, 92, + 142, 147, 232, 240, 238, 124, 110, 116, 131, 146, 155, 173, 167, 170, 132, 44, + 34, 36, 48, 40, 57, 37, 72, 114, 212, 220, 214, 139, 132, 136, 146, 140, + 140, 143, 136, 118, 91, 36, 34, 38, 67, 69, 76, 92, 107, 132, 237, 237, + 226, 120, 115, 126, 136, 147, 158, 166, 171, 177, 173, 169, 163, 118, 48, 32, + 32, 37, 42, 48, 41, 28, 96, 104, 130, 140, 134, 119, 136, 119, 107, 95, + 108, 167, 228, 230, 224, 175, 115, 123, 138, 148, 163, 174, 177, 186, 187, 197, + 202, 213, 178, 99, 71, 59, 63, 79, 127, 208, 224, 216, 205, 195, 216, 216, + 214, 213, 199, 186, 179, 167, 154, 138, 124, 127, 104, 56, 61, 85, 119, 106, + 114, 115, 75, 107, 112, 119, 112, 93, 148, 229, 236, 226, 123, 118, 126, 138, + 144, 159, 166, 169, 173, 173, 167, 162, 120, 53, 34, 33, 45, 56, 63, 63, + 63, 64, 71, 76, 77, 77, 28, 110, 138, 140, 140, 142, 136, 139, 140, 136, + 130, 128, 80, 128, 131, 142, 148, 159, 181, 146, 108, 116, 136, 153, 163, 171, + 178, 186, 193, 199, 199, 202, 201, 198, 197, 201, 210, 202, 202, 194, 187, 178, + 174, 173, 162, 157, 142, 128, 28, 30, 30, 53, 63, 102, 20, 22, 33, 45, + 25, 22, 32, 107, 181, 119, 107, 111, 122, 144, 157, 165, 170, 175, 169, 154, + 134, 130, 136, 131, 112, 28, 17, 21, 21, 21, 37, 28, 44, 29, 61, 91, + 99, 108, 106, 111, 103, 97, 83, 80, 65, 24, 175, 226, 234, 226, 173, 123, + 92, 87, 65, 20, 14, 30, 68, 76, 76, 59, 56, 52, 69, 244, 245, 238, + 110, 97, 103, 123, 138, 147, 166, 170, 174, 169, 162, 153, 147, 128, 20, 17, + 16, 12, 16, 24, 21, 12, 22, 24, 26, 32, 51, 83, 107, 229, 234, 232, + 132, 124, 128, 123, 124, 128, 142, 157, 153, 162, 165, 158, 161, 139, 40, 25, + 20, 20, 32, 37, 52, 68, 102, 210, 217, 191, 143, 140, 157, 169, 177, 179, + 183, 189, 197, 202, 202, 198, 189, 110, 37, 25, 52, 61, 80, 85, 97, 213, + 228, 212, 183, 189, 194, 174, 167, 155, 154, 150, 136, 138, 128, 114, 59, 40, + 44, 42, 79, 96, 87, 84, 99, 97, 217, 244, 245, 194, 139, 132, 136, 143, + 142, 154, 162, 167, 169, 61, 34, 32, 22, 37, 49, 71, 85, 210, 222, 222, + 179, 183, 181, 173, 181, 155, 142, 127, 89, 37, 32, 40, 46, 48, 55, 67, + 41, 104, 136, 142, 138, 131, 139, 127, 131, 116, 114, 110, 59, 120, 142, 148, + 146, 153, 146, 143, 136, 142, 135, 122, 83, 0, 80, 79, 65, 65, 63, 59, + 56, 59, 57, 59, 32, 89, 114, 99, 119, 241, 237, 187, 107, 107, 115, 119, + 132, 142, 157, 169, 177, 181, 183, 170, 165, 148, 132, 138, 119, 18, 29, 32, + 52, 68, 83, 99, 104, 96, 108, 95, 89, 52, 95, 110, 114, 102, 115, 114, + 111, 131, 213, 241, 240, 220, 132, 119, 81, 60, 57, 67, 69, 79, 73, 95, + 103, 221, 228, 216, 138, 136, 150, 174, 169, 162, 157, 153, 124, 123, 111, 38, + 29, 33, 51, 72, 88, 92, 102, 99, 99, 40, 110, 138, 127, 229, 238, 234, + 123, 110, 120, 132, 146, 159, 173, 170, 167, 127, 49, 37, 36, 33, 48, 53, + 33, 61, 103, 213, 218, 206, 135, 131, 135, 144, 143, 136, 140, 136, 118, 92, + 33, 30, 34, 56, 68, 81, 88, 103, 122, 237, 234, 230, 122, 115, 126, 138, + 147, 158, 167, 171, 177, 169, 165, 151, 85, 36, 34, 37, 38, 44, 53, 53, + 26, 75, 110, 131, 136, 130, 120, 130, 120, 99, 96, 97, 189, 222, 230, 214, + 139, 112, 127, 140, 154, 167, 171, 183, 189, 193, 198, 205, 214, 147, 76, 53, + 51, 57, 75, 110, 177, 226, 217, 213, 190, 216, 220, 221, 213, 204, 187, 179, + 169, 154, 140, 130, 130, 116, 63, 60, 80, 88, 104, 116, 107, 64, 104, 107, + 135, 106, 102, 144, 224, 237, 232, 120, 115, 124, 138, 144, 158, 167, 165, 173, + 171, 166, 151, 95, 44, 33, 40, 48, 64, 69, 79, 80, 79, 81, 81, 85, + 75, 28, 116, 138, 131, 136, 143, 138, 138, 135, 138, 123, 123, 46, 124, 128, + 135, 143, 157, 167, 165, 126, 107, 126, 146, 161, 169, 178, 183, 190, 195, 191, + 190, 194, 204, 201, 194, 198, 212, 204, 195, 189, 181, 174, 173, 162, 157, 146, + 128, 24, 29, 29, 53, 73, 83, 8, 8, 9, 8, 6, 17, 18, 48, 167, + 162, 107, 110, 122, 144, 155, 162, 165, 165, 159, 155, 127, 130, 130, 134, 126, + 63, 20, 13, 18, 20, 34, 34, 48, 30, 42, 79, 88, 91, 92, 87, 91, + 91, 87, 77, 67, 36, 181, 229, 238, 208, 154, 99, 91, 88, 61, 21, 14, + 21, 38, 42, 57, 49, 57, 49, 63, 242, 244, 234, 110, 97, 106, 122, 131, + 143, 165, 174, 171, 169, 161, 150, 147, 127, 20, 18, 20, 12, 14, 6, 20, + 22, 10, 25, 32, 25, 44, 75, 100, 228, 232, 229, 134, 110, 118, 132, 135, + 132, 144, 147, 144, 157, 157, 157, 157, 135, 41, 29, 25, 21, 32, 42, 56, + 71, 81, 199, 220, 201, 147, 138, 146, 162, 169, 171, 175, 182, 189, 195, 198, + 197, 190, 147, 52, 30, 45, 59, 73, 75, 85, 201, 229, 220, 185, 185, 194, + 181, 170, 166, 159, 155, 151, 136, 128, 127, 83, 42, 42, 41, 72, 100, 114, + 89, 93, 87, 198, 242, 245, 187, 135, 138, 144, 147, 143, 154, 165, 170, 170, + 60, 36, 29, 21, 32, 42, 61, 92, 221, 224, 224, 181, 182, 183, 177, 179, + 157, 143, 130, 91, 34, 32, 36, 42, 64, 46, 69, 41, 99, 111, 100, 108, + 108, 110, 108, 111, 107, 108, 80, 45, 118, 132, 135, 128, 140, 132, 124, 122, + 134, 130, 111, 55, 0, 80, 63, 63, 57, 68, 59, 75, 57, 65, 53, 30, + 91, 110, 106, 116, 244, 245, 225, 110, 106, 112, 120, 120, 142, 161, 171, 181, + 185, 175, 166, 154, 139, 134, 130, 116, 22, 30, 33, 49, 69, 80, 95, 99, + 104, 104, 91, 88, 52, 92, 114, 112, 104, 107, 111, 115, 143, 232, 241, 242, + 220, 135, 115, 71, 55, 51, 77, 61, 75, 77, 83, 92, 222, 222, 214, 134, + 135, 148, 166, 162, 161, 153, 144, 126, 122, 107, 38, 28, 32, 51, 64, 87, + 92, 96, 112, 97, 34, 122, 138, 132, 226, 237, 229, 127, 112, 120, 132, 147, + 161, 166, 167, 169, 139, 56, 37, 37, 46, 46, 55, 37, 57, 99, 213, 212, + 205, 127, 134, 135, 146, 138, 140, 136, 138, 119, 88, 30, 30, 30, 67, 63, + 67, 72, 97, 116, 236, 236, 229, 122, 114, 124, 135, 147, 158, 167, 174, 174, + 166, 163, 148, 68, 33, 33, 36, 42, 44, 44, 59, 25, 107, 116, 126, 115, + 108, 119, 122, 119, 106, 92, 97, 193, 222, 216, 201, 123, 114, 127, 140, 154, + 173, 173, 185, 190, 191, 199, 205, 209, 135, 71, 57, 52, 52, 64, 89, 153, + 228, 221, 214, 199, 213, 217, 218, 216, 210, 189, 183, 170, 159, 142, 132, 127, + 122, 83, 61, 69, 88, 96, 118, 104, 67, 96, 96, 93, 87, 85, 134, 213, + 234, 232, 123, 115, 124, 138, 143, 158, 165, 165, 173, 170, 161, 144, 76, 41, + 34, 44, 60, 76, 79, 77, 77, 81, 80, 80, 84, 83, 33, 110, 135, 136, + 144, 139, 138, 138, 144, 142, 112, 132, 37, 123, 122, 134, 135, 148, 151, 178, + 147, 108, 118, 142, 155, 166, 175, 183, 187, 189, 189, 186, 190, 195, 205, 206, + 193, 199, 204, 197, 191, 182, 175, 175, 163, 158, 146, 128, 22, 26, 28, 56, + 68, 87, 2, 1, 2, 8, 2, 4, 5, 17, 75, 177, 108, 107, 118, 134, + 148, 155, 163, 166, 157, 139, 126, 128, 128, 130, 131, 100, 33, 22, 22, 26, + 26, 29, 30, 33, 42, 56, 49, 52, 56, 55, 57, 56, 87, 79, 63, 28, + 166, 225, 240, 189, 119, 99, 91, 87, 59, 18, 14, 21, 26, 26, 29, 32, + 33, 57, 67, 245, 242, 240, 114, 92, 102, 120, 122, 140, 157, 165, 170, 167, + 162, 148, 144, 130, 21, 17, 8, 8, 10, 12, 14, 5, 5, 18, 26, 26, + 38, 73, 87, 225, 230, 232, 128, 104, 116, 127, 135, 146, 151, 147, 142, 146, + 142, 154, 151, 127, 46, 26, 26, 14, 36, 34, 56, 53, 75, 190, 221, 204, + 146, 134, 142, 154, 162, 166, 170, 177, 183, 191, 195, 194, 189, 167, 76, 37, + 36, 55, 65, 73, 85, 183, 230, 224, 189, 178, 194, 195, 169, 177, 170, 163, + 157, 151, 139, 128, 118, 57, 41, 40, 65, 97, 103, 81, 80, 92, 187, 229, + 245, 175, 132, 140, 147, 148, 143, 155, 173, 177, 177, 68, 42, 28, 25, 30, + 41, 76, 103, 226, 228, 226, 185, 183, 183, 178, 178, 159, 146, 132, 87, 33, + 34, 33, 36, 38, 38, 48, 57, 57, 87, 87, 89, 91, 97, 92, 85, 104, + 106, 53, 53, 45, 108, 97, 85, 79, 103, 83, 72, 68, 97, 67, 13, 42, + 61, 52, 37, 38, 46, 40, 37, 36, 52, 41, 33, 81, 96, 108, 128, 245, + 238, 234, 111, 110, 115, 120, 128, 143, 167, 170, 177, 182, 178, 167, 153, 128, + 135, 138, 114, 25, 34, 34, 42, 52, 63, 81, 92, 95, 92, 88, 87, 48, + 95, 103, 110, 100, 102, 104, 116, 161, 245, 248, 242, 201, 131, 115, 64, 52, + 49, 67, 75, 63, 69, 84, 89, 222, 228, 218, 138, 136, 147, 161, 163, 161, + 159, 126, 126, 122, 104, 33, 29, 29, 53, 56, 77, 88, 93, 96, 81, 51, + 71, 123, 127, 220, 233, 232, 127, 114, 122, 134, 150, 161, 171, 170, 169, 148, + 63, 40, 40, 44, 37, 46, 34, 75, 111, 208, 220, 217, 134, 131, 131, 140, + 139, 139, 135, 131, 118, 80, 30, 28, 30, 60, 48, 55, 69, 96, 111, 237, + 238, 232, 124, 116, 123, 131, 147, 161, 169, 174, 175, 166, 163, 146, 60, 36, + 37, 40, 63, 52, 46, 60, 36, 106, 114, 102, 115, 110, 107, 97, 111, 100, + 96, 96, 193, 220, 216, 175, 110, 115, 124, 136, 157, 171, 173, 178, 182, 191, + 195, 202, 214, 127, 71, 60, 56, 59, 55, 77, 148, 230, 225, 217, 198, 202, + 216, 216, 221, 216, 202, 183, 173, 162, 148, 140, 126, 127, 97, 65, 71, 73, + 80, 88, 72, 67, 67, 69, 71, 60, 79, 132, 201, 230, 233, 123, 115, 127, + 138, 142, 158, 166, 166, 170, 167, 159, 140, 72, 45, 36, 51, 73, 73, 77, + 71, 76, 80, 83, 84, 85, 77, 34, 77, 119, 139, 102, 111, 127, 134, 128, + 136, 123, 124, 37, 123, 120, 122, 120, 131, 139, 146, 165, 112, 107, 134, 150, + 163, 173, 179, 181, 183, 182, 186, 187, 190, 194, 204, 204, 194, 198, 195, 193, + 185, 177, 175, 165, 159, 147, 128, 24, 28, 28, 55, 63, 64, 36, 41, 46, + 40, 29, 45, 36, 13, 17, 138, 162, 115, 111, 118, 138, 148, 154, 158, 155, + 142, 131, 127, 122, 132, 134, 122, 59, 28, 13, 18, 21, 22, 20, 18, 24, + 25, 25, 32, 37, 42, 46, 48, 59, 75, 68, 30, 165, 220, 234, 177, 110, + 91, 89, 85, 57, 18, 10, 17, 24, 22, 24, 30, 30, 52, 55, 244, 241, + 236, 112, 103, 102, 120, 132, 134, 151, 162, 174, 169, 158, 147, 146, 123, 20, + 21, 21, 16, 16, 21, 20, 20, 21, 36, 20, 22, 38, 65, 97, 225, 232, + 228, 130, 115, 119, 128, 132, 146, 143, 143, 140, 143, 140, 153, 147, 123, 41, + 38, 25, 26, 49, 68, 63, 67, 69, 178, 216, 210, 150, 130, 139, 151, 158, + 161, 167, 171, 178, 186, 191, 193, 190, 179, 99, 41, 28, 42, 59, 69, 80, + 161, 230, 228, 193, 178, 186, 195, 191, 162, 178, 169, 165, 151, 151, 136, 130, + 92, 44, 44, 61, 71, 77, 71, 87, 87, 147, 234, 244, 174, 136, 142, 151, + 148, 148, 163, 175, 179, 182, 75, 49, 34, 28, 56, 73, 79, 114, 230, 230, + 229, 191, 183, 187, 181, 179, 163, 148, 130, 95, 29, 28, 29, 10, 9, 6, + 9, 10, 28, 28, 13, 12, 25, 28, 22, 21, 30, 36, 32, 53, 25, 25, + 14, 20, 24, 26, 8, 18, 25, 29, 5, 20, 67, 18, 45, 59, 65, 68, + 77, 77, 79, 77, 77, 36, 110, 104, 112, 138, 245, 245, 234, 111, 111, 118, + 122, 135, 148, 163, 167, 173, 175, 179, 166, 153, 131, 136, 134, 108, 29, 36, + 34, 44, 55, 56, 56, 59, 63, 75, 71, 59, 48, 89, 95, 88, 85, 97, + 112, 112, 208, 245, 248, 240, 177, 126, 112, 57, 49, 42, 41, 44, 49, 57, + 80, 87, 228, 230, 216, 135, 131, 131, 151, 159, 159, 151, 124, 118, 124, 96, + 30, 28, 32, 45, 57, 69, 75, 75, 81, 75, 41, 53, 120, 132, 214, 229, + 229, 127, 114, 123, 134, 150, 159, 171, 174, 173, 154, 81, 45, 40, 48, 34, + 40, 59, 89, 138, 214, 221, 204, 131, 127, 128, 135, 136, 140, 135, 128, 116, + 75, 28, 25, 28, 40, 42, 49, 75, 96, 96, 238, 241, 234, 122, 114, 122, + 132, 147, 161, 169, 177, 174, 163, 161, 146, 57, 34, 34, 44, 48, 63, 56, + 52, 26, 77, 87, 80, 80, 96, 95, 84, 83, 95, 93, 102, 183, 218, 204, + 151, 106, 115, 122, 136, 154, 171, 178, 185, 179, 191, 193, 195, 210, 147, 75, + 61, 45, 49, 61, 83, 151, 228, 225, 222, 199, 186, 212, 216, 217, 214, 205, + 183, 175, 165, 157, 143, 124, 126, 108, 69, 79, 71, 60, 60, 55, 46, 51, + 49, 59, 56, 67, 140, 195, 236, 230, 124, 118, 127, 139, 143, 157, 166, 166, + 173, 166, 159, 142, 71, 42, 41, 67, 44, 32, 28, 25, 33, 20, 17, 17, + 30, 10, 33, 59, 57, 69, 65, 57, 59, 59, 84, 114, 118, 99, 40, 122, + 93, 106, 100, 112, 116, 128, 155, 132, 104, 127, 146, 159, 169, 173, 175, 175, + 174, 177, 178, 182, 190, 197, 208, 195, 194, 201, 193, 186, 177, 175, 165, 161, + 148, 130, 22, 25, 26, 51, 53, 59, 115, 100, 80, 84, 84, 69, 80, 42, + 24, 64, 147, 106, 110, 112, 120, 138, 153, 150, 148, 139, 146, 146, 132, 123, + 131, 132, 108, 40, 32, 42, 51, 49, 42, 46, 57, 57, 73, 64, 69, 64, + 49, 52, 44, 52, 67, 34, 155, 222, 237, 198, 115, 92, 91, 81, 42, 16, + 14, 16, 40, 51, 60, 59, 56, 56, 65, 237, 237, 232, 106, 95, 110, 123, + 123, 127, 138, 158, 171, 162, 155, 144, 143, 126, 22, 21, 25, 8, 20, 21, + 21, 16, 28, 42, 24, 21, 68, 67, 119, 222, 229, 226, 128, 118, 127, 135, + 134, 143, 132, 153, 147, 147, 139, 151, 144, 116, 41, 37, 22, 36, 60, 69, + 67, 69, 71, 158, 221, 210, 155, 127, 136, 144, 154, 158, 165, 167, 173, 182, + 186, 190, 186, 183, 128, 46, 42, 44, 67, 72, 91, 148, 226, 229, 194, 177, + 182, 191, 194, 187, 162, 175, 170, 165, 155, 151, 134, 123, 64, 45, 46, 49, + 57, 76, 93, 85, 132, 225, 236, 178, 139, 148, 158, 146, 147, 162, 182, 185, + 186, 87, 40, 32, 20, 48, 75, 87, 157, 233, 232, 229, 189, 189, 185, 178, + 177, 165, 148, 132, 93, 34, 30, 32, 24, 42, 26, 44, 30, 97, 107, 100, + 88, 99, 102, 102, 91, 102, 100, 49, 30, 44, 123, 116, 100, 100, 118, 112, + 99, 95, 95, 89, 63, 26, 46, 108, 122, 126, 119, 124, 119, 120, 84, 73, + 32, 111, 115, 115, 183, 242, 245, 225, 110, 110, 115, 124, 138, 151, 159, 158, + 157, 166, 177, 167, 154, 136, 142, 143, 111, 34, 40, 42, 59, 69, 72, 52, + 71, 72, 69, 63, 75, 68, 80, 84, 95, 99, 103, 119, 174, 241, 246, 248, + 244, 154, 122, 107, 55, 46, 42, 46, 51, 63, 69, 85, 100, 226, 232, 218, + 132, 131, 134, 142, 147, 159, 148, 126, 122, 126, 106, 33, 29, 33, 49, 57, + 53, 55, 60, 49, 75, 33, 57, 104, 123, 209, 226, 222, 131, 115, 123, 134, + 146, 159, 166, 170, 173, 161, 103, 49, 42, 38, 44, 46, 73, 102, 194, 229, + 230, 213, 130, 127, 131, 134, 132, 143, 140, 124, 116, 64, 28, 25, 37, 59, + 61, 73, 81, 103, 116, 237, 237, 234, 123, 114, 126, 138, 148, 159, 170, 175, + 171, 163, 158, 147, 61, 38, 42, 63, 64, 77, 72, 45, 34, 37, 33, 46, + 36, 42, 37, 45, 33, 46, 37, 61, 173, 213, 206, 135, 104, 118, 123, 134, + 138, 169, 178, 175, 179, 185, 195, 201, 209, 162, 87, 67, 56, 71, 61, 104, + 159, 229, 226, 225, 198, 182, 202, 214, 214, 212, 206, 187, 182, 166, 165, 148, + 134, 127, 118, 77, 76, 88, 85, 85, 68, 30, 52, 128, 165, 128, 126, 174, + 210, 226, 230, 120, 118, 126, 139, 138, 154, 162, 169, 166, 166, 158, 144, 77, + 49, 46, 73, 77, 112, 132, 146, 142, 136, 144, 153, 140, 65, 32, 112, 153, + 151, 132, 142, 143, 126, 93, 59, 57, 81, 64, 24, 32, 40, 40, 38, 30, + 69, 142, 147, 110, 110, 140, 147, 157, 163, 159, 162, 158, 159, 153, 158, 159, + 191, 205, 213, 186, 198, 193, 185, 177, 174, 163, 159, 148, 126, 20, 22, 26, + 49, 48, 51, 115, 84, 103, 88, 91, 106, 52, 57, 25, 21, 144, 127, 114, + 111, 114, 115, 126, 138, 139, 150, 142, 142, 148, 136, 130, 139, 123, 92, 36, + 30, 17, 38, 46, 46, 68, 79, 100, 84, 83, 85, 73, 68, 72, 76, 69, + 49, 177, 236, 241, 195, 116, 89, 85, 65, 28, 14, 14, 17, 46, 57, 55, + 56, 52, 52, 69, 216, 230, 230, 100, 92, 111, 124, 123, 123, 134, 146, 167, + 162, 155, 143, 142, 127, 30, 26, 21, 18, 33, 45, 61, 67, 68, 75, 69, + 68, 53, 81, 190, 217, 225, 225, 126, 110, 119, 120, 135, 144, 126, 138, 146, + 148, 142, 147, 146, 122, 34, 30, 25, 32, 65, 60, 63, 59, 69, 136, 216, + 210, 165, 126, 134, 136, 147, 157, 162, 169, 170, 178, 183, 185, 182, 182, 155, + 72, 42, 38, 76, 80, 84, 128, 218, 228, 198, 174, 178, 187, 195, 195, 171, + 162, 175, 175, 166, 161, 147, 132, 107, 69, 67, 71, 96, 102, 100, 93, 112, + 210, 232, 182, 146, 153, 159, 146, 148, 165, 186, 191, 191, 136, 64, 34, 17, + 56, 81, 99, 185, 237, 234, 232, 187, 187, 186, 179, 175, 165, 147, 131, 87, + 32, 28, 30, 49, 44, 48, 51, 29, 114, 119, 106, 89, 87, 96, 85, 91, + 96, 103, 61, 24, 93, 124, 111, 114, 115, 111, 116, 108, 114, 107, 110, 65, + 22, 106, 124, 120, 120, 115, 116, 104, 112, 96, 88, 32, 116, 118, 116, 201, + 245, 245, 226, 110, 108, 114, 123, 140, 154, 165, 162, 147, 157, 158, 154, 131, + 131, 146, 146, 111, 37, 41, 41, 65, 51, 61, 71, 77, 83, 88, 88, 83, + 92, 104, 106, 114, 120, 130, 162, 218, 248, 248, 246, 221, 131, 123, 84, 48, + 41, 41, 55, 61, 64, 76, 81, 104, 226, 232, 225, 127, 126, 135, 122, 136, + 138, 138, 119, 127, 124, 111, 34, 29, 32, 56, 64, 81, 88, 85, 77, 77, + 25, 128, 124, 130, 194, 222, 217, 135, 116, 123, 134, 144, 154, 169, 171, 175, + 174, 142, 61, 49, 45, 49, 69, 87, 116, 204, 230, 228, 213, 130, 127, 130, + 127, 136, 135, 131, 122, 107, 42, 26, 22, 42, 67, 75, 79, 97, 97, 120, + 237, 238, 236, 124, 116, 126, 135, 147, 158, 169, 175, 169, 158, 154, 143, 72, + 45, 40, 60, 87, 96, 93, 79, 26, 42, 139, 148, 126, 131, 142, 139, 120, + 131, 139, 97, 159, 206, 201, 124, 106, 118, 124, 130, 131, 157, 162, 181, 175, + 174, 187, 197, 199, 201, 128, 79, 71, 77, 87, 150, 209, 230, 228, 226, 193, + 181, 197, 206, 208, 206, 205, 183, 181, 171, 162, 161, 142, 127, 127, 83, 96, + 112, 143, 134, 77, 44, 124, 178, 173, 178, 190, 193, 222, 229, 218, 122, 118, + 127, 138, 134, 150, 159, 167, 169, 163, 157, 143, 84, 55, 46, 73, 130, 153, + 155, 154, 159, 161, 159, 162, 163, 115, 41, 138, 162, 170, 170, 166, 166, 163, + 157, 140, 107, 97, 53, 67, 154, 161, 106, 120, 143, 114, 85, 161, 132, 102, + 122, 134, 140, 146, 148, 134, 135, 147, 107, 97, 112, 175, 204, 217, 194, 189, + 191, 182, 175, 173, 162, 155, 147, 122, 17, 24, 29, 53, 89, 102, 88, 84, + 60, 87, 84, 76, 37, 55, 25, 10, 127, 123, 100, 114, 111, 111, 110, 112, + 119, 140, 153, 146, 140, 147, 132, 127, 131, 116, 79, 29, 38, 44, 14, 38, + 63, 96, 84, 76, 76, 65, 63, 63, 69, 56, 44, 118, 212, 238, 237, 209, + 112, 85, 77, 51, 21, 13, 14, 14, 44, 57, 49, 48, 37, 55, 103, 236, + 228, 210, 106, 103, 114, 126, 130, 124, 130, 140, 157, 159, 150, 135, 142, 130, + 28, 28, 9, 59, 44, 53, 55, 68, 77, 69, 68, 52, 75, 96, 224, 221, + 224, 216, 127, 103, 112, 123, 146, 148, 132, 123, 132, 139, 136, 146, 144, 120, + 49, 26, 26, 33, 67, 67, 75, 52, 61, 112, 206, 206, 173, 126, 132, 134, + 146, 151, 161, 166, 163, 171, 177, 182, 178, 177, 167, 96, 46, 32, 67, 79, + 83, 108, 201, 225, 208, 173, 175, 186, 194, 197, 189, 161, 163, 177, 179, 167, + 159, 144, 136, 103, 96, 95, 97, 95, 89, 89, 96, 190, 237, 185, 147, 157, + 165, 144, 147, 178, 189, 194, 197, 166, 51, 37, 30, 69, 91, 108, 195, 237, + 236, 232, 189, 187, 181, 178, 175, 166, 147, 128, 81, 30, 29, 28, 42, 60, + 65, 48, 32, 106, 123, 112, 122, 112, 112, 123, 111, 102, 102, 61, 49, 118, + 128, 111, 110, 106, 96, 92, 107, 97, 87, 106, 48, 21, 107, 126, 115, 104, + 99, 106, 111, 115, 88, 80, 36, 116, 119, 122, 221, 244, 241, 222, 112, 110, + 115, 120, 132, 157, 166, 167, 166, 161, 144, 138, 127, 139, 144, 150, 116, 69, + 42, 42, 69, 53, 65, 80, 84, 79, 79, 83, 81, 99, 119, 127, 135, 128, + 157, 213, 245, 249, 248, 242, 163, 126, 119, 71, 46, 44, 38, 57, 63, 65, + 76, 81, 106, 230, 232, 224, 134, 134, 128, 138, 124, 118, 114, 119, 130, 119, + 110, 34, 33, 30, 60, 80, 95, 97, 89, 93, 69, 28, 122, 134, 127, 170, + 216, 218, 153, 118, 124, 135, 146, 153, 162, 170, 167, 175, 159, 118, 71, 73, + 79, 102, 126, 181, 206, 230, 222, 221, 128, 126, 130, 130, 130, 135, 123, 118, + 77, 30, 25, 24, 46, 65, 73, 91, 103, 107, 131, 236, 238, 234, 123, 119, + 127, 139, 148, 159, 169, 175, 166, 162, 157, 144, 83, 48, 42, 63, 92, 91, + 95, 93, 29, 157, 163, 159, 148, 148, 155, 148, 136, 146, 139, 107, 119, 195, + 190, 122, 108, 119, 123, 128, 132, 138, 170, 178, 185, 166, 181, 187, 197, 209, + 169, 104, 85, 97, 139, 159, 224, 228, 229, 226, 194, 175, 183, 194, 190, 193, + 194, 186, 181, 174, 170, 167, 157, 134, 127, 91, 108, 138, 147, 146, 69, 36, + 135, 179, 175, 189, 190, 193, 226, 233, 226, 118, 118, 127, 138, 131, 144, 161, + 171, 169, 162, 155, 146, 108, 63, 55, 80, 135, 154, 161, 158, 169, 162, 154, + 157, 161, 161, 41, 140, 167, 167, 158, 153, 153, 153, 153, 163, 131, 107, 28, + 148, 155, 153, 151, 150, 142, 132, 130, 77, 76, 75, 107, 134, 111, 119, 118, + 95, 77, 88, 79, 87, 103, 161, 205, 217, 201, 182, 191, 181, 177, 174, 162, + 155, 146, 115, 17, 24, 41, 59, 89, 111, 100, 55, 49, 56, 26, 55, 37, + 32, 18, 17, 119, 114, 77, 119, 112, 108, 110, 110, 107, 116, 139, 155, 144, + 138, 144, 128, 136, 127, 114, 71, 46, 42, 41, 36, 61, 93, 71, 69, 65, + 60, 63, 59, 59, 76, 120, 182, 232, 238, 234, 193, 110, 85, 59, 26, 16, + 12, 13, 14, 30, 53, 48, 34, 37, 72, 191, 234, 229, 216, 111, 103, 114, + 128, 130, 143, 131, 127, 143, 154, 153, 138, 143, 118, 30, 26, 13, 45, 48, + 44, 72, 51, 52, 55, 51, 51, 76, 150, 214, 218, 224, 214, 127, 122, 111, + 122, 136, 136, 146, 135, 122, 123, 131, 135, 144, 122, 56, 24, 21, 34, 69, + 83, 57, 56, 64, 93, 193, 206, 171, 130, 123, 130, 143, 148, 157, 163, 162, + 163, 167, 171, 177, 171, 170, 124, 56, 53, 72, 72, 87, 96, 159, 224, 209, + 171, 171, 182, 194, 195, 195, 179, 155, 162, 177, 174, 167, 157, 140, 134, 126, + 119, 99, 89, 93, 91, 83, 128, 224, 197, 153, 157, 171, 148, 147, 183, 194, + 201, 202, 186, 81, 42, 32, 38, 95, 116, 212, 238, 237, 234, 186, 186, 181, + 175, 178, 169, 146, 120, 53, 29, 28, 18, 46, 46, 56, 55, 38, 67, 88, + 120, 80, 114, 108, 106, 104, 110, 99, 64, 48, 80, 127, 114, 120, 92, 95, + 108, 89, 96, 97, 96, 53, 18, 106, 119, 104, 110, 116, 110, 112, 93, 84, + 84, 46, 103, 108, 130, 229, 241, 241, 220, 115, 112, 118, 119, 130, 151, 165, + 171, 165, 159, 159, 154, 138, 142, 150, 150, 123, 99, 44, 46, 68, 48, 60, + 63, 69, 72, 73, 72, 97, 99, 128, 135, 130, 159, 202, 240, 246, 250, 248, + 229, 136, 123, 112, 60, 44, 38, 42, 56, 60, 68, 79, 92, 135, 217, 225, + 224, 135, 120, 126, 130, 120, 124, 116, 116, 126, 127, 110, 34, 29, 42, 48, + 52, 96, 102, 89, 85, 81, 22, 127, 132, 124, 138, 202, 216, 185, 122, 120, + 135, 142, 151, 158, 169, 169, 178, 178, 161, 124, 127, 144, 171, 195, 209, 205, + 233, 217, 216, 130, 128, 130, 130, 136, 131, 120, 97, 37, 25, 24, 32, 60, + 61, 69, 93, 100, 108, 132, 233, 240, 232, 123, 115, 124, 134, 148, 159, 169, + 173, 167, 158, 154, 146, 119, 55, 44, 71, 84, 89, 89, 83, 29, 166, 166, + 177, 165, 161, 157, 139, 138, 153, 157, 130, 93, 155, 193, 131, 103, 119, 124, + 128, 135, 131, 158, 162, 174, 162, 173, 179, 193, 199, 209, 178, 151, 171, 194, + 221, 226, 228, 225, 226, 189, 173, 173, 182, 185, 182, 187, 185, 186, 179, 170, + 163, 166, 150, 131, 95, 115, 132, 153, 138, 63, 38, 115, 169, 183, 179, 190, + 202, 232, 229, 228, 120, 116, 127, 140, 135, 148, 161, 170, 169, 163, 154, 146, + 128, 73, 61, 83, 139, 154, 163, 167, 167, 169, 162, 153, 162, 120, 55, 131, + 162, 167, 158, 158, 153, 151, 151, 158, 139, 118, 42, 161, 159, 150, 146, 142, + 140, 130, 124, 123, 110, 108, 99, 96, 96, 95, 84, 81, 79, 76, 72, 92, + 106, 170, 213, 224, 202, 178, 189, 183, 177, 174, 163, 153, 144, 107, 16, 25, + 40, 85, 96, 100, 99, 48, 57, 63, 45, 40, 79, 40, 18, 12, 122, 107, + 80, 69, 103, 118, 111, 111, 110, 108, 119, 139, 147, 146, 144, 139, 122, 131, + 130, 111, 89, 75, 73, 64, 83, 83, 102, 73, 63, 61, 64, 79, 120, 177, + 216, 234, 241, 237, 216, 169, 95, 69, 37, 18, 13, 13, 14, 20, 38, 46, + 46, 40, 52, 115, 218, 224, 230, 214, 99, 97, 116, 126, 127, 143, 122, 124, + 130, 148, 143, 135, 140, 119, 34, 30, 40, 77, 75, 45, 56, 45, 61, 45, + 49, 45, 75, 162, 210, 214, 214, 197, 127, 108, 116, 132, 146, 140, 150, 151, + 139, 120, 119, 134, 139, 123, 49, 37, 37, 41, 69, 75, 67, 52, 57, 64, + 187, 208, 170, 120, 128, 128, 142, 146, 154, 162, 166, 155, 155, 159, 161, 169, + 169, 143, 88, 57, 42, 57, 81, 84, 135, 214, 217, 171, 169, 179, 189, 193, + 195, 194, 183, 153, 162, 181, 174, 162, 155, 144, 136, 139, 139, 112, 92, 84, + 87, 97, 193, 221, 169, 159, 171, 147, 150, 187, 198, 206, 208, 201, 148, 77, + 37, 40, 103, 159, 222, 237, 238, 234, 191, 187, 177, 175, 177, 166, 139, 108, + 34, 28, 26, 22, 55, 48, 53, 56, 41, 46, 119, 124, 114, 118, 112, 107, + 107, 104, 95, 64, 53, 83, 130, 97, 104, 93, 112, 99, 89, 99, 96, 95, + 60, 24, 107, 120, 100, 97, 99, 87, 100, 89, 80, 65, 69, 104, 118, 178, + 230, 246, 240, 217, 116, 115, 120, 112, 124, 146, 159, 166, 171, 167, 162, 157, + 147, 132, 138, 154, 140, 108, 48, 48, 53, 60, 61, 79, 83, 77, 73, 79, + 92, 111, 134, 132, 147, 194, 238, 245, 249, 249, 248, 173, 124, 123, 99, 48, + 40, 26, 44, 52, 61, 75, 79, 91, 187, 214, 221, 212, 131, 123, 128, 134, + 123, 124, 126, 111, 118, 126, 115, 40, 32, 32, 46, 80, 93, 102, 80, 83, + 81, 18, 123, 132, 124, 126, 148, 204, 199, 128, 122, 130, 138, 147, 148, 157, + 154, 181, 183, 182, 174, 189, 201, 205, 212, 210, 218, 209, 217, 169, 130, 130, + 136, 140, 135, 126, 120, 46, 28, 24, 22, 42, 56, 64, 72, 92, 99, 108, + 190, 234, 237, 233, 124, 111, 124, 132, 147, 155, 167, 169, 170, 165, 157, 151, + 144, 72, 52, 53, 85, 91, 89, 87, 37, 119, 170, 177, 171, 167, 177, 162, + 157, 155, 148, 155, 87, 107, 190, 147, 107, 110, 123, 127, 131, 132, 138, 163, + 165, 161, 169, 174, 186, 191, 208, 216, 212, 220, 221, 226, 224, 224, 229, 212, + 189, 167, 170, 150, 171, 177, 185, 185, 183, 185, 175, 173, 166, 166, 146, 123, + 116, 139, 151, 87, 57, 32, 104, 169, 170, 173, 175, 187, 229, 238, 228, 122, + 116, 126, 138, 132, 154, 163, 169, 166, 165, 158, 148, 139, 92, 67, 97, 132, + 153, 166, 166, 169, 170, 170, 169, 151, 132, 52, 124, 163, 165, 154, 155, 151, + 153, 153, 153, 128, 118, 48, 120, 161, 139, 140, 143, 140, 128, 119, 127, 126, + 115, 107, 91, 91, 83, 80, 79, 75, 77, 88, 106, 112, 187, 218, 226, 191, + 175, 186, 182, 177, 174, 165, 150, 139, 67, 16, 25, 41, 102, 96, 100, 106, + 69, 42, 56, 59, 33, 33, 38, 20, 10, 104, 92, 72, 61, 52, 81, 119, + 115, 111, 108, 106, 114, 140, 151, 148, 151, 142, 124, 123, 118, 151, 123, 111, + 107, 112, 116, 123, 123, 124, 123, 146, 183, 213, 229, 240, 238, 236, 224, 193, + 112, 80, 42, 20, 13, 10, 12, 16, 30, 41, 33, 44, 44, 123, 186, 233, + 226, 229, 221, 114, 97, 108, 120, 135, 140, 127, 132, 124, 135, 136, 136, 138, + 127, 92, 65, 33, 68, 79, 77, 56, 55, 60, 71, 48, 60, 95, 183, 208, + 212, 217, 159, 112, 116, 122, 130, 135, 148, 148, 150, 148, 138, 115, 122, 136, + 128, 99, 51, 45, 45, 75, 56, 60, 52, 56, 55, 165, 206, 170, 118, 126, + 128, 140, 148, 154, 159, 163, 151, 151, 146, 146, 154, 162, 153, 104, 59, 30, + 53, 73, 85, 114, 198, 216, 179, 166, 177, 186, 189, 193, 194, 195, 183, 157, + 162, 175, 171, 162, 155, 150, 139, 139, 136, 108, 84, 91, 92, 142, 229, 182, + 162, 169, 151, 187, 193, 206, 212, 210, 212, 194, 118, 49, 55, 114, 190, 234, + 237, 238, 229, 187, 186, 183, 177, 174, 154, 139, 88, 29, 26, 26, 36, 52, + 56, 45, 60, 51, 44, 108, 123, 112, 118, 107, 107, 115, 104, 103, 71, 55, + 85, 122, 110, 104, 93, 102, 84, 97, 92, 95, 97, 59, 14, 112, 119, 92, + 100, 92, 96, 81, 65, 69, 99, 89, 103, 124, 220, 238, 234, 242, 206, 118, + 120, 122, 123, 116, 135, 157, 165, 167, 169, 166, 162, 158, 142, 146, 140, 159, + 123, 106, 89, 85, 95, 97, 99, 100, 108, 108, 104, 103, 122, 138, 131, 191, + 234, 238, 242, 248, 245, 224, 130, 126, 119, 69, 45, 38, 34, 48, 56, 69, + 75, 85, 186, 214, 214, 222, 204, 118, 132, 139, 130, 136, 136, 140, 131, 112, + 127, 122, 52, 28, 32, 67, 77, 80, 97, 102, 76, 73, 18, 120, 124, 124, + 128, 127, 150, 201, 136, 122, 127, 131, 138, 140, 140, 142, 144, 159, 187, 186, + 197, 199, 209, 214, 216, 206, 212, 193, 130, 128, 138, 139, 138, 128, 127, 65, + 28, 24, 21, 21, 56, 63, 68, 91, 96, 103, 128, 217, 230, 236, 230, 126, + 115, 122, 131, 140, 151, 163, 167, 169, 167, 159, 150, 136, 116, 67, 52, 56, + 92, 88, 87, 45, 115, 170, 178, 157, 169, 174, 148, 171, 151, 150, 147, 100, + 79, 181, 185, 115, 100, 118, 127, 131, 130, 130, 147, 148, 158, 169, 175, 177, + 183, 189, 204, 201, 212, 218, 218, 222, 220, 213, 198, 179, 169, 147, 147, 146, + 151, 171, 174, 183, 182, 178, 169, 169, 170, 166, 138, 120, 147, 112, 61, 34, + 37, 96, 165, 173, 179, 179, 195, 230, 234, 230, 128, 120, 126, 135, 135, 163, + 165, 167, 167, 165, 158, 147, 142, 131, 79, 112, 140, 161, 158, 166, 167, 163, + 167, 171, 163, 147, 71, 127, 163, 167, 155, 148, 157, 155, 147, 151, 134, 116, + 45, 135, 155, 144, 148, 135, 136, 128, 134, 123, 136, 122, 118, 107, 97, 88, + 84, 79, 75, 80, 75, 107, 126, 209, 222, 225, 170, 169, 186, 185, 177, 171, + 163, 148, 136, 57, 17, 24, 42, 99, 100, 106, 92, 77, 42, 44, 56, 64, + 16, 42, 20, 10, 97, 93, 75, 71, 65, 45, 56, 85, 115, 116, 111, 107, + 111, 134, 153, 146, 136, 130, 122, 154, 170, 181, 179, 187, 193, 189, 194, 190, + 197, 209, 216, 229, 233, 236, 234, 224, 222, 182, 130, 79, 44, 22, 14, 12, + 13, 22, 32, 38, 34, 60, 116, 162, 189, 216, 214, 222, 230, 214, 119, 91, + 116, 112, 123, 138, 151, 154, 135, 128, 127, 140, 138, 144, 122, 107, 108, 110, + 118, 104, 83, 64, 51, 69, 46, 68, 138, 201, 209, 210, 206, 155, 119, 110, + 114, 130, 143, 148, 138, 154, 153, 144, 135, 115, 128, 128, 114, 96, 59, 55, + 76, 72, 59, 53, 44, 55, 130, 210, 185, 115, 123, 130, 143, 148, 154, 161, + 143, 139, 135, 132, 131, 135, 148, 153, 131, 96, 64, 36, 60, 77, 100, 157, + 210, 182, 163, 169, 178, 185, 187, 186, 190, 189, 177, 158, 169, 175, 167, 162, + 150, 139, 138, 134, 100, 87, 81, 87, 93, 190, 220, 163, 163, 147, 194, 205, + 212, 214, 214, 214, 214, 186, 134, 142, 191, 229, 238, 238, 238, 221, 195, 189, + 182, 178, 167, 143, 126, 52, 26, 24, 26, 38, 59, 55, 68, 68, 57, 45, + 112, 126, 88, 114, 100, 96, 112, 118, 104, 91, 55, 68, 124, 92, 104, 92, + 88, 87, 100, 93, 84, 100, 45, 20, 106, 115, 89, 95, 81, 85, 95, 91, + 95, 100, 107, 150, 213, 230, 238, 240, 236, 193, 119, 124, 114, 124, 128, 119, + 144, 157, 162, 165, 162, 162, 161, 159, 150, 134, 150, 163, 124, 120, 122, 120, + 120, 126, 123, 123, 122, 120, 115, 126, 154, 197, 232, 236, 240, 245, 244, 237, + 148, 123, 128, 114, 57, 40, 34, 40, 63, 67, 68, 81, 189, 212, 217, 220, + 213, 205, 127, 119, 131, 126, 144, 130, 136, 132, 136, 119, 123, 104, 32, 51, + 37, 40, 80, 99, 99, 80, 61, 30, 112, 123, 127, 114, 118, 124, 136, 182, + 174, 128, 128, 127, 131, 132, 132, 132, 135, 135, 136, 147, 165, 170, 173, 182, + 187, 165, 130, 132, 132, 132, 130, 126, 120, 56, 28, 22, 21, 18, 29, 44, + 56, 72, 93, 97, 108, 191, 229, 230, 234, 225, 128, 119, 127, 134, 140, 148, + 161, 167, 167, 169, 163, 158, 144, 142, 112, 80, 65, 61, 67, 88, 44, 122, + 171, 178, 177, 163, 157, 153, 153, 169, 142, 148, 95, 65, 158, 182, 140, 99, + 108, 124, 128, 132, 128, 128, 132, 157, 167, 163, 174, 169, 169, 165, 159, 181, + 191, 197, 205, 202, 190, 166, 143, 147, 144, 143, 144, 147, 146, 150, 163, 165, + 162, 159, 165, 157, 147, 131, 138, 110, 59, 30, 37, 37, 92, 155, 175, 190, + 177, 208, 222, 230, 230, 134, 120, 120, 136, 154, 165, 173, 167, 165, 165, 158, + 153, 140, 146, 124, 97, 89, 108, 135, 159, 167, 165, 165, 174, 144, 169, 67, + 104, 161, 161, 155, 159, 159, 153, 151, 150, 131, 119, 28, 135, 154, 162, 153, + 144, 139, 134, 127, 122, 140, 135, 103, 115, 108, 107, 100, 88, 89, 87, 89, + 93, 148, 220, 229, 225, 161, 163, 181, 183, 177, 171, 162, 150, 135, 46, 20, + 25, 41, 99, 97, 102, 79, 34, 32, 22, 24, 17, 18, 25, 14, 13, 87, + 83, 72, 59, 56, 59, 45, 37, 53, 84, 107, 112, 108, 111, 118, 128, 135, + 142, 142, 146, 146, 158, 177, 189, 199, 205, 213, 210, 214, 221, 226, 228, 224, + 222, 220, 202, 163, 119, 76, 40, 21, 14, 12, 12, 20, 26, 41, 32, 127, + 169, 206, 217, 201, 209, 209, 218, 214, 159, 115, 92, 140, 120, 130, 136, 138, + 131, 138, 144, 136, 131, 151, 138, 140, 134, 142, 148, 165, 143, 128, 100, 77, + 40, 40, 72, 162, 198, 202, 204, 210, 146, 122, 119, 119, 148, 150, 142, 142, + 138, 135, 138, 143, 132, 112, 130, 126, 111, 85, 110, 93, 87, 51, 59, 48, + 51, 92, 193, 195, 132, 114, 130, 140, 143, 143, 142, 138, 132, 130, 123, 122, + 120, 123, 139, 139, 114, 79, 29, 46, 71, 87, 111, 186, 201, 158, 163, 171, + 179, 181, 183, 185, 189, 187, 165, 158, 171, 173, 161, 144, 143, 135, 110, 71, + 49, 72, 81, 87, 114, 214, 177, 170, 154, 197, 206, 217, 217, 220, 214, 222, + 216, 212, 217, 233, 234, 234, 237, 237, 209, 190, 191, 186, 174, 147, 136, 91, + 30, 25, 24, 29, 46, 59, 57, 67, 63, 64, 41, 96, 95, 119, 106, 115, + 122, 118, 115, 104, 102, 52, 60, 89, 118, 115, 80, 91, 84, 92, 99, 96, + 95, 52, 17, 102, 107, 106, 89, 88, 88, 93, 100, 130, 183, 201, 226, 222, + 234, 229, 234, 232, 161, 122, 123, 130, 136, 148, 128, 123, 143, 150, 150, 150, + 153, 157, 157, 159, 150, 143, 157, 166, 157, 177, 185, 195, 204, 209, 212, 216, + 221, 224, 222, 226, 228, 230, 236, 241, 242, 230, 162, 123, 128, 126, 92, 41, + 34, 33, 45, 65, 69, 100, 165, 228, 214, 212, 225, 221, 167, 132, 135, 142, + 138, 140, 134, 146, 130, 134, 122, 120, 104, 76, 61, 40, 38, 38, 93, 97, + 76, 77, 26, 112, 116, 114, 112, 112, 107, 120, 124, 128, 131, 132, 158, 159, + 154, 151, 151, 147, 144, 142, 136, 136, 134, 134, 134, 135, 132, 130, 130, 126, + 126, 122, 89, 41, 26, 22, 20, 18, 24, 59, 52, 68, 89, 97, 104, 171, + 217, 225, 228, 232, 218, 127, 120, 122, 134, 140, 144, 148, 157, 162, 162, 159, + 154, 153, 147, 148, 122, 111, 100, 83, 63, 42, 95, 171, 167, 175, 144, 169, + 165, 165, 167, 146, 148, 106, 72, 126, 175, 186, 118, 107, 116, 124, 124, 127, + 128, 131, 134, 135, 139, 138, 138, 147, 135, 134, 131, 132, 136, 134, 132, 134, + 136, 136, 142, 143, 144, 147, 146, 144, 148, 146, 142, 140, 140, 140, 135, 144, + 144, 114, 55, 32, 28, 52, 33, 91, 154, 161, 170, 212, 217, 217, 229, 222, + 131, 127, 128, 135, 157, 162, 166, 161, 166, 166, 161, 158, 148, 139, 144, 153, + 140, 116, 118, 107, 159, 162, 161, 158, 143, 150, 72, 88, 167, 155, 155, 157, + 155, 151, 148, 140, 124, 115, 41, 131, 153, 154, 153, 128, 132, 127, 120, 111, + 108, 110, 96, 115, 115, 112, 106, 97, 100, 97, 104, 108, 170, 228, 229, 218, + 153, 158, 167, 179, 179, 170, 163, 150, 132, 41, 21, 24, 46, 97, 99, 102, + 16, 16, 13, 22, 12, 13, 30, 21, 17, 9, 75, 73, 72, 61, 79, 63, + 57, 45, 33, 33, 46, 69, 97, 107, 110, 108, 108, 115, 114, 123, 123, 128, + 134, 148, 171, 182, 190, 205, 209, 206, 208, 208, 204, 186, 163, 120, 83, 61, + 36, 21, 14, 9, 12, 10, 18, 28, 28, 102, 230, 191, 202, 194, 206, 205, + 213, 181, 146, 123, 110, 119, 120, 120, 116, 122, 115, 120, 119, 123, 122, 126, + 130, 124, 134, 147, 136, 140, 140, 135, 136, 153, 76, 38, 57, 95, 218, 190, + 194, 199, 202, 139, 123, 128, 139, 123, 143, 142, 139, 127, 130, 127, 127, 127, + 124, 126, 127, 112, 118, 115, 107, 79, 49, 51, 52, 46, 59, 151, 198, 157, + 110, 128, 132, 136, 139, 138, 131, 130, 123, 120, 118, 112, 111, 107, 114, 127, + 88, 77, 69, 55, 68, 85, 136, 204, 169, 159, 166, 169, 167, 174, 177, 182, + 186, 181, 161, 161, 166, 154, 143, 143, 123, 76, 42, 40, 40, 81, 79, 79, + 169, 190, 182, 140, 190, 205, 208, 213, 218, 224, 222, 225, 224, 226, 233, 232, + 236, 233, 225, 199, 195, 189, 183, 169, 138, 104, 45, 28, 25, 24, 24, 51, + 59, 57, 61, 68, 67, 44, 75, 104, 118, 115, 97, 103, 96, 111, 91, 68, + 56, 53, 91, 120, 99, 76, 93, 91, 92, 97, 104, 69, 52, 13, 91, 103, + 95, 97, 63, 85, 106, 198, 218, 214, 218, 238, 221, 232, 246, 229, 204, 130, + 123, 124, 144, 146, 138, 146, 136, 134, 134, 131, 135, 138, 131, 135, 139, 144, + 153, 150, 139, 174, 175, 187, 195, 204, 208, 213, 217, 220, 222, 225, 228, 232, + 233, 234, 232, 206, 144, 122, 124, 131, 122, 61, 36, 33, 36, 55, 65, 104, + 191, 198, 204, 213, 218, 236, 214, 150, 130, 119, 127, 127, 140, 136, 126, 139, + 126, 126, 134, 107, 91, 84, 75, 61, 36, 55, 95, 71, 75, 24, 108, 118, + 110, 88, 80, 85, 95, 93, 89, 88, 88, 102, 116, 120, 123, 119, 115, 119, + 123, 122, 122, 120, 118, 119, 123, 122, 120, 112, 108, 83, 44, 32, 24, 21, + 18, 16, 21, 28, 48, 56, 88, 95, 106, 175, 214, 218, 220, 225, 228, 163, + 127, 118, 127, 142, 138, 139, 146, 144, 151, 154, 159, 158, 153, 150, 143, 144, + 155, 153, 118, 88, 72, 46, 128, 173, 146, 170, 144, 165, 153, 159, 139, 148, + 140, 59, 116, 166, 165, 165, 157, 150, 147, 148, 143, 120, 119, 123, 124, 130, + 131, 131, 128, 127, 134, 127, 112, 108, 102, 96, 96, 108, 122, 128, 136, 140, + 142, 139, 132, 138, 139, 142, 143, 143, 142, 142, 134, 112, 55, 41, 30, 25, + 53, 32, 91, 158, 170, 213, 222, 220, 218, 230, 202, 131, 123, 136, 143, 146, + 153, 159, 163, 163, 163, 161, 157, 158, 154, 146, 144, 144, 161, 155, 134, 115, + 116, 120, 139, 131, 146, 68, 89, 165, 163, 157, 157, 157, 139, 142, 150, 110, + 114, 48, 136, 162, 151, 140, 132, 126, 119, 106, 104, 104, 96, 123, 112, 110, + 111, 103, 99, 102, 80, 107, 114, 185, 226, 232, 216, 147, 151, 157, 171, 178, + 169, 161, 150, 126, 30, 22, 22, 42, 97, 96, 100, 12, 17, 17, 24, 13, + 24, 36, 36, 16, 8, 68, 67, 61, 71, 52, 49, 41, 37, 34, 32, 26, + 22, 33, 41, 64, 83, 97, 100, 106, 106, 106, 107, 108, 115, 123, 130, 134, + 142, 159, 158, 151, 148, 119, 91, 75, 52, 25, 20, 18, 14, 9, 10, 14, + 12, 30, 37, 30, 144, 190, 213, 193, 195, 179, 158, 136, 124, 112, 92, 87, + 83, 85, 89, 92, 95, 96, 99, 103, 104, 103, 106, 107, 112, 118, 120, 120, + 119, 123, 126, 127, 114, 77, 37, 68, 153, 175, 181, 155, 158, 136, 130, 108, + 114, 119, 112, 119, 119, 122, 115, 126, 127, 119, 131, 127, 122, 112, 110, 110, + 106, 96, 45, 25, 33, 48, 41, 45, 104, 178, 186, 108, 120, 118, 120, 122, + 122, 119, 123, 118, 118, 114, 112, 108, 110, 106, 103, 95, 85, 49, 46, 53, + 67, 100, 163, 181, 155, 159, 165, 163, 158, 167, 171, 173, 178, 175, 165, 146, + 144, 147, 130, 91, 53, 38, 32, 32, 59, 76, 80, 138, 204, 182, 158, 170, + 191, 205, 206, 210, 210, 209, 209, 210, 208, 210, 210, 212, 209, 202, 191, 186, + 182, 173, 143, 116, 42, 24, 24, 24, 25, 28, 52, 51, 55, 64, 61, 65, + 57, 53, 56, 61, 73, 55, 57, 65, 57, 57, 75, 72, 64, 65, 73, 79, + 91, 79, 80, 80, 80, 76, 79, 45, 10, 48, 85, 89, 68, 73, 89, 169, + 210, 210, 214, 228, 248, 221, 217, 210, 159, 131, 123, 128, 138, 140, 140, 143, + 143, 140, 138, 132, 136, 139, 135, 134, 130, 127, 128, 130, 131, 128, 128, 130, + 130, 139, 147, 165, 189, 194, 206, 206, 204, 201, 205, 205, 193, 166, 126, 120, + 123, 130, 131, 107, 37, 30, 21, 60, 60, 85, 177, 193, 198, 213, 206, 208, + 181, 150, 136, 120, 138, 127, 126, 130, 134, 116, 122, 112, 119, 110, 130, 115, + 116, 104, 89, 37, 46, 95, 67, 68, 28, 112, 111, 76, 76, 69, 75, 71, + 72, 63, 61, 53, 49, 46, 46, 48, 44, 42, 41, 42, 38, 37, 34, 30, + 33, 37, 34, 33, 30, 28, 28, 22, 20, 18, 17, 17, 22, 37, 51, 42, + 88, 87, 107, 174, 208, 206, 205, 217, 221, 191, 142, 126, 131, 140, 136, 138, + 142, 139, 142, 143, 142, 148, 143, 139, 146, 144, 131, 132, 136, 161, 144, 72, + 45, 110, 114, 118, 120, 126, 128, 135, 135, 140, 139, 104, 37, 91, 124, 142, + 127, 116, 110, 116, 116, 120, 123, 120, 118, 116, 123, 123, 116, 114, 111, 88, + 55, 37, 33, 29, 30, 30, 36, 68, 102, 110, 114, 116, 112, 107, 108, 112, + 111, 110, 110, 107, 97, 61, 44, 34, 28, 25, 42, 60, 42, 148, 189, 204, + 216, 209, 199, 221, 218, 150, 128, 131, 143, 138, 138, 138, 146, 148, 150, 150, + 148, 147, 148, 146, 151, 150, 144, 146, 163, 158, 147, 131, 126, 120, 122, 102, + 85, 97, 134, 148, 159, 150, 151, 136, 140, 147, 126, 112, 42, 131, 135, 130, + 124, 108, 104, 91, 107, 112, 104, 93, 89, 95, 114, 111, 116, 107, 106, 99, + 112, 123, 199, 230, 232, 213, 144, 150, 154, 165, 173, 167, 161, 146, 107, 25, + 24, 21, 44, 81, 88, 87, 30, 25, 24, 26, 26, 33, 28, 25, 13, 6, + 56, 61, 45, 48, 44, 41, 32, 33, 26, 26, 22, 21, 20, 21, 17, 17, + 22, 34, 41, 55, 67, 89, 89, 91, 89, 85, 87, 81, 77, 75, 71, 59, + 36, 24, 20, 16, 14, 12, 8, 8, 16, 22, 21, 17, 25, 18, 20, 76, + 124, 144, 138, 135, 138, 88, 76, 65, 60, 44, 24, 25, 24, 21, 21, 22, + 24, 26, 28, 33, 33, 32, 37, 69, 80, 87, 85, 83, 81, 96, 88, 63, + 33, 46, 64, 128, 130, 140, 139, 143, 116, 93, 84, 85, 100, 102, 99, 97, + 103, 103, 110, 107, 106, 106, 108, 103, 96, 92, 93, 85, 49, 22, 22, 20, + 24, 44, 34, 42, 107, 128, 110, 115, 92, 110, 111, 116, 114, 114, 112, 108, + 103, 102, 96, 104, 96, 97, 96, 81, 26, 30, 65, 45, 75, 100, 166, 171, + 154, 159, 158, 158, 158, 161, 162, 161, 155, 150, 146, 144, 130, 103, 55, 38, + 34, 36, 38, 45, 80, 76, 171, 191, 189, 173, 126, 157, 189, 193, 195, 198, + 198, 197, 195, 191, 185, 183, 186, 187, 185, 182, 167, 148, 136, 108, 45, 26, + 24, 24, 33, 42, 37, 45, 33, 36, 53, 56, 61, 60, 65, 68, 84, 73, + 76, 73, 79, 79, 77, 75, 76, 73, 63, 79, 77, 52, 44, 24, 22, 34, + 33, 32, 30, 12, 29, 34, 46, 71, 65, 87, 162, 206, 220, 210, 212, 185, + 158, 142, 131, 123, 131, 124, 135, 134, 135, 135, 136, 136, 135, 131, 131, 130, + 128, 127, 127, 119, 124, 126, 126, 126, 127, 123, 124, 123, 120, 119, 118, 118, + 118, 120, 122, 122, 119, 118, 116, 116, 118, 118, 123, 127, 132, 127, 60, 25, + 28, 32, 60, 57, 144, 193, 189, 197, 209, 181, 147, 139, 124, 120, 108, 114, + 112, 108, 114, 110, 108, 100, 104, 106, 106, 104, 111, 103, 96, 92, 40, 55, + 72, 64, 56, 34, 107, 111, 77, 71, 69, 68, 67, 67, 61, 52, 46, 36, + 42, 37, 36, 36, 36, 32, 32, 32, 28, 25, 22, 26, 25, 24, 22, 21, + 18, 17, 17, 14, 21, 20, 26, 44, 34, 42, 56, 85, 95, 135, 195, 202, + 212, 204, 179, 163, 136, 128, 138, 132, 138, 132, 135, 130, 128, 131, 138, 138, + 139, 138, 134, 138, 138, 132, 130, 131, 138, 128, 46, 89, 103, 106, 104, 96, + 112, 108, 114, 106, 124, 119, 63, 37, 67, 75, 77, 68, 60, 49, 51, 42, + 42, 41, 45, 37, 36, 34, 34, 32, 32, 32, 30, 28, 25, 25, 22, 25, + 25, 29, 28, 30, 28, 26, 28, 29, 28, 26, 22, 28, 28, 29, 32, 32, + 29, 29, 25, 17, 25, 65, 65, 48, 154, 194, 220, 212, 216, 206, 174, 150, + 136, 132, 134, 136, 132, 126, 134, 136, 136, 140, 143, 143, 139, 135, 138, 134, + 127, 130, 147, 146, 148, 118, 128, 127, 135, 127, 112, 114, 106, 120, 126, 131, + 126, 135, 130, 143, 134, 115, 108, 25, 135, 148, 108, 95, 123, 139, 163, 186, + 177, 136, 111, 79, 85, 65, 87, 88, 93, 81, 102, 110, 146, 217, 229, 237, + 209, 140, 144, 148, 161, 170, 166, 154, 142, 75, 22, 22, 21, 48, 42, 33, + 40, 1, 5, 5, 10, 12, 13, 14, 13, 13, 6, 13, 16, 9, 10, 13, + 12, 9, 8, 8, 9, 8, 6, 5, 6, 5, 5, 5, 6, 6, 10, 9, + 8, 10, 10, 14, 13, 14, 13, 13, 13, 13, 13, 12, 10, 8, 5, 6, + 14, 25, 18, 26, 30, 28, 17, 17, 28, 20, 10, 24, 33, 32, 29, 26, + 16, 22, 24, 16, 12, 13, 13, 13, 12, 10, 12, 12, 12, 12, 14, 13, + 10, 8, 10, 13, 13, 13, 18, 21, 5, 9, 20, 20, 25, 14, 32, 44, + 46, 65, 30, 4, 5, 14, 16, 13, 13, 14, 16, 13, 13, 16, 13, 13, + 14, 16, 20, 20, 18, 18, 17, 22, 26, 34, 44, 41, 34, 26, 33, 30, + 25, 20, 9, 10, 16, 13, 12, 10, 10, 8, 8, 12, 6, 5, 10, 16, + 8, 8, 14, 12, 14, 17, 16, 29, 65, 99, 159, 161, 148, 147, 151, 150, + 154, 157, 153, 150, 144, 140, 128, 91, 49, 37, 33, 34, 33, 24, 48, 76, + 75, 159, 189, 202, 183, 139, 114, 114, 131, 126, 124, 119, 134, 127, 123, 120, + 120, 120, 123, 119, 118, 114, 69, 55, 33, 24, 24, 26, 28, 25, 24, 12, + 10, 26, 10, 10, 10, 12, 30, 10, 9, 20, 21, 10, 10, 20, 12, 12, + 10, 12, 20, 37, 34, 51, 49, 85, 99, 106, 104, 91, 83, 52, 12, 81, + 89, 89, 51, 67, 81, 112, 139, 157, 142, 139, 127, 111, 107, 108, 112, 114, + 112, 130, 130, 124, 128, 128, 131, 130, 128, 128, 128, 124, 127, 127, 124, 126, + 126, 126, 127, 124, 123, 123, 122, 122, 120, 120, 120, 119, 118, 120, 119, 119, + 119, 119, 120, 122, 124, 128, 131, 128, 96, 32, 24, 26, 28, 44, 53, 108, + 166, 183, 153, 144, 116, 102, 95, 97, 97, 100, 100, 100, 102, 102, 106, 106, + 106, 104, 108, 100, 100, 99, 102, 99, 73, 51, 51, 61, 64, 56, 32, 100, + 64, 57, 46, 44, 42, 42, 32, 33, 28, 26, 18, 17, 16, 16, 14, 16, + 14, 14, 14, 13, 13, 13, 14, 16, 17, 18, 20, 20, 21, 22, 26, 33, + 37, 53, 33, 42, 55, 97, 91, 107, 178, 175, 165, 153, 147, 138, 138, 130, + 123, 126, 126, 127, 126, 122, 122, 123, 122, 120, 128, 123, 126, 127, 120, 114, + 108, 110, 115, 114, 46, 72, 14, 10, 17, 12, 9, 12, 8, 16, 17, 6, + 21, 17, 8, 46, 42, 25, 8, 36, 18, 4, 4, 5, 8, 10, 12, 13, + 16, 16, 16, 16, 14, 13, 16, 17, 21, 22, 24, 22, 29, 29, 30, 25, + 24, 21, 21, 22, 22, 17, 22, 22, 22, 21, 20, 20, 13, 17, 21, 37, + 68, 72, 51, 166, 175, 191, 178, 177, 157, 135, 134, 128, 123, 124, 116, 120, + 120, 116, 118, 126, 127, 130, 128, 128, 124, 123, 120, 122, 120, 120, 116, 103, + 67, 36, 28, 34, 38, 37, 34, 48, 41, 36, 51, 69, 72, 69, 67, 87, + 91, 85, 33, 135, 99, 118, 146, 181, 191, 195, 197, 195, 193, 146, 107, 51, + 97, 120, 118, 112, 108, 110, 118, 161, 225, 236, 237, 198, 138, 143, 148, 161, + 167, 163, 151, 136, 46, 24, 22, 33, 46, 71, 79, 95, 56, 53, 53, 49, + 24, 12, 10, 8, 8, 9, 0, 1, 1, 5, 1, 1, 2, 4, 1, 2, + 4, 6, 5, 5, 6, 8, 8, 4, 1, 4, 2, 4, 2, 2, 2, 2, + 2, 2, 4, 4, 5, 6, 6, 9, 14, 16, 24, 20, 28, 30, 28, 34, + 38, 40, 49, 45, 20, 24, 34, 44, 30, 26, 22, 21, 24, 24, 22, 21, + 22, 24, 24, 21, 20, 18, 18, 21, 25, 22, 20, 18, 17, 14, 13, 18, + 26, 32, 13, 22, 33, 16, 17, 14, 36, 33, 42, 48, 45, 38, 33, 30, + 33, 32, 30, 28, 32, 29, 30, 28, 29, 32, 32, 29, 30, 30, 24, 26, + 26, 30, 24, 29, 55, 46, 49, 49, 52, 46, 33, 38, 34, 34, 37, 40, + 37, 32, 32, 33, 32, 28, 30, 32, 29, 26, 33, 34, 30, 30, 37, 44, + 45, 57, 63, 52, 52, 100, 148, 155, 163, 148, 154, 148, 153, 143, 146, 131, + 119, 72, 41, 37, 34, 24, 24, 24, 38, 67, 76, 140, 175, 198, 208, 181, + 127, 88, 67, 64, 61, 56, 57, 48, 46, 44, 48, 41, 44, 44, 42, 38, + 41, 36, 40, 38, 41, 30, 48, 38, 48, 41, 41, 41, 41, 41, 38, 38, + 38, 30, 9, 33, 100, 131, 89, 96, 99, 100, 95, 83, 89, 96, 107, 130, + 119, 128, 130, 100, 107, 104, 115, 102, 80, 18, 92, 88, 102, 99, 56, 71, + 81, 99, 85, 83, 81, 73, 73, 64, 60, 57, 49, 52, 41, 40, 36, 34, + 32, 30, 29, 33, 30, 33, 30, 30, 29, 30, 29, 30, 29, 29, 28, 33, + 30, 33, 32, 30, 33, 38, 42, 63, 96, 110, 119, 123, 124, 127, 126, 128, + 131, 127, 114, 45, 26, 21, 18, 30, 61, 49, 65, 73, 71, 72, 73, 75, + 29, 22, 21, 21, 20, 20, 20, 20, 17, 17, 18, 18, 24, 25, 24, 28, + 29, 29, 32, 30, 14, 8, 14, 12, 14, 34, 41, 64, 79, 71, 91, 95, + 84, 73, 88, 84, 72, 12, 49, 71, 68, 68, 49, 61, 46, 63, 38, 25, + 34, 48, 79, 85, 81, 81, 80, 84, 79, 81, 83, 75, 72, 32, 61, 89, + 100, 97, 118, 131, 135, 136, 124, 119, 110, 107, 100, 85, 69, 73, 60, 63, + 57, 55, 49, 52, 49, 51, 49, 51, 49, 53, 53, 55, 53, 60, 60, 53, + 17, 30, 103, 107, 114, 124, 124, 122, 130, 126, 128, 130, 76, 25, 104, 111, + 118, 111, 111, 102, 106, 67, 38, 25, 20, 13, 25, 21, 24, 18, 18, 17, + 20, 18, 13, 17, 14, 17, 8, 18, 22, 22, 14, 25, 21, 14, 9, 9, + 13, 13, 16, 18, 21, 21, 21, 26, 25, 44, 55, 69, 76, 46, 161, 142, + 146, 136, 138, 127, 111, 88, 75, 72, 56, 53, 48, 52, 41, 40, 40, 41, + 37, 38, 36, 33, 32, 30, 33, 32, 34, 34, 30, 34, 65, 68, 84, 91, + 84, 91, 103, 118, 130, 120, 107, 81, 80, 59, 56, 87, 89, 95, 88, 124, + 146, 186, 202, 201, 195, 218, 197, 187, 139, 114, 71, 107, 123, 127, 122, 122, + 115, 138, 191, 226, 236, 237, 185, 135, 139, 146, 158, 163, 158, 147, 114, 32, + 24, 26, 30, 67, 97, 122, 135, 108, 93, 83, 79, 48, 45, 37, 32, 12, + 1, 17, 68, 73, 67, 60, 71, 77, 67, 61, 57, 60, 63, 65, 71, 65, + 65, 55, 46, 25, 20, 14, 14, 13, 12, 13, 14, 20, 21, 18, 20, 21, + 26, 25, 28, 30, 30, 26, 37, 45, 53, 60, 55, 65, 59, 67, 55, 36, + 14, 65, 52, 33, 30, 30, 26, 28, 26, 26, 28, 26, 20, 26, 33, 34, + 30, 29, 29, 33, 26, 21, 16, 13, 13, 9, 12, 24, 24, 20, 17, 22, + 22, 21, 25, 20, 5, 52, 41, 34, 33, 33, 29, 38, 32, 28, 28, 30, + 28, 26, 17, 20, 33, 26, 28, 29, 32, 24, 32, 26, 25, 26, 51, 55, + 48, 49, 49, 52, 51, 53, 45, 12, 69, 57, 41, 42, 32, 36, 37, 34, + 33, 34, 36, 33, 37, 37, 40, 40, 38, 40, 42, 42, 52, 56, 60, 48, + 55, 135, 144, 142, 146, 136, 134, 131, 130, 112, 69, 55, 44, 40, 34, 38, + 28, 22, 36, 64, 96, 89, 143, 195, 202, 208, 166, 104, 59, 42, 37, 64, + 42, 42, 40, 46, 46, 44, 41, 45, 46, 46, 45, 41, 42, 38, 40, 38, + 41, 40, 37, 42, 48, 49, 49, 55, 56, 55, 60, 49, 32, 6, 108, 130, + 122, 116, 102, 103, 99, 122, 108, 118, 71, 99, 108, 106, 100, 112, 115, 104, + 104, 110, 114, 73, 13, 80, 97, 99, 104, 85, 60, 71, 77, 53, 45, 44, + 59, 41, 44, 41, 41, 38, 40, 29, 25, 25, 22, 25, 20, 20, 22, 22, + 22, 22, 21, 21, 21, 21, 21, 20, 20, 18, 21, 20, 20, 20, 20, 21, + 21, 20, 22, 26, 32, 40, 51, 64, 77, 87, 95, 95, 79, 44, 26, 25, + 24, 26, 36, 64, 65, 61, 48, 52, 53, 46, 56, 46, 46, 42, 40, 41, + 37, 32, 30, 30, 28, 26, 26, 21, 24, 22, 21, 21, 17, 17, 18, 18, + 22, 41, 26, 52, 37, 89, 134, 139, 142, 138, 140, 136, 135, 134, 103, 81, + 4, 103, 81, 85, 77, 72, 89, 104, 75, 77, 68, 36, 93, 112, 111, 107, + 104, 108, 104, 106, 102, 93, 88, 72, 30, 102, 103, 96, 114, 120, 123, 124, + 112, 111, 96, 99, 77, 61, 63, 60, 55, 48, 44, 40, 36, 34, 34, 29, + 30, 30, 29, 24, 24, 21, 21, 21, 20, 17, 16, 26, 24, 116, 128, 126, + 128, 135, 135, 135, 135, 138, 142, 87, 29, 143, 136, 134, 136, 132, 132, 132, + 112, 97, 77, 52, 14, 36, 84, 79, 41, 48, 71, 67, 41, 49, 61, 56, + 37, 51, 73, 68, 75, 72, 89, 71, 73, 63, 33, 8, 21, 41, 61, 44, + 44, 49, 52, 52, 59, 73, 81, 80, 40, 131, 120, 119, 87, 96, 88, 83, + 63, 64, 65, 63, 49, 48, 51, 51, 45, 45, 45, 44, 42, 44, 44, 42, + 44, 49, 49, 49, 51, 56, 71, 71, 87, 99, 110, 131, 91, 91, 131, 116, + 107, 120, 135, 139, 132, 120, 118, 108, 68, 131, 154, 182, 204, 197, 202, 206, + 178, 154, 132, 142, 106, 71, 104, 126, 135, 140, 134, 124, 148, 210, 228, 234, + 234, 169, 134, 139, 146, 157, 158, 150, 140, 77, 25, 25, 25, 32, 64, 116, + 138, 154, 65, 65, 68, 71, 45, 65, 48, 40, 12, 1, 77, 68, 57, 55, + 55, 52, 46, 59, 56, 55, 49, 51, 53, 49, 42, 44, 48, 45, 63, 57, + 37, 21, 20, 13, 28, 41, 42, 42, 42, 40, 38, 36, 38, 34, 28, 17, + 26, 55, 63, 69, 63, 67, 63, 69, 71, 60, 46, 17, 65, 53, 51, 42, + 46, 45, 41, 40, 36, 34, 32, 17, 32, 45, 55, 49, 48, 42, 45, 40, + 30, 29, 28, 24, 9, 42, 42, 42, 51, 28, 33, 48, 29, 25, 28, 10, + 53, 65, 56, 59, 56, 44, 42, 32, 28, 34, 28, 10, 20, 64, 34, 57, + 42, 51, 37, 49, 37, 25, 16, 14, 28, 46, 56, 56, 52, 52, 63, 53, + 48, 41, 9, 68, 72, 42, 51, 42, 42, 41, 42, 46, 40, 38, 28, 21, + 34, 40, 51, 37, 44, 46, 53, 51, 52, 56, 59, 48, 111, 140, 123, 89, + 75, 69, 67, 56, 53, 46, 46, 37, 34, 38, 30, 26, 42, 59, 67, 89, + 93, 182, 195, 206, 204, 158, 103, 48, 42, 41, 41, 41, 41, 44, 51, 51, + 51, 69, 93, 134, 146, 163, 173, 165, 153, 110, 64, 49, 44, 40, 42, 44, + 41, 40, 42, 42, 46, 55, 52, 51, 28, 118, 128, 100, 88, 88, 89, 87, + 84, 102, 68, 84, 118, 120, 103, 118, 99, 104, 96, 104, 104, 118, 73, 12, + 85, 91, 108, 95, 87, 81, 53, 51, 48, 64, 64, 40, 33, 32, 33, 38, + 25, 29, 21, 21, 20, 17, 20, 18, 18, 20, 20, 20, 20, 18, 20, 21, + 20, 20, 20, 20, 20, 22, 26, 32, 28, 32, 32, 32, 28, 24, 21, 22, + 21, 24, 25, 25, 25, 26, 28, 25, 26, 24, 25, 14, 28, 67, 73, 72, + 65, 65, 63, 59, 55, 51, 48, 46, 49, 44, 42, 41, 37, 37, 34, 33, + 30, 29, 29, 29, 30, 26, 26, 28, 25, 28, 36, 46, 59, 61, 61, 72, + 112, 140, 139, 132, 132, 123, 120, 122, 128, 112, 88, 9, 97, 89, 96, 81, + 88, 91, 91, 81, 83, 79, 36, 99, 127, 135, 128, 120, 127, 132, 131, 111, + 110, 95, 76, 30, 91, 93, 112, 139, 142, 110, 104, 123, 96, 72, 71, 65, + 69, 71, 55, 49, 46, 38, 41, 38, 37, 34, 30, 30, 29, 29, 28, 25, + 24, 22, 24, 22, 20, 18, 40, 45, 127, 115, 122, 126, 135, 135, 132, 134, + 128, 153, 89, 34, 139, 147, 147, 148, 146, 146, 140, 127, 114, 87, 61, 13, + 76, 100, 106, 80, 77, 48, 56, 69, 64, 45, 49, 46, 49, 100, 123, 120, + 120, 115, 118, 108, 83, 63, 10, 96, 106, 96, 95, 88, 85, 84, 81, 77, + 80, 85, 91, 46, 114, 158, 114, 104, 81, 73, 81, 67, 64, 67, 61, 51, + 49, 53, 52, 46, 48, 49, 48, 49, 45, 46, 49, 51, 49, 56, 60, 60, + 61, 77, 83, 97, 91, 102, 80, 77, 112, 122, 147, 134, 120, 123, 126, 119, + 119, 107, 92, 120, 154, 154, 195, 199, 201, 197, 170, 132, 123, 126, 130, 110, + 72, 97, 124, 130, 132, 118, 131, 169, 218, 228, 236, 229, 148, 134, 138, 144, + 155, 153, 146, 120, 42, 26, 25, 25, 20, 64, 116, 140, 153, 22, 29, 26, + 17, 21, 20, 52, 36, 10, 4, 55, 75, 53, 68, 52, 46, 49, 44, 41, + 38, 28, 24, 37, 52, 68, 68, 60, 61, 42, 48, 55, 38, 24, 17, 33, + 44, 40, 45, 40, 44, 42, 37, 38, 42, 17, 17, 44, 68, 73, 68, 71, + 59, 65, 63, 51, 46, 34, 18, 60, 57, 49, 48, 51, 44, 48, 38, 41, + 44, 34, 21, 37, 41, 48, 48, 49, 60, 55, 52, 41, 40, 29, 24, 12, + 45, 52, 42, 52, 51, 46, 42, 48, 28, 25, 8, 45, 65, 77, 81, 81, + 59, 61, 48, 42, 32, 29, 9, 49, 73, 69, 64, 60, 57, 56, 59, 48, + 42, 26, 13, 34, 53, 59, 44, 42, 51, 55, 55, 57, 29, 2, 77, 79, + 73, 56, 36, 40, 30, 42, 37, 34, 37, 25, 17, 33, 72, 61, 61, 59, + 59, 55, 53, 53, 56, 67, 46, 127, 135, 118, 91, 79, 65, 64, 57, 53, + 44, 44, 36, 26, 25, 33, 38, 59, 61, 97, 95, 126, 179, 206, 205, 208, + 143, 102, 72, 67, 69, 59, 55, 59, 73, 89, 120, 154, 187, 210, 221, 226, + 229, 229, 222, 224, 216, 193, 163, 134, 79, 55, 42, 44, 42, 44, 41, 40, + 52, 49, 46, 9, 84, 127, 81, 76, 91, 92, 87, 85, 96, 69, 89, 108, + 118, 115, 111, 116, 111, 104, 110, 107, 111, 68, 12, 85, 89, 99, 93, 85, + 56, 56, 55, 53, 57, 44, 25, 76, 61, 51, 45, 51, 63, 44, 49, 46, + 42, 38, 36, 41, 38, 49, 49, 49, 42, 41, 41, 40, 36, 34, 36, 34, + 56, 49, 53, 51, 59, 57, 59, 52, 51, 40, 30, 25, 28, 25, 22, 22, + 22, 22, 24, 21, 26, 25, 9, 36, 69, 87, 92, 95, 93, 96, 91, 91, + 76, 64, 56, 87, 92, 69, 67, 68, 57, 56, 68, 67, 28, 10, 45, 63, + 73, 48, 38, 48, 57, 38, 67, 59, 65, 60, 67, 115, 138, 134, 131, 132, + 123, 123, 106, 118, 127, 67, 12, 75, 103, 96, 112, 112, 120, 122, 95, 112, + 69, 37, 91, 130, 140, 138, 134, 131, 142, 127, 132, 112, 99, 85, 32, 92, + 91, 102, 114, 132, 161, 138, 128, 83, 87, 68, 84, 118, 112, 106, 77, 87, + 87, 89, 81, 79, 69, 63, 51, 53, 51, 48, 48, 44, 44, 42, 41, 42, + 36, 45, 25, 102, 135, 143, 135, 128, 132, 146, 139, 131, 147, 89, 38, 123, + 147, 147, 143, 143, 138, 157, 127, 114, 112, 60, 14, 80, 104, 87, 115, 88, + 102, 76, 80, 81, 102, 63, 48, 75, 120, 135, 134, 130, 128, 123, 118, 84, + 72, 24, 100, 108, 102, 102, 99, 96, 97, 92, 88, 68, 91, 95, 51, 115, + 138, 126, 143, 127, 135, 138, 111, 93, 89, 80, 72, 75, 76, 64, 69, 69, + 69, 68, 68, 68, 68, 68, 69, 71, 75, 76, 73, 77, 81, 91, 79, 106, + 127, 99, 51, 108, 115, 111, 111, 123, 114, 120, 112, 111, 107, 91, 128, 161, + 163, 201, 191, 198, 167, 132, 126, 122, 147, 116, 103, 65, 96, 110, 120, 118, + 120, 136, 182, 221, 225, 232, 213, 138, 134, 139, 146, 154, 150, 140, 85, 30, + 26, 25, 26, 16, 64, 114, 132, 154, 16, 14, 33, 36, 30, 29, 32, 20, + 9, 10, 53, 64, 63, 53, 68, 49, 56, 48, 53, 40, 26, 20, 52, 60, + 59, 46, 38, 40, 41, 48, 45, 51, 26, 16, 45, 46, 42, 45, 38, 38, + 36, 33, 34, 48, 17, 16, 44, 69, 69, 76, 75, 51, 52, 52, 53, 49, + 29, 18, 60, 51, 45, 53, 46, 55, 48, 42, 41, 48, 36, 25, 41, 48, + 61, 49, 38, 60, 49, 67, 48, 42, 36, 28, 13, 40, 56, 55, 45, 41, + 41, 42, 46, 32, 28, 8, 55, 72, 76, 72, 76, 80, 60, 67, 52, 42, + 32, 6, 59, 71, 81, 69, 67, 65, 69, 63, 61, 57, 25, 13, 57, 60, + 67, 61, 45, 53, 72, 60, 52, 41, 8, 81, 77, 68, 61, 46, 38, 41, + 52, 55, 53, 48, 30, 13, 67, 75, 76, 73, 72, 61, 63, 59, 59, 65, + 65, 57, 116, 134, 120, 107, 91, 75, 68, 60, 51, 44, 45, 29, 25, 36, + 37, 57, 56, 72, 93, 84, 97, 191, 199, 217, 186, 138, 104, 122, 127, 118, + 126, 135, 158, 177, 201, 213, 224, 228, 229, 229, 228, 224, 224, 225, 222, 217, + 218, 213, 213, 185, 122, 59, 44, 42, 42, 46, 44, 51, 57, 33, 8, 84, + 128, 99, 84, 112, 92, 112, 97, 83, 60, 88, 123, 122, 108, 116, 108, 123, + 118, 100, 99, 107, 81, 16, 91, 89, 100, 96, 96, 76, 72, 53, 65, 56, + 60, 45, 67, 84, 81, 63, 61, 53, 61, 57, 56, 55, 56, 37, 33, 49, + 51, 53, 59, 52, 56, 56, 56, 57, 56, 49, 45, 55, 64, 61, 63, 59, + 61, 60, 60, 59, 40, 63, 67, 68, 67, 60, 60, 37, 34, 33, 30, 32, + 25, 10, 44, 77, 95, 96, 93, 96, 96, 100, 95, 87, 73, 63, 79, 102, + 80, 91, 89, 89, 71, 61, 72, 63, 16, 75, 80, 81, 79, 77, 71, 67, + 64, 63, 57, 63, 67, 57, 102, 130, 134, 128, 131, 116, 116, 110, 120, 102, + 88, 16, 92, 99, 116, 100, 102, 108, 110, 112, 111, 80, 51, 114, 131, 132, + 135, 136, 143, 146, 143, 140, 127, 107, 81, 32, 92, 93, 116, 104, 123, 134, + 151, 139, 87, 88, 69, 91, 126, 112, 110, 107, 107, 104, 106, 110, 103, 83, + 79, 65, 93, 99, 97, 93, 92, 73, 69, 80, 83, 59, 38, 80, 127, 135, + 124, 135, 128, 140, 138, 139, 134, 151, 96, 45, 132, 147, 147, 154, 140, 140, + 132, 136, 112, 115, 61, 14, 89, 112, 103, 136, 106, 110, 119, 106, 92, 103, + 64, 49, 108, 135, 128, 126, 123, 124, 123, 132, 85, 61, 10, 80, 114, 107, + 130, 108, 106, 84, 99, 96, 91, 96, 99, 61, 127, 135, 147, 128, 138, 136, + 140, 128, 128, 95, 88, 57, 41, 73, 75, 77, 77, 76, 68, 71, 79, 67, + 48, 63, 95, 110, 114, 110, 76, 75, 75, 81, 96, 130, 112, 53, 110, 107, + 111, 110, 122, 115, 116, 118, 116, 104, 95, 134, 163, 175, 198, 199, 173, 139, + 124, 118, 138, 144, 130, 97, 71, 87, 112, 115, 114, 127, 158, 205, 224, 229, + 233, 193, 131, 132, 139, 151, 150, 144, 123, 41, 29, 28, 28, 26, 36, 59, + 122, 131, 143, 61, 12, 12, 21, 13, 28, 29, 46, 9, 1, 44, 73, 59, + 56, 65, 59, 52, 48, 49, 34, 29, 18, 49, 52, 38, 46, 52, 51, 71, + 57, 45, 52, 32, 24, 48, 48, 52, 52, 53, 46, 48, 37, 33, 45, 18, + 14, 56, 72, 68, 68, 68, 48, 63, 56, 61, 46, 37, 22, 53, 59, 42, + 59, 60, 44, 46, 51, 48, 49, 38, 25, 46, 56, 55, 51, 38, 52, 45, + 60, 56, 49, 37, 28, 5, 42, 42, 55, 48, 42, 41, 45, 46, 32, 28, + 9, 49, 69, 71, 63, 59, 59, 60, 57, 56, 42, 29, 6, 65, 83, 80, + 71, 71, 63, 73, 71, 64, 56, 36, 14, 57, 63, 69, 53, 64, 53, 65, + 59, 51, 42, 8, 77, 68, 61, 56, 56, 44, 46, 60, 63, 57, 48, 29, + 14, 68, 71, 80, 76, 77, 64, 68, 68, 61, 55, 55, 51, 103, 128, 126, + 102, 107, 97, 79, 73, 57, 53, 30, 20, 29, 52, 60, 60, 75, 65, 89, + 83, 95, 167, 209, 212, 181, 126, 96, 119, 189, 194, 198, 206, 210, 216, 222, + 224, 225, 224, 218, 213, 201, 197, 198, 186, 179, 167, 170, 173, 189, 205, 205, + 162, 76, 51, 41, 41, 44, 46, 48, 28, 8, 104, 138, 108, 91, 88, 99, + 87, 95, 93, 53, 88, 118, 118, 103, 103, 104, 104, 107, 104, 103, 102, 80, + 16, 91, 81, 99, 92, 97, 95, 84, 72, 61, 55, 49, 46, 75, 83, 71, + 76, 76, 59, 75, 79, 81, 69, 52, 36, 44, 76, 93, 89, 57, 57, 59, + 63, 65, 65, 67, 37, 52, 88, 84, 85, 84, 67, 65, 68, 64, 65, 45, + 63, 76, 75, 77, 69, 69, 60, 55, 55, 52, 48, 28, 9, 71, 80, 96, + 104, 107, 104, 95, 83, 102, 91, 80, 51, 80, 84, 103, 87, 85, 93, 89, + 80, 79, 69, 6, 84, 84, 68, 91, 91, 53, 59, 91, 81, 87, 69, 67, + 51, 100, 132, 136, 122, 119, 114, 111, 123, 100, 107, 88, 4, 93, 100, 128, + 107, 99, 96, 100, 111, 123, 83, 53, 120, 136, 143, 144, 136, 130, 131, 144, + 148, 134, 115, 84, 33, 89, 89, 99, 92, 116, 139, 135, 122, 89, 91, 76, + 95, 126, 122, 115, 114, 111, 112, 110, 107, 108, 107, 85, 69, 99, 104, 110, + 107, 104, 102, 100, 97, 97, 63, 28, 112, 97, 126, 126, 131, 136, 138, 142, + 134, 132, 144, 104, 46, 139, 148, 150, 154, 155, 155, 131, 142, 116, 116, 67, + 16, 88, 118, 123, 120, 104, 104, 104, 107, 115, 104, 69, 48, 123, 138, 138, + 107, 118, 130, 126, 132, 84, 68, 9, 124, 115, 111, 108, 111, 114, 118, 120, + 123, 124, 103, 107, 63, 120, 154, 139, 140, 138, 142, 132, 131, 130, 119, 111, + 37, 57, 80, 106, 103, 85, 89, 91, 99, 93, 79, 51, 97, 100, 126, 111, + 97, 119, 122, 112, 96, 126, 118, 110, 55, 104, 103, 120, 118, 119, 116, 111, + 112, 118, 103, 91, 119, 166, 166, 213, 187, 154, 126, 123, 127, 144, 150, 128, + 95, 68, 81, 106, 112, 116, 138, 190, 213, 214, 229, 225, 153, 127, 132, 146, + 147, 143, 131, 67, 30, 28, 26, 30, 29, 38, 61, 123, 127, 134, 64, 12, + 12, 25, 28, 38, 29, 33, 9, 1, 53, 63, 52, 64, 64, 61, 59, 57, + 45, 33, 24, 18, 49, 38, 46, 44, 63, 63, 67, 51, 53, 49, 41, 22, + 55, 68, 65, 64, 56, 57, 45, 40, 33, 37, 14, 34, 60, 67, 65, 53, + 60, 38, 42, 40, 44, 46, 45, 22, 45, 56, 42, 37, 44, 49, 55, 60, + 46, 44, 48, 24, 46, 53, 48, 45, 46, 57, 49, 67, 56, 55, 38, 26, + 6, 36, 51, 56, 44, 60, 46, 42, 42, 32, 29, 12, 52, 75, 65, 63, + 63, 65, 64, 57, 60, 44, 29, 6, 60, 63, 73, 73, 73, 73, 79, 73, + 72, 57, 30, 25, 61, 60, 69, 59, 65, 65, 79, 57, 48, 37, 6, 79, + 79, 67, 60, 57, 73, 73, 73, 72, 67, 49, 29, 12, 71, 79, 80, 73, + 76, 72, 75, 79, 64, 65, 69, 48, 91, 120, 122, 112, 95, 102, 87, 81, + 64, 73, 34, 18, 44, 56, 75, 77, 75, 65, 112, 85, 107, 123, 189, 206, + 183, 122, 110, 118, 157, 190, 198, 202, 208, 210, 210, 213, 206, 201, 193, 174, + 155, 150, 150, 151, 143, 147, 142, 148, 153, 151, 162, 187, 177, 87, 41, 41, + 46, 45, 46, 44, 22, 111, 116, 111, 91, 89, 97, 87, 92, 85, 53, 84, + 120, 114, 106, 110, 102, 104, 96, 111, 110, 100, 77, 16, 85, 79, 106, 108, + 100, 87, 76, 63, 64, 57, 51, 24, 69, 92, 76, 83, 69, 73, 84, 87, + 88, 77, 52, 36, 63, 93, 92, 100, 97, 73, 73, 72, 65, 76, 61, 36, + 83, 87, 92, 91, 92, 85, 72, 69, 71, 69, 46, 75, 79, 87, 83, 83, + 79, 71, 61, 61, 56, 51, 28, 8, 76, 93, 99, 81, 95, 104, 106, 83, + 95, 95, 79, 44, 81, 88, 100, 95, 103, 107, 88, 95, 79, 72, 8, 93, + 88, 83, 85, 83, 89, 88, 95, 92, 95, 88, 68, 71, 103, 140, 122, 123, + 118, 124, 115, 114, 120, 103, 92, 5, 100, 106, 103, 102, 128, 120, 128, 112, + 107, 87, 49, 115, 132, 139, 147, 144, 139, 140, 142, 135, 139, 115, 84, 33, + 88, 92, 100, 100, 126, 89, 97, 100, 88, 95, 77, 96, 124, 123, 126, 104, + 122, 119, 116, 114, 116, 112, 96, 71, 91, 110, 122, 120, 119, 116, 115, 114, + 100, 64, 29, 106, 138, 131, 127, 140, 139, 142, 139, 132, 127, 142, 96, 55, + 138, 150, 143, 143, 143, 140, 144, 138, 114, 118, 73, 20, 102, 124, 99, 111, + 85, 124, 111, 127, 119, 100, 64, 59, 118, 143, 127, 122, 115, 134, 131, 130, + 81, 65, 9, 120, 128, 115, 118, 119, 122, 123, 127, 128, 127, 106, 110, 68, + 119, 146, 142, 124, 126, 123, 119, 123, 120, 120, 108, 30, 75, 112, 131, 115, + 111, 102, 122, 119, 96, 83, 46, 97, 118, 119, 128, 119, 120, 112, 120, 127, + 134, 118, 103, 56, 103, 131, 100, 114, 112, 114, 112, 115, 111, 100, 84, 124, + 139, 150, 171, 183, 163, 128, 122, 132, 151, 150, 111, 104, 73, 85, 110, 107, + 132, 173, 210, 214, 218, 226, 201, 131, 128, 135, 148, 143, 135, 95, 34, 28, + 29, 28, 34, 30, 9, 76, 126, 134, 139, 9, 16, 29, 49, 45, 34, 26, + 32, 8, 1, 59, 67, 56, 61, 63, 59, 46, 63, 40, 32, 24, 16, 48, + 75, 79, 68, 68, 67, 53, 46, 46, 49, 42, 25, 25, 46, 51, 44, 48, + 45, 48, 38, 36, 38, 17, 36, 64, 69, 51, 46, 44, 45, 44, 46, 46, + 45, 42, 24, 40, 63, 49, 45, 38, 45, 34, 41, 36, 37, 48, 26, 49, + 56, 49, 53, 57, 56, 53, 45, 48, 59, 37, 25, 5, 40, 44, 57, 46, + 48, 53, 44, 41, 36, 29, 8, 40, 73, 65, 65, 67, 65, 61, 61, 56, + 42, 30, 4, 41, 80, 67, 80, 73, 76, 79, 77, 69, 69, 29, 10, 55, + 67, 72, 65, 60, 61, 59, 60, 56, 29, 1, 75, 72, 56, 65, 59, 56, + 55, 59, 57, 64, 48, 28, 10, 72, 67, 73, 72, 71, 73, 81, 91, 68, + 67, 67, 53, 71, 116, 119, 110, 93, 99, 88, 85, 79, 69, 41, 21, 52, + 72, 76, 72, 69, 68, 111, 91, 114, 92, 159, 214, 186, 114, 106, 107, 127, + 138, 163, 174, 183, 186, 189, 181, 166, 148, 140, 147, 148, 150, 153, 162, 163, + 167, 154, 147, 140, 135, 140, 143, 178, 155, 84, 37, 46, 42, 41, 40, 10, + 89, 112, 107, 75, 88, 102, 92, 95, 80, 55, 85, 116, 119, 112, 104, 110, + 104, 104, 115, 108, 102, 76, 20, 80, 84, 85, 91, 93, 93, 77, 63, 65, + 61, 56, 24, 51, 84, 87, 85, 97, 97, 112, 111, 108, 84, 57, 16, 65, + 95, 93, 100, 88, 83, 87, 106, 97, 79, 65, 34, 83, 87, 95, 87, 85, + 91, 87, 85, 72, 68, 52, 73, 85, 87, 85, 83, 83, 79, 72, 67, 61, + 51, 30, 6, 77, 97, 75, 81, 89, 111, 99, 95, 99, 89, 79, 48, 93, + 93, 102, 92, 100, 95, 97, 99, 83, 56, 9, 92, 96, 115, 95, 93, 97, + 110, 97, 95, 93, 103, 79, 57, 87, 126, 136, 138, 130, 124, 131, 138, 116, + 108, 64, 1, 84, 111, 110, 120, 131, 120, 122, 119, 106, 88, 48, 93, 132, + 135, 140, 139, 140, 142, 139, 146, 144, 134, 85, 34, 87, 87, 100, 116, 97, + 115, 100, 99, 84, 97, 83, 99, 108, 131, 130, 111, 114, 128, 130, 120, 126, + 122, 110, 75, 93, 123, 95, 114, 127, 126, 122, 119, 103, 72, 34, 128, 138, + 138, 144, 142, 136, 135, 130, 131, 132, 146, 97, 71, 93, 147, 143, 140, 142, + 138, 138, 134, 115, 111, 71, 21, 97, 123, 116, 115, 122, 115, 123, 110, 110, + 92, 69, 56, 118, 132, 131, 110, 131, 120, 126, 131, 83, 72, 8, 112, 124, + 118, 116, 142, 143, 150, 148, 146, 132, 108, 112, 71, 115, 154, 148, 147, 139, + 138, 118, 120, 123, 115, 87, 55, 100, 116, 115, 119, 122, 122, 119, 108, 102, + 89, 42, 103, 128, 122, 95, 120, 115, 123, 120, 131, 138, 120, 115, 40, 102, + 122, 103, 103, 107, 112, 112, 115, 108, 112, 79, 116, 140, 155, 171, 170, 183, + 130, 122, 148, 161, 139, 106, 95, 99, 100, 110, 130, 167, 199, 214, 216, 226, + 217, 157, 126, 132, 144, 142, 132, 107, 44, 29, 29, 29, 32, 34, 32, 12, + 61, 128, 150, 143, 17, 20, 21, 21, 22, 30, 33, 20, 8, 1, 37, 65, + 55, 56, 55, 56, 60, 49, 34, 30, 25, 13, 51, 49, 56, 46, 63, 51, + 48, 42, 38, 38, 36, 36, 26, 30, 38, 36, 44, 42, 44, 34, 33, 36, + 13, 41, 59, 56, 49, 52, 55, 52, 46, 52, 44, 60, 41, 26, 40, 61, + 59, 60, 51, 53, 44, 42, 41, 49, 36, 29, 55, 60, 56, 63, 51, 52, + 57, 53, 55, 41, 37, 29, 9, 33, 52, 55, 53, 49, 56, 46, 45, 36, + 32, 12, 65, 73, 79, 80, 71, 67, 67, 65, 61, 41, 30, 2, 57, 81, + 69, 76, 77, 77, 85, 76, 72, 63, 41, 12, 59, 73, 77, 63, 64, 63, + 63, 65, 51, 45, 5, 71, 84, 71, 84, 73, 84, 76, 73, 71, 67, 49, + 28, 10, 77, 75, 76, 84, 72, 69, 67, 79, 79, 64, 71, 52, 63, 110, + 112, 107, 107, 95, 91, 91, 84, 76, 44, 21, 60, 75, 77, 77, 84, 104, + 88, 111, 80, 120, 97, 201, 198, 128, 115, 107, 115, 122, 134, 138, 140, 144, + 140, 139, 132, 123, 120, 120, 123, 139, 150, 159, 162, 163, 165, 153, 148, 148, + 146, 136, 144, 174, 95, 37, 41, 44, 44, 33, 10, 85, 122, 107, 92, 92, + 95, 93, 97, 77, 44, 83, 114, 124, 123, 116, 115, 115, 116, 119, 106, 99, + 79, 29, 80, 85, 93, 87, 80, 72, 71, 56, 65, 68, 48, 57, 69, 100, + 108, 96, 100, 96, 108, 92, 85, 84, 52, 16, 73, 97, 103, 93, 96, 95, + 93, 96, 95, 75, 68, 30, 99, 88, 96, 83, 92, 87, 89, 91, 91, 72, + 52, 71, 80, 79, 79, 79, 81, 75, 73, 71, 71, 52, 33, 10, 83, 100, + 97, 73, 100, 80, 80, 92, 91, 87, 77, 51, 88, 103, 103, 95, 92, 95, + 99, 100, 80, 77, 28, 95, 96, 99, 114, 102, 100, 102, 108, 108, 110, 108, + 99, 67, 87, 111, 119, 122, 120, 104, 114, 110, 110, 104, 96, 12, 88, 116, + 115, 116, 119, 115, 111, 106, 108, 102, 75, 69, 120, 131, 131, 131, 128, 132, + 134, 132, 132, 124, 92, 34, 87, 89, 83, 93, 87, 111, 103, 102, 102, 116, + 100, 83, 110, 104, 108, 103, 112, 110, 115, 115, 119, 119, 119, 111, 88, 106, + 110, 97, 111, 115, 108, 120, 114, 79, 28, 103, 138, 131, 134, 135, 134, 130, + 131, 140, 143, 147, 107, 59, 76, 142, 148, 146, 148, 140, 139, 112, 112, 100, + 69, 22, 97, 124, 123, 128, 122, 130, 126, 124, 122, 89, 75, 56, 123, 150, + 134, 107, 110, 130, 128, 142, 91, 61, 8, 83, 130, 118, 136, 135, 123, 120, + 123, 136, 140, 108, 112, 73, 115, 146, 154, 144, 136, 135, 111, 124, 122, 123, + 77, 44, 111, 124, 131, 119, 115, 115, 114, 110, 100, 76, 44, 115, 132, 116, + 132, 134, 132, 135, 131, 130, 135, 138, 115, 33, 104, 102, 99, 103, 114, 107, + 106, 102, 106, 93, 63, 130, 136, 114, 144, 140, 175, 159, 120, 134, 158, 155, + 110, 103, 106, 118, 147, 173, 197, 206, 209, 224, 221, 171, 124, 128, 140, 138, + 127, 99, 42, 30, 30, 28, 29, 33, 37, 30, 45, 95, 128, 147, 155, 10, + 10, 10, 12, 12, 12, 12, 12, 8, 4, 13, 37, 64, 71, 51, 52, 33, + 33, 32, 18, 22, 13, 46, 42, 38, 42, 40, 42, 40, 32, 28, 26, 28, + 26, 30, 38, 40, 33, 32, 33, 33, 30, 36, 25, 13, 52, 57, 63, 46, + 48, 40, 41, 38, 38, 37, 41, 42, 33, 29, 45, 42, 37, 41, 41, 57, + 46, 44, 49, 45, 40, 38, 41, 45, 51, 44, 38, 37, 38, 38, 36, 36, + 28, 4, 32, 52, 48, 46, 45, 44, 45, 45, 49, 30, 13, 46, 60, 57, + 59, 59, 60, 57, 69, 60, 41, 28, 4, 61, 80, 76, 71, 69, 73, 65, + 72, 69, 59, 33, 6, 56, 61, 72, 72, 64, 72, 71, 65, 48, 44, 5, + 64, 72, 69, 69, 68, 68, 67, 65, 64, 64, 46, 26, 9, 72, 73, 79, + 75, 80, 75, 81, 69, 75, 76, 68, 56, 53, 85, 111, 99, 92, 83, 69, + 73, 77, 72, 48, 20, 55, 73, 95, 88, 107, 119, 91, 124, 124, 112, 84, + 124, 183, 139, 107, 106, 114, 119, 120, 115, 127, 124, 127, 120, 116, 112, 114, + 118, 155, 161, 138, 158, 167, 163, 161, 170, 157, 154, 151, 150, 146, 170, 91, + 32, 36, 40, 42, 28, 6, 79, 108, 106, 93, 88, 95, 93, 89, 79, 42, + 83, 99, 115, 114, 107, 106, 103, 103, 100, 92, 89, 79, 24, 40, 71, 73, + 51, 45, 63, 63, 40, 42, 51, 52, 60, 72, 92, 102, 92, 89, 87, 89, + 87, 85, 85, 45, 29, 65, 93, 107, 102, 102, 107, 96, 99, 95, 77, 67, + 33, 87, 84, 89, 84, 80, 79, 68, 65, 83, 80, 75, 75, 60, 63, 63, + 63, 59, 57, 59, 61, 57, 55, 32, 8, 87, 104, 67, 69, 75, 71, 72, + 72, 76, 81, 75, 73, 71, 73, 87, 87, 76, 76, 75, 76, 71, 80, 6, + 96, 96, 99, 93, 95, 97, 102, 99, 100, 95, 102, 100, 93, 71, 71, 83, + 87, 84, 84, 89, 89, 89, 93, 100, 8, 53, 112, 112, 110, 110, 106, 73, + 71, 76, 81, 99, 97, 77, 97, 108, 103, 108, 106, 111, 116, 116, 108, 85, + 36, 77, 73, 84, 92, 87, 89, 95, 100, 65, 63, 67, 110, 112, 116, 119, + 120, 119, 123, 124, 124, 122, 126, 119, 119, 118, 123, 123, 126, 124, 104, 104, + 122, 107, 83, 34, 132, 139, 130, 139, 143, 138, 144, 146, 134, 122, 118, 111, + 67, 64, 136, 128, 143, 104, 104, 104, 91, 97, 91, 69, 25, 96, 119, 115, + 93, 119, 119, 124, 104, 107, 95, 71, 46, 126, 142, 120, 123, 108, 127, 122, + 142, 77, 65, 8, 127, 130, 119, 128, 124, 126, 124, 124, 120, 120, 118, 116, + 83, 85, 116, 136, 131, 118, 107, 115, 114, 110, 122, 120, 44, 110, 126, 124, + 122, 120, 116, 114, 108, 102, 85, 44, 103, 131, 131, 128, 128, 132, 132, 123, + 127, 124, 118, 81, 37, 87, 110, 97, 89, 93, 100, 110, 106, 104, 91, 84, + 110, 120, 118, 128, 148, 132, 178, 128, 127, 157, 158, 157, 154, 155, 171, 190, + 191, 198, 202, 216, 214, 171, 122, 128, 136, 127, 119, 97, 46, 30, 30, 26, + 32, 32, 34, 30, 28, 40, 49, 120, 124, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 9, 8, 10, 12, 13, 13, 20, 14, 17, 20, 20, 13, + 16, 13, 14, 14, 12, 12, 13, 10, 12, 9, 12, 10, 16, 12, 16, 14, + 26, 34, 40, 38, 29, 18, 13, 41, 45, 48, 40, 37, 32, 40, 37, 32, + 41, 38, 36, 33, 37, 41, 51, 40, 41, 40, 40, 40, 41, 38, 38, 38, + 38, 37, 22, 24, 17, 12, 12, 12, 10, 10, 9, 12, 5, 12, 12, 14, + 16, 17, 20, 37, 42, 37, 29, 17, 4, 37, 52, 26, 33, 40, 53, 28, + 38, 38, 22, 4, 29, 41, 33, 33, 41, 41, 34, 34, 42, 42, 17, 6, + 32, 41, 30, 41, 37, 37, 28, 44, 36, 20, 6, 17, 41, 41, 40, 40, + 44, 45, 42, 44, 45, 44, 24, 8, 53, 77, 73, 57, 56, 68, 69, 51, + 56, 63, 71, 61, 65, 68, 64, 59, 67, 63, 64, 57, 56, 55, 44, 21, + 56, 85, 87, 76, 73, 88, 89, 85, 93, 116, 119, 153, 185, 177, 119, 111, + 103, 115, 106, 61, 52, 52, 53, 52, 49, 52, 51, 91, 112, 170, 131, 135, + 163, 165, 167, 163, 161, 167, 154, 155, 147, 169, 100, 36, 33, 38, 28, 36, + 14, 37, 61, 85, 110, 107, 102, 112, 80, 72, 45, 76, 85, 104, 104, 97, + 80, 73, 69, 65, 65, 51, 40, 52, 59, 49, 53, 51, 51, 44, 45, 44, + 44, 36, 38, 37, 46, 80, 79, 87, 91, 87, 99, 81, 91, 77, 29, 26, + 60, 89, 84, 76, 85, 88, 83, 80, 83, 79, 67, 36, 88, 85, 72, 80, + 80, 79, 79, 81, 76, 73, 72, 69, 75, 73, 71, 72, 71, 68, 65, 65, + 64, 60, 57, 8, 57, 67, 61, 63, 67, 68, 67, 69, 73, 73, 72, 68, + 75, 72, 73, 72, 69, 68, 68, 71, 63, 56, 6, 65, 76, 69, 75, 75, + 80, 83, 81, 84, 87, 89, 89, 76, 88, 96, 89, 79, 99, 96, 84, 68, + 100, 85, 65, 26, 64, 55, 45, 46, 49, 38, 44, 46, 41, 42, 46, 42, + 63, 75, 64, 60, 87, 96, 87, 69, 95, 96, 59, 41, 68, 34, 37, 36, + 34, 29, 30, 32, 32, 25, 24, 33, 24, 22, 22, 28, 26, 26, 29, 33, + 34, 34, 37, 41, 46, 52, 57, 60, 69, 120, 118, 124, 107, 76, 32, 116, + 139, 127, 134, 139, 134, 131, 123, 122, 112, 112, 95, 92, 60, 88, 85, 95, + 102, 95, 72, 68, 60, 55, 72, 28, 57, 49, 48, 67, 68, 79, 100, 79, + 73, 75, 63, 63, 92, 111, 115, 111, 110, 114, 104, 104, 79, 60, 8, 127, + 127, 131, 131, 130, 131, 131, 131, 132, 131, 130, 127, 124, 126, 124, 123, 128, + 126, 127, 124, 124, 122, 122, 110, 40, 102, 104, 119, 114, 115, 107, 87, 103, + 112, 80, 44, 44, 42, 51, 55, 46, 48, 46, 61, 79, 76, 73, 71, 33, + 79, 59, 57, 63, 64, 59, 55, 63, 53, 44, 93, 80, 26, 97, 97, 104, + 116, 169, 146, 124, 138, 162, 162, 170, 177, 183, 189, 198, 202, 210, 206, 174, + 126, 128, 127, 118, 110, 81, 45, 34, 29, 29, 34, 32, 26, 32, 18, 20, + 26, 26, 42, 46, 46, 48, 46, 51, 51, 53, 48, 55, 48, 4, 1, 24, + 49, 48, 36, 41, 37, 18, 16, 17, 14, 16, 13, 8, 14, 30, 38, 52, + 53, 65, 64, 77, 81, 65, 49, 68, 73, 68, 57, 29, 18, 17, 13, 25, + 22, 13, 24, 26, 21, 22, 17, 18, 12, 14, 13, 13, 13, 13, 9, 9, + 8, 9, 6, 8, 8, 8, 6, 8, 8, 8, 6, 9, 17, 45, 59, 67, + 65, 69, 68, 69, 61, 61, 30, 5, 72, 99, 97, 80, 46, 44, 38, 22, + 22, 30, 24, 5, 1, 10, 8, 10, 1, 8, 5, 1, 1, 6, 5, 0, + 0, 8, 1, 1, 1, 2, 1, 1, 4, 6, 8, 1, 1, 4, 13, 1, + 0, 4, 1, 2, 0, 0, 4, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 2, 14, 5, 20, 16, 21, 20, 22, 28, 34, 51, 51, 55, 64, 45, 45, + 37, 41, 37, 34, 34, 29, 26, 40, 33, 36, 22, 55, 59, 57, 67, 79, + 80, 75, 104, 88, 122, 144, 157, 205, 201, 158, 116, 107, 108, 107, 37, 36, + 36, 45, 41, 38, 44, 44, 64, 104, 161, 169, 134, 131, 159, 162, 166, 166, + 171, 153, 153, 166, 159, 96, 32, 30, 32, 21, 6, 25, 34, 36, 42, 32, + 32, 45, 48, 57, 79, 45, 69, 80, 75, 56, 53, 56, 55, 36, 37, 38, + 28, 20, 12, 13, 13, 9, 8, 8, 6, 6, 5, 5, 4, 4, 2, 1, + 1, 1, 0, 0, 0, 6, 8, 12, 10, 14, 16, 22, 26, 34, 33, 37, + 48, 45, 60, 76, 81, 64, 37, 77, 65, 65, 53, 44, 44, 38, 33, 29, + 30, 22, 16, 14, 21, 10, 9, 8, 24, 6, 5, 5, 26, 4, 2, 1, + 4, 2, 1, 1, 4, 4, 4, 6, 9, 6, 9, 13, 14, 4, 8, 22, + 25, 5, 10, 34, 36, 29, 8, 26, 25, 5, 4, 20, 4, 4, 14, 16, + 1, 1, 0, 10, 2, 0, 8, 10, 0, 0, 0, 9, 0, 0, 24, 30, + 37, 68, 102, 80, 91, 112, 124, 116, 99, 72, 48, 84, 123, 120, 103, 110, + 48, 38, 37, 33, 34, 30, 25, 20, 57, 64, 57, 64, 77, 79, 73, 80, + 95, 76, 8, 29, 126, 147, 103, 112, 130, 144, 114, 119, 122, 116, 115, 119, + 135, 135, 120, 79, 60, 72, 75, 106, 77, 33, 83, 88, 88, 85, 92, 91, + 91, 93, 95, 93, 104, 92, 89, 72, 45, 37, 46, 65, 36, 41, 88, 120, + 130, 108, 30, 96, 124, 128, 83, 67, 56, 72, 45, 51, 42, 96, 75, 65, + 59, 56, 60, 59, 63, 68, 76, 68, 60, 38, 48, 88, 93, 97, 93, 100, + 100, 103, 99, 115, 115, 103, 102, 108, 115, 107, 106, 122, 114, 102, 102, 119, + 107, 46, 55, 100, 96, 97, 81, 85, 93, 96, 111, 111, 114, 46, 114, 154, + 151, 130, 144, 140, 139, 99, 87, 84, 51, 37, 20, 45, 69, 92, 87, 92, + 95, 104, 96, 107, 108, 41, 75, 138, 178, 128, 130, 136, 116, 189, 162, 148, + 155, 130, 132, 136, 153, 157, 165, 162, 163, 148, 135, 136, 116, 88, 77, 56, + 36, 32, 30, 29, 33, 38, 45, 52, 59, 65, 72, 6, 64, 159, 157, 151, + 80, 77, 72, 71, 52, 60, 51, 56, 14, 4, 22, 26, 25, 29, 40, 37, + 38, 40, 33, 33, 13, 5, 40, 93, 103, 87, 89, 88, 87, 76, 72, 57, + 73, 79, 79, 81, 71, 85, 83, 75, 64, 53, 25, 26, 12, 16, 21, 30, + 36, 48, 53, 75, 61, 69, 52, 37, 33, 44, 85, 89, 84, 76, 96, 85, + 63, 93, 79, 81, 73, 80, 76, 85, 99, 80, 77, 63, 73, 77, 64, 73, + 63, 33, 8, 72, 96, 93, 87, 96, 96, 75, 84, 48, 32, 24, 37, 53, + 52, 53, 44, 40, 26, 40, 29, 9, 10, 2, 22, 106, 100, 71, 75, 96, + 95, 75, 75, 72, 26, 2, 18, 67, 81, 53, 56, 55, 52, 61, 53, 28, + 12, 45, 60, 61, 48, 45, 48, 48, 45, 44, 36, 32, 4, 6, 87, 104, + 102, 85, 102, 75, 34, 25, 22, 21, 18, 20, 24, 40, 59, 63, 68, 71, + 75, 83, 81, 79, 61, 22, 93, 99, 100, 85, 118, 93, 99, 88, 97, 139, + 154, 210, 213, 201, 185, 126, 111, 106, 116, 36, 34, 37, 36, 38, 32, 33, + 49, 61, 102, 181, 185, 126, 134, 120, 136, 142, 139, 135, 163, 159, 147, 107, + 79, 30, 29, 25, 30, 33, 34, 87, 99, 83, 83, 60, 49, 49, 46, 63, + 33, 30, 38, 55, 57, 60, 52, 55, 53, 76, 72, 73, 77, 120, 120, 130, + 119, 128, 122, 118, 130, 127, 122, 122, 112, 114, 115, 119, 128, 116, 119, 110, + 87, 91, 84, 73, 30, 14, 91, 132, 140, 103, 99, 84, 77, 65, 71, 49, + 56, 40, 46, 61, 63, 65, 52, 61, 68, 91, 61, 55, 61, 102, 135, 139, + 116, 103, 127, 128, 111, 106, 127, 119, 28, 6, 65, 143, 103, 108, 107, 114, + 112, 120, 128, 130, 126, 120, 127, 131, 147, 131, 131, 131, 134, 130, 127, 42, + 14, 37, 120, 150, 115, 120, 124, 126, 126, 132, 136, 138, 136, 131, 142, 155, + 148, 147, 147, 144, 140, 120, 139, 135, 55, 4, 81, 116, 143, 148, 146, 143, + 144, 142, 144, 130, 95, 45, 92, 136, 132, 132, 130, 130, 131, 122, 118, 110, + 60, 48, 118, 139, 140, 140, 140, 135, 102, 112, 128, 96, 88, 8, 135, 136, + 130, 136, 135, 136, 135, 142, 135, 138, 130, 130, 84, 128, 146, 135, 112, 135, + 131, 122, 115, 93, 37, 32, 28, 25, 25, 25, 22, 24, 22, 20, 22, 21, + 25, 24, 34, 114, 134, 126, 122, 136, 123, 114, 138, 147, 114, 32, 112, 143, + 128, 123, 114, 118, 104, 118, 128, 104, 68, 48, 118, 131, 130, 126, 118, 102, + 69, 55, 52, 49, 25, 0, 0, 25, 16, 0, 0, 18, 10, 0, 0, 12, + 8, 1, 6, 8, 8, 5, 21, 8, 9, 12, 33, 13, 16, 53, 104, 116, + 153, 161, 165, 165, 166, 163, 114, 132, 46, 127, 162, 154, 155, 159, 155, 143, + 151, 155, 136, 118, 83, 22, 114, 157, 170, 173, 167, 171, 166, 159, 116, 123, + 37, 181, 185, 179, 177, 171, 183, 179, 175, 107, 118, 100, 115, 112, 122, 142, + 142, 140, 136, 139, 138, 126, 103, 84, 55, 41, 38, 40, 34, 46, 38, 48, + 57, 60, 81, 92, 83, 80, 40, 142, 165, 186, 186, 24, 36, 36, 60, 53, + 60, 46, 57, 18, 4, 32, 30, 44, 22, 36, 38, 22, 42, 44, 32, 14, + 4, 84, 84, 73, 46, 49, 44, 44, 37, 48, 40, 57, 44, 59, 56, 84, + 84, 76, 80, 71, 72, 38, 30, 12, 53, 77, 75, 79, 73, 80, 76, 87, + 102, 64, 56, 57, 42, 63, 99, 88, 68, 73, 89, 99, 103, 99, 83, 81, + 84, 67, 68, 77, 77, 71, 72, 63, 60, 59, 61, 65, 38, 5, 83, 97, + 91, 93, 87, 87, 85, 91, 71, 48, 24, 44, 56, 52, 60, 51, 52, 56, + 67, 57, 25, 4, 12, 81, 103, 91, 85, 85, 87, 92, 92, 89, 85, 32, + 0, 89, 96, 100, 95, 88, 84, 88, 81, 76, 52, 13, 69, 61, 57, 46, + 51, 40, 41, 30, 29, 30, 36, 2, 5, 87, 103, 106, 103, 100, 95, 92, + 99, 91, 87, 73, 81, 65, 79, 97, 91, 96, 93, 107, 110, 103, 93, 61, + 24, 102, 116, 108, 123, 97, 111, 95, 97, 124, 155, 208, 209, 205, 208, 178, + 118, 110, 114, 116, 41, 34, 30, 40, 38, 34, 53, 46, 69, 97, 193, 194, + 131, 128, 135, 130, 104, 112, 110, 95, 89, 97, 87, 63, 26, 28, 25, 37, + 30, 61, 110, 104, 106, 95, 97, 99, 89, 92, 60, 38, 56, 124, 131, 122, + 119, 120, 128, 111, 126, 81, 114, 99, 89, 111, 108, 120, 115, 103, 112, 116, + 103, 106, 111, 103, 107, 102, 76, 75, 92, 81, 75, 81, 79, 81, 73, 32, + 13, 107, 150, 136, 130, 142, 140, 115, 130, 138, 102, 83, 41, 80, 130, 135, + 135, 132, 127, 134, 135, 131, 144, 128, 95, 93, 99, 103, 102, 107, 112, 106, + 118, 112, 124, 73, 9, 143, 138, 91, 107, 130, 127, 135, 110, 130, 139, 135, + 123, 92, 100, 107, 102, 97, 107, 107, 103, 97, 49, 0, 131, 162, 153, 161, + 154, 162, 158, 159, 154, 155, 158, 153, 127, 95, 123, 128, 130, 131, 132, 131, + 123, 123, 122, 56, 32, 106, 134, 143, 131, 128, 135, 132, 132, 132, 139, 99, + 57, 108, 138, 128, 132, 128, 138, 127, 114, 122, 114, 67, 41, 123, 131, 124, + 142, 122, 138, 142, 136, 123, 95, 89, 13, 130, 134, 118, 118, 118, 135, 136, + 138, 134, 138, 108, 73, 115, 147, 142, 135, 135, 136, 136, 132, 92, 103, 42, + 48, 143, 153, 124, 118, 138, 147, 134, 134, 144, 131, 128, 120, 130, 132, 159, + 161, 157, 155, 146, 128, 142, 144, 128, 36, 118, 143, 135, 130, 126, 123, 120, + 106, 110, 83, 55, 88, 167, 171, 179, 165, 171, 163, 157, 148, 122, 71, 32, + 95, 140, 143, 123, 138, 132, 138, 111, 130, 134, 120, 106, 102, 153, 158, 157, + 151, 169, 169, 144, 151, 177, 157, 67, 59, 131, 165, 167, 166, 161, 161, 153, + 161, 124, 122, 49, 128, 163, 147, 154, 155, 159, 159, 157, 157, 155, 146, 107, + 24, 136, 170, 173, 169, 169, 169, 166, 157, 118, 104, 32, 190, 179, 167, 177, + 185, 147, 194, 191, 159, 110, 92, 85, 84, 87, 89, 92, 92, 87, 85, 84, + 69, 56, 48, 42, 40, 36, 42, 45, 46, 55, 63, 76, 80, 91, 89, 92, + 89, 17, 146, 171, 177, 178, 16, 20, 30, 45, 53, 46, 45, 51, 9, 1, + 25, 28, 36, 33, 28, 28, 38, 33, 40, 26, 12, 4, 84, 77, 44, 33, + 45, 44, 67, 52, 33, 36, 48, 37, 56, 72, 48, 68, 71, 69, 71, 68, + 69, 29, 13, 68, 80, 81, 61, 57, 52, 48, 44, 40, 34, 52, 51, 40, + 96, 99, 88, 77, 85, 83, 80, 69, 85, 67, 63, 49, 84, 84, 64, 59, + 56, 61, 61, 63, 52, 60, 53, 36, 5, 76, 87, 81, 93, 87, 85, 77, + 80, 65, 48, 25, 51, 42, 64, 72, 71, 77, 83, 73, 53, 25, 5, 1, + 108, 100, 76, 79, 80, 76, 76, 71, 77, 75, 32, 10, 95, 72, 77, 79, + 83, 89, 88, 89, 71, 63, 17, 63, 52, 44, 37, 24, 16, 36, 25, 17, + 29, 37, 2, 4, 83, 102, 91, 87, 79, 85, 96, 97, 89, 87, 60, 48, + 95, 112, 108, 102, 96, 102, 99, 104, 103, 91, 67, 25, 99, 107, 119, 111, + 135, 116, 96, 106, 130, 183, 210, 209, 206, 202, 146, 115, 112, 111, 106, 32, + 30, 32, 36, 26, 42, 53, 44, 67, 99, 205, 201, 183, 128, 132, 154, 142, + 140, 140, 135, 136, 118, 107, 61, 28, 26, 28, 37, 28, 65, 111, 97, 110, + 103, 100, 96, 100, 88, 67, 36, 97, 115, 111, 116, 116, 112, 106, 103, 93, + 120, 104, 80, 107, 127, 127, 120, 110, 112, 96, 102, 99, 112, 100, 93, 63, + 91, 91, 77, 79, 79, 79, 87, 87, 89, 68, 38, 12, 99, 154, 139, 140, + 132, 132, 142, 140, 144, 144, 93, 44, 108, 140, 143, 138, 144, 134, 139, 135, + 127, 127, 93, 103, 132, 130, 127, 122, 115, 119, 126, 127, 120, 120, 89, 14, + 140, 89, 143, 138, 103, 106, 136, 124, 114, 115, 124, 75, 100, 131, 136, 139, + 132, 128, 131, 116, 115, 52, 24, 136, 162, 154, 143, 144, 150, 154, 153, 155, + 151, 153, 131, 102, 143, 144, 143, 139, 139, 139, 130, 130, 130, 115, 73, 6, + 99, 139, 138, 128, 131, 132, 142, 142, 138, 140, 97, 56, 111, 130, 122, 131, + 118, 124, 116, 119, 131, 114, 63, 38, 116, 127, 126, 136, 132, 144, 142, 138, + 124, 104, 84, 10, 85, 130, 120, 119, 119, 116, 131, 120, 134, 118, 99, 72, + 116, 147, 143, 139, 136, 140, 138, 134, 106, 110, 42, 91, 154, 150, 148, 150, + 153, 148, 150, 148, 139, 135, 134, 87, 132, 162, 154, 148, 153, 150, 148, 151, + 143, 153, 123, 40, 114, 122, 147, 123, 115, 122, 110, 110, 100, 76, 52, 110, + 171, 177, 169, 171, 167, 177, 171, 165, 138, 103, 42, 93, 103, 89, 124, 151, + 162, 95, 91, 134, 108, 89, 112, 140, 123, 158, 167, 177, 167, 162, 162, 165, + 170, 159, 102, 83, 135, 163, 157, 159, 159, 154, 150, 158, 120, 120, 49, 130, + 159, 161, 151, 155, 159, 150, 154, 155, 155, 147, 107, 18, 143, 173, 167, 161, + 148, 163, 162, 153, 120, 102, 25, 154, 182, 165, 183, 187, 178, 178, 126, 165, + 155, 139, 93, 106, 71, 68, 69, 64, 64, 60, 57, 55, 51, 46, 41, 42, + 49, 52, 63, 64, 73, 73, 79, 92, 96, 93, 91, 89, 10, 150, 170, 175, + 166, 72, 61, 55, 18, 22, 49, 40, 52, 9, 1, 28, 33, 38, 55, 33, + 29, 25, 30, 34, 17, 6, 4, 59, 84, 37, 41, 28, 49, 33, 51, 33, + 40, 56, 45, 56, 64, 49, 44, 63, 80, 73, 56, 68, 33, 12, 61, 80, + 53, 55, 48, 44, 44, 37, 34, 44, 37, 21, 14, 97, 96, 84, 88, 75, + 81, 76, 75, 89, 60, 64, 45, 77, 77, 61, 63, 63, 56, 73, 75, 63, + 56, 68, 33, 5, 71, 88, 83, 87, 80, 72, 67, 95, 85, 49, 34, 30, + 51, 52, 71, 63, 45, 55, 63, 49, 0, 4, 1, 69, 99, 73, 80, 76, + 83, 75, 83, 81, 81, 34, 1, 61, 87, 89, 69, 67, 72, 73, 103, 84, + 41, 20, 28, 49, 49, 36, 21, 26, 14, 21, 18, 18, 26, 1, 4, 76, + 97, 102, 80, 73, 77, 80, 79, 75, 60, 63, 52, 110, 111, 102, 122, 95, + 102, 99, 102, 103, 95, 72, 29, 102, 108, 106, 84, 81, 99, 91, 116, 157, + 212, 212, 209, 199, 150, 119, 108, 110, 122, 64, 30, 29, 30, 33, 44, 46, + 56, 55, 81, 104, 208, 210, 195, 128, 132, 135, 153, 157, 158, 157, 151, 142, + 124, 69, 26, 28, 24, 34, 24, 53, 106, 99, 104, 103, 115, 111, 100, 92, + 73, 37, 100, 111, 111, 107, 112, 118, 104, 103, 97, 104, 100, 71, 104, 126, + 104, 103, 118, 106, 106, 100, 99, 103, 107, 92, 59, 89, 106, 102, 95, 83, + 73, 92, 72, 76, 65, 37, 12, 120, 143, 131, 134, 139, 140, 139, 139, 136, + 126, 102, 51, 118, 140, 131, 130, 128, 128, 127, 128, 123, 100, 83, 112, 132, + 119, 122, 124, 126, 123, 124, 123, 123, 127, 64, 13, 73, 134, 99, 130, 132, + 127, 131, 135, 134, 127, 107, 71, 102, 131, 127, 120, 114, 120, 122, 128, 120, + 49, 18, 106, 161, 151, 161, 153, 148, 153, 157, 155, 158, 143, 127, 104, 144, + 150, 135, 139, 140, 136, 140, 142, 134, 106, 71, 4, 93, 136, 135, 124, 128, + 131, 136, 131, 134, 130, 99, 68, 96, 140, 123, 116, 127, 119, 130, 124, 119, + 103, 63, 37, 89, 120, 122, 123, 126, 134, 135, 140, 123, 102, 87, 0, 83, + 135, 115, 123, 120, 119, 127, 119, 134, 111, 89, 55, 120, 146, 143, 143, 127, + 132, 134, 140, 131, 122, 45, 127, 161, 150, 135, 143, 143, 144, 142, 148, 147, + 134, 107, 84, 134, 162, 151, 153, 151, 150, 144, 143, 143, 148, 119, 51, 111, + 128, 123, 124, 116, 111, 112, 108, 99, 75, 48, 91, 166, 174, 167, 171, 171, + 170, 169, 178, 143, 110, 38, 93, 95, 146, 116, 126, 167, 108, 138, 143, 104, + 130, 140, 96, 143, 175, 173, 171, 166, 173, 171, 171, 170, 159, 122, 63, 147, + 162, 162, 153, 150, 148, 136, 161, 124, 124, 64, 130, 163, 167, 155, 143, 144, + 151, 148, 146, 157, 122, 87, 16, 146, 169, 157, 157, 143, 154, 134, 127, 123, + 112, 30, 166, 181, 179, 170, 174, 146, 182, 140, 140, 158, 151, 131, 99, 71, + 67, 64, 63, 57, 53, 49, 49, 46, 45, 41, 55, 63, 69, 72, 84, 123, + 79, 92, 96, 106, 99, 104, 91, 5, 151, 170, 171, 178, 13, 18, 18, 46, + 24, 20, 37, 38, 13, 2, 25, 20, 34, 33, 29, 33, 30, 42, 29, 18, + 17, 4, 64, 73, 52, 29, 48, 34, 34, 30, 36, 46, 44, 37, 60, 69, + 67, 49, 65, 83, 67, 55, 79, 33, 14, 51, 75, 46, 48, 42, 36, 57, + 52, 49, 46, 36, 28, 13, 99, 95, 88, 79, 73, 83, 64, 65, 69, 53, + 56, 42, 80, 79, 63, 67, 64, 69, 52, 61, 72, 56, 59, 34, 6, 73, + 85, 72, 104, 88, 71, 76, 87, 77, 55, 34, 46, 41, 48, 36, 20, 33, + 34, 26, 38, 6, 4, 1, 68, 95, 71, 79, 81, 80, 81, 85, 83, 77, + 33, 1, 68, 81, 80, 76, 69, 67, 68, 83, 77, 44, 20, 57, 67, 26, + 30, 14, 34, 16, 17, 30, 26, 25, 2, 2, 84, 100, 95, 77, 81, 85, + 88, 84, 72, 64, 42, 48, 107, 115, 100, 108, 89, 103, 112, 111, 102, 88, + 68, 36, 88, 99, 107, 89, 81, 93, 81, 114, 193, 208, 209, 204, 157, 124, + 107, 112, 119, 72, 45, 28, 30, 32, 33, 44, 48, 56, 56, 76, 102, 214, + 213, 202, 128, 128, 136, 139, 147, 153, 155, 157, 148, 128, 69, 25, 25, 21, + 37, 21, 59, 107, 96, 102, 100, 112, 112, 99, 104, 64, 38, 89, 111, 118, + 127, 127, 130, 104, 97, 92, 104, 88, 67, 99, 124, 111, 110, 102, 112, 112, + 111, 97, 115, 106, 87, 57, 97, 97, 92, 79, 75, 67, 71, 69, 75, 61, + 32, 9, 119, 146, 146, 130, 148, 136, 132, 135, 130, 132, 100, 61, 104, 139, + 126, 124, 120, 136, 122, 108, 119, 104, 73, 112, 136, 122, 122, 122, 120, 126, + 120, 120, 124, 128, 65, 12, 93, 132, 136, 102, 103, 130, 123, 120, 122, 124, + 108, 65, 96, 143, 134, 111, 128, 139, 128, 116, 115, 46, 0, 128, 155, 158, + 157, 150, 153, 142, 147, 147, 147, 144, 118, 97, 143, 143, 131, 135, 139, 142, + 139, 139, 124, 123, 71, 6, 110, 134, 131, 132, 127, 130, 123, 135, 135, 131, + 107, 65, 103, 134, 119, 119, 128, 128, 127, 130, 126, 104, 71, 32, 107, 124, + 119, 146, 132, 142, 140, 126, 123, 110, 79, 5, 124, 120, 115, 120, 115, 112, + 122, 115, 138, 115, 87, 59, 116, 144, 148, 142, 144, 136, 131, 131, 130, 112, + 55, 97, 157, 159, 148, 147, 140, 130, 134, 134, 135, 97, 87, 59, 130, 157, + 146, 144, 139, 132, 140, 143, 150, 146, 116, 57, 103, 140, 123, 116, 122, 131, + 122, 126, 95, 85, 42, 96, 175, 175, 165, 174, 171, 167, 166, 174, 132, 110, + 38, 87, 96, 103, 136, 135, 123, 135, 143, 124, 130, 144, 140, 36, 136, 173, + 167, 173, 177, 167, 177, 178, 177, 166, 111, 68, 139, 161, 140, 139, 147, 146, + 155, 143, 161, 136, 65, 131, 159, 163, 153, 154, 158, 154, 146, 153, 148, 144, + 114, 13, 132, 173, 158, 161, 143, 148, 138, 122, 124, 123, 26, 182, 186, 177, + 175, 148, 143, 157, 167, 144, 134, 155, 148, 130, 69, 104, 97, 96, 99, 99, + 95, 91, 99, 100, 84, 52, 61, 77, 89, 127, 127, 127, 107, 110, 111, 108, + 103, 95, 57, 158, 169, 173, 163, 75, 75, 40, 41, 48, 40, 37, 59, 17, + 2, 13, 30, 36, 25, 45, 26, 29, 24, 30, 17, 8, 2, 64, 79, 46, + 51, 49, 37, 46, 45, 38, 45, 38, 33, 53, 60, 60, 38, 65, 72, 64, + 52, 76, 33, 16, 53, 75, 53, 56, 32, 37, 55, 42, 40, 40, 37, 41, + 30, 103, 104, 73, 87, 57, 73, 67, 69, 65, 61, 60, 44, 79, 72, 64, + 67, 73, 56, 65, 69, 69, 53, 59, 36, 5, 69, 80, 87, 80, 91, 68, + 73, 97, 71, 55, 29, 51, 60, 38, 46, 52, 46, 45, 32, 21, 14, 4, + 9, 75, 96, 85, 83, 85, 91, 93, 85, 88, 75, 33, 0, 79, 83, 64, + 77, 76, 67, 69, 72, 67, 55, 25, 52, 60, 44, 26, 18, 32, 10, 18, + 20, 18, 24, 1, 2, 89, 99, 96, 87, 85, 80, 89, 95, 77, 63, 46, + 61, 115, 108, 106, 96, 85, 103, 104, 95, 91, 89, 67, 37, 91, 103, 110, + 93, 104, 79, 75, 111, 199, 210, 205, 165, 124, 104, 126, 64, 61, 44, 29, + 29, 28, 34, 32, 37, 46, 51, 60, 87, 127, 213, 213, 205, 126, 126, 134, + 136, 139, 143, 153, 157, 148, 126, 60, 24, 22, 21, 29, 26, 64, 106, 96, + 100, 100, 115, 103, 106, 84, 73, 49, 89, 120, 111, 123, 115, 114, 119, 111, + 91, 102, 88, 64, 103, 124, 120, 96, 122, 103, 106, 97, 114, 108, 102, 77, + 61, 81, 96, 85, 76, 68, 65, 71, 69, 79, 56, 33, 8, 120, 146, 130, + 130, 139, 148, 139, 130, 142, 135, 104, 63, 96, 140, 130, 122, 138, 128, 115, + 120, 107, 92, 65, 112, 139, 122, 128, 132, 130, 134, 136, 127, 122, 124, 75, + 21, 96, 128, 134, 106, 126, 131, 128, 123, 127, 120, 107, 61, 95, 132, 130, + 123, 120, 119, 120, 116, 118, 51, 0, 120, 155, 157, 158, 154, 155, 151, 150, + 148, 147, 142, 81, 110, 146, 138, 131, 140, 146, 139, 130, 120, 119, 118, 67, + 40, 122, 135, 132, 130, 127, 135, 128, 138, 136, 135, 110, 77, 108, 140, 118, + 112, 126, 130, 130, 119, 116, 104, 71, 29, 103, 118, 134, 139, 131, 139, 128, + 126, 124, 110, 84, 22, 116, 118, 107, 112, 107, 112, 136, 111, 127, 114, 84, + 56, 108, 146, 144, 143, 146, 142, 123, 130, 123, 114, 60, 91, 155, 147, 148, + 130, 135, 142, 154, 134, 135, 102, 92, 95, 132, 155, 147, 142, 140, 150, 144, + 148, 150, 146, 128, 60, 111, 130, 124, 114, 107, 122, 112, 128, 104, 79, 46, + 112, 174, 174, 167, 175, 169, 169, 173, 174, 146, 110, 40, 97, 92, 102, 131, + 118, 130, 157, 115, 126, 110, 139, 99, 29, 144, 173, 174, 178, 177, 171, 169, + 171, 169, 163, 115, 75, 134, 163, 139, 130, 147, 134, 155, 158, 143, 139, 67, + 124, 165, 159, 154, 157, 143, 150, 146, 135, 146, 144, 111, 13, 140, 170, 166, + 161, 142, 134, 124, 123, 124, 110, 32, 186, 181, 178, 151, 173, 174, 132, 167, + 138, 158, 155, 154, 130, 71, 110, 114, 123, 120, 114, 114, 111, 119, 106, 83, + 55, 67, 76, 123, 114, 127, 124, 116, 116, 110, 112, 111, 103, 14, 155, 170, + 169, 155, 30, 53, 57, 51, 45, 36, 38, 37, 12, 0, 25, 25, 30, 32, + 22, 21, 25, 25, 26, 17, 8, 2, 56, 67, 37, 34, 37, 37, 44, 42, + 40, 28, 38, 26, 57, 59, 57, 33, 60, 51, 49, 51, 59, 32, 17, 33, + 67, 52, 61, 41, 44, 53, 56, 57, 52, 34, 42, 29, 103, 88, 80, 91, + 65, 83, 64, 69, 63, 65, 59, 46, 76, 72, 65, 55, 60, 53, 71, 59, + 65, 53, 49, 34, 5, 75, 69, 68, 81, 80, 71, 72, 80, 71, 56, 29, + 41, 34, 42, 30, 25, 26, 40, 40, 9, 4, 4, 2, 73, 96, 73, 79, + 95, 93, 79, 84, 89, 75, 34, 12, 83, 80, 65, 79, 73, 64, 71, 69, + 72, 64, 29, 57, 53, 64, 28, 21, 44, 16, 16, 17, 30, 22, 1, 1, + 88, 88, 99, 87, 83, 69, 87, 95, 79, 67, 45, 71, 119, 106, 95, 92, + 91, 107, 96, 88, 80, 81, 73, 38, 85, 103, 102, 102, 77, 77, 87, 106, + 194, 204, 175, 126, 107, 111, 63, 42, 30, 28, 26, 28, 28, 32, 28, 38, + 49, 53, 75, 93, 175, 216, 214, 208, 126, 126, 134, 138, 138, 143, 153, 154, + 146, 120, 38, 24, 22, 13, 29, 25, 64, 104, 93, 102, 102, 110, 103, 104, + 85, 67, 42, 95, 110, 115, 114, 107, 100, 100, 100, 97, 95, 75, 59, 100, + 122, 123, 104, 108, 97, 111, 111, 114, 106, 96, 79, 56, 87, 95, 85, 84, + 87, 88, 85, 80, 80, 48, 33, 8, 95, 146, 131, 130, 118, 142, 148, 136, + 134, 134, 104, 69, 97, 136, 124, 132, 127, 136, 114, 116, 108, 88, 68, 123, + 140, 127, 126, 136, 131, 134, 127, 126, 122, 116, 91, 25, 112, 127, 131, 110, + 124, 130, 126, 126, 122, 120, 102, 55, 89, 135, 130, 135, 120, 124, 131, 122, + 115, 52, 14, 123, 157, 163, 138, 135, 153, 150, 148, 140, 143, 138, 71, 106, + 148, 139, 136, 139, 150, 146, 134, 127, 111, 110, 76, 9, 107, 136, 128, 126, + 124, 134, 134, 136, 135, 138, 114, 68, 100, 135, 123, 136, 107, 104, 122, 124, + 119, 103, 65, 25, 104, 112, 112, 143, 131, 127, 127, 124, 126, 111, 83, 22, + 77, 110, 108, 104, 110, 110, 140, 108, 123, 111, 83, 46, 114, 142, 154, 144, + 151, 146, 136, 126, 122, 107, 61, 97, 153, 146, 146, 118, 138, 136, 143, 136, + 115, 106, 91, 84, 136, 153, 136, 144, 144, 130, 127, 136, 131, 134, 126, 60, + 108, 127, 127, 114, 118, 111, 116, 111, 110, 73, 45, 119, 166, 174, 163, 167, + 171, 167, 170, 174, 127, 106, 46, 96, 92, 106, 128, 120, 115, 130, 118, 122, + 119, 95, 123, 59, 144, 173, 177, 182, 167, 171, 175, 175, 173, 161, 118, 79, + 132, 159, 155, 147, 147, 144, 143, 144, 123, 131, 71, 106, 108, 159, 143, 153, + 155, 154, 148, 150, 146, 143, 108, 9, 140, 169, 165, 158, 147, 139, 161, 118, + 134, 111, 28, 134, 182, 169, 162, 161, 155, 150, 150, 169, 147, 159, 158, 124, + 67, 108, 122, 128, 128, 128, 122, 111, 115, 110, 107, 71, 83, 93, 134, 136, + 130, 123, 108, 116, 118, 110, 111, 99, 6, 161, 166, 170, 159, 14, 63, 68, + 40, 41, 48, 32, 34, 9, 0, 14, 30, 36, 29, 26, 30, 38, 40, 20, + 13, 4, 2, 49, 61, 38, 65, 36, 51, 42, 36, 44, 38, 41, 28, 45, + 77, 46, 33, 63, 57, 53, 53, 63, 36, 18, 29, 65, 45, 63, 34, 46, + 38, 44, 60, 45, 33, 22, 6, 100, 91, 76, 71, 80, 69, 79, 73, 71, + 61, 60, 42, 76, 71, 59, 63, 52, 53, 60, 63, 59, 55, 52, 34, 5, + 71, 83, 77, 83, 77, 61, 71, 76, 79, 57, 44, 33, 44, 61, 52, 46, + 52, 28, 22, 9, 0, 2, 1, 64, 92, 88, 80, 83, 92, 81, 87, 77, + 65, 36, 1, 60, 79, 61, 80, 73, 77, 59, 68, 81, 52, 33, 17, 51, + 52, 22, 22, 32, 17, 12, 21, 18, 20, 0, 0, 84, 95, 96, 88, 87, + 89, 89, 87, 76, 61, 48, 75, 118, 93, 103, 103, 97, 97, 96, 108, 102, + 77, 72, 40, 85, 99, 104, 102, 97, 89, 75, 99, 181, 208, 171, 114, 95, + 104, 52, 40, 29, 26, 32, 28, 26, 33, 29, 55, 51, 49, 77, 107, 191, + 222, 217, 210, 127, 126, 132, 138, 142, 147, 153, 151, 138, 93, 26, 22, 22, + 20, 32, 25, 65, 99, 93, 102, 104, 97, 107, 99, 68, 75, 42, 87, 107, + 107, 106, 104, 104, 114, 102, 97, 102, 87, 53, 104, 115, 132, 110, 104, 106, + 108, 110, 111, 95, 93, 57, 73, 79, 87, 83, 80, 77, 81, 71, 75, 77, + 56, 38, 6, 128, 146, 131, 124, 120, 126, 127, 131, 127, 123, 115, 80, 102, + 140, 124, 136, 128, 128, 102, 118, 91, 91, 63, 116, 136, 123, 126, 130, 140, + 126, 128, 124, 120, 112, 72, 22, 69, 99, 128, 123, 132, 123, 124, 132, 123, + 114, 91, 52, 79, 122, 127, 138, 134, 132, 118, 119, 122, 51, 10, 112, 158, + 158, 153, 151, 144, 150, 144, 144, 148, 118, 63, 118, 144, 140, 128, 139, 151, + 136, 130, 120, 116, 100, 83, 6, 93, 136, 127, 116, 127, 126, 126, 136, 130, + 128, 107, 84, 96, 132, 122, 122, 131, 102, 103, 104, 108, 104, 60, 24, 92, + 103, 108, 139, 139, 136, 130, 123, 128, 111, 87, 21, 81, 115, 103, 100, 103, + 107, 115, 119, 107, 108, 73, 36, 112, 138, 150, 140, 144, 144, 140, 122, 123, + 112, 64, 84, 140, 140, 167, 132, 142, 118, 112, 122, 95, 91, 91, 64, 138, + 151, 142, 139, 143, 136, 140, 132, 134, 127, 123, 64, 99, 127, 127, 120, 118, + 104, 122, 119, 108, 75, 38, 118, 165, 170, 171, 173, 171, 161, 171, 175, 136, + 106, 37, 97, 93, 135, 118, 111, 116, 153, 124, 127, 104, 100, 135, 60, 154, + 166, 178, 175, 174, 170, 171, 166, 166, 165, 140, 81, 110, 161, 150, 150, 132, + 140, 126, 120, 139, 128, 80, 93, 142, 163, 155, 153, 148, 150, 150, 151, 139, + 124, 81, 8, 130, 159, 163, 158, 162, 151, 136, 119, 135, 115, 24, 166, 181, + 162, 171, 163, 165, 154, 151, 151, 144, 158, 157, 132, 65, 120, 127, 134, 126, + 130, 108, 123, 124, 127, 106, 68, 76, 142, 132, 134, 128, 130, 127, 123, 130, + 112, 112, 102, 1, 150, 169, 158, 161, 24, 48, 73, 64, 36, 30, 33, 32, + 10, 1, 20, 26, 33, 40, 45, 34, 26, 24, 17, 9, 4, 4, 46, 55, + 61, 42, 65, 55, 44, 44, 40, 48, 33, 24, 49, 59, 51, 48, 30, 40, + 44, 40, 38, 37, 18, 33, 51, 42, 51, 53, 51, 48, 45, 45, 45, 45, + 24, 13, 91, 84, 57, 57, 69, 84, 81, 64, 83, 59, 55, 38, 64, 72, + 64, 57, 61, 57, 57, 60, 51, 53, 56, 34, 6, 69, 72, 48, 63, 61, + 45, 46, 63, 57, 60, 45, 28, 34, 21, 33, 16, 20, 18, 22, 21, 0, + 2, 8, 63, 88, 69, 75, 77, 76, 77, 89, 83, 59, 36, 1, 59, 77, + 64, 76, 77, 69, 68, 72, 69, 55, 24, 13, 30, 24, 30, 22, 30, 26, + 32, 25, 29, 18, 0, 0, 88, 99, 87, 89, 92, 106, 96, 83, 67, 64, + 34, 87, 118, 108, 112, 102, 104, 97, 84, 89, 95, 89, 73, 42, 81, 97, + 106, 100, 96, 75, 71, 84, 138, 209, 174, 122, 103, 106, 57, 44, 29, 36, + 37, 30, 32, 30, 32, 37, 51, 72, 95, 150, 212, 222, 221, 205, 128, 127, + 134, 139, 147, 153, 154, 148, 127, 52, 24, 21, 18, 21, 37, 22, 60, 97, + 97, 108, 103, 107, 104, 100, 81, 69, 41, 56, 102, 107, 89, 96, 93, 84, + 102, 100, 97, 80, 51, 92, 111, 114, 114, 108, 108, 108, 107, 107, 100, 87, + 52, 59, 87, 93, 97, 89, 87, 77, 89, 81, 67, 48, 26, 5, 128, 143, + 138, 102, 102, 99, 112, 92, 108, 111, 106, 84, 84, 123, 128, 124, 124, 123, + 100, 116, 87, 84, 52, 104, 131, 126, 126, 130, 127, 126, 123, 123, 123, 122, + 67, 21, 103, 126, 144, 126, 132, 130, 122, 120, 114, 112, 97, 46, 73, 85, + 118, 127, 132, 122, 128, 118, 119, 44, 28, 115, 144, 151, 147, 143, 146, 148, + 147, 144, 139, 115, 55, 112, 119, 143, 144, 148, 142, 132, 124, 120, 107, 114, + 65, 4, 124, 130, 127, 112, 124, 122, 119, 116, 115, 116, 116, 87, 65, 116, + 135, 108, 114, 93, 104, 108, 114, 107, 83, 18, 97, 106, 127, 132, 127, 131, + 128, 128, 127, 119, 84, 29, 85, 99, 99, 95, 93, 87, 96, 99, 102, 104, + 73, 33, 75, 132, 144, 144, 135, 127, 115, 123, 123, 112, 72, 73, 104, 136, + 132, 134, 108, 112, 108, 112, 120, 83, 76, 41, 136, 147, 131, 139, 143, 139, + 139, 132, 142, 128, 124, 79, 79, 132, 123, 122, 119, 106, 106, 119, 110, 76, + 51, 107, 167, 163, 171, 171, 170, 169, 171, 174, 124, 106, 38, 100, 103, 130, + 123, 106, 106, 102, 110, 126, 102, 120, 136, 18, 135, 161, 163, 173, 162, 169, + 154, 170, 163, 169, 131, 85, 111, 143, 135, 136, 142, 131, 134, 140, 122, 132, + 103, 89, 139, 146, 148, 116, 119, 123, 144, 148, 130, 127, 119, 6, 135, 161, + 167, 159, 153, 157, 155, 130, 134, 124, 21, 181, 186, 157, 167, 170, 161, 159, + 167, 167, 155, 157, 155, 126, 64, 103, 120, 119, 123, 124, 122, 115, 122, 123, + 106, 68, 76, 138, 131, 135, 130, 143, 139, 120, 114, 112, 114, 107, 59, 162, + 163, 162, 153, 22, 29, 34, 42, 51, 44, 44, 24, 9, 1, 14, 18, 21, + 18, 17, 18, 17, 18, 17, 12, 4, 1, 40, 59, 61, 64, 52, 46, 48, + 49, 48, 45, 28, 20, 46, 46, 52, 52, 55, 41, 45, 41, 37, 37, 34, + 32, 24, 24, 24, 22, 26, 25, 26, 28, 28, 30, 34, 18, 102, 81, 73, + 79, 69, 69, 71, 71, 71, 64, 60, 41, 76, 73, 59, 60, 56, 48, 52, + 45, 49, 49, 53, 33, 6, 67, 69, 64, 63, 60, 76, 57, 56, 48, 61, + 29, 22, 30, 17, 14, 13, 12, 13, 12, 10, 8, 2, 1, 45, 87, 80, + 80, 77, 87, 83, 85, 69, 69, 37, 1, 56, 73, 64, 56, 77, 76, 71, + 59, 61, 45, 40, 32, 20, 20, 13, 8, 5, 5, 6, 5, 4, 5, 0, + 1, 96, 96, 96, 89, 88, 84, 81, 80, 55, 56, 34, 80, 112, 106, 96, + 91, 92, 92, 84, 83, 84, 80, 75, 45, 55, 87, 93, 89, 79, 56, 76, + 72, 112, 193, 195, 153, 99, 126, 93, 51, 44, 37, 42, 38, 38, 41, 46, + 44, 76, 84, 128, 204, 221, 221, 222, 199, 127, 127, 134, 143, 150, 155, 150, + 136, 75, 24, 21, 20, 20, 20, 28, 30, 56, 87, 91, 92, 91, 89, 84, + 81, 87, 81, 52, 60, 100, 108, 87, 91, 96, 92, 93, 95, 84, 76, 48, + 72, 104, 110, 93, 89, 104, 107, 93, 95, 95, 76, 46, 56, 61, 53, 53, + 52, 61, 55, 46, 45, 36, 40, 24, 6, 114, 132, 139, 132, 124, 124, 128, + 130, 122, 123, 118, 118, 118, 85, 93, 97, 99, 99, 119, 118, 108, 85, 48, + 99, 130, 127, 130, 123, 124, 124, 127, 122, 120, 116, 80, 32, 100, 106, 110, + 112, 111, 111, 118, 110, 111, 96, 95, 41, 72, 80, 115, 112, 110, 108, 107, + 107, 100, 51, 0, 28, 79, 93, 83, 80, 92, 104, 96, 89, 103, 91, 41, + 64, 72, 81, 85, 97, 99, 95, 100, 99, 115, 103, 59, 36, 126, 127, 130, + 131, 123, 119, 123, 122, 116, 116, 110, 112, 81, 85, 93, 100, 99, 95, 118, + 118, 92, 108, 81, 16, 93, 96, 140, 128, 127, 130, 127, 126, 122, 120, 91, + 2, 72, 97, 84, 83, 87, 93, 95, 104, 100, 104, 63, 30, 56, 123, 123, + 111, 111, 119, 120, 107, 110, 115, 106, 67, 81, 100, 104, 89, 89, 100, 91, + 85, 97, 89, 81, 76, 132, 147, 143, 140, 136, 140, 140, 134, 135, 139, 132, + 79, 72, 112, 120, 123, 115, 93, 111, 112, 111, 77, 38, 115, 169, 166, 167, + 173, 167, 175, 169, 171, 143, 104, 37, 99, 99, 119, 99, 115, 100, 96, 103, + 97, 100, 104, 108, 33, 128, 151, 144, 120, 126, 136, 136, 136, 123, 116, 112, + 130, 138, 131, 134, 135, 130, 138, 135, 139, 130, 131, 130, 92, 99, 107, 108, + 118, 110, 116, 111, 135, 126, 126, 111, 4, 130, 153, 154, 157, 157, 161, 150, + 123, 130, 119, 25, 178, 179, 163, 162, 163, 154, 153, 154, 157, 155, 151, 140, + 120, 64, 108, 108, 126, 122, 128, 128, 130, 124, 123, 106, 68, 85, 140, 132, + 118, 116, 119, 116, 119, 118, 115, 112, 111, 10, 159, 158, 161, 153, 10, 10, + 12, 12, 12, 13, 14, 9, 4, 0, 14, 14, 13, 5, 13, 12, 9, 9, + 16, 13, 8, 1, 24, 56, 53, 49, 46, 29, 25, 22, 30, 26, 25, 17, + 28, 30, 29, 28, 26, 29, 29, 26, 26, 25, 25, 22, 25, 16, 10, 8, + 9, 14, 5, 2, 4, 4, 4, 16, 99, 63, 76, 36, 71, 68, 63, 36, + 65, 61, 56, 40, 69, 71, 51, 46, 42, 41, 36, 38, 38, 38, 29, 14, + 9, 34, 29, 30, 28, 26, 29, 28, 28, 25, 24, 21, 17, 13, 12, 13, + 10, 9, 8, 10, 6, 6, 5, 0, 18, 64, 69, 48, 53, 73, 67, 60, + 63, 61, 34, 16, 48, 64, 67, 61, 53, 52, 49, 46, 42, 44, 18, 10, + 6, 5, 10, 18, 24, 16, 8, 10, 10, 9, 1, 0, 85, 56, 69, 65, + 68, 72, 73, 79, 56, 51, 32, 72, 88, 95, 91, 85, 88, 84, 80, 77, + 81, 87, 77, 75, 75, 73, 52, 56, 72, 71, 63, 68, 77, 174, 202, 166, + 119, 116, 116, 81, 49, 37, 49, 48, 45, 42, 48, 72, 84, 123, 193, 218, + 221, 224, 220, 170, 126, 130, 136, 148, 151, 151, 142, 102, 32, 21, 20, 18, + 21, 22, 26, 30, 40, 73, 75, 71, 61, 75, 75, 65, 67, 73, 63, 57, + 89, 80, 81, 68, 68, 64, 63, 65, 67, 75, 41, 34, 33, 48, 41, 41, + 42, 49, 55, 72, 83, 59, 42, 44, 48, 48, 44, 42, 42, 42, 33, 33, + 34, 25, 30, 4, 18, 81, 95, 81, 84, 89, 103, 93, 97, 99, 99, 97, + 92, 103, 106, 107, 107, 112, 111, 112, 97, 84, 59, 85, 120, 122, 124, 111, + 110, 107, 106, 93, 102, 96, 73, 34, 59, 63, 57, 61, 63, 67, 68, 73, + 72, 73, 69, 42, 61, 33, 37, 38, 30, 26, 25, 30, 29, 28, 8, 8, + 14, 32, 13, 13, 26, 42, 22, 24, 40, 45, 52, 45, 17, 36, 41, 44, + 57, 79, 61, 76, 89, 87, 75, 0, 45, 76, 84, 84, 84, 89, 92, 84, + 85, 91, 84, 89, 83, 99, 91, 100, 95, 99, 77, 103, 88, 106, 77, 41, + 81, 89, 130, 124, 124, 123, 122, 112, 118, 118, 76, 37, 68, 48, 56, 37, + 38, 40, 53, 26, 24, 30, 49, 28, 34, 34, 44, 42, 48, 52, 57, 65, + 71, 91, 103, 103, 107, 108, 97, 99, 97, 96, 95, 92, 89, 89, 80, 71, + 134, 132, 131, 128, 111, 118, 124, 123, 112, 112, 99, 102, 100, 104, 115, 102, + 96, 91, 89, 85, 88, 64, 36, 111, 134, 158, 161, 153, 150, 150, 155, 147, + 122, 96, 48, 103, 93, 107, 103, 103, 95, 99, 97, 99, 93, 99, 120, 41, + 44, 48, 37, 34, 59, 73, 80, 85, 93, 115, 123, 116, 99, 122, 126, 122, + 123, 122, 127, 123, 130, 124, 119, 115, 135, 134, 127, 115, 131, 126, 126, 97, + 130, 130, 107, 4, 91, 128, 151, 107, 116, 130, 148, 127, 122, 115, 22, 128, + 174, 161, 153, 153, 153, 147, 140, 102, 93, 83, 72, 64, 72, 65, 76, 114, + 118, 112, 127, 124, 132, 119, 120, 93, 91, 111, 114, 110, 116, 114, 102, 84, + 128, 83, 75, 64, 38, 97, 100, 132, 134, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 4, 9, 2, 0, 42, + 12, 12, 10, 12, 20, 14, 9, 9, 18, 16, 9, 6, 5, 6, 5, 5, + 4, 6, 5, 5, 4, 5, 4, 5, 22, 38, 42, 41, 44, 73, 61, 76, + 59, 32, 4, 108, 68, 83, 63, 52, 48, 48, 46, 55, 56, 56, 37, 34, + 34, 34, 29, 26, 24, 18, 17, 14, 14, 9, 9, 9, 8, 6, 6, 5, + 5, 4, 4, 2, 2, 2, 1, 1, 5, 5, 1, 0, 1, 2, 0, 0, + 1, 2, 0, 16, 12, 12, 16, 14, 33, 59, 36, 42, 52, 32, 1, 44, + 14, 20, 16, 17, 13, 17, 13, 16, 9, 8, 9, 12, 24, 51, 44, 60, + 65, 71, 60, 72, 68, 42, 0, 97, 84, 84, 73, 68, 64, 64, 51, 61, + 52, 30, 59, 59, 64, 60, 60, 61, 64, 64, 64, 61, 68, 64, 63, 63, + 42, 33, 33, 34, 42, 73, 72, 77, 123, 190, 182, 123, 87, 157, 108, 85, + 85, 89, 91, 91, 89, 88, 111, 161, 204, 220, 222, 221, 221, 212, 140, 127, + 134, 147, 150, 147, 140, 111, 37, 22, 21, 18, 18, 24, 25, 14, 30, 41, + 37, 42, 46, 48, 48, 49, 51, 56, 65, 67, 60, 64, 52, 53, 59, 52, + 57, 64, 83, 77, 80, 48, 59, 106, 110, 99, 89, 69, 71, 69, 64, 41, + 34, 37, 6, 0, 26, 5, 4, 5, 17, 0, 4, 4, 0, 0, 25, 28, + 20, 17, 17, 24, 22, 20, 21, 25, 28, 28, 29, 33, 36, 41, 49, 52, + 57, 60, 67, 71, 80, 59, 64, 83, 80, 57, 59, 63, 60, 44, 44, 51, + 37, 25, 6, 21, 8, 33, 36, 18, 13, 28, 29, 17, 17, 26, 28, 76, + 92, 104, 108, 103, 116, 110, 112, 84, 79, 5, 21, 143, 157, 107, 104, 132, + 146, 92, 112, 114, 60, 29, 57, 136, 136, 87, 88, 92, 68, 68, 63, 79, + 46, 33, 9, 6, 5, 40, 10, 6, 10, 34, 22, 12, 20, 44, 37, 36, + 38, 52, 51, 46, 83, 72, 60, 59, 100, 57, 17, 75, 34, 44, 36, 41, + 34, 34, 30, 33, 21, 18, 37, 26, 51, 68, 77, 81, 88, 107, 104, 102, + 103, 85, 22, 107, 142, 150, 122, 135, 102, 84, 77, 52, 52, 44, 44, 57, + 48, 65, 37, 42, 63, 45, 57, 64, 68, 69, 57, 102, 93, 120, 110, 104, + 95, 112, 110, 104, 100, 104, 102, 95, 68, 48, 46, 41, 42, 40, 42, 41, + 53, 37, 40, 56, 67, 60, 89, 95, 87, 64, 100, 108, 71, 41, 87, 83, + 79, 77, 77, 71, 76, 87, 96, 103, 106, 142, 12, 61, 170, 170, 115, 119, + 110, 108, 95, 79, 45, 28, 22, 20, 18, 17, 16, 14, 13, 12, 10, 9, + 40, 38, 6, 4, 49, 40, 2, 1, 40, 26, 0, 4, 36, 1, 2, 46, + 48, 65, 68, 69, 72, 79, 84, 124, 118, 24, 128, 166, 115, 106, 102, 99, + 99, 107, 104, 99, 119, 111, 104, 81, 95, 106, 95, 65, 60, 56, 60, 73, + 89, 83, 81, 72, 72, 69, 73, 76, 71, 60, 57, 57, 51, 36, 34, 32, + 29, 25, 24, 18, 33, 40, 40, 24, 38, 21, 32, 26, 1, 0, 14, 49, + 48, 32, 32, 34, 25, 18, 10, 5, 0, 1, 6, 33, 36, 28, 36, 42, + 63, 52, 42, 36, 24, 5, 48, 65, 67, 57, 42, 60, 46, 59, 55, 51, + 17, 4, 60, 102, 95, 92, 91, 85, 85, 84, 92, 67, 30, 6, 108, 68, + 73, 108, 100, 84, 67, 73, 53, 38, 20, 32, 38, 44, 45, 52, 51, 49, + 59, 63, 59, 38, 59, 55, 104, 106, 106, 107, 114, 108, 102, 107, 115, 102, + 87, 83, 103, 99, 93, 102, 100, 95, 84, 79, 95, 75, 17, 1, 63, 103, + 102, 79, 64, 48, 38, 34, 18, 13, 10, 1, 10, 45, 51, 56, 48, 59, + 61, 65, 63, 67, 42, 1, 53, 114, 126, 130, 126, 124, 108, 118, 107, 80, + 42, 0, 93, 84, 100, 96, 104, 96, 93, 81, 69, 52, 29, 12, 10, 10, + 10, 13, 13, 12, 16, 14, 14, 14, 20, 21, 24, 65, 71, 89, 87, 85, + 115, 108, 91, 81, 132, 190, 139, 95, 120, 134, 130, 143, 139, 127, 134, 147, + 158, 198, 216, 218, 222, 222, 220, 220, 159, 128, 132, 144, 146, 142, 134, 96, + 36, 22, 21, 18, 25, 21, 18, 26, 41, 45, 56, 88, 103, 96, 79, 77, + 64, 60, 60, 51, 46, 44, 71, 104, 122, 116, 128, 100, 102, 112, 91, 84, + 45, 83, 130, 115, 97, 97, 112, 103, 106, 77, 73, 67, 9, 18, 144, 142, + 106, 97, 111, 111, 107, 99, 119, 97, 49, 13, 40, 96, 115, 108, 111, 112, + 120, 110, 111, 108, 102, 88, 107, 111, 119, 115, 111, 85, 67, 53, 37, 38, + 45, 34, 38, 71, 67, 81, 75, 85, 87, 96, 95, 88, 76, 10, 29, 85, + 96, 102, 96, 93, 96, 93, 97, 100, 93, 104, 89, 120, 136, 140, 136, 136, + 132, 119, 114, 85, 10, 131, 143, 130, 140, 132, 138, 131, 139, 135, 115, 72, + 22, 127, 147, 150, 135, 138, 144, 138, 108, 126, 128, 87, 73, 9, 24, 155, + 151, 102, 97, 148, 147, 112, 95, 118, 116, 65, 21, 67, 144, 140, 87, 88, + 84, 79, 71, 65, 57, 9, 24, 61, 68, 72, 69, 84, 89, 87, 92, 99, + 89, 0, 55, 153, 157, 154, 157, 158, 153, 150, 150, 118, 89, 21, 116, 153, + 144, 146, 153, 153, 153, 150, 134, 103, 87, 20, 56, 177, 170, 110, 106, 103, + 96, 84, 51, 26, 37, 22, 22, 21, 25, 21, 22, 20, 21, 18, 22, 21, + 22, 21, 30, 38, 103, 123, 128, 128, 114, 142, 130, 85, 40, 91, 154, 151, + 142, 92, 95, 44, 34, 34, 25, 29, 20, 61, 80, 150, 153, 153, 158, 154, + 162, 158, 158, 128, 139, 17, 139, 187, 182, 178, 187, 178, 178, 177, 177, 171, + 167, 136, 130, 161, 143, 140, 144, 157, 151, 153, 146, 139, 79, 0, 37, 136, + 181, 106, 135, 144, 171, 110, 147, 140, 52, 1, 135, 159, 154, 111, 154, 148, + 151, 88, 79, 114, 24, 134, 122, 143, 150, 159, 169, 167, 162, 165, 173, 169, + 140, 100, 87, 108, 139, 140, 136, 136, 136, 112, 88, 79, 85, 57, 69, 83, + 97, 102, 111, 112, 116, 124, 134, 135, 140, 139, 150, 157, 162, 166, 169, 83, + 59, 68, 60, 53, 55, 21, 28, 4, 0, 40, 34, 57, 51, 42, 46, 42, + 41, 36, 33, 6, 1, 51, 83, 84, 79, 76, 64, 80, 77, 67, 38, 28, + 6, 65, 63, 53, 44, 41, 63, 48, 45, 42, 49, 20, 2, 81, 99, 71, + 76, 85, 100, 77, 80, 59, 68, 33, 10, 116, 88, 65, 60, 45, 65, 77, + 97, 104, 92, 73, 88, 106, 93, 96, 103, 93, 95, 99, 89, 96, 80, 89, + 76, 71, 102, 88, 73, 83, 85, 75, 67, 64, 68, 84, 57, 72, 88, 104, + 108, 93, 93, 83, 76, 85, 84, 41, 0, 81, 97, 123, 85, 91, 67, 76, + 75, 68, 53, 32, 8, 69, 112, 108, 108, 100, 99, 64, 85, 88, 72, 48, + 1, 103, 127, 110, 96, 83, 106, 95, 87, 89, 77, 41, 0, 110, 80, 88, + 93, 89, 88, 89, 91, 79, 67, 29, 34, 110, 92, 84, 88, 103, 103, 85, + 84, 81, 79, 76, 72, 77, 72, 115, 122, 119, 106, 104, 106, 97, 71, 84, + 179, 157, 106, 84, 165, 173, 182, 195, 204, 208, 210, 214, 217, 221, 221, 216, + 220, 213, 163, 132, 138, 143, 138, 135, 107, 63, 33, 24, 21, 18, 25, 18, + 28, 36, 49, 42, 40, 79, 119, 134, 124, 123, 126, 134, 130, 134, 112, 102, + 104, 114, 127, 127, 115, 107, 115, 107, 104, 99, 88, 52, 79, 130, 124, 111, + 100, 99, 95, 107, 115, 84, 72, 0, 146, 150, 131, 134, 130, 131, 128, 111, + 108, 104, 102, 108, 12, 143, 139, 128, 130, 123, 128, 118, 119, 120, 123, 119, + 95, 76, 116, 123, 118, 114, 99, 100, 111, 116, 73, 40, 68, 126, 128, 134, + 120, 130, 128, 126, 116, 118, 107, 79, 6, 139, 135, 143, 138, 128, 126, 119, + 111, 115, 111, 93, 95, 138, 157, 154, 144, 144, 136, 138, 140, 114, 89, 5, + 148, 140, 140, 134, 130, 128, 127, 127, 132, 124, 76, 25, 140, 154, 138, 123, + 131, 126, 142, 139, 128, 116, 89, 83, 2, 158, 159, 153, 95, 110, 143, 140, + 115, 115, 118, 120, 75, 24, 139, 151, 138, 136, 139, 134, 147, 104, 84, 96, + 8, 72, 146, 159, 162, 154, 151, 146, 144, 147, 143, 106, 28, 139, 162, 159, + 154, 146, 140, 147, 150, 147, 138, 99, 18, 132, 159, 132, 147, 140, 142, 143, + 148, 148, 134, 97, 16, 153, 182, 153, 148, 158, 154, 150, 110, 132, 128, 127, + 128, 140, 159, 143, 140, 144, 147, 147, 142, 147, 148, 127, 124, 134, 132, 118, + 126, 134, 131, 155, 150, 143, 96, 41, 108, 169, 155, 148, 153, 131, 143, 140, + 118, 112, 88, 69, 126, 161, 171, 178, 173, 173, 170, 171, 162, 158, 140, 122, + 30, 158, 183, 191, 181, 185, 179, 148, 143, 144, 134, 127, 163, 163, 159, 120, + 124, 158, 158, 123, 127, 128, 153, 91, 0, 135, 181, 167, 165, 163, 158, 163, + 161, 162, 161, 89, 2, 147, 159, 166, 169, 174, 169, 170, 162, 104, 122, 28, + 167, 142, 166, 171, 170, 166, 147, 161, 167, 162, 136, 136, 99, 79, 124, 138, + 132, 138, 134, 135, 134, 130, 119, 92, 64, 81, 126, 166, 173, 179, 171, 167, + 150, 150, 135, 147, 155, 127, 130, 140, 178, 154, 112, 92, 61, 75, 87, 65, + 85, 22, 0, 0, 42, 49, 56, 51, 29, 32, 4, 24, 22, 26, 8, 2, + 69, 89, 73, 65, 63, 65, 71, 81, 75, 41, 25, 6, 67, 71, 83, 96, + 75, 87, 73, 71, 52, 49, 22, 2, 69, 96, 69, 69, 55, 59, 63, 56, + 44, 46, 29, 9, 115, 85, 80, 48, 59, 59, 61, 64, 45, 69, 81, 76, + 55, 53, 64, 64, 65, 46, 42, 67, 49, 52, 81, 57, 103, 87, 93, 88, + 75, 83, 80, 83, 79, 67, 71, 53, 96, 119, 102, 84, 95, 91, 89, 95, + 89, 83, 45, 1, 85, 100, 127, 83, 72, 88, 63, 80, 64, 56, 36, 21, + 88, 107, 95, 102, 102, 91, 87, 91, 88, 84, 48, 0, 100, 128, 75, 84, + 91, 91, 83, 107, 84, 89, 45, 0, 104, 76, 85, 84, 81, 84, 83, 85, + 83, 63, 30, 102, 103, 99, 85, 73, 92, 99, 88, 80, 93, 81, 93, 76, + 52, 112, 126, 112, 92, 85, 91, 106, 107, 68, 65, 138, 166, 114, 79, 118, + 123, 142, 162, 187, 199, 208, 210, 209, 210, 217, 201, 178, 155, 127, 138, 135, + 120, 99, 63, 34, 24, 25, 22, 21, 22, 20, 25, 34, 45, 42, 48, 46, + 79, 120, 132, 132, 131, 126, 122, 126, 128, 107, 104, 80, 128, 126, 106, 108, + 118, 119, 116, 108, 81, 102, 49, 76, 119, 115, 108, 108, 106, 99, 104, 107, + 87, 72, 14, 150, 148, 144, 126, 119, 119, 116, 106, 106, 106, 118, 108, 12, + 142, 127, 122, 123, 132, 127, 124, 132, 122, 120, 103, 60, 104, 151, 132, 122, + 119, 114, 114, 123, 118, 79, 55, 118, 124, 120, 116, 115, 123, 130, 115, 114, + 104, 99, 89, 25, 140, 124, 127, 131, 143, 136, 124, 119, 112, 102, 72, 123, + 159, 143, 135, 144, 135, 123, 115, 122, 97, 84, 0, 106, 139, 132, 122, 115, + 122, 131, 131, 142, 120, 77, 18, 127, 151, 131, 127, 107, 119, 123, 128, 115, + 92, 95, 84, 6, 150, 128, 147, 135, 138, 130, 127, 132, 128, 144, 124, 80, + 22, 146, 153, 135, 131, 128, 127, 127, 132, 92, 106, 10, 130, 158, 157, 151, + 138, 153, 151, 146, 131, 131, 99, 18, 143, 161, 148, 144, 140, 130, 128, 126, + 126, 120, 96, 16, 130, 153, 146, 148, 146, 132, 139, 138, 143, 142, 99, 22, + 143, 170, 171, 170, 162, 154, 132, 161, 127, 119, 108, 114, 147, 158, 167, 142, + 148, 153, 153, 147, 139, 146, 146, 127, 87, 154, 165, 155, 155, 144, 143, 143, + 138, 106, 38, 107, 167, 157, 154, 150, 144, 150, 143, 146, 118, 92, 73, 135, + 174, 169, 166, 165, 165, 166, 165, 169, 170, 124, 135, 24, 153, 178, 190, 187, + 185, 167, 167, 185, 182, 179, 175, 114, 104, 161, 165, 151, 147, 143, 144, 139, + 143, 144, 93, 32, 174, 177, 163, 167, 162, 167, 169, 167, 161, 161, 93, 0, + 143, 159, 163, 159, 157, 158, 154, 162, 120, 124, 30, 178, 153, 142, 167, 161, + 159, 159, 163, 151, 144, 150, 139, 75, 102, 135, 136, 134, 130, 128, 130, 128, + 132, 119, 84, 55, 116, 186, 191, 179, 178, 177, 153, 169, 161, 146, 147, 130, + 122, 183, 195, 206, 209, 30, 37, 79, 65, 24, 48, 81, 21, 0, 0, 36, + 65, 51, 20, 20, 29, 29, 17, 0, 22, 5, 2, 53, 93, 69, 76, 65, + 60, 59, 61, 81, 44, 28, 12, 38, 76, 75, 55, 67, 83, 79, 45, 45, + 49, 21, 2, 89, 91, 89, 67, 75, 77, 61, 75, 51, 67, 33, 2, 108, + 92, 79, 48, 40, 49, 67, 60, 63, 59, 53, 59, 49, 81, 57, 56, 69, + 63, 65, 64, 61, 49, 44, 32, 103, 89, 91, 84, 69, 72, 64, 61, 81, + 72, 63, 53, 114, 115, 85, 77, 73, 83, 88, 80, 79, 97, 41, 0, 89, + 107, 111, 67, 73, 87, 80, 96, 95, 77, 38, 6, 106, 106, 110, 92, 104, + 97, 88, 91, 87, 71, 49, 0, 95, 122, 73, 87, 81, 97, 100, 103, 88, + 72, 45, 0, 104, 85, 88, 93, 91, 81, 83, 81, 87, 68, 29, 102, 97, + 89, 93, 100, 96, 85, 89, 88, 81, 80, 69, 46, 68, 119, 118, 111, 87, + 91, 93, 83, 104, 71, 60, 120, 166, 115, 75, 87, 104, 116, 123, 131, 155, + 167, 177, 174, 170, 166, 146, 132, 132, 126, 107, 84, 52, 36, 24, 21, 20, + 20, 26, 17, 20, 34, 34, 41, 44, 52, 48, 42, 83, 136, 138, 135, 116, + 122, 111, 110, 99, 97, 68, 112, 134, 106, 110, 127, 111, 107, 103, 108, 87, + 100, 60, 63, 119, 116, 108, 120, 102, 111, 106, 106, 93, 71, 12, 100, 143, + 130, 134, 144, 127, 122, 118, 107, 104, 108, 69, 16, 102, 120, 126, 132, 126, + 124, 115, 118, 119, 103, 93, 61, 111, 147, 122, 119, 130, 138, 135, 123, 110, + 81, 41, 116, 132, 124, 118, 116, 112, 126, 120, 106, 102, 96, 88, 5, 119, + 119, 130, 116, 135, 144, 138, 119, 115, 93, 53, 120, 161, 143, 140, 142, 134, + 119, 119, 111, 104, 92, 2, 122, 144, 144, 114, 124, 128, 124, 136, 134, 131, + 81, 17, 131, 151, 128, 124, 120, 122, 116, 106, 115, 96, 89, 88, 5, 114, + 128, 106, 138, 139, 132, 132, 130, 130, 126, 122, 89, 21, 132, 146, 128, 127, + 138, 140, 138, 132, 112, 108, 2, 139, 161, 146, 146, 146, 138, 135, 131, 124, + 127, 99, 8, 138, 161, 148, 136, 143, 128, 126, 128, 126, 127, 99, 13, 128, + 154, 154, 146, 155, 154, 153, 142, 143, 118, 102, 20, 138, 169, 174, 169, 171, + 163, 173, 174, 169, 162, 106, 143, 169, 155, 142, 135, 142, 142, 140, 123, 127, + 134, 118, 77, 96, 170, 167, 142, 153, 153, 157, 136, 138, 114, 51, 107, 163, + 155, 150, 158, 157, 151, 150, 147, 124, 99, 72, 136, 177, 169, 163, 165, 170, + 170, 163, 162, 167, 123, 136, 9, 150, 175, 179, 186, 189, 166, 169, 177, 179, + 175, 171, 106, 140, 170, 159, 140, 151, 139, 144, 138, 140, 143, 95, 0, 127, + 171, 166, 165, 157, 163, 162, 167, 167, 155, 96, 0, 154, 159, 155, 163, 161, + 159, 154, 162, 158, 130, 32, 177, 140, 148, 170, 161, 167, 161, 155, 155, 147, + 148, 144, 71, 81, 136, 138, 131, 132, 134, 131, 126, 132, 124, 91, 55, 161, + 190, 177, 173, 174, 139, 162, 177, 169, 155, 154, 102, 127, 189, 206, 187, 163, + 72, 72, 83, 26, 40, 48, 68, 16, 0, 1, 33, 63, 52, 6, 16, 18, + 36, 1, 0, 29, 1, 1, 44, 83, 72, 65, 77, 85, 59, 56, 67, 46, + 29, 8, 77, 87, 75, 55, 61, 76, 77, 49, 46, 49, 22, 2, 76, 89, + 61, 73, 76, 65, 71, 64, 52, 52, 32, 4, 106, 81, 76, 45, 48, 48, + 71, 64, 63, 55, 45, 64, 73, 72, 77, 72, 48, 52, 63, 49, 53, 61, + 65, 28, 100, 100, 89, 69, 72, 63, 81, 61, 73, 69, 67, 57, 111, 112, + 68, 68, 73, 77, 63, 76, 77, 76, 42, 1, 89, 103, 119, 79, 88, 72, + 63, 64, 89, 55, 38, 0, 93, 97, 116, 96, 104, 92, 91, 88, 71, 80, + 49, 0, 107, 120, 83, 96, 93, 93, 84, 100, 95, 83, 45, 0, 96, 96, + 88, 88, 87, 83, 83, 81, 83, 65, 33, 65, 85, 104, 92, 80, 96, 85, + 84, 89, 84, 77, 68, 41, 96, 120, 115, 106, 97, 84, 89, 95, 108, 80, + 59, 111, 166, 127, 95, 67, 69, 69, 76, 95, 115, 119, 123, 127, 123, 122, + 119, 93, 71, 51, 37, 28, 25, 25, 21, 18, 21, 25, 18, 36, 40, 41, + 42, 48, 51, 52, 52, 44, 76, 130, 120, 110, 95, 108, 111, 110, 97, 79, + 68, 118, 127, 106, 119, 111, 112, 97, 96, 114, 99, 103, 65, 53, 110, 115, + 106, 104, 107, 103, 97, 100, 83, 73, 9, 103, 142, 139, 148, 131, 99, 97, + 108, 99, 114, 115, 73, 13, 110, 130, 124, 128, 114, 118, 118, 119, 106, 106, + 96, 57, 111, 151, 130, 116, 118, 112, 110, 127, 111, 80, 42, 100, 132, 124, + 128, 124, 114, 120, 108, 103, 104, 92, 87, 4, 110, 128, 130, 116, 130, 140, + 136, 115, 103, 93, 53, 122, 163, 131, 132, 123, 132, 119, 122, 106, 110, 88, + 5, 136, 143, 138, 115, 122, 130, 132, 127, 132, 126, 85, 12, 143, 153, 127, + 120, 120, 107, 119, 119, 100, 99, 96, 83, 2, 122, 155, 143, 140, 136, 132, + 127, 136, 130, 132, 122, 81, 13, 132, 148, 127, 130, 128, 128, 124, 131, 95, + 104, 2, 138, 158, 138, 147, 136, 131, 134, 124, 130, 106, 99, 22, 147, 159, + 144, 135, 127, 132, 123, 123, 115, 128, 97, 12, 128, 151, 154, 140, 139, 143, + 138, 138, 142, 124, 104, 13, 147, 177, 171, 179, 163, 169, 163, 167, 162, 158, + 75, 143, 161, 155, 148, 143, 138, 138, 135, 134, 135, 119, 128, 75, 148, 175, + 174, 140, 159, 148, 150, 135, 135, 120, 60, 107, 169, 159, 155, 157, 159, 148, + 148, 150, 144, 95, 51, 123, 173, 161, 155, 155, 158, 161, 158, 150, 170, 138, + 136, 12, 162, 179, 178, 186, 181, 171, 166, 166, 185, 173, 170, 95, 143, 173, + 154, 142, 146, 135, 132, 138, 134, 140, 99, 0, 132, 174, 163, 161, 161, 162, + 161, 153, 161, 146, 106, 0, 144, 157, 162, 162, 167, 163, 155, 158, 130, 131, + 40, 179, 146, 150, 171, 158, 171, 157, 155, 161, 150, 148, 134, 65, 104, 138, + 136, 124, 126, 120, 119, 119, 130, 114, 75, 89, 163, 189, 170, 169, 174, 150, + 147, 159, 144, 143, 144, 95, 161, 195, 197, 163, 163, 80, 83, 22, 30, 45, + 34, 60, 34, 2, 0, 37, 68, 53, 10, 8, 16, 29, 1, 0, 24, 2, + 1, 40, 89, 76, 71, 52, 68, 72, 57, 60, 61, 33, 10, 75, 76, 73, + 65, 44, 49, 60, 44, 46, 45, 21, 1, 76, 92, 65, 67, 67, 64, 77, + 68, 53, 56, 34, 5, 110, 93, 72, 44, 45, 48, 48, 53, 65, 60, 42, + 84, 85, 72, 71, 49, 49, 73, 83, 49, 71, 67, 71, 41, 111, 84, 69, + 64, 71, 60, 81, 59, 80, 67, 56, 60, 115, 103, 68, 76, 60, 73, 80, + 96, 75, 75, 46, 0, 85, 106, 119, 77, 77, 75, 65, 64, 99, 53, 41, + 5, 100, 112, 99, 87, 99, 81, 81, 88, 72, 83, 51, 1, 103, 126, 83, + 81, 91, 89, 93, 100, 93, 77, 46, 0, 99, 89, 89, 96, 83, 83, 85, + 79, 75, 65, 36, 67, 88, 93, 91, 89, 96, 85, 77, 81, 76, 83, 72, + 34, 97, 120, 118, 92, 100, 81, 92, 103, 93, 87, 56, 102, 163, 135, 106, + 87, 69, 59, 53, 53, 48, 48, 46, 48, 51, 45, 41, 37, 30, 30, 28, + 26, 22, 22, 21, 25, 14, 24, 41, 48, 55, 56, 55, 52, 51, 53, 55, + 44, 77, 135, 111, 115, 115, 111, 102, 122, 110, 96, 51, 112, 128, 106, 123, + 104, 95, 95, 93, 110, 102, 102, 69, 37, 111, 122, 124, 120, 119, 114, 107, + 99, 88, 73, 2, 103, 135, 124, 139, 99, 93, 106, 108, 100, 104, 110, 100, + 8, 142, 135, 114, 136, 118, 107, 106, 108, 106, 120, 100, 56, 118, 142, 126, + 124, 112, 112, 107, 120, 115, 83, 46, 99, 130, 142, 151, 120, 110, 104, 106, + 104, 108, 102, 83, 0, 153, 123, 124, 116, 128, 126, 136, 116, 104, 99, 51, + 122, 162, 143, 138, 120, 130, 118, 119, 103, 115, 97, 0, 146, 143, 144, 116, + 120, 120, 136, 136, 135, 131, 85, 16, 142, 155, 128, 120, 116, 107, 104, 122, + 97, 103, 97, 91, 4, 165, 163, 142, 147, 123, 132, 143, 124, 122, 134, 122, + 87, 10, 139, 148, 127, 127, 128, 158, 134, 136, 95, 106, 1, 139, 159, 139, + 144, 131, 136, 126, 124, 127, 132, 103, 30, 143, 158, 134, 143, 127, 126, 128, + 127, 120, 134, 100, 9, 131, 154, 147, 138, 139, 143, 155, 140, 138, 135, 106, + 10, 148, 182, 171, 173, 163, 159, 161, 162, 163, 151, 71, 146, 169, 148, 162, + 153, 143, 139, 135, 127, 130, 122, 128, 65, 150, 170, 166, 143, 162, 159, 134, + 140, 118, 106, 56, 110, 170, 151, 154, 155, 143, 142, 139, 144, 148, 97, 61, + 128, 173, 169, 158, 151, 151, 144, 153, 155, 167, 146, 132, 12, 166, 186, 185, + 183, 166, 165, 166, 166, 182, 166, 170, 87, 147, 171, 155, 136, 144, 136, 132, + 139, 142, 143, 97, 0, 148, 171, 166, 163, 159, 165, 162, 165, 155, 147, 100, + 1, 153, 158, 158, 154, 157, 169, 158, 161, 138, 130, 48, 170, 153, 153, 140, + 134, 175, 155, 151, 154, 158, 138, 135, 61, 104, 122, 134, 132, 140, 135, 135, + 126, 128, 108, 68, 108, 182, 186, 169, 170, 167, 150, 165, 165, 146, 146, 142, + 92, 159, 195, 173, 175, 174, 81, 65, 20, 34, 42, 29, 60, 14, 0, 0, + 24, 60, 44, 12, 20, 8, 37, 1, 17, 34, 4, 0, 20, 71, 83, 65, + 71, 65, 51, 46, 60, 67, 26, 12, 52, 81, 55, 67, 72, 52, 65, 48, + 45, 59, 24, 2, 76, 89, 52, 55, 85, 64, 59, 49, 44, 46, 34, 2, + 107, 92, 87, 46, 49, 45, 49, 48, 63, 59, 42, 89, 80, 73, 52, 48, + 60, 99, 49, 52, 52, 65, 84, 38, 99, 77, 75, 72, 68, 63, 88, 59, + 72, 64, 37, 65, 116, 116, 69, 103, 67, 67, 81, 102, 72, 71, 52, 0, + 84, 99, 107, 76, 85, 72, 67, 61, 95, 57, 42, 13, 96, 112, 92, 92, + 83, 79, 104, 88, 79, 75, 53, 0, 100, 127, 73, 93, 91, 85, 88, 107, + 84, 76, 46, 0, 95, 88, 92, 87, 75, 80, 81, 80, 85, 63, 37, 65, + 103, 75, 88, 91, 100, 87, 96, 93, 65, 88, 63, 30, 108, 127, 115, 102, + 99, 80, 83, 103, 89, 88, 56, 95, 157, 140, 116, 106, 93, 84, 61, 52, + 48, 44, 41, 40, 37, 36, 34, 32, 30, 28, 26, 26, 25, 26, 26, 12, + 22, 42, 57, 61, 57, 64, 65, 65, 68, 57, 59, 52, 72, 144, 116, 104, + 118, 112, 111, 107, 107, 102, 42, 114, 120, 106, 106, 106, 95, 111, 102, 100, + 100, 106, 72, 32, 96, 119, 126, 108, 104, 100, 103, 99, 89, 75, 10, 115, + 134, 127, 134, 95, 96, 115, 99, 100, 112, 116, 106, 8, 138, 128, 116, 135, + 111, 110, 111, 102, 100, 119, 97, 45, 112, 155, 123, 115, 116, 116, 111, 123, + 114, 84, 52, 91, 138, 140, 122, 111, 120, 104, 119, 116, 114, 102, 92, 17, + 147, 115, 131, 112, 126, 110, 146, 114, 106, 96, 51, 123, 161, 135, 140, 124, + 124, 127, 107, 104, 103, 93, 0, 126, 142, 143, 115, 128, 116, 124, 127, 138, + 118, 87, 10, 139, 155, 131, 126, 118, 116, 115, 119, 103, 95, 103, 89, 2, + 158, 170, 139, 142, 124, 135, 131, 135, 120, 124, 119, 88, 14, 134, 155, 130, + 131, 146, 147, 136, 128, 97, 106, 10, 143, 159, 131, 138, 126, 126, 127, 132, + 127, 131, 106, 13, 143, 159, 143, 144, 138, 142, 139, 140, 122, 135, 104, 6, + 136, 148, 143, 143, 162, 139, 135, 138, 142, 143, 111, 18, 179, 179, 173, 167, + 162, 171, 161, 163, 162, 158, 77, 151, 159, 161, 153, 159, 148, 138, 138, 127, + 128, 122, 123, 59, 157, 175, 163, 140, 153, 147, 136, 134, 139, 111, 60, 112, + 173, 150, 147, 143, 139, 136, 138, 143, 143, 100, 89, 126, 173, 173, 157, 150, + 139, 161, 151, 144, 165, 142, 135, 10, 162, 185, 182, 181, 169, 165, 163, 167, + 171, 167, 166, 83, 154, 175, 150, 138, 135, 131, 130, 138, 128, 150, 102, 22, + 170, 175, 163, 162, 165, 162, 157, 163, 155, 148, 108, 0, 161, 163, 158, 159, + 158, 157, 159, 161, 132, 138, 55, 155, 157, 147, 166, 158, 174, 153, 153, 162, + 159, 143, 128, 46, 110, 128, 122, 126, 124, 131, 130, 120, 130, 97, 65, 114, + 191, 178, 167, 169, 163, 165, 167, 185, 158, 155, 142, 83, 169, 194, 171, 179, + 181, 87, 26, 16, 40, 30, 25, 81, 12, 0, 0, 26, 42, 55, 14, 38, + 12, 28, 1, 5, 21, 6, 2, 28, 61, 83, 80, 77, 48, 81, 59, 56, + 73, 28, 12, 29, 81, 79, 55, 55, 56, 41, 56, 51, 46, 25, 1, 87, + 99, 55, 55, 52, 64, 69, 45, 45, 49, 34, 1, 107, 93, 83, 46, 42, + 44, 69, 51, 51, 55, 38, 92, 65, 55, 48, 57, 92, 55, 52, 59, 65, + 53, 65, 21, 102, 83, 65, 68, 59, 61, 91, 56, 71, 61, 44, 80, 118, + 102, 73, 100, 72, 63, 73, 106, 69, 67, 51, 0, 83, 87, 118, 75, 73, + 63, 68, 63, 110, 69, 52, 5, 99, 115, 85, 85, 77, 77, 103, 83, 77, + 69, 56, 0, 88, 126, 85, 81, 83, 84, 81, 106, 77, 76, 45, 0, 103, + 77, 85, 77, 75, 75, 80, 77, 79, 65, 38, 32, 67, 112, 89, 83, 68, + 81, 69, 71, 69, 91, 67, 28, 120, 123, 120, 89, 107, 83, 81, 102, 83, + 85, 60, 83, 144, 138, 140, 108, 103, 92, 80, 67, 63, 52, 48, 42, 38, + 38, 36, 38, 36, 40, 36, 36, 34, 30, 40, 10, 40, 61, 63, 61, 79, + 76, 83, 88, 87, 60, 59, 44, 71, 150, 115, 126, 92, 118, 126, 93, 104, + 99, 44, 107, 120, 107, 110, 99, 95, 119, 102, 103, 99, 110, 76, 36, 100, + 118, 119, 108, 100, 102, 103, 102, 88, 75, 8, 118, 131, 124, 146, 93, 96, + 106, 96, 100, 102, 107, 73, 8, 102, 124, 108, 143, 115, 114, 110, 103, 104, + 122, 99, 40, 111, 155, 118, 115, 118, 111, 119, 110, 108, 87, 49, 103, 136, + 144, 111, 111, 104, 115, 112, 106, 103, 99, 91, 2, 131, 119, 126, 111, 131, + 108, 134, 114, 104, 93, 32, 118, 161, 139, 143, 124, 122, 114, 112, 108, 107, + 92, 0, 131, 135, 154, 112, 119, 118, 118, 126, 140, 123, 88, 8, 142, 159, + 132, 135, 114, 122, 112, 127, 104, 93, 100, 92, 0, 130, 139, 116, 151, 124, + 134, 124, 134, 120, 126, 118, 88, 12, 139, 159, 130, 126, 146, 132, 132, 130, + 114, 110, 0, 142, 154, 139, 124, 123, 126, 122, 144, 128, 139, 110, 5, 130, + 158, 153, 135, 139, 135, 132, 130, 119, 139, 107, 6, 134, 150, 140, 157, 165, + 150, 135, 138, 139, 131, 112, 13, 161, 174, 178, 163, 161, 174, 159, 159, 158, + 159, 71, 158, 169, 147, 155, 153, 147, 131, 151, 128, 127, 131, 122, 53, 159, + 171, 142, 162, 134, 136, 143, 138, 139, 122, 76, 84, 167, 148, 143, 142, 132, + 143, 126, 143, 146, 108, 68, 122, 169, 177, 155, 142, 138, 165, 151, 143, 171, + 135, 139, 6, 166, 186, 178, 165, 163, 161, 169, 181, 171, 161, 170, 67, 157, + 170, 161, 136, 135, 126, 132, 139, 138, 139, 107, 0, 136, 171, 155, 155, 155, + 161, 157, 165, 147, 165, 107, 0, 153, 161, 158, 155, 151, 159, 158, 157, 153, + 148, 60, 102, 182, 147, 153, 154, 169, 153, 150, 161, 166, 143, 123, 36, 111, + 126, 123, 123, 122, 124, 122, 119, 131, 96, 59, 123, 183, 170, 163, 169, 155, + 167, 154, 181, 167, 165, 142, 71, 170, 197, 173, 182, 167, 87, 21, 24, 29, + 33, 24, 83, 12, 0, 0, 16, 33, 63, 8, 48, 8, 22, 0, 12, 5, + 10, 1, 10, 51, 89, 85, 89, 44, 77, 95, 38, 81, 25, 13, 12, 95, + 85, 42, 41, 44, 60, 60, 44, 44, 25, 1, 91, 102, 57, 46, 51, 51, + 46, 46, 45, 49, 36, 1, 107, 95, 93, 46, 45, 46, 51, 52, 49, 48, + 33, 97, 59, 51, 46, 93, 69, 48, 53, 56, 67, 57, 52, 18, 88, 85, + 63, 57, 57, 61, 102, 55, 67, 60, 41, 91, 122, 108, 69, 103, 59, 68, + 73, 108, 68, 68, 55, 0, 75, 83, 118, 63, 77, 63, 72, 63, 131, 57, + 49, 0, 110, 115, 81, 83, 75, 75, 111, 79, 73, 71, 55, 0, 80, 124, + 80, 81, 77, 75, 83, 118, 81, 81, 48, 0, 91, 83, 81, 73, 72, 83, + 76, 77, 72, 60, 41, 38, 67, 115, 115, 69, 83, 75, 64, 69, 65, 107, + 64, 24, 116, 127, 131, 92, 114, 112, 79, 95, 84, 77, 59, 77, 131, 140, + 131, 128, 107, 97, 89, 83, 75, 65, 52, 52, 51, 48, 46, 46, 34, 37, + 36, 33, 30, 30, 45, 8, 42, 65, 55, 77, 71, 71, 89, 107, 104, 81, + 59, 53, 63, 153, 110, 131, 93, 124, 108, 97, 102, 87, 37, 110, 116, 104, + 108, 99, 96, 128, 97, 104, 96, 123, 83, 40, 102, 112, 100, 102, 103, 103, + 97, 104, 89, 72, 1, 120, 120, 120, 158, 93, 95, 100, 95, 102, 100, 112, + 84, 4, 110, 128, 110, 143, 112, 114, 106, 104, 99, 130, 92, 33, 114, 165, + 115, 116, 115, 108, 106, 107, 106, 87, 55, 91, 139, 118, 111, 108, 108, 107, + 110, 114, 107, 96, 89, 2, 144, 119, 122, 110, 140, 107, 146, 108, 100, 87, + 30, 115, 161, 130, 148, 118, 118, 119, 108, 100, 112, 97, 1, 148, 135, 146, + 111, 122, 139, 140, 126, 147, 127, 92, 5, 155, 166, 135, 135, 112, 116, 115, + 138, 116, 91, 104, 92, 0, 134, 158, 138, 151, 124, 130, 127, 142, 116, 130, + 119, 93, 6, 143, 154, 130, 128, 150, 128, 136, 128, 103, 110, 0, 146, 163, + 136, 123, 128, 114, 120, 150, 130, 111, 107, 4, 131, 157, 161, 135, 134, 131, + 127, 114, 118, 150, 108, 5, 132, 146, 142, 157, 173, 136, 135, 138, 140, 146, + 119, 8, 166, 182, 182, 163, 155, 178, 155, 155, 155, 155, 44, 165, 167, 162, + 147, 163, 147, 134, 143, 124, 127, 120, 126, 38, 167, 171, 143, 169, 131, 142, + 139, 138, 138, 122, 84, 71, 169, 148, 143, 132, 154, 143, 128, 143, 139, 107, + 72, 96, 144, 182, 154, 144, 134, 159, 147, 138, 165, 144, 132, 6, 169, 189, + 179, 161, 161, 161, 166, 181, 169, 163, 169, 52, 162, 170, 162, 134, 130, 123, + 131, 131, 131, 135, 114, 0, 131, 171, 146, 147, 146, 155, 157, 171, 147, 150, + 115, 0, 150, 159, 161, 155, 151, 153, 154, 161, 157, 135, 104, 68, 182, 162, + 151, 159, 167, 155, 147, 161, 151, 153, 118, 29, 102, 127, 128, 140, 116, 124, + 116, 119, 131, 89, 48, 127, 186, 165, 163, 170, 153, 170, 162, 175, 154, 157, + 146, 56, 182, 194, 167, 167, 166 }; diff --git a/examples/img/logo.bmp b/examples/img/logo.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4b21da3965d391489a4182fb7e799c9c3f1dc5b0 GIT binary patch literal 90534 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�|K8zQTYLvtnJ)hI&wb?v&;0N#^gP;^Y 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⪙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%0D@nG+{Aj*fN>ZEhOg(z0#e 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∓>sQz5}xm5=p=9LCry8L@i(-%(tXHM-) zi{cp)BXyWa5uzt~IB6hJ0FwwA5DQww{63xPiOoD>(vKOny>c-Gu{KUP z&PnM(1|*MR<`l`ps6G)73K$LZ$6Vf};1GCP(l%}KtY4?uxIq&1fo;q73ZX1@)7HFA z8xC`s7gVA{YEcztomw70?SDEk_rp8wOM6Z|%C0(H(s+q4$Lgd|i$t2FRaRQ12i>w$ zcHZ3>!=nV(jpXzrF`1chbyiP0epqZOD7@F3`DH#-0j!7z?glFJX zv?e^6t2TKh8VGg4UF}+ZoIZ;|tA((^Y z(9ab`i7HfKf*LSK<;Bb6Vl?r|?uw%aTjyTh9bY`#GEjE>YDVSZqn92y9I*k9Ga<^1 z&Kxk$@KVR1(9ffI{|V+WE)r`ZajlS|JS~Lhq=;tDgJ%9-HYd%whUrj8qR^1PFT09C zcjFDE;2!!|3hZS8So`Qn8Jvy6^-TavdBPj3y%f?t_{a+6Db!OE4N=|S^PC={q#Eh> z!ppZW2+3DrP9q(kxvJ{Wj{`&@K~XSYnW@M7qu#@u;yF2ig`iEH!;)T_dO^ETFtQX2 zlR0?aP?l0%lw6dX4r}7Wwu#aCZ_YRMAHCBWQ`|83y+8Z<&;Nev`TW@{hbl_VwUy@j zGD}0LjTCi{z>XoRNPmv$r~O4v@ccxs`DC)TDcdQ+51rj>kiBQX*Sj5W#^P=AjoqXD*2FXVNE2k38`GiaJEZ#L2ur`Ys zmv^t7uqmfq+A*V?2+JxF7Cs`Zl^ilE*+er}i}61rB$qZ`L=!jc+?EgTiz3=IqAruJ z)vSALGu_mw&PoLz+YOJSU7dbwr(4;F?V?`!NI===77zJW){Kt&G~-^wc(iRYFZWJ# zeEY$(qxZXi^pn5bd+y_`ngbVad~)*msk6l;$77>EHfbMXFe(j2gzZ* z#sCpsP_9Kx81WI+G9e`xM*-mQ;h+lz#)(oSWn&^0$^(3xFvgPwro7+)Gd8{zH zzcMMFt3^<}A(fM9AUT}jV)WkV#xcJ+CudDd7&x~@z6z}7@U$$d`11-bU=EVM(DL3G zMc_aBbD;he-VG|cS@W4i{k6-8>ubFf@AjElxg=-f27#}Fh6CRV87zvjT>LQT#+sl> zxoFX>gFPPU^v!Hmmlzvk4TE~sFt*ECj6iyqjDMdQ@`w}CDPbWxl00N#HHln+|B7&r z#_=>7`!+rqCA+X|=h5w3^ERx9;oPuxtuQD^wsviaQj^CO#C-TcRcP=jx!|N;T_WK0 zU%C0>$>Px1r`PU{A3WbyedJdCiMu9O!p@zMc9A?@rOZ|dDvZLzF43JN>!b9j2RSL1 zlatG$^I{x@*5oVlf<9^KQ%2U%ChtRJwlH&gc*TR<(g8`$L}+#gGp~!A{)iKI?L(#~ z!V_n$snORJ>g)2<)oJqbBu0v5tDEPji&fy}SLX?)OEIrknqcexVqA5=&h1c{kXmP3>RhTS= zvju*|vLsz89th&qXwD1b6^L6&h||O;+3HU2Z=RWbIJI!GbL8HW?WQ-#i4km457C!}#!PJoO8v2YR!$pxMkn(Ab_6O%#k zlN(qrJ=3L&bZQw6O@v(?P8ZE{Ck1n=GbbaHE6q6ta~y`Q^88zv1L^N!PPNd~Z&AH8 zc>Z0OuQuoJRhRFQoJ`99|A9FXd`OXZri$z~T7@~>i7Q?jz?|aww=k!L9UA6)5m#H5 zQd^i@lAj5fw|37D&3t{O^~ueisp8|;MqmBt$*Zp)b+;ToT~l4|sIRi`DYsH2cM$c4 zXe>0$SFgp+gGH|QFdr+6T|&fGTGT>}{Z*X%xzB=>6~O$NN4n?|5tutA3l14JprJnp z&B$S>&kT$M=1|LNm_KnSAVJIp%(H&WV=42}jHWo2RnruX>enYQ8H;aPQ5k~1am?6q5`Pn|zg zQg%E({+dbmP%du6^SfTtVbHXw<$V@ir$N;3mUr1i-A)N=FiJffrEAj)t|1JZxqZT| z7i0 zi>^t?z813e9ybIrx!p1j=E%sIxCGe|f=&Uul^c$0n}7qDUku)PV#n6P^=mV?Y%;G~ zBl_S2$=WqJaz(yK;`<;dZ`D(gPoXt%0`vQd(s6Ow%&z$Mu#_%t z{!m0_hp=o!T>T_8x1Ckg%gt`(XFP!6e2dO6%`PmgF%xRvJ znIph_#i^L22FyzmG=O=29MM~lTML-SCYWkZHnz^rJa{^Lx~1>d@cfaRT~$YKS{+Gl zt35s7gr7VuN(_>xQalID>CPO=`Fofnm<2G8HZe(ASm@GMdCv8kSl~Hej{5(CxlOzhN2E79$yhx2yN()>eCJE2){*(iN$k zA~~)3ufz!KEB3;jc(TBCEXnX7%P|dWVuANrs%<{T0FTN`cn+O1bmOxQ0S5W!?4m`x zbROkUF1a;mN8vDs(gIWBj7K%?Rt%ekP{^S|pfewLXr4H=Pwd*etlh&V#k9vXYE;`Qzo3lU2>R#*)VcrLtKx5huxibS3Som?&8vJt7Fpc znAa+vX{E4^FDnGk13}LXqGi1h9|X@| z86`Lyh1dd^qw!u=2|(}9tr{pT=+D2jnZB?ZKQ-wfp?_-DJcmtP&V9-Yd&&(*13${# z-L`Wh20WLHl6zZ%T7ox03CGWH)~^E`zLbUC{CE>uzyFTjiW) zaU?l_CZRn%3>>xdn0Um)^)Wl5h0C}ey5q$5jg_0%=Wp9+S@VH>{aV4A4}HwYe3jDk z(TA}g1vT=S$MvdOh5Two{k>DyI=g1B-s*2Se!sNgVsYIWvne`kJJZ3H#7PyIN>QFx zT%_mkcWVwil-J{Ix08J5lQIt`lzMEn`m|5vxowsMFJ)yj8>1eCCU=J>cST z3VN7D{k;5sS@F;=1JV?&8&pyLQ^(bHMXI_iX+@HxFc1-|kYs9c2C6DBxGHSUB7-$e znONkk+nZfo99L6-=GioTi3r*#Rt_5Oq zqO9h$fEAzy$y2<%R3AUxC!l2(n&&tSB|P`=(VxSe7-MFlVl6Cq&SR{ks8dlyudt$w z43t~XaOol(tDU(`6$W($7)Lo2k$^dl7jdNmSRhanGOr}Qt~BQ>nY17(cuuP>^rwN| z-{m<4bK*H9@368t;=TF}jIY2PDmpE;|KXKLdRo)UTJ z-tlao{9`kd6(K9SYW|UPsI5?D0!Cj-NPtthoGWa>{j=y$Nfb4Qf&rb%#aO z=hQyd@zITUS!F#=WvfZlZkKf0B|Q$=gx`SONv+cGha563{ur)r%H`f8VRuR*x@6(q zl28kz+x0d@)ejP)C=#AP%q3tVcdq=roluuIHFG4 z!nPx72E(n;SlZd)Fy!AC1RoTH{ne{i|NN`JeD?PHKl|-}FR0&J-q?8Z;C{for=+aS zY#q1R=CsO1t$aZ$#AxS|OfV&2&WPCXC89+~TaJOCC9UwKNrq{lw>HHatNgV^hOwZR z2JwnjgNx5nY%EGi&3m;tR}H(?=yGx>cj(9<#c@1Wp-%I+Mu)HJ8tqqTa^4q zuoVee?PAiOBXqGx%mc<@HE&@tTDZ*Xp}S6P+g!bQQ^}5P)(<~aZd@-~x5l)4SB6}U z%$BH+f+`|IjvBQMI_<@>`l|=ews%ZjzSUQAK)4ccIA1G;fmLGJ}%{GLUE$6(U@{mmhr%P;H9c+ahvb)CieqIO0TG7Tvjy| zQPdwFc=o2T6jaAx)TzOTBwAjx}HE|N^xz~U&kJ4%eE z6tO2wS+_U6wmh-6D5fUIS(oeBlZ&?8vNzXC!@LGC#~En0t}5q!tsHF zN^?{o&F`?L`Yjm$%?hDJi-!4drHZ5LO8oVB1RxBDY7`HR1w~JQ)>TxbBxiRIzI^ui zua|%P+m8pP%g^4p(l-3=r@uUY@mNJ|dTo`z26h@MJ%HSCs3IMHDXczZ01CcGcrUSI z=uC0kiB#KzOz-mkqUS|%SkSx}uZQgrJYVq00COCDg5@tDj_tIi-CU{{BzZmVhn&4|M&2Gv~YD@9~<^!>& z!DtPd^ZqE+Op5!4Fk~XmIU2AI`^`#zX!M`F{Iq4@?Povzq-XNXCvC@J+clf14aad+-8{lc%hHP5iQcN$FfjR9i~bI-eRBWxKe~d^9-2$yp5uZjnZ7;`(CkhTjEYpFf8YyIW&r!LM#L3Fx zW8uTZg1IMn%g5!yHbz(Kkhk$do4LWC zAj#aW9rZc(ZrxZE6x6V7;|a#Ds{+Pt5&I^W0kadCpMX zv6t5$j#eDMUA*tY(Mu0g5{n|XM!GqYc#$kiB`we?inNj{y<(q9ecY@)X3-yvifM?+ zOHVwmPxx4!*{Up?m6t7X(w=;v{WvnYkDWgXiwnE#3AYvCIKA7OnqaOpQ>+HumP~Nv;sW@T%{uuSFbC^Li`fjLh z+qn8-Vn?JK@;$`~5LjR`Z!9N4TYIXi3UbRHwM~uA|LE8M^Y?%HFTdaSar4Q0&DWb- zE9%SBuok5vx|V#aaNPjl(O4>kE9Ir6g?i-l5{(Fg{ILSxsVvtg>CR^disuVr=Mv2e z@kSWPpT+3ry>jpzVhe`rQP|!2#%slPPORm{z#~lKSe=8d#FJL}m_;;f7EgIJuz5VS zYo{FgDVt&3sD^pFM-AqopmXz=yFY8p4^N8JiJt=T6E2+CEt2H~RBf--fZC-`Bsy9kCnd&$awxP{s z>IvBT0``FzXJ=gW-9X&nsms$X1KW&P>O0@~KbX+ci5fN#<;}TqXaE~MD z5%ZonF6@j58RE11*w~%N?Pf$`*Fzth2@?zAeA`%&_d|9guB1iCJ112Pow)k_>Ccv4 z{?Tv$`S-r;qQ)~9PaHnJub`;2w4%#u9=Dnx=FBKWb7KCITnwbo$@r5(2GkWK$vmZ| zoY0vg%of=)m~w)&LPE3*(sx$X3nPg}e6B-VE?d%Y7S)k2jr^~@ny=i3NddEU`<6K= z+I8);L^#G_!l?5Unz=Xo#o6s=#+T(d^HV~3N?v;^WY(W6*mE%}yPmm|?_!H%xq?E4q(UdJ(#ZB`6bH2G!v@0vqq)kKkmJk` zB%F~Y+?8f@33A5-g;U!4H#-u#LX!K!a)v}zvz+p${Hhsl$+)0sRFK-dTU{Bn+sTf} zh&gu5*jS=($WvD#4=YBM>tXt}!bGbfKgw3(i7Ig_{DP1D@^n&VsV2Z2RhpuQv{IgEC`&RH zCF)3yB8K`CrEn_dCrdID1nKE2KWr`axl><#-8A*Q{z_~4*@q|YjhwzatTx5Q`=e6= z4k|Jcb3>xUD3Dx)O7_58E+CpY)tsX($1gEJMAQ}Y$^q!NFsJnv6Vs=U@aV$8a{_b9 z%>t4Wn5&sc*|I1ZXv+`PBmtX8>JuSHqcaD|_f-ep=d_?j|F19yx4&C7*x$n(Jf~s) zzLTdh{s%CpC-Es`Ir-#DSlL|^%&Fy}WSJe+lf#s_0`u?koWPuN;Hryr2j^*+*H>1S6jrtM&P~1e+xNY&;VkjY%KoPOG#-&Bvzf=iAsG(3p^*YUAI&1^ZWAV@&ofpw)r^Ye6(&UT00-5 zM4A>R`lroeY#g4qDBk()Xc6ZzKBIw^S_VrYU_N1yy@&Y|hib~9o3v>G^D%>JNF(c3 zOGm86C(%*oSYfwSk`9mcfk}N?%pQnwcUjaAWs!FTA&(7;hi2Vroqmr}bu%OTdV2c9 zl7a&c(>{y-eojhjL3(F?N@sR_XS};N#t4}OojD5P`B0+uK=`IlEZSzDwI{~a8|!Y1 z^#kU8N6t+>>Ulc#ZtnA+w~j5Jz5ejbnQN!3_MFMfyXLn8<{chYt5wowlQvn!;CY)v z)@4_8T9w@vlpNxDmqplT6Ji``z#5!C*$V38j`izp^OoT*SKpT-M*vdhuE&?9hH z2(an6i5-q0vU4KY;L*!pjlcflo4@$YKmIR6O!DDN*H4`|d#JeLQBHoR*#i3?ZVl6N z;f#d9d`>2ugS;b%0JkCOL;0DKGN0*0FtLE=xY7wN&vlYFW+h<$)}q2|G~3HM-m;F3 z)fK?<*IvtKcFPEl{e;gSV1!Qycw<}^ESHn;?XZJ~89N5Uw~sSIP}AJVX<;Ok_Bl*Z zNy8s)`=}#)3(4EmOEJxKksDF9ZcX7wAC_!bU%d8%nynj8al@~PIQP}EPei=^AAN9- z6M@+-z#J#(RA@)L>Cvk&iN4 zuAm;hItq|)C`|>*5rNy)G;MaD#>^zzzZg$#|EG2jvBo>1#@hgU?3EWN>*W`KOe^A3(VvqP@3ecz}8>sL}s`z|;A`LF-)zyH_Y7aur&>ehoZCodhVXuK4i+^jJS>hw<)k|~84 z{qwwBGAk9#$OMxj4tjO^c>$sjtdj4;%&Fi+2|^SxAB4gGFYSicaFv^t%UaPJvkcNY zw3KIB`A_0vKDAlUmcP)c-&u^W3|ia;NCU6t!L>fY4xJaVW(ARRT;`&b`%*1#-?{F= zmLQzr;<=_BHbjp6IoF*j~jL`0~_vroR|;JeA+br?&Gd!hc0wxCf6DTW?uv^lgrs7=N-|CPUxlQP0Gt=^%gcuoR!NfD$Mr|3wUB1VT2 zWq>*C=-El4^i*j=imYf)dh^)GgVCo)Kk2Kx@c7i-u`~BZqGEHSoQ||uH>`;yIMFL1 zbN$FjBrq4Pq_Vh(O_4@A-I>G9LW|@uoKqn!WCH~P6=7LKxE4L{NlgjCWDcu2iwNdw zCf%F^)Q4&zXb_mgPl9a}gx)prD7rZ(E96$=aA7H=3u-x835ukws#pr?06Ss(ff}N* ztQ3`Vi+83AWTrcFip&Jdbge2U-tWR3AEbWw+q6ddlkrv*S1Fj6lQAU%e8~RTKv5Qd zpdt?ce3ZwMhWSd`Icej|NCa+4aYbA2?C|V2_lMs0z4+-@fBnx>Uwyyr$<)UWKWW@w zQC&o)M;nS<^#zVSnCnO47QzQemriaU_~8(lg@XC<63>Zj)8zzJUy*;lAo^*%VKzoT zAJ8vE8|FPaB(5M15n)+~U;@mayL8xz2AE?xI|2i-tZmAorpA0kT}mFLauoiz8iA?9 zq=YB|s*l_C6H$&Ah1pjzjGq{FKVZM&)SkELnv(-9@ve&+-X#s^L6qrZhY=}QXA@#? zm6qHnExuV%TxHW9jd6C>ozJ>GH0V>oG2o^@L; z2VBj`F|A24E%C88y@8&Cr(bl8&dz-H;s?KK9$oAjpY7-!zH;#B$^3#Vaqhb|X^T_V zZWW<3f2ij-n?$W9ahp+uqDU_8Gzhwle9VCkn0UQAzBCdpkV?m>+6NO&kRo{5QjAz)6@R4|4Qc?8p%e*km1%0xoCtUIT((5!sm?h*dX~}WW<<&+Zh%-#EFC~gEYu? zMljal5r?@1p|X+fqR3`m_$9IAW>(ekwf3*R{`EJ%_;2SPw4eQ?88AOpbMR73N}I{n zuhC8@WYY@ij8rrymrRKTxX#MNQ!)``A2@38h=KGi^yH9P=5QFQ5tIAjA<`UfnFRrJo*%iu zXU{>I$7tvFHC^Fba7=)ygk~=DMr0^-@{%it|$DAykL`uvGG9)~p} z!GqOr#7U0HpeV9Y=snCqZzwIKD6!>Rm>bB}3DhdjNu)V(CmLAqVZOq16@mGR*rJR8 zlaX5pTpy`VhU9XjE(I_=P?Na7I)O$ySq4g0RA31v5^H0rHOFxWD@kEn{o(2aisu1< z{kui!-qEx~0|MhuS-BC=z7!Z^R^91zyNh3vlT9j^W%Y=2#ot2T0&oS-aT6g=2Xw3! z(g4WKg=DtuFH784isn2C-W9qV#|P3$g%pWd>dj4_7;KUP9VLpC~7Zm4RldF2hwpE3Yi6+`RRPu`B?S+ zRLe|3%v6GLI#!3ad@hl8XFuh#Hs|NuPftB%(VViV zKaTZY^1Cl2#-2-0x>j0nwXEP`Y0kbl*QK1q*0R*jlBA}1eN(i$J6hG{Q}qNiUD2kV z1ji=<+XbiLh|7E|+I>2~f8Ou75$$=Hm~_n>Kxh7@XQHor=3d{_g-4xdZ{I(2<@%w@ zy1gkW@W$M;D_Wg$z`VmMZPM|Zb)v_5VVhpmW)K479eRF;j@7Ma(-`m3GJDlbgl-|K zrC-nQGw^#1oGu*;T6!P)cB>FIU>1?zlCd#ePUD&)HXA!H5cCHEqcevvG9&`VzirD$ zA-Racu_2C335gllG=vFIst4v#@qoL#Svw%kAji8kY!f!}Orq5X@X@#9c$61DA!MUQ zIm`i8#0ata4ttZOYZ!(XdGgnHd!EmK)0v>NAxr5+u0hc2d|3M}i$8u6w zbVL#0IWoAOYZb2y>K8gCCilOzSlNU;7`b=o?UC62zI`+%MmOCyUwlP9Y@y$o!qq* zipnJ}>u`8jI9T*>Galwv$^of#gVWfx6Pn3T|d1K9PaNC0JR4^H5~7oZl68 zbZcnE=HR@|yPX@iDK>B8Z`~5Maoz3>Yxu!Cl?;Yt>o#*}n3u;djE!$BtAE%!e7EDt zp7Rf~s!nH@o+!y_2V(T%fhZG4xhwOo zwV;=q*2hfi7njXx_P*W{-?lBW1D!cY4&_`>HibMcUcsoMpl65qNYGAu5W^aK^pa!W zA#Gi;usF%unC@zbHI~@bSt?nID7MC)SmW@diS@P}+1a|J7$N?TMpss!X9vtFo?Bp6 zTxrX5O!TZ!Wu~S&Q&W?vM*-=TX?hywz<31$6-h2Ge2GdhoDRjs3m~0}I+tfBN;6Vq zNhz|-V&CY?xj*@b|9*dD>Bz_3cL$eG-|J1xE^$~5nThTM#F$enn6ZDEz}zjNI&(hg zO?d944nv7%&W|ziqK#a?o{ho)QM8GTk6_FnJBEBF5}b%76suGG;Rt5IVW>kBW>baO z)uFf&0@uW#At&oTs}m2`CPT0IuP{gCI0f_Q!_{CokPeuG4Vn;_&hFmyT5L*_W1fBi?u0ENQYz0P}W>q)96T%v*GV4x^+U zow=UhuIF?b0CQHafeDiLs2Dv;7S1<&5VWg7qs{}#QQam^uZ7oVrI2nCqBF-N6pZEA zg@?u)`y)tX3P>(uL0};gw}^a%>d7IP6O9EhM@lW(+APH^KUo_Gn1k2|U?B;&ys$3j zcAT67=G`o^?-FT>g!ux-5I1C)7djzi0_KpQhq=sAKD#SyH^g%c@&o2DCDJg*G!0}yt|Oj>_*k^68TS86*Ly&>nWyKylX$Z;qfSW_JBi+V@4b@%QCL9$ zBtfuO_1-8^q9lqUDT*Q~c8R@;YNIlmwzJi{cGmX2*FAB3?Dgi}35QxgT_6DV;T4=A}@Z_KP18kQiKM_{q zTlNQ-gXe!A=7dJEu7uxEA|fgY^F%;OlwS@-V!Zg>>JTs<^Kp_(px6T?NRHqkL=Ke| za)Umu*UK%dv9Esd{C9r!SMX+Oyfj>Qy1(|sb$>XaQ^|vc=0YQzNcprf0dw@{DV~Gj z--UVdN19VXv&$$Jao#_MIhOhXbNH46=I~Ag$qASX(*bjkJO%UQP~}~Gb63Ixo`d9w za!$78PGZJFbmsQ125YL0G}$qhA)cvsg5=P^pi=2_XzxE1F`^;lD9N6j5V|BM>T#$L ziAwDXeQ3Ff*+ne`yP6Rg~=HQ*Ak(BuI|mBD!?+>VP>Kau4+6 zXwGrmnH-W6%SXxa2%*4%$xO7;8;ivz9)7;^?DrnM`9Icv^he+P>97CKfA?R0^N;_0 zY-X&q++7<^D%d01wkovchPEmrNRA>L)Cm_dBoNsV8`l}Lbyb-TmuWBfRRa~qCv`>Z zg^~>i|5cInxkK=rNEG5c(JUogA+YTBRQU!0nFeC6)L6TKt7_ovQZyNyie3YU~oS9FD`itiS#Chky9{ z|N1}Qnpiu0;m+j?gV&DtUJF)_=W_KjMm(bN6r4bDr{%;@CS z{ki9duRI91bvK>7S?r5wgnG{2Lv{)S(!_|2*Pvpbwg`HCnjx>@j#GP8r#~e(luL_k z&U5zg7^{4dRKA>Dvc!r%2hu;%_veI{X$?O8 zqOhTcSrdSdqT_f#+ic;5d6I}gQ^Pmb3hYs?Q1z+VmJtt2;g|*7-%KeF+7Fl~c}|4Np@{G}FTc#o z1I&ZPqLP^7WM9wa2NOe^pLb6`j-9*}KYc6QbX=)a7keCDi^yl;5T~EX;ATV%VJ8%Q zcoOD>r8(@jigffs4a23Rr(h1Ar#f?JT9Pw!V$6cJ9EwEj@+U15p=lvHbCiyM2nC+M zgL%EX>q9kq+8f*-s-wvToH*9_~g%> zyeCG+6BB(~gDv%fZ6#KRI8Su~s0+3T@u3(ep0J`_l+rMQnBrz)7J>7@c?k)Y=0G~^ zr{JK71)^<>Y}+Q^c4^k#>g}Lq#3UWEsBgF|!&N1{k;)V0C9OWs=}5(yX!(uS+DkED z+v=W(jtZX7S4$U?*4-GcvEh$Sw3=QCj1)EmP)v*!tzH%1X z$=7qUku-;2Bz`yPB1qT?Vu2K3=j7s#(4~(Y{215h&$0NAG0O@yZie}R+- zXDv+T=gH{a;f|aCh+Y8ucjA$jx6DQ8M&2DhZK3n{PnSNMoqhT82Y)cO@}{Q!{OOZD z7dy{g^+!gG&WBpdxMK29F2i~ePDR%!nXkC?7Yy>_f`ZM0 zf-MpWR*J8A3>f5MAry`Qn3+GN=RIc@yyVcHu$fyd)(VTWz+w;O=3dXvxOf2ToI6kM z*>QZ=C&xej{)Iie2lI38lM9A&G6)3=CHp=lvoCw^)y!R&GWVXzI&doMK>NWx_4{{K z?%xyKzfZSsH*eow+TL9`yLV*o-JP*>ckb?eysRAR-aU+i2LpEZt)4r*ccup?wq~FF zq@wj)&&Wccye<@o7zrg9elU4{4LjK6_(`#bOn^EJa2EVD7Whu`z_bejJ8kCloOEXfS4Z z2Xmwj6=|7(xkFAR#w^lYn=A*1p~N<*x&ZlcCK+5=;Kyu<25O{V-ni$I&+*q{%>H8fxH7e|A29vc%};T zf1HqFaMV)cY)VvB$Len1-`;rr$FF|*>leTLH$VA{f4BL~FVe^64tqsh_ zkS#T40m+l$(Zq%+V4mc;wY`d{&MMQZ7rt#nH*ek7pH@+gZ^2BIjYdD%!8dL$<5v4IDrBGO@Cx&`I= zbEo2&Q}NiLSg}eTd-bC_;h8|&cwoP{-Sd=k@NAY>&>xqRYlzuuKpVT zjY?~O*nX$VF;O3wtS>olS0s3OJx*1Bp?1it?{~`Ycr@o6np19bqs}EpNrR>(n$dGI||x>lrkiz4TwlX zV)8v938$X}?953Sd0d=3AX-u+R&zq+n8a?zW9w8|q?8+%P^n@Ip1aS*QjH^rv8gj&K zpdd$w)j6`0k}yZ&b2dH?Vx9&OpKj~Lq)?~W^?Z5Vg#)`U9^3<@ zANk&ITsxEw@%#vtG?beO8%!Ju+|Jv7Eo0aD^c`mp?SU`E@k9IC()T0|?yfwzH<-T9 zcyJGI-)=_QuG~F4bN21Y#JpwqUUpVCZQow<-n}-pzW2(_zPk?}EWKQO`CGo)BeAXv z<OQ+k16}C`a$sHTgofWR;7Ys+F7& zj9C@|^BwN7H2(~A=0tN|{|rTqKPHD4^8(`s27F%$urI|2voyrnp!IMRQK1R0uI|0nBRye83#r zph=h$L2?AllbV)@R{)Ho(36*YIVqTjyzBtL9(8nGKHEDpcX?{34OlU0`8$|{=Uy${qrse<=*dxD9qaF4F3tS_bLbKQbGMfKU6=#lA9#)~ z{eyAhdzinUs5BBZZcR8_6Rx)U!nS&V-QAIJcQh6P>B%mg7@h;;sY%PXtBF-3kUV+* zi19TM3Hsg6Jar8EPT7)FGp00+DV`@Ki`a)MZm1<-K0Ni}`L}=e=J)>XlVAMlPyYPh z|NM`C{rK&VZVcRLYz-&i_flA$CDY=dEl1%dl7e|#*n+}Fe@CV6s9)3**1S52 z4vqG*()`M=dQm9eG|{&7q%Bp!raXUJMTIdSCgf{U?hAurT_Hen#0)Yf#4Mb0q9;c* z&!UXHtRTZ3cTLT}PUsWl$|1VKE`MT?Y??(YM*g-_zT!~M+Er&n%-cTuU_3n z;F(D9bfxb~jrUlg`n*>;T;sZ1Wf~~g4V35})Otswh4-t2mpq0ZpZkW-(dT#IKP8-F z9x>}$4BEKK5H)Da9x=1~Qj0wzD(4XV*5%Kg0ahNA%twVyIl(j%) zj%hspaj<732J)?+KfK+*# zdBY^~Kz?3dLH5nO%!~VX1LnvQ8YJanHhwGfz|D;PR}StzxA&8CX`i0hxAR!q&SU9& zk7exZ%uH*^NUP315Y9R1$=Wa7zmt=;gS>xdZraYQz2Ny?YI-{B(7~KtpDOr*#`>1Y zA`tQ^>$8pWnXY6C%VjNdP>ElCGix8p-`J6^qJ(ix{Fiu zQI_&ko~f|=qNJskUF))+4q8vTIT0=|!c)~LF@;bI9CJcrsGnsXG; z4U)fuxt5uPIr~Frj+D<-gd9YPZZKa*hdm3n_><%Dg9g!|_dF+(DKJHcOc6-`0CNzy ztC5(f;MB4Ot}F>4-Gc(mp=`k*{Tz z(2Lq?{7rS$k*eCEi5G8v_N$k_{MGd9pZxGoe)XGw@R!?femKAKu(_=&9@QgbhzJ;h zKrv~_NEkCF&A|Y3To9X~&?`m=n75X}2v^lzu6%m5e9X>$QDyrqsD4JkoW5nCZYuNP zXAXxJzh1=0 zV`0~DsckA=ey7ZPD^Ps1xbT+GeaWV~?z11ao10CBgx%WUwpW|9H)_HcgGJ}uuER#l z@lfs5jnNmce%?2|HN5=l(ep1SSGEr~HpT2_%*-!yNCPq^;D$``(4Jzmx* zKW7A^6+zCVAnyU|&@3BmdDbIdE}C=r$-ohJL`Z`41;h4X0cp`FNx>WjztCYKXainb zguI-v!y*c+_ZVCQ=3qDhb1nssIH!Z1JK@F6!5$XE)h%#dTuWx_;&F?(>`uAS{=D&LJ&F@c+ulHTJbJ*w^H@O#0wso=iGlc@0cJLe@ zeoM?3(Lwe$;x=*LDi zH0qEh;u`g(QutQJd6cndIVWu`_uw;H!5bFiB^@Id>N6S{y*fH`!U&z2^MaYXS#St2 zM@aNz2BP#BYaGr585V79OwR8V0yB@B4(he@A}WrUJmA`Ah4Ii>qk+ax?|3LawMpEcf$xF}b)6N9`t6 zw_b7ED8FscoH7(SWMP}*q$)bgk1l5hA06~BwDqgh|fR#m?0dp@eP{<8OU2SJi zow_}6YIqvMO@V_OBNU6Zs9CMZL!W?Y(>Nx)x<`|f} z)HIKlftmR~3G<{_@gKk(!gAsmGzD`a3AD~dG~`4TcGeL`qKBIblgFBbH07OerH)Xr z0H@#KInF={5hHqXz`VVl=*GW0VE?cUlpKttVl1p6c~>n?NC}?5XE?E8n(Y6HQ`D5m zJb4Qs+IR>E-(w&ACr(1~8GvyN$x|>-ex48RE`&ErJEkbnSaqcF#=zR6?VmsS=^y;y zkAC$R|Lt%8rQC%Ll6h z1ND*Kcxg{nVQ<)TJ!I%9Qe7}{Z+R3G71r@G>xj=d7O;-^ZG&Fhy`X107U?T=_Z2!X z+l;qLijNh#kNN#*wwwJ$^+on`Rl%#ZRi}fc$Nd#ef%;eLU;Xs={&Ml{Z%;q};o94u zPA)!fiPcnFP2FbgB{u1%fO=a*?h}&kU<@uM4+}Ey3vxj6`|Qkn%tPbstZ8oUEEmbq z`7_L1%*-(`ALZxWqNU#z)9xv`!&?531m@?WRlNw4mQ}cy%h@Y1gW@2-2$^*GNko&d z3W_HDA%}P$!oQtIUKAi{H2EV4&muv}h!-a-mmoP20EbaY0SG*qw;#^rSo|mOjz~CK z0TEitX3kT|%S`$Ti$TN;vB=1w!<1%@mi{1b&s4#lIT&+6Rz%KSMAOcqEHKGLdIg7s zGu&PQ{pr=K|MnNZ{D1$`-~82o{2zb$pa15kzx&6xdhgyi)!nW!-;o;@4fb`RGVigpvJI+HNCtVKKc}%#mJ)l$X=H>LJ?}riM)wErgc6@T}z`pDIccQxY zesX#5zvxc;^lJK^p3L;?1^K-c(serJI*SJ1wsX|HR(NxfGDF#E_N;x1v`^5SGY{@5 z*t<7xH}NRQ%_i^N%^{Ji$|BbW#s_9Lm*4)*(ca0^x2FB&&57D0jGfuq3~GSFsp1IY zLP3X2(y0*Qs#<4%jK z$YS;zBq5U!Tl{_tB8Q07A;`{)475VX5mS|%w1DRxHQlM8Sfu%835?ANow-9vbEz3_ z4HNN021#yGyK)dBmiNthYK`chf_d@`G&v+eckP1gJXM6srNMKg5x_?iPQW}>DWn6Z zfA7Z>%#-Jy#9aM5J49e|vUz^D6Z)>HhG?8<%PoiF#M|QiQFv!uL!d}3F{NA+lU`eR zS@Hms=-!h>z?>)o=I`Dd7pa>|Y9|zTqRx16du^b(wz@h}-#f54yY-{r{)_+cZ~pt= z{`znJ|G)arfBotFu)<`4g`XFvMA z#mApF$FNIhJ*!g!<~R71TYNGKFdr6?(36jFb1)3Q&(0pArQc@|PJ=iRm}8Ts8F_?3 zB0q0TSa6+u;I5oKq7&cKi-#4Q8MsFpCCiADlQR(?zbd9Zg5rgq33qY$87^|ki(D!S zPQNLbgXarSwr~ni=*+Ql1v?iMp-yMQza@_tttXR%fOKSBj_2+J;nA@_qUR=$GV?cu z0th@7nUI%o7MZkp*mLn|>qH7h0fsO$WP<<58^SRq$iGOZCSgv3{TFs>`o)~JGpGOS z@BiU{{pe(#fohB?>Z0 z>8o_w7Kc5Xmjjo8O#vHpMLm@Y-fC2z$s|ujf;S5JE2-$MMEq7n=*jW;jY|HdO!{Mk z?pvebxlFMwl)Y7I-^f&t(zEV=Z^zSo(&uyYa+b1V5PX0pZ%DU57Vs| z$l%CN-)55V1q50eL=BEo@`rM>(T8KGa^v9c%R4{5mbT+s+9y5xKEAs5`?%;$-_x6s zb}J{VpF--VQ~J4#I|9~aTHYl_erG{uJ1ws)=YT8gfO_8!LE3KK!F{xSX{6nINqhEi zGY--A?;~d%s;jO!-`js<{L%cY-#XbhTYvIaMYOB2?igc7mLZ)Q$fsAc_{~ComsHRN zqZk$cl!|v=&FePEkC{DQRk_D`L>3%i1;_JBmofuOfO$@2BRjHmsB)Uw_L$tb&h7jx zzjm{rc0E6~M5~ykcn3c%@PD*dCa!AKb{u9mhS~K+;^rcLwT2g#ieqw7RAy|nn5tAd zKiA|SRa8juUvz5H(wrQg6RAU$vcCuOQtS;8W0qt?E=H;Z}zvFol=G-LA ziT)g8^Rgl~VD7QeIu1up-?)a({P69u_=Ua`wH&BjSg6 z>uL@{D>jYNM{4P!NqbKv?N>`iN*p7x;=8e;k*H^++mpj{!*S55T>nj3v zOUs`RFT!WzVaL_6%`bm<;qf;k{bSd=PP9oxrwLmW zk(jGca)~ogIt2xX7Gm1Npxu|t?v#grIJfZM|N4La`~UJc-dIE8$l30m{!7O$v>RM^ z)Rs}Hc9|!8snD%ZIZydg49N+nm)x9XD(zt&3;Wzp_)==Vk3Q3?MRi*kcYJ;TU7C!kg3rWa=) zD$32Y=j0hPb3_L+n0xkDUAPpn5WwB z-qlQ)`hM{BP5l*8_ambJ$2Gd6yHpo?k|_PG+Kc9V-6r0$ zh&OfYl)@Z~Lg>ulWRBS4Iesp})UZLbpkhB%u~v*iY(awjMBXvxDn`QLd`-tfA+7?x zxN9ne^$4**1eh-vHN#5LU7d6!U>UA-4plnFtK4H{_WM2rQt0|kyc=5PRH1s@tr~S` zMx2@vhxUQb_OQ}F5iIVroBN!W%NFg8U}2Zbb+WvoxwNdMs-iU-ZVs0ptxKF}?5MA- zi&u9&TzGMB>1FqW%@cjI^Ur_!vN-NTO$2hr~k3exRqb9a%lfn-l5lA3VQMvJT_qd z8IQX`CBaI4Eie5EJ!gfKj-@1QNNo$5#0fGRk#LkTN-iXbceB%a_Wp|-2R=o;BY8Hq zKC`gE)!nGAhYWp}F!Y^7KqWS~_{x z&itJpllSi2`|`UOtd}uP*=1+Uiepx1g)UU?Zj-w&aEkgEl}qG`)!fi}R_S_v)ka!qIw!hFN~|+l zp0HY;zlZq>D>}Phl=$eNai_}5tY{FlHIu9Tj9M?d+Rlxdcri6vbY;ES(c-YxXyoQB zZ;;(or){p)ypy%OZ_fV#%;Tl+V2&0&)ujXGaX&Ba@bV0-bsL^^vZg5u-P3HaUtN?i9>Jc5cAINy41-!8`FgFejRGz#Q5Y9DPE& zf+2aTGq$fse2*b1bzO8cLUEc9ZFVF zYRu9Yt*WnS=o@@=Z)W>vfAaqMAb+Eg;;_&K07Hf5Id+*OlcLC*p7h)&)t*)T|8gu9{PZfe+=qHm~KtLWY( z%mpQHSudW~NFM2BqblB*Niv4`t$?B5tDLKH&y+aEU780j&6G=fN6nkGtH-R0duGLb zr{SJczZ@x<50{Jt$s1v&ntTf?jG)Kabi?I&g`+dq|Qyp{9)~$fIiJpn^7L5sy3NQ-#`Tt76fvnpg9o zW?7SR*2HX_ej+4pmWe>&0~nseQWDX_^IQzl0dwjsmpscVK(c(Ykc?9Rm`_u40CQ|> z5)t#H9HhLBWTZXFJv3E-eIhc>QZZ)1N-4Y)l5?8^_$q8G2xFWz5p7*ShlnNFisST? zShU9?654X~>X@-Sq>|<+g$7ayiGR_w~%8z6m!hJ<8{MM}dvCIBitNOxd`dq7jtx$fY*8WhV zUCzo}&P>NRg;*LAaG!Bmp9#2FgCb0K$(gXmeab0#f$-Y_| z*umbBtK6IIPS3!-po&3?iFs8rVMHU2s)X%U`EjS_sNGqm^+(+GTIWfQ>nbn0La$uU zE!|A_E#;MM?hnjlRL)Zp8#n`n+ME>M$g5tZ##Z=stGUM0A7#2f;<*o4D`o8`sIdxq zb%@LLBrFc;YLB#Z_4b|` znN3_CZ0x=lJKm!!s?-|nUT0ykSrN2I0(QRN28=Us80yC!Xwp6rG8GikoKb~3CJs7r z+zEzb#$u9_%?gTL!?J4_;JFD)L+=AXiH1DYlM^t{Rf%$x!fXX}=E+me6vnasNo;_E zf$tWG2v?T(1rIK4{ih0ePd%ShrzbqgQ4Ha%_@Myv)O;rONSvq=MJ)Ieu8i>GN){yR zDMSO>DA1d@MC^DmU?4zLf6@#Z%=4bIvGf1h;IrQ+Q2j{;Y^kr zzA;A<@QuMvtM^EqA2ajzx;S8d>DtKL#@p$q-#&cxn@tz*oa!GN+j!D({#5(Pw&tdi zhJ?2b6;GZ2;x^}ojOTD;5pj_yA`XHRMR-Ffd|K+9N9r6WVwUa-<5ElMvySkyI^VNc z;a0KXsaN;JCWSQR87QscBEcEyZ#e9Odb5l_f@vpUI`Q8wu_k9qZrVb5I1HtAF$dt%Zo z8P)M0p!;Nhdr9pDvH(q{|XF>k=+|LwQMCZFPOPqA3<_ zt*trI+}7FBQ5s2H8kjKpFjT5A5Cn3**m^)>g4(MSZ%FZ+$zXD%+Ef}%RMio zoMz`=k+LpxsOP9TC$kUqahNw)l+y(nHzceJ+`Kc)tX>IqRLi-qVc*wrZi)+TN(=gw zlo2CuM9rEri|3Ubh|B@=bqNP%HOK&+V`cRp{B(+%191yxDGNL{Mg*ApKIBm5m=x?| z5*SA^4zXxY7^h%z4igm=TIdA^^%0Fa4O?<5jx~`z$3g1EWL`GR&Cq*;)lZf5Eh!l} zbn8O$6Df;uqk>H?4K4xDA`-q{n66+NLrhl~v>6I@noL1WkVvRWskGl&e8k|XFKLL^ z9&SE&>)M00>;1Fc=Lc(5u3=l?f!Z-e7c4V{kRU$HC&L&0saP>jV@(!NXDB#t<)a>p zWY6S^Es+oye=e3_*n;W$8-;R%NqZ$C);zye^ImfEzERM>lF}hi`PL}=O{eJ#t@2B) z?kk=Cl|=D`Bi^F2H}lCG`S}RHAX1HlY-}ODkZ>0YvY>(4Lbef)@>D>5CZuBb3PU7l zI0;H~$a7rk6qDSK*?8KX!3>zOWPs!&1zDqrilgViwSYLY=2IUEX!ut3Ku8^zATCOJ zkwH4kqMep2I;6@5p)AVamQ$HUxw(e@2W0#A73}zwv~S-h-}?=bMBIMj?2*g8*T9{X%tlk#hI0hTR@ObDUpau6ta*;UaAo%EUH$k_K4jT(HECnV;WNz z&(_VYT%?z;kt?6?c0I}puB8VbrU&N`Q304!8XgzaZQvR(XVt9mD(-(okAB4Qrx~Kc zn!}7pj2R&mrzk1p1q%iKQe*6J zd*j6`C+DVuTF^Y*N3C=d-bcR$kC52w3<&BMmzLwy zunV=^A|218=ec!Uhni(kQY~_tSwU11<}90#Oys88%hLQ z5HoY)k=X7}VIS{tp@XXNMmQEUg{wzIf!^(Wb`IhD335T_Mq#qX|zn_6^=6O~sIC5~`m1qQedT!;L;D z@SEdFpRsD&xf1P6gMYiD>Pfu#X?5XN!1&B>*tSU_M|onA!QS?TU4tHbMb3q-_o9-! zq~dK@*-mFS8trSek z1an&1xK1+THBS4@OXZG-e$$LoIp>rkDxx1d^+qAwS0>!*`yS1s3eR-NFIafP-$goO_8+KTXepN$)i_UQn=BC2SO6z6MnfGxPec z?~NB^0Ok*|AH-$AIb@DaCWhop3Zg2JAP<;>qDUr;Ie3MS;ZBjA1J7>sEuvYsj9 z`6R?N+{?}#6$x)Ud_93^%wJtvo;W)=HMIQV=FmJg`s)pTz8p(Pf3mPDH+BV~iL%;K#>mm-rAEB|5vVE#fPN4*rwu}Os18d0I&C^?XegXBn# z`$Eq8S||Rg-SCA*{*_jR!_aTES~w_T>mQLrgk?H|Lb#^$0dw{%sSv&dFl>bBE;f>$ z3h2+obmAKakBUPFY^VXzKsq|`+lTh`A4~(u#}M?1w!9$Y0VR8qkw3-6AdCEvM?;OF zljqa$f3s<|>>Rb=qJVo*t2wODv`SPlCNE5773YyGX$MvN)95>QQ1;!d8E!M7Gv)fp1?)`luQFy2&QY_2pm zRA|9-6ajN|>2Tai@*IzVd7?y97b1+!W5w?jiSMZX&Ip${*Bc%mH>3z)p}{NR(2P-wMz*mJrntYKePW z62A7vKzl=|v$3SBDb&>z=x8YJsxLm$;5(Y|!c*~BO8{`|Z1m&#j)nkU)}9Ep*7@Ia5mfJLA_~1an*7vk|NW4h5a9sD_`vws_(;c^f=3(6+Zq!M ziN^Ci1B*|-nt1Z4U=@ksCa7E zEvw}#8pR`}WKkzu#`cg!wPI1u>G%sK2~s$h%o3>eHuVxL`(xOGY59_xwWwyT7{qs& z*~sykQHzLD31`)!Q3d;Fr!KJscF7Aof*vRR8@NSuF-d0^5c95+kv86}V7rOQ>m z(L(EVu&7%pJ|^Ry)X5qYl4_N-vC!EV^i~x)yJ};FdQGL*8!ahqYG|x)X!4cUoVhmg z^vD0IfARBUw`Ui>{`ut7H)k$iKit(3wy5fqoP?C#CSt&+>#%@+K_k4R;GPpu&T#WD z@yMw20&=&Eb(~*tPC~yTXN}vG!y4g`f;}i_EEK9&iuKDL)u@by``4nH1DM0&0Ip(7 zLfWd7KF`m)^zlcx(sr$i*b996BA+$Qz^P~+&OM1@f%X(&`~f+CoRo*r!4&#)ynvQB zNy+)zQ8gM^U7s_uiH1^(zApFJ8LW z?u^{A2PaI0vjX`ni~oqh!~yF_R>lgCzs%)LlW8NFS&P`{7x13TFt#Db$ffNTD4aoW&$UB5(&k=I=eRAF? zsbGvu!s9rF{D4ZCV$i2pj2RYlibb1XGsd81l<D3{)n7IlPV0?Fl=?VV z1YJrAiRL ztq$>OLelz5LDVa#bg*0^uASqrHq|z{8>;QiVJoUBY=SRteb|tw)F#T&ldF(PQD3e} zAeo|6Q(vmBE7itJG_@ghbwEK>u{`1vM|{$lPloH5PagFttBT~69%+eN8uUm*UU{HM z5v=f3b+*@>yL4e{{mj_v;lAmn?z=~O?y~sOVz1w0))d*4K8Muj5QFML3rdbbx=%0l z>LfnByihMIGAh7)k4fg#i!BS`|TX!IU#4z?wTTLWHyxW4pgLkQSR-Y<$fntUBi{?6t= zXRE)x+27h&)QbB8hWyaIHy2@*slB1-NF!b!?5YpozVo5*CMeu-jx?5bHCD7D7^R{0 z+|@fX>z|KreLJ-J)zSXh>eJUw^*^|9d*F1>mB!{sV^djMV+bFwqY0h74<7)35!~Hc z>Wh;fIMCHpioZo$qPVrrhoCxm2%L)8dP_|>j{K~(@=a@a&2Qc;Ha;md5VnVA&ALgy zZZ@nK49j}`L$!L*pj|ZTR;&ipBcpuYq*yYm7LBr1ofIDCGeRZ~2N$)183p?h8g-*$ zfJ;Sy@|0FSty4^^#8XPq1GQ+*t$kReo%JYZU5bY`$*f5@BqjH(?+v5jxLkTnqlzn(QMJ0UxVS#xj}#Tv`2A+Fq@u_lE3Ig1Y-?)nfGqaR z_506%`ey^nU!1zTFtqWqZ+;E2&RvI(mRfWPqoP40Zj}jjANWwAhhJp# zW@wCuO!f?wIY(#D&^gl#E^3A;nr4be$ee*}Mjunz$k6;`;>jQW&aXR9-0-)YK5~2N z(!k=S?y(kktk)cvumvai>PeOuw*dS@ACRc?EF7~6@t$`NWlvHm_-Ad&m75a9x=6Mm zR&I$^uT-X2YQtwz715=OMb9y5k&2)>e<9+(hVPbK@tB-2@1*)*+c zHMe5xP|0d~XerG?e8=`0Dp--j z%<2wKw3ZdF;#G%H;zU$XRf2tcxK=T&!osMtx+zp&<86$18miohN_#wPt*fxqmYHfx z^))3rJjO!$no?tJnWd)GTwP*`g^0&!(1Z#XYb(5JRFzL3_UbAMwdIA{O0Th^$Po1C zLtbOZZ!Y$miYo)fjm?!OE}Wg-JTbD`a_vFgg~7TL*BJt}#}o88tRB0u$gcI+R7Dn* z*Q6>kD$z>0bqbe8>C&rR1|8(+PNU9h&|35wvq7!b$khrV%BYhYjY>SK#1A4qmM6*Zl4@nt2#DReR{a#+LXWUm^D-r zNi;^|_3^s;SS*rA#H(Xr?2O{q<2AM6a2P+vq7{wtSY0gKn5b^R$R=7^TT$FnS$w@d zawi^{j#n?%)y!8`E(S{^yWJ@_uZnBK8OFNtK_1-u-jVFu5v{Mh9a)c zC$+`=wPo&bz*T9Ixzqww*>L`teF%RIYBZsWYG7aFEiRPCJs%t>2w>GLP9W)(y){!$SRCfnkuRn^rqVrPhv5v)Vt& z>}RU(3C#EKM_kz;Thz}M-e!relX<-q;Vrtfmm<2$*56@i@v<8v;UH5!%u(Its0Nsd zVSx@c$TQqx>8_AfSLxbbj^!rL(Ze)%({z`}>OrC721|FBZyDxW?s1JHe8UJ|caNhP zW~*;gB=RT0&ED z$As8AuPR*B7A|Pq^K$E=(!MCOZ)l4arH)OlZ`0^~Z1v44&2t+2Bb{^0S+->KkMfOo z8R|KOV^Ql`(%aW;_HB=Q%WXqg^Fx(rM#Osr2y-|KQpEt7HOLTLr*N*4SVz*bPi0ci z<}l9XFfQgW`&hC|IqYjRaX(LclcT!H)7)SyZ*aA}JneO!wg>;-WX>xxcaO$bM-q34 zjA!ko$4$Z0o>-fqqCry{5qnE{9v{9PA z`GdwQ2dy`9z2ljM<2l9SIo{!1-(7OW19Eth9GS_loFr9FF(Y$OvoOj=$i5pNQA%>{ zM{|pg9B?(J7uHiljilmQMp>L3h|1!f+)$M63FYXlc{-yeSmq4J+`;l-X}Gj9QW1%k zR8$6o!IF}aii&WtKZqa0(Rf*9O|Uc)42J!oh%XQhl~sHFmBqm-zrP|7sPy~8fk0Jh zX>~9d!SjXQO1rzn?yYe6!|qVj8LDUl^na#b#Jq}d#14MmaVQ^;cYYc8a*ZL z7I&4csM1kXVJ|GVdCKhWQk$#9?kYD~gC<8A{?y>8G&&>h(pGQfVOyw0W(`X%l?G3Z z#g}k}n$1Nu7H_TA5k}!c@2m)^J$_~2 z#I?IeF5PZDeJ#>_IuPqD47XRcoOhHpgd5KUW5;URu9nxGjy0Thmo#}wTk&LB-3ec` ztD^a=r?Smn(pnfktasOH91)qR%pR;Ss%-X@H|Yv%1o{%8p;TcH^K~Jqv6O*t62%FI z)IpcnIZ78#?NQmw44$ygjn7}Ia)!08Dw(+iA6sD#NladQpjxDJS$tucsYv4pDy<=n zr(A9i8jB(*t*b(5DN)-h6owE=Y4B^Uexoz!^j3KSwQhgBFqm-rYb?&N$%%jMZCYn- zr0Z5!&!e{M^RcsI-j=_^!zU`Ex8g0s_3eY@b^S%*Tc(n3C}^eb zepAH|zK>g@1CHv;%HVB#^p-u^YYAUa`;H22C#9}#z5j}~_^R4_N$I*EcU@Auj{|@l zT`Nm-M(sT+bDz}(jw!syN-ac#5DT(g5Sa(L_ z>6F;o#P(*XC&Dr&B!zK_$4AkZNs9bJ4?jyr&k#G!ReDXSQ1rjpdJnL+u60}V-gD1B zXD8cfNv10(&&R6C@s3!|+!%`~=Fcm`C06*yR|h9$p(85%nPoUe1u>>B zBmq!}p_KU1n!-}L>5?|GurVaHjm!shkhyK4DP7^*VVZ1|E+38*PcfDKG+`f2*h?4o z$I5z{lFmp`eGt1bklh-}YYpKv2PQO<4+>r2h|rKTf-vrys11ZHJWVjecCg2E{YPN|>@iX&3X zXyV*ZUIA5_L6K%gsnp@TykvtVPHkYSq;!QKLcxzvriLlw0wm!Wb~q*#;}Ydy7wWJp z!rqCB#HWVDTcX6py!5tMRTVR>g3c}Eq}2t6%5emK5P=^~5(Z&n33eGpP;9?!?PRLUhw!oHjq%fCsk?!SC?k zwBluhI9VT()8v(0jZ7*fNgK(go&aq}?&ZJLqS zOjYP@orB0dMDlk+_Gh5>1MQM4R z(yaEO!*^;%Ps$7WwB@4!edTyg^Ma+C>!1E<17zT*4}Sdf6PWh?>-y7Q)}Q^l z{^@V)pZ#u2pZ&i6-`jq?vB~p4*FXD*Z9_<(Lity=lCa4q8+Af?sOLji{B8XcSPzx| zw*K+P;zyAA!&V#o`sCF=VG#-dKK|{WkUn_%D-;I6`X{f}KZM4>PaEYS1wbPqg>7M{ zPzLJx=$G~PzW-zC+DEImK70GqU+#bR4_I^ei(jsO{PNP%pU*w|dF{P#4!!&0z|BwR zuRc5R@cW0aY+HTy>-vk|*T48<{mJ*gefaYC559Tz@Y`QM_~vJrEBfwNznr@J;>fK} zPrUQl>h&j6YuD$F-`;=n?(+Hfk6!s;ZuRQYiCZhjZXG-E?zt21T|4{a*4d{wPkwys z)F)>S+`Mr3#+ju{7mwUJb@29)eK(e7FCCu0xOVW$snr`t559eJ`P#Xan``?n9Gp72 zZ|vx?{Z|jnoH;xP>E)5$wb`*V3$vHjmhY@A-kKRXH#d19Lj7rOSsFFJ6E9!$%Lle)RCm4<3E_{SWKke!u?gi(gM)d$Mxw z-3#x2cJ<*`v&V0ZuD&z1_U``k@7n@bj=t42y_VfJ-Zp>y;I*d{r|*v)zcqXQ&ft;D zd(YoHc=gfIx1Wq1I6b)MNaw)Z`0U}4@uk6`{jD97Ba8i_8sbM+cz?Dq`r2vw4iMie(Ii^8eW_p*?(a6=;4J^M-N;+cJRu=9cD|^na>^XDl;9I8;UO%>Q4RCVt`iaFWE3?Pf<}WNy zpWi!pc%pO9V8ig?nYA-Z7mkBB!2YxMZhrLT^Iv}aas9_1)?dE-hYdfjfA_;bA^jQf za{cC&_pV=f_nk|RFRtA^vwRb-$kDm$V{OZ$ElYhBGsCs>BMtk;J68tV4s_N}0eV^{ zhei$!O&yzDy$Rpt`q!>kOdl(oI94&T(msA@{!rKgA<2Go2O^H_Z=KvU7k3)FuXL>INVd+-H=yPVJ$1v z<(KLUixif$$V6!{i%+0Rf|znjsya?ls4Xni7ggog_ce_TcTJCUPR$N2%ndJ2_3iI# znHlX}oSj&kn?AmB;3}l^vnSV9uB;uoeB$`^Ln~KKoxgYfEr_ZA>g~JF&Rl(e>C{b7 zq&a%=gXMD%4xM@b;Hd`(PTpU;^5oXjp8=O1es})i-;dw_^60(iYwtcg|KzJXpTD~P z^asG>Z~pn=cmI6y&7UuRS^w(S^)G%~fAQ=3hu{D6gRg&o_xUgPKmYaJ&wsu9#jiJ> z|8n=6^;=*4`RMocCqOl?*6)13zWUzxqh~)_y8HL*->%>OasA+(&(41G>h#l}kAL|6 z(T9IO_UOCIpZ{^}@sBf?pY|WWzi|8csZV~o_v`wx$1hKP{KJ(me}1$<0>A^0eqO)v z;^mF!KRkH(C-B4jKl}kycIl(fPuzcc`oX6+p8s_1v!5@2^76>tPcJ-qdGzj!L)V_| zyY%GD2S1*F{L88LzF)rneE!0d@ni1}EZ?XZTdNpYF7H2BKXIgW?!?TQJ2PkAUAX+{ zz}p{9p1Rw6=t{@_^FzmO?!EG8>F#qNmLvDSUb^|&;cL%_58oPDxjAw4Hk2PfdUN{p z-F=teU%C0=;*|%B7aqVo>y!7NpML*~C%>*AdFR=l^ABb(JRCoDZ|>^T!L_^9lc&l? zj$}5^6m`$Tm(T9S)9`rKO)l3@tv1gcFB?5rI&z?PcBO1=vE$JBuEUp)-2XDSYoc!Y z(80GKE?#}Vcj-d=!kNjFw^na|vV8sV{Mp+FF5NqH?a}1P8-0f^){HM7yZbRP@Z*<% z9(wEE-qY8Q-2U*|^Ox6OynOWYpHKf-|KR%{KKbpBQ}^B*Sv?l3($l2clAej{pS`^D z$+wNOhb)b~kk(A>KmX)&C=BGha_fV==Wm?-;Q8f`zCCg8*{#oidic{il)wDZ*UQ)6 zzxv5HwtfLP{Fn6`&%Qr#=i~9?H#+y9gY(w9|6JqT$)1%9J%=td&mF0sSzfyF_{4)3 z%Qv1Jx%1Jnd!Jl*{LQsbf4chg$9vzbzx&;vm!E!r;{NBCpZ);Ee(s|m;5;9^^=#qB z)BU$TJ^%5mcmKZr^iNw~aOKHYAlP#1-qQ!){R)@>pwsIe*N9&Kb^e!?ChN{&fWd;6zuoiFK&GJFtkyy7TPUyPy7X{mD;{zgdR|p%O& zw*K><{|Ro$U;eWG?eFW~{I>q}uj^mFTK^nU*y`8yuVLjM|H?qI_doyX+?{8qZ+v{} z`iCo*-iL{(2hQ9*c;^1ayDvWY;uREl_~O;od!K#%YW@4)*Z=;j4KIKHSIr-O_v?c% ze!BMbtK+vHE?>U2a{2c0>kn={{Sx*CeDdWV>)-yl{^Hg8sT+@1FF#m1cW>qLqtiE^ z-}(5}qp$z*{AW0;KcBz*>5tQ!s~>!`dg&2hcJ=y^%a4y;eSGNb-TkL-9DDnNOZPr~ z=aawR`|PK;KKSC)&5uAt_v-tfzx(NrPrm)fdoO-HdE+S@Nvs6F6uXXm|$nvQ@ z$1jX59c!OH&_2C?a^?8mqi1aC@pFr3-deqKcW7a)fA7k`+-mRaa^Kua>%@VP!zcEf zx&+ZvHA8!=2lrME%yrHk8C^X$cI5oP(#ihiQ#}Wd53QW*T{_VcWL9H$M9U(&4oelcz8CuN)sac5eFgm4!>U7cRfkec)Krp5@BX`HGRbf}W|0q4}(q zK|^&1+gzBS&*o*8$nz_;l?|CK-RVu8mWEDCZKt-RUQ^tV)zp*MIa1s=nc31?*gH`% zyr*gAP~GqnSjgoxkD98wU`{9qwq!T=TkASZHO;!Ry87Xn^6n99RkOCJT9{EF$|yEf zx8`?^7Icq|9Jv5&U(~(VR5MWCGY=}Jr5)pj(gt%yV`f8JMty5mb9>p)XzTp`xrwvR=XVV@?_KR&JTYPwSib&nc8#csnn)JL;Zg-6-zcU}6bnsb zAtU0r>1BePDnAx~Co$5S#&HT{q?ig0T)ut!{>RhDueQQ9J$R;X@sy#Wqi^X{&w&%X zjB-I%Wy_v5pq;lqdU5j3?K~FzsdU>Dwpoega+anfJfgckzSOn;)Nk@5^KNUo2dH z*mL+w#pFue{HdvP_x7B-(>A|SJ-RToa%pt!a^v(8+#7={XNr0!Du?Ib%7UzAe)o9I z*kbwMTyFbVaqkTDkF^tr8>f!ejjux5weL*J^lHz(6L27vee;DKQzhNAaQ144m&$tg zcI;g(?wTkYm<7H1>Y@GRJ$vhh546v$4edWWxbIBo^jh2WO2hcU!KKrK2hNPIUKl=f z21E;CCg#ZU*^z^%`{s|fj2~#5Ssq=!(7*rG*}EUZ<2G^l+}icW?K7)zV-FlW1>0_1 zkt_SoT_0OHbMb>uSFb%7TfH!T;&T7t(<5u=_g=UKSE}d0sg~(OZL^0*SI*Z@E>(@~ z?^!xMd+x^h$Df_J^I-Mny?qyMH&p=u=vahs%2IMBH2Bv%G4on_i+jI2z z{HfFPr_b#_cX{E=#rD1XI_LL|9a@D)b#&=S@BGrh!L{Z+hib+b;7Qzj=BX0%D|Fr6SPMP z+lML#Ch}UlOFH|SMyG2BCyLtoTgDf==8hD>KSulKY6cg|duHL$D{dPp=@^DdM&;dO z4I{J7;|suSkk6>@f>w3!S?QZ!>seUqm|ljx!(k5WUmZJiv}t6bX=JQcrKzGev!=mXQIk>KSlrgzKE2R7KA&0JmRZ}O zDy%V7Gys*=jn3AN%vAJE3e$_E*=3sII#{pFD;K91@J)GKLzcF%!dzOT&Mi?`^V715 z)LHNyBS&f~P*@8A@{A&Bda=k{kfbsv$W8i^dTT|CI%eF`r@1?$zFn48D9OkdrRPA%cW!HYT4Av~ zE3crrJ-4YfK204hmQe))K}LqUq{LiTo7L8?tFF^j)}$4c<+XQr?OUoInapVEur#!5 z%j@Jt)ykqeI80?>r6{{dl$kF`&z0wuh_ea=89B1NB2!g^v8+~ISO#ZInp31Mu7qFZ z1*IjuLsjsCHM`h8y9_sBMc;IKZAWH(7ZA9%v>L(}&6Rb!lFH_h>8kFb%qq}VEa7O) zB1^Wlu4!m_Wqj?}%!zZ*AyyCW0gN6z)igApTicbERj4T_(U+8}3JT@9+35|n#ogV# z2bSx`r>*tP<-=pxn7FaSM?3fIYoD3#T|CsjXFtU0S*km8n}$IL^~RHLF1`23#rq$f zyZiX`I}a}0e{}PsXI-=NRlUPG4V^g+-O(~5nwq%XFLXC4!X<=ik0ZK=g!$3vSb7wi zOhJ<)eW@&B4BIt;>J=7^3}>MtVtpbL5ur>c9N9CF;YgskkRo?tf_M3Z_)ua!g6U{V zERxJbM*JvJTfa+@2=hW0A3vKe(@c!)6$h2b7wA1uAPV8=i%S~gwe%Yk6+yS^t*Sz`su^p z*KdCL^41qWuHJZm4qh>?J-Yb*7cerv^6}T#pM7)t`M0+|`|8sBAKm`+iw}SJ`N_*4 zE`9L$!PnnkdGvJp_}Qrw=f{tp>E5?GcI52%@k_&p&$P}Sf(tiu{1R~K)KS}-u7wqd zV6PvYJ9z%~;Y;saeDL)BuYWrA&Ijk-d2;FA$A`|{Y#5l8n2Ymkddl0!GOIh`F>f55 zDQxMsRMchFHs{v0=GHei^pAk6az$5PMrDJgtkzIc1?kZI(&&LB<(n`qmwNNo{&{OGZ^oMs<_6 zs4~5-#a!EDscEuQHkit4lGUcHy4IS3akv41uPXbe%KOHuho%Zzx?#WO;tESanJKSC zY05C>GA;zYq8vvFE{5Z)AJ>!EM;baB0Ucd2cB_#UZt_18vcos zTiupZ)mq%xSJ^(4UD;wSX-qF|%Bkou<=3k-Dh#>R0(Dk)Wt+LQ9-eC>Otdd=0zycy zY|pH0GnLc!GK$4jgFIMWa3o}cqq{b|OuAl-g z1Q4LPv=+F_R8(mxsm`fwv6j|oa|=pa+Ph}<=!?oUImJ~Sg8(=>i6tMH4KmP3XpE(} zMyO8*i1pSqYmO$X0Geuo0EzmJqMBA~L8U&kKxxW?xNb{cu`a7XnUQTNC=zN^rrf-Y zqGF}dTwYsS-`Z@+vI5d`Y>=yE)|{-|vQm{b%bH)NFlA-|pX8TjmDlD&oKi)#IxAP3 zlbcyyp|GZ>Dm6l_IZmKRl4zn*gt2_75W);BR%1?XZh2XDd1*miU1@VmUTuS=yjq%` zEzQj0>U5Re-FXcSh0X0F2UkZHSFDu{KyJBp9hKdq%B*s2ekEIFl!Cyt$tp8tigcDF ziJHlk#qgwYLS?K_v56RgJV~LGS_^o(bb%o|MGk><`MQE~ktr)xXX2aF**as2TA!-3 zK;_DuGQKfWV9Ju`6q-t^4Mmk%H4T~qAk_k)#hRp23#{g#ggEyA5`huL)o5yZdaNa- zBpUty?6BM6jogXxw(~~XW4t{>g4}}w{^stw#lvkI5b<7%>$Q}XVULjFVIEZmi(pR@=D(Y!6d7@tDMGiw!!hzC#sga1F2uuXsGl=XJLiG%w zxREH{;W3zqIFA52G9(5=W+8&4}-#Pfl-cl zI)=iAK-QAZnZ3uawM;F|pM3lDo%gRj`Sk3a`*1J0VEvr1*x=aI1evvAc)o6MJin<; zl99Am;P-@AL{txFJqUf9@}Q&W>$-#D~*sB>nnZE`R4gR{rZ zP8~Vby=Sp^&m!E+!v|Ji1Us;}eER-_Jtt1Dy?yh@m762`mdZQ3hZh&;Pn)5nWM1$FgBjV*^SURykSS(#g$Row(8W}2*`g4(u<)?RgHp>GJypTZ1}<%Gl} z$4Rut;%cC#!lthBj($ykv9Y8gy|TKhufL$B)l^ochA~D_sWPXawto=DgmnW$#jWkd z?Hy%Z-4#8(1@*Q^KD(?cqp&Qys3Ie`IIp-ox3oO3qCBUfLYG&l%*+G2Q)U+d@4=1~ zS!KqO23=vTrmzO6)l}M;UfF6bsW%tZ=9D#Aaw{zPm4@sRT~3MIkgc-hD=fJZorSN| zb7ab7S(?~r5$Y{`t%avD^VOC#Q!bRzW)vB+OZ8dBu%S7x!cV&pF{7lxSOCOZ22VG1c|fFaPAvHqhMXc}L9sc%w6MOZy0a_4swS(nysWWZtTk^m zqg0b!qJmLhVKubhrn@pYkz3PjC@9xv7v@yeS_(=8DxFZRS6DNFUDcWSa+oYzTxKpS z6Y7j`jndLH6sB}TPF_ZFxhbzmZn5ffasUdWS!uSW7nNA@3$+=Uh1E5+ot>JDERjlY z&Mh%!ml(53)z*BqIbUNb&}A0Gaajwh1Q10h(+K1`vC=3}nN-FseR{q*qfn_$mn!vQ znFiu6v<8^qm7}+0s!SHG*(_D1C8nlQ7z{>STzYm^esPgruQeJpS=knyUa8i|wR)A_ zVo+%G26JY5PEkQ=wLT-;oRbGB)F9XEOgWkQOsiO}O5_O>AYhs!j!TusazqI{F%Kfo zOlEUNdIX)~>5EclSot9OP*JVTErQ!7ipSfHLWy-6pdIB#hkxx(N(UQ2dQ~^_{;HlHODr=&| zz)=`Xg;k(w2CUB3m=lyb7*_+U^9&Y_+MJ{?#t0NNjyOS~7MU}IrgV9Bjw%oSjhHXX z$&zMgO0zSN;UR>WsECv#Sw@Dws0f-DCl(W^^fx^aJ5VS$Qh--*I6jI2nK#_sJpzc1 zSd0@6?M(1i2cvP2}Cjt=+{(Ol2KM35f{J16S)hC z-i<~hNdYlDA(JnnvDu;V@tE-NH{D!!czL|$vWqF^DzYt+Tu!t|5G#?;Ic#!#d~j4$ z5G^V&k`4%oi3wpc!eZ%^ct%QEs>C9eq)UohORKtSO~sk!!mJoh3N0ZifiH}RVFuA7 zgJ|JIY7jL!T58s@mGZpCdT~00JVfId^swZVWQmBUQSvkjo=U=&iFis`ygo9qlh>p9!E<~NmZ+fv>04OGz>_ZCuS>p`wZnJEz_eF zJNAI7#8m=rCpqIZiAy7sCAF6ou;F?d`XFdb$$`sKBt@-aZa!-yH}PDLPhQ$Sm#X zH$mKaT)iqtcFiL43nc2H?d~#{EZ+5P2WTbO^yl-k^aAu-yu)BSzC#ST)lxfM# z&lYLqDy!a*o2kmOn2YnWtIDAPGY1xD78eGmMxk&^f9KHNiLTK>wb2M6lR;tO1foA* zB2em7NvX+PE*IYOBw|}wrZqD!8-^2FvrJ`>r0Mt~Ih!kj$49EvaD}2&0beYai4_t# z$c$<=02B%Z6YfxGBm&{#H9p%2c}Ivg(ZN0=>bSo{^iJ#3d1eg9F0={)8Yb zHqgV<8{>lu4T})V6-H~i&SKJ7O=^o#ZqzC*I#ZSjMyvukU#5{U*|DiIc%F2*RfR?M zW!cq*=_T1&#RZn^Olx|k(P%d4jCz&MtT!0+T8%bMA`?T)M6xt!IaeT6X)SWOfiF_Y zl_pu5QKie!nle*`a-LWY6eN`>MI4Ajm4OJ1gfEp#6*7rbDwc3k*zAN9c4AU;TvAeO zVv6mLlfo51q!1U#gey)>5wTPF9JXL1NKNV zrUFPrVnHfLkeVXovPC>jnnGsKs3BTat5FI00s)T?^EjfTSW;11EGs235l*>As?enh zC32P0WHGk1G*wiTB_|~$#K)#dWoo%9HHiaJvKoU~rqc@26nuqLq>^z(sT?kw%TG;8 zNKB4T;3jb-JVBa7s1if0El0#ohR|aPhsR4u<|W1pfmL{^kcyI%#9XdIB+;d5xG8Kg zR|w}s%9HZpSW*N~2`_;So1}uE2Qw};HjW>ckjiAHMn{Vi;^j$6(u4#7L;$l`@|0vX zk1J0}O_3rb7^5L@GUm#|Q%m;%Jrm*0OAi6cp?wf;1jmBjPEz zDUgw*B(P)X@sX71h~T6sT3kd#Y~RPvKo^yi%yO4bVqo3d3kyv zxLiJ1eUT$*bSf*F9v>P+4iBM5F<7*iIC3;Aj1fbL=O#(aYJ;?GgNqb8i^q%(nZ9WWd9hZA3YM!iVlN^D_twiH?z(1P;OMLhDV5x z2x8O2QW#-yY;0zVBvqzYkm=!3ELx%9Y*U{N%_OdSF-(fJ%#`M3RXCc%@E}SCR#{b9@q0A`@~1Y>4wl`g(g}F}pln9lYFk zxVzeWcsL-DJKf#hblgcK2gk7EDX~#ZP6CAy8AJ|>pazA669Pl9L7@avh(918j1WpC zMbLv7aS@@B1Y)Q+C7MK!31r4cByku}p2i?Y#ZV)oBB=Dx2x>q$)ju|o!Ua2RUbNaM z5vx+U(&S`_mlVav@z{w%E+aWUIwdYiz)6(~qLbq33GorE7(+G;FboiGT;5P?&ClY> zgaRoaP6A&cF083&?(Y?8bR3x?Ej`OzQmo0%QRk*NkMy*RbTtpO>9P$q_wEH17ohtWl zY;b(IcesCOe4u-vv%a;urM<4StU#@h0<#F%Y&oBsZ8ZXt<5>`Y4`9b9auV6VjXIqn zmX*kgiBC=9a+7%}@yW5wxWxDbg+we7aG?gJT%=J->Ey6LtS>lrp`2YpaCnTHyBp{o zd7*re7;;ENA~T*zi)MsVlA_~CXdK$fGlCEhiuETV{qSCJhvJb=&K?fCf{A!)Sa1R> zIw>)p%LR7grvi5*$FP&4g9Cg+L-D>iZ+rkYoF0}WVsjM&g-IpV$uqJn7K;hUP$}Rm zc|1jO3Q&qTAy%9mFGz~z#V4f1FgeWlq$s91nI}%xE)sz{iWEKg;th1?RWsnDns z#xS655>}js%}b^*_=y~uP|g>K_(A~?IER~@7#E!wO_x9)17`pXWg_T&YIGViP8rLT zGU)sWGCzXK4X4HvgA#~=?BI~p&@dr|tcZ@0N3&$iSVe3Cv`0vf7DvYk=uBu5hfIe` z;5-Ou3;~7Cr9=v-R3Vg!2nWdNR2h{lA&2wBf>VP7#1yhJnjxb_il~vYNV*dC%VhDw z!?+=VN&eUrf4^j$H=E>}h)1S|;9GKxi#@F+X`<8+e_cEyN5}?W5-T@R70cj+Lfe9P znA~KtEQP8_!6!vvVgvBWVTdRkE$0n!JS;^ESPE=eXJ)AM@7z2X z!_ZN594*o>nn7eS11S;s$jAU1EtpCrk;(q#a9mipZxo%ti1DXI;aIW3jA;0PM1Xu; zVwgynDp!coloFL%B2VK1_`-OhI8mOK3P)tkP-SN8O{O%RPOMO*!W&garV5}`^Hmyw zRKb;{@q`i>Oht3~v0`a*R*nwlQ5wy1_*JcwsI=m&TysXY(Eut}1|?sf$`L05R0gTq zESG7;QWz!3IH{5pl}Vv8$p9I7`n(crQCWIbU4B7{B@;gB6&Ro~d|{%_D3>dRTH7n5 zT&WVL3S!e#JhN3{%}{3NXf5e!8rvS_2CGhEN;9OZ)JBEgs!ru6LN`jKMNk;@AW9@H zj?H3=Nfd??#>dqM4V|eA0^#87fx-~jJfR3!RLT{I;^k=^MH)w~whdUc&aQ>#*zNyH^0VZAo3-K+=qpK@txqfXjp zP&8|$)SX*n-JRo{T@&3r7?)gT_C{_ zOf-iDStCLqEn!6$M$--cII}-K-5-~M$7d1zEEq&K9#a+(1Tg!0<`B?;Jc4hQFD9Qr z$R*&@{jf%iPj+BHI?>zj-9E(yRvWGg70B{$XZ(uo)9*L6fZB_#9t+9xfmY?Vo|dXZr-@`UU4=11o~a<$)3T zIAQ^wWI5fu(pycjIv5S|~%}e5nkhposJP=}6ccHT@ZM3=EmG=DYZ}PUi zA>6S|?6gzq=>m%47GGq_*8ed1xa-kw3WSp!;gaUxW9TDpEm6$ z9Y-g%I)!DrMVo>&Sp=C1FBOoK0&2RLl_z&%`TFoeG3+3JaRiPR62cD);RGj1=^8_# zOh(hoX*wB2BM$?pmEj6Wh*}=0l0|A1bcm`~Ltwp#Di>1Zf^f)dC3K~LBIkySQ-T5f z1b-(99ueRX5divHjv$t3)4wI`3dQf#DR?>+U#}JzwIYL-Yc>chMm`|j zEY_(x8f8kFEJ-Oz%rHu_%rIAwuT4udYS;!X$EZuys*;uRc(p1?A&u22lVoD1*}&6l z*f!|6dIMjrP0{P%!#~?-NHxI!6Ew*nexgw)>-0PjLQ!itS}3ODDpe_Iig;z34N%6Q zOV*~vnY76{>B0;%Cruiql*VWju~4m9%hLhJ%98aOp3%Uy?MRyhFdI1*Q>qSjXW(0` z5)(`X(DTejvDqR|lP3c}DG9m&5lnZ?&2Q-)f^T=>F)UZKx1$%r9f^i-5fR}uy$`fz`7L$`dN@3Wh7!To|KRC&%j`E z@P4@@tO4VmLGUgJ#^nb1f(A>LKRUw?k%jfj@(kz^fdGEcZo}VmvCbm#=Kb1s^AQB>QzEMbo42vzLMHS-% zihT*i2uzumPZbhfi}G$j`?dHHntk#082?smAmqCP0=q~7?F9ceJfQ;NRpjQDzGJ6# z*X|5QmrN&DtCNex8Q^4a+^Ki4H#qFj*l$zs*ec)hH^E>2E$z)W6kFcZ?AWE+woCEG z4%r)aw)Ah?0rJ0XS8d&)wcBOd?QC{%F*&*zcR3h$?=tMzuCaSlv+Z?*{hN?cyz!ds zwZ8zQfBiT48~-8s+rNwc_J8=V|GRkGYmyyr@VC7tcd}PGJL=q=tO)mfUsO54uQoKO zE|g%s_xg4ziw*C9uFfv*9teP^ zI}*4(1l}3F&@nCumV+Dl^}oez-x0UlA>Pr2>F5&U<{9bY5$NO`iAKlx6X*m&u(uB$ zN$~X!azuu2K}ElYPI?V5-Qus_8j!vtB-E`BLj&?7$)Jw1f%ptVe5NT5WKYt;oMJ;t5oD%7CMDgF zV$~TAMP7|FWFhP~rj^Mw>0ECTUZ81te3T!L}A|>NgtVp}_!K&2R|D zWRQH>R0A`s6F^GEs!KI!gle^X<7^z$yKYF3kCASxr*sj z`YZ^iFoX6+2hKBtM}lx;;lv3taf(Kop!<*0@PILz-*7l)hCv*Q#EsDjV~l|D=-{d7 zu<4laF>2sg1jz=n|2Ty(5QGAKtzHl*CHjsKaRYe2K_Yf2*sm`T*-7%~2=HhlxPc&H zFA32f;0^jGJy?%+j2p;|H=*2{F`g|rZxA-D@j+Fhy~=%&RsKFz0e<;@9_d~Vr9@

>oE^l{G(;f5JwTQ<+9z+5`!es`7 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 -+~jom_3a{V)_JOQEZ1 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⁢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

nrtl?8+@dwXXHE9m(q^scW1Xq}uKXci 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

  • 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 >rm6zr>G&F7- zs_yHN)z!%BYfIak3!3Wkn`^Rbs>D?aetD_1wz{OFvu$#!Wo!~=YqpI~7dCeRN;?Mg zn>x$82CMo;6g`8DBcqKY+ba6Hsrk8yK=-l|e0DKTQi{u|z=(?D_yzHT68O$3^4j#` zMvSzKTGmoIy3n)tBshdL?p!SHA5(1G0c%m;Xz${&!}or=`S$bh;Zp<4CwE=Awfp?7 z&OHY~r8G?~!hCRGhS8%}hYnxu-G8xX;T-(!pLnD^UxNgNgZ7^5FOEI?bo8f>M<0I# zVF@G#*&?7m;5`t2ca);>{XLMiARvJ@*UsR;iWh!gJ@)kd!tGZVUay}0ef7l44@>ud zTfF%SVwgimt{;8&?!ueZ)2}`+-hJ6~@N(~=EBkLgzx3+!*=O%tW{!8wpFQ*R^Qk8v zKweI)+&g&p-Oe*l2bQiuOj0qpU(vr*-nVc3@ZHj$g?MIpC_V>CDhMIUeN&{qX%Z_W z%^)ys$GI0%7k;VUd9q|^dHC?{w%N0ap@U81ry3_t^~_!An!B{;(yPHkcia-iDh~0i ziqYc_KFyweLCom_Uc!o-lC#>=^M;7BVZ5Xdm(`QRZ%vmCq)EH5f+k8)Kf7{_TG9_; z%(DIk_&!CQbBWv*z-E!0n(}c=X3=e(g3x`#3X~M14Ed zf2ul{bnjih@%q%$kEb5LIeGuLOHbdNd-%u1^0lJYDHsPFoFtCGiOgJ+zWB~g%QE4g znt>6-0#?~T<=|rT_+d%ah^YhqJGD>?N1B>p+$OyMs3V2e7)?u8Lnj|&Pk$q?KpkiQ zFVxIoa`&-Yug^XCEUDfusve`sI>d^R*bG@#Re$}q#i9B0{L+4p7f1|})~AcAOWLPvhxhgEIW@L)IgO*>7xbmFYg4%O)q^V&hn}@;|1q~_ zCaYq+ZS+Lj*zxws6wEhNF20b7brS*l($b7 zHx1?2bQU-CR<;i*S_c|?$Jf!+H_a3E6+=|wM+AeW%JyleQPGc~#ikOn(kXXELI66E&**7BE)WJd1#7Nf? z3V@8v9L>s_OPdB7E7~gSdzz}+8)S+yp*&9@ljm0`#D(%qiReEzZ3@8>pnA$7IKe(7 zF*qqRnI+Gu?39$W2=i-%kbBLq$Stat$SXuS3K%Jy39?LB%#kPn3}FeCTad{srf~|= zX*ndCgp!$^o++iWax&Ymzfk#LgN^zI0i8i8y6fO6@)?hW5VNU z__&OuP%JVr6Bm_+3QLYmrl-VbB%+A%DV+3Fc6t&mMNlB*=kw^2Oq!U=lJOI0c&db* zA>q(+1?gFAks?1s#NrlYQKc-hm`RmzX*nW(Ndd34fUhXX$PwiimbA7Px3m>Cw^wxaG;g0Q@9t9!jCIWH2lg92bfIzP zNLJezrK}Art0WZH5sRuB)h(jNPH|%^x27(?tG8-+EWfR*YG|~3_g+~`XGzaM<fU#@dHPtx^s(~M zgAKcW?Ad>{d-3YImmrc?&%As;bNQ$3XYThMy1DDhuZJIeUcB+<;QcrIZ~waT^xf2t z4@ZyR>|eSF%~oJ*15wJe&)*%o^J4e;yNB;Tzx?{s?1e}0eWuUfkH7RR-jp=#j!dsg6ZdA-?#^vms2M#auAA0zP5!5DfPFZl zZ~j*Q-n*&dE-bGV&8kc0wNIZ1E=-wIJ*DjgYu>ws`@@=4zVhR-e0NP z&7XO2;n|0!t51N*&pm!q);7V(Z))4VT++Jp^3zppX3-V{udme{b*zx#iP;XpUO&dKlkk8kY0_|ithAkyAD-8+hE>mQ?HV*6j4RX2dQmn#$+x#&8&e6d+G zRakJ~(&Mua-+=4**wU5C-ue2$MW(!=uyL4I+#Hg`hVC$9_h@Thv>OtiTiq+K9mLa1 z;z@ZnUJ0A@++Bk4)nMQ=IL9k$B?-#D-fXR==cR5KpluoH7Qv1omia^por9?k{-n?Z z0V}t?X=q7aGt4h+huQSiox2%XwRoDG$jnbBiGZ(wwb}R5o=h>bn5t4LxOby_K!Qg*83=ygJ}>P_QrpBOA&frIjps9n5N{4O+h}h~K;tYB^}@kf`)DGMUb0XRzpL463?`slL6Zp1rS%ncEfIK;DLUWuOm)A7K2{mF*`lPoKXtdg9vrjVH?w zUR?U~DQ@ zM}PG#p4)%@m!)ejw;jB6?&rU*zh0fcbZ^JWYx9?%f<0qV-wdZ_fLlA1)i_qzv#Vw1 zWY_$;=Gik%yUt9Wd9wE=9M~TN!M5&M!Agt4EXY5V?VFMnM9lL}&2z(MBan3WWT^#` zY8sY-h@@G^&`m-~MZ*W%=P!*Ne>idS$?)O3#~#1G^5<&H?vr`lyA>mcYbI9ecAS*9 zPV;I<7>fRkLO6^}*G(MZRSuQ(&ev@}+_dv_@xcE2iR0Uk-0j?RzNlw!e$SqY(dEV+ zCq#AQf|~KH`kCC8z0BfK;5rPa0V`;Ol~FVzsGb4|n#ixi3L8rMl~0&H^LY5+b@+*P zUwk=y_-0niI7!|ps2POxQ~mfM$nqS&{}%F1V@Gf9Sh;`pDZ~oi-F&qwsTvwtxK_|K zlfthDplM||b`6GBO3iEUm^lqOtdgEx5CxrCxxMGqz3F2&xg{NOWU-ZZln%nfz}Cym zHAvsVN7KgFC!T=_NY-+Q_ezjLP*>JE-@5aBZo}RrMxzEIZlgh@ifQy#n*?nKteO={ z*D=n_BgrY0td59qji6U{?yK(JpFk~2WE91u=R}c2K4?lzhA5USNnqr|LB45hpQ2~F zxP8a?fvY*Sqn%S{+9rH&go?FK+ZsV7Aq;Lz+lq`73 zk~P)!?`|8}*U-PGXUB1fNtLyX_wG1c-L+Ft)R-w%xQ1W@P#FO+q~JI*nOj;`yRE8W z^dH~pX&X6*#-;&N4bLuDwr{KG+Rn>w%n+2qHL~)qp@{?a9peS%9VIor@{(q^pjfX6 z43q+9h;k{?Jg^8WY3XSmo?+#byZOg{^@FYys{i^YyT+$F$HpikzFU}2KwPM2l((sy zIl{{h2CjXpvsDveZyylp6^V;ZWyRo`6hRU6`-lpvK?4uZEY|gmbc{^(@0hD>?k%Zq zt8X1Ft7!M~i83>GHZ^wObLC}avbw#drXw^kE+P=)=M(Sg9j}M*(>4!K(RGJa z-N<{Bj;pq*e{2FXGKv@xj$=}DXz5v`WDbXx4bj80g37AWItGm=;Acy7OZXzWBr7jh zoG)NyNyRdWNG=xS3I#cQo>ahG?39{5|Ovro~rG^wg}=N{E1e6IFHCA*RWVJhfSoD zX)FqrPNdREr1Vq*5zO0gX=#Z>A~qufPaq@^2=M?CDIq;0Atfy$F~Ofi3L~dSkO-mV zjF=RBSPDJ@pNvdPL*wyrsknGNHZD0iHVzYk#>Oy2LM!)xFE{I{Tezy5xu_W0sv1~p z7+R|6nRthWAyKF(RBUW)Gzt(E5gid485SCe43CaN#>7NLMIj?1!;#4F@UWn$umB}O z{33&WBZK@Sf&l@*MYrF7hV>S3>04#~8rV;nI(ZLCmd`(b{`BJG$6r2w{`J#m*u40> zdhG6#-1d>Q!j_c0HjJbRm)l9J92c}M@|zc#b-TI_++BJ45dGIvz z03{(qMjlS7Yq|A{uRbet;(x4;9J|)Pd}-?R{nO7r09OMJ-3JZ%_QbQ*bHA>hdA7Ry z{F6(+Doa3b{<(VM;rsb(zwN&IYVhct`q{H1rydWjJQz9gVEpWZU2E}#mFKHR9(`E4 z{m1;xUq@GNj~u_%y8BG;($)H%ry8fv>^}FhbN4x*!MTe+9k}&N_4a+`!*gxBj}INb z3|hCSXS!x=ztR?9?(Edb`%t@{-!Z*>^Owad&)AACas9T^zPZA#S#D(?uX-S-b#h?o zLg$`S(#Gwy;toOmcv1h-(BZp%2X0l3uP9IP+ZII)ecm{Vj%$dCH^w|5#n3lJ&nwv) zN%c>Y>U$=chmb5n)6K((+Flr1*H z<}SQ!n1oT_``C)1g6`e<9kT_UGcb@byKWfr1^X^P@7#5=dB+i$d(ts;vVHnQ*WBr$ z1DCcRx=}l}+&+7{G*9nYd_Rxb3a5ts!a$@!v^Dl6uXD<9QXfxTAZjcVJeQSCd~{ zE0&eG288)Vp|cfr^?k!l1LFXGZmFcODyO7YELVK_oqAq*eaGNLRddJ0+}?(s9%)HI zS!1oNqKGD7Q29(omM9jFr|?9%Wz}p+Aw!T)pomk_1tF2iDd{|UaYI#8ue`iLpyb+S zSxKF|u)4gwsk*E&F$PaWlZdF)BA!gn5kvK2xir5DoDiU=HP5+fBu2@1iO+XiSE zI_sEtY&G?ORZGv=(%jR|(9uEPF2W%o%+4>#H;xuV;>4$Cf)iORmK2?s5uciZ!clPP z6fB97m`Xq;rN?8_;;^`A3@$bSkc!3<6QQD=l8hzBCyNkgWmfw`6+ zDK$718%RnCC#6J?@R3AZ6cHDL$3_6Kcw`bjnk5$aAmf3|wXNK>tzEUu?KMoSH4V+w z4UA$isJKKFIw1xf8;*_%0ekb<$Usy?Pz*8vHZf8DQBnTUk$zD~->7i!m~c-(RImp! z&;=Rjh752=26^=@-5xr4zhdNge)p23c`mnYN!q$tJ9!=o;DH7o0Lgcb&%^HsOVBA^4)wu7kTyz1(^1@yzL`C+@#H|MTbN z>%T$~QPs#kh)-@iaCzd;)%};AoqhD~*sb5{wk--2J@TfphLL@pQ%8S%^7hEh=k?@-09qXth9HwYItu^*9`df(~H_`M-J4FA5rx0?O!+xg}4N1zBKy^@2tfRqZJ2+*jB#omDy1wc}7($5>8HcX|6b{-}0)irgZZQ^L}?lUl%qOfzPtZ5tMl{$7FqDreNlB$NG`S$Sxol}R0_M8No zC1+J;fJNZg-iE>1{Q7=rMTfk$cia52fnCdr&M{VgEjhay+SvPNPxzxViGoUb-6%y; zr)v}Hg(MZ$k2Vi2f@*~zXIa~J2p)3t>%a^=iIx>hus<<@IgQ^OY$OMxbK>h1H6*OuCA;uC|e-jjNxXYpA(RkZ&MfTh~!j%SubzLR;Hh zN7o3TZD6cpVz$-L+}P4l-^^Z38=<<@Vk7iH8rxggdxbay9$@f%GG_wc0XR0dg)&ybc9G9}6B{4c-LRM)jJ zv-6Ej$cVv^Q;Gb5K&W5j33;WMI4Yf#O-SI$IErj$5e>%_Pz6QOg37|OTz+Gpe5|cJ%q*M{ zR&Ji2fvzq-&JONY2wM*~?~vdKPY+*jk3bLC08ghNALkHfD{m(Y4;O167aMP9TW?o; zZ#M@YKPSI1C%*_g?<6OmG$(I@wNtvKQ>L{u$-<6kZbPwl%(Qc%*}2o4eNx>5u|A;| zx~A6Ft_CJH+NQReMpkAvZrWNVUS@W9M^BQyE5p{6VdFxvu%}r#WFj1x_RdUaj|>Or z3>P<6U@$iI*S4p&;llw&rIM@W7(7#4mlE_^jsx}gK;7YM#HBE0W#AAp=Tt!beLzt#C2)y5Y%2m3MP?WN#M89a|gzj z?m;b6VaJ}buDzw5dlQ3UAra^UmIHZv2F4YBfnABFw!-( zQr0=!yZbbp_cO#5a4wcL3{rEe(}X2$llwb%E^~{!fcUMweBUwvTS#w=%hWys~Eq2EH4)c$v8e8@mKirDdIyi?Z78bWu@h+fe`P zf&7M^oN9>V543LIJG|%E@UG(>+ZRCowU6zMP2=r? zTPqzqD@_{0YaOT<=dYi%1FLwhGP7f(Gq4;^bSJ=+iid!&gIO5ZjbqLdn@;f8i- zD|ft+eS*FXTH7jC*CrOSY1)<%-)T7^+@p)@2MX)Dvx@4oiyAUm@?^3!9K%4k$J%(u zVHtUG84?3W=#<3A5VMd3K^#>AYzz@jNJupg>~8Ft;^$X_k!*Y_H4aaS!KP>MvIY5y z3~nxsFQ*G-m^2zTok?a%z-bmuWXBMoxTi2pP>I9}DV!>{q>(DA!m|rAb86E?mEfa` z&d84>NKvHRL|P${SDwl#!jMH?;rK8#RT)8L7fAD}vvU>IWzE$kb=CP5rJ}q7ZZ?Rw zSkC}KYI+VChUYi#MEW8iI|>!P6scCTQ5;-IGL zprrxRb1c<0T@B5A&F$O_%>2!5Z~LGLtl<*Bhd4i%~N{X_&=om_(}@$EX^k)DQ_8)@V)JI1QUPO+=)c z5mMDCO4Se$u~{#CqaJdzL9D7pjEZ^m7L(XDL~S;PhlHvc1Z>uI->}tXqmJtqJvSA7 z`;A*2x9B=*7}%-lS*z(HwrEey)-*=iWt>YAHxHP%zr(b}S=3C*WlG`4P5H&W9v z(bP24*0R*sb}%+@F*kR$u<*3B@}DtY_$;ts87@9bxYjY3-2e?3rrs zLbh_qG`FD}m@^H`g@)!LBNK^{X|_2c7hxqr*a~f((jDBg;;;^eCRWzA7WR(X2umGH zD+`1TSgRqetuyRxXqM(&3p2i{smRPsXlg7lG8C8?@Jx+376vSY0n5gO=WNMxuwvR< zGac-h4)&RjjuasUJ1gS6oDMg$w?3t#0d&x z1VyoeGL*0a$*qW#G=_*8{lz_g;-M(T(Ug|!Usz;+VUe@Nz1TD`Z=)I3IWRQ>L*?>$ z91fM6naIgRaWmH{oEg#Jo()hAom>MH;H{ClvK1Z3T*>4_|Md|S8EO7d`v=qF2zXz> z`ef%ctS>3mAA|A4;({UE?jI4OYKXA*46^X>*SE3Nv$W7M)>hM3#o!~*Fe*IWCpN|d z72|=9c3TH3(ghHUbdCit+z2N?bhvX=m@_iOQOV?hASXaruv2<=7i4Y7(jI31aAw{% zcJZWGu`5e4hvN)r+e2GlihE2sU$KV3MSKL0KW#?_|5o#TPwhV|jaz`1u#;aRK z%35~Kp7|-ec{_M75XJS;#5~t+Bd!@uJuOQEEgK^}NAs<=#>UQ;rmoh84(7T_?+nCN z3ky9PM*~|o5RE#PZrT>^>c-A$MlP!QE}M0o)Qvnh8@O%Mb5SvJ(=>JeTE*Dd&IgXn z;=FPSM~sY1ws#BAGjmeaw$d?mHnI0Laq&ZV2CEo5Zng9@bPP802uFA$J)_fb%zUy? z!IoC0fa_g!qFZ1n{CUEBw8;2G8dt!UWaBb22~-w=MhAQU3??Tb8Im?5w-_p`qPv6AW&Kat#f{dpTb@V-S41F{WLN)Yb)b-Ko28pVA37d72 zHfv)yY2&u&;Gtv{lVe z4UG>+C;Fi=-YArNT&(*#lgCB5qN1FXWFG0bPUg|!j{hce;PbHmMdqx6_9SL8NFyji z3dISdN!d77iMX`a!9P{aG|bp3N#7ws(=sL^RfoL!_XHOGtcBcU(9oBMBl-Nf)p&J+FaLP)o}$$FXwo%p6fsO+p4s z#lS+#%+AQx8!Y;@to+oipi(%0aQ?*p^LLSHG!yrLy5a4Lu0eiD6-!pZ&Zz`2r3wfo zCK4Hf+@i*wft=#X?4l}3ekGig9X%q_IkF_Oh?`$6uWc=AXfJ7QZXFpZZfdG*?~+y2 z$;xYTOKZath)w}9R&F7-o=7MEc&b=|&&*9ANz&Lw-4h2PEtON&nyYA#RWzXRF!mi+ zpr{hb@)HSUEQy*#q|gNtrYKulP%M<^%gYtTHPsbOjWw-JExlb;&2_S}yxdZGWphQ> zw$8$;qN3^&d0DZnv?RBl7d2hO>IF{RemfA`PDaHtHP*ur@*hl9|gl_H}CmE z&FxDS=YMRp`j?9Rmz!O!ylFwWYJE?>mK)nXrXYY=>x!0abxu&T4AC_AHggJg^@(brl$e*YEf`)}iZ_*cX?UnQx7 z!<9y+nK?mUKWei|;D$|}n^c`Qs=Mi!g1UAycl2@f^>g?4aP;tU@bGr@1ehBktnFMA zQqrwG{1EP5+E!LZ5CgVF=$q+5!Gi9FZ;ikE)=x_l9B89AZNzTcjNiC9Z39e>*Z?4H z+DO{Gg|ty6V}lC$2Q|uu|HIdNJ~h6jd7ha!GXZ(;5FUh+L0(A6AwWVH;X%kC?}Y@C zKo|kSd!M$htLm<aOXjt~S%XJrgmz+q=_mCnh#xU+nw+AND!=B~;$-o{jj% ziKAbNguFN6!&l$)oaf=jNE}d@#14_zK`MKRLU&UbixjGpN?V{%k*MTF3X+RLT%wYp zvm(gLBrhY-5@U)#jjx7NY*w}JMi;qE58uxU(GKPhRMkTlv_8TK~1 zN7@Qaw4l|ktEJh~(!A26SeL1D9g=KIce=Kr*xa<$(!A5syw}#c+u5-t5(PTiccvUu zX0=4#)}s?O^mM>~pU&7RD7l2~kH*C;*SeZ!X{afci zatO(RL@%4w{wTGeNN8q{r;BV$`|D|s7o7eI($8_3YS|fGN4a~;9 z$^2?A2^kCYR)t%KKysKMxw7m?Mr_&S7z}jA1hzaG9(;m1+;HzlBo7Qm{OFbq2r!Nb zgSmeZ?p>Ol3w>UnZO${+sgl$Sg_8auv1OoD11y!Y+UuAttg$)s?7VSd!2r$7=camR zCpDmHhYAxQ9l?B5?ii7cjeMR-0b?obi08e`Rmu z?1OH^Wf<|or(J%xfz#fn9GVju$9e|FhFosA)2)M<A$m|LpGg>ft9p`^CGj zKV3aM9A94U9Us$Sp18@fdwK)sK3hjOp-drBSl>QAI=H&rIyyYPyUmq$c8*U=N2gkg zy-lpF6G#LSO^ZaY8=lh)Om!)(n!$xc;ldp)6}GP-B8X&)o(ORz3=p54@Y3GqG5IGCdSYTEa;yD7`YVx;DE~n8_FC z*R~h)8?J0&zOd;o9mGMKdy%c($mVuvXD_z5pDOJ}%jM|hY5M#)d2|>%D90`?V0L|E z|0I5Rn%O;Ay?nU%>92miyi>y0@+1axhrCxHQ4ncNW-a&n@%--XN%?5`>@0n9k~}_& zpB$x5kJG1z$)khR^;Plic6)0h#plyr;E8o&)yrlzO*>Qm)&E)3G5CTZ#`7cuw&)dA z-mGw&-4~+K{pP`~I&(qkJTnDO1p|>fz{%~BNqLLMQs`Ckj;ve*Rw9T z*MHjA_rYX*)b_sDD8APB{=}?%ly+ZqHJx=d9JcVb>gZW2K0~U8IcqEAHwAiio{lTG za1Yw~YxRsIn-Jp=-Q?F!@|!v0n;Bx&6u!#IAkR>Uf%@8TQ@yvIKh0+KlS%3~H7X)> z0_UswEsCagwLlEL7kdRlkgh{4YHWv`IlHo^GF!TJI!UG3&6pTc&95=@Uceu4buF(9uq>Cd?}|keNWtvMLf3x)99QJDLFITb=b=?R6XN zT;Tb77Y|@w6gI4hS__i)LQiKwCal0*k?ikF+WO%1*#D0sF$J3eRegP z&3NGQIFLL8lPO{&D``0K9L8V{m)0?1w;C(X9JMQ{+LZf~VG*N)6sX68&zr*VE7!5rf`M)H{nHS*`< z%JEV8_^7f1bJ@tS48hzcw^=J1l=Y~MChJ)Luw!&)erRHHY<|I)h=Xa|y|_5Oxz3lM zG(8Gu3(<5klujfH8E4o9T8KF3gY#qa4%?L7K52K%OiaNMtld67F*dg_J3Bu$Iz2i* zGc`IhH?iQFTJ$&;<|mwU^WOOd&s;na$Yj0#;Mn}U-sLjSI!$wnmPp#=3Aw#tZzz!{ zmG=j1)&-B#xistXIlcZx@6uu-87Zu-PFXFCJhC`N*TaZn;YUo0+X zvWeAPI=vhLLT0jo^s=|G7TH*j{)UytNT3?}}=k7<>u(s?E?oaJZa+wW8>5DYUm6+~14t?Sywrk@9Y=yc;>#@n4-L zE>D22;nQQ^#Yy1w(0_RxIXwtpohHwZVy6d@!(IP=X{o&BJl=Dk9eS^hkSUjfD1g4jq5p8tbGYX^ z+*<@)pNHVh7bpJnQ~$+T@a#N!ewp7nD!l#v{y+Zb-y25y9j}TIpe}$*e>21Aln)(c>>)6NN zwK-xhI32H;ZB_JcLanCToG^GE4E~Q?(?YNQi;Xp~+$ZIDKq0iH9+J{k$kd6-NARWMGClK|!*YK%mQ5osXo3D6!4{1S`} zA`{`a09f&gh+Yc8OU3)B1V4=k3NR=>Ce6=ex*1F-ojy&cPcrBZHbT0dLF;2NwQQ!G zLGGawg>-_DLFukoaRG;@pY%X>+Zg(|och#3V z8@4;@wmR!JyBd(hO`AP!o6?S=qPr*;uBduaT6uD?FKM^LX2+v}r6^?PYa1{PD!6+- zo7?ehUb?n#oZB}O>!;)EXXESO$*=6I7moG2vGv>0jdzy(|D>N>nbegCPfJ zjxNhD4I+$tVSZeN=P=oM(GYMMUGrLxs~>7ww1dV5iBL3T=^C&IbOzvgU5^<05f3>G za7YSi4BX$GpVrPz>OfNyYRFq=C$um&4ls@hTp!Gd!v@CLZPH<@3}hRU+DC_H=B6j6 z#^#(;j+wC;=aet(jU>aVTxw-4lUYqB(*aN{vE&Obc>QzmF#-E9?hH8Kw+zSwcQ6-6 zmpqf6#YyM<$l}7N+XD}$;LYx(1<+E!=?=_!{L_KZTp&CXi_XI2j^(ri=IiBGCSY)C zHZz%Ao(_bkqH$L=?oA}1%HAE1ds1mvD&a~co$=^GDgn(&V!2ExmkC0>P#T`c=kggh zT(^h8K)YK$*c4Wm3c1Ky9tvp#8*4$BeU@K!ZREYhoM*G(hbM)+4=Rsxg=pzu{qp{J zZLiR+k;qNGEfP_)NYcFYO|Eu*$(e)2lq=pK^j*cTIkdBu#AOHCAzx|K@Hnuon9=GajW~E76MSfL7eR+Mi z^X|ibc|Ul55(1K690lRKoF9fR4+OBHp@E6RRWlmJ#1>5}G|Tz^ zAFaiAFZkjYj20Zb3r=HORc?d(b~yeM{=hCxThN6*7(x%t{V_;d7_E>+52_85M$?qp z;24lwOdYC;cFCGfzoXS{cXyr3q@Q%X-y3v4=~I8-EBh$xzU!>NY-XO+QFa-)P4epv z(kl?~JWqU+BfZIz-)z*;HXGS%b?g+I7N8QH;K?CrA>e@IQ#kx29zTw&vE!;o$pmno z&UzjoeUi-_Wzek*`VfN&k-L>mxAK_QdY-mO*mUQ9=S^I?;$v3N=ci!~x@Ev_UYhyi8DNaSAO;rG=?f zm;tv0^rj#y{s++r0CSAzK?Wtjpas|r9}Dq(jz*oPQ6`xT2M2ysT0e_!VAIqrvW!9K zVUk2FN*9;b&Y`z)Xe}HXz`TV)Y@y*~we-GvhOvP$+QFL_9=WkqMMSF~x6?+j>?a)EXXZN*E6@soS+&V{ph>Dsvi zJ;Qu#?Q$e{IZ?bDU%Q24(82ue;Kq+F>p!z^{k?GEJC5n7&X8kB7U!btnPMrm?8{~r zbIX&<@lhBX2QbH0aOp544ow36_h1e!N`T~8%mNIrU>tQsL7OL-FT!+AFAO0XGT2S< z-$6KNeu8-)w6CN!@dn5B5SY);>;4tYf#e{^mX3dtqbLGhB) z2#2juJOfjteXc>jdkBgoLrWtej~x_Q8jbo#K;fm~fCqYH4*QpeLV@9M&>jxiqCt>7 z!8Y8a3QN`~w(BM;SHM(nZ3STsBu2@i)O)@aNYj}5~#JrKlD@RX^c%kg|>6128DyOy0RWM(m~txSWUwP2;Y;KcgM z5Pd@zU_z-;fNd(@1 za~!@t3f&w9ZjWFSxjso=9;YtO^0yaoH9BrFiRerUm0w@eX&PGlj$UI)>)%&)TFT*1oG)F zF_bif>g&@D4Ihn$ADQ&u8+*UktAEtn^C)h8gZ_U~W~V}d@%b5HUvIlsqaGfH<8STI0My^H=%jikrHw}Ff-%Z; zx}Cuor%~r=L>HChqfsDliO^^f823gd!K_bEl#CQ7lM@t590q_=NMQ;wNFfBscwa?+ z*i(rh*kA&l2k0a)=RqbFcn!WYao1 z)OHS4z@@fvD4lF#H=CeqpzFE#!FuAnkh>(Siz!=^DnUvn$S6BklwEm^IHTt#Az#((ScsRF*Y`3j zp=`#LU!KdL8K6_kv58FF0bqv%P?$TJidxao&#)yCg453@XC4}W8pVhooH+#MrU;mG zAGEPTGuMJ%gmhHg;x@Wqj+?K4a@H{69WzYy_Y7NvLxTdHsY`F>b#=0u>rJ*^h*@T5 z^>Z^iaOPNMj#dQoKF1iE<_t%lV9P59pvp0uVhmNY^nmPx68n${z6+eRqQXe5kj9JV zN{75qEop`hT3iJ%p_X;m~7k605?8?5oj zASf9dOvQ(wO%}}7MB_D6qq&qLp9G$d0?Cn54s7$p@bP?hESDM01J7a2I11T`_0<`` z^=F1>r$4uutu%>+KC$p}V|8{jHxJs%BLTyqRV*}>t*mpUHD{^lf?y=K63FHwXLtL5 z_WPf~yr*UnU!)dy_H;IP2*?c5Rw-L9$4lGDkOQ=z1q?qf0mRSq)gO2>6V2w&w?uBR%07!F=BhP8+F0@5@6U z2t)VfA^39y@MpmjOc=(mkNr0%0a)QBLi86T2aJPmPQ7RYY(HMQIq}_|qW1&Oug)Tu z7b%p4U#{N$=-~JN^{>6DB}hAA`scuc;|&Y{it_6IOGP*j;-khy`|D&C)f{RFeQ9~ntRVVIo?aUnhVkmdZ(oVc!3h;a}4&n-l zw`X{Fvhdql%O10Tt8?m9>%H!@rg@54R)?uYW>s4z&9()De$1$|n|gGH#^#Zh7I$L< zWW}cn#YeO08#?oq4%0CUQ#HEKkGO~rWL!KI0LRB0_m-@wq) zUyU@9y<$#8UY}OBE-PDC6>V#p&Vs7FpcbyGx&tk|oLaP@mw_|SYPwU3_Jpiu+o~>@ zWNZCOPkXJijuvX-X1bg6oh=((ZNT$=sVFb)E*dpGynm2cjKn8akIM~AzjoA+7`ENNt%n|reaSsz`UqzE6Cdb=J8(9 z^0+187>X@UhJs$mf&IDl;O2h#>MlKmOSw8hu0RJTmbgf{@@*=%Gr<1J+7vvCJhvmm6$9ohI8 zz&stZW6m5-KLO@n3Oaj7{ht-_nP3kS)}R$3z#L9OeQqPj?bP~~%+qt`F_*n>5@0?k z8Md|d8ai}FW?L)0k=t+6&N~MH<|t!%IsnCx4oM4Epon37Vp!#{DaWk{=A!`fK}kg- z-=Y?NgFx3r5VnDzq0$%82tUcH(pd259K!?Xl#r1w#7Ek@D>Ew5sHt{zjPoK zK}tsl(@_g3Q|VZnO$=odHfSxrmL3Q1jd-3$CLD-eSe^tQjx~~nezTzb%J}mJ_Jvgk zHtt~~Hwoy56>aipeb#1vrqa_Jwfiou&+inWK{x8r4K2RWT3jd<7a`xyuLje(=>4aQ zzx}Vjb$Et46!qPzwzi(;*6vn3r3R+BA0DQ5cLE1H5RyD;&ktkVGhdc{#jrI_01H&sx2m~Ex2TNxM{wD=5_A&V{_Wc!TBm0f9`b$dx z+dVva1~_mV!#I%n_B2@GIb!v*0NOuP5Z(q)?oOBPU_A@no=0x45?7b$)612sx21pl zKmIXXNH)qvV*!tSY2g(E_mcGL{CfBO2N)5Pygo}_pT-ctPa=;e;kT!e`_u5%+s6D*THo2A`!ES1uGMieEd{KYhiQy#$`~BsgB*EAGH#=9iYppHTJN zczL#W=~nAGX|ty2q9Indsat2)4$buSPxKka%sQ*8ty{@&v^Td*HZ;!B=vxxWJ44^M z=Du%?>QBnm3NphX_7z@Y~5RSQ*byd<)V zOkE^V=5T}s0?A1vx=92Vv1Xovo1^1L>4X6yPK&G7kck=!39V$joKU4C)u<>$Il!F7 zgzVSl_9iwr;=85f!BOVqVm6u_nweD^^Z;`XoyeyX>M6u_8d=StRZc?jvrK}ALGsc` z9uh80BLT64q?!;J7o!lOG$NYjNhiUk0(m?<1i_z1NVq7aCPu|YsPI*o2oX9l!~mER zp*|bA6kS0{ zYtEo54(SUPEzAKKq`m@+p6+S_r@blZ+UV(ui`oj7zSUVruSTJ@nA&PZq8w@|V!j2uMDjzks~O zp1(q6E%~<-yFa(B|FmuVkfn-$RS#WHHdZ%}GMR8LyHrTettJ8HK=Lt6FmV!Kj%DVk zlm+>71iFe~SOb)r1H+9Vz&IuZbDt3^%%R{MVD4Sidp+iP_mIOgJ{fk3t!5OP8wVO> z8lF%{uIFmaQjgoVIBRrH>lUW8a}yfStV0d!%(!M6s?DL)9O}%WG|{GXSQVi0A^F%~ z52n!p2~4I4dHdk|Mto>}*7J{qeO|!uj%wor{cw5;NH{XB=xQlipb}{NA>4kBO_1e2fTa2}u`!zsd_F(&RJ4RL5R^8f!1+l5h@h_y0qp+E zGWcr$^)VQ14u93%P5j3{-gUeCU%h$pirU<)a`Za)rgGo5=)EtPJ%rjGGEen_ z+|#VfS^VEg7d|!&9?&##OZvThv0SHJU`wn`Vxv%FvkW^22ImcGE0lk0I%K_2!p(2C zQQ4Ce)`3*{$z=SlU;n*9`He>WR@8dmR)5B!958BjXm0@Kpbh4m0<&s`iCbmiS9o+U z{`F$bYiCV0%(7o35J0eT6Kjx2I2Q#!Mmrf8dY_gV%S3>uS0r)D9oV+S(GIP$;BWoGAV98-$AG8i8X3Ujf94iu!%ifs+`YI z)iVr@EOP@>M}0lPBgG{x!0n>CZByB{tM1tE?b=ZaVr{fNW9OE>BO_`ks=9WK@?EoP zRU=F&IufeRluqOkH5EtA>m#P!Y1?!=f0R#~ucJi-bs1sHinuK#ZVf8B{^aVoy-lF) zA83#(8q~ci+o(6X?6glVsx%>u+TYdgYir6tF}buoCvC|~8}riog1in%(O6J4=cG+J zY1@jl4L&2RsD&}D$gAo~P7EgI#-hFje>Cb#W?+z?d+lIx_ipjv?c&MTw$*dT`t8)# z-Sh^6IcPL{J_h%ORxU=e=QdE`eyH#;y!E|h^;^07o+=5xWH!x;L~m;P>?V+~y^h0buU(*%udF?BnOORLK8ndx@U%Cn`e@vpX$k<1JB|24gee`P+%|zo?|fo93p`mkAW3O z0*qsVVVVH*ER57l4pm5Q%cV!aii3)o2@rU40665{{|e@S@wLk2we^AnFb;wZjEBJV z3~)d?Vt4`O@1PBk9D_MVa)9~X7D9S?YaW9+RFAB$h2V(u{Wo|2`JewzAZ=8bML=?i zUf9~xO6HO__OeGOD;1c-0VSMH`j5;0%3-Ddcz+2KX1P)B4FUKQ%qwo(4~LZygM*$d z_cP3)?8FO#Bg=mm=5Wwi5jsxwB76h@ zf9|j2&$F2(QdJ+hMoN7nV-sXNih@sr3KmNXXP|+lC%thtGSgB)Q6<<^3$_()duqXH zpKw#!7;U8`xs)BTi6JOu2`#ynq6u#@ zx45#qSU7g>+|BPj0?e)X3oz%?+xL^3w_wO2X2D1ft37iDFo&RTAa`fm{LZ}coyPy3 zB=mh%JG>Ap1I$w?XnO6*r6z#n7|bDH0gGPA%mLCpvgE{cr>$W((R!_=#^y%!~uYWn4&ItOfoqAinNXBk!lWV(RDkH!gocWh9 z2Xl_W9Blc&3-f1Z?suV?6qStS$(H*o9}@z`u-|~>Gr<~x6bJ=DFvqhW5+R^B6z4!w z0tk+hVRJHK0zsUTidjB0JPr&WM7c^5hG`BVAx~}t!4&(?Lo>4zYfl20BXf?%Wja7G zKn;dw!dl5vV5ZOHMqvu(uc5Uf%$WngAx?P`%wn5`A!s1P@Cv|z;pOeQ{n9)XhwN`J z?rt~__rlwo;e*4qqtnvRxJ7R@=!cEMKABK27wP4CyXo*^YquOf*pEPk$;p1;Gr$jg zPb3F`yRo<%ViV9)S`vgZ!iu1@BXoLz6?lN<_MIJp{q{kb$`=QbD91(zjz=Iw@5^JT zJOM=@g2wjfNb&gd9-hF<>(dAns649@kDwss$&F)y30f;82Vx^u1HeJI7s0#BP-R89 zM!JYT3kVE)dli2`O5R>(Zm$c+7x~9;PXFw0emUZv>VyIJjw#*vRBd+`v#BnT4So1@ z34Pq}Ay>axxjRoIm|w-;T_^5=-j^}N^PBkned_Wme0LLj|B(IByEU)N_TtS;D!;K# zJ|Zyq#G|WJ*=!ATd1Z@hn38HnU!&M#Sh&+H-0>_MjUzj~!MBo`ozCGbqub8y8qyf% z2CR!iMu(zZqwdrU$e`z_sf*5SsUhe{_)K@lVXyqrsQF~>{iu;VO4^{T<(x-8uO9vb0_oWYiboHmd1*-JVc>5jmWD1Rd z!_!H4Hi^t3Q@CVO9hoGe(|XyQ0UFarWz4bIvv}MRonApYImRSLSa@*V0O|zbno^yl z)?^su6qS^qLYz*3qy^BOpyT39T$+tr=HNkT79q_dW;o;whYCnfap`d`4HV^2BV4+l z1%- zZBN>*Y~lo;yx7i|Y{E}VxFZtY|MI(EK~HVD-rA-&Q-mV*=wxd1VB9w2?i=>V^0@|Lb9zl3&Bs4$i_4-^e ze?4A+rik;o)49#tx$TGf@+ZgE65y}y7ASZ{?L>Nb6OP>s;j|Y}dEZM96 zm79U$cjo+$$2b0rCiT6n9f14YD;vk@bU2%K!-TSY0>v!PNehJMAZX8$3Xh~hV<0H@ zhzAhcp~xJA`4i6(Cn1-HQWiLid?q=RviN*Mv!21|n!k9y{a^n3|GjzpP5)H9L*w9e zD52d}m#lr!ZFM@$keM$`LB^s2XFfNsesbo@$r1VFuwue4!<_k-<{b0q&y$9*umw4D z4Ca9DfDwd|JR0b)@Z18MO1gp=4%3+vA=4Ag4KSJ$NDiaiuxz}tB8DTShA@)DnyZUrubTPXX1@er`5ly;Ab|Pa=HgKqm46=|750zUwf#!d*noDpzq3!(p;Kx`Exv4|bX+JO zB=^hVz6zyyUS2;g79ymAnU82(wO0jMYc z0^{f~@k`yDMFH=au1=zmPFHyT1EgP{p~M>#cyG*&1IC{ONDpEp2bez#LoOg4ZLXpZ z*Ri)(vB&EK!2I!g`R01{_O^I*RlNW9{LlXW&+V?sZj(+rIHan!*V)K&xuyuNdeK5xse&7fwH&_s#YrcK=3?^GdsPshHhkOQ%@fc9D9b&pd0j zOu-~(MW@=P8yqoMg>{WhWODoKuO_&xWLN90MSrVTe=sQDt3AEK3U)2rE$yc=XSlVKL;~FC1en7iW|U2e!fhrNF2Sk5oLZHl z;Q;1I3ixvpf;kljRvbtkXH^5tGi>~mh*=IP%cX#pd6Z>Ht$DNrj~e6BB5X>SMMbF# zhX(a6<20O!^2WrW=vc&FKFQQbpB6O^H_*q}#84||L)oz&mz5n?X8Cd}dxr4h z$S5zVyCFO;%3F4{?MMBR-97~KizzDv=GIzTLa$DlwMO{JVA1U@Ozh83E_Oo;1@cr2 zd91OwoPcZ*OY!1^uF=rm}KxPhki|%vA53%5h_1M9(<_J#F8{+n{dUqn z*E67NRm+7&T~kjdqmi`~oPlbV>&x{=C||r-dAQ8Jz05pbr$Cio2e3&zfHQ~hcmtaR z{Bz#jt$h7)Gm)ATbk*V+Txz|T)G;C$N{c4esN&IAe9arC>?O6QO&wN@l%Y(KqAAq& zm-K;meZJckOM4M+zS`} zl^b8>AyoTGIEX%=ED$OHq5RK9!_QH1W2D!1(yKx8>jBE^ek!4#MlmwE9aJtj^Yxw6 z^38|*`P2#=Fst52G8O?CT$(8Ou=aeqiNxAbrsvKQ_k? z`a(O};I1WgZcbh5l6QUS4-3b?BMMzFxc#y9%a!$mY&rxmFC?c5$%#D5%ttZ79U@fF zf*L1|B3m9Fiw8$y0W|v(hGs%#NQLK>c3V)^0vCuX6(guL5lUHHdY{MOcAMa4_w3@p zLU<;ai+}v(?`PuMLX)dSF%Bat8blhtpx(V?Uvv-5R-F0#loDw|0X&}>RZfp7r$!YJ zvw;2$&rxy?`XS6w((*rpd4=bHfI09SFb*(JMjCS0ss}wssS$={!x@&{Q z-RQ36XI0XbBNU;03G<4J4n6s8aNS54$uCcXKyqL&T(<-oSAZP7K8s(UBtTD~hB}Z~ zMG3gMiNPFr4lsm0ya${)d|~By5s@6}0t>){7|bE`22cJ(@=Ahz1^Gz?gou3;{|s;} zQF+4q7cfsh-XWMjK5hfd-+p`X7ys~^nb5q<(%Yiy>C&s)l-- zac!0wuKX*in9(xI?|}-}KV|i8Q8hWG=gt^@Cz>eM_Il{;CT5e`I5c543>vit`@qnU z-qa_PYkQ=PG-?B`s`<^!(WY8&XUmyMdt=Z(s(Ws`+OFH0F6!B*TpGZ<%&Y;PBcyY1 zr8;7%k(}p~k{sL;@g?%-xEF51YY*{_pHvN{fLH|}l>fPDHNf*}O4T^&^)MOnyq{8K zp^*#>Ru{cC?hZrO@#DvDcHeyq6Q)uJXW#wiciEjXo=Bh&Y8WIEICBPxLL-p@=8&J) z)2Z^>S~a)U%wR(|l?4vRg>G?DAQ%CjC%GgH=4mEA!z3V>Gf={xVnRrc1Tcpm7=wA1 zN6hmnxmt3bM_%Ot*fD)(I~es0o1UiAl5}dEP7Bc(&>vud#+YI;Cu-UKbfUeM4qkVH zM_J%fR^h6ST(B!`J5YC>=w-Vq(eTR`a1ZD}D?QXg^90GBLIA3;83VdLzeW-0l?OGFU~e}l1SKolE>J+zv7~5$6&^;7>X1R{ zF)D360_W(EYi=6a-a@Cl$yjk>W#6%SGzty13U~JP$C2X4k@Ziuwf9i6GO+q!$=+E~ zm*&`sF>;{t7UhfU+F)59JMBwcYvXU7NB@x|_CU;%+`L&X>>`*iyVg?Eg_Hx7P1rG2 zU_Mew&MO(qXPBdy1^oGwIsbQH4hgo;rSrS{JZ^)>V*&3y8sCSUM2~N5VG+R`ne!>-!ZbK@8E9rqj!6DPnE%k9BcA(Ry?+Q;DuwQqB1x3t z$9+Z+m~-gyh!s^PG2ltURg zTnkE$!-}d9Gh^#3FwuUrm>b#1+kxbu?flqw-cc$bhHn)nx7WapPXWd;2acuU&p}GX zilYJ*q%9=G?cGHbj6*yQf*X{(b752DUHLH$(|`+$wxXVn~V@rOLZ zK`m(yuJ+ec)@uN%_Hg$8`|F?n^7z}Iyr424zWe1L|Jm;dcnYxw$D`69GY7Fq z1QrR8?)bB5T^xpl$2Re}Lv+d{o8@9MmpF_t4;7*$Ig}KSoZ^v|*~AQ-Z?Xs=Xg-i) z)gW>4m{4HOCc^VV9W`G|%<%{yNR8HO(VFAoDk7|M$SZ8}3WK~%CoMCfAhRaP=gg3+ z-F*5my~;*^T{Or%O)O6>dA+;7EN?GM1&1o(QJ*s2+Av3}IUmx&VdznB=YdLapzZ|U zerk{(_Vtu>qLLBJxoT(35RkP_2w2d+WqsP(UHwwSq=x%cht7$pQ64l(n`>UO-@N$c zFaC7SAFh)~JM@N@zTO78jMph#aQVi}gHuMcyWhNIHhYcQC3EkRLFqL}-A1X`An}H?Z8$4}NPOW*b8xJ8oipK_)!rLAzUycRWmC)lUKLK3-AxnYWBVG~YDxXOX$u_uXfcgD> z_U?8Sl9rEOpM3L+cQe5Wu}LQC@0D2%jWR)PN4<62@bK>7;SRz4{q5Sjn;hU8efej> z9=!yf!-~QD{oM+{{PAY>{yO(?Tbi97c=5W1(I8dNZb|1)yT?jg(L^;{L19a)sXf$& zQAhYYYv}u0;|5E=CUIV9{5LIwF`8toPH5@vbBqoz4jb(zr5<>0P{`SI3X}rUXcP{K z&`2dHsKh}IeMhUl)oJdP;(Jlcb!Xja6YYSHKj0IO`J_WWxy+~R)l)aX)^hL=P{2u| zpZJxx=A|F^6)1pz1uzeht3#AG7}5hYyq`k!knv7Z4K!Murc;O6ECGQWT5#{3KODXP z@w;FB^~tw?{DMUHL<-mM{;0Z&%%rgD8O&NTnF|36gj+L>O+r+=Sc?nRQQ@K`z#K?^X;dZ! z4c4z-6l9$@BZf_R(-B1F8o{wfSdz3I_sNfRvXVwxP>HsT>VjFdVpKUr%_bIZUfK~K zG7U5}^is+5;*Qen*v^8Z9ruRw)r%j0{V|kT;R(g;xNYV!tz6k&KR0ckTbQ1S z#6}aV!^`W|%+^qL&$@ClxN;7mN`DS`{=p2MJpZkXagLq}?FNjRC}o82s< zhut60ryms2$GPL*3CFj;;t!-Zud?~l>T)2ryttAW!|tbJ=Y4PvSP_Cb6ez-o3V=Cy z@*h^SAXLI3Vf;u z?FhnP4iz|%3q2Jg4g$|nNqN`?%^{(d9>E+wkAN-z0_NDIPOJ(szYL8IY=CjZ^DMgZ zgAO#|h!bVw<5;2sRvf_`3dJi|evlhqbMCC85)=@eU4qJ6uICLzE6>?D7No#sOz`Kx z^TYB2)AIihzZDnYq4mYJZlONgwK z6@9KtxxWU0r#{>)gMh0LdSJo$ySwCzk(&C6?4BCB@D*KQnmctQe%xj+bIefLvZwUl zcTW~My>4b_zgRJ9wk%l94!z1C>Fn-oY2k6%R3-z?94TZR`15vBO?UOHaCiG{zu{i5 zxskSCiJDGZnFkHzeICG^d{jr<=Tr9UsGD^pfFAHL%OON5Z~V9yftnXV+^Znrb(mBI z)qr724XAQehY+Tc{S{jYz2^C!Q0L1qk&dvaT+ zcs!j>W$|frK83;~6QMd00+wbj13FxFaA_hg4Pb8LFvd7ECzs;m(?dL{KOqCmlYDZz zmbhHeGt9wC3>27bUIie%w-& zHk|Zz0?ZFpUGN@&Ig||TsHFvkcwMV3T6AzHD5wzH_;gz{H$OSz>Q&3gcq5OI88+=L zPMVwRTJTlheR?0xuJXk_ZCZVcPT#21Fgv@TFT7)Hd}e%n&Te;(jJQWfT_Yo|;X&ts z(K%>X9OzvfPp>gV?R*aJaz>{bzbKe7K; z`lTD3U_4&D%C7IOW`h88h!HSn4lswBjZEBH5x^WxslbwRAo;(AIp%@EoP*%{JT%>k z1cn3d0l&+PjURHmtghgKJ04JvI#grRohF+=KUlBQ(%L)f!~$1vW@f>P!Tj?X=%ixC zA%kl3Cz#8oMrD&D(y0+3`M-vF$O|_>;n1@WyEIe@%+bY9_^B`}j=>x-jy^|(hL9}} zLxTc@@f2!S0Kcm2KynP`E6=$K)?a0L^2v=uVfiQ+@=8hh3=|m_bJM_WbhwGKl;=1F z!tnX+b?0u;U0!!%hP*=Wg$lZX-Vltt_Mv48667k2e@MmA6?=3g6L@}91~-lbWrU~% z1$7jx)O#O>j*ilM<&~9<)OWx9=AZws|J}McAka2->AS=hMT104Z)hlPH58 z$IF)|iK}B!{Nfb#Gpyt%KZsB&0EZkKW!)8kLl}+#j$T%>6wF$GUZ40};cXgQu{Z_x z_t&T_@QKXu^8ZJ0wg{?x$qmFN5S~118Ol+fUZVZm8%Q}mn`DStKIwJf_Q$j`lELnZ*Ozoekv`@_IC-JD7B)# znZw@sE9LZ2iy`@vi7H#F8A6!9EFUgvoY(S&8@wjdFnZ7%y6c+Rrbwrlf`K;ah;77c zFpbfuY!0`U&Sud#91@#Bpg}whS9J)@bdm^P6YUZ0=zH%hy(h}9gD(DIJLjYc^;A4* zU;xYy>S^2cj7>fbtZbe`gagMoxhjT#6(PI|6JAA#RZ$YUm>H)M;fj5XPKnZ~&`>2v zrO%UT^E9TN#p|YU&$rKRKK%Uqzx>C)`se??dHbVROg@Cema%yjtDcCb0L<$tlm;pV zn$5QG=z=;{dp*0Wjw!6A_tw%!>Nz7^nv+Le;?sk*O2GP zOx3_|u6z?U#;RUvW2YMFaXwrxB4ir5&>(AHDn8Sx&y9V&yl7F67?;Wq^Op{RsF3YLsBOVsJe}8qPtI;n;jb!3*@w#;WqAg zSAA-HU`DUJDDPQpqhOOH{k9H$f1^fQCsX2hys3o+x7RZ}Jp*#i&N-)N7aS8acH6Xl zaC+D@V>Qg#^t0B!xk26ZVBf6GHMlP3o!LXMF zW0obFqF@Wm)>7EJwh0SsjA6^(qRM3#-m3ln-nXThbI!#s|FN#8-g>3cXwG2x=sVx% zdA?8jxH5H0PpU*R4@%PyDzndm^OwQ7d#=$v&&ZBOm$ox`b?&WDD&rWQb$jFh32qJZG5CPc$dTTTrv3jc{7PbC@ld zPNcWv5zj&vLw(MgMt8JD8>&zTA_}*M zYbcf)l>_7WA4Cmq5>b)n-i}re23n}SAy-?IovwJy*4k(V%v zhWX?$X?@cFM)(-!U^r3f6wHC~ufRM>{*DcVj87xAxBsiwt-MrljKd=bQ6Jj zI<~slv9{Dnh72)Yc(vmLKm2Myg)H3z=KE`XyL1sj4vdr8!YhpTkt`Haz1Nx?VJY-V z=G8L?bBg3dnIk;#?06h7-$H2dTITWlr@#Hrf43*y%`q{J5rehLu5nsKI@R)O=KjUz z<>@kDetD8aY!pIh@0}rUWD525;XsPsIT21-+~`+giW@FB<)vJWa}zawpNMBb7=wIN z(Jw?ilX^(M5Ko(8`$sUpOcHeCNx$GbJea$x4=|@}Y8vK*=fF5!fH_?+KY}@-I*|S( zjmp6s%AA7v^Ct_>A1@=r_T3lf(Revv9%v}n27Scv^ttcIgpYCf{b#;?dbalB@#c#! z!yG>vXqZEpzj~N~EPwqdO~d@vlf@_Z@n_2%RI%LBcQpWI;j8nWTUg*S0& ztl#)t68@ZPzsoV_i^??Kkzn^_>A+KFaG6uS?j3#V=s)KNh6=USVqhLS9E)(;O2Dxjmi9569snwbKJH7$!Ay$z#MJFNj7_o&FW=vx>@?yE5 zL@u;Qd0qj#Q7&v0VdI`TB;|Yz^As>HDMW$ZwAlh>4xb#8Du6kfwy0&e{lY^0H>X&4 zH>BJR2@kb}rkcf+8e3{JKDNp z4H2(HtB^D_H^n-8Tc*>sbIVn8*~;WrRdS~~by6{Z5=owy&fhCb-w&nkQ!u{>%$_+% zww;6P_Wmq^d4E>ZI?t^fEABfe8F^T~^n?EWUnq$#_a~22EBk3;vjFB~1C(_7=CCmo zLu6tO<`d1=Fvm;_rW0xBoPs&IH1u_tj}Fug^i?CJaB{E?Fz-#&b`K?xDeb6kaMv|~ zr(sTyBaRIPQ8dh{(RX?rF}L7JU`{YzOZzHU zvOG!|EFd|;ejA7;$KM^jPC9WVMdchK$&getI-X?sa2YVi6e1ZHN0=e)hhxPayP5F7 zF&L$a60lMj;(+la$D`KtWlB{;IZckS1bGw;{sKPuUqN}K}6SBN> z44Y+ceHAC&)^^U1fARNzEp@tVs<4FG!(zL{Qf9@K#JTjyqx)M>=9ed#`=@D;oYXm$ zLy{Xix$;k_p%jR4N_dmTC0+Q;wQWKfCd3SnNvo>S&mvOM(yg89k9i^oe;Ezned z{$%O-M`b z&@{``c8lY>&35MTOYJqwuGo>b_K;t?p=&;J4?Z$9turkxY-2r3<`Kvp0 z+mFJ_HoO+ZCoTnTixsY9sTE706$*Y(!XK$F>%-)^M(h$6dQ{@3QcrhlvrKKM zXo$P(n)Sg7b+8ODzbz5NO&Ct45~JfS1B3D2p?KdwysJ0X*4EVC-r5P)rwY9#r zv8Ea4>6@zix>~#9O+k-SArV&9MH{<%nk|Gm)S4@S;@tzzU+fAS=i zJ*FF=*Z?Ikr#AZOJy0rZs|h6k2-nRNk6=!?je>jg@@eYT z6H??ePbf==@^b)lQiSJAZ(eME@%r%mVC%Ebd2CszeE6Zg`(AO=4%apGIp2GmW4X<9 zD(wCGP{!VTp|3yWmo4a9ww;N6fx8Pkp=_0xE3*ovI<7#<7l;6J#22#!944Qg$0^EV z5(gcrhI$s$RhXA3);wyedsGuSFet(EbFJ`5!8=h2*7?jmg=ing6x6b15f>z%yL)Fo zKW{ew?o9sO*@6PVJjrCuG6~6N*{nGZdxpcF51QpLG&%RVcla|3EGjTlXm(g8 z8)_?!TAPqpF=$~+QlGlr{W?jV#o;gML!-b5S55vzhBy;5CXT^CCXG)|^#rWPuv zmjLtfnazs1eZagldFW3b1(K(px#QCG1;Ac9ckCYBFeOrk&RJ7O($JZ-53U({Rt1fV zvaUk{^NZh%FMNA&{vx@&k8=r2^9fiAa9RL!dI^-;18v6A(EMZ!l^kzEk!kbMM#^I$ zFsJ+$m@Uusp_G&HIFFQ#B|w1#%zkmYd5!S=Om z8*x_%#u0u+f>Tfj*zuvK3b(o_bYF{bvgt!Qo7)KttB@ivN9rtG6mpRP`mvB2bTy6N z=a=)SE0`}ny+mcmI3JnlBa?eq%9*g28vmeOZW_x3)F0RN7hfSg_p30asXin5UDVeQ zBL&S(%E~50CB6!2P*O!HWI*-hljSR<6U~gmXI?&CdHrhZi*KDYv;^GcW`9#zaZT7* zTX9FNFjs|N{lvRh-+p=Ta^vOWb=WNULkXY3a0=!iIbAf*X{6&1#n-%kx&*TY1*F54 zfAwtr+wV>~J6b-u%`j9UM)_fJ%U((AR=&Ra2H$j(Zz@uRd4|@K+N`E>K@mww!n1(6 zsUgF2ws8z$w%W;)8F(T!PbB6G1$-foD->`<0`RWmJz!|q`fFm-5> zaySMNzeLKjszes8#G+T)v}%t=6_kqWB*I29zfUTllsRWg%$||3W~Iz|89OCqQl9zU zMR7q^TC^&`fJ)Jtq+nf|zbVPzrlxWBB*Z2{(-UUPWWnbde*U_wXivk%lnw?jH#m6* zBF?dtzb|BOa0(#QQES42O$B>J%G%V3Hq~NGu%osWGMtk*cRLn~RSDMJ*xgU2^}_S0 zd#}u}Y>}M!OAcK6bDtS~heL<{%v*9Au$+}SRvo(i3Lipo7ebDOQuj)2<(SW1Ba=9p zj7Ezk=5&;5)fTy=Cg?3Os4QMrAX=j@E0_C13ZGBvw6nCzNPFAh(n@?H**ZSoJTl!h zJk>ZnQPthkFgVmSFwinE&^FK$?@ctdx5VO&xSo^fYU}N4Z>+4bXo~}-718!YY&uyr zk*b(jh)ib7r`95~+u_;W;OxF)V8J=g3vhcEu=!2U0EOdU^U_LtJ*IH#6PwS5)l)D<~8q2+3t1sg;4S2hbR&S~>J zcMp_?Ie1PI#RqCe`f7&I{p_o6>Z~<+P5!1Rt_NvKD^$S>EK-ThW|oXGJP{ulYUt}K zPsBqcl7*DNIqGbW1rULY6LKw$_STq#6qI>`y*UcE+}c=cN2GZ}t>qtrIXzg843=Ep zBh~Rluk#w_G|6e0gXA#GDUuVI)3Q8A^2IhPQ-uU%q2mddLzY93Z$Xf6bfU;a%4X-` z)rdH~eV^0b*Wuv+_)hl`MpNhl$tjp$ksK>LNWr40esyXGr*p1IPWE~zm`{-bmBY;O z?$YA&(wlF8_pko*-~amm{>Sfr{%2ALtAYAbgGVJPX3eh-T|V5nytjJqG3CQCisQnK+k?$W0nkN z(^MxjAs=I$qV$)@kFTV^fc!+DU`~&G(=Z3gpFNuWufm)HIOUvQBb~tfNft1F|IOq2 zX1^nB3^Yed>MM-VszSXcdAR*6zx!+7{NekP(=35G+;!6Ng!c}Eg;L``4(62WvOtqO z2lI!EZ(nYpANt^OyVz`C>cio_ZExS1sby0b=)EDb-WHeK6+yzG_d2Bu&uFU_QzRQ@d#NKRL>pfFj4j1&syESl%I z1jLyTY3!fpCF9-C-hSuj|LOm-_V6XoNRAJRG&+^B#Ow8A>r*Qf>Ucbpgm0GdF@s^% zNv*{yhhFQ}sY5bJokSdy2zm(2`D0?vgqRDM&&fC`IVUY+5SvAGXGK=HCM^WUS44Rr z`IanyTbjQoEjXfVB6#DwD#4nBGjjWrIm!~>QZWvc9CQSh3vcZ5nSlABn7hp_f<)hw za5lxP4LJue-_nY~b1D#^04~$6UU}-Y%xlCQMK|J%Pp9?#vpUyiP)lGQH19ig7ht%{ zaOlvTc}=if?p3-0*bqudxTNCNi)Y<(Kq=Gdj3rjB{Q+}xG2^(|{Vv&xPw$IQFl(_bGv{H2bW zv+2y?^1}3Ty6?XUbMPD_r(u50^Q%rMfjR2SFt36vALyfC-cfBrx==%Pu(cTnTQtE+ zmD?|~TZ_a6L*uQz*y!(!0OqtT2h5RM4w$z#`oMGCbfzvle+2WW4KOD>ueDGePkJ_z z7%YfefilN-Csy?-l2;c}HyF!tCcN07KIYEB3)qS*;KwZmkvam@N>1^&0)lG_; zQNh3=!8nNr&mDK5Uq}=!BCW_R1`=#V7)}MuVpbeSDhbJtX73#>p6;#8r!r4ozWqP` z_CNgUAOG>{{dikD~emlVkf%&Daw034xGq`oG_>3ota zM}>4YuSrh75aiNQoUGVT^>C4fInDDAn)!kQZ3!fcdMZD{o$JfAOuO+Ga0Og2VAz zbA6q@x;j2H_xpeTXaD1G{L+&*_aEHf1j%WbQ$9IO^33a}P~f?u@&4v<25nG^`Gn_q zp?HqpyM#aS2S2>L|7i0jTg+5@M|Qp+8F}dJIl7}M`-ER|i)XmO(F+WfN>_Vv*{r@I zrKm{RyEfh38$xdz+f>QXIJqhlUm_QZBto%>JVi2rL<+ov=lNU?kj`auq+GT-?@sZZ zo9of4la}bFtN6lcxbM&(X~cl}fkt*ztT-~MPEG1nJ|kUl8%2;#N%Ul4KB=ODR1qW1 zVrAIuITj1Y-DX5u`=|Mf9fRNb$)EeFfBft7`xjj^nT_*HHI9K6tKHz$-CH^_-y{=& z3WrJUG-^G?+ES&WP9|@W$rBQBzeF^IC~^sJTEYR$lX7-O&R&!A;u6~gm}Q?w=G9O}q_{A9tWv+Nrw!L1cp{+^O~tmSU< zZf`Jd@A2}_WV{10Yn#v7;67 zKgIm{Zn<^Eqgi!o;E-?I)E7SEnMZfzP@H)*=b_@0u=%LevhFjc?7F3(W71ii47o>r zj)_u#L?&_ZIANV8>av&Gj6sLN?KU81E6`AFs;kmgmP`CzvDc&#FV{?)I(dfinp$Oj^vhkTN7(4kE~l3=L%3x|>|$cG#85bbMm9ia8Zp)a z0D|OK;+%|{(*_Iex8ONDT!)iAC<5~#+#af=uE-%lv1+it22on^-g;-m>W)T&txcwi zI%1o9eK-ROW!~LaJ2()fBXAQfepFX;C{}~H#L`&3x4F@eOQ0wqy`|CF+~8=cx5uJ3 zh;tNy`Dg?+HCB!%NS=fFco_*oL>%IHITk#rB2$Ry>f-N3{nf}U;+IJtLv|M0od7s0 zn;}<$=&Nls%yUzSYwg5Zp)kI;l|a#1SjXE0=6KRDC&HU(?*WSE)b$4>%~IjvG}TF4 zGk4r!^z0y4lme%MP^jHZe26UB%R~B>8O|loT%62Z950^juP!eyzIylm-~Fe*-+1s4 za~kG~pef=t2CM>|FuOB%cDZzZxo~klcmD#id^)$PiEYhmq<?}CCk)@`nT3wfbu=&GPom&bPjMTHESFL~uoCOjlMZ^G6O|f9ntb z;;%Q4PtZYzqJI5k?bYM#D;Vrg7GFP2zk0TSx+XbZ=w>MW1k&+kDEbAK3krtJ7hkMB zf3do?yB5O0L;ZAn=8d)MTv<8&xvcD#z<8HmTp%dnt4r1HUUgtXU6s+tmcVmk-Hg=N z!O{CzDl12><_blS0oQJYcgL!E;Imwq z)#papfmVE6EZftH&P>W~8@&@h{nNkn#Seb*_x|i}{_*esi?cUhw2uyT4E5F2)ZF^)Q!yi7FXW-! zS)vwMj53Es?XYNFB?h-q7uKljRf=Y%vQ11bjrI%Jqax0vlr^v7&MVjp3RXr2XS)c_ z$tD?z=fVcxm*?-x@9xR+_9S-?q(w&x4tltI_{W7&fj!VU&dnLlXKCT>Wx<_Y1>;!3 z!WGn&{7;XCtWz{Yg{%!O6ENSB32>g{$gJMcOH=%US@x|xgLKcTz8`T7^795n1wG>Y zRljj9U|O)LaH0YW{%e>5^67!`6Sv~Rqr529AN#e3!QwTKE@@UGV;u43b0Noov!vHy zX}6oBM!k{6a4Ds=0Y{k^|41=8O1*(tZAr9NS5+m&sh07H=8>T|{FeT%wnQ8}?`n=!mj;7De|c>+eyMh7 zta50qd}OkGWV(EG4pa}1FWGwMe4|UA(X4wc8<^S&PVWUL4{hz)Pqo#$>S1Twj6B?? zuN{CmSF|oTr(Z-Cf2#NNS34J8O|Cp#TuLovMrfEroswx5Gz5WkEVffQEf{NoK|u^> z+;<+Y!?ZT~p5)XTS?VW+sg)ee$yHFmyn;R+hb-Kof$Bt0b?0DHxIW~lF7q`ultgNk z?hpm@5}u0F(iR>aZNL_PPn);5)z{Muo|iV&B9$f7+URd;@Zoq|bBr7VZNZg_26uD4 z3p{VCBRp@cvmynNF7TYT%84eQK<-LpcCrFBhl_7$cjD*K6x4Xr{A?o%<0}N_m|%e{ zr#AGlq)%2mDVXE_CSbn0*ohHDOs!BbCy`lXq#XIQn_YWUCM^wfy15B-gXB4w)0Q|s zL#uJh7ze$-Qr9rQTDnKJ72;&ciam<>Do5ivk{@BIXA&?cw<(VoPxrI?dt0yHzWJ5k z{yj%kjkU7MQdMrL3>W*Yykbdmb@KAb8eo3!A_ZaYnK;P!7s25L? zuU{@ad6Iem#pS&Rr!q@8(zW6nxG=V?uw5N+&hPT|gj|n}YyaR$*Zwb}(gyg(ZyqC`|I& z(5}aD>M=fa=`U@{Lk$lj=m%Qiu|{~L7VU|7>+C}CJj=+-Fzx{6D6CH|F!PpJMSyvR z%S&_kvl5l_)7$&QQ$PQ+|MR0a-`jrpe)Zzj;qz}yt*lQjEcpZByEpC#^7FNP$a1ks z1DNAxn#N((xy*WxNgvj!qB>Pfql!y~of1KxkUfMYP$_Hf3g!!P=8BB5E@J}bXkP;6 zd*b{9S^mB>Z(j_U7aqwO2Xe-)f_119t;(5c!QC0w=Xj>rH#a4PCrb97Fn^tO1LFKx z%siCxc7&WA32$32%nDg(1n(6qkdBU_$DLvsezaliup7Yz5@sCdJP?!UF{Vrk!2Hl> zT!QQ3)1G-%XD<1vM{yp~9{DtfeuSSR=UkbDEccowJS9VJOSjF~>9)meB}Oj8Bx2VE z9o3}{kI&=`d!Q^Wb+yG+)qpwMY~dJ-oh?oM8(Xal8}&0Q_0t>C>D8+7CGb2tv4qZM z^Hi#JVw%8wbfj%$ux+rnv$q3IOJ{3SQ?$n8aaGmVH4P6|4-QohjzmVrP-P=ik&#*O z+|e`PA4+*g)9%p)|HKA(4rLx3+_`P2jiUl*ow}^u+LczdWNZ_U!;9bVJo@GC zm3I@X50{n}vI`S98wX{M^+qaPitwDKI(SaQoEXkmFeiEDm@~%>O@j0s)v0@$RpTQR z%!kTxJdOmL57u<|)^zqYl{Z9ipByoy=18sDQ>yX7W-$x3{MPpJ(UBM?SQ4%7o)#}) z-qjpviF(=^18q$~@SKKuOM{m#*y&9uYSf%~=7

    LoCkPtOkl36=jZIVH0XHMgJlpT9 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 z%0AuzE84~>(TrU3nK#Jlw~QleeVZ%-iGWS4aYpK#H`BJZh9M_xYEO6rMcbjuU#d3b@D_P9{ zf6WQI_mAAhiU^S!>_3fP^Ya9BskgfZ=prz#YyLRCRCM7)%Wdcd zEuy6x9gACIG+9a9yJPi-%}Vdwo)|cyMBqX&w6ve3-%c=TxYO8rM@T*3Wwv6_kd55C z4Y&<60~;E**2BxONA@gE6dGi+UF(z}68a~7t{+j{W)~kGHDr_#qB9L{Yc#s@vVS1? z8Z+^f5HRoE;JFODiTCiTgl1JyLnTNM2~`kW1}$Rn7L-We)V!T6Q}64 zEbh$zYQ)%SooG#xYm_n>RrLtVpc8oVd$5oGWH>*s8RfHdPO1uN_%g%#c{aP>^w~Yr zXCi%VUN+Y@?iIC5Gb$!rF9M`1Kl!ux&`$ttZMMFW_W5zU-e@?N<>DZzObniA1h=>Z zyNDW+@Wsk$c)Z?Xwc;cixK~LoGX}dqL(aB^WY@F>%htD*TGK+&r>GGk{5}H}QmZvV zkvzzP`Sk-?N`y7%R`Aq<(l~m+(0^?>#r7yG0hM0KC%Tsk-HtQ+_v%YVc2L!#(Qig= z^89afGLBho@o&50XHqEks@GfO)5-VtNsf6ChO`K8+W*%57TTCb!Svq@8ejGkn{k}W zC5vf`hbP37OKVopYX!vrYK;5xTl6Wr-dQ?v7W;g8z-uoh3eoe2|0*>PkF0yPj6H5vM8{`|t2SM@R0DZC{aiOfwzgn56HRWWa|U=1Z%}5R%3a zqA2d{QoMW3TzIzo_i)6Sl;dBTN{5Iwz zb<|_;&-LVZMTn9&A?O86kU?r^fBmk{W%l-&=40KK*Pi+r&BJl7LCHZiNs|;%Er`+- z6xz@Kk*LOA5z(IlzxQwvPr6t#A=@ND3-no#jFkBbJOcbnWN$x>4RPJV0UeP*#2Mu+ z^??8r$TUn9vIExTkJG=Wn1hZDL+`btLxIcM9ol$2;Gz5T34J>gt0z@qUBsB>;|;gx z3CA7|nj|$+VH9{GX+lgR7vj7~mKvFi{K}gQw+0RjYEsd%JakVt7-*_%<0G|U(P>Nv z(q7K{!dUB!G^YZI3!65*sQ2lgZ}Hf;B>;gv%&!d~ILe-61zUjXidydO2tl#f>_vwF z5#9E32DjEa=#y?2+p118rw%l#$wQ2u7E}!s-(FFd{iIHaby6{hWKl@R;DP=IXbEmB zP5upi(erl30PA2*wr10VqN|{?kOO%6DkJ@`quDS_ zBGAX!pNP6&$QoG$(wPh`tQk~JV1^3l7j*dE$O>JAHsa z7%YpEyIS_h4crj8lw20TEY1IVj<(WczHiALC2B4bBBm%(@H{yi*>ldmLi~opd(r-O zc6Use9sy$F`%smj)2ZqyDI_VeeQBU$Dya=h6U9C*u%$l|=zFmG>2~L|*QZQUS@otD z5@7?OgCa_MlizGBu58%CRup(Q!f!#1h^}9kJE`!$F2-2WAxwYoE#GZf->zA1*x{$7Yj44I_rr`jQ|kxP$U+@yf_+aej1Ee`Od>GM3->A3d;f+^ zM8tl5EqxO38vAX%>D&3{6Z^g=-D|(%21M4t+mpi(q$onp6a7GTpm?;7KTd?_&hXtB zk;|OaW6v0WcdoA#aOT;~-cZ!upO@i#^=B0I7x6x)#70`l@KqpnCJaSEMu^io`7fV< zM}SNOQXi5}wpP891EW>qJqUxV+Hpoy#70U?NCaPZYgv#QjdSVj7?++1+GmBpC96jV zft{~PR1}j_-Z8hq>*t$fgJo!34HJYefJNK>ob8AO=92?>$Sj(zJ{BXp#{R#xEinLx zK<~vy(H($K=GwxNdI$if#M=PFenlZhju5i9+2lMgUKg2fTN7AUm)}8+@aL z3bWz&FM~rd%>>ZcSPj-TP$xSSlZ!r+T<$lcE4kqLyqok0U12ad6t#t$L*z)ULAf+>)^7?6eL&^-q5$1P6Ny??k^G{8ntAb*T zCFb#|;Db6EL;EzzP<{!zImhE3@%9_8EUb7_#|9T3rw}&3(gnN!ejyg@i)}OiyabZ) z^ITRZ2tzH!6u?hYB?`Uad~D!>Uj8@=;pBM#J8!J+1D2LE!ioPGPu+rMX-oHjSXjGs zR9g!|?0+_SzVk6IWFd4-`6zbhokf^gcQTwWOQn36OHcBH(Nk^mXvrLu{N7^638>@` zXFAf~*otTbOMv}pRVT}ZyZ<{RDD>T|<&SIT{s}|p7v*2WvP9Ce2Qb+&=~?&EvqUh@ zKBh|`9=Nz#y*l2BdN(h?g?V?K{*I8AU?4sPEpZ3!Y5oIGde%({EM^j@`ehGli)1*W z4aOOZ2@*t1!2kP}Oc^(P{1zV6HE>$P*%M;l2K}T%tt9C)|Kgh>>dNKBw|DFQhP{ql zpzvOq)j?v#eo_U^o86dV8hwjSiXF6pxsi!a1Xxq1N}g;l6}B9C2;}PYv))?f_u~gG z@mm~(YxwC2TpV?<*N&^(1ZLN$P`f)YAp_+=sr$*NLgo(u-7|>Ki6M&y`zlJDYE-zml!=`SrzT z4&nC6vvv+uJLi4hOo3HoyG}N}A3Bn&EbV!!pRe=@V&KCsy7yOhFEhB*N%{7>?WkxY z^z3C7T+WiXarV*m<@U8|3|I)f0SUo8B7!zg4%qvCRY34HtEephhP1}~CWi>wU=jdB zZ~0ScTIllc_Ue;PV@^$h8+pjZ3x^b%UDw7{vZt@IF+U-CTff-vmpV|X0LP<60?X=} zUN4lueh#Y77c($-!iRvbjpX;NEqz4-E$R4o6ws2W{56BF8?IK7C${xxr!<#WH-PvA z^kp;?obSZruFvqHBmTqPP*U|!cCN?3SjFv3p#OuJ_BRJB`JSrd8?UJvn;49ywvAx;^0wxeSUpU&QOt8t%&N}#g3ag2 zPTn8-*AA{DgLKEJI$@y%Mqb;D|a3e^SC~=J3afi&PJTsIjeRe96mvt?+ zmn79Q0z(lSsQNMEZMneOrm!zCkUEvAJYzltMse2rDiNZ@EwQ)4<)uoEllp&k8opDn zydVEo<1OKedXe;ZZ!-I8gER--;k(0w>;ua8O(ND%{)LBgHfJRzo2hGA6&{wAJ6WHu zKeGRPL`yc|-8oM((mHhuYfOX{CB_nby`SFB`e;%9Z~!IM6<@cV{^|Y1yh#I)nL0Cx zo4L6M%pHw1NS$12DIkmD?;G33S&6xtxMwV=7mdE8K{dYb8eevSTsmjW^Vtw&5{QYp z%jHL%n7ZcmUSBaihv>XYh5rue)C>pSFYUHJ_sNVk{}`7vF>;pks^{nZlJy14Gz6ux zK^&Bsp7&0Y8qEqHUZW@Ui5yc$T2GW0yI-G%U8P>iLC@Zy=^o*{ALD+ATrNX)k{(=J zpgFo=Ar57n9q|DB^v24aqisL|G3QI|@o3lIbKzj!?SOG-9}~n}d3K-YYOC=v;Xf(Q zF-ZfI(K7^cGzfuz#CFCr0gjoM6ePG zWcU$(4$$@?ed0^rzv$1bqr$)^$OE7r{7&o$A1rn2EhKX@0k#diGHH$dcZ*^BcIpn5 zNsyZM`F)uKSWgP^-0tHpvlZh8xpO9Gm!$OqZhrcKNO4$tGaMzTjUD8Gp7LXJAX9*6 z9JFjf9CvxCaWyr0kd8XYJ9rgf6m)%ZIfcARt3N~Ux&H&7I|fg}ka$isP6;i15DPi* zS>|uLo7K&dIzZUp^e`74D|91MG{##rlV-TWKD|hTzcWk!RC+Yi_U^HjgfBuET?~GX ztHds?O~)4hxuHko0mnI5kZG~t9#2DwHZ9_m7V0X4m0?1zuo>;pnKUJ#&R|>^Jm?2> zY0gLlCo1xw z=L9(KWjDy}PYS6M;d^(~w~|V!)W(-6-U2kgRIw^=BB-~_97|eUS=zgUGwp%i@qdEj zZoNR$`+1Vew_=kQ+r5)yd!+XKKh`!EqC<9(G}kAV6dh_T@tNj(H!a4RYtP2UV@RhZ zlK-nUu3#L1L3omN39vD1X?MDdjpc#tU*Vrd{}}{*hc0d&#*_8i-|n+FEKyZywfac+ zW$~Oj%HQ-+K6^cpB_Bm5vJAJ}+L)M=<3D|VOZho@8d%#{-KVnpUE82T9*abdkf)6L zB2-$CBWCDgwujf?%rmzazRM*+B@J{d_D9`)1CKsg>KtT*`kdQTMap&r0JY5HI!TGqJ4|A!Q} z+PuWixybJ)CVN(bmQVpuNLm1eytZI&gKb_AZsrD6yR{UFDTVpIM(_H26~b`@mU6%c z^`{;U7kj?samth?fvlOA($c;8UJrGB)ZZGWnf`cHJB8X9^ER0dTp21EexQICu#PWx z8=9+f*nqPEcu-W$*WOM=y{LdZ>XS=3qRng1(_tfgMfj(Q;U;X>{wU~=f>+Yp_%uC3 zwdn=P+Tb_ofy~1T>>bl|-{+ay=5O=js})09*&&{>+E}?g9^WcbfpAiofjQ)kDg@dM zs!}CeTlSX-OiaGptmP9eq(nJ+CGlXz>sg`Za^EAmhnuM(Z<;}XX9T1#L>Rtc{chi5y#tle$jZQ zat^+Jbp>Mr1@ofMpm(6MIBrA?ZeoQL8jI~KA^M|TPJr4YfOz!6jM>^?48PQD6Fl$i z#A*HK>Y{$~ukqSK0wDd6;U4-f@voi5t~&Mt5dhTA9Djt(YV7KbL%>V89AC5VDrmx! z9YIj~(%bP}$)%^zXAKk5yR@ai1s}=Z)iw^gHy&Xlyol7tV))uwq+`!oK zlW6%XLz>$Oopi|*YDO8>_u61aLWi&y%-_Uv<~ekC2})xMe#aKPYQEsl(tspM%<=R{ z5I{8?c;;A)o;XU~r%5WF(zUP5Awz5XXH;bUitUYfNT2o_407u6h9ta-X~T3n8gn zcHx231ju=)K4pxtIYi*qM}A>jImG}`!QlNLDVZz1JFkOLJ49~>I=B8{?m@&B?p4uA zVP5Eq6wLBZJgc59nP{q*IDat_#Wv9+`N9ax2#GZjeT;2<7KI}GP+nVaJp0UD73V!M zvpZMMi>o}8{&c7y+e`bL?AaVjP-pgI;cNEigH|Hz3S7Mfb9~;2Gb&>{2c6V#CN2@jCuGAEi$+xxO0Qz3J!xoBP9Y`bZd?BT=iw#lYA-Si5{_?6X6@~O?%o>-+KkCTXMUlM*-kj|qZZN5F8DV0IZ z;t;_A4=qT*M4$Q-f$7LjK@0eETwAB;4}sM|;9i|h4dhBZ#C+rYcqS*g4fXW9u;{%y z1@o>k>bQlAml$P^ei@N0v!~%4R6+HHqWUy|zc_BA^UOE?b~5}nXAT)kI7h+g)-=jN z5%E29U``kgp}rsme0YM7O@U#y!6T{GZ{&=%h4Jmt_Kyt@y{+ zpZ}!wAAf#V{3Rn=+e+5Q zj}W?eq(@WEjgTZnbR_`9i~&;V0wxVM1!d7gC7U^k6YpAJpcMJ zOJ=Rqtu0U@YUGb~^CJ+t+-oUvin9V~27mnMZU-#TR{Q~oI2u|DIQEJsfS)&K-IHTBa65#$*jG3LcsSP;wAYQbY0eHP)D%dakJsO@GFi*^&4?b`3lCw z+l?Az%}_E(HyxV7s~1GP6ghpvgIG2fFryH-?Jwc%Zwzr2OR22&&xW9)~uvV*=^YL6s78<`1d25U6jxko^OV1=VBt|~? zo_6eIfAuf~yhe~5uj)QlOwG@ES3W}_&rI&sYV$OG?{2=leDK}{=aXRwLiy&yWe4gP zzepEMxG%jzU!;zIK-%mP>}%@U%-Gtj8D{IV*d!A9xwUFezdqrlE5}tu3d{$-@8jJ0 zpH)b?<%XO2hSzx{pH8bK8{;^cRP7gL1^rx+Qb;np-M?y<-6@@dmuxBkg?ekcnghBj zN47}14(G`BKC}N7i*X)j&1)T8JOlAj9uJJ4jdK3!eWdqCgJa~GX%9IQ`2z=57aa_w z?hkwUyE0>OKKqo|cZCTv;?F>l^Yp#_4-si1yd#SbQ*|kp= z)nUs3!NSJQv)RVtsIXRYA>-geNb`m@>%h}`9}&E!i|ms@wli_g2Pn0P#ukVv<+!!X zet*7 z^QJceHsSbl;)!D3-M|NKr+c3_rYq0R6bJN9qOY&5|8mkS9+d^GbCyw6bSlyWJQH|P z5ikt@pd<3IZ_NJuz$ExRh4P!_e^idUl+WFwgPyyCbmr=*p{c)tV=-Vv>C8l-w6uQ@ z`>zWH{Nf|P8yspJL{M?OT9csKk%8KNnZz`5EFLHSr-M)S!{#h*)yL02A2R+niz+GH zUKN{Q|0f|F72^d-BgL9SfJLT}b_h;j=>fsD2@g8!U(b~X8bWk&tAp=>O*8#}n`UBw z=Jknt|BIt}x1eOiY-`0$Fv(TN%BxNoi_bY4XHewrhfA!x} zdW6QUCfTNrUJ@ZwbCL5JEu}7Tc;m44l;Lic@VzWCB_-eEpB*Jq zG_VmxB9w6RS7T4QrM0+ErCp|=K_W}CXV_Qv&Q|;(;xOqFSe+T>CDQU^bBnPr@s~I; z*$&}^U&5I5d)W$zCN9K3MJkWev00LYCQG75=*IfoPC zfZVAA3?po0Qv^@+635P~wsk2vPm>LV#Rgftl6fkcguNAR_I-y+u{|i0jWmLAviBsq zeG4O|Nb?{|V_?8vH^)V%ucgn-tPAu}h@y@zVO>kZ_wIO?U6Lo(R~sjqg0>i%cyJ5n z6if)EjsbsDG;)7Bsr1BD%xRSXY8x0D+P9JLd?Hfc{ZuUGhse$KgNmSbt8~VXyfxIUPl_s)a(B#Vj#B7lH^GhIy53 z`_dNBfLW*K5<;V7yCQbb(`(O|dDj7JG>=|U=I`nh;GQDtAYH}Pb|rQ`(L|HECqEms z#{KVSMlo<<=28adsw(F^MF9XMCl)S*DSzxIwZJ&YA<`I3)VEe^1c}_S1*TmpvXjIa`^FW>Juk}nFU z-dhEGeDmWfn#dme%lV7roCgs>g4lnnM_s;@3AB%VTEunGy`$Z-*tsaE@an4iZWOp& z%%t`M<6s{x!n{%?1mh8bAtr#*nYG+%#{2!nj#&T4)3bKj(gApS+%mE3?x}*)>AwY= zj|H;Vi89_K|79XH|pA}yB`>hJ9(Aw#ivqT zGlG-4Xn6x(S9avfwATpBRBVM$CSDR{+y0rOMQ{WWX4|$#fT7IIQ=Dn>zo6+42%t*r zx=Oj?fqUDiy{)RnZmN}T_Lc5V_lR}bCkF~);D>&N_&ah-Y@(ou+^S5W_9xH&9d9#u zY0s!w%mhhvz~)T-S5f!P=-YGlY1nOP(G+cH;BiW?0v+n%B@_2aaXJ@~y5aDS)zGDJ zmB9^bz}6|H3RET4LpSKD-8#6}mj?Axbuty2xUHYUN*ET)EFF$uh;>YX$8@E5rTnPW zDrStkPgEEuXzW3PVnQ;7u6C5I-r=Y3e%dQgVK`RHl6p4x0@mQJDDvG>M0iRR5X_-Q zd9gp!S@YhqZua{mBUwdgpHu2H>X%d*I$9F%6+9u2E1!^6{@L*JZ!DdT<~B7}%t6YB z8$Y&Sch^;hs;*<5c>|D5S@lX%Mz;0&}m8 zOJjQ+nW!|#)I~v;lfpF#;23~b&r*1VUTINdEIBI-2VgS3i|)=u zescr^V%M`!-V1uO_WX@eXS!{qRYrtQ3b-K72{YIIM_gGiFtnCyZ zwa?j<79sO7F^723M}xR9m=T5r?)u7#)`g#!UrVk$1J--Dr*B4wu0Ld7J-58@e|!~a zKU2(N$-a^K^22VU5u7Pk_~=gWYqp*XcjUTYZ8FWAI3hWKqy4uU9HxX%TX zL8bl9t(=Pf@yb`Num67MP)+t-($TC6B~Q=*g5ax-@8=_exT3A=E?#JVD;; z9h8GpuH$V?(x3f);&!bWU z>(@pd2qnWh8#wev0&3wrdy@VnP`VI|-Sx{X{2#PmBHl2=l}$QO1+9GvffBCpAA|87 zw@Gnma>}L)A33yi&PnANc@HRcz!4(!Fwj#>`H$(5?;U6z10oMmEK6q#4$#O}3>Sy> z?%|SF|Nh?iJHD|x9*H{M_SxI^JlcA7)QR3>^Egq6!g%VnQZ(K0RVI?^q@pR*P%I}D zSzrGpbgO^XUZx^7JMNdF78yHknW>R4CewH45Z^GZL9HG&VQ=G? zJcW0ZSOgLZTi^@&h3+4UR}IyxyJZghjciDW55VDT3_6qaZ7>>XpN-cp;oygXEH9-J zYqK>TaIIoSAuxe^D^6u}pJh_gHzeMiuvQ^;stLz`7Fa0RrH8|P{$m^RMi?DSm~b)H z28bTTu#~V!cV1_7LuDekvsJf;rbSc5ba$b=tskiK%4y7`qhI{Ej_ZFYIN7IZdj8;7 zT~hBpsM)CI*_r21`m3}ly zkA3Fcol7~&SiNfgSg7~}0!^pD3c0Nk0d0!=+(7o=D*bpZ3*{b!@^aCi9Ub#+Eqbsv zb5zi%7LdN^eofa}79I4LNyqKY)g6RuFNDwX5o8y+p62Sgm{(1amx_9B#J<47>$UzE z(5=`6?PgwrcPpVp?p8MGO$RTCi)PJZuTsiSKMWXP?Nn4vJW|Gc}#Z&l|LX`E=dOt zGw;MAELfpqUkGp^@VFG@^(GNIbV#DX z#S#aXivyFlfe6!ec{F*78LeT0Dery3{e5gJ-DR`W4ZYpqmF}dD_}%2_-LKKRLPNfk zEB2{v@!&|n+Rk%fu`fj5&zz)6s@_km&p5|N|J@!=@`_+-&Eem=$!KcEdxxljOI3{x zl@M@4NRaFplmwwc3y^d!VYpLU90^A^j9HWYO`takvEz2tn!dx@uaLA$e|^XX`C~Y9tWWHf=4jBD<1=Vw2XVE=N?%RX#sJ!tg)L+7t=^FerYl3|PU-CxdyNoC>j$#+|uB0?XH zErtx;!!a6L*BOPMdcwfANk_E<)PR8*sZ1{(Z~uYnQgV)(@Od)w!P9gNF5Z{q(g|OL zQpH2S<7)X7cuA)`RTRt2JDOeH6^71$Ckz{y*QsKiAFS3=2Jd~$zaULj(YzuW8mK~+ zo&d2-1O2b@@#`KY0ga{V$8Qk!^1-(d>ck-QzYLxc=JRXB% zWr=L#Bb}2z!`+)L@iI*B%snc0M z)wF*UwR!RMh{iID)1VmX5Y&Y}16rHQw3KIv~A7Q?0ICk?R!pCKN)m&ID-^AESDVrm-poF z!ss34qkcKC$4a1i3h1OTsZsu6i&=&wD@fDI*i6dJ0iv8XK(%oj!ED)_U4uxjLBzBX zIZO-nM{PkD)&0XTH#rJbK*jmHBZJRPuBvsf z&FnX+9RnPp80O=116(aJ!igFB`4+UB0kLy4RB~ClMTg4~+*7^#Un9|IHi1y8Lab<= zNV6l+o4>aI{@#x8I^OX--gvdQ?RB*6b-?a%K#FY)hiixgp^6;QcO3G}9>e`gBwTh~yS>XVCmXQi6Bp^Rv;Ai{N>sovptnO-JK2_|FzoqE( zL-8x;O34Bv4PXgBM_fKs)#mBX6$)mF#0c+NV`Yy)SSgJqQlB0k{8Z$p+nNnoa8a;Q zm6Qy~A++q746<{*!ay`MF7eL2SUI8uaA7($hc0G4LflQo?4bwUApVRMqBpc8Yynp% zG2>{@ja%&FA(8Z1Wl;8icK1u1-b88XkiB;LXJkOS?~89j!8NrW&DG{+Rz(45B+_d^ z-z%8>Gk;Wc_qofVf6C7Ds?VirCymBtmZiLxhBvVPaQ5^AsMxQliD+?PX4v@r7%g!u z!+ar*I5&6-Q1FO{dfJ)Bt>Znv{*s$=P>W+xjo1*UN^>Brr+oiFU*WNFC&}~gXYqiM z_QPrSbgGOpGG9XI!rLWfk`;TVIs6==yxI6Ot+uyjQNE`jc&tgW9HF zHRC%g2tF*80L~?aT8Nv6R)IR=6XBvkp>-0LxMDST{us0O5um`&aV!!{v|}q93xEHb zoQa9u&*0aZ2(LuNX$B!e$k5DY~8SKF=;%7F_w^#Rp3=%@Lg;`M2 zWp&{>AzhR)r9|Xt$NE(1`B{zgd!Io2Vog)C$-wvcyhWF$Xs*ox>)|rQbB}-B{HsC; zITFNtFIwJ~z0n#c$A!gfW2d|pYI^)e2)j#d3;=Ez%JpB^f6sHH`fDB7DLwI zk4&rX7+1>Jt#y7HP2@ZNQjsrqE??me2AP>P5pX_>gXz?6xG2VQdSu7$%i5pHg&_o# zpqSQyTO`8FV@$e;D7#LA4OjWNRRDK+c(Za-zR+)3nl?Kudq90m0==nfJ(oQeyS%i* zsi3hjtIJ2LJj6|HADXqkM7vHCao68BlD0aGfc)^_5Cc2A`Q-h^Y!LGyh#XY4aer+r zdh8%Q@wZm^*Vl3zcXtGE_jCeZ(=73CTolyNd{F?Np}BEa_Q?{8a9-fm|Pr(kVDVg&dw8N->-Q|~lBV%G zqDnJ>aJ~Pd>O7<2dcU{-Mf6@ri(aCR79~oe6N#2YH+qdag3+Uw(IrL~qD!K;7{Ta9 zNswsK4Wf?T`JdmbXFV@0Ua%JD*!R85wLh0Yv({LOQQX?^Ljg(S2@uZ&hGp7FSu`NG z6o3As`jf1-t{Hqwa<$)mSA^={1)Z;zf1UND@8w+2r|7g4e%RR-{1mv;rLLFNM-z_N zAOtwgj9`r@#Aj%?F%i+^5?K_Jvp7YgO5_Zf$EHiTpY!$g7zcenDVeQxKG|4j)R7h{fX2zA z5Na$)tu@M8i~qoF6)+-fx>r`@T|7#MU|GG8rh|$7Quz7%&<_%Ma@*{G)sJgBci-G4 z4dge7nubANT=a4taTD%qChw-?%Y}JuhV{qYNpQ?^s%+C|k3X+W9QPO*+Yu0c7^eTV zswV%fyUD(r*^c`xqw_*UoesjLep*VgwVG|V@ZnP)jKt}~c*H;Bw~zXEe7Ay17`0A& z2n-Vm1U9Zk$Wdtco9F-!+mK?bUsE$_R));^0*48Sx6&W30r#yGYKVoZu3YSo&3AO* zWCdHF-NdgJ)*Gm&_)vf=>J&R`8;h|W511~v{iX;fTEQr0by88RKI{evyOayP>_NS^ z;RRPqKPJEtN4s3ZiVu8o#2@aKC?9?tih8H+TE<6?#-E8m5A&?ozh8%1euqj1o%)@b zLCyk0rBP@NoNxNi@l(D+1!~iD!qr7hccLtgB=z}W0qFf+UF=cykI379)5p0_E`_f2 zE`k^BkqT{Fx9i2m52Mym&!8@?4<1A6>+zS4C(Yx!zy+fq1F0?CucusJAFlMJiEnKy z>YkTkX#h0)zrt0FZyGryK@8Fb)~+G>0t-lE332Y$5e96Oef5{Ak-`5U@mMIsjLK_Q z`GCvewRmz!T)wyoV~@PuRAY3nP75u)4TA-En0PbsXy4~>-~W`!>y+u;F%$Hh=?u%n z>E9oGIMb&WgI%TPIHve;`QT-QMFjti&8`GJL(%&22JL5QXvT}af8*7>;J5XV*JXPk zKIZz*e`o@H6w0_{?NRd1Sp?Sq@Q@dutpi5#XIM!Yff;P)gTzTZen#bt8Ss{1q`(WR zMC)MH_4lCQWnQA&E+Pja9r}KwSRW}dzZDmoU0lbyTKo~zx==h7gi8xqLDWWN2l`>1 znfSD4?QNR^d2F?<_Xp}c7d~^gu>z9K7wXuu85Oyw&pDG-q1o!twCBdD7Dt}$bQpKe zw%30r6(9XEriBUoGVWOY%Zd6pXsZ^)4kH zDh>GD>HD_UQf9&-YwPhaU~Jq^xtV5R4@RU}=tH-dPDrBZ8lK!T8$R=*(m1`1VLlC1 zJ%zr(8GzVF<}_~<6xRCEm5=nS;5yMP=&$b+XI#$yr@IBm@m_UMh+A*lupNh6!$pTB%bsCr-6WYaUlr?LsTfz3tr+e;En$+#X?0$u<4>=ytFVITu6jC zrF2)A%pz`h?0aURPxaN`y_Khb*~8R>j*^^u0&?@kw;SQ3RatLD6<>d%7e*-YYZPXH z*2zxWVU(?bl&!PN(J}u03L*cC-3^CGkd+BzE|xN%j07QR>Y8RP{@8KHaoEFj1I|3; zpCVyp1X%!UiD~s!AO1D6^ep zs71`7iZ0-Ks^BNCpbo8+(1(h1G*dZ2%-;IVu^+rs68D?VD7VyVliE9ZymzA1_t=m! z$7_@-W<*p#wfKl-PXZ5USG3bUA^|UhSQYxg!}sV*MP0h^%aopy-Kq6hie@{#%|&2v&;{Jk2Owv&w7_#{pT(A zxcfSawYA4gf{&senT>&5FKz-j!+4+9QuEL0(i~XCOP3DpJNE7C*iqKoQTo^xe%3-h z8~0hG)JAfw_2x+0`hC;bN$+K;Lt(TQ$#QuqiCK<_U470&+{Rn)AMb6*wIp`7@`Y|Q zA6Ld+NNSvbLWvQm3B?PUh_&ZjlkDXSZk?7=uZ?(XLcX|HS?$8UPrMv<@Tm<6D$z;7 z*cur?O?#o7*a!f&msaz|L|^iDJA3ta)zN9r_UU(K0fH5WFy&?u_MCrid*H9Itn?s7 z4!%Rf*5#TX)P+A$R1n?vC>%(h7=(3}4g#xH(7>O!{a~ThY{4~y3K&REvg@!rBwdd7 z84eG+lDJeIlU)TYJCvfL>n@&3e7pM%J{K}!40;AqB#+-&DNXDz8Oo@$n5eU;uYWJX zfq0RslWhMl=iOz@$*hQ>D2tZpB?saq3hd9zf=>gt{p0-{QxB5 zgfFiyxRLKH9Hk(i6t76+`kHQlNKCbOE)EeKYg4@V+p)oZ(S>dSK6nY5BnhB(Ozo^` zIyH|qz%~rH0JE3_RD%OLP&W4D0d{ZO$Kzrt6D<`&2L6RU?a^5-@uXVj{m-wz%+&3x zNoyWM`FMN1Rrcuu_mEH&B0(s~f9*7V(8)UwaH3NXb50D;TU|QXUV`_)ls*5jOAjcx z-O|Wv@RKlWc2j3rXX_1qU=Igo_hk~YD)cDB*t*BPGXT^WPUvQHI7J;NqM$BI9SxE_ zR;i1ov}yYfLS?SiR@=61CkZN37p=>=C}|Ti2JxDXf7|?qS@?_eciIX4@eTRRI6&|I zzc*2v!skCH_eiRSxhkq)*UH542+h*(0}kKkNTNU?57Tw%1rT;HoHhk1>o&$Ywu5(5 z`|th$mSw;);#>q~BDOmMqULKJ==v(7h;Vw|ZA%r$1~?7=+A!m^?WVicb(3l{>Rc4^ z1&wUsaFMNmE;%wuvzaa(u0U8@6(C1Q%zkV)b>r}t?Bz3tzSPukKLM1<4X%*A&hry% zf15ceZpjxZZWQNV8Xu3oHWoNKDwp7SMLd+S#h4@uReIh^!~Hidr56@2Q97{e*te@= zOHpq};bU9y8EOYv@263WRhRH0pCG@Ieihibk^qx8Xk_Cyp@BAjAu{#adhc%y&pqG{ zs!8`$@C;Q(Khe=q)X}^8%l|L;lTfm7C1Q(0vQojw5Zt!l+hX5XWoB@1-`wO~+3?R) z@7T-=t}ZI(lZ}G@N`5$|r=STnEymU-vV(^q&xjspU_ZERW71i{A8k6nR70p?rXT*% z_4q8ftJ1##no8|Vbh-8eba$hOQ~B}QrSCRK+4<$ZG!vG!hiP!UHbDZ%?haLrVT{b{ zgPDe<=wtAE#48HqBm)i(&7`TP;yj_%u(Hg^{Nn0F!sKZF5`v_(|H$tWzjDISU_A7;VP?84Eps z0QQ_8?I(ul?py0EE)NYH9b5cjxtlMqT<3KZJ63mqEs z^8;#fzy?{X`kV7TLYa~s7o5@w4SSD;j+G{+>s-p^;(@Iuw>wYWkk33(b_k=OnzO={ z()nLce1MUngx5cRlv`aIsqI`U%V0EXJIoMfqYpczc>ll5Xa?Zx5Gi44xXnfrmIPkN z2Xh3x5ehkdw5A@g4GGN?)oG+b|EX6k$HmoT8Wac(`4-B6JZZZ;pI^qmi6E9#A!R*{ z>Q7$geUZFQGx(Z-vrVl+)ig(}Svn7|I~yc>7BN$7tJ0MzwkRc-$J$8tVEEKG-oE!r|WLN~7*SH6Bt zNAA_Peb;WeGOGmRrk*T;hVtoSHoZt zc`sH13RIS6yB{^A*7S_eo0bE#`WzoBuJ>*YFe#%B4Q~)LLZ)VavWsGpeidsK_u^-k zwxq|zi>$^9ZD#_mTNN4&4^vL=IZOR4r}D&Y;)V6)K&wrFjh}ra@q2H6ctrTk^WhgN ze^o3_8eoSS#U_Xs%e;Xyl7Ut?0N*{x@(O2gOB;v(`Es;RiZ| z9?7YYQz%9sn7;o<#+qQtcX;GFngHssh5aaZZ$0W>YussxSWDldh5%U|>M4K^g2~~- z;$<s}yp5Q$uFpvHfHgkpYLu5jZ8iEfS&?uJe;qm;ep6V;S0=XQgbVp! zL3y8+c4pkUV-?FF=k1E@6InUDMNP%GzH>-W7p37r1gMA_R$CYeLzUgaAGNKkN<%s2 zhZzh-r2#BjH+L2=V01WV;fKk!#VZCx^0T8m4|d2=@O;pAP#(Ufa7TKik2QS9u*V3myCb{97f`_)Y*)F{D#R4*3$=4Qq=%OlLn|aE}7LQ;j}M zAD$fWk>=vglr73h<;VsvmrkY~o^X9Vdwae;z92Z(y}>w$pJG|1N$@SDl2?*>r$gAXlP*>RE~36RMp!9D%?Afm7i^ydc-zh{ILQRUpGBT>+#E zUD{nbgRiw()6v=R6pL|PG5YdOnAS?Eu!9WP2q9n*?~n#7!h>8{YIml>ilhf(;2SetpcORU)pEBw0VUR;oxCu!qU&jPm*Yg6%o|*ekPj8iEYa|Mmhz zCZOC-T5TqW#TXL6D#=yaxNnuK?FBdT6BkjNT2*hIuLDVy+0~lPJmlB(LCm!c8$M z%lOx&?Kt>mbxGDbnjJqnC|rBG*8)SFA`7rOo*6|o0ZyO#fSxO}hfIne4Qy6*b{U`f zpowYV1VCW@2N@9y#_8Nm4-FrABxj#a$v7m0&-9L$PvZG12U%XUc$G#Mc-xyJ(J#Wy z5v4X_n|z`Eqg^a%Mn#%m#>GKCp>D4(ylKC=^lEOlej;1m-?6?F@PE%Vq&0qJD`Qyf zTWKI~Obsdall*+fyNU;FWtiV65MJ_bt9wWlWvRaQJNY3Ms7K>4M#nPAbt-@wh21qg z+E*wnwU0@`k3NABN(Wp_%U*wkoOSL{!REzJ%H*$;J?%Lq>$n7uwXa6c<^dqCV3{ks zOYRQnNv=_#`5!TJX~OxI7suj8CP6N_8n=*;t`0qVnBV)7Krh@(9&K^Ij2rx_2ABjK zw*M4#owf$E0p7F@E#SJ=(Mo@833wHl13n7^+TF9urD8Z(DE}FT{2d|h;y7K-t4o3? z5Fm2Nl9qBFo(>!ADMzRMdY5*#{`Nf9s;dqGH53)|*W^=oA zWcqbdXs2{)`(|0jnyDP?qSkG@;koCvECL|(*bL)B1SpIJ`M?_a00*LyEvV$rX@K-q zbZL=V!*KuG;ZHYy{15y*W3Z|?MeXGFi33blQ04|8glq7+0g z3AV#~paOj`0dARrcW?Rth{)|{i4gbbqHi?o6YsHx9mkDr`RrFXe9(>QW8Ln?_l@{0`TaW10i4xH54w74l7xC=i+d%@6J+xpKG4WB9M!=>9z zZC`1ukG)9~HLax{FppmyIWi@2yl~ccPVv-|c=iijt zTt8=6WRHAPH#gfHQ@UUF`^TTt?&i@ViU^Ub!^MZDPghwu5qLbHtSW1yaJpN7jSYHa z2Iu2%uo1Fr26M`s7jWtE#=G`CRw9ZY{HDoe+5?{!cIaS-jOsj~37yLhU|z$7@Q*R^ z?=$hUJ;=5DYX`d=RX_6-tzCJpHW+QehSzM}hF#>Q7<_LbdobI;Nq8pE1RbMfRr3p3hPO5x>sW2Tgl#QO^r+E3qh8XddJp&=4Is ztWP$-4hR4?P?}ANd?FAnyP0d{_qFFiQ1+lB0zIXSdxVuI1>}ok(G0*q2VNhZr%92} zXIjkr;`u+AXUow_%Oi}3*vx>-D&XG!0uu+CEAhdhqY;QG<2ZhGX*&=LAOO%;UB-Ca z099A6__$9Wp()ofeK==$yMUvJ4}cSMl9`^Z0@AT{U z*X@h3tj&9yC8eyn=acv;VX+;Oitgtl`SLyoi}@Y$KKz@0|Iw1gvEplKt>=+HN++L@ zeXq^8NroFmqr$bOrt$Al>fFqJ8+-A2$l|#ck=ucr`Qu8NH^M>pv;ZDvnyRMwV*>cdv(Tgy_Twe{8*JO+eMS z#DZrwQ|71pKG$iSz6c^H$|+VO7RQNl?vxuYw=NKH*!<#SAgsbaVI!=giXgUY?bwuS5n z<DC4>qD})r~>IofD8ew2Jjx1P?5ez?eG! zN&00Fpl8TEr!L43;#n4ft)A$IU~rbryg2ofF4B2out1H_#NulQ*%kbn1j}BXGX!O- zmBiBTWjipYvId^<%kFn~zN`;}CSqi6Rcx9Y)rg}E1>b8M_b+ck7Q#;4uD@!cYyRej z5{J4()WHWPmw=IC)0A1ft^AjH85(${ZIW_phvTi{3>k_MAlKSag(=-@{OyuY6q8!z#Fnx0i9Pumt*9t` zIsAsw(V1A+=&Sh`k$Y2KgeZy-6Aj$ZI_pjoCjz$yRl<7ebp#&fBHR_%0Q1v^f!D&l zM2>hJKq?GNd+J51%BYDZct4kRO{d6pj7gMKEt{pLz2Xft;Kc!+inCLl71oHPIA^YH}hW3bF%`AJ64_wfDOGrolkv)fwCN6f$6k*TuW4FY zQj6sD(R|0glQ#U;S}TBz#Vv* zWgushlkv&l)iSF|1Wjq2riNw2;CI8fACGl2NO<8if0?jBe)8m;tFY>v%JUFL&YA_b ztM-cu#fg>AlWKxD66dlv*YGB;_}v4F>r>Zv-;P`qUUMVWIFS~<@b6He?S!2rz+|a# zAejA6zvwD{VQ~EA-D9L+%m|eGj8G;IiwljvTWoUfg6rH+E==D2ZeIq4W5R5e{5Jgv z$`b49G1~r(rpVvH-GBs>lr4=k31Muzq7m;^{UU0;-e;N`1ixcK#7=cXd$h!_=i%E;Yrw{c9oMcUpsa*G99t$xRbtam$0OccJr30lTYR@P11AFMtCG>{pZo z=(FjLz~MX+paIMCi$t_ozDLNsywp6G7%7hG_>zV29&vEo3Vv40y3&V-#$?{}43Dy3 z<2#B=?r)hZH$2jl#TH{pUR_3wi=#GgQIGFd=Kgc$6bt5*wH1GGQ%^_0Z@6gIh~91G1&A0!>a>08a-Q&x5{zN1 z`N$HOc3V*Ws@)dvNXIw+N0plKoBEV0(S>S(`A(}ks~~^&8$-O%fZZ-MUcIy+* zX+i`EG#i{_{C)mmyIfLEC6vkeu{@y23orJH6Dce5TcaW~Vs#WhX<`l>hxWrSaUnb* zgJ2`4&OuGeSG2hJkjt)c9}+E z&qDtg->bEds^(q`Q)iK(Csd_uBpJ!k!~-f3AWgA28(ZJxbzXE=s4fWyEbG!Q~0BJ(9#(PBu7OjAk=&1z z+gpswj!#rCAJUj7WCEsA+Kh)_)ukX&C}XY_f<#NTd3r6;)dj&rND}P6z*6*l7g{No z+m_d(^Kr5*q+@3zwW?MetS%%Bo1<2GEy z&82?Tnfcvt$$0ao6|}iAYa9KTVF#usDW_4n3xHv>^#J^35o2z>0CN{#Hljy!!dDoa<+3a3d? z7IK2gQ3HFqu{Tk8Y$zSBH(Acej1sio;?T?4LG7S|{JQjvj#NaA!1^dWVN*!3si{dP zN$<~Gq0+%l@Z*Vw$GLqk85HCC$9E-Bl5+P-Oy6m>j2d zz_<4W0?E_#n=|zh+@0{<#18$i6~=bAj5@Sn65{3F%6CHa%#W3077?UNoS-gvzL-1$cIl_+Yq5$sk~=$6 zgoH9%?ffqYdqhKJm#F{BwY8>?tznQ>)=s-+=TazmZpwD^K}5~Hnf|hl%)Aehj)=8G=78Kt7n6?#F#vE6qSxMxJ7^(Tf~> zF$W%M{(T5(fiLfam(0a_!?@?Y?;FG1ZVzd38s?9$Y4@^seY$aT-)A=-l zH^i&8(gpY5%G0aJp?-1zKPJsTr~LgO$|ZuUv3n#sRcjse2)OfD`^|`*xZA#nw^aag zi8OTJiK&)&^{+aiUw<*q`-W1WG7*YqwLaJ4wZ`2jb&m;&G#%YB4dpxOPHW@WjmD_y zk0kFLlB0+ufZB0NG?1qH(PE|W>{r2g_0YE18^fmiPdUqd*!A!_YIG?^{IoIIwPCHa zA&oVtDA3?NsF)s?q4hw0n&DlfC0=Ma!TgH~oZd_$yZcwFORrSH;yMjK;1t-2YdUl( z{Vfm7iLnsDbReO3l6Q>eNwog*3U3hXb?4wW!>1a`)EC9nqD)H#SfuxHg7R`8^bLY( z7X4eF8Ie~2kI4d5B1PXEruXRt@u|qgEPdcX4ws*f?sn? zPr`6Lomxld4ri`PP=1B}`e{BUIibS38liGUv0(2kk)PC0as2u(v>6~0Z$8*QdOk_- zu*=}!es}~SAt{Wd7A_jzFnU0m>*#2p>OHT#b*g)sG7EGxvM@cYc|YJ#eaOg9)7 zAWT4MMfAV_y>DrX;`W)cd9;vES$ZD*khYIUcH@5wFX`_^znnR~$hDgAvM-b33{%Qz zNe2fTJqqlm?WBtXjIy0o6ETK-i{GdY7V!bWWFHgwG3tE%NC|QQqHO!C$Pd~SJv?#` z#J2XLF`suaLC71aAAf3qW{-x&t%k+TPv0qe4Vnt^68b@6FwejpqtcB;Xphrs%s5Xs zyt-v1N!)+l|JQVw;v+1*q`eH^-_#3nq&=h;Z6^<5lV9T{P44*nGRQI$%Jp19I8kQv zKS;A3ccEsC2m!u8$8EXCB?t0^26;356@RT1=&RhlqX2(qA0RzMpD>xT0zRYOys$%{ z5y4Jog>(Vxk%|zP&I*IjZr6K2Z6~`NjSk4p_#!l}=)7F$XN_!R2t9l>Z)3;ZCW zeaMh5QY&NB(!d`5@%i%y?Yt5BhAX<2&h0Oduaa+}Ep9E$H^tRoC!SV`Pc6tuD~LT- zERM4-hZRDv3QePJBV*>jBDd?fO7mDC>PN$BlvlHmFZ6wAj&B;HS%XYD zLeu0+-|x`e>cABxU6gf|Nn8zVAdR$+Oa$WpF-0L9KKd$qsNZ`MS!F0T-|?C6gv_t4 zMs7#+9DP|!pR)6wh<_A*fj@)G%Su8+`C!OMIYB*DgIF@Dm^H-vF4X0hZnSgtcejRS z*U$Ui8a}s2O*|sxuvISHk~@wO_PGW^ioghza6{1GYk{Kr;4*`x(B^YYJAe^RFLv zw7G;4VeZD^uy{V$jkHtN;mgpRabBA*Y;X}{FEY=G5%=Qn$=?^L=|Civ1+U(`T)%JOQX)Y`ZY3XKs4wL z2vZ+MIfP+_>^g?$jd006^;rpfAqw19nTkRGyR8iV-)%(=60_5+l0YcS;5xbAoK; zVOF;zj|-G%Z@F5o`&=$?LyL$bJ%S@S5`6abvWqmk(`%Ybt~xF6qt=*2Mnmtqu!J1x zi{#9qUjRxRy1A5rM(^e&$p_3MBP?xJ3bI=Cu!bW`n(>!gA1%c_HAghvL8Q$(QS&q4 z`DMh!LREc74hgU#bsO?(4X^5wTAiVPZhKS>cuDz5W#7sgzH1XnSTj`(;4saBlM_2c z9;xaz{Aed0QlFl!*m0iv{Dg&kVRXx!uii}qjgM7HdZ+*S;gks?010P4(6AZ&&qg?7 zo#;iUgKL+BVjQvEIoxeZkiB6dw2sos>rb1&2}wHKR7pcy^Tn&ker+BETPoTMgo3jz z=$!zHg+x$>ZG@rr$hJTiDVf!7XpyGa0|_rXWsy9GegiYPQeNY{4BHVjqlAv&1#P2Y zt}BY~p#r1()2(mv&R=9JFzkz?ih=-}L0gHMzaUNw5_PDFic+d)|;BDbgqR z`rpG>_~ZH_f2K2cwq4J1+4h@$ANa}~oVV;z`fm@kpQbDIyy&#?`}v4PLNF$2*nn09 zWJ2E%VL?au_BjvYvs0B_;9SIv3OZUE9w|~?-$Os4IRHc!gKkUae*nK%3X%yFZw1KL z<_u0Pjv5>D1r&6~f1vfGinfNKAk-xj_mvfr3kSTvJ_5%B1AcygUzRu3?Z9@ADUqjz)KEK?>D={b4OA`bXyNY zkRNQ2ubnuMNIayy9dbR?6mc!X1EPr`J3=EUsUQ+dMx}+B<#}-#6mTL4K-jOSE#)|A z4W$5o-NdfWp2-6>2Z$dWstY@e1io5_!o7j|tP9+N-0K0w{GBwW=t1~|dQ)li5xu@5 zsJv0xpn_x>2p!h3_)n1izSJCL1V6l)EW25|W-{_FRzfu7v)*#Ww9$n3QkR{OXP=Vf zoNhHHV~4?2T^Zvxf=(;%4r8HypH)prYR+O&00?2L)Gz>;}a4PM+eW1O?S}3EIr+Re8L$qr1xh5 z(H#AeUlh`v+Eb@@iRSYI^FEXaR_9O`pUmp)t>8(MKY2>k_*!X!YmkZ@cH)=ywzC?O zJaeK~pRY73;8^rUmIs#f_w@&^P|mfi0!Qwu_M!LNuDz3h*&cx+$xvxEamch9R$>O2 zgSdRwm@6_+$^AY+eWIsn`}aBcXmg=q+FVyJAsG;ka7cXk~yawd|X)x~YnINQkP zF)EItmVr~wGKrRa*GZF+8Yg%Fbka7@@Ff?r3yYsQfW1){YI1cFVINQYtk29etR_Qh zEb?G2OZ@>;X@CJv2J@aUYfoAVtJZf)f*cC7gNIY`lyCQ0-`KMu%Gf~s58<>a>cpDG zy{ZNiMUVQ7@;row>N7Fsg7A^YT-(ZR|Fn}TF-3K2#6;c|qq1`@d0W!Dr#X&SFD7s@ z+z$Io^pFO?XDw-4XVqQxuAo zd;qK!0jv!dP^q-V-$H4xPFBZ&Q=?Ha5iyPfF0^P^!^CvtdK+7;*4Vb)te@ow_ZRB_T#DpO@9t){|rg0#O#?cPL*q>hCn za?TG?opA`k2v9dgKU$Y}C>a2Flmpq~*T9>LZT8d9&hNo-9l<#rH$nHhp>#`X$iG~` zf_vxb4=YAcEHM8N^8>^>XALdEAK1u}S`HFA@8PLkU$qhuJj`HCKV)8JDY7m1tc+lV zH)9#t@_Q!Q7FNxlPrad|mV2G;SxpTwbV05|$q&{r$Ma(_7w>*FyNCZR@fxOP^ALLM z=I%D}TMtSNgc~j_yZCk$aM=hA7@4k9D2o^)`g}tCS}fv2D5qc)VsPtsZ|i9ByUE*# zHHH;{4B)ruqPpn)^81?)&Rwv8p?C`i4d=+7RDb)$Zpi{5mb64)?JH02D+8Oq`kzJ= zy)r2}SFymct+KJat}}xSYvtomp(TR-B1mfzj{r&clP)kzIzHxdq|g z8i3hA<1HG$T&U}!pl&pSypL}k9RD~%_WhLaMDNFb)OxXF4WqsV@z_v{fH*yM2IqO= zFLDRLyi$;}JgjY1r+*BnUhI$V%!IY8r&#e^!Oy0278tdD9{Cj-;sNjSmn7U zp7udSL-&7nKnIvkF~H?9WzpP757pyfHVJzM$pm7_Kjca0S^Ul@ll&W7ML@qO;t;~v#L@5*`cM4D2@@|+_l}AmvmU{Fbs5`jr3^Pmwmt?7l4%>zNxele z8Mq2arA&@6y9{>OCc|h{l`Yto>T7^eVQ^wimY$i_%O|HyFdiK23v?kmO_DdbF9=SZ_W%*D!yde-J0j_f{{|YzEwG_4AfS$Y{=8Tao6X_LZw}w9iS3dwJ*TJvg#xN&0 zIN;Su+Krz0SH^IA*?(CHJv zen?=gvGuY-fys=0=}p)@f-`(Rjq`~|tAM~ndiRq-3@d$qJ{9r<9%KRNbe@* z5AmLNdRb==$iaMskKJEhxu|bzdrxpuuJI;y(8eCpB(hB{^#Jp>oUrJ_Bl9T4{KGIT zF7gJ*ST&TOyZD#*1GR+KZK(@DHc1wRFr|#yb-P%NrRpfa+~P(lPyZ%5doCL!mj|e> z)@=t!jnRp}HTpzqX)|TDg${?_YFCaci)QD_&CdHn{ozMv|AFzBK{hLF&-GhL>Gy~d zn(@`maoJp7bS1C$D{tfuC}bw9zk9{=s zo|w}C31aB)|NifpXh;8$(i&Yq@O>_Ry*%ut))x{sMlW+Vd8oJ&1DSIQ%RINrMtmw7 zj31qnm1gF|nNCUew=v;KCFP1&IFbFwq{d=R;Z`QV|7AjX9v1txW$}-pLlBR`m$9c+ zgHM2TQShbe!%PR(Oegl&8}qKPKW24J-%xYG<8ya2bMy8OT^o}8O?egnWGhuSj!VpY zrk&DUH?r3n**gJk%l5)JuD(H(RJWvuZDpQ~ zvt>U$RDn|8abfq_Q9G71`9I=6kC2&KeB=A-^%!xEe1=WupINqRBYKdl(#_D1_N#O* zS6K(3NEq959r8WIt?SBC4{6wdL1~7S^Z&NY21{9ej4HJxD*NnJDe%`YKYcKg&yQo+;P+G_CD&BtU{8ICvWO#wvzjUrlZ;I_NcH z7}twn%Lr`xbL`PK>Ei{}M8tR2Ibl8hfb}bxRfMLTmC~Tf(_pjgD|O<29X1px=?Vsa znO6(578@sS`@iOX;Q;!;)BomI_0ISrBUlMIGTxB|DY28?K+#V9Nu0jRz|67eb`_Ii zxV*lIBT@KF4yEH2mDy*er}tN6tXXLz5Vv>QsSp{>m*EUC*0OuPxuVvrAuoPru#d7c$>DQ9rL|FHFOSQ?rRvK~+z zRZOje9N7>?0m9WvIx-VoaiQ*ql8_1DRq|DoyA3ew7ve(P-{?C?Db5PU=40Kr{*(0|mH)yk zF?E$q$rsTD4L=<#KfjHst}A6rv9?YdQ3?)U7A9NOmcL5!jVVtd7fB)4+Yz%V==#Hy zren-4_gM8*%AnE8tP6bh=sUx^$K5ZhT~hPlF6A*#Dpn|5OEQ>&2lkGNKw?ce9mhnl zC!6;)=2|(|6AiF94pD5*LUQ`aZZe4l$Ct&c# zl&&v0@qsu;!%@7-k*vz)14ORW`1!kcuL4gJNQCY3ay6cM8oe-ajQyIi@F$$_?RCgb z#zf>bvZo5!ld#ME+F{J*&7Jbgw7u{_BV)(6U+S9_Yki;AkvGruKXFUnkIYt@ck6ul z$1~&H9D~Pj`AI#Txw%3^#Aof#rFOO7aI>sWtwNA90!>Y3>fG?3y%9b3Dj~xn6TFIV z)c4c(jYrCtB;cTmLQE!6E@MW=RzWPs&2KJ$*anx@ye+;`R&`CAc`AMk9%;3DP|gqj3E&Lot00|K5ZSlTW7wG0G5zBK+?<6yNL^N_jE&j zyoXh9CD>X^?q?)-$^p;9aXg_=(AietyK3XV*3R4SUYuDR<(GabJ`KJ@t8@z$SZ9Er zL1%H>h_Ia$E4tav(@K87EPF{q@vni4rt0$NJw4=t0{IN{4(NDX?iBQlWW;oA1>fW64$NsJXs*wEdt1c+yx{nR6BdB!(vd)sUUQ@by^g}B zpM2-RG;*E3d~-D)^d14GhOjx^CoSX8q@P=n%R;RR;W7jDiwkI&4+snGO=DZK}Qg4TWObvF95yq&ZZgNY&57f=>#1QA|p+aCD* z2odlLW)Pz$+}o=#{(KHRF89CwW5SXze6b0XuY`k~QHw8A*oO$dl@vWPmGY4jwxDIK zIwCiKMQWx#FG*$%J@i7s34`Iw>ihI6Yxp-RSQR~pwL2N0Ny1`+9{|+WF+*8@@rd?8 zU`7eG;pJ-k!dIfGGXzU3I29BM5(1$yx?{kY$Yx*Zg4Z(z(Mh^6yRtBQx3oL&WN!Yi z4U9!>;_Z&Kj@YMq3xSMT-P9oax`7^Zrbo0n8?scYZT?}|&b)nPuKO`shGbJWLk`o{f zCemyvh}5Ni`xba@4s+$8dPr|4(67_yTUC`+B~Y|IT$xM%I)wN4GZ|s&1`}0mM1eYw z3+~6|yHWzSH2s{aXQDFbBwtL-cPLgzmG`%^KNB$u;MYCN`ut^Qai&=H1UW>FZu~Wh zzxemrb=)T-j8mcLT}vD*{1)$zZw?13eB6GGQ5KM+dfk1n5l*@u0&uvhUnInrkh z6BNIdmf3;0{t4DNi%^6d)jz&85k>f%MvrvOupzrh$kGAv3M&D4)(E+EzKR+4U&c%* zLGBa*uhRQNZ~!~_+P~pC?1cUJ8Y{ih$I@)+^(9D@5nLdR+{KaxGUPk?$_Jjv&S51s zhI1SP7M1?JT;pY4;dN7FTHy^8;@&s#xXB=ODul@0-+*+jKkxf~ z+>eo9{rz4rp0{=-QUcAZxC?u9)W znfMwa3B9&uZYQTo{JL}b+54~A{u3&i-Y#w{r3k<@jt9k?V$Yz`mhyww|!-v8o;M!hW0phw*4^oo9 z-_o(vH?-6?%!)4H$BH>3Ab3X?5b_QB5M2o~$N2TVzKX4C95MG}S|z#D^M$?Z>6^R2 z|4&)zg9zJcY+b zv$94DY@t-|C^P~X!U#kU0pK=+1zXl{dGoHWLMf$JQI~*=+?ynqO`QIrsV*eK{GeS1 zdOIF$Z>acFRF)q5Wi9pjLu!$m&g96y3`?$LM|5%)iPw&7gq@OZKMPKAZL*vyw7b``=B zXuL)LAMs~k@w&+LC_6ouNDY{M@^gV&&a_%T*oDs1g}|H3;UD0>(--bB?Q1a) zc{eWEp0^h~e0`XK83cwSU6c|M+@csP*m_FotG<7h5h?#9UGeYSs#6vxY} zbkSCPw2E3>-myw+EHMYb>VmRu@r-!vjK2N`G;9GdtcfE*<+a#)Quv!bAcr2WPTK}; zt`6GvUrq`6tQuvis8#QmlT0R9l8;(-8ecb-+NZ4MDnLNZ57eB&QWD;M&zsh+-=O+z z3GbVUp^;SZik&VHg_K^p>@_{=?Ap`)8}RgR=pFCd2S@C8|Kq;WI#t0c14%*nm7T5$ zh$5l7G`MY;5A!k0HxaINqN3$fmvWKB3Fo?X>J0Eu!oUxYOdaR*v8O`dVHI^0CinF7 z{jE8vRvb=us8j?JADcW>s2OrN`x~vRqW^9br8C|CZtnIYqZm4JC~Z5D69pW`f(>{_ zKw{rTwCRDm<6hi@E8%H!DWf?7c$Adme>;F-^ zi1dO;$TL$=s3?PYkujOniCK!A!HUNK>$!j|#vBrmdnc_@Z*_azqZJAZ6seV%mC3!6 zP^q&4Ed()-8-t%1n{0S6j{zM|I=#9^##jD3$oE{21ZM`RfY}qmdb;EBQ}Ikw329Ra z&$_zV1-m~;*}syHNY{%@6Bl5C-u_5gz|l(dN{_Xme&UH`EZ1`5k8I~M8QEuD-nz=(U3>;NCM z^3??6hwTbU*RS2KFKfLT%+Dj@VFKn5&UCs=MD4hgNJIQxu~l8%qXtB^4+9S2VnE%0 z&1_x(EAjVLNF+#+phkz9M{Kd1j(L#BuNK%P zA0G|+)X`2&kdH%QpvSsz?1Tb-`<$D>ms?t;?e~*2CH=AYHMqRvYtx}r@OBFLzYYZn zQl$LV-sl(Np3k%jom|Lx#T}08e+Qnbo{#^HgkL9{b-M@rQKe}-k51~hr%T|fGQRc< zq{|+a{wl4*>VvX4F{#-Ye+U6Jdf&vZ;a^Z9WgTqFBn)Zm^!~9scE7;dw7`g4Hgzf- z=QjKac7H%LOM?E~&}#!9p1Eu6_R0TOZ?8~Bv(8}0WxV1+dpqiY2enmvu%fd5+qOfm z@mgw0Fttr@XBB%|Ob(4?feNxfneIYM?^n9Lwtn^pZuZA|>LdB)QxH7mkc9C5@Y0#D z9jES(jUa|=mZQ#Mm%0k~7|_qzpcO!0s|&!tJ6PfUH%q)4sj-S@X$QSbC9GvI9K;C? zGALrb6sPSH!7ISAmuVH;&P-lCK;bUi9tV&!M}%x-1YG5K9q%f>EEl`-@LUAx{L|AJ zY7l1~cJWP&W4H(HtSr=Gf6rfcu>7Z3eJ_G^@RUsd^fb}$oZA1vnc77cTRiwqEAw-} zx+TQOv^B$NsnKld{shq0ix)${V}MIu2R1W@~rA9K& zV+s!IUJ_Y-Zv_HLz&Eu-LmpNO-gLj4){@b0t<5Axe)@;#CMDm1o!_~!W7HiXy{x?a zmZXLNj7?$E5=mkLFE&-}+D^F1S-8bfxW(;@nB3DemQpU?6wG)AYB1WsT zm>!9e>NBZ7rpTG4e-2ER!obZT0!>K@{aG~W{2WsMbe}RX;ak*k-07We(1CWG&gA#m zm|8wqO$yH03G|ur8wo2}H5mFTm0rW)kx?xx4_~;k!wpO=KL&8jBImDtScWnJ^t#`f z9MYfF1u$9UTa$wGp`pDzfjLP*m?~?xO|y?>OJXOuzk$d=_u>kzBEg3}!kYq0ATzd6 z+TCr5H+rT_i5$XBa#k1PUv&6^cyE~|lq^OIO%MN=xYN?%MGxY1{`hn@_&_1!d2y%FoD=L%o z!LQpT9B)4`D$u%jtW7ht;%+S=D3%e&ku+zBJ&gBy-%96t4)5xVVXI8-XYiTM!RDRd zbRU_cf&Bn}Rl7)lsltn&FyW=jf}a!M&&9Wk%jJf*9n!wV#5i*Yf2R#3R{%- z`!E3^aqfz$6U{e?oJ7L25$u8f3-UFifr_5Q=4hpt#;L`_{TQ%ljDvlX6dpH)puv62iMZi*?Vk# z!0vV(ZvFT8pZNU0g`I!ampxZ1*k>rCG1S3gC^$;uXgY&mZ>#g%4U3A$R23;HyXPEX zxHp?>iJ?X^aEL9I(H5I3)KaGJ3m~3=ZC+m?vxdz+x)~+8-yJvXh7H&;zK~3X{>{sI zaoJvur*&(uoYx5ULSOdfU%4c{b2qQ%7dtZoZtc+vs4Z^+l?sA;&J@j zrwt|ljsVz$aDSnL8=QV2hZ~T-i;ViEz+F7J;rbMz!n7VNIvD&j_fNI#sxRlh&dagM z!ic{EEc`;o=vMe!nr1Mw5}4&aep_{KmkbX&#ZQDZ<;^ZELcK^~SERN!RDFUrogLTI z$OGz36(%Wlf}IdrUI4w+Yk6M={ub75x4}0w|4zmKM1LjRv+qw|wg$wIf63*O_d_Jz zP7)|Df7vtrG+RT(CwbU%>CgHW0W1Me9~+mo$ehh~EeoHKuz&pZ)A!CNR{F(7EX!Ty(QC%K zKheCHj3fXyNGo#mZ+W_Jqlcq*(f1-CYOURjSNu{se|XbX^v&6nYS6@nN>?-M&N_6& z)%iaBlH8!S8@4tk`1yOMCS&3BgE2wL5Lg+pz5Z?(u_JGdZKKmeM@e1;&$lD(uY2B% z_6>|<h`0K`_{ZP)yl5(5Q{bH4qp>n9=E_a0JnBoh!JYZFA+XM} zw&+DD9=tV3{W6EOK|D)&Fzc%Q@te8zkY1^`Ghui;u04swelh#QK@So;+@!QCoohu?lSLNYFb^J+nqaC6bwu8%Zu`gu96 z^)*)&)85I2@L=^-rv_FI5yu$E^MlLAv&q)Oq{H-r!VN#2-LrV2yv9^j(yo7#iYw|T z-}1s>?KGGOZZAh}uh{#WjJ_ju!|`;OomRb5!zV1*))L&k<2tvOA1vBpyu?>arNQlBuT`#MZr?1tJ|kNdE==upXvR{$hbh=o1AnGT|g z$Bz@+Yn)Asol(ILfpv|oR+HqLA{Zm!e`XDnp2N~$!;bFoERkJQ&+ncsm6gGCZ)_o|7(HBt zwrk(3QFkLF89XJ?KR-?MJxf^nM?yz>hG<>jf)PXg-sO=~U3 z?y_Deq0UAD_{iB&v+5Kn2hAKZ7e<*K@_;h9LM8BE?{`zK)WVOox@&q8H*M`G{U-G;D z=p~0g-#JiwqZ6OxO*}@X9~TOXe*_Vk$4azy*q}tHUXR-TPX3T&@m+wxnR+{%{s-+H z{pe58LzKEcJ;(+|jbDO4KMBvtQpRXPEZ*xaJs7Qc=FKy@*@O^P4&iLo%k!!;tezaN zU;O#~ldGJMY-UrIcwl*!hz)N2k-Pi|L{ zthFzZg!MF+0b;Z-1H$88V&flK{IRZp;G($e0i)&9X3eKU@_w$s}OdL6}{mTYY z?giE$DpY7+l~Wu!RC>5B$w@CIaWAoK_{im1_1E;Mp*S;9`!o4HqZsQ`t!r+><6*0g zMNbOlH4g9AyO$yS7a{hYH_1|a!|&JUpzU`!0SC>iluD1?Luzp}G0l@E4uCPdco0E5 zPanM8cGatRb+7nPg#vrtL(uK{qB+U>HQ3Jmmd~30Z!hESSKF=Tn#X+2yYFjm)#+6n z+vOf3b1NjQX_0-_q%}KzZ!Q@fz;NW7B#sUtf#K!fd68qz}P+`uvl1zDyaRr8%8(x{=q75HlmO)+zER0{)i zqa2XyR{v#zdWL}ab5I^d2ZvR9SH(T-s;Z-hg{1`AO^bU#WX{wcIW*@NsyFclJoOgT zv?U1-eh$f1T(j!}tpc}a1NT-?FNsRwfmG`uy9$#M6RU5c|Kt5}0<$X(P=3&MB) zjc1nUaaq`6ybf(;w(Lgdhf^cb7+|*}ob@I(eR}A5GjzQ8QfO2)x`BHjk@r^BC8;t? zO9;$>x-pl{>n}U<54-nCM_t_YeNmfs;6w5Cn9vJKlI6&+R*s?K0#BNjh9bK`W#2zW zbPrUoy5(ph<%7BV1e0r0!|?4JK#ufI`_BXU=PK!-d%mGrO2az7tvZ<-uh->!p;!%- zU?ZN9g2IKCR+u&j1-gKP zpU<$Ve_%gm8}bYwl4V(!;l!laEt4!#?R0tN`Za_}=_98`jLXLd0+b>6id_=>$*&C|LR zWBtOY!Gg3aOa1-evN!JSgcQ*$kX@WF%wW1&r$PLR*2#k$uKh=y1)Can&iC6Xz~K39yw4PyIIU=F2`@8a^7|MM@VhPzQPaI^3FXJ6T` zGwXA{f}IWF0~C)rYBB&6L#$)QzZd|=DnF#KmsQnU*?;ER=nVTefAefMrXm2k9@ zCZy@|z5U;~NtIu`=s+y?>K^Z$>YCZYKgFQ_U+yVamNVRQmQ~l_Yq}p4?o4n-1A#?K zEite{2$&?6xErKYtxckSY1b9kKVwh0?=msSu#A|T+Hm{0uh!Tir_h^p`#U8{K7nuu zIG`fiYh0+{KqOmekfG0Ni+%J#2()eY!St}{@V@h~iq z?!;YJx*t;f>uoT>YhsHm?9Wr9*^VMCcnnmDKa+v~_B9lJ&jnX@8A`C!OOU&x^?PL| z&giWpuTNO``X#ZW!I@#sQ6AxdpNZuMq->sJUnU_p;(Yy(X|xPn&2t|^8?bSgu1 z_8&x`w^G`G>7vFIdy5zIZNn8ALxhQV6b>Vl;BuxtPZ-{>$G{r3A@_;sD}V-i6Z880 zhRJ*G2NLkcc@i#no!01CLFLCFR38zrmv2&j3>dW@n6efbv5pe64&@`gL|#cP6&`({ zTQ01QC=tnbMO8)W$FV+ubn&43`Lv%USAFj_H_`u@mf@COF^MjhOG;IL3!qM>bcV0r zS^z>so^qagnH8DV{IAKUg}^FUU|ZMh@obhVV(Ud4Z_nTZCdPK=Bv3fmLi%S602Iz+ z0rX;8NcyNRUZ4}|kXK0SUVY^KWZ|v&ZmKarmE^7Oou!ic^hv!jjL*e#i?O`7OO&!N zwmQdwwUuuY*L7}?Ofy!LR`*gNLT_xc%bR}LIQmI=u9}&5UFDHBwM5k&*{=nqCC6{l zP*#Goo9=T@CA{NCXg?~L<6XF6i}*N^>e`V zYOnX}WVs6tQD$~Xr|ate#v%3jLBveHRc~@n08}1qu zx-^S7Z{&ne-$&W(kV{Lfv-nTTA1k+la#{cAUe&qp35A+nGs5v43p;5%Al*IHL3TZ0 z5*=zKwzr6fRTEmxkB#9pRPj~=<5ojc(sglS8TznLKree$gaK^4ctt!0Cj$)RHL zU_*cGmok)xI_iL%nmjWm=DD_^Oj?1eTi0*!!-(>BHGz6 z@D3wKT-XPj%3viCW_sngHTtMEy-%(ftX?6x5acG$Zwd)xB-V)khg3Pm&kDw)x4V(%s84P@ zn57B6@}-H?(R@3vWg?`c>GHhrXXn^2vvwv{eZL3a|Mc^3NiCO6t(5)zw2Ze!#%xcU zfkGU3Td0{rz#IfU6WPY`)K7q$iWIdAi!a{vLJ8gEPQ^DjfDx}&7KI_O)Z z%>Ye&>>-g&XgRYDNUUDM^^?L}Jf~WI?az_L?_-PAV~gL#UUfy#m3zgStzEP`(>q0?+6@MnVUd1b1@yZK>dV z{LJ{c36WB_y-^%>(f;_h`;u8HUayVS?o#vufBEv<_zN2UKs&O&> zxVxwHezD^&3kz^^zTEcE63pN6iM+1?xWNS`{=$(y_RgSP!r7La@~bmP|H*r&EwATGRBZ`Vf#Nq*)76sm(X4%1daoG~WfDO&|GOXhp{^DRP8eYfn9;7$8L{jP`U?p#CzHg-gXZbX?35i7vCkv>4MQeNg?lq-p(S}Pm|>Bi zT64AkPxs_{QuT6GyghDQNB%u%sq2E;V|p8$o?~tEr*ODWJuq8#?YDgQ;Rl5+Ptn$s zf9wSMlQra}&r)Oy2wF)27omgShsLFxED3t40FDT>1mt|ppSMk$qEqX`@1}xRkbh19 z_`Qc+MS0X=!S`&{4J(}J=QTr6E54|V?SWv;v%p232fw3HCk#M>Sv+avP)-cI-vD0O z8^AXZjOfr4St=BvTSjcRvwE5ieBg=IeFu|g{}czZj-|A+Ayc)v47&hdQ@FQC8n)0S znsn^hr1P37bU5rry8dWA)NB3X)S6*75@9IOhN}%`$q6BB-8lBL>GUFOWhM#pp)Iu` zMieJ@!^+y)u={z~)PYeXMjD%0)j!(;~r$?7UA^A z9eFVhn@9;bvbt7yCX+2y3^lRtFvDyMvBxq3ZXEn5Nz;_vLMl#TfR#^;*N8gY7S>FS zpaVbj-VEf z6WBEI$S-QP5OT3FB{%#2s2eW%Q%LSFKjtm()n{48M=W(H&NaRTmh{Yr5a60Nwa&;0 zc?7ZK0hSayC|H_PjFF1jvgj$Zw(1pmdT5MP7R=G7A3?MhmR-Fl1mC6quqJ-Tw?=2Q zdR82^pOUeAC6ynfbdRuhJTk7RZn#II{9V~5cTbk8e@`zfTD1RBSoX?N4J*y3ji3#N zzn?^bd)MpT!<77w^Z)@Gl*^%bBS&wIx96?;yB+m+%VZqwZTBVQG~Jt82d0fOSnZwB z(?G*oRLv!Xx{O7OwN)Cf2eO%aMObY!iyo`~Vrb)hXP9F!)YvhM%}bZf%dNA4qUT|c zgL2o2sN%OMK}Tkw^h&T807wQ?0LI|PKLUz@8*&nCaAu~*Mv8W;rC+;=?4^S~{$NGDM;2%|X1pkhikO(h~t^PBv+ zq4tXpSN~&^d@>0Vwq5fW;}#5v?beg&6+9f^0axm|Cdh5WSs2$pdt52~K;Q4l}(9aN<7o4Vd?bXuV=q$wQYzdw*K@TSKso z#$H`d{C++$awrqI+4Avr{nHzkrn;4%T8;J3-jr1LdgV{wLf)1AnfAf$vrWqcbLAwn zzcl|MZihRSez3WMsYI0nc2wI1u74)J@sl14`s0`Is)epb~ zqyWCqhhW>s#IFn$nqf;`$i9&=-u>Hs?58_x^Bagy;R{L*weJ4jaL1q9;6yc7Bf?1a zd*se|i%QYNU+wkhzt1TvWwQ;Nky7c`#jU5mP`UrkC>;OmMc$~;SrWi4=!^@?@d)J+ zZ@Wf+9lDLlYbpi`?5m!2RH|Z*+u=K44USUvPcM>Ic)zzvZc&Rm64F@&47%hTzt?nSXhw zp%=m1!R3h!#uK*Wz=}bxak)w_mYF zaZyp)XK$xMd6Y|!N0c}05#w87sRe4U6wjnbn-6|x_p;JO@)_MsCC}kEsurJnUv>ue z8ura?$Rgz(KCfstgR2K_my@!^7M(|*m~1HhV+gug6I#4Z4)>x^JUHxRfUfBKt>fjx z(eveNm|wj}pAJ1KAWUUN@J;|kEOklHX6d8*hIQcce<=MwZAPiMV2)?Ouj5w=cZXFt zL(qv}Q^CWdE5f(4k&(Gj z-Ws9s;>$20!&?i4o0wZxilijg{3wh80oieHhjd9WWJ!=P;QD&)F}+eo+h<3$&rTh7 z?wXyy-sxt?{Y?UiTJ`jeI61O4D)Fxfg7EJnkrs<=bq*@My^VRfL3!cI+J@G>y|5J| zdN~s#A9V>!)iVn9aM@84xl2^O87fXf@;!_QWg{%|*~wO)2~qS1wbRvJ$=3rvz3*_d zrg3KM!J4rd2t(jQ_WsU}^((Gk{Q6lE<3DKbGS5mH|JXa!y-UMhL8Izi3(P2&Nwia4<< z#5&6Vb+9X7fwEbP_&EOiLye7c1zF`vp_PmCl*F4C`Z?sR{6(_0E=M=gO_@xx0BZE+ z7@Plx$5-Wm?aJKiroh?`kC>aFOw7_60*^fTotFEvG|*-0V(Jd0!jQ&IpVs|0MhS@{ zIjH`*{%SxFEvX5qS+zuAe7iVpaZECxS3Ve+ua`@Jr?;2A^NXwJszWeR%bQ~L28DH2 zG&2f}$6RSRsMWUFxm*RUs{xhD2d*F`#q*hRy+rqfR|8aYmB-M(4MV+M#D!^Nrvu15 z^S!*Vl;B;5)cNGb@Q z_h+uPnzsEk?-4HWy@L7-zXvu(M#0;bxjTIx=>d($;M;qu;<_Ty;+VH0-d%A$>*h1t zYj!JWmIjThmGji<$YcICT=2$jTOtiK*U*1A6s?TiSs2+ny?{^o1W5X$W;$@!T39L+ zS)&5RvT~&>QEqKl??CE%Bs%35w2d}j{VyYQezOkSs0G0W)J1|T*rCJLZ8%Shy+7`4 zdPv44yn*@VqX)MoZXO)cE#dEnL@wbo&O7WssB*ZUr5Mgx2Pmj0jQ%}{$!!7LsLolj zr_{#S5p_s3EO72{ng)CNouGD!jCeUu3`M`oL9QZla~!@bRp`Y1c!YiG+7TzV8s|6U zB>OTe?e2D$j;JriyRw@4cym$F?raW({@aNj4Ka;qRVB}JxcO$z$D}NwaHq>~p}+%`di}ix- zaVymF0hNVPAhY~N`>Ocz40C^aynptQzbh5tP(s;WQreR>H#6l`FV40b@)kTbP4b^! zNLZu*H40{AqdXAR1mxhpU#qIKX{-mrK+LwX3M92-twMlR2OS+|;@}lEk$=hv?^n<7 z2WnUCy@27&o!7k)2HKG4Mib@2+ig%U-*}E7-j{4SNhPCSU0(~caUA+JVQH#I8J}DY z-H0tXOMGN`KfidVp+S_~b_7b(4Yfph95u+F&sha+bzVtI;GUpemfAU7tKKx& zS(Tf9X`-eW?^x>6Js7KyZFs3)?rc&@DW&$x*7srK9XInExnXbUFWy1UY~X1K^nYlS32HqM2ZdDyf*O!ybv^Vc;wn0Y1#?<--LHCa zuQ>Lf_*%R5ygfQzG-gIR`_k8OM~%6g9A3YM{L%j8Sq#Yj($mp#$5?00xXOOVF7O$k z;=l9oEciJ@QAF-LzB(Fx@4|Eq?-RV96@t!N-z z9~Ta!o}8a7wu3n_!*v$cIO#l@*D4z|T-MqP!X3*vT{mnv*vT-lsz@U%g)ia2$*YPk zE_s>OAbK!5X<6?9A=Q24))L-)>1TeZ**j9(p0G+TA=CkN4uLjH0F`+Yduy41kn2rA zZ*F~?o_TvZH>%?^T%@F}YpIRMhfQyN7stM)R?5wNv=%0fCffo+s4e%Z?~f>(o)a5% zt7)!FC6*2kNv*B3{P9#iuoJ#3^8_EwYiaLr|wZzRoiL)+*wRi_Gv2XaHzG& zW7&;?I`BZ4NXUzeB}oEOM+UV_c1S9nv21Wx*UgExQHTN*V(i=yNSY>4P|S=qqmmh`uQN(SX#5?XFh6x&I9@@kxU(Gqa;%Z`#d5q+gk`trW5n z!jLbG*s_>3#RYoE2ro;=9`LyuvCTf~HmLh*X}{-E4|lDiuA4D}>>8x%_4FegbzJez z!@p%6a3aeY0Xxk;6>Nj^>~)Cl9xfD|@s?QV`M zKlP?pr-R!^^!vGBv$Fek($2Jo&w;5nrP6&tgjqJW> z3wf7^mO;2h0%AY+`1&kyt^>Ddxv;tlgdw0+4{&nrN9ypKBR5i1BZ3YN=cu7U0O6ex z3eX6dKX)9((3!S^ppMGig!iYui2jt{wUxJaivMm6vq@9Ht8@FR^KQb|QpJ5UlxXoQ z?Kl%K{KrRB-vSBrs@> z6vs*gVIHw5(o1;nOcXLaG~1kIQKUQI6ZIRj_=jz|)ClhTIObdt~SbUOy_QSA2^xG>f+R6ZjwI`lN?p!l%CJe%xCZm1j^#?K)+P&#MRjY)pZN5 z!hvF~=!D)60GL?+C3}%)sl55n2GS(ZbI3BVNwWtXn?79$fE`|S)2Lw5PVT3Q@-^w!jhg|Po|9b!IT&(MsTa|aH#fS3U=VjDkJpfUt zcC0F{FrT#tA}-<(r|I}a-I!Quq@P-xlIn7-NXGk%zLm3QV)s~O9iVTEw&cuzHMh3n zh5grE{*l>%&GUgxHaXHOVl1jZatO8u6S4=# zf*p6NCFN_q>)a7#9g-ui+fQ#i8~Cl6@_Dh~OGjx*TY;O5OP6+r>DO{Aw|!%U3mH-M z^3wdA($$3_J*)Lk$I-hbF{DQBL0|8GF!7f8a1s4+&HAGIYK5gs@93X8i-9?|9vC*K z59MZrFJ|O0o&RYA6?0_$2}T*j{rn)B{NFFT0xgDFB8%|k zOtTcE+MHtQniub>*a-eJ%FEITO4;+oYo^q^i>ZH1C~SiO&{5T6dkK5#3i-C?f)X$JMbM2T@i>Cu6ePtol2dr5b6+q#r{5yxhSs9tTifxQT42 zh+grMfxEqwa(RV-tqah_O7g-FsUpvketf$jDk6ZHskVX$C=2TQW>!_tqkgnMBDaq! z8MbtWn4kTWGfHUA-G9NTa2HWJJk*6YJ&NDFQo&B23cPq_Y{b@Teh$kz9 z)`C}4Qtd-m8Y@F);TvX)W(}I4m(?YmatXK8TN=%J8IQdSo7EBfPZht{zH?haFPdt( zXEitcTpV}qc5ea}$_RILHBn3XXvogE`;BR-nl99MH6aoz?w9to zGS$X8<{`hV3@*N$(!ObI;;WQTsdzKncF3g4v@5rpM|{0P&ulh&mK6irz2mxN*&Nzq zIeACk7*AM{eW_8tHKoy0tuMg#HFiNLk~|k zzKE3@i-7ZiF0G-dkwd5Q%keZ!Ut z!ibl5e&y+3rWx+|Yvl(Au^gyf(%1ZAkL@Zo6AK4dYaBCs4s|t4)XM^l`yIv92i=gJ z;N#V+%GS$khUfpHrDeH$WH=2*NDGc5onQ)CvVHwc9pa6N_UO-r?RFw)vmQwItfwNu z?i28Qq*_X#VdU@umSj*{T=Lc&!R|A~x2dH_j-ao1fdwkdTmA4b`qb*b3M;>=yhK2Q zlg!RnyKshQkN@2%PdKxEz!Ju2{D6CXpLPE1#DBCHbG4$lhSws5Z5x{<=H0^1Kf*@P zW3#KO^UbPPS|c!j|B&ZfwTFnjx@1U^w>tvNEBvkTyqnnnUXGGs61i$t zvy#o~bxQxrAXX|jVM0SoEL%PhDsyCDLns5z2Y`W@q1CwzVa%4}2TYmEYxfa>y5)8( z`sF+aKZ+ve19cpRmCJ`6|K1DA1@2}xvA~JdzZ;yap@S;OaruX)k4ZC+OMi+y8X(K2 z;sX!CC|w|#Bq$8J-?!BudLQD6ITy>7yf?Sj4ys6CT4SX=JTg})5EX8HCaK_k7XoZ5 zf?UYZ9>D?fZtY7u1v6U(>z6;CPy|&?WH%g^0?*?OxT(Mr`jvdf6TT(7CMS9yqF&y= zRJqXCx9g{~czz@}2m42Wu`ABg5WFH^S(#Ew9I4Fl!*ct^8OgB~j#pNgiF&EU zAA(@o`Z9)kS0MCYeSoko6ZPejYi6fuW>nSJA+-R^~t?CNPWh67I(d9an^6LSWyQj>EW|Z#MNDazxRTif_=rJ`Vp!tg6j+FPj;FX zS;E00XkrK^pjr^!07JIrNOCk4T&+Cnz7X=f_R-!Vqx;F-CBvcnzmt}k}!Uwy< z6CZ6|zl?BsHDGRO_Xum_kMbSg(*Zh~{q;0Zb?1xo{wcw<+<IQW*4|N*d^c=?5bKb~6dkm1*iX;;h^cvV$bU5b@xkF6h6_Eq?YIvU!^6c&5W`t9 z1K4n)^B;@}pQ)*-&_vHqZ=57Ucu1 zK3Q%i#k&vG2^bP&3?EX5N6X3>$TMvNvE$p<#j51vZZH^}6A7*I3azRru5yV6sxYm! zYhnay_KK?ai#?W_^jI?$xTcbFB2j%ltAbNWd8NZ0UcSEH1IVvFi;7J!F>S$6ZJVu; z>xXg4r(I7i+*HhLF;89s<6j|)&U9|unUgv|=(Lc6-p-D0uuY&gPPtA^OJv|FiECJl z%dTDHAt(KhXjpFp+gW}0a~B53mn-UyUyN)%%Z`vuK>2D47WrO%>t!#Gy_2QuYNoft z7Govq5n`R;aO{X_*06PdHaqw8m?oiF&t=~^%C%E$(z`D0W*nspudL|c^Fj;ay93UJ zI{7j$pA|XQebpd#ZOa7iV5JkKc!k2$B@H5!iNb5yVuSxkPe?yQLi!{|BUf5H16!Th=PTe6j6CySH_UUKLE|7FN z;EDz?i%zjzBxe0C*a3%ShdS&?$zp@bgArxpk~gYNGP1hvJR>%+EVw0Re6s*ec#}}~ zJ?aDgJDXKt!Vevr_xH?e>0P47CQGZ1UcOoQ?OS)`EZ!1sY3`#?K7FBo4geSd{{t{C z`d*@aUOUCN;f7gTlIp6$N8L>@0W0#aV>IeH-uh?tBDizCb$s{lZ&+W}1aUq+axWgf zme*Z-W4f0z#?{FhzXI18$h6%UKA_}YV-}aPN89<$k{tX8gV<8_K#0KbN42`~1Ez0H z`y2WIpbEHTx-Az52*I6wR=OG=1NarOZCt6b$*V0c_~IA;_h{9T%KvsPT=3b|^$r(2 zD2&^EeywY6p9yp7JE`^CM}sEuqjePRSrdS#9ndod+*5Luyffd(4*$W3{817;_Xc1* z70&!uR1l17hu-A4-ySnuSBXF$hia3C_ROOWjDk@d2Z!7}EhJD>Y|q7-Mi_9b$1c%j zOyLk_*v5Cwjf}+Ep_;0H+0Q0|Psc-+`Gs!&ho^t}auzSJ>bv(HyQHJlSF`xu-4A5# z#S8!O5L>_x|7~tPQ4|!!i}%nt%zyvrG;w*I1v-@cLpDG%I{_9;)56Uq2i7O7uzT&I zmhkzZtIGLr;ywFr-OvlOc5ilk|bz5JbTxRy7?bHbj*5 zC#lP~Rkx*QW&Uv&1H`jW7`*95*^lRC*OLA|pdZLQrG21w2ikqfq0Ut_JUD8L89~Aq zkq`eNZ9^;G9>i4?WUO>~dd8m?b^`6GL>P#>HqB{RnKe&){Nxq*=SS<`XG4BJ@*gg_ z-ddRQz&;St4m{5JmSjXTHP&%edwOg^Ijqda5h65?F;#6F?0YBK)dF?E0g z=uYQtpu#{0^*@mcj{d3+NK_xGV#XGPQJToSynFM5=UPfcGJ9; zQeWK|_gG}$i!sYH-F(fL6D1+yuVt6oSy-EddG8LvWQ>#IFjkIR@8|qdk5$qFAMCPB z-2V#GtjFOM`VpLK?cWehFvsW^7`f#gvMC+6`m(*wIRBmYUc~AfBqqTK<0>VMW>4JE zd5bPhbhi$YQLLAgZ1l$T$WLg3yY+u-!st^dDBwxrejeo&bkoLl0@!Z?U!F5R+h)I| zY0+%KUsW$Ew%}~i;8^w8*JSoS%mbeG-ij$H>0;_z?XUB^D}2?ak7~lak1#UNXF_Fv z^J;PQMtU9t_BIf<_xXg=3l}NBp*FMf9yb%XNO9j=KK&T=MoQl9jwjxLf?VUZM{NRt2 zy&B|GNMeDHX{<_kwYk3oaoeIHV6?UFmf`L)eh?$%d)9IFT^W1XY5fn!z19N&8Vr{x z69B*4z)x-C8`L3g*dxxPg-~$guFooB47zFhgnUI%E^Gzy#tbWiY;h#KuK~eFpz;o{ z#I`MzPwp-i0(6sXGPv<=sEfpE)=dvcX<_v;HOVDCJT6e<|xDMIn zBl5r45^%{W{EX01qd%ECMWA_VjW%=$I(G%!OalFmw5~-2=HpdN90J7GZ@_bJV*^N0 zcOTDJ$vf)BRS9UZukxeq`M4fM3`R!GD*-`YTEWsigNu)+NQdKE&9Fu?2k3=!R?Ct7;Q}`nF%Ra=>hZ;}oXg9%x#t z&d9BzLM|hz8KLqs-Acke8CmwdgOeK$+aGtb@f@yq@A>rM(fIaughH^#a+fwgk{5Ls z@C6X<7uygi0}ol0Qox-{3Da>mN~%CEoJn6Mje2}0KpfO+TKT=B5uadek@cFPqCd*p zIIDC5sR_5L?~SqGZeu3Qw_VEK{AB*}V-{v@@AgFyxy){bl2lLNlWvRCFm_6tv_w$L z$)9&sFos)mIBOG`HL9+@L^0%IQM7tXG$LoGI z;+3{Rh8w#*x!WoxAYWjH;|bSvoaomVm(pvRk3||yU!=afnYQ|QmIB2(SrIQ|f+?fN zlv!sfO-)&E)koiB3&N{5=w+rKR4W$_&DJ8K{f(S@R zcOwF$8wExYO2T+}P@DZb# zb94fjVe~fkn0XYaX+IZ1jueE>azK3*HcsjBU2qTH5@}V=D41k z(>+zUCP-1&|5jb#SAN)4xN>iOaHIGTX=l~gMsYlW1*>h~8#Z?iEWK?rdZo*~E5Jk5 zUkqnTTn(c8cwfWqzJEGeFwp$->GEaV+!hVK!R!&!>koZPz3CX;xS34JH^JO`nH?tA zBnXWS-kR+BtE{(l=8#JZ^>OjQ0(jt! zVSriS0|jJY^V1a{EEK-ps1N!abkY&eauHu@Mh-rAAiE)BvOgB4r}Bp9xK?kz$B-v_ z$Nb|U=ld8KYzXjGr+Nth>>C2FKej%=e9uQm8~G`yYfraG>DKGlZun6ecZAxxM6Eu# z*JwvUFZ7$^#&xzo+7U~~HhrKLL0VeRJB|B*1XGafOZUzc!KxC2Y4*M-H)$2SWo^4< z&VJL)v^O7AJXQB^Y@t(;y#tE<=v@zoglM#FY8_jkPbNsxMFKDc39G9ImRp>j!AVFm zJHU#Ot!wOoszT2AWqMsb10@Yp1`zvd{^r~oJmd@y#JS=Zxbb&NqD44G?~G!A|Idyk zEPD#MCW3-Sh~>BN>&%yJ-j#1L2&r&bL8t`--GJpsfkNK;6g;xs3eAh>)L^eu`3?34 z(Kvoh_V_op_(+vq*9kwyllZ*rUhMJ|0UypJ8+V=}^7)UH8k~*gcKLJzYWgVt6gB&( zk110dLuDy+Xv%Pn!v11Egh5TpZiZgCnln~?nVnLU0Ms*QVUDfY8+Gs#s{Ca^BHtZi z@RIQNDBGh96mKeuVF2xSbeq_AF&LV-6Cd(%#Kbim;_%&DYNqbFvqy8Q2;A(e6#8_x z15LuzqJwa4K?`edK(G278W1jrwWwWKvd#D3b0xyh)e|ZR!jVa-@iUx2iXpp#%X|4p zD<#e*21RZdms6tsx2c6{LGOyp`3z6BLG4)k9?A`AvIiYrmk_iHC@J$+KN8aJqVrja+))mJ|J%Ha_;0|w_;)Pe0HZ=Ie~*TL zS?Ont1S)}wU%d>F`+j|x1jlXrONem=ABMr_I@_L(}Huk zw$MAkLR$KyR5cpxAl*opTl`o$Xhbq9(V2)Xz9?0ZrO>x}x;w2p7_@reAA z7vkO&mSe*VV~e+ChMrt9Dj@Ml@9>fcqcr=JmQiX=Q>V=3ByGF=K})9Rh0QBRiwN*s zeY?}9w6XoGjN)L!v7j#PJ0ve!Xr+YTsffoT@rl3HaaUYzu~JT2;kkzcZDH3@-s2xs zPhR>9+YW)R`-rjBkAK^A8YkQQ36QT|pFy8b4IXFZ59AaGH9s94Rpwrj%sCZ&hI!Sj z@lOsMIpg^Sm)|&UjK>`JGW$w)d{(zpjU3qB5 zw}v?ezV>O}6;nl78bN@4IaRhIPJN0SrKP>fKr@kxknT4_gYe&m^Z9;UF6K0L@%Y2+ zWx^-mPk2C$F5Yya6KgK0kUl~*#7sq#y^^jzcF%PiP9VwQ(tyf&LNct?6`PR2;l>{O zjU*edPEeIigaiIbMM=Ugeunkkgt}m!LREU4w{R^4B!)5NHue;!X6M*t8g*rY5I;>1 zw=*Q~Z6_}FUf?xk`ec2|*FZ?WfxaE1Ns8<>7 zTk86?zJk-Up^bgO!^v#$BaD;7Vga0-mM7#E2QOW%rNPuq6k#NYS26 zcg{4E^{sY9rmEjdMpG?IXPn0@n-As6WjF#5Zxf2XPGe*(2M?+6!(Nqn(jv5A7*iZ5rz zU63tDAwXVWkGfbmJPK30wB4cW!{tIT@Z-rC_W?*Jh5mreZzancXaGvx46foB`F&bc?40rF)m|rpIzP0i?r>zheh#!13 z7&xBwSJP$M^Z8Xd|9Yj;C>7h@+3r;TRys=t_q$AvY9L3|X0G??+7o&qF`tCz0&^J0 zMT|^6HPr)a7^y{=yaSFrSGh$%iXad0$&Uz4f(UJlOz|kOjfp~>CC~lH^)$T4fPBcB zp+6C5ug#zFoioc@Cd->FH?1cdx1OVTQLAImY|RH@i)4rMe|{BDXg_`eLrE=B_Mioz zzJLXO47eW)6HnVT82&jSJzJ9JRuX&U!$>+=byj7%eb8|l&* zMH@TQMhP?m6B@S?w}Cwv!DT&%ku9_YoANEAs^+I}su7_UJr`oC((6DDQph;}1i?Vu zb3gl3vGL&)4bm*u@|l?D^c)&~szq80WiIT-*9OzJI->N3*6B*t?^EB-+cs%M{xn_P z)_rleG5V@^D8w3FXzi`j__7MZG+v$9Se4lP&0^rH(FAi!zf3@ZIGi%^zQ|pH%P?(4Bwq`QV`Dp){w5^%lpdhk`z? zLMl(;*f0A}ue#5d_zXj^REapo{i6#$eCjfgjZCsd3}x;ku@|>y{l^4V-dt6i0Xglb zKO8hZBj|IPJ`K3PlTH!H!^Byr7U!v?=hJ`ARLqEqxz9!tnp#TE(Ac2_Z2`P+#b4Xu zoOC^?uH$foobCQZ+w31$%}<|iZF8pjo7KG7P>&2?3;1qBFW*EAr=I8FWs0*&jmIY) zB(-lPxMrcH4q7?qUFo+omyz1l#nrYCCD8Qa%6nMqU07CFS&~S<^m{XO@{8K*9qAh9 z3tYT=Xjd{2MoSR1^Txfe)^efN^4>!M#Esec#+>=LZ)ZV#Z1b;F+NF$*#J|t1f#BX_ zHenxx%7Kc_BMMl$=qiq>D_T7hpR!bEjk-Y6#u{$0mZrX_mZdCk)s-jI8;31DQP^=D z7V#ZFJ^o4p!Ri|rB%uKM8i-(xCF7Fdz}*DOyh}Ph~N6 zt?sHW%Smu;b^2Gx?^h>bb#^S^8;g&a%T95ybAC`20gUbN*mF87iyWL)js>=_7lLNjA4mFI}6kPj^3a zGEr|aa}gWYVio9)6e0z$5TpWnGnJbt2Q$r1*;CXXJ28Lfj2F$x5{Kg-c5**cSFklr zP?O<--v=VFngp|03BwV?mUHwPj7&XsLgZZ=-GlMrs1K+3bdU&n@od>`3KD5{whk1D zun#s=t{o%hv+uaV|(m(p0VpniCR|M^Sx^HKS4 zxXe&p?53Fpk{l(gNu2hM!T9=tZKV@E|6b3^IbCCEW0UC`k*RU~K0J0Ao~-*HpQe8V3AfK|NG7cZJL)rWAb$Ig z;#>W;% z7wU@*9=lV#6o65%Oj|+aPH*Lp>%1f2EGO><>seN|m{-xI_dUtS(DT!WL*|;tknHdx zQ`tLMEXD@$`?Sz3EC5Oz=8a)s5hw1-&^-6zvKM9d;k{jxH$w_Yj6XU_t7}V!FDQe% z0eYO2NQXNNE3pGG8x5~AqfsDl7e<9p*;VcRYddo)Me~lfz%6=2=mt9MaUX zERhE;@!wRKpB9^+H)tLgXI&XeZ=qgZ0{^`EVqOreCm(1a8&swo1t!4}4j7!prp~S=n?S{dd}$T;$Uem@1ZrX(^T^HMT{APj}pUp zQ!PW&uuAu%obJS&Zq1zTk(_RUoXu%X&-t$iCW4a*1Q_^HAjYhTI}n=Hw^1j#$JjFb zh-E?wV|o!hLiOUjJ{G>Wd~fMi;ox5!Sk%1w-eqL>o7z~T-c|;Czg>D!&v&z8Q_!yt zX`#HXid56z(0Db1x(Y0-kM7rcj_w&Wz7;5BW5!|5?Ps) z_PqYTYp!!SrFvSj$YN$PO-bgoq>mn5fA$J?-dN=)h<6>kMcA?1b!uTFY}$gkz{M?^D>HuUCsx!0*Ms+BVN>YP$`1CA-+GEBsrBC~g@xKGu zbSZhC)25Gl4ifT?9wjoopm`o3W-rC=!?n3) z9e|XU7!Ox(#XXjfgw392XuOlPGXNKSG`|cqmDvc~x^Vf%O##J&th2N`hR6e?aCMxQ&CUOPo&40$V+N=xwO z7K^EkV58o9Jf=1}RkFq&Lf-QY^-D1s&-8G@AQQr%0{aEFl5ZPdTTcd2<*M%2lyE^N zDojk`y(rE#XAoYJd0HR1ScAKGjB_10Sub#H=0e+iA);Wu+;r+uH4<4*y~(iQ7M@A)V1v5wMVf|F>N9>} zgeJ(s=vk<>+1uwj3Ce`Wg^E$af-Q7B=sV#DZ;49ujqbsB<{yW znOTao5D&aE=fGH8vihAhE_^O8H0Q_b<`2<(A4VSiuxBwHel$<;aqvpM}6ryXD*;K>iE zkW%wopS~YrgxN>l3uZ25ms1}Ryai_ay?*|o)Ak0Y-fER^?RC|F=rsH+m>h}eN7YPf zXpYfO*9nYaR^V#N@THrP0OXq>kXqEegwx63WJh$@A6OU6l=?85H6@Pui)9C~ds%>1 znC(!E-xI{OSC^zRZl=rmi}%IlO64Tn@;H%HS`TR7J~z;Da8B8M%~aRQaAm5mCVV>( zb3IPttUK;;-(Rx!yWSx{`29Ed79Z5uvOz}XOgu-Gg z{;4Y*u#Cwek^WzI&9~t$M|qVuHn4*)?C;rOPS=7fGbqn)I4cjZ`0S3&p13DI_&Uss z4uWy%>e%}Kl0%XoqbP@N?Uss6C%|(X+N~SfKT0e<#C~Z4d=Uk-RcuLDqXU96E}ZcH zuIs%Bz+iZ;bY2JK4=iTb9ud_y!LBvMMz`SSjY!cNx9d9cFM_z@{cC;f>q<}8mB+Y~ z`Yi!A04Eb#v&Sj%0y#t{Y3g-U13v8dwom1o-dv*PALk;TqyS1n1TvUcV8~H%q1pRJS!C#3rvk{djZ_zQ%)~c2$!&ls z>4|dk=2FvY5s`33d{r&*P%HaF>+BG*OCJi&27lR9b+}IR4fRrGZ+=GoIAf?p_eUc` zG8uUL1~>)&F3(gYn{4}rPq3Qi7AH;)H{}@)3p)*iF+h_qlFQ91v=nPo?1nFbCZEQa zBz_@3jNMqSfa)80Iniye;oE%>_{1R7uM%Zc1F!jQw16=5sCgLr+lPgaZ8BTlt(e`d zp4}~9JPgN$FBaTNdv-6WtXBuGSie`;URS3{|9wAZYmr(ZIS>Sx;^N)D+5=}>C15TmtpL4VeE1T1=z4uy+5d%3A?0^^+HA{cclad_+(utJ?Nx!C#di|n95t&xmMn(3#k;jcF5EKy2Ozec% zd*r$@SJ0$T^?5>JpvTK2k+2hzUOsE$4pf{*6Fc1B4%%#Rn8uUK-dm?*wZ->M3QcK@ z=+G5#pE@%ed7>@ZKRI^#s2*oMA>UHzjo?$>Tv{3}HhcPYU;WZI|p76XDO$BGKssekVIcA6|y&qGA_jO;0i*bDu{c6U)D6bKLaXWk-PU~kI&|{QiZE@fhU4+;=y5#UD{^q; z=mh%*6QLB;&~KEByJ6KDNNNKIUAKgZz-Y0;8Rv;io9^7?5u~^XQ5?j6qS!%_*bN55 zvw$^=gT@JW?cA7Xc{PQ6wNSSTNAa`@L=BZNHY9#_mow^ZDiuOJX%%SN!bM>tSpha> zX3U@hD1C1qXhk{E`~9W(vP+FA!W`ZDc9#eI9k|D@bWv#ZswQPv6;DKdNfa)fHI{8z z*GFF^MBtJ;_<7^lK`~7+W5~$S3-Zi+xy);+s%gp~2~OLr`jKWm9&bvGjiTvi&rI&yWc^EfNl6epl>Mj}9 z%c4&bcKn+nqEF$ioBab_mUutq+ZOg8visC=sYReyh=Jnw_$l#IMH#-{?vF@&Q4HD3 zU?Nk?Q0U1jS~fHyR6GsX+|WVHmI1))i)6^t8Ku z@$bnJ>jU1&Y22$lhvhqM$u5-k!HM%~uZ$0I?E5p|i!kC80FgvTP#Yor57OKu;V-ew zfaI)~ERrn#G6Y@`!h047vyw+rkIRVY$&6zm$#s!c z*ht&2qudq@@riqqjFYqhZ4cqcj7ML7-rh|bwo97dNN&Ubj?~I1FWsVUZpn%m{xLAc zz?-m;mU&WS;jmaKQt%c8C;uNR8sdJ&|==gBvx?if)nrYTzt z*>sR2-|%Sg2`nG>1ER^oP&Tg23~|637BFSGG5eW{Ehu%E?c?l?FrRT#Pbzo=we{(g zKFT_-`cp9<*Y=P{t8+p%vyEflr#Yd__xu(zqtnTrq&82wdFBPvYQ&!=e!nO(TYRA* z(x;pFox0m=ht*I@h2rs~!um~`Nn3z!Rl|@WO0DtrHxH-h@AIZ{PxHdCbFmQ@FPkAp z(~Jv#PY2e=EU|nak@G`fWNpev6FYft|JEtF8Si{k``hh{r%EG+}(xobf{T2uecz>Y<|BA zQ&$%ceT^v>}M|GrId7H#1A_namoc!?yN<2JUJZ#Fa3E({p)3sQp+2n|Z_n+p) zlmeikt~-~tC4>a%2>>BTKag-kSUhIb?DE&WXJ$vf*)SRAe)gIg{5_Qr&`oAf=)>*T z6g5BnWA_h3%@3C$CYs15_Mg4^Z*|li?7EyV#5CLnd6ojb5so2p3I(RoqMY)olYoZ? zmDc?6xi~=HZ*=wCF1mI1rjq8h()zomGQlhkQq2M+WBN^Hy^~uc=NBT?R|M)3v}t}) zc%OYGD8g>gEn}FI?OqeTxs)M956Tk? z%tomb+XrapuGtCMfp9tw4>o{}`+i{>JHV!nMmi;aUjk8;^-C^+9}A2v?@J7MydS9g z*Z~!kA^_q@5DbOMZLCcYx62>{=7VqlEeo8HCBlJUHtSiggU4A`(c3o|0cgANuel6_ z3E6-lE^v^7XW)gh2W+}bY*=93#RA=#8MN2b!0h(P@u!`$T1@UHcQBTZ2ePt(-`qcT zJMdu>e+6AHi!@+|mHW{{+B%NqZ&kDws5V@`3;$7}CkLy-`>e4bSW4_}!S08BcMjEU zfDLHH>4#FxDI;^J`N;zDBnNA9+q@04ek<20!~>c8(ydNTR2}4vQ~(L~@Uu}!cM_gJ zDZAD8233xaNIKOi!+^Jbk;l5>rylT4r!Sj1LBGWVOQ!9_VX|JQ=l z{T2-2hr(tA4H zTA#Yg&jkp-f5vo}FuSr5>4@TbTYn~-`6P{#a3%uz>9rCerf-|f@}0bvih=V_1c>;4s;D~iyV#hB+ekdLbwOQ~7YpPR@yX=WHz|M`93ZZ| zvP$wZAk~=ll7y4FU`pWQOME>^V`nRM;F}4FD6c3`UZEQIz=Tkm7l*bpms&JYnp~I{ z78fJy5aB6xI7ctJqJ)Owqe5?~_%)!#;lzUnFd$_7~>trP-O0rr=1fyxV%Gj7^=ft()W6NYg8qG+ep z-v#5dzhCC)IT&u!+RgdK`WO{wQ95$@?s|N74lB*3EOY3Y^UVrUb^2bB=<|)3zMpl6 z4U&t`W$aNSWp z{P5Nu)K;rLnTa4C!e7JJ;S~HRARr6ci!l>Z3N>pLt94Qzo5mx}#)p?QoVm{|^^;jW9j@3RNX%z9B8(|n#!kv-_G?^9Wj_}bA$ z0|F>$$v{HPQX+-mdb>ubl^I1cOQm-=V1Pf9O?u=JHlBuS2cU1g`134$$SPQd) zdhFm*{qS!1VblwlHn?}Gm%V|XV8Lf|_5ZWN%} zi7XZ~2qQ_{l{*%8=XJi;INzS#jy?WFj|Ucufky-)H|{Vw4~1YlNJSeH7(Lui1bHQ{ zC-Xang$*{_bDUO}^6>?&XYCPbhdN$|`pBI_#jrJa#ygB9XiO| zs|#UdK6FPy2PV$LgB0OGuG_-yEV@nQLIknE4&d|tn-g}wsWQKXZ-H|)f9+-eYPO%| zKyLozO_Y9Ht6{*inD%IE>AS5;dvKz^NVh)i|B6iZiiqCLC5+pbcG|3_Yv)tA@9K5i zTtA!?nLeG6GI@46Rb0}e?g<2sn6-!oviWko@;=nNl_v?J=!~cN;xfYVrap#N$7e~; zXUSU3iH(po60ZzrMmQ3eqLdstY?q4V%#RnBr{JyQ2;voU549|?mPqX|KCsPBRA?kG zS6A3&$5t@qm`JU~NKcb$HnTcN!P&>O{he#pa>!%zC!slfUS|r-Z8P2QmK#c-cHMBs zn={UMjX{1*DMbqHlpY)3G~L1;4RSJc3}Ly!oq?IrB8Dn)$ikKzR>QL;<@{}a#%c9F+NYX3*^|rQna_{>6;l+ zt#;0?A^7zP=t5hP&6(B5KKTai{7K%%&{2ToAkD0q;}3Z7(H(a9fEO(XAJja}30OQQ zQR|~b)KN%pQ#s7fdF>r&U;lK50)X*J9$l|C;Wj zBr#lsYqIFO>>RNutGzcPf(Zfwd-et(CPw#_353MbqcGR3{l%`CiReqD*`^MHl+D$5 zXBfXb{)TNXjDE<@$K9>s1EG6)`wql(ap)Vbu_18^s!&Uak4lrIrHFr%JaXcT`hKUw zhY~v7b%+% zaca1-t`80rJNWi%V?9KGJN+NpcF098f67MAsXuHo8NZ}^??JP#mVDua{66* z8yaHqYZ8P7KFUSiDRQ8V$N6pd3vXB(MfvxXG$5uVfjrUDitC-V0PPJd7)2~5G5X)R zmftiQlwv?Ab6+v6q|(N~xBi=IoeN;vKlZbHs4oTBFW5Tx4rNIP!Rci0eeXrdf_b~; zvVL3Xmp(f^73z`UfqZ7VT-xW3gnyaxM>+&A%be}g{9Au~M}^UjBjCow;CBT=W5BRY z5p_q=TecK+Wk)XuM=$XX^*06Cn9NWtl=LiJlVKne^Mh|>62^#k!MB+&yH);X+q zaHalg4HyEPUf0_!fO*IxITHHKwk4_XPfoY$pC9E#!EO%9`P%V=Li-`rKM9X1lU6wE z9=gvGXR_dQ8wwabi?tM%Z`SerMV-it3BpWV%w8Uak%@SkrSOOqv|0b4=RvUaRyXP< zslN8F2b_y2%ZC)a+rQXaireZ&&=`yxw4)z1DG)rzJq)RQ zyO2C3K}KUjW}D?tDYXfFWyU;jX}`c(>hGz?v@@7lTpSrujA+@IZTX0ZXt*gRje(28 zHtmSvHl0-bSrH}t?2bZwZfpQn439Re?{$-gJ$Wb10xk+`>J5>tDRZyf*O$*k#c51v zx@T}+;o@4n<a6`oX!gvuSKwUgRNVp)B9!UDkqRS%3% z{qUtEw~SAJTDzsruW=%!DfOCGb2GLtrjR0x&UW--kW+sqn(Dmx?4>?}=~-?Qht?ja z4~kPuowAfOYd)>(o#uLT31H5naMaa_MO9)L3nruiNUXP>Y4{~LI+NG_Cd{`*vVCZ+UB@>F%jafTGs#e{z&{Ad}83}Rd<2`D35XOrP-VoA@y}1b`DA8) z52atoxk8~$kHZ3XupO}phELstwpSNc!e<|T4l-+i4!kRyE6slEfBI12s* z4_qvZ44{aCJ6qhr2BTq!;Q+JY>ji~71Hf@wGxsni3iw*FI-6cwz&)DIx>^ zJLp#z4TC$%Kwb(W6{KaHiBIrn!w5Dg>3M)}bYR-Q5Qq7mdE9?tp+QcVMra2YHaOCt zzJ0~l!}8pj`NQ6q$8>G<6Mx_7oHb+mbLqGm$zttnMT^Bv>9*8=zR%a|Np?#yza|Ll zm|Z#s2zno$;gOu(Ca>bXrsw)>Fg|whj93;_?iouCK6`c@*)ZIDUe%kBt7vw}{`vbS z)i(niqYji?!m%Q-HPNojK~fx|6+12ww^un0AJv;Eo}oA@(lxy0FkDlfW04dA4oqRk zZmp#pRL5(v+yr#0GcU?pzj>y?*Z~k&)>4 zS4?58*|3J=3yaO_r%xg|x>NNZ` zcqgMNB5O=0Kh86vfp%O$o>dxQl3l%UQL#aJy>mYN6W=`cPz9 z&*^$veP_g@T(kC>W^MThaAJP##QYiJuZe+3hDa|QFSEKT+t@Pw_tf+A9L> z1bUyBX)R6@Gtx45W`6?J{g{!&4v_H!~ajG7d zK3gJN{TW)&zN;8S!Stgg<%?&5)Rw&B2~MZAzkJ|m#^sZ9z+YeSO~4^$sS>8**?FC= z_5U*r*>1G#Wh`iICRSz9^ZYrJ@x}_EIz48XtlCh|`@+X$oIZI!p||&aPZ2bBStEXV zC}w#mp`E}p1RZ0RdlF`!j+#87j9#-_$0WjRRY{#WX$RThPhlpS)1TMS{`ZC4drON7q+iB zT=7|I<=7T16_;pJj&P7=^j8$f``@8(vsoY(SWyi5BsG2n+<$V)s(p%D*i99qQPYTlx;gPuf_Tsf@_Rq%5(xC{D1k!qTt$85?3Q-W^{xEeVBX72gCDu zy*Y1eyF67$Van#y!FoL56qIPF*rQ{4>tUTwA_mj^i6ZJ-qZ7U&q)VddGQAtx!q@8^ z{Gx3%#N_s2PNsCGcuygj6&d8@l5LY#$8VY)wpW+8Eh_l z!j5_POv(m!{cku(9&AVh5hP)6TnALC1FDq;)l*Iu4>;1$DZ~1#K6?ygI>opkhlI?m zcJ8+4n4P`2RTq_X#FTj$!qAq=QptHyk+J9_w$0I6#t}<3gkvGJI(1d z*mZr9v>DAw9K-#is()A}wpB4S@pNRL+^&H{BpZK6^ZuL*!l36Y0xpS!Pj#s~qI;Xq zM)Kr6n|a!dDVMo5x6`>U2h;rQRHY}1-+Nd`3$`T!|8xm8eoxTUc>UDeSb1_<$EM<$ zP)6}5VQVklh_9>$8PWQicqoC;i7G4)pOj)A4I{P_c7uHZQtR@%!#l+jgJbAGA?2MvtJqh z>3^?6{J8wc`hH-WUPjOP)QB$bRR8>KhVVu>e(R~TRQ;?an7AVvF6_i&@k`aAS!n{> zlmSyhW(IC8^>8yMo~XHT*ZFVj8b^{;zLj~WW!CU!S}k6z0`kP4@!(3Z)k8$ArtdNyZxCNnF zP_*Gc}r2f>e#pTwC8V5;%+A-(UVA_e;{x;3;sX(z|C;yt8$ zLy8GI2T_9^C~(`|zkpzdEACR*4gJ#QU)z(@>)5tE!-xLkQ+?m=+%+_i`w=+lF`9BB zY~z|U44(41CPfQu)(jjCg|k`g^AJc^2itaRbunAOkQQ@8^G44Q;O{ za;`PuH(%a;tzq!Cm{yP}GYHbE1b z?7r_`g{mtwWkK;IlT}lqoWh9!%_5vhA{Mb>5xFk+#PBEGSnA8k110grPTXa#&`!0A z@Sco^LTEx+kFmk_Q_yh+t>s2s+Dy!CHpXufzBvC-{?_VZ{2KF`!`C zj6VV+PVqzUDc|fOOd9uxQB~*8_HUnyG-iL+Q`D{~7fYh+>Ow>={cQbxVf^g3GMI%7|$7yw!W+*;y6{WMG^><7V5n=1iL zE^&ubMNouey1K64{WBlRyv?j*p4KI5?%z88-}_K*=L3iKHyq@Ia&H!`x!%tTvF*j)Y&tS z5NMtUEtY{7TRt`GrM!YO%g~oHj`I-q6f%o7=XE*uJ#{7KnkJxd!HvZNC$ddV6Bz*` zgCqHvQu{UNM*urJm65)T86`Q5=*s7I^=SNX6DQ5LffV{5SG08l$=R=QqfYq1yCxq_ z0o5B@=6PuOKzWc4vPF2TrPjhr`55PKm+x#&_=@6nj_m9nn~>W&)vMwSSS{E(a)iT# zMfn|#i^Ip;NXPZM$1A-J&Vp>PSo7rg`519Gj$XH~J#HnOu67)*c3ftXJ?i(~pKb(y zSft#jS9ODZkS_)?a^|hw`U^-B`6iv=^yf&RG-V2kxC;dix`j!2h>MlNBtm62$!?NQ zul;ZOv`6JN6bb=)ZBFbE*N>R&Gj*$z@t6Hcg1-{~_lg_o zg}C)@xo&(4bNU&w(o6Vb$ z&}BKZYuuGX+@Hx~@RoNcRk&0(7RvL9a&ce751qF^d~7h)+kK90mx#{|_Dq!pZ9J2* zOOwsxnBaQ4lg`n{ktLyMucaE|Lhv~H~0 zu26~?;7uX^XCgZk=@vQI)68q19YU@`8}SPqA7eq@#i~jj4bxSqd1hl|*lL(zrD$hn z!~op*DpBtA)-^juIFVS>$ZEd~3ll5Lh_6nrKKPn10yOk&DP&VH3ePaWkK+~8Eotjw zce83M73_aHwDxTDG827U8Q)E6*wABdrIak}paPe%=gp1b%Z?GKV~8hcRQx#<=A#Np zXKhZ(3Czmyj!o5-)8s2H&P>x+V^5EdC02xaS}C|%Mby6N(uouQNI{BL2*lSg*7}vP z+E}tGq*$;UW@-06grD*0=xMCl6=iYD8Kt?zCct%)+qJvjby1oBTT!w}YqE)wu}>PA zjJSbcEd3-%oQ!_*t6m+gfP{-LB1h5pkNWBR%q?u>LN$MjxnYaBen4rPS82I*b0f5- z-nsn;0fv7tfOf{MW1bEW#Br9Od+(8nV*aSUx1_RnsIs?cHItNX)})Kbw}G#gCYt}s zLfOhpqz4)?CMk7cK zcoF%r{cUcerE0dSXyQ&`^ae)sQ*>ygbkZy+_Up)$m4AoTCKjRtq??T?YKRcQ1Z%8f z{p208)wN6pN0xZN3rMpjh<=lM`9QYYj%W^_VqAiICMKT~B$;xSP4<_DY$*QyhRAU) zptp&4Q{I#LM}EAmENBez>&pj;9)NIw)t3wF_KgwWS@;z%*KQ*#I;SA&Lu@(dT%Pm@ z8qpG7@PxWgW5C;!q1!saL(!pbwU_#b&kG;b5U8p$I?WwpWbZ)fw%ba8ld%y!?`G!% zaKMaC_L7j#90^W;onR8v=`a%+E7(mh+1>KQ^4;ITXON(%X5W81_S4DX@cw@z;QMQO z@b$I-ZJX8!rcCEbA!T!B$|-O8k+5hle_Z6sZQys~z}jxQs^2W)^f5WzQT&mS-zc6| z>k>DUBloe9j-S5l&IZS>V^9o5uvC_{l5m|@R4Dw~2G(i%TK-EcaCzt~XcXoY z(GS7G?Dz3lDVfCmye9XO3&=kqgp_SRmsrKW?Ii{e9QQ6q0iOg#s9MBOEDw(_)~MbV zQgxy%`?}>q;2)KZ)0i*00w!s$#>CeDB+dm-IX(pGJ}6Rj#IKA!%k{V4Y-9cu*;@2< zzl=xH`8dKyS#jRz*L$_HoPbl3^afeB5pq?1*eS z2v9A4L(6AWJYwDEK3YS*GLkGQsY^dU#A>!4SOZ3eV{7!AE*oXee>eAghXvp&Nygf zM}LcKmqeLVu{&z5a&GOFw?}l<_h-EAnK`Dt4F)a(}@9AP~T1 zh*Zp$V6Q&Ro3;wXSc&TFvn5nE#rd5nYna(C+^zk2^Qr1(jG7m^Ke#LQZ;T!6OM$fZ zBvM`X=W8RRX68@L%)+0qQ-7-K=9X40l{(2-W&cEElB;rxeAT3oq0SM@vo{$UGzSmN z^N#+2WCz!?|D*k=KJKGAn0I@cw;BIozT&bKbaXYveEx@pR5V}N{Bepdper*o@Xgs0 zxf#vtjft=!G?6ef2Mec`jy62J1Fr|f8!@n|t;Tk#kQ8|{T0bsE%AL8=#&kDpgGWIn3n(hik`_Z-;7Mk`dDICi_ruhnsS{^STg z(>v)yPoOK-%GVYirZ!$0YA_pGUOwep?mk)W5DZ2u1`g((hB0D>$_WQ4fCEyfG;{^? z9K#~jRX|smRo;bd-i7tgjgg>P_`izw>kpmT&0Ql$>HMFopjF>fIrh+H${cggN`hX^ zwG=-W*wf@An5-CY!0?HI&7UooG~$*u@S&;;LmJ4;4A@ATV?W>=QrYrUIr?>ic1d)3$ew5Iz^CXDk~L8=5n5+*Q@1?Kx0apL6Q4w;Ma z2M$a}J{~;GLJ3Z8?+?z>N8Tfsevbv^K0!9jTUnzd8!l9q!+nqiNiG&6j3g98l@wZMel8$jtsd2mQpX19}?UMCfOj>Us=21 z3bxnQx2=l*49(Bs8FAn^&R`TK5Q3VS)catt@ebd~^l_mpUzseZ*>-A=eduK}Qh|FU zRaGDFQ~}RdDoi-3G~s_7U3EO%{~wnd&h#8(IwwxYbZxpjPBWe3Oq=ehW14B3iK(4- zI;LY7$7$0xx!>pe`-jH^e|g;N{d&EguV;`~ZpK;;s3dxk`6Tu?q#2ifsI?{`HDAJj z7!r6y@Mb$Gje9AAg2c?i0a(3(jqEeyq*1A&U)!P)lB8|SQ&E=pqzPmsc}(>k?-O6~ zY_m*sq7?~(!{}4BLC!Oj5?u#Vib)!hTlMWZ*=nM)4C|~G-i0kzUv~E!B{oPAskG$2 zKvFBJ4O-JsDXiJ(kCu;>5mF}ZJ-tg6nTCTha z!#2K)k-Ai?cQ@^>NrlQy;8iY)I9}ySk3E2kTndd(Hx2Xm%2UfYCGUK|_8SX`-qzAb z)2p1d#HNX!mWVRp)Ww`z67O`-^#n3U{CO<-uM1BnG%*9AW*8zn*Um?N_g5UY#QNon zLONews&slzM+W>mG`qzhEwlr%?qI+1c|YxFxj`Zc>~G4uden+ou=xJV$lnv!UX3}g zjlmY|D@C|U^4?ocA_Ckh678D&ZG}4GdCzFGGr-bsXP z^aFxxlaTg11MJkQM=}TUj(-vh@%J?JDMRq{nqYROJzLdI`iht4E1E`xc%_5rcIt1| zaxUi6;v0a48vwDXEUK!ljL2@C2_eKLx`44g;o7vE8aZkhO`Vm@8;A5LDl1+(X()L1 zCqug{D8bw?|0Los5(D_V-#94rV28rre>f1CE9eB!<+nmJ^bmQSHUAvx*a;xbh+^}+ z#tr1pXt*B^#A2KZvq!nURfXa9&1d zw{sTNejPp+nih%^3Xk!oR$$g1jBPqqzM)FAPO?iT$?3z{CLu)GXN*0sIIEzN5Bq>i zw;mUKXrqP$+|p2~qd*k;V%~Fbg8t45KnV{atlmtzC z1&OuYR$O)}_R}q*+1ab*d!Ok6*eDsw9mX>F#X3H-qPd~E;jM0dPqC`{L+EuSO`rZH zWBfDj?u1$aZNm)+4^lZHsO)-e+LhQTI#+1UAPe>MBCIx;CteNTs$SM(jgdhn-Yvml)v|sZSt0+PpwE$X3LByVRX8 z;xNho=jrr!$H$}APS5`9CcDS`S+j=Ut8fz$3nR@wJ=@O&)$D*6!J0Gz!(gY&&UYC2Tx3au){cN;l z!Vyy{(caW#oP*)!sIdem&YA#|gR-^*Fvt)>IR@W0^$}=Cp{n~;LE$cE$r**O2YJ_; z;F1{7N<1ir@$OYJ$96!At+#c@x;s399UFy=xsNYA5e<)*iKLn&6#nb|N+t z=1$Jh-`^>D0(!Zbw$|#(_gO5-LL_ao1t9Hx8)L~eZ;-?1^Ys~?pPv%n zieCP`y|+o}I?^gcp?9vtKEUv!uDh3i9KxI$0mytK>fkH_wg*^)#`kF8tUE-=Q({1S z3%b>W;=#Xv0ZL?|Q{7sac1hC)dUzuN8-iQ?SeyU{g6g70MRiWFO@6?ePvr}PQ&K>7 zlGn>-li}6GhcK^eL&V}8>hxEi8YCXB54Yz*JGTjvUJ*Res zE9KryZ3N!2hXEmunWlSE_Ta*Yw!|Jzxgn>&%InVM1WyW<%eqV6i2b9m}Ce>qL}k+vA6NuYHVnI z*O|gktw9l`u#G7JY4%; z+VYZ4>y+2*=JmVTT)T(k)4YXVV_B}cM>A0T5(KR>=7QxTz0jmmYy^U|=ie{I;ehyo zD5tZHGL#}Ng;J*M&vJfC;R^LnjuSg}brjof85FJt6u&BYzgvW!YWiGiz8-h?Uxixs zJ!B5NuhDq?9sm~qq#E$|b8AevF1>YcMP^y>{*#81bS=g}UN1GsO!*B0gyjM2$2)*zm-tZC(^7jRE|`c+Y!?#UKeOLi6_Exq2*&V*~+ zgm*lLt0B>3`rYRETW<|arR-g;xgZL*cU-`Z4cUCEwQNGX5Be>{aszVrg?+=7feoz6 zQQc67fpg7&)Pr7t2NKrC;6dVD7vOsl<9kEnyT_ksJ+{lVt+@C+3M>j6;%;V@#*Gr%;t=)x)2w(Rw3 zTFqZ3wHp)Qvya^kx-DOfhU+|rO81*f?wG}+&~Ak&e+KBtcR0&R~P~Pw@^f@i6|oAN-~70RgNUxZjEH10yyL>Qicmd)9FV)xYWN zi$4WTb&SyIf5I78kXZ~xb8HMx6Dx>0#r6u8_6y+&J78j2;PajRWiwv zp@3t=K%q6kj<`;OOAQBEC0J##%AQ6H;find!f9PFv!jU7 zfMK2rhZ*ItQUA!(dS`eYG##SlnDbHAj)mB&N6%F3d(%yLeVtTN&7Y-M2|?=hn7})Inc!G)g|L z`f~OO)DQ_e!&wK{?fNFJkP1Uock~{t$dYm4m(*BU62a$uBG+#LtYEnLs&& z+$|9>*WQD0T(0AHgZ{?G46GN=f9Lx4}4%$e+k~pP*~;f2_rtP zKYeIGZh&c^(HPK=$Fw(PmlNbLxd}v3u5C=nlFS${m<5AU=p-n#)`b``Av@|vY&U8c ze0@{ai%vUiJDjbeXcX3zp(yQSO25L3%6E0A$y_2+@klNbicX{P3gh{386Me=A)hZp zr)h?D^2Bpp-u+3%+qA_F!XAT8JH_&kv-{g)UTS;8HR4V#xH&aSIciZkf^ANvdnz6E znjgaW zf!oz>yOMbEA3*>Wcaqs8j)M>Wx;1)<9Gyg4+~=pH$H9pTe-K%k9Wl_`!3i@H*uV6V z|HOCS>-gHSw#em&NVNW{3BzAyh-QW{$|Ht=vBQ`I!l~7lVCzG;#{r$igJuk#mNK(hmc$G&>PJBG-^aU3nGI{BLm9IR%ehMW zjFE>d9z@~L(%e*weFlyEG^MEbd-Ap(R*#b^8myaVg`K_j++TMag_bFDL`YR=*nfP6 zEpik{M^q4#Tj80Jw5^Am8yk{2MvUZ_gSL%(mA(wA01R_Hv;Ht1kSvF%iaOq+K;PEn z*CI;{yX_-y6WOK+ZRBsTSi*;rND~TWc2!; z$wmz+S)XQ9w5g^`ljh2hA%i)RZ;hWFS1X^*e!AWhz)lhu^9fP3VdO81%`=o$9cBLH z5W{MZldH#9uISOR#5}O|=%hrXNPJjnr##W?gNyWsN@)ttHS&>()3Q*Msuk@Nea@XI z=ix8X-7cas1Q}tse9%0F^^ZVYphiezHur!!^qmm;xDAmW|;%h z?*mx)171i4OAj`fXMcwpw!W>pc;$vX+OE#O`nX!~5>Q0Pnn#D5n-aZ}6=`E|aFSn~ zj?6CG`)xh$pMMuIf{cduRIHi=H zjls&bk8w#-W1ocg4-^ftakmL)EMq?AT?x^gO;wgIpH`PTFW- zD9H#pb6fbR2}ySX`#~*uvsUzw)$$5*kK2W>+ez*GQfut2$jIt?+|Efx%RX~Jz2?$~ zAE@0aD|3O5SsLYYt*zf+=kIjy9GtNv_tSEGSJQl@X#9BCr{+l!v>=o{*XX>11J)bt z4yF*3NoC(&05&sywhzY3xm4(-?MXizGk zT}B51BtHb_aUgs#nv1->deve)@FIYtQv|NJcr;wj@^A>Sc}reb!aMaY0$z?hM-);g z?q<{`4E!_#4E&&L`P5rYJ&*u80U+R8&*{V9z_dL_FYV?wc0>h@_(61!ibLW4+}vxD z-0n`OcmnBoeLB4t2{(itvVQG*{F8=^f8-NSzvAjxa+|;SLqhUw-4{Da+7TGeY1%_5 z3F7WR6;=AX)x-3O<(xBJ1|~vrRcq_FGj)so>;cvpTTIggW1UacLC{TmSR0$w=M&=u z+IiY^aRpoTG-~n>iTq4`s#daX>qo9}7=S9=8f)g+FkJ;;5P=XcxB5W-ZH)XgUjKi> zXIZ~CjN&my?;LA_@^JH15=6IfBW?j~V<=C_#*9$`tLxiPj4k{r1%wG5ul$X+%#@;f z8)u)o;9Xh`wXKVGTM>*J7iN9%+BjOSytvSPxBS`5p=iUjV)5x8inF3*7f)ao7Ohv_ z$`@r;!gdK=4MSQVj+rN~(i~b!zZiAy*$zMCbX?Y8)2i`4D~7p;T6kp%p}TIlc#e=K zt4byAS|c!sh?|eyh{T49M@;V;zQz)n<~x~>oq`2{3`&0SHU!p`Yy@gfXQ~C|I_1Yd zKE4~zA@**F(cDSNmk=~~=YDll7Ins@CcI!o<1Xz~1zR?}yaU*g?m^4CG3cyOJtN*` zF=z9Tp2?IAKpPsdiF*^(ttJ``ry~TyXb~%J0q?+lqf)neHh*mf(Pwwkm6z92+N0;+ ziyVfs3I@JSEI$pL+q`MWiJv|lMZQ-OCvH&hc==7?h1=#?E~x`{4m4N3N|V6=`N>eR zTtAZCAd=M}lFcBR)hJ4QoGjCj276K7UA3h76aR93xLTp|jdmHG(6fOCL3U7M#pJez zB}cXxaVs0yw;O0srs_e%3k`)|7lyHFO#*LY`82Dc9LH@}1U5bL>+6aUjV z!Y90KvTY2xcc~f=i5i#}8sSYEaGa>k%)N9yEb&jVsNK$S9W{5~4hqjqRU;j0KY?uEio{&oQ@&caABclfYavKNhFOwR z(GLkQe$9x6CtvWo?Di@eePJ}PYtceok(0BU;OW3qpN>o9zwWL>!4-EiCtmBL-)&ajjLpkO4?0Jf0K}$taDtVR6x>V)vBX4}M*uAOGvM|W3_4{p zNdeEs!JFQ~#2*Bpytc45%oA^+S`-ZSG#ox;>Y>hST!&2fCxcYO2?x8LBY%^>%A*E+ z7?jq_*4Rt<`IhN2f8@(O%V^j+rf6tlLjz5o8I4?KEBD&eei?YqLGn|NmKPIUAOsNnFOvt~YN@RS|A@lx< zFW*ll^U(<)E*_Wnvcg1Qv|W@9GLi6QOdQm#MKnYUEc*p*j&gP!JAS6Qam z`r^emcN{))d7t?hYeR=PEAOGtDE8 z{?&yN&ISIfA!`<(KJ@fv28iFYDqP&kg$Oku9Lo4*^_z=Dt2rOS*IELy`h-iWXkf0O z+<*|`63mlrXXtY*toYc^Ffr>dTk4x_DATI9(`6|6FgRSc|$g-NTvP3>LQQzzkP zY}=W-Je$^Z5GR2`w1O=G$D_9dF0dk&mnNLc4mO8jutO}zOVk8AB;XXTw}g@DoAGfF>G!aEZ9=+Dj} z32ok?Z45gf23sGJU?09UHkU)J;6?7r)HmfnW&mjF;68099KI5o z3|GN|OmOjs@&hXCkZ`wk^sfNb0G~p~hZ)%QzX$7M;C%VI836?_y<@7P1FqQJ03PO9;kf&b{>Uu_bfP@82rIjlzSX}LSa-_Ex z3dsrvLqAHLOy3AVnertdnux!MMED~J12B)gJU)pItIUdpy*6ED#(Zg;F5PDHw^rof zXEUM;6LBGnxO+aRR&g04a_*mW)1_b4*~SzOtLHCt-W|0W!4kF2%Hi)T8S{M8C~0Td zok#k$JfK#E$R{x_nJ-n2U{mMOeaN#TcY=O3BP=8)Gd9APT_;d)_s=vHv7j~s-1=o8 z;f5w(K>FWB+z}+xvQ{D5Et?M42-pep$`XBax-ZVg~5i!-ffM?RQnx4O&aK2rVl*LST zNn8G>&#JRo?7QyBgAr8If~~Mo$s8-`2&lLLCF@mO$FPu)`!>Q}Jf4bp=G$#mbq58K zuE7;N?_O;KQ3y^glNb@rPjk4bX^_8Y`>>6matSdvq)S!vbr6yE!=E<6YWgb6(;9>8 zBA3PR-r<)(GEuM@@vOK;Ecdt=9Z+gMw`>b$rRwD zxc{A$nqE=R4|z^hKGZR^t=+^IXQ`TQ<2@zUMm6?FQ1G#L!>frc4Rc9BpUbc>LwdA6thxm(FQ{iDb-I>yzOOu5)NRua^(jBw@Bfyd zutPv^XBOzYOjQ3V3hDN#=xx>PPkib*ey7Y2oKLNX(ZwoaW-s{K^kXV!UzK4t3$bdO z>b`Mf*&@oE!(HqpT?4D!W>#C5hDeSISY!(a@_PK%-7w$Vt4izr;M4ZUhv(>}hOn0L z$7G6EY22N0`^@|(sf`ul_c_@>S#QSl2YELB$j5B^5oZ1XdUPTm9dbHwg4#?2wTok{ zlEu2>JGkOoBWOkzpG_=N4*w#pS;@@^$kV6o=SbKQ(eBT8y$-H_*KK3vfFs z=oS@p{kq=cRMiuq+|?GgsdQlwzCP+22ELLR7_|?B-^<}ZiEu2LPsmIIBoCh=6tNIO zH@(mpc-C83k3W>jY+-{HYaOY%&Pq6_Rw^0}e@O_re9+Ob_Ij>T^=Ihhc@aIGW?F z%BOuG3CO$>!J%xp3z;~lw9DTzP8Q&A*48hy8}ctxlhI5+R3;D2;9ZkT`^_>cQ(VIU z#bJZw2+O8FbsmZn!fxCeF!m|oF(EAUA~x54D_M>*Q*~U7?4{GsP=rw%V034ZJ_S{{Nfgm4yPH@O!KP`ErUhh z$#G(4^w(y`JhyY~9-g*0#n(AUd-GpBQzz!mdf@))DL2u7-J8SZxZ`1AUfYQ<4}AOW zVcB`}^4oU9x2#;P!o%&g4wvo)_5kMEUagsXor&vb(>L6OpLuet5h6N< zFLmFA6zyKzbDO~pfAOXXmm(esn8M{do)_vo&o_MfL6H*&D{VJ^7<4%H@!#P3qsZNg!4L&(R!zupbRJeXOMY_^C&gUn&Y-H4%o zQJcuzL_RfB|_znJi3j44@9wd&JF>S<`_*#~{W zPqWF+zS_L+?pvq$tVJ|UHD;C;7t1h|`#Ir_6Ctw@M{`#%bU3&dVz`)ci}b<1lM z_9awUHmm?`n_Z?1F-0s$0}CkaTn#0IKtd)aSGz~+9xk`n%Y<2aN@0L|iWkqp>2!ol z2RSUxyY+;Oa+RK1@Gu;%q=k4x9V)~x(^xMvxf$&BtZy_RjvV5R1z|ln^~N7e*vj>> zp@mqIz~l<7VL3e~-l8I%QY__bqGTwv@(}tx74(W6*0w*O2AhjJ`It@xMereD00S;0 z&h;!97s#1~n&Kh41N1LtmbC9!&JjL-`P5wK7e)T^`f_zP-917v2N!;Dio2NG&kecrTZvws)6K zobUNy`9k{(z&<_vQ1&k^J42C#YvEvKuMsPy0?1!w&d6C!$zn-c}2?-ibA8UBIHQAlR*&mPCZ_E z1~?}ngxqzQO6_H$GW}H9AC9yFLMNl>+JxHO5{~Z}(68+r)tYJ5JQ{NupK9Zb))EcP zle9A;xp*TvC!&WEBJ88Wr-MShzSMDys-*_x+1_MSNhli~mvUTTRDX(>Q6&w@=3Xga zS}AyO!(joiVd2H%{rq_(CP7b|8QlD`N!MA~N79}Z*b`G-}?O4F@&O>3_7O-E3CYX2vPhzk?U~c^Ox@R{dE2^viW1w_Q=wW*^IC#+elra zITtmz_^;6BzjAWcg*@NY9G&5nri&%72)^@XLUUz1pQjV0>OTK~)uj8Bs7{#Fv!zTr zYj)Qz;r+nAz4!4sPD($DG0IiH<|ChTgZ8GBLI8_|6Ud+j6T9m)6hmYg*vAxIfXur!M z5@{|r+4}6tNs}$Y+Rp0Fts>1E=m7awR`+P{OT^+yuDB6o1KmUpiL`Wu;Xuy>t$7h! z0qd-P22Zi>({7(37XRzw>4mx>04ddy#s%`P*y9h%@vgS;WWjCSe)He?`wkGh1$fVz_kG*IUqEb_z`xSd1MGauM`PNTEuTG4z5Sai?Hg0 zD~AE^QD-+dsqyb`U?yT8?c%nIip2RnUJd1M)ejoiGCt}b?GSqBK?Y=yfJUO`^OXU7AfrwelsXhjpV9x1LFunf zyD!+FjehPqI=ACfGsauLSZVf^Y;x-{B2i<7x7)IrJ+I59ICbeaYm(3A262|jZFa#j zWlNU!MBQgb)b|-LJ#x+>jc+)$JX4WN34H!DsTLG=qEA;}J7OYei)Q>CQ)N^&|1l&t zNoBP&Cts_S`~{XmdLGgEU`7oXdFC9xfnU^ovG4`;#+W_Bs7P9&1k{|*LRTns^G?@( zc;sj_+x*KHVW@>0qIuaj_}kuq>iKx){Fy-@(%Edz`Sqpg>n9gO&l7omuo)Ovp)Yivd* zw2hWsCm0dzsDjvdx30jZ&mDq06yIfzNI%cCzS7jDO(gqGh_>>U6S-ArLmVa4?eOh-)KXW__*|N zcnF<{wXU_R{gN$wHvuQ7LOz}HQ72k;-V&@p$-F@7t)hu`SqlJR4Eo- zHyPLUf-D&SB(3k39Dv==nrx$$L@d zoy!>*1~)P1*Vhyb;NKXT63PHh;tO>7uTCHNAc37geBJe%lIrYrcZChaiwebT?O^LD&j~5@rS(i80oX7w(kBOMjEV`c2rzL zT%W|QXeguP_f>?Qa2=WY{7Xypn=wp+juzwKygISoEPA_eikP-;NV^`{`;?X48orws zJ#*_dKW>MFD_G8K<)^H9J!D3f6%_n*cO?XOzjFc$mjG4Z@T^5uMhf}fce2IXbe6&C zi-%dnoB1+dYw;H@Bvs2#m)-L>3WhI!d=$@47dFin_4<9G?gY3m+8|lgd5t{V!VaAK zzGV&^a3zUm<&GGdx_@pmtXu$oudE~0C=Z29itVX36x4l9PI zWi`Wo!Q|*!jYXyt9N_4;Q+{cnek!WdnzZ*uPvA4>hv^Ji_eZR0X6aRKKzdyC`}iw{ z+V8Ft3YekVOwSBd*_+OsN}VUFO@^j;D5>C+#)cD1h7kL@jBOr^2}_RgLdn7z%hV^pHS^nM)pHLQyC-euSjMr!St$S}QQ?`{Dg?xQ{ym_E+iZ z8#%=D&|9a02(lyw{qYtSr}l<8q3RDd48JS-|JdCZT7r%cv5V~rYxH0*msX@vSJPF* zCUOuP(piU8Ym^BGAGR>9g!G(7%n^WGPM^43MTIz>07bt;KSxFRvmiStMTKVJ96nk7 zPdmJjcJzMY!>xkR1Thgi)HE@)X6B*I{CduQ*by1=%h9LcnF*J(uTC_tayE$UDk1}P z(y%@N3d}BLeG?E34yA%Vnc^9F0S5t4XstlNSUc~*2XBqBUxs8%pt`_PQI2?#of z&~FmyfbftFB8BP`4C5PW#cs%Z9B3p4WRrFmj$cG20?1U7Pfgcg#O7p1rHH6GoV@&7 zROR@CcL!WKID<>3KjZK<%Pm#fedQg=>$mDfQmj*fqnO6BK!2ZCBiJgDWCTc6*y>kw zFB{U;f6A5oW|;CzpSt(GvSz#G8+j?K@aIGJ?KCV#*PdNvK-M&buqKkF(rV*SAE3}j9d*ypM&-p+pZo2&B^uJwEW%v#ELy}X9B z0j+s&6L_>azu(5zoz-wUQqw1@dZRY+i%WVYKX<`>*m=rcD!pGEm<@|x9^HNrn(jKzhR9SHY25FofuJfPr zTB^Z~-vDFK%$b32Hlyk1^X%}3c~u`n-W{HdEzSH%I*zZtIZc-~!@@5>Ljd)*QW9s2 ztT#l4BzS>df@k}WfZ5vVt^or0&=4c|Frm$|2)=qj+p#~)i$6>M(hsWE*Q+HHU)qQ@ zGUfbIhx_?t60__xMmgwze!d`&P?tqel?x=zER`=wj+$Gu@!|3N1>i#JHg&Tyk zIhF(lPC&4_b$fy)I!LQ!x%aqUz&58SbYA#6&5{qHzV5x$J(_#^^;+iUIWWo7UpoUG z9=wJCH0L7+K-^Uztf9hE5;$J45>ZltK(Y0Y6*pl$3xMwHT}0{c=vPvNDRhZUCjtip zAaq;a?>P7*2-lJVK+^ZZ!DA2sU_bAQfL{&{@FDPqNFXf4h&&t^KJwJtn!dF&0=`KH zJAL;Yng@aa5WwL;g3ANy3?u~F03Q}~CqVkuq`E;N-rOt$bh(QP%*0$`Al&$0t6}Ve z4=Y)>EfXup&&8mwzgiqaemUQmz5fj{*srS_mF{A=QNa9{li6792&pnoLD%9^JIW1M zq+%jYwpmu37#$-9pIMjO3k?L5bwHx#a}^JwDv*3_pGvXq=1JJ#UKQruZz(pC`PP+z zg*!lTLz1D9-p*5&c$k(0Od##&wTX-Hi6tr%jLkulK2P~Ye9A;6AH}S`!J&q8k7X0i z1q68tuqtqv!`jrcUQV+daoPmN&lWJbsC*D+Q}Gy#<0?^HP`G9dN7&G7_Ne&Hdo`mu ze)>kbiS+^&nY+mt&0jIhD8hIGIn!2IrUt7bQqo%KSv;GO_00o(zmlxoZd=g9lL;2BO>>0X|Lt<8&Y_0BH3;td6ywOxm!k$-RI{pi>sI`Z+iGoK zCRKx5)1J0f^{&HlaP&Mu_Vc=+C5@+!enx2CuG(g!w!4OTlcNoIyFm;HqUcGvS!wyZ z*37v}<7*kE?dYXi3U7Xgnf_vC?oWqiVJG#sx(Z3!M#vdM?$Uv`(O#1aqhZE&QJao91^+&}&W(FOZ z7C)$bINcLJp8?HRu$pM`I@UoaOt^=0qzi@ht@cEmX!_F*WO=8kDe1M^{_>0TNP*>f zkN*l38Qy(ef3iQ2K-@p-fvEDp1dh>|Q)_27ck?ut-Js5s-WAH8C8CEcF?1)(x!3fb z?9H69CXdSOM8+R{{d<9NK54(HeYT5s{L+wV*X#yrM{jkX>#XaUoKzOa&nc58fcNUA zNgNH_e&rS-;))y1Fh;u#H=*iInBxK7hB2{0-bnK^9^N*w^KP|*^Lz6plY3nUjSc)We)FuIu1Y)cQjqV^{lWNsO0;DC%tNls%AJRfW}dZ5CllYk)3N0 zz!c4m4-1kEKP8jMN!*AkXzyh^ISXwXqE94&6t)OeXw;#2K{K60;kkM{I!PlIG=(%uAX>YJb4W3nTIm% zzb`Q>K|SBwyO;MJU<)vf2O946LH^1yt@tmA21e*hfv%R^E*F72bo2Jl+!2UcStvK9 z)Fisjq;>S&M9If<wF!KS=|Bf7sDGX-De^eNNEXL51~Df z>dty&r$*5r{tS6~7SezrAy_Wn%O4Qu_J9Ey$s@7%OI_KA@V~Xv@?i=O#n(t$eK*Z^moObxopjUM?v**>8NU^1!$CJk^B@w!bvO%KJ zA8WYYE>@PE-k5H_^|Wwn?ZjHt4YkFe)oz~k^rEjsEnz*Fif8G0om6((ky0l~{F>^Ps17SpGOE*9xadb>Wt^Zb`Mdj1Ix_bB z>W(=MKI1-7Sy6&HVJsc_1^a(E&_a(Zq_5mt`} z2m~q!fP7*GEpz>zPd9UM-rVh@BH3{S0xo2fyGkw{Q zR&hN1J7arW+-lIL}NuctmVoQK4yEdS9 zJ5}i?lRD%V2L9z4W0{326XkH_6S{k6*MHPn8Q8ygdlBgr24;)~k4u~~U5jY7hruIo z5r~Pwy9O#qUDkTkDKFws`eO?@iZyfx3rah#=DErk1}AYu2;Dt`QqJ+Joi?n4gG|Rj zgP@g&o`Y=4x*~_kqE}jkkb<5k(#7L)A1u7^rCe{^-dnMmo!1WBxcQ8vstCIVp@cHJaE^^d-&xjfoQ`P&J@}VhQrV6c59YC)7yERYng+uVL z$j#h@6HDL$rWa!BS% zJE}|~hH1Kw7Xmud)DY)n%K6s>lZtpQ^0@Zlh#;8>PA$WaG|bl+&VEXSys_?(>ZSM9 ze~PMCD{a6`zvR+gnQdL;cD|%o*Cp5lQ}*0Zgt1bXJeB`Ph4Ys+@7jsN-vZ%DuF^?9 zceInUiV3wFmS)h+tr*%GnECC<`G;ZpxzMS|3tsRZU9)$W>?Ye>;0r>iYJP>hk7D^t zLNwEA%&aF9V7?c}qw+*2ffR=@5utyDReDgFVW zD^3Ez@ZC-cf+xqapF_rtX#@HHb0Gf=P)UJ(?e~+J?I#v9hfh~<7Ez>xr>N)4Tl7<; zPyI7B+rFSQ%ee|Oa=V$255pY)AE!R3X_>beAq$p(9^X;vRj z)MLYqCLO-AO|8m+O@aw2{sR%>=hi?N6-jnSTx|$hpcN)$g>eP4ct@21%KWK?2Ew~L^r6H_zZA$X zend&d;zjfB7stJ;?4^q@f-@bK;@wu2gnVo*WZNrK`I5#8#zW0hZM5NqxN+18#2Ot= z4xd`v!}#=w1#2IZlyX_Lz`rah7#+*$eDt(Ujq%DWmA3nm!YklC}f#elyMyDfN4~&Ls=GOA0e7#VqEa8OCIH zdWCPfZ0{!@$v^dYZTH<|B)HW);}!k4DYGY<7|@KE{)YRY51^Q?+~GAjN7v#XB4nI} zB15y5-F(zs@DO=o>wPUC z5!}Ra5Muu@yNAkohmjS(v>m^cb@q6iPf!Crlk{|^)nuQGjpl{*GcNYruR=!MLYWe} zB2)U0lGDfS_4v?N>mdOkNTbIlx>x+WB~ZxXp?>Y>7m8-%#(L;{LDmJX^IMRX#kgdM zG;+RLG%vlXrtM5XQCFQ5{Gne-QN_BXiBHE+IrS;)h+6E3cYJ&N7m0BJk+bn5vIEwr zZ)R@PvpMcmg#L-kI*m7-O2YPf6D*vLdKttiob+W?bQLv)c5gaIW~IlcrN;Rs#|5Q$ zz6Ke*3DnKIYh|(j!t%DA!(I}y=MY`>v)UFe{1bNj;VB8k*uF6gJh5ywRqlBS#9S!!bIW{UivOuh zX=ye3UFq*w_ICNJgvrDu7dQ)Zt%W9cmBscF>Ja?>%~~&@J+ZBzg$)PMLk}@wUVo7h zJEPa>zcNOTY+-zDKmix}7dIrryUvhn|6DiFz0rO&oU zthW$TLMB{*gBdLVSK<$jz*|mG^vmQ_A|zze5u2?1+tNHCA2Y?+8Dz3}*3kz6h%GBy z+g5XeErvSKRwyN8A@8lX&7kkLjKko5Pq!Tm>A<@qvPgUAuk*OvXzN*b6 zE^&Y4SgyGpUh&n3|Izf;QBi+yv@j_#w7}5a0z-#1f~1rvAqU?bcc*SZc>1L?_%L(*09`HRG$;d$KFc{7hkn#&9{Egyd;!lVGr0=x4 zNqG@usOO1Vw*wCA7O@IOy=YCq5SGc+rb=za7QbK{b3u8RYwd1^)!vnyzum7Z*Q2Qz zoqNR@Xwv2fu?AT-f2vt}fjBN2_A}sK94Zo0>mI;c3FHG`E@+~BRFsJDy}yJosaaBL zT4LYfV5qup1+zLu4IA=Hylt>i*-Lml(j6xh8l8pZ?^QC|%NpFchH2AaAT!iQp5=by z)>DZ%u0ZnQVGX;>>D*w+KuG3-Wr++|*1;y|vO%_;ZuHRC_eo~U2i^2qfV zBu~m!K)kQcw@{BIFMn?pibi3*|DGeDI|6~+f7p>bPm>Vb&1kPPSet|MVcOps!EO+3 zJorE+wjcNgFbQCdn~mRAw3sx<*c&(0H^2qr!U7o{cq0SN@`pZ5SlZtIsVSr6bUX7H2+7ja2-& z8ACnG%)CrPy>hLHI>7gTgpD$0CajSK64pLFhAy!~8S;4tcZfCx!L21UaY7?{?K*uI zLfs|*nR?vSyuPZ?y>BqM5Y)KgdU^6Yn&h@$Aa4p6Rd<{~FD-Mf^0XMCcEpp?Mw9`? zsVn>B7E)esY zg9F<(Ckcc#PDJs;Ru%lQJI}Bm$2*gjBQ}$;l*+}4saCd%W#fLbG*_1*n7B$4KjoTw z8*b|Hb{RS0dky_4((+irHA8FDJggrKkZ5t@x>d;H*JR80bOtBT@zGBqov1WVQWryV>f-=_s zK8tz`@!8d%=*f!+l?{6oOeF7Jg!DeQ7(T2(ed$Rz5jT1&H1H^6&IjMbEgR{Vl zNRY+V@90adw#z-O!$#f1Gr_|%*F(6)GF-kF9=r)xJv+1AZ%q5f%RNl4lU52!AMmc0 z7Ee@o{l4A8BC5f=NOO2a^xdq%WL9_p(t6rTW9KAt4|gMGJrVKB?|+ZH;V;X=lp@#r zN$pu6L&W}stnpwE`%Ln-h2#?=Hlq~lXW8BwO%6)y-=v!*@K@c@0s@RT?J*JO!R1T47w1ggmh4} z8vom0LkB8Y1U18NXstm7)Pl;wGSD;d9zhq5AY+1HA9v||VusjYK`iN@!Z$IY>#PgRbPKFh zQcNtNPk8jZ(iL}1KQ%m#r!)DNpiaILr}0@Jzet3o4aY+3WQ1HiDY6l^)=bGj;GQ{|@p_963)~qR1 z02xQPrFz6}a7(p^%jHX0X;}m0Hn|shPHaCKLF#?4Z9DH-hzTH##?lXr7t}b6jGNZq zIq&xTTQ37BZgAS^o`w-pl6)yriEU-2xw0NZa~FLUFIZ(5b4ys0h_2takzw2IX)S$* ze5I0?_O;5w!!cGaH;}HLb$@P_1LR3Wo^w?;pcr-P+KO!4W*U{Dm9w$dUbpKylX!;G zZJyQh|A~zp^%d#{-aZ0pm&l!_p$hXBqJAyc=#jiHcjuLZZij(~W~og$>oio^vXf4) zWpe2g3P>F7@kGTV=SzD6kfKFBcmb4#W~xTG$c$7;8e=z_A_7?XZtg9^#cv>0S?cxD`T%h(SQl^`yaxWo?c%|0 zxRC!DV_Id`qSpIG#Rsmp_FFV^o2VuN-75?YeVgWQ>$n8Xg zF)xZsZoMDSP&?8?{z(hhhwi@;-rQcj>e#70TfLi98U{vu^WX2V4~ucp2)b;x?5lO4 z0u|Cj4`HT*VutIVJbanOQT-d)8{5t(N?9vm`s(OmVM1PUDqDt>TE^eewhGi`ge9Wc`KvsSS2s_&OifG_|>VOnOwLnENNl6(L zqsu_mcr?$|cys&qeT&DN8D_mwhjJ9?H_*zX>N1FAJeI(&s3TQ$Bj}jf`S1%HB5{2h-D`XSb>>1AG44 zHF%~txi7jI2tTg;H1vnPAxP^$k*Ync-Xc(o&0-CqDCQAPvMr{$PHGs?E3qPyuM|nF zL04oG3!|X9!a*6Rfr%n7O`&#pySjvxQYmK4T~)-^uWuVi?#+rrt5mHVTfm(6gt^{? z^#>XxHNMp#%O7lDwH7$fyb6sQCrJA74I@#uMO{_$u1EZ)TR08Lej{NxcwtZ_gC@eh zDnR9ROuZs}$3vIe<7+st;h{sBg#rGOC;JENH&O#cvxCIe8_}N#DIo21+9ox(;RgEv z0mhfO^6qQ$^W*9%*wA)d-^M*o#1q8s$mY?m4>_UC-y1;_VLNg-649;H^*R8a*7Is! z?HPTqZ|>W7w2W=`w`lEq$!hEoZrMG@+Y>n?@1TwkuSO^Yh~!1q4=zs z_@d$2=O2M>&F?Dc$zop!0{ElzEQZq$sr+TlQTELipX#_{KZ8|pYHy~ z&2IQL31onmmvlmJukh`@6;{g@{bvi}2n*e8iz+LcMHX7K(o;cy@sGXbxe$_5Kqr@* zw4=tu6Qtp65!L@D$@^CzZnkpN-Ew`+sWcmcQx9m6w5h>4v8`$Oi*I?Mf!W9gW)%)O zdl`25Rwa`3%c+~;^V#di1sOfo&zY@dEWJNe{-y+?z2WQquB|S;E?{wJyRIW74Q;<- zixQN8{K7}szZq;4MXe1AK6%|?x*Ip>*_kMOiMEu3Vo=i%fTvoFK)mUMBfdGH?vO5- z|FT_xi}9UDN3FEpzmA(99)V|nC;skCteovwUH<~0e6}OR6V^RdKLnXcuxda9_TbV z1tK9O`{0DVpsSpM3(bg8nN4mHoTQJ;d4up;W=Q)T91CiJBZ|U%g^OY`M_q~~gZQK}Xh-_1nCnjas+8Y@efqBG?z6!RMcl2Y1Xo+1Hm@hdD0A)*EUp-WbO zp7QEdupmBlx@+Foh#!{1c|$u$?oZEReikmcDM{p7&C)|(Iduw8qWGrdCuZfx3>C(W zM_JN!bFZ(ct3JuwQ+zp3V}}Ml=D$~4V56rm5qVw)R7X)V{C&#&D38PtTlc`b+Xdmy z(H_@#)L(|vB^Hi964Qt8y2tGu6u%ZdtAPVsCpWl`qJ9v`R8rlw(!iU=h8j$Y2(YO2 z{V<*cbFJUNLUpLGTnXEsh8rHmWnHtWuQ)}3b9X;D27S&sN|cah1ON2K5bJ$sZzSKpGr}+?muoV9E`%u@)Al>MSpr6^NFYnQq`Oa=>4MjSZ!ct^ocb| z*0pdNS03$_m)q^XM-+Vfg>!x7v;e@aQ;h8t&h3;UW>HF}ao45r;70qgC;V`oQ7pJ+ z!@$*czx)>@5MhxK$8CDpvw6IELQaV9P8HFfam=&Mf)~AhO6FO7gk$$vUO~@9O?=i< z@FRy$`>3y>Gpa)JB3JO4AJRT)-CNc~YSH+luKACRTn4&#d;vLb9*&>~Dy+sbAHOho za;5SoKS^X;Fx-XPtRM5wa#vp-RaJ1`JMH2i3QeZvOqQFy1G`Z|@ za+VkM80KvOiG3mQ_V)7+#GBjPTr?S=7jIN%Uvb>NGqyrYyQfTh}DdEc~kT{l|_@4W5L;#JQ=;-Kx5PW0N`yGl^sXr)hO zY3$AYV5$u!-v+ofQT@q{wAOu59X-tHa7NM{!g~*mlulL^pfvY&ph*5!A7((BNhZ$ z(c#@lznswq;Z#sTOwYD7CheXKl_-l5OIUaCC4x@vo@{I(&hb%8T2T?4_Ln>TckZZf z0DztXD1F{MA_mQ>y?Wq+KI~hb*&PRTC_R|G89)U8~oQA*;>%L@9+QO8%z130toVjFIigoJi&ZgMTt ztF&+A);DSAZu=*!9KBIBP^Oj1}b>C;$pf*_Q5hoX0}B6=^_ z8h;W9VZQCQO*bt4&WYRGi`#RKOZge4IfdQVz$$t0?0rqy0Dd#tft+}YV@2z+JLlPV z3M3;@-o?qmd#}9rUKV@^wMp7Edqy)<=FloNIVQ4-thk1R;~B~t1Sx#(Jv#`bOBc)W zHRK!L=m}(?9X}U19W7`cx^4_ngKF>y>x3NW2(2^KU zQ(Zi0�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

    S%@T9fL`##s{Y&r!T9VX;t&Dz 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 N&(J^tkB>d~{{!lA76;744:FY`YRT^kupzŒ ¡Ÿš~kpz€Ž¢¯®­«¬®®¯²³³°´¹¾À¶¬±¸¸··¸¹¹ºº»»¼½½¾½¿¿¼¿Á¹Æ·Ç¶Å»¾Á»Â»À¾¿¿¿¿À¾Á½Â¼Á½¾À¹Æ¶Å·Ãº¾½¾¿¾¾½Á»À¾¾À½¿¿¿¿¿¿¾¿¿¾ÁºÄ¹Â¼¿¿½ÀºÀ½¾¿½À½À½¿À¿¿¿¿¿¿¿¿¿¿¿¿¼½¼´ŽTM>720--/15789::999=HRRNKMVisz}—y\R`ry|‡ ¨«¥£¢£¤§ª§Ÿ›¥ª±««³´®¯³¶¸¸¹¹º»¼½½¾¾¿¾Á½¿Á¼Â»Ã½¿À¼ÃºÃ»Á¾À¿À¿Á¾Á½Á½À¾½Â¹Ä¸Ä¹Á½À¼¿½À¾¼Á»À¿½À¾¿¿¿¿¿¿¾¾ÁºÄ¸Ç·Ã»Á¼¾À¾½À»Á»Á¼À½À½Á½À¿¿¿¿¿¿¾½¹ÂÄWNT<2*$!"%),03689:;<<>ABA@>>BUkr€†V7--1569Diƒ™˜“Ž‘˜’ziccagy”£¢£«²µ¶µ¶¸¹»¼½¾¿¿¿¿Á¾À¿¿¿¿¿À¾Á¼Â¼Â¾Á¿ÁÀÁ¿Á¿À¿À¿ÀÀ½Á¼Á¼Á½¿¾¾¼Âº¾À½¿¿½À½¿¾¾¿¾¿¾¿¿»Ã»¿¹Åº¿¼Á¼¾½À»ÂºÂ»Á»Á»Â¼Á¾¿¿¿¿¿½¼ÀÌÇÁS"Z8%$$%&'*,0479:;;<==;:75540)1H^k`%&,.,***,?=<;::9741/.-+()1>>2#($=r˜—„z|xb`^[TONIKaw€ˆ”¢¤¤§­²¶¹¼¾ÀÀÁÁÁÁÁÁÀÀ¿¿¿¿¿¿¿¿ÀÁÁÁÁÁÁÁÁÁÁÁÁÀÀÀ¿¿¿¿¿¿¿½¿»Á»À»ÁºÀ½¿¿¼¿¿¾¾¾¿¼Â¹Ã»¿¼Â¼¼À¼¿½¼À¹Â¹Â¹Â¹ÂºÁ¼¿¿¿¿¿¿½¸´´¶c+&#*057:;=??=:6310/+)&%$#!# #((Abg[SXTJBIPPKFEFFJT[`k‘›¡¤ª°²´¸½¿ÁÁÁÁÁÁÁÁÀÀ¿¿¿¿¿¿ÀÁÁÁÂÂÂÂÂÁÁÁÁÁÁÀÀÀÀÀ¿¿¿¿¾»ÀºÂºÂ¸Ãº¿½½¿¾½¿¼ÁºÂ¹Ã¹Â»Â»¿ÀºÁ»¾¾»À»À»¿»À»À¼¿¾¾¿¿¿¾¼¸·­|,!(/577777641-)&#! $'$$7>;8<97AFO`wŒœ¬­²º½ÂÃÄÃÂÁÁÁÁÀÀ¿¿¿¿¿ÀÁÁÂÂÂÃÃÂÂÂÂÂÁÁÁÁÁÀ¿¿¿¿¾»¿¹Á¸Â¸Áº¿¼¾½¿¼¿»À»¿¼¿½¾½¾½½¾½¾½½½½½¼½¼½½½½½½½½¾¾¾¾½¿¾«(#*-,)&$$$#!!%((%" "&&'(*-.0//./0379:;;:9756>Nk¬±²»ºÀÄÅÄÂÁÀÁÁÀÀÁÂÂÁ¿¿¿¿¾ÀÂÃÂÀÀÁÀ¿¾¿À¿¾½½¿Áü½»¾»¾»¾¼¾½½½½½½½½½½½½½½½½¾¾¾½½½½½½¼¼¼¼¼½¼¼½½½½½¾¾½¹¸»•J '*($ $(++($"!!"#$%&&&'(),.134554226==42x—¯Æ¿¾¿ÁÄÃÂÂÃÄÃÁÀÂÃÀ¿ÄÆÅÄÄÅþ¹¹¼¾¾½¾¿¿½¼ÀÃÅƼ¼¼¼¼¼¼¼¼¼½¼½½½½½½½½½½½½½¾¾¾¾½½½½½¼¼¼¼¼»¼¼¼¼¼¼¼¾¾¾»¹¿¾&"&$ #'+--)$!$&),0368::8669<91>[Œ¾ÄÆÇÉÆ¿¿ÁÁ¿½ºº»µµ½¿À»¹º¾ÀÂÆÊľ»º»»¹·¸¸¹¹¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼½½½½½½½½½½¾½½½½½¼¼»»¼»»»»¼¼¼¼½½¿¾½½²’W"!!!&*./-(! $'+/25789:;<=;78@gŸ·º¸¹ÃÁ¾¿À¾½¿ÈÇÈ¿¼ÃÀ¾½¿À¾¾Á¾¹···µ¶ÆÉÈÆ»»»»»»»»»»»»»»»»»»»»»»¼½½½½½½¼¼¼¼¼»»»¼»»»»¼¼¼¼¼¼¾½¼­~K,#&%"#)-00-%!$(+.02357:;9441K{¢²º¹§š››—”•Š„†}z}uskedffb^]WPKHHGD@;986»»»»º»»»»»ººººººº»»ºº»»»»¼½¾½¼º¼¼»º»¼¼»ºººº»¼»¸µº»¯„I' $/:?:1)" %+/0.)  #&(*,.146752.6?@2310+)-,''+'!&"#& #"$),*)+1.+*++)(7:::»»»º¹¹¹ºº¹¹¹º¹¸¸¹»¹¸¸º½½»»¾À¾»º»»¸¶¸»»ºº¹¸·¸¸·µ¶Å³ŠQ%#-7>>80)#"(,..* +  !"$'*.1332052* "$%!#)' $$(/-0-)((&!!%*)(+010,'(*+¹ºº¸µµµ····¹¹¸µµ¹»¹¶¶¹½½¶¶º½»µ´·¹µ³¶º¹¹º¸¸·´²±³¸½‰K"$)*)'%#!#(++' + + + + "&+/00.-($*%#'$(38044IDGP[cjs€‘› ¡£¬³··¸ÃÂõ´´»À¸¶´²¶±®ª¶¿¨O.   + +   +   + #'))&@qŒœ§¹¿ÁÁÁÂÂÁÁÁÂÃÃÄÅÅÅÄÄÄÄÆÇÈÈÉÊÊËËËËË˸··¸´°²¶ÃÁ¿¿½º¸¹¹½¾º¸½Âø¶¾¾¿¸º»»¼µ²±°¯ª«¯±®{(   + +  +   +   #''",Nwž¤´¼¿ÀÀÀÀÀÀÀÀÂÂÂÃÃÃÄÄÄÄÅÆÆÇÈÈÉÉÉÊÊÊÊ®¶¸³³¹»¹º´±³¸¸¶·½ÁÁ»¸º¿Á¾¼½¼ºµµ¸ºº¶´³²®©«±¨ŸV  + +  + + + + + + + +   +  #&"&4`œ£±¹½¿¾¾¾¿¿¿¿ÀÀÀÁÁÂÂÂÃÃÄÄÅÆÆÇÇÈÈÈÉÉɲµ³²±°´·¹·¶·º¼¼½¿ÃÁ¾»»¼»ºº»¼º·¶¸¸¸¶µµ´³±®ª—‡; +  +  + + + + + + +   !!(A‰¢­¶¹½½½½½½¾¾¾¿¿ÀÀÀÀÁÂÂÃÃÄÄÅÅÆÆÆÇÇÇǸ¸¸·¶¶¸ºº¹¸¹º¼¼¼¾À¿½»»»»ºº»»º¹¸··¶´´´´´±¬£’\( + + +  + +  +  /d“¤²³¹ºº»»¼¼¼½½¾¾¾¿ÀÀÀÀÂÂÃÃÃÄÄÄÅÅÅÅŸ¸····¸ºººººº»¼¼½½½½¼»»»ºººº¹¸¸¶¶´´³³´µ°±¬’5 + +  +  + +  + "C€›°°·¸¸¹¹ºº»¼¼¼½½¾¾À¾ÀÀÁÀÂÂÃÃÃÃÄÄÄÅ·····¸¸¹ºººº»»¼¼¼½½¼¼¼»ºººº¹¸¸·¶´´³³³´´¯²µ|  +   +  + (Z¡­´µ¶·¸¹¹ºº»»»½¼¿¼À½À¾ÀÀÁÁÁÁÂÂÂÃø¸¸¸¸¸¹¹ºººº»»»¼¼¼¼¼¼»ºººº¸¸¸·¶µ´³³³³µ³ª¥£D  + +   + +  ">h‹¯®±³···¸¸¹ºº»º½º¿º¿»À½À¿ÀÀÁÁÁÁÁÁ¸¸¸¸¹¹¹ºººº»»»»»»»¼»»ººº¹¹¸¸·¶¶´³³²³´µ³¨˜}  + +  !"! !!"!   ?_›Ÿ§­µ·¶··¸¹¹ººº¼º¿¹¿»¿¼¿¾¿¾¿ÀÀÀÀ¹¹¹¹¹º¹ºººº»»»»»»»»»ºººº¸¹¸··¶µ´³²±²µµ²¥K  +  +"$#""#%()$ !(-,("  +  + + +G‡œ¦ª³¶µ¶¶·¸¸¹¹ºº¼¹¾¹¿º¿»¾½½½¾¾¾¿¹¹º¹ººººººº»º¼º¼º»¼¹¼¹º¹¹·¸¸¶¶µ´²¯­±µ°®žp!   &'%#$&*/2*! !!"!!! ! !!""###$'/9>?<6-"  +  +   !5j•¨©³·´µµ·¸¸¹¹¹¹¹»¹½¸¾º½»¼¼¼½½½½¹º¹»º¹»º¼º»»¼º¼º¼ºº¼¸º¹¹¸¹···µµ³±ª©°´©±’;$ + !*($$&).49/$ "###"""""""""##$$%%&&'()*,19AGKMLI@4(       '?lœ«µºµ´µ·¹¹¸¸¸¹¹¹»¸½¹½º»»»»»»¼½ººººº»º»º»º»º¼¹¼º»»¹»¹º¹¹¸¸·¶µ´³¯¤£ž˜™‰L/) +  %+'%%(,16:0' #$%%%$$"#"""#$$%&'()*,,.04:@GMQSUURLC90& +  %%#Fzª¶¾¶¶¹»º¸·¸¸¹¹º¹»¸¼¹»ººº¹¹»¼¼ºº»º»º»ºº¼»»»º¼º»ºº»¸º¹¹¸¹··¶¶´³°¡’|vt[(,'   + +&+'%&).267/' #&'''&%$$####$%%'()*,.147CHMQVZ\^__^\WPJF?5)!   #+*0µ¶²ª¤ª¸½®¬²·¹¹¹¹¹¹¹¹¹º¼½½½¿¼¼¹¼¹¼»»»¹½º»»»»º»ºº»¹º¹¹¸¹··¶µ´´¶¨{ŽH'61$   &)'&)-1562%! $+/+))'&%$##$$')+-.049?DHMRX\`cddedca[UPLH>/& +    + )"tª§ ¢•yu…Ÿ´ºº¹¹¹¹¹¹¹¹¹¼¶®ª¾¼º»º»»»»»»º»»»ºº»ºº»¹º¹º¸¸¸··¶µ´´µ°~ªo NK0!    $(&'*/3995 "(34+))''%$##$&)-/138@HNQTX]bfijjjihge`[VSOE4)!    + + ' ZŽ‡bU3FFo™°»¼º¹¹¹¹¹¹¹¹¹·¥‹}³»»º¹½¹¼º»»»»»º¼ºººººº¹¹¹º¸¸¸·¶µ´´µ³‡+&fH) "&&(,16??=#-?:(()('%$##%(+048EGJ1! -GOL'((&').3:BJOTY]`cfiklqy~€‚ƒƒ‚€‚‚nkoaTI>70( + +  )+),8D8BDwž¦´»¼º¹¹¹¹¹¹º½À¿µWLÀ»¼¹¾µÁ´À¶¿ºº¾¶¾ºº»ºº¹º¹¹¸¹¸¸·¶´³¶³x1(920'#")08?CGG3! (@JNK-,+(&(,4BFC2('?[VQK8540,)+1:BIPV\_cgjnszƒ‰ŒŠˆ‹•lvoROOG=5.%  $&$',4(z·¸¸º»º¹¹¹¹¹¹º¼¿¿º‘i¸Âºº½·ÀµÂ´¿¹¼»º»»º»ºº»¸ºº¹¸¸¸¸¸···ÀF8H<2-*#&.6=@C=4;72017>FNUZ_dgkq{„‹’•—˜–“Š•œnvjMQTL@71) +  !2=¬Ã¶·ººº¹¹¹¸¹º»¼¾¿½³ºÄº¼º»º¼¸¾ººº¼º»º»ººº¹»º¹¹¹¹¸¹¹º¹¹®?MD543.#$-5<>?=E^isnc]WOKGEB>:5227ANX^bcjw„‘•™›ž˜‹‘˜speNTXNB:5-#  +  G<¿¶¶¶¹º¹¹¹·»¹º»¼¾¾½¾§»Â¾´À¸½¹¼¼¹¼¼º»»º»º»»º¹ºº¹¹¹¹º»¼º»˜.QC69;0"$,6<@BK]ptqida^YTPNLJHC=505AKPWbv†’—™œŸ¢£¤¢”Œ‘—šzibQWYO@<92( + +  +]?̼¸´¸¹¹¹¹º·»º»¼½½»¼µ¼Àº¾·¿¶¾¼¸½»º»»ººº»ºººººº¹¹¹º¼¼¼¶µ|>R79?@. ! "%-7@FP_ioomkigda^[ZXXWVWTOMRW^k|“œ ¡¡£¥§§¨¦¢˜Ž–—h`VYYL>=<6.%  +   8WBŹµ³¶¹¹¹¹·¼·»º»¼½»»º¼¾º½¸»¼ºº¼»º»»»ºººº»ºººº¹¹¹º»½»»¥Ÿ‹>K3>D=&&)(&%)0:DM[hmqrppomjhfdb```accejs}„‹”¢¦¦¨©ª«¬¬ª§‘•–‡naZ\WF:@>:3+" +  "3RD¯¹´³¶¸¹¹¹º·¼¸¼»¼¼»»»¼½¼¸½º»¼¹¼»»»¼»º¹ºº»»º»¹º¹¹º»½¹¸”Š„?D5>@1 #031/.07AKVclpstutsrpomljihjmrvy~…Œ‘•›¢§ª«¬®®¯°¯®«£—“––wd^^U>7DB=81)   -IA­¹²³¶¸¹¹¹¸º¸¼¹¼»»»»»¼¼»º½¹»»¼»»»»»½½º¹º»»»º»¹¹¹¹¼½¸´Ž‚|D=696#  -9:888;AKU^gmrvwxxwwutsrqpqtx}‚†Š•™£§«­¯°±±²³²²®§œ—˜˜‘~ia`S68JFB>80%  +  )?>µ¹±³¶¸¹¸¸¹¹»¸½º»»»»»»¼º¾·¾º»»¼»»º¹¹½¾º»¼»»»ºº¹¹º¼¼·¬‘†zE920) + + (7@@@CHMSZaglquy{|||zzyxxxxz}‚†Š‘˜¡¥¨«®°±³³´µµµ´±« ››š”‚nfaR3>PLHGA6+   (:@½º±³·¸¸¸¸¸¹º»¹»½»»»»»»¼¸¿¹»»¼¼»»º¹±¤»»¼¼¼¼ºº¹¹¹¹¼»·’‰w<6+*  + + !'4BHJLS\dinqsvx|~€€€~~~~ƒ†ŠŽ‘”™Ÿ¤§©«®°²³µ¶¶¶··¶³®¤žž—ˆukcQ6JYUMPN@1  +  %9B¿»³µ¸¸¸¸¸¸¹ºº»»¹»½º»»»º¾¸»¼»»¼¼»»»¸x­»½¾¼¼»º¹¹¸¹¼º²„‡„s/3&# + + + $)5CNSWZajrx{}~ƒ„………„„ƒ„„„†ˆŠ“–™ž£§©ª¬¯²´¶¶··¸¸¸¸¶°¨£¡ ›tiR9WebRVXK8# +  6@»»´¶¹¹¸¸·¹¹»»»»»¼¹¼»»»¼¸½»º»»¼¼¼¼ºº|£¸½¾¼¼»º¹¸··»¹¥hu~w'/! +   ).5GRZ^afmt{„†‡‡ˆˆŠ‰‰‰‰‰‰Š‹‹Ž“•˜š¡¥©ª«®±´¶¶·¸¹¹¹¹¹·³«¦¤£ž”ˆt[=`opXZ_UB( + 4=µ¾µ·¹¹¹¸¸¹¹¼»»»»º½ºº½º¹¾¹º¼»»»¼¼¼»¹¢¦´¼½¼»º¹¸·¶µº¸˜Vl~&) + -8>K[`dhkqy…ŠŽŽŽŽŽ‘’“•–˜šœž £§ª«¬¯²µ·¸¸º¸»¹º¹¸´®ª¨¦ –‡€mB_tz]\d[K,  + 2;´Áµ·¹¸¹¹ºº·¾»º»»»º»¼¹¼½¸»¼º»º»»»»¼¼¸³µº¼¼»º¹¸·µ´¹´™Vo{}(& +  1HT\hjhkrx…Š’”””••••••–•––––—˜™šœžŸ¡£¦¨«¬®±´¶¸¸º·½¸ºº¹¸µ±­«©£˜‘Œˆ€QX{…b[icV0  .2º½¶·¸¸»»µ«¯Á»º»»»»»º¼º¹º¼¹»»ºººººº»»¹¸¹»»ºº¹¸·µ³¸²Ÿsqov)% + Ngpopoqv}ƒ‰Ž“–˜™šš›››››œœœœ››››œžŸ¡¢¤¦¨ª¬­¯²µ¶¸º·½·¼¹º¹·µ²¯­¬¦œ•‘‹‡hGvŽuXjj_6 + + !6<¼½´¸¸·¼¸”iªÂ¹¹»»»»»»º»¹¼¹º»¹»ººººººº¹¹ºººº¹¹¸·µ´¸°¥”zqq*# +  &f~~wvx|‚‡Œ‘•™œžŸŸ  ¡¡¡¡¡¡  ŸžžžŸ¡¢£¥§¨ª¬­¯±³µ·¹¸¼·¼¹»¹¹·µ³°¯­©Ÿš–Š€O`ƒaipi>$ + %;D¶¼³¸··¼»RªÂ¹¹»¼»»º»»ºº¸ºº¹»¹ºº¹¹¹¹¹¹¹¹ºº¹¹¹¸¸¶´¸°¨žyqn," + 6s‡‚|~ƒ‡Œ’—›ž ¡¢££¤¥¥¥¥¥¥¥¤£¢   ¡¢£¥§¨ª«­®¯±´¶·¸¹¹»ººº¹¸¶µ³±¯®©£ž›•‹qV`€rlurH-   + + &;L¯½±¶¶·½·ˆV°Ã¸¹»»»º»¹»º¹ºº¹»¸º¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¶´º°¬wpp4$ +  Gz…ƒ†‹‘”˜œ ¢£¤¥¥¦§§¨¨§¦§§§¥£¢¡¡¢£¥§¨ª«¬­®°²´µ·¸¹ººººº¹·¶´²±¯­ª¥¡Ÿ›’‡qYutputQ8    + '?W¨¼³´µ·º¯“‡¼Ä¸¸»»º¹¹º¹º¹¸¹¹¸¹¹¹¹¹¹¸¹¸¹¹¹¹¹¹¹¸¹º¬³º³° |sr?+ + U†ˆ“•˜œ¡¤¥¥¥¥¥¥¦§©¨§¥¤¤¤¤£¡  ¡¤¦¨©ª¬­®¯°²´µ¶¸¹ºººº¹¸·µ´²°®¬©¥¢¢Ÿ™’‘‹zqikooTB'   +  ,C\—±µ³´··¯¯¾ÂÁ¸¹º»º¹¹¹¹º¸º·¹¸¸¹¹¸¸¸¸¸º¸¹¹¹¹¹¹·¹¶Œ±º¸®Ÿ‚xsK5 + + !^„”‡‹“–˜œ ¤¦¤¡ ¡¡¡¡¤§¨¥¡ žœ›œžŸ ¢¥©ª«¬­®¯°²³µ¶·¸¹¹¹¸··µ´²°®­¬©¦£¢¡˜•˜’‰kfifUG0   !,BZ…£µ³µ··³µ»½¼¸¹ºº¹¸··¹º¸·¹·¹¸¸¸¸¹·¹¸¸º¹¹¹º¹¹·¼¤P¤´»§—‰‚tZ=  +)e‹˜ˆ“–˜šž¢¤¢›•–˜ššš¡¨¨¥¡ž›™•‘”—˜šž¤¨ª«¬­®¯°±³´µ¶·¸¸·¶´²±¯®«ª««ª¥££¢Ÿš—™œœˆqpgWM:$  +  )?X}›´····µ·¹»º¹¹ºº¹µ³·¹º·¹·¹·¸¸¸¹¸¹¸¹¹¸¹¹º»ºº·Áo`¥¶¼¦ŽwoE& +  ;d™ˆ”—š ¡ž“‡„††…„††xpmiiimrzƒ‰ŒŽ“¦ª««­­®¯±²³´µ¶¶µ³±®¬«¨¤ ££¢£ž™——™œ–‡€ueWG1 + &=UsŽ©¸º¸¸¶·¸¹¹¹¹ºº¸³°¶¹º¸·¸·¸¸·¸¹·¹¸¸¹¹¹º»»ºµ¶µXŠ°¹½ª‹‹™wX3 +  +>cŽ˜‰‘–™œžž˜Œ~sqqojggcRJE@==AIVjx‚„‘ §©ª¬­®®¯°²²²²°­©¤ŸžŸ›™•’•šššœ›—Ž’•”Ž‰~n_P='  + "3Q`o¡µ»¹¸··¸¹¹¹º»»¶®¬µ¹»···¸·¸·¹µ»¶¹¹¹¹¹º¼¼¸´½‰g®²¸¾±‚–‰{lI% +  ?h–Œ‘–™››”…uib_\VMGDB>962126;CUgtvt„—¢¦©«¬­®®¯¯¯¯¬©¢š„{tnhaZW_mvy…}z~ƒˆ‹‹ŒƒufZJ6 $COEŸµ¼º¹¸¸¸¹¹º»¼»´¨©¶º»··¸·¸·¹´¼´º¸¸¹¹º»½¼·¿¶V™º¯¹¾¹›Œ|s^8  >n“•—•Œ~nc]ZYVPIB>:5/+)()-4>IXcidzŽ›¢¥©«¬¬­¬¬«ª¦¡™uneYOHBB=;>ACM\hov|€„ˆ†{maUB) "1M+¡¶¼¼»¹¹¹¹º»¼¼º°¢§¸»¼¸···¸¸¶»´»·¸¹¹º»¼½¼¹¿~Z»·°º½¾«‹Š~smQ0 9753211247?CPmy|xqmhR1 +  + )5#{µ¹º½½¼¼»»»»»¹·®¤©¸½¾¸¸¸¸¸¸¸¸¸¸¸¸¹¹º¹¹ÀÄŸL¡·¹³·¹»»¸´­Ÿ„‰“h@% +4~Ž…ŒŠŒ…yokjijklnqv}ƒ‚rdUF90-/4:AGR[nxˆ—Ÿ§¬®¬©§£œ‚vh[LB:3.,)%##$'+059<>@AA@DXjvwsqn]@ + +  +%-+´¾¾½¾¾¼¼»¼»º¹·´®§¬¹½¿¸¸¸¸¸¸¸¸¸·¸¸¹¹º¹¹ÁÆtwµµ·µ¸¹ºº¹¶°‹˜œtA/!  +0}‰ƒ‰‰‹~pkiklnmnpnikmoq|zqaJ1)*/6>ISjy‡— ©®°®«©¤Ž{naRE;510.,)),-15:>>>@ADECBM[ltttqcL    +"5#TÉÄÁ¿¿¾½¼¼»¹¸¶´°¬ª°º½¾¸¸¹¸¸¸¸¸¸¸¸¸¹¹º¸¸»¦i£´½¸·¹º»»¹·²ž““Ÿ¢‰N2,(  !r…†ˆ‰qhilopokffaUMBAPWTT[\M<2//3?H[|‡™¡¬±´±­¬¦‹tgYH=40/* &,--/48:;?ADFFELXepturdS& +  + &! ªÖÁ¾¿¾¾½¼»¹·´²¯­¬¬³º½¿¹¹¸¹·º·¸··¸¸¹¹º¹º¹·»¾¹¹º»»»º¹·©ž™¥©œšd21D9 + h†~„†~W]ovtpjbVM<8Sr‹œš‹oWONIB=73:BLt†œ¤®µ¸¶²°§ˆm]M=3*&%$15==832215;@DGIHMXcmsvsfV)   „Çƺ»½¾½¼»¹¶³°®­­®°¶¼½¾¸¹¹¸º¶¹·¸··¸¸¹»½¿²·¸»»¹º»»»»»º¹²¨Ÿ©­ w.-YZ5 Qw‚rG{‘rlbT<7GjŽ’‹ˆyfUQNMKJHE>;?Edƒ ¦±º½»¶µ¨™ƒdO>1')=MUboqneWM?69?DHJKOZakruujV-   + '#j”Á¼¹»½½½»º¸µ±¯®®°²µ¹¼½¾¹¹¹¹·¹·¸¶¶¶¶·¹»½ºŸ²¼·¹º»»»»»»»ºº¶®¦¬­¨˜w+'ZoP4pt{kQ6ƒ‘~mh_C5Pv€hB0(")AJHJKLKC?EW~£¨²½ÁÀ»»§’|X>1+*,;Yuƒxd__ailhcXG@BGJMNSZ`jsuxqV- +  f„Ÿ»Àº»¼¼¼»º¸·¶¶µ¶·¸¹¼½¾¾¹¹¹¸¹·¸¶¶¶µµ¶¹¹¹©‘¸·¶º»¼¼¼¼»»»º¹¶°©­¬©a-'Hi^7#+&NfmV`4†‹zmfU;HkdB.%%0P?" QUFMORTODLNv¦­µÀÅÃÀÀ§ŽpJ3.,1>Zpn^RH?<>IWcniQA=DLOQV\]jtuywX+  + Q¬±¸Å¿»º»¼»»º¹¹¹ºººº»¼½½½¾ºº¹¹¸¹··¶µ´³µ¹·®’•¸µ¸»¼½¼¼»»»»»º·¯§­°¡L4/5O[Q:,!97*8DVT6Œ„zmdWCNTC?N@&() nmGKSY\]RSTl§µ¾ÊÍËÇÀ®e>457K[e^NJL:##"!+?TZWI:GPTcnb_k|wxg- &6Ư¯³À¿½¼¼¼¼¼»»»»¼»¼¼½½½¾½¿¾º»º»¹¹¸·µ³±°¸º¤¥½¹´´·º¼¼»¸····¶µ²ª¬±žzb]gqwngc`Qyƒ…‹;…bg˜Š…ƒ€}xsqrv~‡†pdfmxˆŒ‡€‚…Œ……:945GUUZ[TNRA7Dk{bSU`s€2'!";kN25!y“«¶ÃÉÌÎÉ¿¹«˜~;Usœ••—›š–Œ‹ˆ…ƒ…”–—›¡¢¢ž›š–}ƒ]q…‚o;!7=FNN@)Votd\YVZhpt{‡Š‘“•–—˜˜šš›œžžŸŸžž ©­««°¶¾ÄÇÉÊÉÆ¿¹²ª¢Ÿ £Ÿ€Œ‘••“‘‘’’“”•”‘ŽŒ‹Šˆ}~~|zvspljfo|…‹…‘ŽN”˜°¼¾½¼»»»º¼¹»ºººº¹º¹¹¹¸¸··¹´’}¿½¾½½¼º¸¶µ´µ¶¶·····¸¸·º¸º¹¹ºººº»¼º¸·¸ºº¹±º’mQEay‚€pkmqrw~„ˆ‹Ž“•–—˜™šœžŸ ¡¡¡¢¡ Ÿ£«¬¨©¯µº¿ÂÅÆÆþ¸±¨Ÿš™Ÿ •Ž•˜—”’‘‘‘’’““‘ŽŒŒŠ‡~}|zwtqnkjbv…Œ’ˆ“‹V +0„“¡°»½½¼»»º¼¹¼¹»º»ºº¹¹º¹¹¸··¹»®¤½¿¾¾½»º·µ´µ¶·¸·······¸·¹¹¹º¹¹ºº»¾½¸·º½¼¹´³¢‹]17D[ntzutprz†Š’•–—™š›žŸ ¢¢¤¤££¡Ÿ¡¥¤œœ©°¶º»¼¾À¾º´¬¡—”š•››š–”“’’’’’’ŽŒ‹‰†~|{yuqnljj]{ˆŽ’‰–% n¢š¡°º½½¼»»¼¹½¹¼¸¼¹»¹º¹¹¹¹¸¸¸¹¹±§¿¾¿¾¾½¿¾º¶µ·¸¸¸·¶¶¶¶···¸¹ºººº¹¹¸»Â¹°·À¿»´°§}c)+  9Myyqqv~„ˆ‹’”–˜š›ž ¡¢¤¥¥¦¦¦¢œ›ˆ˜£ª°°°³µ´°¬¢•„y|…‹Œ‘Ÿžœ™—•”““’’‘ŽŒŠˆ„|ywsolkieWr{{Œƒ] `˜°©«³¹¼¼¼»½¹¾¹½¸¾¸¼¸¼¸»¸º¸¹¸¸¸¸´¯¿¿¿¿¾¾À¶±¬¬²¶¶¶µµµ´´µ¶·¸¹¹ººº¹¹¶­«¬ÈËÁ½·±·«|[;4 &itst{‚†Š‘”–˜šœž ¡£¤¥¦§§¨¨¢—Ž…~m^j“¤¥¤§¨¦¢œŽy`V`nwy¡ ›™—–•““’‘ŽŒ‰‡ƒ~{xupljjg^T`pzŒS(<™­³¬­³¹»¼¼¼¹¾¸½º¼¸½¸¼¶½¶½µ»¸¸¸¸·³°À¿À¿¾»µ”‡€ˆ™¦ª®±²²²²´µ·¸¹¹ººººº¹´•s‡©´¼²°·ª„^B;(@vqtry„ˆŒ“–˜›ž ¢¤¥¦§¨¨©© ”‰wkXIM[r’’•”ŽŒ…lN:7CUcssŽŸ Ÿ›™—–•“’‘‹‰†‚~zvrmigjg__q|uml2"g\£©®¨­´¹»¼¼»¾¸¾ºº»»¹¼¸¾´À³¾µº¸¸¸¶±®ÀÁÁÁ½¹¯‚fal‚–¡©­¯°°±²´¶·¹ºº»»»º¹¶²-G+btsqv}‚†‹“–™›Ÿ¡£¤¦§¨ªªª©Ÿ‘‡fO8.+/GeqtxupqhF+#%0DWmqŒ¡ ž›™—•”’‘‹ˆ…‚}ytpkeflncfliQ8!,V™›q ¤ª¨®´¹»¼¼¼¹¾º»¼¹¼º¹¼¶À²Á²½·¸¸¸¶¯ªÁÁÁÁ½»·ŽNQaw‹œ¦¬®®®¯°²´·¹º»¼¼º»¹½»¦FCTW^ž¬¹’`KO6O$Fupty„‰Ž“—™œž ¢£¥¦¨©ª««© ’ŽiI:2-)1ESX\ZYXM0"!%.ATkuŽœ¢¢ žœ™˜•”’‘ŒŠ‡„€|wrmhcgrpOG>&3†ªÀ˜‡§¦¨ª°µ¹»»¼»½»»¼º»»»º¹½´À²¿¶º¸¸·µ­§ÁÁ½¼¿ž@OewŠœ¦¬®®®®¯±´¶¹º»¼¼º»´®½²{FHKBZŠµŸXfq&2(€ursw}‚‡’–šœž ¢¤¦§©ª««¬«¤•–wSA9632;CGGGGE>1.129I[o|’££¡Ÿœ›˜–”’ŽŒ‰†ƒztojfckud'"_¡¦–ž«¨©¬±¶¹»»¼»¼»¼»º½¸¼º»¸½´¿´»¸¸¸·µ¬¥ÁÂÂý»À HZr€‘¢¨«­­­­®±´¶¸º»¼½º¼´¾³–bZJ7&8Žmb…(#zuwvw{…Œ‘–šœŸ ¢¤¥§©ª«­®­¨žŒlWKJHA===;;;;;EKPU\hw†£¦¤¡žš˜•”‘Š†ƒ{uokhhgr|( +r£ª¯­­ª¨ª­±¶º»»¼º¼½·Â³Ä²Á¸ººº¹º¸º¸¸¸·´¬¤ÂÂÃŽ¿Ä‘9;XnŠ¡£¨­®­­®±³¶¸¹º»»º¹¹§µ·¯•z](!*;[k‚(+ Wt|}yy|ˆŽ”˜œž ¡£¥§©ª¬­®¯¯ª¦¡–ˆ{qi^RE>988x}~{y{†’—›Ÿ¡£¤¦¨ª«¬­®®¬©¥ž”‰vk]MC=:Sotx€‘N AŽ€‰~~ƒ†Š“•—˜˜–”””•————•”‘‘‘“”—š›š•Œ‰ˆ†††…„‚ƒƒƒƒ…‡‰Š‰‡„‚{wsoljhkpurk '@3;o©v¦®«³­§¬´¹¹º¹¹ººº¹ººº»¼¼¼ºººººººº¹¸·µ°¦ ÃÃÄĺ½¾oKL^\cimw”£¥¦©®³¶···º¶º¹ººº··©y¢‰tQFD:EV]_YO #€‹~„†‰‹Ž‘‘‰ƒ€€ƒ‡‡‡ˆˆˆˆ‡†††ˆ˜›š•“Œ…|xwx{{|zvuvx~ƒ„‚€~{xtqnkiijpssj 3T/@“¸w°¯´±²¶¹¹¹¹¹¹¸¸¸¹¹¹¸¹¼¼»··¸¸¹¹ººº¹·µ°¦ ÃÃÄĹ¼¾|QObcgjkw¢¤¥¨®³¶·¸¸·»¸¹ººº··®u¥šmUQP9BJKF1i{ˆ}~€„†ˆ‰ŠŠ‡‚ynggkswwvtsqpqstu~ˆŠ„zulfeedeee_]YTTV^jw|}|zxurolkiijnprT .WN€¹°{¢³²µ´µ···¸·¸··¶µ¸½½µ³³µ¸¸º¼¹··¹»»º¸¶°§¡ÂÃÄĹ¹¹Š`Xfkkkk{¢£¤§­´··¸¸¹¸¹¹¹ºº·¶µ¥«‚moG6:H?-  Px„|}~}}~€‚ƒƒ‚yqdULGGNTX[]_`acdbahqqka\TQRQRQOJA?=;>BIVhrvwvtrpmkjiiilnm3 H’º½´uª³´¶µµµ¶····¶²¬ª®²¯¾Â¾½¾º¸¼¾¹¶·º¼º¹¶±¨¢ÃÃÄĺ¹µjcnqmkiz‘££¢¦­µ¸¸¸¸¹¸¸¹¹ºº·¶·ž§‰~t409E0  8wzy||||}}~~}ysj^PC<536;BHMOQRRNHDHMMLIMKJHEC@;4-,.169=IZgnqrqomkjihhgknk  )»´¼¹z©´¶¶µµ¶¶···µ´­¤¤§—tfmy‹Ÿ¦§¯»º·¶¼Á¼º·±©¢ÂÃÄû½µ‡jivqigfrŽ¢£¡£­¶¸¹¹¸¸¸¸¸¹º¹··µ‘”“|]13E:   +!tyyuzzzyzzzywrld\TOOMJOXadaYROOOKBA?;==?EKNOSUTWTYbkpja[\agkmmlkjihhhejkc£³Äµ¥±··µµ¶···¸·´°®¬¦ƒ[>>CIMF@P€•–£Á½¼¹±©¢ÂÃľÁ¹xdl|necdmˆ¡£ ¡­¸º¹¹¹¸¹¸¸¹¹»¹¹°‹†~u€R?GO* guwpvxwwvvutrpmlkkpy~~}|ˆˆƒ}|}zscZPEIP_nyzy}}xrnt~††}tnhefhjjjiihghfbheI  +Fª£—©­µ¸µµ¶··¸¸¸¸¸¸¥‘kM44:?DDGUm‡mwÿ¿º±©¡ÂÃÄ¿¿½_go}kaadm„Ÿ¥žŸ­¹»¹¹¹¹¹¹¹¹»¼¹¸¨ƒ|srxWYh> + Bstkrvutsrrqpppty†Ž‘’‘ŒŠ’—™Ÿ§¯µ¦™• ˜‘“™œœ—‘Œ…~}‚Š‰„xohffhhhhgggge_hj  + +Lw~Šž¥¬±°³·¹¸¶¶·¸·­…t`I2-/13=RkxaJÇÁ¿º°§¡ÂÂÄ¿¼¸Xipxg_afq‡¡¦œœ¬º»º¹¹º¹¹¸¹¼¼¹µ£ˆ~tqrcfg#  ,eniossrqponmnovˆ”——“Ž‹‘–š¡«¸Á»°±´®£Ÿ Ÿ™‘ˆ‚~|}€…‡‡†|sifffgggffffd^cZ 5TWdz‡’˜ž¯»¾»¶¸»º± {oh\T;)'-?j’•”ŠpWÁþ¹®¦ ÁÂļ»°adkmc]bexŽ£¥™š¬º¼¸··¸¸¸·º¼·«Ÿ“†|rlkhgV  +Ndfmqqpommlkknv‰Ž‘“’‹ˆ†…‡Š•˜œ™Ÿ¡žš››–Œƒ|yyz|}‚‚€|tkfeeefeeeefc^[?*C@BS`kmk{–­´¬¬¸Â¾«Š€|sYA6CHIDBIT[[_g~˜±¸½¹·¹¾¿»¶µµ¶º¼¼½¿¾¾º´­§¤ÀÀdz¹¿ pYMUWcs˜š—™¦´¬‘unjimqpnkf_^ab^Z^e^N  + + + + 8L]flkkjjhhhlt}ƒ…„‚xqkiloswyyyvw{~{||{xqib^]_aejnqsuuqkfeeedbaa_YO6  CGGDCGMNJKOXd®¦ ¢¦²ÀÁ»¼ÀÀ¿»¹¹¸¹¸³­§¤ÀÀÅ™¯ÃªoZMZgzƒ†‹‘•—š¡¡Žqaeiggffffedca]XV\f^= + + + ->Q`hhiiihhils|ƒ„‚wlbYSRV]diihkruspic]UMHINU\bhmprssqkheeedb_`[QC# ;G=>BEEDCEJMLNUZXaoyqmq|¤¨£¤®¸¾½¾¿¾¾½¶®§£ÀÀÀ€£Å¶oWQfz…ƒ~‚ˆŽ“–‘i\`fgda_`bba_\YVV]g^- + + + +  +'2BVeefhhiiims{‚ƒƒ{qg]SJC??CCA@E@>;:9659BMW]chmprsssqmigffda^`WF1  9J@?BDEEDDEHJLQVUUY_afhmpnp{‹–Ÿ«±·»¹µ·±¬¥¢ÀÁºŠ«Á³f^`q|~xsppu|‚ƒ}rc\`egc_]\]]\ZXVVW[`O + + + +  %*/A\ddgiiiknt{‚„……zrk`XQKFB=534466=AEKQXafjmptwxwvtrnjhggea^[N1  2HB@BDDEEDEEGILPQNNSY[VNPX[]eqv€•”‹†~„‰£°¼®µ¼¦johpvsnifegjmlid_\_egea][ZYXWVVVWVT? + + +   #("&=Wchiijlpv|‚„‡‰‰‡ƒ}sjaYQLMNQSU\^]_adfimoqtx|~~|zwspljige_ZN1  +/GDABCDDDDEEEFHJLLLLMNMLOSX[_ehjkje`^_`elrz†›­»¸œtykmolgda_]]]]]\ZXY_ee`\YWWVUTUVVNI5 + + + +  "*9Tfkjjmqx}ƒ…‰ŒŽŽŽŒˆƒ|zutx{„ƒ†…„†‡…‚€€€„……ƒ€}zurmkjhcXM5  .FEBBCDDDDDEEEFGHIIHHHILQVZ\]\WSQRUZ]^`dknbgq†˜¡Ž{{mklifca^ZWUTUURPPV_c_[WVUTTTUVUJE3 +     + .# 7Wgkjmry‚„‡ŠŽ‘“•––•“”””“’—š“”——•’ŽŒŒŒŠ‡ƒ{wsnkjf^L6 + ,EFCBCDDDDDDDEEEGGHHIKNQVXZZYXWVUUWWXY\bgkaegjlx~|ynlkigda^ZURPONLJJOX]]XUTSRSTVWVMF3 +  + /& ;\ijlrz€„†‰Œ“—šŸžœ››š˜˜›š•’“••••”””“’‘Š…|xsnjg_Q7  + + 'AFDCDDDCDDCEEEFGGIJLORTVVUTSSRRQQRSTW[_dgmmljiovxvolkigea]YUQNLKHFFKSXYVTRQQRTWXYSK5 +   /) F`hlrz…ˆŠ”˜ ¢¢¡ŸŸžžœš—•”“”””•–——–•”’‹†|vqkg_O8  + +!=FFEDDDDDCECEEFGHILNQRSSRRPPPPPPPQSUXZ]`arqpooqttromkjhe`\YTQMKJHFFKQUWURQOOPTWZ[YP8 +  /+ 'H^ipx…‰ŒŽ“—œŸ¢¢¡Ÿž›™—–””“““””•–———–”’‹…yrle^P8  + 9FHGFEDDCECEDFFGIJLNPQQPPPPOOPPPQRTVXY[]^rqponopppnlljgc_[WTPMKIHFHMRUUTQOMLOTX[]^T=  +// + &F]hpx€‡ŒŽ’•™œœ™—•”“’‘‘‘‘‘‘’’““””•”’‘Žˆ‚{tld\P: + 5FIJHEDDDCECFEGGIJLNOOPPPPOPPPQQRTUVXY[\]pponmmmmmlkjhe`\YVSPNLJHHKPTUUSPNKJLSY]]`UD .3! $G`inv€ˆŽ‘’”–—–”‘ŽŽŽ‘ŽŠ„{tld\O9  3FJLIFEDCDCEDFFHHJLMNNOOOOPPPQRRSTUXYZ\\]nmmlkkjjjihgea\YWUSQOLKJKMRUVUSPLIGIRY]\_SG +7( &B^djr}‡ŒŽŽŒŒŒ‹Š‰ˆˆ‰Š‹Œ‹Š‰ŠŠ‹‹‹‰„|rjb\Q8 4EIMJFEDDCDDEEGGIJKMMNNPOPPPQQRSTUVXY[\]]kkkjiihggfec`]YWVUSRPNMLMPSUWVTPKGEFPY][\PH '80  IYago{…ŠŠŠŠ‹ŠŠŠ‰ˆ‡…„ƒ‚‚ƒ„……„ƒƒ„„…†…‚{qg^VP< +4EHMJGEDCDDEEFFHHJKLNLONPOPQQRRTTVVXZ[]]^iiihggfeecb`][YWVUTSPONNNQTVWVTPKFCCMX]Z[OJ(  !64"  *BT_fox€ƒ‚ƒƒ„„„ƒƒ}||{z{{{{|}~~{vndYPI9 +5FHLJFECDDDEFFGGIIJMLOMPNPPRRRTTUVWYZ\]^^gffffeedcb`_][YWWUTSQPPPPRTUVWUQLGBAKV\ZYOK7 16( ";MX`iptvvvxxy{{zywvtrrrqrswxxxvrld\SI=2 7GGJIFDCCCEEEGGHHJKJNLPNQPRQRSTTUVXYZ\]^^eeeeeddcba`^][YXWUUTRRPQQRSUVVURMHCAJTZYWPLC$  ++5-  1AOZbfhijjklnqrrokfcdfikmmmmmjd[SKB6':FEHGECCCDDDFEGGIJJMKPLQNRQRRSSUUVWYZ\]^^ccccccbcaa_^][ZYWWUTTRSPSRSTUUTRNJECIRWXVQLF/ &30 + +'7FNSX[\\]^_``_]YTQPTY]]ZYYYVQJA7+=DCEECCCCDEFEGGHIILKOLQNROSQSSTTUVWXY[\]^bbbbcac_b_`]^[[YYWVUTTQTPSSSUTTSOKGDHOUVURMF6 + !03!  -6%.4$  !)/24555565445530/023431/-(   7A??@AABCCEDGEHHIJIMJOLQNSOUQTSTTUUVVWXYYY____`^a\b[a[`Z]Y[WXVTVQVQTTRURSRPNKIILOQRRPLD1  )4(  !$%&&%%$%&&%$##$$$" 0?@==?@ABCEDGEHGHIILJOKQNROUOURTTUUUUVVWWWW]^]^]_\a[bZ`Z_Z[YYXWWTWQURSTQTRRQNLKJLNPQQPLF9*  "1+  +  +)9?=;<=?ABCDFEHGHIILIOJPMQNTOUQTSTTTUUUUVVVV\\][^[_[`Z`[_[\[YZXXUWRWRTTRUQSRPPNLLMNPPQPMH?5# *+ + +  +#3;;9:;=?ABCEEGGHIIKIMJQKRNSOUPTRTTTUTTVUUUUU[\Y]Y]Y_Z_[^[]\Z\YYWXTYQUSSTQSRQQOONNNOOPQPNJD=1 +!(" + + + + + +  +$278778:=?ACDEGGIIIKIMJOJRMSNUOTRTTTTUTVSUUUUUZX\W]W]Y^[][][[\Y[XYWYRYRUTRTRQTOROPNPNPPQQPMHD=* #$ )4754568:=?ACEFGHIIKIMJNKQLSMUOURTTSTTUURWRWRVTX[W\U]V]Y[[[][\[[Y[XYUYRWSUTTQTPTORNRNRORRRRPMIG;# " -78412358:=@BDEGHIJLINJNKPLRMSOUQTSSTTTTTWRXPYQVYVZU]S]V\ZZ][[[[[[ZZXYUZRXRURURSQSPSNTNSPRRSRPMLF5  + ".673//0358:>ACEGHIJKKMJOKPLRMROSQTRTTTTTUTTURYOWSVYU[Q^S]W[[Y\[[[Z[ZYYXYUYSWSUSSTRRRPTNUNTRSTTSPMJB3   +'1452/-.0368BEHJLMMNNPNONPNSOSQSRTSTTTSUSSUSTTTRTSWTXR]O\S\U\X[Z[[[Z[[ZYZXWYVWWSYQXRVTSUPXOURTTTUSOKH?,    +"(,,,***+./259=@DFILMNONPNPOPOROSPSRSSUSUTURTTSSTRTRRTTWSYO]Q[S]U]X\Z[[[[[Z[XZYWYWUYSZRXTUUSWPWPTRRSTTQNLH;+   + + $%'))))*+,.147;>BEHKLNOOQNQPPPQPSPSRSSURWRUSTTRSSRSQTRRVSWR[O\Q]Q^T]W[YZZ[Z[W[XXYXXXUYSZSXUUWRYQVRSRRRRRONLE8*  +   "$%%&'(()*,-036:=ACFIKMNOPORPPQPQRPTRTSURWQVRTSSSSQRRRQRQTWSXP\N^O`P_S]W[YZYZXZXYYWYWYYVZUZUYWUYRWRSRQPQQQPNMIA6)    "$$$$%&'')+-/269<@BEGIJMNOOQNQPPQRPTRTSURWQWRURSRRRQRPRQQRUTVRYN]M_N_Q]T[WYXYXYWXWWYWYWYYWZVYWVYSYSUSRPOOPPPONLF?7. +   "####$$%'(*-/1598+   +  !"######%'),/269=?ACDEFGIJLLMNNPOQPSQVRUTUTVSUSSRRRRORQORPOQTUURWQYQZRZTYWXWXWVWUVUUUVVXWZXZX[W\U]SYUUTRPNNNNOPPPPNLID>3"  +  !!"""""##%(+/26:@ABCDDEEGGHHIJKLMNOPQSTUUVUVUTSTRSQRPQOPOPNQO \ No newline at end of file diff --git a/examples/img/sh1r.pgm b/examples/img/sh1r.pgm new file mode 100644 index 000000000..532974c7f --- /dev/null +++ b/examples/img/sh1r.pgm @@ -0,0 +1,243 @@ +P5 +# CREATOR: CImg : Original size=180x180x1x1 +180 180 +255 +««¬«««¬¬««¬¬¬­¬¬­®­­®¯­°®¯¯¯¯¯±¬´­²°¯±°±°°¯¯°­®­¯­­¬«¬««««««ªª©©©©ª¬­¬ª¦ž–‰ˆ‰ˆ‡‹–¢©¬«©¨§§§§¨¨¨©©¨©¨¨¨§¨§¨§¨§¨¨©©©ªªªªªª««¬¬­­®®®®®¯¯¯¯°°°±±±±±±±±°°°°¯¯¯¯¯¯¯¯®®®®®¯¯°±±²²³³´´´³³³³³«¬«ª«©«¬«¬ª­­«­¬­¬®®­¬²¬°°®±°°­¶ª´¯¯³¯±¯°®°¯®°¬¯­­¬¬¬¬«««««ªªª¨¦¦¥¦¨©ª¨¥¡¢¥£Ÿ››™”“˜¡¨ª¨¦¦¦¦§¨¨¨©©©©¨¨§§§§§§§¨¨¨©©ªªªªªªªª«¬¬­­®®®®¯¯¯¯¯°°±±±±±±±±±°°°°¯¯¯¯¯¯¯¯¯®®®®¯¯±±²²³³³´´³³³³³³¬«ª«®¬©«««­«¬¬¬­­­®¬­±ª²®­±¬±°±­²±®´®²¯±¯±®°¯­±«¯­¬¬¬««««««ªª¨¦¥¤¥§ª­®­¬ª¡š™ž¤©©¥ž—“˜¢¥¦¦¦¦§§¨¨©©©¨¨§§§§§§§§§¨¨©©ªªªªªªªªª¬¬­®®®®¯¯¯¯¯¯°°±±±±²²±±±°°°°¯¯¯¯¯¯¯®®®®®¯¯°±²²²²³³³³´´³³²²«ª«°¤°«ª«««­«¬¬­­­­­¯¬²«¯°­²­¯°²°¯³®³¯±°°¯°¯¯°­¯¬­¬¬«¬«««««©¨¦¤¤£¥§¦ •‹‚}~‚‚‚†•Ÿ£›ˆ™¡¦§§¨¨¨©©©§¦¦¦§§§§§§§§§¨¨©ªªªªª©©©ª«¬­­®¯¯¯¯¯¯°°°±±²²²²²²±±±°¯¯¯¯¯¯¯¯®®®¯¯¯°±²³´´³³²²²²²²±±±±ªª®¤¶£°«««¬¬¬¬¬¬­¬¯¬®¯¬±­®¯®±¯¯°¯²¯²¯±°°°°°¯¯®¯­­­¬¬««ªªª«ª¨¤ ¡¡žžœ’k]WXY^elqqms‹“ƒ„‹“ §ª«««ª¨¥£££¤¦¦§§¦¦¦¦§§¨©ª««ªª©¨©©«¬­®¯¯¯¯¯°°°±±²³³´³³²²²²±±¯¯¯¯®®®¬¬­®®®®¯±²´´µµ´´´¶¶¶´²²³´¬ª©²¡³§¬¬«¬«¬¬¬¬¬®«¯¬®¯­¯®¯¯°°°°°°±±±±±°°°°¯¯¯®­­¬¬¬«ªªªª¬¬¨¤¡ —ypk`QE?@FPY_bimkd`i~……‘Ÿ¨««©¤Ÿ››Ÿ¢¥§¨¨¨§¥¤¤¥¥¥¥¦§¨ª¬­­«ª««®¯°°°°°±±²²²²³²³³³²³³²²±±¯¯¯®®®¬¬®¯®¬­­¯°°°°¯¯¯°±²±¯¯¯¯°¨®ª¨°©«¬«««¬«¬¬¬­¬­­®­®®®®¯¯¯°°°°°±±±±±±°°°°¯¯®®­­¬««ªª©©©¦ž–‹y`80-,+))+19DQ`moe_ZYant||w€Ž–››•“Ÿ¤§¨©©¨¤¡Ÿœœž¤¨ª©¥¤¤§ª­°±±°¯¯¯¯¯°±±°¯¯±³³´´µ´²°°°°±±¯¯²³²´¶¶µ³±°°·¸···´²±·¸µ²­¨­«ªª¬««««¬¬¬¬¬­­­­®®®®®¯¯¯¯¯°°°°±±±±±±±°°°°¯®®­¬««ª©©¨§¢•ƒoU5!#%)+*%##'-17I_e_Z[XWYi{{z„”“•“†…•œ¥¥£ ¢Ÿ˜“‘“—œ˜””—™–“’“˜Ÿ¥ª®¯©§¨ª¬®°±±¯­¬­¯±²³´µ³±¯¯¯®±±¯¯³³®¨§¦£ ›˜•Ž‹‰…‚|vog`XR«ª¬ª«««««««««¬¬¬­­­­­­®®®®®¯¯¯¯¯°°±±±±±±±±°°°¯¯®­­«««©©¨¥pT>.%%)-/1/,++****)-8EHJKIFDHWpzpx~ˆ€ogl}–“‹‰‡{z€ˆ‘’‹„ƒuTBDLUdu‰œ¤¤§¨®´³¯®´¸­«©¦¡š‘‹‰„}ume\VNKE?<;50489537<>;99;?AA@@ABCª­©«««««««««««¬­­­­­­­®®®®®®®¯¯¯°±±±²²²²±±°°°°®­¬«««©¤§¨†aC61-(%##$%&'*,-./.-+-269:999;?F[d\G@JOGRcg^]o„‹‹Š…weTE?GVZWROPS[gkkjaZUQKB729840-)'(010///-,1320031/16875533??<:9840./01ªªª«ª««««ªªª««¬­­­®®®®®®®®®®®­®®¯¯°°°°°®¬«¬®°²±¯®®¬«§¢ ŽN:31.'!"%(+./01111001210/../024.-,(#!%*)$)=S[\Z^[N@552,1>@<<=?;7:>>?B;1-0430*'%$%).1/.-,,++("&'+165/3;AJQSRZ^eo{…Œ‘¢¥¦§ªª«ªª««««ªªªªª«¬­®®­­¬¬­­­­®®®®±³µ³°­«ª­±³´µµ³°­¬¯©¥¨§“_410,& #'*-/11221110/.-+*(&$#"!!! !(./)),,.,+-./113577646:::93+%$%'((*,.15:?IOW`jt}ƒŽ—Ÿ£©¯³º»¹¸½ÅÇÈÓÓÑÍËÇÄÄÊÌÍͪªªªª«««««ª©©ªªª«««ª©¨©ª­®¯±°­¬«ªªª«¬­¯¯ª¨©«¬«©©³´¥š‡^,1*""$'*,/1233211/.-+('%$"!!&+,.,++-0234566569>BCEK[s‹™œ¦­³·¶³±²¸º¹¶³±²²­¯³³´·»½¿¾»¸¼À¾¹¹»¿ÂÅÇÈÇÆÇǪªªªªªª«ª©¨§§¨§¦¦§ª¬¯±±¯©¦¨«¬ª¨ª¬¬«¬¯°¯­­¬¬®¯¯­ª¡™‘Y8$"!$&)+./1233210.-+)&$"  + + "%&''(*+,../0112259=>>?Ke‡ ¨¤ §²··¶´²±²´³²´·º»½½¼»¼½º¶¶º¾ÁÅÅÂÁÁÂÂÂÂÃÄÄÄÅŪª©©ª©©ª¨¦¤¥¦¨§¦¥¦©«¬«ª«³²±²°¬««¡—†xl_JA:3,% &62 #&'(*+,./000/.-*(%#  !"$%')*++,--./02454202>X} ±¥§¯³¶¶¹¼¾¾»¶±®°²¶¸¸··¸¸¹º½¿À¿¾½¾¿ÁÂÂÂÃÄÅÅÅÆƪ©¨©©¨©¬¨¥¥§ª¬®¬§¥¢œ“‰t\PE<2("" #%%)&)$$&'''&''()****(&#  "$%'()**+-./134667754CeŒ«³¶¶´´µ·¶¶µµ´µ¶¸¹¹¹¹¹º¹¹¹º¼½¿ÀÁÂÃÃÃÃÃÃÃÄÄÅÆƪ©§ªª¥—vmbP?3/+!!%*")18AIQQG.!#&'&$"!!!!"""#" !"$%&()*+-.02345652/1;Lv™¯³µ´¶···¶µµµµ¶·¸¸¹¹¹ººº»¼½¾ÀÁÂÂÃÂÂÃÃÃÄÄÅÅÆ«§§¨ž{D*)%#%#!#"!"%,3;DO]hux{ˆ‘”—t:!!%&#  "$%&(*,-/01234320/.0Fw”»¹··¸···¶¶¶¶··¸¸¹¹ººº»¼½¾¾ÀÁÁÁÂÂÂÃÃÃÄÄÅÅÅ«§¦©¢r*!#3@GPZels|„Œ”›¢¦©©§§©ªª¦¥¦ª¬«¨¤["#" "$&(*,-./0222210,&(Gw«½¸·¸¸···¶¶¶···¸¹¹ºº»¼¼½¾¾ÀÀÁÁÁÂÂÃÃÄÄÄÄÄÅ«¦¥¨¡h D\r€†«¯¨¦ª§žœŸ™™Ÿ¡£¥¨«®°¯«¨¨©­¬©¨©ª§¡Š3"  #%(*+-..//00010-$+GŒª´´···········¸¹¹ºº»¼¼½¾¿¿ÀÀÁÁÂÂÃÃÄÄÄÅÅÅ«¦¤¥š[*‰ ¬«£ž £¡›¤¦£¥©¨¨©©¦¥¥¦§ª««©¨©ªªªª©©ª¤˜q'"%()+,--...//11++_•¨²····¶¶¶¶¶···¸¸¹ºº»¼½½¾¿¿ÀÀÁÁÂÂÃÃÄÄÄÅÅ«¦¥¦šX"DŸ¦§©«¬ª«°°±±¯¬©¨££¥¦§¨©ª¬®­¬ª¨¨§§¦§§©¦•{I "%()*+,,,,--.00 ,>…ž±¸¸··¶¶¶¶¶¶¶··¸¸¹º»»½¾¾¿¿ÀÀÁÁÁÂÂÂÃÄÄÄĪ§¥¥–KF¡£¤¥¨©©©©ªªªª©©©©©ª©¨§§§¨©ª«««ª©¨§¥¦§™tG##%'()*++++++-.'*;_—§¸º··¶µµµµµµ¶¶·¸¸¹º»¼½½¾¿¿¿ÀÀÁÁÁÂÂÃÃÃÄ«¨¢¤—HQ£¨©©©©©©©©©ªªªª©©©©©©¨¨¨©©©ªª©¨§§£Ÿ¡ž~D #%&'()))***+,*+/Hy—°¹·¶µ´´´´´´´µµ¶·¸¸º»¼¼¼½½½¾¾¾¿ÀÀÀÁÁ¬© ¤M[TVl¦¥¥¢Ž +#—£¥¨¦§¨¨ªªªª««««ªªª©ª©ª©ª¨¨§œ•\ + + + + """     !"#" $Ap ¥¦¥¥¦¦§§¨¨©©ªª¬ªªO@TXNWg¦¥¤©† •¤§©¥¥§¨©©ªªªª««ªª©©©¨¨¨¨§ª§„r'  + + +  !$'('$  +  ! )@¢Ÿ§§¥¥¥¦¦§¨¨¨©©©­¨©kCGWSJT_§¤¢¦„ •¦©©¤¥¦§¨©©ªª©ª©ª©©¨§¦¥¥¦§ª§ŒV +  + + + + + !%),-,("  + #-h™¡©©¥¤¥¥¦§§¨¨©¨¨²«šICMUOGM\¨¤Ÿ¢‚ $˜§¨§£¤¥§¨¨©©©«©ª©©©¨¦£¡¢£¦¦œ†1  + + +  !$)-021-% + + "F|š¤©¤£¤¥¦¦§¨¨¨¨©²§p8FSRMEG^©¦žŸ+¦¦¥¢£¤¦§¨©©¨ªª©ª©©§¥¡œ››”f  + + + +  #(-15761( + + -\Žš¥¢¢£¤¥¦§¨©©¨ªª¥B7@VQMECd«¨Ÿž€-ž¦¦¥¡¢¤¦§¨¨¨©§ª©©©©¨¦¡—’‹€t^B"  + + + + + "&+059<;6,  ! !!!!!!! $%%!   "G…—¢¡¡£¤¥¦§¨©©©«¦¥24:WTMDEh«ª¢},ž§§¦¡¡£¥¦§¨¨©¨©©©©©©¨¤™Š}u[>' + !$*/49>A@:1# !"####$##$$$$#"! %,11.)$ 2w˜¢¢¡£¤¥¦§¨©ª©¬¥™22AWYLBKf©¨¢œz -Ÿ¦©§¡¡£¥¦§§¨¦«¨©©©©ªª¦Š…J-#   #(-28=BED>5&!$%'((''&&&&&&&%$"!&/7<;61*# ^“œ£ £¤¥¦§¨©ª©¬¡’.6GW]MCQ`¨¦¢šw0¤¥©§¢¡£¥¦¦§§©§©©©©ª««¥ž’˜{;-)    "&,17D]bRFSY¨£¤˜s3¥¥¨§¢¡£¤¥¦§§¨©©©©©ªªª¢ ”yA(/$    !$)/6;@DIMLC<0% !  $(,0110.+*)((((''&(09?BA@<6/(  !#"1yšžž¥¦¦¦§¨¨¨©ª¢}.IEfgXHST¨£¤•l4¤¦¨¥¢¡£¤¥¦§§¨¨©©©©©ª©££“J,&1"  "'-4:?CGLONF@5+!"#"!!%*/2331.+*((((((),19?ABA@;6/)  !%'+a•¤¡¦¦¦¦¦¦¤¥©«¦r2IMniZKST©££•d5¢£¥£¡¢£¤¥¦§¨§©©©©©©©ª¤¥ˆ-$&0"  $)07>BFINPOHD:2"!$%$#! !$(,./.,*(&&'(()+/39>@BCB@;5.(" &+('KŠ¦£§§¥££¡Ÿ¢ªªªu5GVpiYLUVª£¤™_9 ¡£¢¡¢£¤¥¦§¥©¨©©©©©¨«¥¡h$#'.!  %+2:@DGKOQOIF>6' #&'&#! !#$%$#"!"#%'),.26;?ACDDD@;4/)# + #+-$=¡¢©©¡š—•–Ÿ§ª¬6K[qgXNYY©££œX<¡¢¡¡¡£¤¥¦¥©¦©©©©ª©¥¦¬C%)**!%,3;AEHLPRNJGA8*#&(('$! !#$#"!!!#&),036:>ACEGHGFA;5/*$ + (1(6u ¥¨“‹ƒ‚Œœ¥««Ž4Q^tkWQ[]©¢¡šM?›Ÿ¢¢¡¢¤¤¥¦§¥©¨©©ªªª¥¡®k030+(!$+3:AEILPROJGB6+!!%)*)'# "'*-,+)((+.259;>ACFIKLLLHC<61+&! + + + + #003hž§—ujfv‘£§¬ª™9Wczu[T_`ª¢ž—DDžž¢¢¢£¤¥¥¦¦¨§¨©©ªª«¨¥ V0?0*'"")18?DHLQROJFA5*# $(+,*'"$*.00.--/26:=?BDFIMPQRQOKD>83-(" + + + + '-0Q}ƒidRMg¨¬ª¬«¡N`n€cYbd«¤Ÿ”?K¢ ££¢£¤¥¥¦§§¨¨¨©ªª«©©“U8@,)($ &.5***%#*19?EJPSQLHC3)"!'+/0/+& "&)-148BGLQUX[^adgikmmlkhe_WNHC>83,%  +  +  EjŸ¥§£¢¦ª¬­¬¬ªŽy{ƒŠzihi­¥£’,c¢££¤¤¥¥¥¦¦¦§§§§§¨¨©¨±‰2C(.5/#!$)/6=CHLOPNKG:(4569:70'"$,6?EKQX_cfilorstuutrqolg^RLGA;6/'"  +  +  !"Fu¡Ÿ£¡¢§ª¬­¬­­™„…}jfg­¥¢—%g¥¤¤¥¥¥¦¦¦¦§¦§§¦¦¦§§§­›O5-14,!  "%&')+/5*7668:93+$ !&/:EMT\dkorux{}}}|zxwutrnfWPJE?:3(#""!  + ! #?z ¡¥£¥¨ª«­­®®¡ˆˆlee­¥¡™k§¦¥¥¥¦¥¦¦¦¥¨¦¦¦¦¦¦§¥¢˜a3/21' #),./148=DJNPPPONLGB06645675/)$"$(1=JU^irx|ƒ„„„„ƒ€}zyxvsj[TOHC?5(%'))'! +  +  !<ˆ¨¤§¥¦©«¬­­¯¯§™‹€ndc¬£Ÿšm§¦¦¦¥¥¦¦¦¥©¤§¦¦¥¥¦§ ¢X4,.*! !(0457:>CHNSVXWWUSPLE7$&475446630,('+2=JXds}ƒ†ˆ‰‰‰‰‰‰ˆ…‚|{yul`XRKGB6*+1553*  4Š¥§¨¦§©«¬­­®¯ª –‹qeb¬¡Ÿ˜p§¥¦¦¥¥¦¥¦§¤¨¥¦¥¤¥§¦«†E0')#  &.6:=AEKOTWZ]^_^]ZWRKB46BHFB><;:964104=HUex‡Š‹‹‹ŒŒŒ‰†ƒ€~|wnd\UOJE6-5>AB@6'  + 1Ž¤¦§¦¨ª¬­­­®®¬¥œ‘Šuie¬¡¥~¦£¦¦¥¥¥¥¥¦¦¦¦¥¥¥¤§¥š«~A(## + + !%,5% + + + +  $'*27[‚§¨¯ª¬¬¬­­­­®®®®®®«£¢ 'ŒŸ¡¡ ¡¢£¤¥¥¦¦¨§¨¨¨¨§¥©¨¢•{F0^o{uuwz}€‚„|uqprw{{|€€|vsqopruwwxz}€ƒ…††‡‡ˆ‰Š‹‹ŒŒŒ‹‹‹ŠŠ‹‹ŒŒŒŒŒŠŠ‹Š‰ˆ„‚‚ƒ„vmgeZE6) + + + !0E2J$©§°ª««¬¬­­­®®®®®®¬¤£} (Œž   ¡¢£¤¤¦¥§§¨¨¨¨¨¨¨©§¦¡’q; 0`mzuuwz|€}wngc_[UYbii^PHLMMORW`ioqsv{„††‡‡ˆˆ‰‰ŠŠŠŠ‰‡†…„„„ƒ‚|yywpntxzzvsx}}{{|ƒ‚{smdVI8$  2:3:6©§¯««««¬¬­­®®®®­­¬¦¢z )ŒŸ   ¡£¤¥¥§¦¨§¨¨¨©©ªª©ªªšY:" -^nwtuvy||yqh_YUQLIGGE?9531..16;962/,*(''(+06;BKRW^lx€„†ˆ‰ŠŠŠ‰‡ƒ~xqjbXNF@7/)%" !$&)-048;=@BGNYfqtqjeY@" 4~…’–ž¢¤¤¤£¡™”‘“–™®ª›a:›¤Ÿ   ¡¢¤¥¦§¨¨©©ªª«¬¬¬­®œl ³§”~0  Sinpoolf`[WTSQOMKHEB@>;:997642136;@GOV]iu~„‡‰‹‹‹‹Š‡ƒ|une]TKB93-*'%$#$%'*.26:=@BDEGKR]iqqmj_D$ J“¯—š˜šž¡¢£¢¡ž›˜–••••—˜®¨˜_@£¨ž   ¡¢¤¥¦§§©©©ªª«¬¬¬­¦~Œ¯®«•s,!& + +Nikmmmid`[XVTRQOMMKJHEA<:986420038>CKU]fs}„ˆ‹ŒŒŒŒ‹ˆƒ{rjbYQF<51-+((()+-0369;>ADFHHJLQZfnqomdH$ 0S›´ª¥ž››ž ¡¡ Ÿ›™™˜™™™šš®¦•ZA¥¨ ¡  ¡¢¤¥¦§¨¨ªªª«¬¬¬­­™~§²±³Še.%7& Fgiillga]YUTSQONMMOQPLC81,*%! "'/6?AELX`^[X[_Q5#!%,1?Rao~‹‘”––––“‚ym`SC91*&##)/:HQYdg\ND9338?FKNPU[emqqomW'Mg¨¥¨¡œ›››œœœ›š››œœžžž²œ›EH£¤£¡ ¡£¥¦§¨©©ª«««««¨£ˆŠª­¬°©K6*'8C/$!! 5SfbidVQQXZVSNF=88>M_nuxvl\PMQVQC4,*+5GZm~•™›œœ›—‚{kWH71.*)+2;AP_eiqutl`UJ=7;DJNQUZdnqrqoZ)"K[¨«¢ššš››œœœ››ššš›œžŸŸŸ°ž›AJ£¥¤¡¡¡£¤¦§¨©ªª««««ª¥–~˜®ªª¯£O51*:G=.&$$"6RcbfXNRYa^URJ?68EXinaPJI@47>@CIIE<4/1@Me|Ž™ž¡££¡œzgK=20/036;CRg{‰ŽŠ}qmjhaTF?DKOSUYamrsrp\,4MQ ¢š›˜˜™š››››ššššš›žŸ   ®¢š;M£¤¤¡¡¢£¤¦§¨©ª««¬¬«ª¡†ˆ¥®ªª¯ŸW>?1>NL>4,')2H`^[KMS`g_TQE:7CQYWE, )*"$.58>EIFA86?G\zœ¡¥¦§¦ž‘€x]@7468=BISZTKB7//6H^jgd\NDEMRTWW\ktsrp^/!-[S@• ›™––˜™™ššš™™™™šœžŸ  ¡¡¬¦š6Qœ¢£¢¡¡¢£¤¦¨©ªª«¬¬¬¬©‘v™«©¬«¯ ]JL;BV]PB7/..9U^QMNPdiaTOA:>GE<2)""!/@?508HSY[QFENSW[XVeutqo^1$,.Nc7Z¢Ÿ–“‘“–—˜˜˜——–—™›ž  ¡¡¡ª©š0Tœ£ ¡  ¢£¤¦¨©ª«¬¬¬¬¨¤|v§¬¤¬«­¤`WXKIR^YNB741/>WJWHOhjcUMA==:5588/!&F\QA>DNUSHCJRq‹§­®­ª –€hLBJKKJKJGEE:&"%)*$!(4:FQQIEMUZc_RYpvqn]1 !#+22DN4zš˜ŒŠŒ’“”•””““•—›Ÿ¡¡¢¡¢¨«™,Wœ¢Ÿ  ¢¢£¥¨©ª¬¬¬ª© ™hs›¥¢©©«¨bb`]YMPPMG?=5%%*AZGUkmgYNC;648BMOB.!#,AaldWNJNX`WCOWm…™¦®°®¨œ–~bPUZMFECACMUH"$6C?9>FHGMU_im_P]utm^1"#%(.3*0*T›ž‡‡‡ŠŽ‘‘‘”—›ž ¡¢¢£¢§­›'Z¡Ÿ  ¡¡¢¤§©«¬¬«©¦›‹XUq„—¥¨ª«dheilYLB>=?KN.djFYnplaWPKHHMU[]WH;59D`utmidbacjdCEYfssppt|ˆ’’y_W\RFOQPNR\e^8) %3EOKA;?DHNXdnsq_Tevpc4!$&(+/1&,3”¤§›’Œˆ‰ŒŽŽ”™œŸ¡¢¢£¢£§©ž^ŸžŸŸ ¡ Ÿ¢§ª«¬¬«ª¨£šŒ„…‘¢©­©lnjlvfPA948Qnqb1|‰Z^pssnhd_XSQTY`js}„„~yutsrrstuvX3GMO[w‘¡©­¡uSEIKAUcikhhkqs^E635:K^c\RIGHLS_kuxzoZUqrg1!#%%#%-G~¨¯§ š”Ž‹Œ•šž ¢¢£££¤§¨^Ÿ›ž Ÿ ¡ ¥©«¬¬««««ª©ª¨¥¤¥ª®­}vpowkSC928Ywzn:‰—phruwvsqng^XUTUVWX[_bdfhjkmorsusb$79:8~¦¤¨£¤ —š¡¤¦¦¦¥¤¡›Š•¢§¤Ÿœ ¤§¨©ª«««­­­±£„#œ¡¡Ÿ¢¡¢£¤¥¥©¨©©ªªª©«¥ƒdkdhjjmr|‡““Œwl8;(,^o`Z^behkmpsuxz}‚ƒ„††ˆˆˆˆ‡†„‚€ƒ‡—ž¡¢£¤¥¥£¡ž™‘‡{|ƒ„†‡‡ˆˆˆˆˆˆˆˆ‡‡……‚|zxtqlghml)*dš¦¬¨§ —›£¦§§¦¤ ™—£¨§£žž¢¥§¨ªª«««­¬­·¥‚ !šž¡ ¡¡¡£¤¥§¦©¨©ªªª©§¡}gpjkihkq{…Ž’•“„*7+._pa[[`cgjmpsuy{~€‚„…†‡‡ˆ‰‰ˆ†‚}xurqqvŒ•šœœœœœœ›˜‘„ukhlsy„‡ˆˆ‰‰‰‰‰‰ˆˆˆ‡†„‚~|yvsokfgte >s‘§ª¨Ÿ•œ¥¨©¨¥Ÿ–ŽŒ”¡¦¥£ žŸ£¦¨©ªª¬©®©®«¸£~ !˜ ¡¢ ¡£¤¥¥¨§©©ªª©©¤¡rdpplhfipz„‘“˜’’(035Wd_Y^aeilpsvy|~ƒ„†‡ˆˆ‰‰‰ˆ…€xpic][`m}‹“—˜˜—–•”‚nZPPVan{ƒ‡‰ŠŠ‰Š‰‰‰‰ˆˆ‡…„‚€~{xtqmhfh{[ =q™¤¤›—Ÿ§©¨£™ŠŒ’š   ŸžŸ¢¥§©ªª¬¨¯§°ª­´ž{ #™¡¡¡ ¢£¤¥§¦©¨©ª©©©£¢b]pulechpz…’–œŸ<1I- 0abY]`dhlosvz|ƒ…†‡‰ˆŠŠŠ‰†ulcUIBBM`vƒ‹ŽŽŽ‹‡}kR?7:DTfx„ˆ‰‹‹ŠŠŠŠ‰ˆˆ‡†…„€}zvsokhgj~R  7m•Ÿž›œ¤§¤›…†‹”˜›œž £¥¨ªªª«¨°¥²§¯«°›z %œ¢ ¡ ¢£¤¥¦¨¨©©ª©¨¨¢œRVpvh`aiq|‡‘“ ¦Y=bD*" Wd[]_bfkosvz}ƒ…†ˆˆŠŠŠŠ‰†€vl_N;.*/>Xjtxz{zxrgSOe{†‰‹‹‹‹Š‹ˆŠ‰ˆ‡†…ƒ|yurnjgim}I d‘¬«¦¤¦¨¨¥£¤§§¦¤¤¤¤¤¤¥¦¨©ªªª«©°¤´¥²ª­¯  ( œ£   ¢£¤¥¦¦©©©ª©¨¨£–SUnma\`ks€‹‘’”ž£kLe\H855;Pf]]^afjnswz}€„…‡‡‰ˆŠ‹‹ŠˆƒzqdRA3+).:M\chlke_RB757;fb]\_bgmrvz}‚ƒ…†‡‰ˆŠŠ‹‹Šˆ„vi]PF@<99;===?@ACFKQU[ep{„‰‹‹‹‹‹ŠŠ‰ˆ‡‡…„ƒ€~{yurnkijpt_(#!#9Ep¨°²²¯®®­­­¬¬¬«ªªªª««««¬«««©¯¦°¦°©®«®«¬Ÿs +›ž¢žŸ ¡¢¤¥¦¨©©ªª©Ÿ¦­ŸXUXROQ^r€“‘Ž‘•™œœ‡~sqtqZ1$_h^\]afkquy|ƒ…†‡‡ŠˆŠŠ‹‹Šˆƒ}ti]RJD>:8778:=BHNTZ_enw†‰‹‹‹‹ŠŠ‰‰‡‡†…ƒ€}zwtqmkkjpqN'._…§²³±¯¯®®®®®­­¬««««««¬¬¬««¬©­§®¨®ª¬¬¬¬®©Ÿo ,• ¢žŸ¡¢¤¥¦¨©©ª«§–ž° SSSOMQdy†’“Ž‘—šœŒ‰‚l $Xga]]`diotx{ƒ„…‡‡ˆŠ‰ŠŠŠŠˆ†‚|ti^ULD>97669>FNV\bgnu|‚‡‰ŠŠŠŠŠ‰‰ˆ‡†…„‚~|yvromklkql=%-g•¯«ª«¬­®®®®®®­­­««««¬¬¬«««ª«©«©«ª«¬«®­«ªŸj/”¢¡žŸ¡¢¤¥¦¨©ªª«¦‹‘± MRPOMTn‚ˆ‘‘Ž’™Ÿž˜›œr __b^^_cgmrwz~€‚ƒ…†‡ˆˆ‰‰‰‰‰ˆ‡„{sh_VLD=988;BKV^djou{€„‡ˆ‰‰‰‰ˆˆ‡‡†…„ƒ}zxtromlmmse- "=h„™ž ¦ª¬­®®®®®®­¬«ªª«¬¬«¬«ªª©©©©©«««¬¬­®­ž` 4™¦žžŸ¡¢¤¥¦¨©ªª«¥‰Ž®JUPQQ^vƒˆŽŽ”› ¤  Ž›ƒ& X_b`_`bekquy|‚„…††ˆˆˆˆ‰ˆˆ‡…‚~xpg^UKD?<<@GR^flpuy~‚…‡‡ˆˆˆˆˆ‡‡†…„ƒ€~{yvtqommpos\ %[uƒŽ›¢§ª«­®®®®­«¨¤¥¨¬¬¬¬««ª©©©©©©ª««¬¬­®°žX 8¨ŸžŸ¡¢¤¥¦¨©ª««¨’š©–N[RV[j|ƒˆŽŽ—ž¤ªž¢˜”>  Jgeba`adinsw{}€ƒ„…†‡‡ˆˆˆ‡‡…„‚{unf]SKEBCGOZfmruy}€‚„……†††††††…„ƒ‚€~|zwurpnmmpprQ  +"\t‚ˆ–Ÿ¥©«¬­­®®®¬¨¢ž¤«®®­¬««ª©¨¨§§¨¨©«¬­­®­V4›¨ž ŸŸ ¢¤¥¦¨¨ªª«ªž£¨\bSYds~ƒ‡‹ŽŽ’›¢¦®˜¡žs + + 2dhdb`acgkpuy{~€ƒ„…†‡‡‡‡††…„‚€}xsmf]UNLLPXdntxz}‚ƒ„„„„…………„„‚€}zxvsqonmnrqoC +8_w£ª­¯®®¯¯±°¯®¯²²°®­¬«ª©¨§¦¦¥¥¦¨©«­­®«U7ž©¡¡ŸŸ ¢¤¥¦§¨©ª«ª¥§¦•ebVZju|…ˆŒ”¢¤¬z“> +  #Xedbaabeinrwy|~€‚ƒ„……††††…„„‚~|xtohb\ZY]dnv{~€‚‚‚ƒ‚‚‚‚‚‚ƒƒ‚€}{ywtrponmnpnf/'Kdmvƒ™£¨ª¬¯°±³´´³²°®­¬«ª©¨§¦¤£¢¢£¤§ª¬­®ªœR;¡©¤¢ŸŸ ¢¤¥¦§¨©ªªª©©¤˜`]\]lrtvy~†Ž”¢¦¨kŽz + +Nccba`acgkptwz|€‚ƒƒ„„………„„ƒ‚}zwsokhgioxƒƒƒ‚ƒƒƒ‚€~~~€€€}|yxusqpnmnnoi\U¦Ÿª¨¦¦¥¤¢ ¡£¤¥¦§§–zc```^\ZXVSQOMKJILL< + +  *GTWXXXYZ\^abbbbcglrrmikoqqplhhe[TPKDCFIPW_ehjnrqomqx}~~{uoifefgghhiiihgaH &EJKKKKJIHGFEDDDFGHJLNPQOOSX\_``_][YWWWª•7P¡ ¨¨§¦¥£ž™šŸ¤¦§¨œ{\W\][YWUSRPNLJHGHIG4 + +  :LRVVWWXY[^`cegkpuxyusrswzxrpt}„…‚zqpsw{ˆŠ‡|xussuy{|{yvqlhgffggggggfdV5 $DKLKKJJIHFFEDDDEFHKMOQSUX[\]\[YXVTSSSS§•0T¥¥¦§¥¢ž–‹‚‹˜¢§ †eRVZZXVTRQOLKIGEEFF@- + +  +.AMSTTUVWX[]`cgkosvwxwwwxz||~ƒŒ–›œ˜‘‘“‘ŽŽ‰‚{vtrstvwwwuroligffffffffd_G$  $CJMLKJIHGFFDDDDEFGKNQTWYZYYWVTSSRQQQRR¨–.[œ™›š”†zla^fwŠ’…lYSUVVTSQPNKJGEDCCCB;) + +  %7FQTTTTUVX[]adinqtuutsqoqtz†‰’••““”’‰…€yspoopqrsssqnlihffffeeeee`S. 'FLMLKJIHFGDDDDDDEFHLORTUTRQOOOOOOOOOOO¨*']~vsvqic[SPOR\imf\VSSSRRPOMKIFDCAAAA?9' + +  +;KSSSSSUVXZ^bgknppponnnoptx{|~„†‡‰Š‰ˆ…|vplkkkklmnnnmkihgffeedddd`S<  + ,ILNLJIIGGEFDDDCDDEGIKMNNMLKKKLMMNNNNNMªŽ2Agla^[SNLKLNQRUWXYWSPOOOONLJHFDBA@??@?:' +  + !)=NRRQRSUVX\_dhjkjihgghjklnprtvx{|~~|zyvrmhedbbbdfhiiiihggffedcddbXA%  + 1KMNLJIHHFFEDCDCCDDFGHIIIIHHIJJKLMMMMMM¥Š=Yf`XQMLKJJIIIJMOQPOMLLLMLLJIFDB@?>>?@@<) +  %@PRQQRTUWZ^behhgda][[]adghiknqsvwvtsqokgb_[XWX[_bdfggggggfedccd]I+ + 4JMMLJIHGGEDCF@ECCDDEFGGHGGHHIJKKLMMMMM¦ŠO``YSPOOOMKJIGFFGIIIIHJJJJJIGEB@?===>@BA+   *FQQPRSTVY\`dffec^YSOMNQVZ]^`cfiiijkid\VPLLLOSX\`ceghhhhhgecbdbP5  + + 5GKMKJIGGEEDDAG>ECCDDEFGGGGHHJJKKLKMLML˜~`c]WSRQQPNLJHGEEDDEEFGHHIIHGECA?=<<<>@CD/  !! +2KPQRRSUX[_cegfda[TMFCADHLPRUWXYXTNJE@>=?DJPV[_cfghijjjihfbbcV>  + + 8EJLKJHGFFFCCE@F@ECCDEEFFGGHHJILJLKLMLMg`cb\XUTSQPNLJHGFDDDDDEFGGGHGFEB@><;;;=@EG2 "$ :JPSSTUX[_befhfd_ZSLE@<962////0259=>?CFKQW[_bfhjllmmmmljfbb\F   + + !;EJKJIHGFFDFCCDBDADDCEEFFGGGJHLHMJLMLMLX\d`[XVUSQONLJHGEDDCDDEEFFGGFFDB?=;:9:=@FL6 "&  !=KRTTUX\_behhihfb^XQJD?<;999<9889=AHM9  +!' (=LRTUX\_bfhiklljie`ZVSQPQRTY]bgjnnmlihjknpsuvwvutsrqpmg_P4 + + + + + '?DHIIHGFEECCDBDCBDCEAHCFHGHGKGLIKLKLLLM``]ZXWUTRPNLJHGFEECDDDDFCHDFEDC@>;9778I?FCCECFDGHGHIIIKKJMKLLKLXXWVUTRPOMKJHGFGCGBEDDCH?LBFEDC@=:8668GBDDDFEGFGGIGJJJJLKLLKLLVVUTSRQNMLJHGFGCH@GCDDFBJ@HDEDC@=:8667"  % 6MY]bglpsux{ƒƒƒ‚€~~~}}||||}}~~}{yuqmif`L+  +  -BDE5  "& + +$>KU]ekpsvy{{zyxwwwwwwwwvvutttstttuuusoib[TI7 + +  + 3>AAABBBCAFAECCFCEEEFEFFFIDLELGJIKHKKKKKKKOONNMMKJIHGGEFEEDEDEEDECDDCCCA@?<:87668:=@CC7(  +'! %8HS\cjnqsuuutsssssssssrqqqpppqqqqpomg`XNB1 + +  +  .;?@@AABBCCAFAEDDEEDFEFFGGFIGJGJIIKJJJKKKKKNNNMMKJJHIFGGEEFEDDDDDDDDCDBBA@?<:877679<>AA9." &$ "6FQYagjlllmmmlmmmnmmmlkkkllmnmmlkhe^VK>-   +  *9????@AABACDAFBFDFEFFEGFFGGHGIGIJJIKJJJKJJKMMMMKKJIJFHFFFEEECFCDECDCDBCA@@=<:977779;=??:2)  "&"4CNV\`bcdddefgghhgeedddefgijifeda\TH:) + +  +%8@@>>??AA@CBCEBGCFEFFFGEHFGHGJFKHHKJJJKJJJKJLMLLKJIJGIFGFFEEDGBEEBECDBDAA@?=<:987889:<>>;5/# $ .=HPTWZZ[[\]]^__^]\\]^^_`aa_]\ZVNC5$  + +  "4??==>>??@BBCCCFCGEFGFFGHEHGGIEKGHKHJJJJKJJKJLKLJKIJGJFGFFFFEFAFDBECCDCABA??=<::88799:<=><83+   )8AFIKMMMMNPRTTSQPQRTUUSRQPNMJC8+ +  1<><;<=>>@@BBCDEDGEGGFGHGGGGGHFKFHKGKIJIJKIKJJKKJJJIHIGHGFFDFECFDCEBDDACBA@@>><;:98899:;===:82(    "-48;=>>>?@BDEDB@@?ACCCA@>;83*   +  0:;:::;<=??AACCDEFFGGGGGGGGGGGGHFJJGJIJJJJIMGKKKJJKHJHHHFFFFFEEEDCDCDACDAAA@??==;::999::;<==<:71% +   #)-/011001210/.-./010.*&!  + +  +.:;989:;<=>@@BCDEFGGGGHHHGHGHGHGHHHGJIIJIJJKGNHJIJJGKFJGHGGFEFEDEDDEAECABC@A@?>>=;<9;99;;;<<=<;97.  + !!!!""!!    + +  +$19;97789:<=>?ABDEFGGHHHHHHHHHFHGHHHHIHHIIJJJJKIKJJGJJEKEIFFFFGDFFCECCG@CDAAB@@?>><=:<9:;:;<;<<=<:94(   +    $29;866789:<=>@ACDFFGHHIHIHHJHGIGGHGHHHHIIIJJJHKJJJGLFHJEJEHGEHBIBFDDFABEC?EA@A@??=>;>9<;;;;;<<=<<;:7."    #/687556789:<=?@BCEFGHHIIIIIJFJGIGJEIGHHIHIIJJHJJJKIJDLFGIFIFGGCK?JBEDCGBBBF>CB?@?>><>:>:<;;<<<=<=<<;93'  + (.2343345789:;>=<>;<;;=:=<<====<:4+   +  $-//0001235689:;=?@BDFGHIJHKHJIKFLDLCNBLFHHHHHIJIJHHNFKFJICLBKBKDFCJ@JAEECECADC?CA?@??=>==<=<9?:><;====<;6-$    &020.-./0234679:;=?@CDFGHIIKHKIJIJFLEKDLDJHHHJHIIIIJLFNHIEHIEIEIDHEGDGCFDCEACCBBC@AA???>>=<=;;>9?:<>=====;6.&   +-420--./0134679:;=?@CDFGHIJJJJJJIIIGIGIFIGHHHGJIHJIJHKHJ \ No newline at end of file diff --git a/examples/img/tetris.h b/examples/img/tetris.h new file mode 100644 index 000000000..e18b158a3 --- /dev/null +++ b/examples/img/tetris.h @@ -0,0 +1,2313 @@ +/*------------------------------------------------------------ + + Define hard-coded color image used in the 'tetris.cpp' + example file, so that the corresponding executable does not + depend on additional data files. + +--------------------------------------------------------------*/ + +const unsigned char data_logo[] = { + 45, 45, 46, 47, 48, 49, 50, 49, 48, 48, 49, 50, 52, 53, 55, 56, + 59, 62, 64, 65, 64, 64, 66, 66, 65, 66, 72, 76, 78, 80, 77, 74, + 83, 84, 79, 78, 82, 85, 91, 97, 85, 92, 90, 95, 97, 97, 93, 88, + 95, 87, 85, 88, 88, 85, 82, 81, 83, 77, 74, 81, 81, 78, 73, 69, + 67, 65, 63, 65, 66, 65, 65, 65, 64, 61, 59, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 30, 29, 30, 29, 29, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 48, 49, 49, 50, 52, 54, 56, 57, + 59, 61, 63, 64, 65, 65, 67, 67, 67, 67, 71, 75, 78, 81, 79, 76, + 83, 87, 83, 82, 84, 88, 94, 100, 91, 95, 94, 98, 100, 100, 96, 92, + 99, 91, 90, 91, 89, 85, 84, 83, 83, 78, 77, 82, 82, 78, 73, 69, + 68, 66, 66, 67, 66, 65, 65, 65, 64, 61, 59, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 30, 30, 30, 30, 29, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 49, 49, 50, 51, 53, 55, 56, 58, + 59, 61, 63, 64, 66, 67, 69, 70, 70, 70, 71, 74, 79, 82, 83, 79, + 83, 90, 88, 86, 86, 89, 96, 103, 97, 98, 100, 102, 103, 103, 100, 97, + 103, 95, 95, 95, 91, 86, 88, 86, 82, 80, 82, 84, 82, 77, 73, 70, + 69, 69, 69, 68, 67, 66, 65, 65, 63, 60, 58, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 30, 30, 31, 30, 29, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 49, 49, 50, 52, 54, 56, 57, 59, + 60, 62, 64, 65, 67, 69, 71, 72, 72, 72, 72, 74, 79, 83, 85, 83, + 83, 90, 92, 89, 87, 90, 97, 105, 102, 99, 103, 104, 105, 105, 101, 101, + 105, 97, 98, 98, 93, 88, 91, 89, 84, 83, 86, 86, 81, 76, 73, 71, + 71, 72, 72, 71, 69, 67, 66, 64, 63, 60, 58, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 31, 31, 31, 31, 30, 30, + 45, 45, 46, 47, 48, 49, 50, 49, 50, 50, 51, 52, 55, 56, 58, 60, + 62, 64, 66, 67, 68, 70, 73, 74, 75, 77, 76, 76, 80, 84, 88, 89, + 86, 91, 96, 94, 90, 93, 101, 106, 107, 100, 108, 107, 109, 109, 105, 106, + 108, 100, 103, 100, 96, 92, 95, 91, 87, 88, 89, 86, 80, 76, 75, 75, + 74, 74, 74, 72, 70, 68, 66, 64, 62, 59, 57, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 31, 31, 32, 31, 30, 30, + 45, 45, 46, 47, 48, 49, 50, 50, 50, 51, 52, 52, 56, 57, 59, 61, + 65, 66, 68, 68, 69, 72, 74, 75, 77, 80, 80, 79, 79, 84, 90, 96, + 92, 92, 101, 101, 95, 98, 106, 111, 114, 105, 114, 113, 116, 116, 112, 112, + 111, 103, 107, 100, 98, 95, 96, 92, 89, 93, 88, 83, 79, 75, 77, 79, + 78, 76, 75, 74, 72, 69, 66, 64, 62, 59, 57, 56, 54, 53, 52, 52, + 52, 51, 51, 49, 48, 47, 46, 45, 44, 43, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 33, 33, 33, + 33, 33, 33, 31, 29, 29, 30, 32, 32, 32, 31, 32, 32, 32, 30, 30, + 45, 45, 46, 47, 48, 49, 50, 50, 50, 51, 52, 53, 57, 58, 60, 62, + 65, 67, 69, 70, 70, 73, 75, 77, 79, 82, 84, 83, 83, 85, 91, 98, + 97, 94, 101, 107, 99, 100, 109, 113, 119, 110, 117, 118, 120, 121, 115, 118, + 113, 108, 110, 103, 99, 100, 99, 93, 94, 96, 88, 81, 79, 77, 79, 81, + 80, 78, 76, 74, 71, 68, 65, 63, 61, 59, 57, 56, 55, 54, 52, 53, + 52, 52, 51, 49, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 41, 41, + 40, 39, 39, 39, 38, 37, 36, 36, 36, 36, 35, 35, 34, 34, 33, 33, + 33, 33, 32, 31, 30, 29, 31, 32, 32, 32, 32, 33, 33, 33, 31, 30, + 45, 45, 46, 47, 48, 49, 50, 50, 51, 52, 53, 55, 57, 59, 63, 65, + 67, 70, 71, 73, 74, 75, 78, 79, 82, 85, 89, 91, 89, 87, 92, 96, + 101, 98, 98, 110, 106, 102, 110, 114, 124, 117, 121, 124, 124, 126, 118, 124, + 115, 116, 112, 107, 103, 107, 102, 96, 102, 97, 86, 80, 81, 82, 81, 83, + 82, 80, 78, 73, 70, 66, 63, 62, 61, 59, 58, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 44, 43, 42, 41, 41, 41, + 40, 40, 39, 39, 38, 37, 37, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 31, 31, 31, 32, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 45, 45, 46, 47, 49, 49, 50, 50, 51, 52, 54, 56, 58, 61, 64, 67, + 70, 73, 75, 77, 78, 79, 82, 83, 84, 89, 93, 95, 93, 93, 94, 96, + 102, 105, 102, 108, 117, 109, 109, 118, 127, 123, 125, 128, 129, 130, 122, 129, + 119, 122, 116, 109, 113, 112, 104, 105, 106, 95, 85, 82, 83, 85, 85, 86, + 84, 80, 77, 73, 70, 66, 63, 63, 61, 59, 58, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 44, 43, 42, 41, 41, 41, + 41, 40, 39, 39, 38, 37, 37, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 31, 31, 31, 32, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 45, 46, 47, 48, 49, 50, 51, 50, 52, 53, 56, 58, 60, 63, 68, 70, + 73, 75, 79, 81, 81, 83, 86, 87, 88, 92, 97, 100, 100, 102, 99, 97, + 102, 112, 111, 107, 122, 118, 111, 121, 131, 132, 131, 134, 135, 135, 128, 135, + 124, 129, 121, 113, 120, 114, 109, 113, 106, 93, 86, 87, 89, 90, 89, 89, + 86, 80, 76, 72, 69, 67, 64, 63, 62, 60, 59, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 44, 44, 43, 42, 42, 42, + 41, 40, 40, 40, 39, 38, 37, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 31, 31, 31, 33, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 46, 47, 47, 48, 50, 50, 51, 51, 52, 54, 58, 60, 62, 66, 71, 74, + 75, 78, 82, 84, 85, 86, 88, 90, 89, 93, 97, 101, 105, 107, 106, 102, + 103, 115, 121, 112, 121, 128, 119, 123, 134, 141, 137, 141, 143, 142, 136, 141, + 131, 134, 122, 119, 122, 115, 119, 116, 101, 94, 92, 94, 95, 93, 91, 89, + 85, 79, 74, 71, 69, 67, 65, 64, 63, 61, 59, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 45, 44, 44, 43, 42, 43, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 32, 32, 32, 33, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 46, 47, 48, 49, 50, 51, 52, 51, 53, 55, 59, 61, 64, 68, 74, 77, + 78, 81, 86, 88, 89, 91, 92, 94, 95, 97, 100, 103, 108, 112, 113, 111, + 107, 114, 125, 123, 123, 135, 132, 127, 138, 150, 142, 149, 152, 150, 144, 148, + 140, 137, 125, 129, 124, 124, 127, 114, 100, 98, 101, 101, 99, 95, 90, 86, + 83, 78, 73, 70, 69, 67, 65, 64, 63, 61, 60, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 45, 45, 44, 43, 43, 43, + 42, 42, 41, 41, 40, 39, 38, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 32, 32, 32, 32, 33, 34, 33, 32, 32, 34, 34, 34, 32, 31, + 47, 47, 48, 49, 50, 50, 51, 51, 52, 55, 60, 62, 65, 70, 75, 79, + 80, 83, 89, 91, 91, 94, 96, 98, 100, 101, 103, 105, 109, 113, 117, 117, + 110, 111, 124, 134, 128, 137, 142, 130, 141, 156, 147, 155, 159, 155, 150, 153, + 148, 140, 128, 137, 128, 134, 131, 112, 102, 102, 107, 105, 102, 96, 89, 84, + 81, 77, 73, 70, 68, 67, 66, 65, 63, 61, 60, 57, 56, 54, 53, 53, + 53, 53, 52, 51, 50, 48, 47, 46, 46, 45, 45, 45, 44, 43, 43, 43, + 43, 42, 41, 41, 40, 39, 38, 37, 37, 36, 36, 36, 35, 34, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 34, 33, 31, 32, 34, 34, 34, 32, 31, + 47, 48, 48, 49, 48, 49, 51, 51, 52, 56, 61, 65, 69, 73, 77, 80, + 78, 83, 90, 88, 89, 95, 102, 99, 102, 104, 109, 111, 108, 114, 115, 112, + 114, 117, 125, 134, 135, 128, 150, 129, 142, 160, 157, 160, 164, 156, 156, 153, + 151, 142, 137, 139, 137, 139, 125, 112, 114, 115, 113, 111, 103, 95, 88, 83, + 81, 77, 74, 71, 69, 66, 65, 65, 64, 62, 61, 58, 57, 55, 54, 51, + 51, 50, 49, 48, 47, 46, 45, 45, 46, 45, 45, 44, 44, 43, 42, 43, + 42, 42, 41, 42, 42, 42, 41, 40, 39, 38, 38, 37, 36, 35, 35, 35, + 35, 34, 34, 35, 34, 34, 32, 31, 31, 30, 32, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 47, 48, 51, 51, 53, 57, 63, 66, 73, 77, 80, 82, + 79, 84, 87, 92, 97, 95, 97, 103, 104, 107, 109, 114, 116, 105, 114, 122, + 120, 127, 124, 128, 143, 129, 148, 145, 137, 167, 167, 173, 175, 166, 165, 156, + 153, 137, 148, 149, 149, 134, 115, 116, 125, 125, 116, 110, 102, 95, 88, 84, + 81, 78, 75, 72, 70, 67, 65, 64, 63, 61, 60, 58, 57, 55, 54, 52, + 51, 50, 50, 48, 47, 46, 46, 46, 46, 46, 46, 44, 44, 43, 42, 43, + 43, 42, 41, 42, 42, 42, 42, 41, 40, 39, 38, 37, 37, 36, 35, 35, + 35, 34, 34, 35, 34, 33, 31, 29, 29, 29, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 47, 49, 52, 52, 56, 59, 65, 69, 76, 81, 83, 88, + 90, 93, 92, 100, 101, 107, 110, 116, 113, 119, 124, 122, 121, 125, 122, 119, + 127, 145, 143, 134, 143, 144, 151, 167, 152, 177, 177, 183, 185, 179, 176, 163, + 165, 153, 163, 152, 159, 134, 121, 133, 130, 129, 119, 108, 100, 94, 89, 84, + 82, 79, 76, 73, 70, 68, 66, 64, 62, 61, 59, 57, 56, 54, 53, 53, + 53, 52, 51, 50, 49, 48, 47, 48, 47, 47, 47, 45, 45, 44, 43, 43, + 42, 41, 40, 42, 42, 42, 42, 41, 40, 39, 38, 38, 37, 36, 35, 34, + 33, 32, 32, 33, 32, 31, 30, 30, 30, 29, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 48, 49, 53, 54, 59, 63, 69, 72, 78, 83, 86, 91, + 94, 99, 105, 111, 111, 115, 108, 97, 90, 97, 113, 123, 131, 130, 129, 127, + 132, 148, 153, 144, 139, 156, 161, 166, 163, 177, 195, 195, 196, 192, 190, 178, + 163, 159, 168, 170, 150, 142, 138, 141, 134, 128, 119, 107, 98, 94, 90, 85, + 82, 79, 76, 72, 69, 67, 65, 64, 63, 62, 60, 58, 57, 55, 54, 55, + 55, 53, 53, 51, 51, 50, 49, 49, 48, 48, 47, 45, 45, 44, 44, 44, + 43, 42, 41, 43, 43, 43, 42, 42, 41, 40, 40, 39, 39, 38, 37, 36, + 35, 34, 33, 33, 32, 32, 31, 30, 30, 30, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 48, 50, 54, 56, 62, 66, 72, 75, 79, 85, 88, 95, + 99, 107, 116, 111, 97, 81, 68, 52, 44, 49, 67, 77, 98, 128, 139, 135, + 138, 128, 139, 144, 140, 156, 171, 178, 179, 176, 202, 201, 202, 200, 198, 185, + 164, 176, 174, 176, 151, 154, 156, 151, 138, 126, 114, 107, 99, 94, 91, 86, + 83, 80, 77, 72, 69, 66, 64, 66, 66, 64, 62, 61, 59, 57, 56, 57, + 56, 55, 55, 53, 52, 51, 51, 50, 49, 48, 47, 45, 45, 44, 44, 44, + 44, 43, 42, 43, 43, 43, 43, 44, 43, 42, 42, 42, 41, 40, 39, 38, + 38, 37, 36, 35, 34, 33, 32, 30, 31, 30, 31, 33, 33, 34, 32, 31, + 47, 48, 48, 49, 48, 51, 55, 57, 64, 69, 75, 77, 82, 88, 92, 101, + 112, 114, 102, 79, 53, 37, 31, 29, 25, 32, 47, 48, 53, 73, 112, 141, + 143, 66, 57, 78, 134, 156, 175, 177, 107, 84, 93, 97, 103, 99, 101, 90, + 89, 103, 82, 67, 76, 82, 89, 123, 130, 124, 111, 107, 101, 95, 90, 86, + 84, 80, 77, 74, 72, 69, 67, 67, 66, 65, 64, 62, 60, 58, 57, 57, + 57, 56, 56, 54, 53, 52, 52, 52, 51, 49, 47, 46, 46, 45, 44, 45, + 44, 43, 43, 44, 44, 44, 44, 45, 44, 43, 43, 43, 42, 41, 41, 40, + 40, 39, 38, 36, 35, 34, 33, 31, 31, 31, 32, 33, 33, 34, 32, 31, + 46, 48, 48, 50, 49, 52, 56, 59, 66, 71, 75, 78, 84, 91, 98, 108, + 114, 99, 60, 34, 35, 35, 32, 36, 37, 48, 59, 54, 51, 48, 64, 93, + 117, 34, 44, 50, 117, 163, 177, 199, 90, 66, 58, 73, 77, 76, 80, 78, + 75, 53, 49, 61, 66, 88, 92, 89, 113, 122, 112, 109, 102, 96, 91, 87, + 84, 81, 78, 77, 75, 72, 70, 69, 68, 66, 65, 63, 62, 60, 59, 59, + 58, 57, 57, 55, 54, 53, 53, 53, 52, 50, 48, 47, 46, 45, 44, 45, + 44, 43, 43, 44, 44, 44, 44, 45, 45, 44, 43, 44, 43, 42, 42, 43, + 42, 40, 39, 38, 37, 36, 34, 32, 32, 31, 32, 32, 33, 33, 32, 31, + 46, 48, 49, 50, 50, 53, 56, 61, 68, 73, 75, 80, 84, 98, 106, 114, + 94, 45, 36, 39, 41, 48, 58, 59, 58, 54, 49, 46, 51, 54, 54, 55, + 74, 47, 48, 38, 95, 178, 187, 198, 97, 75, 74, 88, 91, 95, 101, 84, + 64, 51, 60, 92, 101, 111, 106, 59, 110, 123, 115, 107, 101, 95, 91, 86, + 84, 81, 78, 77, 75, 73, 72, 72, 70, 69, 68, 65, 64, 62, 61, 62, + 62, 61, 60, 59, 58, 56, 55, 55, 54, 52, 51, 47, 46, 44, 43, 44, + 44, 44, 44, 45, 45, 46, 47, 47, 47, 47, 47, 47, 46, 45, 45, 44, + 43, 41, 40, 39, 39, 37, 35, 34, 33, 30, 31, 31, 30, 31, 32, 32, + 46, 48, 49, 51, 51, 55, 58, 63, 70, 75, 77, 82, 90, 104, 112, 99, + 56, 38, 41, 49, 58, 60, 53, 45, 55, 62, 61, 53, 49, 50, 47, 55, + 60, 69, 71, 49, 95, 178, 193, 201, 108, 73, 82, 91, 104, 94, 114, 73, + 68, 67, 83, 117, 130, 136, 121, 60, 108, 123, 114, 107, 101, 96, 93, 90, + 88, 85, 83, 81, 79, 77, 76, 76, 75, 73, 72, 68, 67, 65, 63, 63, + 63, 62, 61, 61, 60, 57, 56, 57, 55, 53, 52, 48, 47, 45, 44, 45, + 45, 45, 46, 49, 49, 51, 51, 50, 50, 50, 51, 51, 50, 49, 49, 49, + 47, 45, 44, 43, 42, 40, 37, 36, 35, 33, 33, 32, 31, 31, 32, 32, + 46, 48, 49, 51, 52, 56, 60, 66, 73, 78, 81, 88, 96, 108, 109, 69, + 49, 48, 48, 51, 52, 44, 39, 65, 88, 101, 103, 99, 76, 58, 46, 52, + 61, 73, 68, 51, 98, 180, 195, 210, 154, 108, 92, 84, 87, 75, 57, 23, + 48, 83, 111, 137, 127, 104, 92, 69, 109, 122, 114, 108, 103, 100, 98, 95, + 93, 90, 88, 85, 84, 82, 80, 80, 79, 77, 76, 73, 71, 69, 68, 67, + 66, 65, 65, 64, 63, 61, 60, 60, 58, 56, 54, 50, 49, 47, 46, 48, + 48, 49, 50, 52, 53, 55, 55, 54, 54, 54, 55, 55, 54, 53, 53, 54, + 52, 50, 48, 46, 45, 42, 40, 39, 37, 35, 34, 33, 31, 32, 31, 31, + 47, 49, 50, 52, 54, 58, 62, 69, 76, 82, 86, 94, 104, 113, 74, 33, + 36, 38, 36, 41, 41, 31, 59, 102, 117, 125, 129, 130, 126, 103, 55, 55, + 67, 87, 68, 46, 97, 176, 192, 222, 219, 181, 144, 95, 85, 69, 18, 22, + 81, 118, 136, 125, 74, 88, 99, 96, 118, 121, 116, 112, 109, 105, 103, 100, + 97, 95, 92, 89, 88, 86, 84, 82, 81, 79, 78, 75, 74, 72, 71, 71, + 70, 69, 69, 68, 67, 65, 64, 65, 62, 59, 57, 53, 51, 50, 49, 49, + 50, 52, 52, 53, 55, 57, 58, 57, 57, 57, 57, 58, 57, 56, 56, 57, + 55, 53, 51, 48, 47, 43, 41, 41, 38, 35, 35, 34, 32, 32, 31, 31, + 48, 50, 51, 53, 55, 60, 65, 72, 81, 87, 92, 99, 114, 104, 24, 25, + 36, 43, 50, 52, 38, 55, 105, 115, 120, 119, 121, 124, 134, 137, 101, 68, + 72, 78, 68, 48, 92, 173, 190, 214, 235, 237, 238, 177, 115, 56, 76, 115, + 133, 136, 140, 78, 68, 129, 137, 135, 134, 128, 123, 121, 117, 112, 110, 106, + 103, 100, 97, 94, 92, 91, 89, 87, 85, 83, 82, 80, 79, 77, 76, 76, + 76, 75, 74, 74, 73, 71, 69, 68, 67, 63, 60, 55, 54, 52, 52, 52, + 54, 56, 56, 56, 59, 61, 63, 63, 63, 63, 63, 65, 64, 63, 62, 61, + 60, 58, 56, 53, 52, 48, 44, 43, 40, 36, 36, 35, 33, 32, 31, 30, + 48, 50, 51, 53, 56, 61, 66, 73, 82, 89, 94, 105, 113, 70, 23, 52, + 60, 61, 60, 47, 43, 90, 116, 116, 120, 118, 117, 118, 126, 135, 137, 88, + 71, 74, 80, 63, 102, 180, 194, 215, 242, 249, 253, 226, 95, 58, 104, 134, + 134, 128, 125, 57, 112, 159, 156, 150, 146, 140, 132, 127, 123, 117, 114, 110, + 108, 104, 102, 99, 97, 95, 94, 91, 89, 88, 86, 83, 82, 80, 79, 79, + 79, 78, 77, 77, 75, 73, 72, 70, 67, 63, 60, 56, 54, 52, 53, 54, + 56, 57, 58, 60, 62, 65, 67, 69, 69, 69, 70, 71, 71, 69, 68, 66, + 64, 63, 62, 60, 57, 53, 49, 46, 43, 39, 37, 36, 33, 32, 31, 30, + 47, 49, 51, 54, 57, 63, 67, 75, 82, 89, 102, 111, 105, 49, 39, 65, + 64, 59, 47, 27, 61, 113, 117, 118, 122, 122, 122, 123, 133, 137, 144, 119, + 68, 86, 96, 78, 103, 188, 205, 224, 244, 249, 251, 237, 55, 99, 133, 137, + 134, 128, 113, 63, 139, 173, 169, 161, 156, 147, 136, 130, 127, 122, 117, 115, + 110, 105, 103, 102, 99, 99, 97, 89, 87, 87, 87, 86, 85, 82, 80, 81, + 81, 83, 80, 80, 76, 74, 73, 73, 68, 66, 63, 59, 57, 55, 56, 58, + 57, 58, 58, 61, 65, 71, 71, 71, 73, 75, 76, 76, 74, 73, 74, 71, + 67, 65, 67, 64, 63, 54, 53, 48, 45, 40, 37, 36, 32, 32, 31, 30, + 47, 48, 51, 54, 57, 63, 68, 77, 82, 92, 107, 119, 95, 37, 40, 63, + 55, 52, 42, 28, 83, 120, 120, 116, 121, 122, 124, 128, 134, 140, 144, 147, + 85, 82, 91, 78, 97, 191, 215, 234, 247, 250, 251, 246, 92, 126, 146, 135, + 121, 122, 116, 71, 153, 175, 168, 160, 151, 141, 132, 126, 123, 118, 113, 113, + 109, 102, 99, 99, 96, 98, 97, 83, 81, 84, 86, 87, 87, 84, 83, 87, + 85, 87, 84, 79, 82, 81, 75, 70, 71, 70, 64, 63, 61, 58, 60, 63, + 61, 59, 61, 65, 68, 75, 75, 74, 78, 82, 84, 83, 79, 75, 73, 73, + 73, 73, 70, 67, 61, 61, 59, 50, 46, 41, 37, 35, 32, 32, 32, 31, + 47, 48, 51, 54, 58, 63, 70, 79, 85, 98, 107, 115, 55, 10, 29, 56, + 52, 53, 42, 42, 103, 124, 117, 113, 116, 118, 121, 123, 129, 135, 141, 150, + 100, 83, 106, 81, 98, 194, 215, 239, 253, 252, 251, 245, 121, 124, 141, 132, + 126, 134, 124, 68, 146, 157, 144, 139, 134, 126, 121, 116, 113, 109, 106, 109, + 106, 101, 98, 95, 94, 98, 97, 89, 89, 92, 94, 91, 91, 89, 88, 88, + 84, 84, 85, 85, 81, 80, 84, 74, 76, 72, 67, 66, 63, 62, 63, 67, + 66, 64, 66, 69, 70, 76, 79, 78, 81, 84, 86, 84, 81, 77, 76, 75, + 76, 76, 70, 72, 66, 63, 58, 52, 48, 43, 38, 36, 33, 32, 32, 31, + 47, 48, 51, 54, 59, 65, 72, 80, 88, 99, 111, 88, 8, 9, 32, 52, + 59, 61, 38, 60, 116, 121, 111, 107, 110, 112, 115, 116, 121, 127, 134, 144, + 123, 94, 90, 55, 96, 189, 209, 234, 249, 250, 248, 247, 112, 87, 70, 96, + 120, 122, 121, 74, 151, 164, 156, 145, 134, 127, 121, 118, 117, 114, 111, 113, + 111, 107, 104, 101, 102, 103, 102, 96, 96, 98, 99, 100, 99, 96, 92, 87, + 87, 89, 90, 93, 90, 88, 89, 90, 83, 74, 76, 69, 67, 64, 65, 71, + 70, 69, 70, 72, 79, 84, 88, 86, 89, 92, 93, 93, 85, 82, 83, 79, + 74, 78, 76, 70, 78, 63, 60, 57, 51, 46, 40, 38, 34, 33, 32, 31, + 47, 48, 51, 54, 60, 66, 74, 82, 88, 98, 114, 67, 28, 44, 51, 64, + 60, 62, 34, 79, 119, 117, 107, 106, 107, 108, 110, 112, 119, 125, 131, 139, + 139, 95, 83, 53, 87, 178, 200, 224, 243, 251, 254, 250, 115, 86, 91, 85, + 97, 130, 130, 70, 146, 161, 157, 146, 136, 132, 130, 125, 123, 121, 120, 121, + 120, 116, 111, 109, 110, 109, 108, 112, 114, 113, 112, 112, 107, 102, 97, 94, + 96, 95, 94, 95, 97, 97, 94, 91, 89, 85, 79, 73, 70, 67, 68, 74, + 72, 74, 76, 80, 89, 91, 94, 93, 96, 99, 99, 98, 98, 92, 86, 81, + 83, 84, 81, 79, 72, 76, 67, 60, 54, 49, 42, 40, 35, 33, 32, 31, + 47, 48, 51, 54, 61, 68, 75, 84, 89, 100, 114, 59, 55, 60, 60, 73, + 65, 56, 33, 95, 119, 114, 106, 105, 105, 105, 108, 111, 117, 122, 128, 134, + 135, 62, 63, 57, 81, 172, 200, 228, 251, 254, 254, 247, 132, 117, 140, 119, + 89, 97, 105, 74, 149, 158, 145, 134, 126, 126, 127, 126, 126, 126, 124, 127, + 128, 124, 117, 116, 118, 117, 123, 126, 126, 123, 119, 118, 114, 109, 105, 100, + 101, 100, 105, 106, 92, 88, 98, 99, 93, 94, 83, 79, 75, 71, 72, 77, + 77, 79, 82, 86, 93, 96, 106, 109, 114, 117, 115, 103, 99, 98, 95, 91, + 91, 90, 99, 104, 81, 81, 69, 64, 57, 51, 44, 41, 36, 34, 32, 31, + 47, 48, 51, 54, 61, 68, 76, 86, 90, 106, 112, 62, 52, 55, 65, 78, + 79, 52, 34, 100, 117, 109, 102, 102, 104, 104, 107, 109, 112, 117, 120, 129, + 129, 48, 74, 80, 81, 174, 212, 234, 252, 254, 254, 250, 143, 150, 135, 138, + 125, 101, 76, 72, 153, 170, 163, 143, 130, 128, 128, 129, 131, 131, 129, 133, + 135, 129, 121, 125, 128, 130, 142, 161, 161, 156, 149, 124, 118, 115, 114, 112, + 112, 117, 138, 164, 166, 153, 134, 127, 96, 95, 92, 86, 80, 77, 77, 80, + 81, 84, 89, 95, 102, 114, 140, 156, 163, 167, 167, 145, 102, 92, 103, 102, + 99, 116, 144, 110, 118, 81, 76, 66, 59, 52, 45, 42, 37, 34, 32, 31, + 47, 49, 53, 56, 62, 68, 76, 86, 96, 104, 97, 47, 53, 71, 79, 85, + 82, 47, 45, 107, 117, 107, 101, 100, 100, 98, 99, 101, 106, 110, 116, 124, + 127, 114, 117, 93, 94, 184, 210, 231, 252, 248, 253, 247, 138, 139, 133, 146, + 142, 147, 140, 70, 151, 170, 160, 158, 153, 147, 140, 139, 135, 138, 150, 159, + 156, 148, 101, 132, 142, 159, 162, 138, 122, 136, 105, 108, 99, 115, 122, 124, + 129, 162, 166, 177, 194, 211, 218, 186, 130, 92, 95, 90, 84, 82, 83, 79, + 85, 94, 97, 103, 120, 126, 138, 148, 141, 142, 124, 70, 35, 100, 127, 113, + 124, 162, 139, 162, 163, 98, 72, 70, 60, 55, 46, 42, 36, 33, 32, 31, + 47, 49, 53, 57, 63, 69, 77, 86, 92, 109, 96, 59, 58, 83, 71, 63, + 42, 29, 47, 107, 110, 102, 97, 97, 95, 94, 95, 98, 103, 108, 112, 120, + 132, 133, 106, 90, 121, 184, 207, 232, 237, 240, 249, 248, 148, 133, 132, 118, + 142, 148, 141, 72, 138, 162, 159, 153, 151, 148, 148, 139, 171, 155, 153, 164, + 155, 152, 91, 130, 158, 189, 182, 136, 130, 116, 106, 109, 101, 90, 122, 135, + 166, 198, 181, 177, 206, 216, 214, 211, 177, 106, 90, 94, 89, 85, 84, 87, + 92, 96, 108, 134, 148, 156, 132, 123, 121, 131, 74, 77, 126, 180, 193, 134, + 154, 170, 143, 177, 164, 126, 60, 67, 63, 55, 48, 43, 38, 34, 32, 31, + 47, 49, 53, 57, 65, 71, 79, 88, 97, 109, 73, 52, 77, 90, 77, 74, + 59, 51, 57, 106, 104, 97, 93, 93, 93, 91, 92, 95, 100, 107, 113, 117, + 132, 155, 152, 143, 151, 185, 204, 228, 218, 234, 241, 246, 132, 117, 148, 131, + 133, 121, 126, 70, 131, 153, 154, 151, 154, 147, 152, 145, 174, 159, 160, 158, + 162, 149, 82, 150, 186, 195, 178, 187, 180, 192, 202, 198, 175, 121, 109, 155, + 168, 152, 178, 186, 208, 212, 212, 168, 156, 179, 86, 96, 96, 88, 87, 91, + 96, 103, 132, 180, 179, 180, 152, 128, 127, 128, 132, 178, 197, 200, 198, 179, + 162, 157, 151, 165, 140, 145, 53, 63, 65, 56, 50, 44, 39, 35, 34, 32, + 47, 49, 53, 57, 66, 73, 80, 90, 98, 108, 67, 70, 100, 83, 84, 75, + 67, 64, 58, 105, 101, 95, 92, 92, 92, 91, 93, 95, 99, 108, 116, 125, + 136, 146, 151, 157, 164, 183, 202, 217, 207, 232, 230, 241, 123, 118, 126, 114, + 144, 161, 147, 70, 135, 147, 145, 148, 149, 135, 147, 163, 166, 158, 167, 181, + 160, 167, 116, 181, 191, 196, 175, 186, 149, 203, 203, 205, 210, 182, 110, 189, + 182, 172, 189, 196, 212, 214, 195, 145, 175, 231, 104, 91, 102, 94, 92, 93, + 99, 120, 160, 187, 187, 184, 185, 171, 107, 81, 150, 198, 185, 164, 179, 157, + 150, 143, 134, 158, 138, 142, 42, 61, 66, 56, 50, 45, 39, 36, 34, 32, + 47, 49, 53, 57, 66, 72, 80, 89, 94, 109, 82, 93, 91, 76, 92, 70, + 84, 71, 58, 101, 100, 95, 93, 92, 92, 91, 94, 96, 100, 110, 119, 124, + 129, 141, 153, 161, 163, 178, 196, 200, 202, 227, 220, 233, 129, 142, 138, 115, + 133, 141, 143, 77, 140, 148, 139, 141, 139, 128, 144, 165, 161, 165, 176, 193, + 147, 160, 152, 199, 201, 185, 171, 187, 146, 198, 187, 203, 185, 190, 161, 212, + 194, 200, 219, 207, 201, 197, 176, 166, 234, 212, 111, 79, 105, 101, 98, 98, + 108, 143, 175, 187, 204, 188, 196, 137, 56, 74, 124, 179, 164, 131, 161, 151, + 166, 90, 89, 151, 161, 127, 40, 63, 65, 56, 49, 44, 39, 35, 34, 33, + 47, 49, 53, 57, 65, 71, 79, 88, 92, 107, 85, 79, 65, 75, 88, 58, + 77, 57, 67, 107, 100, 95, 93, 93, 90, 90, 93, 98, 106, 110, 116, 118, + 122, 136, 147, 152, 156, 171, 185, 184, 196, 213, 213, 230, 150, 139, 139, 131, + 148, 147, 145, 73, 135, 151, 141, 135, 136, 129, 137, 160, 157, 177, 183, 192, + 173, 153, 173, 193, 162, 119, 131, 190, 181, 205, 188, 169, 175, 202, 195, 199, + 192, 153, 157, 197, 201, 207, 198, 210, 197, 129, 131, 63, 106, 106, 102, 103, + 117, 156, 155, 140, 179, 175, 173, 61, 65, 110, 126, 141, 129, 130, 141, 134, + 165, 111, 80, 139, 127, 64, 37, 67, 62, 55, 47, 43, 37, 34, 33, 33, + 48, 49, 54, 58, 63, 70, 79, 88, 92, 105, 80, 69, 68, 77, 67, 54, + 107, 66, 74, 103, 100, 95, 93, 92, 89, 90, 94, 99, 107, 110, 113, 119, + 128, 137, 147, 153, 157, 164, 174, 177, 195, 197, 206, 215, 166, 155, 157, 148, + 147, 154, 153, 68, 128, 152, 146, 134, 132, 124, 120, 163, 165, 186, 181, 185, + 182, 157, 172, 148, 70, 74, 99, 169, 184, 191, 175, 182, 186, 189, 190, 189, + 102, 62, 83, 128, 181, 193, 159, 189, 154, 132, 124, 52, 105, 106, 102, 105, + 120, 153, 149, 157, 168, 147, 124, 43, 96, 129, 135, 137, 131, 152, 120, 127, + 143, 119, 75, 92, 69, 42, 63, 69, 60, 53, 45, 41, 35, 32, 32, 32, + 49, 50, 54, 58, 62, 70, 78, 87, 96, 103, 71, 75, 96, 92, 76, 90, + 116, 67, 79, 109, 103, 97, 94, 92, 91, 93, 97, 100, 101, 106, 113, 121, + 130, 138, 145, 151, 156, 156, 162, 177, 197, 178, 198, 206, 155, 163, 169, 161, + 160, 170, 161, 70, 127, 146, 145, 140, 132, 125, 125, 142, 165, 182, 180, 198, + 188, 169, 175, 79, 61, 111, 133, 151, 189, 203, 203, 199, 170, 164, 171, 126, + 47, 94, 118, 118, 131, 122, 94, 137, 151, 169, 159, 43, 104, 103, 102, 106, + 126, 155, 181, 184, 173, 141, 110, 50, 112, 128, 129, 136, 149, 162, 112, 133, + 106, 111, 61, 93, 82, 69, 72, 69, 59, 51, 43, 39, 33, 30, 30, 31, + 49, 50, 54, 58, 62, 69, 77, 87, 94, 107, 91, 96, 111, 109, 101, 120, + 113, 65, 78, 110, 106, 100, 97, 96, 95, 94, 95, 97, 99, 105, 112, 121, + 130, 134, 142, 149, 148, 147, 155, 174, 187, 171, 191, 198, 157, 160, 146, 165, + 172, 171, 170, 73, 126, 143, 142, 144, 136, 126, 131, 153, 178, 182, 175, 194, + 195, 184, 132, 51, 103, 128, 144, 151, 205, 220, 217, 218, 180, 197, 183, 63, + 75, 125, 130, 133, 160, 174, 177, 195, 182, 199, 175, 39, 102, 103, 103, 108, + 144, 174, 178, 172, 175, 155, 120, 48, 122, 124, 131, 140, 148, 147, 104, 128, + 131, 127, 48, 86, 90, 80, 74, 67, 58, 50, 42, 38, 33, 30, 30, 31, + 48, 50, 53, 57, 61, 69, 76, 86, 91, 110, 110, 114, 111, 110, 108, 123, + 97, 57, 76, 112, 108, 103, 100, 98, 95, 93, 92, 94, 98, 104, 111, 118, + 126, 132, 138, 143, 139, 140, 152, 172, 174, 165, 186, 190, 161, 160, 174, 174, + 176, 169, 181, 71, 124, 141, 139, 141, 135, 128, 133, 156, 180, 176, 183, 212, + 210, 161, 71, 70, 126, 130, 139, 154, 202, 213, 223, 221, 183, 196, 183, 48, + 106, 135, 132, 129, 177, 212, 210, 217, 211, 194, 166, 36, 102, 105, 106, 116, + 152, 167, 158, 143, 170, 164, 128, 56, 121, 129, 134, 141, 130, 128, 124, 137, + 147, 133, 43, 82, 93, 79, 71, 65, 56, 49, 42, 37, 32, 30, 30, 31, + 47, 49, 53, 57, 61, 68, 76, 86, 96, 108, 105, 100, 97, 99, 100, 104, + 95, 64, 78, 115, 111, 105, 101, 98, 90, 90, 91, 93, 98, 104, 111, 116, + 123, 131, 133, 133, 133, 138, 151, 168, 162, 163, 181, 192, 156, 167, 189, 163, + 189, 186, 179, 67, 123, 139, 136, 135, 133, 130, 133, 149, 169, 174, 199, 210, + 178, 80, 39, 91, 130, 143, 132, 151, 197, 216, 223, 199, 168, 181, 146, 57, + 123, 135, 139, 145, 158, 182, 166, 189, 189, 166, 146, 35, 103, 108, 107, 115, + 143, 153, 167, 161, 172, 153, 117, 59, 122, 127, 133, 136, 134, 146, 154, 150, + 137, 110, 42, 80, 88, 75, 68, 63, 54, 47, 40, 37, 33, 31, 30, 30, + 47, 49, 52, 56, 60, 67, 75, 85, 94, 108, 106, 101, 100, 100, 111, 108, + 113, 81, 81, 117, 114, 106, 100, 96, 89, 90, 91, 95, 99, 105, 112, 116, + 121, 129, 127, 127, 131, 139, 151, 162, 153, 162, 174, 187, 136, 157, 145, 150, + 186, 165, 160, 73, 124, 138, 134, 133, 132, 131, 136, 155, 176, 189, 201, 171, + 84, 99, 63, 100, 136, 137, 136, 142, 161, 186, 197, 160, 148, 190, 130, 68, + 133, 134, 136, 137, 153, 182, 159, 203, 175, 164, 134, 37, 106, 110, 109, 115, + 129, 141, 166, 155, 158, 146, 120, 54, 127, 123, 134, 141, 149, 150, 142, 138, + 122, 121, 43, 80, 86, 75, 69, 60, 52, 46, 40, 36, 33, 31, 30, 30, + 47, 49, 52, 56, 60, 67, 75, 85, 91, 108, 106, 101, 98, 94, 119, 118, + 121, 88, 77, 118, 114, 105, 98, 96, 94, 93, 93, 96, 100, 106, 113, 117, + 120, 124, 123, 126, 130, 140, 150, 156, 147, 161, 167, 179, 138, 163, 163, 154, + 153, 130, 137, 66, 125, 138, 134, 132, 128, 127, 136, 155, 181, 198, 180, 129, + 119, 203, 75, 107, 134, 131, 137, 141, 156, 180, 169, 146, 152, 194, 133, 74, + 136, 129, 133, 139, 142, 170, 170, 193, 164, 155, 119, 39, 109, 112, 109, 118, + 126, 147, 167, 153, 165, 153, 130, 63, 122, 129, 135, 144, 149, 135, 129, 133, + 125, 103, 38, 79, 85, 73, 65, 59, 51, 45, 40, 36, 32, 31, 30, 30, + 48, 49, 51, 54, 60, 66, 74, 84, 93, 108, 103, 89, 88, 96, 122, 124, + 124, 104, 69, 118, 114, 104, 98, 96, 95, 94, 96, 98, 102, 106, 115, 118, + 119, 118, 119, 128, 130, 142, 152, 148, 144, 159, 162, 175, 176, 181, 188, 176, + 160, 155, 156, 61, 124, 136, 133, 133, 126, 122, 133, 156, 187, 170, 124, 143, + 216, 235, 74, 102, 127, 128, 133, 144, 181, 180, 149, 154, 170, 191, 135, 74, + 131, 127, 129, 132, 135, 159, 152, 175, 152, 137, 113, 39, 110, 114, 111, 117, + 130, 159, 170, 160, 176, 166, 146, 75, 115, 132, 135, 142, 144, 119, 135, 142, + 140, 75, 45, 81, 83, 71, 62, 58, 49, 44, 39, 35, 33, 32, 30, 30, + 49, 49, 51, 53, 59, 66, 73, 83, 92, 108, 104, 89, 94, 109, 118, 130, + 126, 107, 69, 114, 113, 104, 100, 99, 97, 96, 98, 100, 103, 108, 115, 117, + 115, 115, 123, 132, 136, 146, 145, 141, 144, 158, 159, 177, 190, 170, 180, 186, + 187, 195, 160, 64, 123, 136, 133, 133, 126, 122, 130, 146, 161, 124, 174, 220, + 237, 194, 56, 101, 124, 124, 131, 142, 171, 162, 160, 183, 185, 184, 100, 73, + 128, 127, 125, 134, 145, 164, 171, 169, 140, 135, 134, 40, 111, 116, 112, 117, + 127, 147, 151, 149, 153, 146, 132, 76, 102, 137, 149, 146, 145, 125, 142, 143, + 127, 50, 48, 82, 80, 69, 62, 57, 49, 43, 37, 35, 34, 32, 30, 30, + 48, 48, 50, 53, 59, 65, 72, 82, 90, 105, 107, 95, 104, 120, 110, 139, + 141, 122, 68, 107, 114, 106, 103, 104, 100, 100, 101, 103, 105, 111, 116, 114, + 109, 116, 128, 131, 145, 151, 142, 139, 147, 156, 153, 173, 143, 166, 130, 171, + 191, 156, 124, 69, 123, 138, 133, 131, 127, 124, 130, 132, 116, 184, 239, 232, + 201, 166, 58, 99, 124, 124, 131, 142, 163, 188, 173, 194, 188, 182, 98, 73, + 128, 126, 125, 133, 157, 159, 182, 171, 144, 144, 149, 41, 113, 118, 115, 118, + 121, 126, 124, 140, 135, 134, 132, 116, 105, 128, 141, 136, 140, 131, 125, 120, + 74, 29, 65, 83, 76, 68, 62, 56, 48, 43, 37, 36, 34, 32, 30, 30, + 47, 48, 49, 52, 57, 64, 71, 81, 90, 105, 112, 106, 107, 125, 116, 152, + 158, 138, 69, 103, 118, 110, 104, 105, 102, 101, 103, 105, 108, 114, 116, 110, + 109, 120, 127, 139, 143, 144, 144, 138, 149, 153, 150, 167, 70, 83, 126, 190, + 158, 100, 142, 72, 122, 139, 133, 130, 127, 125, 129, 126, 181, 244, 236, 208, + 205, 194, 71, 98, 125, 125, 131, 135, 148, 205, 166, 187, 176, 176, 108, 72, + 127, 126, 126, 128, 160, 155, 168, 169, 156, 152, 143, 42, 114, 120, 115, 119, + 121, 122, 118, 131, 131, 142, 144, 146, 125, 125, 128, 111, 118, 125, 113, 90, + 38, 44, 82, 83, 72, 67, 61, 54, 47, 42, 36, 35, 34, 31, 30, 30, + 47, 47, 49, 52, 56, 62, 69, 80, 91, 104, 116, 115, 116, 132, 127, 158, + 148, 118, 76, 90, 118, 114, 106, 106, 104, 104, 106, 108, 112, 116, 117, 111, + 114, 119, 135, 168, 152, 133, 139, 134, 150, 149, 147, 166, 133, 115, 130, 131, + 78, 127, 186, 72, 121, 139, 134, 131, 127, 124, 130, 156, 225, 213, 202, 208, + 200, 215, 68, 100, 125, 126, 132, 131, 156, 196, 152, 185, 180, 182, 112, 71, + 127, 127, 126, 131, 158, 164, 167, 171, 160, 156, 147, 41, 114, 121, 116, 118, + 124, 128, 127, 123, 124, 133, 136, 153, 136, 123, 120, 109, 127, 121, 91, 57, + 39, 72, 85, 81, 70, 66, 59, 52, 46, 41, 37, 36, 33, 31, 30, 30, + 47, 47, 49, 51, 55, 62, 69, 79, 89, 100, 117, 120, 123, 138, 133, 158, + 136, 109, 97, 76, 114, 117, 108, 109, 109, 109, 111, 113, 115, 116, 116, 114, + 117, 122, 150, 192, 173, 129, 124, 135, 150, 144, 146, 168, 167, 193, 160, 124, + 121, 209, 192, 65, 121, 137, 135, 133, 127, 123, 130, 167, 217, 171, 163, 191, + 173, 218, 67, 101, 126, 126, 132, 141, 187, 190, 143, 168, 176, 179, 120, 72, + 127, 127, 127, 136, 146, 164, 173, 171, 158, 154, 151, 40, 113, 120, 115, 115, + 123, 130, 136, 128, 125, 129, 138, 158, 126, 108, 113, 126, 140, 96, 53, 46, + 68, 91, 85, 79, 69, 66, 58, 51, 45, 40, 36, 35, 33, 31, 30, 30, + 46, 47, 49, 51, 55, 62, 69, 79, 87, 97, 113, 118, 117, 137, 134, 159, + 153, 152, 137, 82, 112, 119, 111, 111, 113, 113, 114, 116, 115, 113, 114, 116, + 120, 134, 160, 186, 181, 121, 102, 133, 147, 140, 148, 160, 190, 195, 195, 200, + 211, 228, 210, 73, 122, 136, 135, 134, 127, 124, 133, 164, 190, 193, 208, 165, + 215, 220, 66, 103, 129, 128, 132, 142, 167, 165, 151, 158, 146, 133, 77, 71, + 127, 127, 126, 135, 124, 143, 167, 167, 160, 152, 144, 40, 112, 120, 115, 113, + 122, 130, 140, 134, 133, 140, 149, 135, 99, 105, 125, 122, 89, 49, 56, 81, + 103, 91, 85, 77, 69, 68, 57, 49, 44, 40, 35, 35, 33, 30, 30, 30, + 45, 49, 50, 53, 56, 62, 69, 79, 85, 93, 101, 111, 122, 135, 132, 150, + 165, 152, 150, 97, 107, 121, 114, 109, 114, 112, 117, 113, 117, 112, 115, 117, + 129, 149, 159, 150, 180, 88, 78, 132, 141, 138, 146, 159, 194, 191, 205, 214, + 219, 231, 218, 74, 120, 135, 132, 130, 128, 132, 139, 162, 179, 193, 226, 215, + 200, 186, 69, 107, 135, 129, 129, 133, 123, 143, 174, 189, 195, 172, 103, 69, + 122, 127, 123, 134, 106, 97, 113, 143, 156, 155, 139, 44, 119, 122, 117, 115, + 126, 136, 137, 118, 143, 143, 112, 67, 69, 72, 61, 60, 65, 78, 96, 104, + 101, 91, 83, 77, 73, 69, 60, 48, 41, 38, 34, 33, 30, 29, 30, 30, + 45, 48, 50, 53, 56, 62, 69, 77, 83, 89, 95, 107, 114, 121, 135, 144, + 151, 137, 141, 134, 93, 120, 115, 115, 117, 117, 119, 114, 113, 111, 114, 125, + 143, 182, 165, 175, 148, 51, 91, 132, 142, 141, 150, 161, 194, 178, 192, 213, + 195, 220, 189, 75, 118, 136, 135, 134, 129, 129, 139, 165, 198, 204, 191, 183, + 159, 157, 56, 108, 135, 130, 125, 134, 153, 189, 189, 190, 195, 175, 104, 64, + 121, 127, 126, 134, 142, 144, 120, 114, 127, 130, 120, 42, 113, 123, 115, 121, + 129, 130, 121, 127, 146, 138, 65, 57, 108, 115, 110, 113, 113, 112, 116, 114, + 103, 90, 84, 77, 73, 68, 59, 48, 42, 37, 33, 32, 29, 28, 30, 30, + 46, 48, 49, 52, 55, 60, 66, 73, 79, 86, 91, 101, 108, 116, 137, 130, + 126, 126, 158, 151, 112, 107, 126, 115, 119, 116, 117, 119, 115, 113, 114, 132, + 173, 191, 173, 173, 99, 55, 111, 138, 144, 141, 152, 169, 187, 180, 200, 199, + 185, 201, 153, 90, 109, 142, 133, 129, 130, 132, 136, 166, 202, 202, 164, 120, + 150, 152, 56, 111, 134, 128, 126, 141, 178, 200, 171, 181, 181, 166, 98, 69, + 120, 119, 125, 128, 147, 155, 160, 154, 126, 115, 120, 39, 115, 119, 115, 117, + 126, 122, 114, 118, 130, 133, 91, 91, 145, 142, 143, 141, 138, 129, 124, 120, + 108, 94, 87, 79, 73, 67, 59, 50, 43, 38, 33, 32, 29, 28, 30, 30, + 46, 48, 48, 50, 54, 58, 63, 69, 77, 83, 89, 98, 109, 126, 153, 155, + 156, 149, 164, 162, 136, 117, 115, 123, 123, 123, 121, 121, 116, 123, 131, 164, + 187, 186, 179, 153, 57, 84, 119, 141, 148, 142, 156, 174, 183, 189, 205, 196, + 189, 211, 187, 134, 100, 135, 135, 132, 131, 133, 134, 155, 189, 180, 197, 172, + 120, 131, 68, 99, 135, 130, 126, 144, 181, 178, 161, 180, 173, 163, 110, 67, + 118, 119, 123, 131, 152, 125, 155, 155, 160, 154, 139, 56, 107, 119, 119, 122, + 128, 116, 122, 123, 114, 111, 112, 92, 116, 120, 138, 143, 140, 137, 132, 124, + 115, 102, 91, 83, 75, 67, 59, 51, 44, 38, 34, 32, 29, 28, 30, 30, + 46, 47, 47, 49, 52, 56, 59, 65, 74, 81, 87, 93, 101, 111, 134, 156, + 166, 167, 168, 160, 148, 150, 114, 126, 120, 126, 120, 117, 123, 138, 155, 185, + 193, 185, 164, 87, 62, 103, 122, 138, 149, 149, 165, 174, 190, 193, 194, 192, + 192, 204, 200, 192, 136, 132, 138, 130, 131, 133, 140, 162, 176, 178, 200, 195, + 119, 123, 98, 97, 129, 131, 129, 163, 180, 161, 166, 179, 170, 166, 124, 61, + 115, 125, 121, 127, 147, 102, 160, 150, 152, 150, 146, 93, 92, 119, 115, 116, + 126, 104, 119, 101, 111, 111, 115, 88, 58, 85, 122, 110, 110, 118, 121, 122, + 120, 110, 97, 88, 77, 68, 60, 53, 45, 39, 34, 32, 29, 28, 30, 30, + 46, 47, 47, 48, 51, 54, 57, 62, 71, 77, 82, 89, 101, 108, 115, 134, + 132, 158, 176, 136, 128, 140, 133, 146, 127, 116, 121, 141, 174, 169, 136, 138, + 174, 170, 109, 50, 94, 112, 121, 138, 167, 181, 199, 194, 195, 195, 201, 207, + 201, 201, 192, 179, 187, 200, 185, 111, 128, 151, 158, 175, 178, 171, 169, 184, + 194, 190, 174, 138, 116, 123, 153, 183, 163, 152, 158, 171, 166, 156, 108, 88, + 114, 111, 110, 105, 113, 91, 163, 124, 142, 144, 135, 118, 112, 106, 106, 119, + 129, 81, 100, 98, 125, 118, 91, 70, 87, 116, 102, 73, 75, 83, 87, 96, + 103, 106, 103, 92, 81, 69, 61, 54, 46, 39, 34, 32, 29, 28, 30, 30, + 46, 47, 46, 47, 50, 52, 56, 60, 68, 74, 79, 84, 88, 101, 108, 119, + 125, 155, 157, 131, 104, 108, 127, 152, 149, 138, 147, 186, 195, 156, 145, 175, + 168, 132, 63, 84, 107, 113, 116, 131, 171, 192, 203, 195, 189, 195, 209, 210, + 198, 204, 188, 177, 200, 193, 178, 85, 125, 179, 177, 175, 182, 159, 179, 196, + 179, 179, 174, 160, 106, 114, 170, 170, 139, 150, 159, 168, 163, 144, 118, 124, + 107, 88, 91, 96, 101, 106, 155, 138, 139, 134, 127, 128, 129, 92, 94, 115, + 119, 64, 70, 79, 103, 109, 97, 97, 113, 117, 91, 78, 83, 88, 83, 82, + 86, 94, 102, 95, 81, 72, 61, 56, 47, 40, 35, 33, 30, 29, 30, 30, + 46, 46, 45, 46, 49, 50, 55, 58, 65, 72, 77, 83, 89, 94, 103, 110, + 113, 150, 140, 151, 157, 158, 175, 176, 186, 170, 177, 220, 203, 194, 190, 212, + 169, 73, 71, 111, 113, 110, 114, 131, 177, 191, 197, 182, 181, 192, 202, 197, + 201, 196, 176, 187, 206, 186, 162, 72, 129, 189, 177, 169, 174, 174, 192, 187, + 158, 155, 161, 160, 94, 101, 164, 144, 135, 155, 160, 162, 161, 137, 155, 103, + 86, 70, 71, 55, 70, 120, 156, 141, 137, 132, 129, 132, 119, 77, 73, 116, + 124, 100, 97, 116, 115, 118, 105, 105, 127, 116, 104, 98, 105, 104, 95, 90, + 81, 75, 80, 91, 84, 75, 62, 58, 49, 42, 37, 34, 31, 29, 30, 30, + 45, 46, 45, 45, 49, 50, 54, 57, 62, 68, 73, 80, 86, 90, 97, 105, + 110, 113, 124, 157, 171, 181, 193, 196, 214, 138, 198, 216, 175, 191, 187, 155, + 79, 72, 108, 113, 111, 109, 113, 126, 159, 161, 162, 160, 166, 178, 190, 191, + 193, 187, 183, 195, 204, 181, 173, 70, 121, 143, 123, 141, 161, 171, 184, 177, + 161, 159, 153, 135, 78, 102, 161, 153, 155, 162, 140, 117, 102, 54, 60, 66, + 93, 62, 111, 123, 125, 158, 154, 138, 135, 130, 127, 131, 118, 81, 77, 115, + 127, 116, 108, 118, 125, 130, 91, 102, 126, 100, 96, 91, 94, 86, 80, 81, + 76, 71, 60, 77, 88, 75, 64, 60, 51, 44, 38, 35, 31, 29, 30, 30, + 44, 45, 44, 45, 47, 48, 52, 54, 60, 65, 70, 77, 82, 86, 92, 98, + 103, 107, 111, 123, 160, 161, 179, 196, 180, 164, 213, 191, 140, 132, 77, 51, + 81, 105, 114, 114, 106, 109, 113, 120, 135, 115, 104, 104, 107, 111, 117, 119, + 112, 102, 102, 111, 116, 105, 108, 71, 118, 112, 86, 83, 90, 97, 99, 102, + 97, 94, 83, 78, 64, 99, 132, 105, 90, 80, 61, 48, 53, 48, 66, 83, + 70, 81, 127, 108, 85, 94, 81, 78, 76, 75, 74, 82, 69, 58, 76, 110, + 127, 123, 101, 106, 120, 101, 88, 117, 102, 72, 78, 83, 87, 80, 76, 69, + 71, 71, 56, 57, 82, 78, 68, 62, 53, 47, 39, 35, 32, 30, 30, 30, + 44, 44, 43, 44, 46, 47, 50, 52, 57, 64, 68, 74, 79, 83, 89, 93, + 99, 103, 107, 101, 92, 94, 120, 128, 105, 148, 143, 91, 79, 54, 66, 105, + 112, 115, 111, 103, 102, 107, 112, 115, 117, 98, 90, 94, 94, 92, 95, 106, + 103, 94, 92, 97, 98, 100, 96, 97, 115, 111, 96, 91, 92, 92, 91, 90, + 89, 92, 91, 86, 86, 98, 103, 94, 86, 83, 84, 84, 83, 77, 83, 79, + 76, 91, 98, 85, 74, 80, 80, 77, 80, 83, 85, 85, 83, 84, 101, 108, + 121, 131, 114, 98, 93, 72, 101, 98, 77, 78, 80, 83, 86, 82, 80, 72, + 68, 61, 55, 41, 66, 82, 71, 63, 54, 47, 40, 36, 32, 31, 31, 31, + 44, 44, 43, 44, 46, 46, 48, 50, 55, 61, 65, 71, 75, 79, 85, 88, + 91, 95, 105, 113, 111, 102, 93, 81, 75, 70, 70, 69, 81, 85, 94, 107, + 107, 107, 102, 97, 98, 105, 109, 110, 108, 104, 107, 112, 114, 112, 117, 123, + 115, 109, 107, 108, 108, 112, 102, 106, 104, 109, 106, 104, 104, 103, 104, 105, + 102, 99, 100, 99, 97, 96, 97, 100, 102, 102, 101, 98, 100, 94, 97, 87, + 93, 91, 97, 92, 92, 91, 88, 84, 88, 92, 95, 93, 100, 98, 101, 109, + 116, 133, 131, 113, 80, 95, 98, 78, 75, 87, 77, 81, 80, 78, 73, 66, + 62, 60, 59, 34, 54, 81, 72, 63, 54, 47, 40, 36, 33, 31, 32, 32, + 43, 43, 43, 44, 46, 45, 48, 50, 53, 59, 62, 67, 71, 76, 81, 83, + 85, 94, 97, 103, 104, 106, 102, 99, 103, 100, 97, 98, 92, 95, 106, 104, + 104, 98, 99, 94, 95, 104, 107, 107, 101, 105, 110, 111, 114, 109, 113, 123, + 115, 105, 103, 104, 107, 108, 103, 102, 101, 101, 102, 104, 103, 102, 102, 102, + 101, 97, 97, 96, 91, 91, 89, 97, 102, 99, 97, 98, 98, 94, 92, 87, + 85, 86, 86, 87, 84, 86, 84, 84, 86, 89, 92, 91, 97, 96, 100, 105, + 115, 121, 110, 99, 93, 92, 76, 71, 78, 80, 67, 72, 71, 73, 68, 62, + 62, 67, 61, 34, 48, 76, 73, 63, 54, 47, 40, 37, 33, 31, 32, 32, + 43, 44, 44, 45, 44, 46, 49, 51, 51, 56, 60, 63, 68, 72, 78, 80, + 85, 90, 93, 97, 99, 99, 98, 99, 102, 98, 99, 98, 98, 103, 104, 100, + 99, 96, 93, 91, 93, 99, 101, 100, 98, 100, 105, 106, 107, 106, 109, 118, + 111, 101, 97, 99, 102, 103, 100, 100, 100, 99, 99, 99, 99, 98, 97, 96, + 94, 93, 92, 92, 90, 90, 88, 92, 93, 92, 91, 91, 91, 90, 89, 85, + 85, 82, 82, 83, 82, 82, 82, 83, 83, 86, 87, 89, 93, 95, 101, 107, + 110, 80, 80, 93, 98, 82, 102, 94, 84, 69, 59, 56, 61, 61, 56, 60, + 58, 62, 49, 37, 40, 74, 70, 64, 54, 47, 40, 37, 33, 31, 32, 31, + 43, 44, 45, 45, 45, 48, 50, 52, 52, 54, 59, 61, 64, 68, 73, 77, + 81, 85, 89, 90, 92, 93, 93, 94, 94, 94, 93, 93, 96, 101, 101, 98, + 96, 92, 89, 88, 91, 94, 96, 95, 94, 96, 101, 103, 104, 103, 105, 113, + 108, 98, 94, 95, 98, 100, 97, 98, 99, 98, 97, 97, 96, 95, 94, 92, + 90, 90, 89, 88, 88, 86, 86, 86, 85, 84, 84, 85, 85, 84, 83, 83, + 82, 81, 81, 81, 81, 81, 81, 83, 82, 84, 85, 87, 91, 94, 101, 103, + 99, 84, 98, 96, 71, 60, 115, 125, 116, 106, 100, 92, 83, 67, 52, 52, + 62, 58, 46, 29, 30, 72, 72, 64, 55, 47, 40, 37, 33, 31, 32, 31, + 43, 44, 45, 46, 46, 47, 50, 51, 51, 53, 57, 59, 60, 64, 68, 72, + 74, 78, 81, 82, 85, 86, 87, 88, 87, 87, 88, 88, 91, 95, 94, 92, + 90, 87, 84, 83, 86, 89, 91, 90, 89, 91, 96, 98, 99, 97, 100, 106, + 102, 94, 90, 90, 92, 94, 93, 93, 93, 92, 91, 91, 90, 90, 88, 86, + 85, 84, 83, 82, 81, 80, 80, 79, 78, 77, 76, 79, 78, 77, 77, 77, + 77, 76, 75, 75, 75, 75, 75, 77, 77, 78, 81, 83, 87, 91, 99, 96, + 78, 76, 87, 77, 46, 47, 117, 130, 128, 126, 126, 121, 115, 105, 90, 52, + 54, 47, 33, 22, 32, 71, 71, 64, 53, 46, 39, 36, 32, 31, 32, 31, + 43, 44, 45, 46, 46, 47, 49, 50, 49, 51, 55, 56, 59, 61, 66, 68, + 70, 73, 76, 77, 80, 82, 84, 84, 83, 83, 84, 85, 88, 90, 89, 87, + 86, 84, 81, 81, 84, 87, 88, 86, 85, 87, 91, 93, 94, 92, 94, 101, + 98, 91, 86, 85, 88, 90, 89, 89, 89, 88, 88, 87, 87, 86, 85, 82, + 81, 80, 79, 77, 77, 76, 75, 73, 73, 72, 71, 73, 73, 72, 71, 73, + 73, 72, 72, 72, 72, 72, 72, 72, 73, 75, 77, 80, 85, 89, 99, 94, + 68, 61, 55, 64, 46, 52, 115, 117, 118, 121, 123, 124, 125, 124, 122, 62, + 34, 26, 24, 27, 41, 71, 68, 63, 52, 45, 38, 36, 32, 30, 31, 30, + 43, 44, 45, 46, 46, 47, 48, 49, 48, 50, 52, 54, 57, 59, 63, 64, + 67, 70, 72, 73, 75, 77, 80, 80, 78, 79, 81, 83, 86, 86, 84, 83, + 82, 81, 79, 79, 82, 85, 85, 83, 81, 82, 85, 88, 90, 87, 88, 95, + 93, 87, 83, 81, 84, 86, 86, 84, 86, 85, 84, 84, 83, 82, 81, 78, + 77, 76, 75, 73, 72, 72, 71, 69, 69, 68, 67, 68, 68, 67, 67, 69, + 69, 68, 67, 67, 67, 67, 67, 68, 69, 72, 75, 77, 82, 88, 98, 91, + 71, 62, 50, 75, 55, 61, 118, 113, 113, 115, 118, 120, 120, 120, 125, 78, + 32, 22, 47, 36, 43, 70, 69, 61, 51, 43, 37, 35, 31, 30, 30, 29, + 43, 44, 45, 46, 46, 47, 47, 48, 48, 49, 51, 52, 54, 56, 58, 60, + 63, 65, 66, 67, 69, 71, 74, 75, 73, 75, 77, 80, 83, 81, 79, 78, + 77, 75, 74, 75, 78, 80, 80, 78, 77, 78, 80, 83, 85, 82, 83, 89, + 88, 84, 78, 75, 78, 81, 81, 80, 80, 79, 78, 78, 78, 77, 76, 74, + 72, 72, 71, 69, 68, 67, 66, 66, 66, 65, 64, 63, 63, 62, 62, 64, + 63, 62, 62, 61, 61, 61, 61, 62, 64, 67, 70, 73, 79, 85, 95, 90, + 75, 68, 65, 85, 59, 62, 118, 112, 111, 112, 113, 115, 118, 121, 123, 72, + 40, 45, 65, 33, 46, 70, 69, 61, 51, 43, 37, 34, 31, 29, 30, 29, + 42, 43, 44, 45, 45, 46, 46, 47, 48, 49, 50, 51, 51, 53, 55, 56, + 59, 61, 62, 63, 64, 67, 69, 70, 69, 71, 74, 77, 80, 77, 75, 73, + 72, 70, 69, 71, 74, 75, 75, 75, 73, 74, 76, 79, 80, 77, 78, 83, + 84, 80, 74, 71, 74, 77, 77, 76, 75, 74, 73, 73, 73, 72, 71, 70, + 69, 68, 67, 65, 64, 63, 62, 63, 62, 61, 61, 59, 59, 58, 57, 59, + 60, 59, 58, 58, 58, 58, 59, 60, 60, 63, 67, 70, 75, 82, 93, 94, + 73, 62, 69, 75, 57, 60, 113, 115, 113, 113, 115, 114, 116, 119, 106, 38, + 33, 60, 49, 24, 59, 73, 62, 59, 50, 42, 36, 34, 31, 29, 30, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 49, 49, 50, 51, 52, 53, 55, 55, + 55, 57, 59, 61, 64, 65, 67, 68, 67, 69, 73, 77, 77, 75, 73, 71, + 68, 66, 67, 69, 72, 73, 72, 72, 74, 76, 78, 78, 76, 75, 76, 81, + 82, 79, 73, 71, 72, 74, 75, 75, 74, 72, 70, 70, 70, 69, 68, 66, + 66, 65, 64, 64, 63, 62, 61, 59, 58, 57, 57, 56, 56, 55, 54, 57, + 57, 57, 57, 57, 56, 56, 57, 58, 59, 61, 63, 67, 74, 80, 91, 98, + 73, 52, 66, 62, 52, 50, 95, 113, 117, 119, 121, 122, 122, 112, 68, 27, + 46, 57, 35, 36, 71, 73, 61, 56, 48, 43, 37, 34, 32, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 49, 50, 51, 51, 51, 51, 53, 54, + 54, 55, 57, 58, 60, 61, 63, 64, 65, 67, 71, 74, 73, 72, 70, 68, + 67, 66, 67, 68, 69, 71, 70, 68, 69, 71, 73, 73, 71, 70, 71, 76, + 78, 75, 70, 67, 68, 69, 71, 72, 72, 70, 68, 67, 66, 65, 65, 64, + 65, 64, 63, 61, 60, 59, 58, 58, 57, 56, 56, 55, 55, 54, 53, 55, + 55, 55, 55, 54, 54, 54, 54, 54, 55, 57, 60, 65, 71, 77, 88, 96, + 72, 43, 57, 47, 43, 37, 63, 99, 120, 123, 118, 116, 92, 63, 45, 37, + 57, 45, 21, 51, 75, 66, 62, 55, 47, 42, 36, 33, 31, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 49, 50, 51, 50, 49, 49, 51, 51, + 51, 52, 54, 56, 57, 58, 60, 62, 64, 66, 69, 71, 69, 68, 66, 66, + 65, 65, 66, 67, 68, 69, 68, 66, 65, 67, 69, 69, 67, 66, 67, 72, + 74, 71, 66, 64, 64, 66, 67, 69, 69, 67, 65, 64, 63, 62, 61, 62, + 62, 61, 60, 58, 57, 56, 56, 55, 55, 54, 53, 53, 52, 51, 50, 51, + 52, 52, 52, 51, 51, 51, 51, 52, 52, 54, 56, 62, 68, 74, 82, 89, + 81, 48, 40, 39, 41, 39, 42, 54, 68, 70, 69, 68, 48, 32, 41, 54, + 54, 28, 37, 67, 76, 61, 61, 52, 45, 40, 35, 32, 31, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 50, 51, 50, 50, 48, 48, 48, 49, + 48, 50, 51, 53, 55, 57, 58, 60, 63, 66, 69, 69, 67, 66, 65, 64, + 62, 62, 64, 66, 67, 68, 67, 65, 64, 66, 68, 68, 66, 65, 66, 70, + 73, 71, 67, 64, 64, 65, 67, 66, 65, 63, 62, 61, 61, 60, 60, 60, + 60, 59, 59, 58, 57, 56, 55, 54, 53, 52, 51, 51, 50, 49, 49, 50, + 50, 50, 50, 49, 49, 49, 49, 51, 51, 53, 55, 61, 66, 72, 79, 82, + 90, 70, 43, 38, 38, 46, 45, 53, 52, 50, 50, 43, 44, 47, 56, 57, + 37, 28, 60, 75, 72, 59, 55, 49, 43, 39, 34, 31, 30, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 52, 51, 49, 49, 49, 48, 48, 47, + 47, 48, 50, 51, 54, 55, 57, 58, 61, 65, 66, 65, 64, 64, 64, 63, + 58, 59, 62, 64, 65, 66, 66, 63, 63, 65, 66, 66, 65, 63, 65, 69, + 72, 70, 66, 63, 62, 64, 66, 65, 63, 62, 60, 60, 60, 59, 58, 59, + 58, 58, 57, 56, 56, 55, 54, 52, 51, 50, 49, 49, 48, 47, 47, 48, + 49, 49, 49, 47, 47, 47, 47, 50, 50, 52, 55, 58, 64, 68, 75, 77, + 84, 90, 75, 50, 42, 50, 48, 54, 55, 50, 52, 52, 42, 44, 51, 36, + 36, 64, 77, 73, 65, 57, 50, 46, 40, 37, 33, 30, 29, 30, 28, 29, + 42, 43, 43, 44, 45, 45, 46, 47, 51, 51, 49, 49, 50, 49, 48, 48, + 47, 49, 51, 52, 52, 54, 55, 56, 58, 62, 62, 61, 61, 61, 62, 60, + 57, 58, 61, 62, 63, 64, 63, 61, 61, 63, 64, 64, 63, 61, 63, 67, + 70, 68, 65, 61, 61, 62, 64, 64, 63, 61, 60, 59, 58, 58, 57, 58, + 58, 57, 57, 55, 54, 53, 53, 51, 51, 50, 49, 49, 48, 47, 47, 48, + 48, 48, 48, 47, 47, 47, 47, 47, 48, 50, 52, 55, 60, 64, 70, 69, + 78, 89, 92, 81, 63, 59, 49, 50, 47, 43, 44, 40, 46, 40, 43, 54, + 69, 81, 79, 69, 61, 54, 49, 45, 40, 37, 32, 29, 29, 30, 28, 29, + 42, 42, 43, 44, 45, 45, 46, 47, 48, 48, 47, 48, 48, 48, 48, 48, + 48, 49, 50, 51, 52, 52, 54, 55, 56, 58, 58, 57, 57, 57, 58, 57, + 56, 57, 59, 61, 61, 62, 61, 60, 60, 61, 62, 63, 61, 60, 61, 63, + 66, 66, 63, 59, 58, 59, 61, 62, 61, 59, 59, 58, 57, 56, 55, 57, + 58, 57, 56, 54, 53, 52, 51, 51, 51, 50, 49, 49, 48, 47, 47, 46, + 46, 45, 45, 44, 44, 44, 44, 43, 44, 47, 49, 51, 56, 61, 66, 67, + 75, 83, 89, 92, 80, 73, 63, 55, 48, 45, 46, 44, 48, 53, 67, 82, + 86, 80, 75, 67, 61, 53, 49, 46, 41, 38, 34, 32, 31, 30, 28, 29, + 42, 42, 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, + 49, 49, 50, 52, 53, 52, 54, 55, 56, 56, 56, 56, 56, 56, 56, 55, + 55, 57, 59, 60, 62, 61, 60, 60, 59, 60, 61, 62, 61, 60, 60, 61, + 64, 65, 62, 58, 57, 57, 59, 60, 59, 58, 57, 57, 56, 55, 55, 56, + 57, 56, 55, 53, 52, 51, 51, 51, 51, 50, 49, 49, 48, 47, 47, 45, + 45, 44, 43, 43, 43, 43, 42, 40, 42, 45, 47, 50, 54, 60, 63, 67, + 72, 78, 82, 85, 84, 81, 78, 75, 69, 66, 65, 64, 69, 73, 78, 82, + 80, 77, 71, 65, 59, 52, 49, 47, 42, 38, 35, 34, 31, 29, 28, 29, + 42, 42, 43, 44, 45, 45, 46, 47, 46, 46, 46, 46, 46, 47, 48, 48, + 49, 49, 50, 51, 53, 52, 54, 55, 55, 55, 55, 55, 55, 55, 55, 54, + 55, 57, 58, 60, 61, 60, 59, 59, 59, 60, 61, 61, 61, 60, 59, 60, + 63, 64, 61, 58, 56, 57, 58, 59, 58, 57, 57, 56, 56, 55, 54, 56, + 56, 55, 55, 53, 51, 51, 50, 50, 50, 49, 48, 48, 47, 46, 46, 45, + 44, 43, 42, 42, 42, 42, 41, 39, 41, 43, 45, 47, 52, 57, 60, 63, + 67, 73, 76, 79, 82, 82, 83, 86, 83, 82, 82, 80, 80, 79, 78, 77, + 75, 70, 65, 60, 55, 49, 46, 45, 41, 37, 35, 34, 31, 29, 28, 29, + 42, 42, 43, 44, 44, 45, 45, 46, 46, 46, 46, 46, 46, 46, 47, 48, + 48, 49, 50, 50, 51, 52, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 56, 58, 59, 59, 59, 58, 57, 58, 59, 59, 60, 59, 59, 58, 59, + 62, 63, 60, 58, 56, 55, 57, 57, 57, 56, 55, 55, 54, 54, 53, 54, + 55, 54, 53, 52, 51, 50, 49, 49, 48, 48, 47, 46, 46, 45, 44, 44, + 43, 42, 42, 42, 42, 42, 41, 38, 39, 42, 43, 45, 49, 53, 57, 59, + 63, 68, 70, 72, 74, 76, 77, 77, 77, 78, 78, 78, 75, 73, 72, 72, + 69, 64, 59, 56, 51, 46, 43, 42, 39, 35, 33, 33, 31, 29, 28, 29, + 42, 42, 43, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, + 48, 48, 49, 50, 50, 51, 54, 55, 53, 53, 53, 53, 53, 53, 53, 53, + 54, 55, 57, 58, 59, 58, 57, 56, 57, 58, 59, 59, 59, 58, 57, 58, + 61, 62, 59, 57, 55, 54, 55, 56, 56, 55, 54, 54, 53, 52, 52, 53, + 54, 53, 52, 51, 50, 49, 49, 48, 47, 47, 46, 45, 45, 44, 43, 43, + 43, 42, 41, 41, 41, 41, 41, 38, 39, 40, 41, 43, 47, 51, 53, 56, + 59, 63, 66, 68, 70, 70, 70, 73, 75, 76, 76, 74, 72, 71, 69, 68, + 64, 59, 55, 52, 49, 43, 41, 39, 37, 34, 32, 32, 30, 29, 29, 29, + 42, 42, 43, 43, 43, 44, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, + 47, 48, 49, 49, 49, 50, 54, 54, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 55, 57, 58, 58, 57, 56, 56, 56, 57, 58, 58, 58, 57, 56, 57, + 60, 61, 58, 56, 55, 53, 54, 55, 55, 54, 53, 53, 52, 51, 51, 53, + 53, 52, 51, 51, 50, 49, 49, 47, 47, 46, 45, 45, 44, 43, 42, 43, + 42, 42, 41, 41, 41, 41, 40, 37, 38, 38, 39, 41, 44, 48, 50, 53, + 55, 59, 62, 63, 65, 65, 65, 68, 71, 71, 69, 66, 65, 64, 63, 61, + 59, 54, 51, 48, 44, 39, 38, 37, 35, 32, 31, 31, 30, 29, 29, 29, + 42, 42, 43, 43, 43, 44, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, + 47, 48, 49, 49, 49, 50, 54, 54, 52, 52, 52, 52, 52, 52, 52, 52, + 53, 55, 56, 57, 57, 56, 56, 55, 55, 56, 57, 58, 57, 56, 55, 56, + 60, 60, 57, 56, 55, 53, 53, 54, 54, 53, 53, 53, 52, 51, 50, 52, + 52, 51, 51, 51, 50, 49, 48, 47, 46, 45, 45, 44, 44, 43, 42, 42, + 42, 41, 41, 41, 41, 41, 40, 37, 37, 38, 38, 40, 42, 46, 48, 49, + 52, 55, 57, 56, 58, 61, 61, 63, 66, 66, 64, 64, 61, 59, 57, 55, + 54, 50, 47, 44, 40, 36, 35, 35, 33, 31, 30, 30, 30, 29, 29, 29, + 42, 42, 43, 43, 43, 43, 43, 43, 42, 43, 43, 44, 44, 45, 46, 47, + 47, 47, 48, 49, 49, 51, 53, 53, 51, 51, 51, 50, 50, 50, 50, 51, + 53, 53, 54, 55, 55, 55, 55, 55, 55, 56, 57, 57, 56, 55, 54, 55, + 57, 59, 57, 54, 52, 50, 50, 53, 54, 53, 53, 51, 50, 50, 49, 51, + 51, 50, 50, 50, 50, 49, 48, 47, 46, 45, 45, 44, 44, 43, 43, 43, + 43, 42, 41, 41, 40, 39, 38, 37, 38, 39, 40, 40, 42, 44, 46, 49, + 51, 53, 54, 55, 55, 57, 58, 60, 60, 60, 60, 59, 57, 55, 54, 52, + 49, 46, 44, 41, 39, 36, 34, 34, 32, 30, 29, 29, 29, 29, 29, 29, + 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 43, 44, 44, 45, 46, 46, + 46, 47, 48, 49, 49, 51, 52, 52, 50, 50, 50, 50, 50, 50, 50, 51, + 52, 53, 54, 54, 54, 54, 54, 54, 54, 55, 56, 56, 55, 54, 53, 54, + 57, 58, 56, 53, 51, 50, 50, 52, 53, 53, 53, 51, 50, 49, 48, 50, + 51, 50, 49, 49, 49, 49, 48, 47, 46, 45, 45, 44, 44, 44, 44, 44, + 43, 42, 41, 41, 40, 38, 38, 38, 38, 40, 40, 40, 41, 43, 45, 46, + 47, 49, 51, 51, 52, 53, 54, 55, 55, 55, 55, 54, 52, 51, 50, 49, + 46, 43, 42, 40, 38, 35, 34, 33, 32, 30, 29, 29, 29, 29, 29, 29, + 42, 42, 42, 42, 42, 42, 42, 41, 41, 42, 42, 43, 44, 44, 45, 46, + 46, 47, 47, 48, 49, 50, 52, 51, 49, 49, 49, 49, 49, 49, 49, 50, + 52, 53, 53, 54, 53, 53, 53, 53, 54, 55, 55, 55, 54, 53, 52, 53, + 56, 58, 56, 53, 51, 49, 49, 51, 52, 52, 52, 51, 50, 49, 48, 50, + 50, 49, 49, 49, 49, 48, 47, 47, 46, 45, 45, 44, 44, 44, 44, 43, + 42, 42, 41, 41, 40, 38, 38, 39, 39, 40, 40, 40, 41, 42, 43, 43, + 45, 46, 47, 47, 47, 48, 49, 51, 51, 51, 50, 48, 47, 45, 45, 44, + 42, 40, 38, 38, 37, 34, 33, 33, 31, 30, 29, 29, 29, 29, 29, 29, + 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 42, 43, 43, 44, 44, 45, + 46, 46, 47, 48, 49, 50, 51, 50, 49, 49, 49, 49, 49, 49, 49, 49, + 51, 52, 53, 53, 52, 52, 52, 52, 53, 53, 54, 54, 53, 52, 51, 52, + 55, 57, 55, 52, 50, 49, 49, 50, 51, 51, 51, 50, 49, 48, 48, 49, + 49, 49, 48, 49, 48, 47, 47, 47, 46, 45, 45, 43, 43, 43, 43, 43, + 42, 41, 41, 41, 40, 38, 38, 39, 39, 39, 39, 39, 39, 40, 41, 43, + 43, 44, 45, 45, 45, 45, 46, 48, 48, 48, 48, 46, 44, 43, 41, 39, + 38, 37, 36, 36, 35, 33, 32, 31, 31, 30, 29, 29, 29, 29, 28, 28, + 41, 41, 41, 41, 41, 41, 41, 41, 40, 41, 42, 42, 43, 43, 44, 45, + 45, 46, 47, 48, 50, 50, 50, 48, 48, 48, 48, 48, 48, 48, 48, 49, + 51, 51, 53, 52, 51, 51, 51, 51, 52, 52, 53, 53, 52, 51, 50, 51, + 54, 56, 53, 51, 50, 48, 48, 49, 50, 50, 50, 49, 49, 48, 47, 49, + 49, 48, 48, 48, 48, 47, 46, 46, 46, 45, 45, 43, 43, 43, 43, 42, + 42, 41, 40, 40, 40, 38, 38, 39, 38, 38, 38, 38, 38, 38, 39, 43, + 43, 43, 44, 44, 43, 43, 43, 46, 46, 46, 45, 44, 42, 40, 39, 37, + 36, 34, 34, 35, 33, 31, 31, 30, 30, 30, 29, 29, 29, 29, 28, 28, + 41, 41, 41, 41, 41, 41, 41, 40, 40, 40, 41, 42, 42, 43, 44, 44, + 45, 45, 46, 47, 50, 49, 49, 48, 47, 47, 47, 47, 48, 48, 48, 49, + 50, 51, 52, 52, 50, 50, 50, 50, 51, 51, 52, 52, 51, 50, 49, 50, + 53, 55, 52, 51, 50, 48, 48, 49, 49, 49, 49, 49, 48, 47, 47, 48, + 49, 48, 47, 47, 47, 46, 46, 46, 46, 45, 45, 42, 42, 42, 42, 42, + 41, 40, 40, 40, 40, 38, 38, 40, 40, 39, 38, 39, 39, 38, 39, 41, + 41, 42, 40, 41, 41, 39, 40, 42, 42, 42, 42, 41, 39, 37, 36, 35, + 34, 33, 32, 32, 31, 30, 30, 29, 30, 30, 29, 29, 29, 29, 28, 27, + 40, 40, 40, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 42, 43, 43, + 44, 45, 46, 47, 49, 49, 49, 48, 47, 47, 47, 47, 47, 48, 48, 48, + 50, 50, 51, 51, 50, 50, 50, 49, 50, 51, 52, 52, 50, 50, 49, 50, + 53, 55, 53, 51, 49, 48, 48, 49, 49, 49, 49, 49, 48, 48, 47, 48, + 48, 47, 47, 47, 47, 46, 46, 46, 45, 44, 44, 42, 42, 42, 42, 42, + 41, 40, 40, 40, 39, 38, 38, 39, 39, 38, 37, 38, 38, 37, 37, 39, + 39, 39, 38, 39, 39, 38, 39, 40, 40, 39, 39, 38, 37, 36, 35, 34, + 33, 32, 31, 30, 30, 29, 29, 29, 30, 29, 29, 29, 29, 29, 28, 27, + 38, 39, 39, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 41, 42, 43, + 43, 44, 46, 48, 49, 49, 49, 49, 48, 48, 48, 47, 46, 47, 48, 48, + 49, 49, 50, 50, 50, 50, 50, 49, 49, 50, 50, 51, 50, 49, 49, 50, + 53, 55, 54, 52, 50, 50, 49, 50, 51, 51, 51, 50, 49, 48, 47, 47, + 47, 47, 47, 46, 46, 46, 46, 44, 43, 43, 42, 42, 42, 42, 42, 42, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 36, 36, 36, 37, + 37, 37, 37, 37, 37, 37, 37, 38, 37, 36, 36, 37, 36, 35, 34, 32, + 31, 30, 29, 29, 28, 28, 29, 30, 30, 29, 29, 29, 29, 29, 28, 27, + 38, 39, 39, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 41, 42, 43, + 43, 44, 46, 48, 49, 49, 49, 49, 49, 49, 49, 48, 47, 48, 48, 48, + 49, 49, 50, 50, 50, 50, 50, 49, 49, 50, 50, 51, 50, 49, 48, 50, + 53, 55, 55, 53, 51, 50, 50, 50, 51, 51, 51, 51, 50, 49, 48, 47, + 47, 47, 47, 46, 46, 46, 46, 44, 43, 43, 42, 42, 42, 42, 42, 42, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 35, 34, 34, 35, 34, 33, 32, 30, + 30, 29, 28, 29, 28, 27, 28, 30, 30, 29, 29, 29, 29, 29, 28, 27, + 38, 39, 39, 40, 41, 41, 41, 40, 40, 40, 41, 41, 41, 41, 42, 43, + 43, 44, 46, 48, 49, 49, 49, 49, 49, 49, 49, 48, 47, 48, 48, 48, + 48, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 49, 48, 50, + 53, 55, 55, 53, 51, 50, 50, 50, 51, 51, 51, 51, 50, 49, 48, 47, + 47, 47, 47, 46, 46, 46, 46, 44, 43, 43, 42, 42, 42, 42, 42, 42, + 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 35, 34, 34, 34, 34, 34, 33, 33, 32, 33, 32, 31, 30, 29, + 28, 27, 27, 29, 28, 27, 28, 30, 30, 29, 29, 29, 29, 29, 28, 27, + 69, 69, 70, 72, 73, 74, 75, 76, 77, 77, 79, 80, 82, 83, 85, 86, + 87, 90, 93, 95, 97, 100, 102, 102, 102, 104, 110, 114, 116, 118, 116, 115, + 125, 127, 122, 122, 126, 129, 135, 142, 132, 139, 137, 142, 144, 144, 140, 136, + 143, 133, 130, 132, 131, 126, 122, 122, 123, 116, 112, 116, 116, 111, 105, 102, + 100, 97, 95, 97, 98, 96, 96, 95, 93, 90, 88, 85, 83, 82, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 46, 45, 46, 45, 45, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 84, 86, 87, + 87, 89, 93, 95, 98, 101, 103, 104, 104, 105, 109, 113, 117, 120, 118, 117, + 126, 130, 127, 126, 128, 132, 138, 146, 138, 142, 141, 145, 147, 147, 143, 140, + 147, 137, 135, 135, 132, 126, 125, 124, 123, 117, 115, 119, 116, 111, 105, 102, + 101, 98, 98, 99, 98, 97, 96, 95, 93, 90, 88, 85, 83, 82, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 46, 46, 46, 46, 45, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 77, 78, 80, 81, 83, 85, 87, 88, + 88, 90, 93, 96, 100, 103, 106, 108, 108, 108, 109, 113, 118, 121, 122, 121, + 127, 134, 132, 130, 130, 134, 141, 149, 144, 145, 147, 149, 150, 150, 147, 145, + 151, 142, 140, 139, 134, 127, 128, 127, 124, 120, 121, 122, 117, 111, 105, 102, + 102, 101, 101, 100, 99, 98, 96, 94, 92, 89, 87, 85, 83, 82, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 46, 46, 47, 46, 45, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 78, 79, 80, 82, 84, 86, 88, 89, + 89, 92, 95, 98, 102, 105, 109, 111, 112, 112, 112, 114, 120, 124, 126, 126, + 127, 134, 136, 134, 132, 135, 142, 151, 151, 148, 152, 153, 154, 154, 150, 150, + 154, 145, 145, 143, 137, 130, 133, 131, 127, 124, 126, 123, 118, 111, 107, 105, + 104, 105, 104, 103, 101, 99, 97, 94, 92, 90, 88, 85, 84, 83, 81, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 47, 47, 47, 47, 46, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 79, 80, 81, 82, 85, 87, 89, 91, + 92, 95, 99, 101, 104, 108, 111, 114, 116, 118, 118, 118, 122, 126, 130, 132, + 130, 135, 141, 140, 135, 138, 146, 155, 158, 151, 158, 157, 159, 159, 155, 156, + 158, 149, 150, 145, 140, 135, 137, 135, 130, 130, 129, 123, 117, 111, 109, 109, + 107, 107, 107, 104, 102, 100, 98, 94, 92, 89, 87, 86, 84, 83, 82, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 47, 47, 48, 47, 46, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 79, 81, 82, 82, 87, 88, 90, 92, + 96, 98, 102, 104, 106, 110, 115, 117, 120, 123, 124, 123, 123, 128, 135, 140, + 139, 139, 148, 149, 142, 146, 154, 161, 165, 156, 165, 164, 167, 167, 163, 163, + 163, 155, 157, 149, 144, 141, 140, 137, 134, 136, 131, 123, 116, 112, 112, 113, + 111, 109, 108, 106, 104, 101, 98, 94, 92, 89, 87, 86, 84, 83, 82, 78, + 77, 76, 76, 74, 72, 71, 71, 70, 69, 68, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 55, 54, 54, + 54, 54, 54, 52, 50, 50, 49, 48, 48, 48, 47, 48, 48, 48, 46, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 80, 81, 82, 83, 88, 89, 91, 94, + 98, 101, 104, 107, 109, 113, 117, 119, 123, 126, 128, 128, 127, 129, 136, 143, + 145, 142, 149, 156, 148, 150, 158, 163, 171, 162, 169, 170, 172, 173, 167, 171, + 167, 161, 161, 152, 146, 147, 144, 138, 140, 140, 132, 122, 117, 115, 115, 115, + 113, 111, 109, 106, 103, 100, 97, 93, 91, 89, 87, 86, 85, 84, 82, 78, + 77, 77, 76, 74, 73, 72, 71, 71, 70, 69, 67, 67, 66, 65, 64, 63, + 62, 61, 61, 61, 60, 59, 58, 58, 58, 58, 57, 57, 56, 56, 54, 54, + 54, 54, 53, 52, 51, 50, 50, 48, 48, 48, 48, 49, 49, 49, 47, 46, + 69, 69, 70, 72, 73, 74, 75, 76, 80, 82, 83, 85, 88, 90, 94, 97, + 101, 104, 108, 111, 114, 117, 121, 123, 126, 130, 133, 136, 134, 132, 137, 143, + 150, 148, 148, 161, 157, 153, 161, 166, 177, 170, 174, 177, 178, 179, 171, 179, + 170, 169, 165, 157, 151, 154, 149, 144, 150, 142, 131, 123, 121, 120, 118, 117, + 116, 113, 111, 106, 102, 98, 95, 93, 91, 89, 88, 87, 86, 84, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 68, 67, 66, 65, 64, 63, + 62, 62, 61, 61, 60, 59, 59, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 52, 52, 52, 51, 50, 49, 48, 48, 50, 50, 50, 48, 47, + 69, 69, 70, 72, 74, 74, 75, 76, 81, 82, 85, 87, 89, 92, 95, 99, + 105, 109, 113, 117, 120, 122, 126, 128, 130, 135, 140, 141, 140, 140, 141, 145, + 153, 157, 154, 161, 169, 161, 162, 172, 183, 179, 181, 184, 184, 185, 178, 186, + 176, 178, 171, 161, 163, 160, 151, 154, 155, 142, 130, 125, 125, 124, 122, 120, + 118, 114, 110, 106, 103, 98, 95, 93, 91, 89, 88, 87, 86, 84, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 68, 67, 66, 65, 65, 63, + 63, 62, 61, 61, 60, 59, 59, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 52, 52, 52, 51, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 69, 70, 71, 73, 74, 75, 76, 77, 81, 83, 87, 89, 91, 94, 99, 104, + 110, 113, 119, 122, 125, 128, 131, 133, 135, 139, 144, 148, 148, 150, 147, 148, + 155, 165, 164, 160, 176, 172, 165, 177, 188, 189, 188, 191, 192, 192, 185, 193, + 183, 186, 176, 166, 172, 164, 158, 163, 155, 141, 132, 131, 131, 130, 127, 124, + 120, 114, 109, 105, 102, 99, 96, 94, 92, 90, 89, 87, 86, 84, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 68, 68, 67, 66, 65, 64, + 63, 62, 62, 62, 61, 60, 59, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 52, 52, 52, 52, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 70, 71, 71, 73, 75, 75, 76, 77, 81, 85, 89, 91, 93, 97, 103, 107, + 112, 116, 122, 126, 129, 132, 135, 137, 139, 143, 147, 152, 156, 158, 157, 154, + 156, 168, 174, 166, 175, 182, 173, 178, 191, 198, 194, 198, 200, 199, 193, 200, + 191, 192, 179, 174, 175, 167, 168, 166, 152, 142, 139, 139, 138, 134, 130, 124, + 119, 113, 108, 104, 102, 100, 98, 95, 94, 92, 90, 88, 87, 85, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 69, 68, 68, 67, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 53, 53, 53, 52, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 70, 71, 72, 74, 75, 76, 77, 78, 82, 86, 90, 92, 95, 99, 106, 110, + 115, 120, 127, 131, 133, 136, 139, 142, 145, 147, 151, 154, 159, 163, 164, 163, + 160, 167, 179, 177, 177, 189, 187, 183, 196, 208, 200, 206, 210, 208, 202, 207, + 200, 196, 182, 184, 177, 175, 176, 165, 151, 147, 148, 146, 142, 136, 130, 123, + 117, 112, 107, 104, 102, 100, 98, 96, 94, 92, 91, 88, 87, 85, 83, 79, + 78, 78, 77, 76, 74, 72, 72, 71, 71, 70, 69, 69, 68, 67, 66, 65, + 64, 64, 63, 63, 62, 61, 60, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 53, 53, 53, 53, 52, 50, 49, 48, 48, 50, 50, 50, 48, 46, + 71, 71, 72, 74, 76, 77, 77, 79, 82, 87, 91, 93, 96, 101, 107, 113, + 120, 126, 132, 137, 140, 142, 145, 148, 152, 153, 154, 156, 161, 166, 171, 173, + 167, 165, 178, 190, 185, 194, 198, 189, 202, 217, 206, 214, 220, 217, 212, 214, + 209, 200, 186, 193, 181, 187, 182, 163, 154, 153, 155, 150, 145, 137, 129, 121, + 115, 111, 107, 103, 101, 100, 99, 96, 94, 92, 91, 88, 87, 85, 83, 80, + 79, 78, 77, 76, 74, 73, 72, 71, 71, 70, 69, 69, 68, 67, 66, 65, + 65, 64, 63, 63, 62, 61, 60, 59, 59, 58, 58, 58, 57, 56, 55, 54, + 54, 54, 54, 54, 54, 54, 53, 51, 50, 49, 48, 50, 50, 50, 48, 46, + 71, 72, 74, 76, 76, 78, 80, 82, 87, 89, 93, 96, 100, 106, 111, 118, + 126, 134, 144, 144, 145, 152, 158, 156, 159, 161, 162, 164, 163, 174, 179, 180, + 182, 176, 180, 194, 201, 194, 211, 192, 209, 225, 218, 222, 230, 225, 226, 222, + 217, 207, 197, 198, 195, 197, 186, 167, 163, 164, 159, 155, 146, 135, 126, 120, + 117, 113, 109, 106, 104, 102, 99, 96, 95, 93, 92, 89, 88, 85, 84, 80, + 79, 77, 77, 75, 75, 73, 71, 69, 70, 69, 69, 68, 67, 66, 65, 64, + 63, 62, 62, 63, 62, 62, 62, 59, 58, 57, 57, 56, 55, 54, 54, 55, + 54, 53, 53, 54, 53, 52, 53, 52, 51, 50, 49, 50, 50, 49, 47, 46, + 71, 72, 75, 76, 76, 79, 82, 85, 90, 93, 95, 99, 106, 113, 117, 125, + 133, 140, 145, 152, 156, 152, 153, 160, 163, 162, 161, 166, 171, 168, 184, 198, + 194, 188, 178, 188, 213, 201, 212, 211, 208, 233, 228, 234, 240, 236, 238, 228, + 223, 204, 211, 209, 209, 197, 179, 172, 173, 173, 163, 155, 144, 134, 126, 121, + 118, 115, 111, 108, 106, 103, 101, 97, 95, 92, 91, 90, 88, 85, 84, 81, + 80, 79, 78, 76, 75, 74, 73, 70, 70, 70, 70, 68, 67, 66, 65, 64, + 63, 62, 62, 63, 63, 63, 62, 60, 58, 58, 57, 56, 55, 54, 54, 55, + 54, 53, 53, 54, 53, 52, 53, 54, 52, 51, 50, 50, 49, 49, 47, 46, + 71, 72, 75, 76, 76, 80, 83, 87, 91, 95, 101, 105, 113, 120, 125, 134, + 144, 147, 147, 153, 152, 155, 155, 163, 164, 166, 169, 168, 171, 183, 186, 190, + 196, 200, 191, 190, 210, 214, 214, 231, 220, 240, 235, 241, 246, 243, 243, 234, + 237, 221, 225, 212, 219, 195, 184, 187, 179, 177, 166, 153, 143, 134, 127, 122, + 119, 116, 113, 109, 106, 104, 102, 97, 95, 94, 91, 89, 88, 86, 84, 82, + 82, 80, 79, 78, 77, 76, 74, 72, 71, 71, 71, 69, 68, 67, 66, 65, + 64, 63, 62, 64, 64, 64, 64, 62, 61, 60, 59, 59, 58, 57, 57, 56, + 55, 54, 54, 54, 53, 52, 53, 54, 53, 51, 51, 50, 50, 49, 47, 46, + 71, 72, 75, 77, 77, 80, 84, 89, 93, 99, 106, 112, 120, 127, 133, 140, + 146, 150, 153, 154, 151, 150, 140, 130, 128, 133, 147, 159, 171, 177, 182, 189, + 195, 196, 194, 194, 202, 224, 224, 229, 229, 237, 245, 246, 249, 247, 246, 242, + 234, 225, 228, 226, 204, 197, 195, 193, 183, 175, 166, 152, 142, 135, 129, 123, + 120, 117, 114, 109, 106, 103, 101, 98, 96, 94, 92, 90, 89, 87, 85, 84, + 84, 82, 82, 79, 79, 78, 77, 75, 74, 73, 72, 70, 69, 68, 67, 66, + 65, 64, 63, 65, 65, 65, 64, 63, 62, 61, 61, 60, 60, 59, 59, 58, + 57, 56, 55, 54, 53, 53, 53, 55, 53, 52, 51, 50, 50, 49, 47, 46, + 71, 72, 75, 77, 77, 81, 86, 91, 95, 103, 112, 119, 127, 135, 140, 147, + 149, 154, 156, 144, 124, 102, 85, 71, 67, 71, 89, 101, 126, 161, 178, 184, + 192, 167, 173, 186, 197, 221, 232, 235, 237, 228, 245, 241, 243, 242, 242, 238, + 226, 232, 223, 221, 194, 198, 202, 199, 187, 174, 162, 154, 144, 137, 131, 125, + 122, 119, 116, 110, 107, 104, 102, 100, 99, 96, 94, 93, 91, 89, 87, 87, + 86, 85, 85, 82, 81, 80, 80, 77, 76, 75, 74, 72, 71, 70, 69, 67, + 66, 65, 64, 65, 65, 65, 65, 65, 64, 63, 63, 63, 62, 61, 61, 60, + 60, 58, 57, 56, 55, 54, 55, 55, 54, 52, 51, 51, 50, 50, 48, 46, + 71, 73, 75, 77, 78, 82, 87, 92, 97, 105, 116, 126, 134, 142, 147, 154, + 158, 155, 133, 101, 66, 45, 36, 36, 35, 42, 58, 61, 70, 92, 134, 176, + 186, 96, 80, 112, 185, 217, 234, 228, 153, 121, 120, 120, 125, 123, 125, 123, + 130, 138, 110, 91, 98, 106, 116, 164, 180, 174, 161, 156, 147, 140, 133, 127, + 123, 119, 116, 113, 110, 107, 105, 103, 102, 99, 98, 96, 95, 92, 90, 89, + 89, 87, 86, 85, 84, 83, 81, 80, 79, 76, 74, 73, 73, 71, 70, 68, + 68, 67, 66, 67, 67, 67, 67, 67, 66, 65, 65, 65, 65, 64, 64, 64, + 63, 62, 60, 59, 58, 57, 57, 56, 54, 53, 52, 51, 50, 50, 48, 46, + 71, 73, 76, 78, 79, 83, 88, 94, 98, 107, 120, 131, 140, 147, 152, 157, + 154, 131, 81, 44, 36, 32, 29, 36, 41, 52, 63, 60, 58, 57, 73, 114, + 149, 53, 57, 76, 162, 220, 234, 245, 123, 91, 74, 82, 85, 83, 89, 92, + 93, 66, 55, 64, 68, 93, 103, 125, 164, 172, 163, 158, 150, 142, 135, 128, + 124, 120, 117, 116, 115, 112, 109, 106, 105, 102, 100, 99, 97, 96, 93, 91, + 90, 89, 88, 86, 85, 84, 84, 82, 80, 78, 76, 74, 73, 72, 71, 69, + 69, 68, 67, 68, 68, 68, 69, 69, 69, 68, 68, 68, 67, 66, 66, 67, + 66, 65, 63, 61, 60, 59, 58, 56, 55, 53, 52, 50, 50, 49, 48, 47, + 71, 73, 77, 79, 80, 85, 88, 96, 100, 111, 122, 135, 141, 153, 156, 158, + 125, 67, 47, 40, 37, 44, 56, 61, 63, 61, 58, 55, 58, 60, 57, 69, + 97, 56, 53, 57, 137, 232, 242, 242, 127, 95, 84, 92, 92, 96, 102, 88, + 67, 48, 54, 83, 94, 109, 110, 93, 163, 175, 167, 157, 150, 141, 136, 130, + 126, 123, 120, 119, 117, 115, 113, 110, 108, 107, 105, 102, 101, 99, 97, 95, + 94, 93, 92, 90, 89, 87, 86, 85, 84, 82, 80, 76, 75, 73, 72, 71, + 71, 71, 71, 72, 72, 73, 74, 74, 74, 74, 74, 74, 73, 72, 72, 71, + 70, 68, 66, 66, 66, 63, 61, 59, 56, 53, 51, 49, 47, 47, 48, 48, + 71, 73, 77, 79, 81, 87, 90, 98, 103, 115, 126, 137, 146, 155, 155, 134, + 79, 51, 45, 46, 52, 58, 57, 56, 71, 81, 80, 72, 65, 61, 54, 66, + 75, 72, 71, 65, 133, 232, 247, 243, 133, 88, 85, 90, 101, 91, 111, 69, + 60, 55, 69, 104, 119, 133, 126, 96, 162, 177, 167, 158, 152, 144, 140, 135, + 132, 129, 126, 124, 122, 120, 119, 115, 113, 111, 110, 106, 104, 102, 100, 99, + 97, 96, 95, 94, 93, 90, 89, 88, 86, 84, 83, 78, 77, 75, 74, 73, + 73, 73, 73, 76, 77, 78, 78, 78, 78, 78, 78, 78, 77, 76, 76, 76, + 75, 73, 71, 70, 69, 66, 64, 62, 59, 56, 53, 50, 48, 47, 48, 48, + 71, 73, 77, 79, 82, 88, 92, 101, 108, 119, 132, 143, 150, 153, 144, 94, + 64, 53, 47, 45, 48, 49, 55, 89, 118, 133, 138, 132, 105, 80, 61, 66, + 71, 71, 65, 66, 137, 233, 250, 248, 173, 119, 91, 79, 81, 70, 54, 17, + 34, 68, 95, 125, 122, 110, 106, 110, 165, 178, 169, 160, 155, 149, 146, 141, + 138, 135, 132, 129, 128, 126, 124, 120, 118, 116, 115, 111, 109, 106, 105, 104, + 102, 101, 100, 100, 98, 96, 95, 92, 90, 88, 86, 81, 80, 78, 77, 76, + 76, 77, 78, 80, 81, 83, 83, 83, 83, 83, 83, 84, 83, 82, 82, 82, + 80, 78, 76, 73, 73, 70, 67, 65, 61, 58, 55, 51, 48, 48, 47, 47, + 72, 74, 78, 80, 84, 90, 94, 104, 112, 125, 137, 149, 155, 151, 100, 48, + 43, 37, 31, 35, 42, 47, 90, 142, 160, 171, 179, 179, 171, 139, 83, 74, + 72, 83, 64, 62, 138, 232, 249, 254, 238, 191, 145, 90, 81, 66, 18, 19, + 71, 110, 130, 126, 86, 111, 132, 145, 175, 178, 172, 166, 161, 155, 151, 145, + 142, 140, 137, 133, 132, 130, 128, 125, 123, 121, 119, 116, 114, 113, 112, 110, + 108, 107, 107, 106, 105, 102, 100, 97, 94, 91, 89, 85, 83, 81, 79, 79, + 80, 81, 82, 83, 85, 87, 88, 88, 88, 88, 88, 89, 88, 87, 87, 88, + 86, 83, 80, 78, 76, 73, 69, 66, 62, 58, 56, 53, 49, 48, 47, 47, + 73, 75, 79, 81, 86, 92, 97, 107, 118, 131, 143, 153, 160, 136, 40, 30, + 37, 38, 41, 47, 46, 83, 152, 170, 175, 178, 184, 187, 192, 187, 142, 93, + 76, 72, 64, 65, 135, 231, 251, 253, 251, 244, 237, 172, 111, 56, 78, 115, + 131, 137, 145, 93, 98, 172, 191, 193, 192, 185, 180, 175, 169, 162, 158, 151, + 148, 145, 143, 139, 137, 135, 134, 130, 128, 125, 124, 122, 121, 119, 118, 115, + 115, 114, 113, 112, 111, 109, 107, 103, 99, 95, 93, 88, 86, 84, 83, 83, + 85, 87, 87, 87, 90, 92, 94, 95, 95, 95, 95, 97, 96, 95, 94, 93, + 91, 89, 87, 84, 82, 78, 73, 68, 64, 59, 57, 54, 50, 49, 47, 46, + 73, 75, 79, 81, 87, 94, 99, 110, 121, 135, 147, 157, 156, 96, 32, 51, + 57, 55, 52, 45, 58, 128, 173, 181, 181, 182, 185, 187, 190, 191, 185, 118, + 75, 69, 78, 80, 143, 238, 254, 253, 252, 251, 251, 220, 90, 57, 104, 135, + 136, 132, 135, 80, 150, 213, 220, 212, 204, 197, 188, 182, 175, 167, 161, 157, + 154, 151, 149, 146, 143, 141, 139, 136, 134, 132, 130, 126, 124, 123, 121, 118, + 118, 117, 116, 116, 114, 112, 110, 107, 104, 99, 96, 91, 89, 87, 85, 85, + 87, 89, 90, 92, 94, 97, 99, 102, 101, 101, 102, 104, 103, 102, 101, 99, + 97, 95, 93, 91, 88, 84, 78, 72, 67, 62, 58, 55, 51, 49, 47, 46, + 74, 75, 79, 83, 88, 96, 104, 114, 124, 137, 152, 156, 138, 65, 42, 62, + 61, 54, 44, 36, 88, 158, 177, 182, 180, 182, 185, 188, 196, 196, 199, 160, + 83, 86, 90, 88, 137, 238, 254, 252, 252, 252, 253, 238, 55, 98, 130, 138, + 136, 128, 119, 88, 186, 234, 236, 219, 207, 199, 188, 183, 178, 169, 162, 159, + 156, 152, 151, 151, 146, 144, 142, 142, 142, 140, 136, 132, 129, 126, 124, 120, + 119, 123, 121, 122, 119, 116, 114, 115, 110, 106, 100, 95, 92, 90, 88, 87, + 89, 92, 96, 97, 101, 105, 106, 109, 108, 108, 109, 109, 108, 109, 110, 107, + 102, 100, 100, 97, 95, 85, 83, 77, 71, 66, 60, 56, 52, 50, 48, 46, + 74, 75, 80, 85, 89, 98, 107, 118, 128, 141, 155, 156, 117, 45, 40, 61, + 53, 50, 45, 46, 121, 172, 180, 176, 176, 177, 182, 186, 194, 200, 205, 198, + 112, 87, 83, 82, 123, 234, 254, 255, 255, 254, 253, 250, 98, 127, 143, 137, + 123, 115, 117, 97, 204, 240, 232, 215, 200, 191, 184, 179, 174, 166, 158, 158, + 155, 151, 151, 151, 146, 145, 142, 145, 146, 143, 139, 136, 133, 131, 130, 129, + 125, 130, 128, 125, 129, 127, 120, 118, 118, 113, 104, 100, 97, 94, 92, 91, + 93, 98, 103, 108, 109, 113, 115, 118, 118, 117, 117, 118, 117, 117, 115, 113, + 114, 112, 108, 104, 96, 93, 89, 80, 74, 69, 62, 58, 53, 51, 49, 47, + 74, 75, 80, 85, 90, 100, 109, 120, 132, 147, 154, 150, 73, 15, 29, 54, + 50, 52, 48, 63, 143, 178, 177, 171, 170, 172, 176, 180, 189, 196, 202, 203, + 132, 92, 101, 84, 124, 236, 254, 254, 254, 254, 254, 250, 128, 126, 138, 134, + 127, 125, 124, 93, 198, 223, 209, 198, 190, 184, 179, 176, 172, 165, 158, 158, + 157, 155, 156, 154, 151, 150, 146, 150, 151, 148, 145, 139, 138, 139, 139, 138, + 134, 135, 135, 134, 131, 130, 132, 122, 124, 117, 110, 107, 103, 100, 99, 97, + 100, 106, 111, 115, 114, 117, 121, 125, 124, 123, 123, 124, 125, 126, 127, 125, + 125, 123, 115, 114, 104, 100, 93, 83, 77, 70, 63, 59, 54, 52, 49, 47, + 74, 75, 80, 85, 91, 101, 111, 122, 135, 147, 155, 120, 25, 14, 32, 50, + 56, 61, 47, 84, 157, 174, 168, 164, 164, 166, 169, 173, 179, 188, 195, 199, + 158, 104, 88, 61, 124, 231, 252, 253, 252, 251, 250, 250, 117, 89, 69, 99, + 121, 114, 121, 99, 204, 230, 221, 212, 202, 194, 187, 184, 182, 176, 170, 166, + 166, 167, 167, 165, 164, 160, 155, 150, 150, 148, 145, 147, 148, 147, 147, 146, + 146, 146, 144, 145, 141, 138, 138, 137, 130, 120, 122, 115, 110, 107, 105, 105, + 107, 113, 118, 120, 125, 126, 131, 133, 133, 133, 134, 137, 136, 138, 143, 139, + 131, 131, 125, 116, 119, 102, 95, 87, 80, 74, 66, 61, 55, 52, 49, 47, + 74, 75, 80, 85, 92, 103, 113, 125, 138, 145, 156, 95, 42, 47, 51, 63, + 58, 63, 46, 106, 162, 170, 164, 161, 159, 160, 164, 169, 176, 184, 192, 195, + 179, 110, 85, 63, 117, 220, 243, 247, 245, 251, 254, 251, 118, 88, 90, 88, + 98, 122, 129, 95, 198, 227, 222, 218, 210, 203, 197, 192, 189, 185, 180, 175, + 174, 176, 177, 175, 172, 165, 161, 159, 158, 155, 152, 155, 156, 155, 155, 157, + 159, 154, 147, 146, 146, 143, 139, 135, 134, 131, 128, 122, 117, 113, 111, 111, + 114, 119, 125, 129, 136, 133, 135, 136, 138, 139, 139, 142, 148, 149, 148, 146, + 143, 140, 130, 124, 112, 114, 101, 91, 84, 77, 68, 63, 57, 53, 49, 47, + 74, 75, 80, 86, 93, 104, 115, 127, 140, 148, 153, 85, 67, 62, 59, 72, + 64, 59, 49, 125, 165, 166, 162, 159, 155, 157, 161, 165, 173, 180, 187, 191, + 178, 84, 72, 73, 113, 214, 245, 250, 251, 254, 253, 248, 134, 119, 140, 123, + 90, 89, 105, 99, 201, 224, 211, 207, 202, 195, 191, 188, 186, 183, 180, 175, + 175, 177, 177, 177, 174, 166, 167, 163, 160, 156, 152, 156, 159, 162, 164, 163, + 161, 154, 153, 149, 130, 125, 134, 138, 135, 139, 132, 129, 126, 122, 119, 119, + 121, 126, 131, 133, 137, 136, 142, 141, 145, 150, 149, 141, 144, 149, 152, 153, + 149, 140, 142, 141, 114, 112, 99, 94, 86, 79, 70, 64, 58, 53, 49, 47, + 74, 75, 80, 86, 94, 105, 116, 129, 141, 153, 147, 84, 61, 56, 64, 77, + 79, 58, 54, 134, 164, 163, 158, 155, 153, 155, 158, 162, 167, 174, 178, 187, + 177, 75, 90, 100, 117, 219, 252, 254, 254, 255, 254, 250, 144, 151, 135, 142, + 126, 93, 76, 97, 206, 236, 228, 214, 201, 190, 182, 179, 179, 177, 175, 169, + 169, 170, 169, 174, 173, 167, 174, 186, 185, 179, 175, 154, 158, 165, 170, 167, + 163, 160, 173, 194, 191, 176, 158, 160, 132, 137, 138, 135, 132, 128, 126, 127, + 128, 132, 135, 138, 140, 148, 168, 175, 182, 188, 190, 172, 135, 131, 149, 154, + 146, 156, 176, 136, 140, 101, 101, 97, 89, 81, 72, 65, 58, 54, 49, 47, + 75, 77, 82, 88, 95, 105, 116, 129, 148, 150, 129, 65, 58, 70, 78, 84, + 81, 55, 68, 144, 165, 162, 154, 150, 148, 146, 149, 153, 160, 166, 172, 181, + 179, 148, 139, 121, 134, 231, 254, 254, 254, 254, 254, 250, 139, 139, 134, 151, + 143, 138, 140, 95, 203, 235, 225, 224, 214, 196, 179, 171, 166, 168, 179, 178, + 174, 174, 132, 164, 171, 182, 179, 152, 136, 149, 121, 130, 133, 159, 170, 164, + 163, 190, 186, 190, 202, 219, 227, 209, 159, 126, 137, 138, 135, 134, 135, 130, + 134, 140, 138, 139, 150, 152, 156, 152, 146, 150, 135, 83, 51, 122, 156, 148, + 155, 187, 157, 175, 173, 106, 90, 100, 91, 83, 73, 65, 58, 53, 49, 47, + 75, 77, 83, 88, 96, 107, 117, 131, 146, 155, 125, 71, 58, 82, 70, 63, + 43, 40, 74, 150, 162, 156, 149, 145, 143, 141, 144, 148, 156, 163, 168, 178, + 187, 172, 136, 125, 167, 234, 252, 254, 253, 254, 254, 250, 149, 133, 133, 123, + 143, 140, 140, 97, 191, 228, 224, 213, 204, 187, 173, 155, 184, 168, 166, 168, + 159, 163, 107, 148, 173, 198, 185, 141, 137, 122, 115, 124, 125, 127, 161, 161, + 185, 211, 188, 176, 203, 210, 211, 225, 198, 135, 126, 138, 138, 136, 138, 141, + 142, 139, 141, 160, 169, 172, 141, 118, 120, 133, 77, 80, 130, 186, 205, 153, + 169, 181, 148, 180, 165, 126, 73, 97, 93, 84, 75, 67, 60, 55, 49, 47, + 75, 77, 83, 89, 98, 109, 119, 133, 153, 154, 99, 61, 76, 88, 77, 75, + 61, 66, 89, 152, 157, 151, 143, 139, 138, 137, 140, 145, 152, 160, 167, 176, + 189, 199, 189, 185, 201, 235, 248, 254, 248, 254, 254, 252, 134, 116, 149, 137, + 134, 112, 126, 95, 184, 219, 219, 211, 204, 180, 168, 150, 175, 160, 162, 156, + 159, 151, 90, 160, 192, 196, 176, 188, 183, 193, 204, 207, 192, 149, 139, 169, + 176, 155, 175, 181, 200, 202, 204, 175, 169, 200, 116, 135, 141, 139, 142, 147, + 145, 141, 158, 197, 190, 188, 156, 122, 126, 132, 136, 179, 195, 196, 200, 186, + 167, 159, 150, 164, 138, 144, 65, 93, 95, 84, 76, 68, 61, 56, 51, 48, + 75, 77, 83, 89, 99, 110, 121, 135, 154, 152, 91, 75, 97, 80, 84, 76, + 68, 79, 93, 154, 156, 149, 140, 137, 136, 136, 139, 143, 149, 160, 170, 184, + 195, 194, 194, 205, 219, 235, 245, 254, 248, 254, 253, 250, 124, 117, 127, 118, + 145, 153, 147, 95, 187, 213, 210, 209, 200, 167, 160, 164, 162, 154, 166, 175, + 156, 169, 122, 188, 196, 196, 171, 187, 150, 201, 202, 207, 220, 201, 132, 196, + 184, 171, 187, 191, 206, 206, 188, 146, 180, 244, 129, 125, 145, 145, 146, 150, + 147, 154, 178, 196, 191, 187, 187, 172, 115, 96, 163, 204, 184, 158, 175, 158, + 150, 144, 134, 159, 140, 145, 57, 91, 96, 85, 77, 69, 61, 57, 51, 48, + 75, 77, 83, 89, 100, 110, 121, 134, 150, 153, 103, 97, 86, 71, 92, 71, + 85, 86, 94, 152, 157, 149, 141, 137, 135, 136, 139, 144, 151, 161, 171, 182, + 189, 192, 202, 214, 221, 233, 240, 245, 251, 254, 250, 246, 132, 141, 138, 119, + 135, 133, 143, 103, 192, 213, 204, 205, 196, 163, 157, 165, 157, 161, 174, 190, + 145, 163, 160, 208, 208, 188, 171, 188, 146, 196, 182, 201, 189, 203, 177, 217, + 195, 201, 220, 207, 200, 196, 174, 164, 234, 221, 131, 109, 147, 151, 152, 154, + 154, 172, 188, 190, 204, 187, 200, 150, 78, 103, 148, 193, 168, 128, 156, 149, + 165, 92, 93, 158, 171, 139, 60, 94, 95, 85, 76, 68, 61, 56, 51, 49, + 75, 77, 83, 89, 99, 109, 120, 134, 150, 151, 104, 81, 58, 69, 87, 58, + 79, 75, 105, 160, 157, 149, 141, 135, 133, 134, 139, 145, 154, 161, 168, 175, + 182, 189, 198, 208, 218, 227, 229, 233, 252, 255, 248, 247, 154, 137, 137, 135, + 149, 139, 144, 99, 187, 217, 207, 204, 199, 170, 155, 163, 156, 176, 184, 193, + 177, 161, 185, 206, 175, 130, 137, 194, 183, 202, 182, 164, 175, 209, 206, 203, + 196, 158, 166, 206, 209, 214, 203, 205, 194, 134, 147, 91, 146, 156, 157, 158, + 160, 181, 163, 138, 177, 174, 181, 85, 102, 154, 165, 168, 141, 133, 140, 133, + 167, 119, 91, 156, 148, 86, 64, 99, 92, 84, 74, 67, 60, 55, 51, 49, + 75, 77, 83, 89, 98, 109, 120, 134, 149, 147, 97, 68, 61, 70, 65, 54, + 108, 83, 112, 155, 155, 147, 139, 134, 133, 134, 140, 146, 155, 159, 163, 171, + 181, 188, 197, 209, 216, 220, 222, 229, 251, 251, 251, 239, 172, 153, 155, 151, + 149, 145, 153, 93, 180, 218, 211, 201, 198, 179, 157, 179, 168, 186, 182, 189, + 183, 157, 179, 166, 97, 103, 126, 191, 192, 189, 169, 178, 187, 194, 197, 198, + 117, 84, 108, 153, 197, 199, 160, 184, 152, 135, 137, 79, 146, 159, 160, 159, + 160, 173, 154, 155, 167, 148, 132, 69, 140, 186, 188, 172, 148, 158, 124, 132, + 150, 130, 93, 119, 102, 77, 98, 103, 92, 84, 73, 66, 59, 54, 50, 48, + 73, 76, 82, 89, 97, 108, 120, 135, 151, 142, 86, 72, 87, 85, 73, 88, + 116, 84, 114, 157, 155, 146, 138, 136, 137, 139, 144, 147, 148, 153, 161, 167, + 176, 185, 194, 203, 211, 211, 216, 227, 249, 240, 254, 240, 164, 160, 166, 165, + 161, 161, 161, 95, 180, 212, 210, 202, 199, 195, 182, 175, 174, 182, 180, 200, + 184, 159, 174, 102, 105, 163, 185, 194, 206, 200, 197, 198, 175, 170, 174, 141, + 77, 135, 164, 159, 154, 124, 87, 135, 150, 172, 171, 70, 147, 161, 165, 161, + 162, 170, 182, 182, 176, 146, 121, 75, 160, 194, 191, 176, 167, 168, 118, 144, + 116, 124, 83, 128, 126, 116, 114, 105, 93, 82, 72, 65, 58, 53, 50, 48, + 73, 75, 82, 89, 97, 108, 120, 135, 149, 145, 106, 93, 102, 102, 98, 118, + 112, 80, 113, 158, 156, 148, 141, 139, 141, 140, 141, 144, 146, 152, 159, 166, + 174, 180, 191, 200, 202, 203, 212, 225, 238, 233, 250, 235, 167, 157, 142, 169, + 174, 163, 170, 98, 178, 209, 207, 204, 203, 200, 194, 191, 190, 181, 176, 198, + 190, 172, 130, 77, 154, 189, 203, 200, 226, 217, 211, 216, 185, 203, 185, 81, + 112, 174, 183, 181, 186, 175, 169, 192, 182, 202, 187, 67, 146, 162, 166, 161, + 178, 187, 178, 169, 176, 160, 131, 75, 174, 195, 197, 182, 165, 153, 110, 136, + 138, 139, 70, 123, 138, 130, 119, 103, 91, 81, 71, 64, 58, 53, 50, 48, + 72, 75, 81, 88, 96, 108, 120, 134, 146, 149, 127, 114, 102, 104, 105, 121, + 95, 71, 109, 158, 159, 152, 145, 142, 141, 139, 138, 141, 145, 151, 158, 165, + 173, 179, 189, 195, 194, 196, 209, 224, 226, 228, 245, 227, 172, 158, 172, 179, + 177, 161, 181, 97, 176, 207, 204, 201, 202, 202, 197, 193, 191, 176, 183, 217, + 208, 153, 74, 99, 180, 194, 201, 203, 222, 210, 217, 220, 188, 203, 187, 70, + 149, 188, 186, 180, 206, 215, 205, 214, 211, 197, 178, 64, 146, 164, 168, 168, + 186, 180, 157, 139, 168, 166, 138, 86, 176, 202, 201, 182, 146, 132, 126, 139, + 150, 143, 65, 118, 140, 129, 115, 101, 89, 79, 69, 63, 57, 53, 49, 47, + 71, 74, 81, 88, 95, 107, 119, 134, 149, 147, 124, 103, 91, 93, 97, 100, + 92, 76, 110, 160, 162, 155, 147, 142, 136, 136, 138, 140, 145, 151, 158, 163, + 171, 181, 184, 187, 189, 194, 208, 221, 215, 226, 240, 229, 167, 165, 187, 167, + 190, 178, 179, 93, 176, 205, 200, 195, 199, 204, 197, 186, 180, 173, 200, 217, + 179, 77, 46, 125, 190, 211, 197, 202, 217, 214, 217, 198, 173, 187, 151, 85, + 170, 194, 199, 198, 190, 188, 161, 187, 189, 168, 158, 63, 147, 167, 170, 167, + 176, 166, 165, 156, 168, 153, 125, 92, 180, 202, 200, 177, 148, 148, 152, 145, + 136, 117, 64, 117, 135, 125, 111, 97, 86, 77, 68, 62, 56, 53, 49, 46, + 71, 74, 80, 87, 94, 106, 118, 133, 146, 148, 128, 108, 97, 95, 108, 105, + 109, 92, 111, 163, 165, 157, 148, 142, 136, 136, 138, 142, 146, 152, 160, 165, + 173, 182, 181, 182, 187, 196, 209, 216, 207, 227, 234, 225, 148, 155, 144, 154, + 187, 156, 160, 98, 176, 204, 199, 192, 198, 205, 199, 192, 187, 188, 202, 178, + 87, 98, 75, 139, 200, 209, 202, 193, 182, 184, 190, 159, 153, 197, 135, 101, + 186, 198, 200, 193, 186, 190, 156, 202, 174, 167, 146, 65, 150, 169, 171, 166, + 164, 155, 165, 149, 151, 142, 127, 90, 186, 197, 200, 180, 162, 151, 138, 128, + 118, 127, 65, 116, 133, 125, 112, 94, 83, 75, 66, 60, 55, 52, 49, 46, + 70, 74, 80, 87, 94, 106, 118, 132, 143, 150, 130, 111, 97, 90, 114, 114, + 116, 96, 106, 163, 167, 158, 147, 142, 141, 140, 140, 143, 148, 154, 161, 168, + 176, 179, 177, 180, 186, 197, 209, 211, 202, 226, 229, 218, 151, 162, 163, 159, + 154, 122, 137, 92, 177, 204, 198, 192, 195, 201, 200, 192, 192, 197, 181, 137, + 125, 205, 91, 152, 202, 205, 205, 193, 177, 178, 163, 145, 158, 201, 139, 110, + 194, 197, 200, 198, 177, 178, 167, 192, 164, 158, 130, 67, 153, 171, 172, 171, + 163, 164, 169, 148, 158, 148, 136, 99, 181, 200, 197, 179, 160, 135, 124, 120, + 119, 110, 61, 117, 132, 121, 108, 92, 82, 73, 65, 59, 54, 52, 48, 46, + 71, 74, 79, 85, 94, 105, 116, 131, 144, 152, 131, 103, 90, 93, 118, 119, + 118, 111, 95, 162, 167, 159, 149, 143, 142, 141, 143, 145, 149, 154, 163, 171, + 178, 176, 172, 179, 183, 198, 211, 203, 199, 225, 226, 215, 191, 182, 189, 183, + 161, 146, 156, 87, 176, 202, 198, 193, 193, 196, 196, 193, 198, 169, 125, 151, + 221, 238, 94, 150, 198, 203, 201, 196, 202, 178, 143, 154, 176, 199, 141, 114, + 192, 197, 198, 193, 170, 167, 149, 174, 152, 140, 124, 67, 154, 173, 174, 171, + 170, 180, 176, 159, 170, 160, 150, 108, 169, 198, 190, 172, 152, 119, 129, 129, + 136, 86, 71, 120, 129, 117, 102, 89, 79, 70, 62, 57, 54, 51, 47, 46, + 72, 74, 78, 84, 94, 105, 116, 130, 143, 151, 135, 106, 99, 108, 115, 123, + 119, 113, 94, 158, 167, 160, 152, 146, 144, 143, 145, 148, 151, 156, 163, 172, + 176, 171, 175, 180, 185, 200, 203, 196, 200, 225, 223, 220, 206, 171, 181, 192, + 188, 187, 160, 89, 175, 202, 198, 193, 193, 196, 194, 183, 172, 124, 175, 226, + 239, 198, 78, 151, 197, 200, 198, 193, 193, 160, 154, 183, 191, 192, 106, 115, + 192, 198, 196, 196, 180, 172, 168, 168, 139, 138, 146, 67, 155, 175, 175, 173, + 171, 175, 164, 152, 151, 140, 135, 104, 149, 194, 195, 168, 149, 125, 139, 134, + 128, 67, 80, 124, 125, 114, 100, 87, 77, 69, 60, 56, 53, 51, 47, 46, + 71, 72, 77, 83, 92, 103, 114, 128, 140, 150, 142, 117, 112, 119, 107, 132, + 133, 125, 92, 150, 169, 164, 156, 152, 147, 147, 148, 151, 153, 159, 164, 169, + 172, 171, 174, 172, 187, 200, 197, 194, 203, 224, 219, 216, 159, 168, 132, 178, + 192, 148, 124, 94, 175, 204, 198, 190, 194, 198, 193, 170, 127, 183, 239, 236, + 204, 169, 81, 151, 197, 199, 196, 193, 184, 186, 167, 193, 194, 189, 105, 116, + 192, 197, 194, 191, 190, 165, 176, 168, 143, 147, 161, 69, 157, 177, 178, 178, + 172, 164, 148, 151, 136, 131, 132, 133, 140, 172, 175, 150, 140, 131, 125, 118, + 85, 55, 105, 128, 121, 110, 97, 84, 75, 67, 59, 55, 53, 50, 47, 46, + 71, 72, 77, 82, 91, 102, 113, 126, 139, 150, 149, 130, 117, 126, 113, 144, + 149, 141, 92, 145, 172, 168, 159, 154, 149, 148, 150, 153, 156, 162, 164, 166, + 171, 171, 167, 172, 179, 187, 196, 191, 207, 222, 216, 210, 87, 87, 129, 197, + 159, 92, 142, 98, 175, 205, 198, 190, 194, 199, 193, 163, 192, 244, 236, 210, + 204, 196, 93, 150, 196, 198, 194, 186, 169, 204, 160, 186, 182, 183, 115, 115, + 191, 196, 193, 184, 190, 158, 160, 167, 155, 155, 155, 69, 158, 179, 180, 182, + 178, 167, 151, 149, 137, 142, 143, 155, 150, 159, 153, 118, 116, 126, 119, 96, + 58, 78, 128, 131, 117, 106, 93, 82, 72, 66, 58, 54, 52, 49, 47, 46, + 70, 71, 76, 82, 90, 101, 112, 125, 139, 150, 155, 142, 129, 133, 124, 150, + 139, 120, 96, 130, 173, 173, 161, 156, 152, 151, 153, 156, 160, 164, 165, 167, + 174, 166, 170, 195, 181, 170, 186, 187, 208, 218, 213, 209, 150, 119, 133, 139, + 79, 118, 186, 98, 174, 204, 198, 191, 194, 198, 193, 194, 236, 212, 201, 207, + 197, 216, 90, 151, 196, 196, 192, 181, 178, 195, 147, 185, 186, 189, 118, 113, + 190, 195, 192, 185, 186, 165, 155, 168, 160, 159, 159, 69, 158, 179, 181, 184, + 186, 181, 168, 147, 135, 135, 132, 154, 150, 145, 135, 109, 122, 123, 100, 71, + 67, 115, 136, 132, 114, 103, 90, 79, 70, 64, 57, 54, 51, 48, 46, 46, + 70, 71, 76, 81, 89, 100, 111, 124, 137, 147, 156, 148, 137, 138, 130, 150, + 125, 110, 117, 116, 169, 176, 164, 160, 157, 156, 159, 161, 163, 164, 165, 169, + 175, 166, 179, 212, 194, 161, 168, 185, 209, 213, 212, 211, 184, 197, 165, 131, + 122, 201, 192, 90, 173, 203, 199, 193, 193, 197, 193, 205, 229, 170, 163, 189, + 167, 218, 89, 151, 195, 194, 190, 189, 209, 189, 138, 168, 182, 186, 127, 114, + 189, 193, 191, 188, 172, 162, 161, 168, 158, 157, 163, 67, 157, 179, 181, 184, + 189, 189, 183, 158, 139, 132, 133, 153, 133, 123, 120, 122, 132, 99, 66, 67, + 102, 140, 141, 132, 113, 102, 87, 77, 69, 63, 56, 53, 50, 48, 46, 46, + 69, 71, 76, 80, 88, 99, 109, 122, 133, 143, 155, 150, 136, 140, 128, 148, + 143, 152, 153, 117, 160, 176, 170, 165, 162, 162, 164, 166, 167, 165, 166, 169, + 172, 173, 180, 199, 195, 148, 141, 184, 210, 211, 212, 204, 209, 201, 200, 205, + 210, 222, 213, 100, 172, 201, 200, 195, 193, 194, 193, 199, 200, 192, 206, 160, + 208, 219, 85, 149, 194, 193, 189, 190, 191, 168, 148, 157, 150, 141, 87, 114, + 188, 193, 191, 186, 150, 141, 155, 163, 158, 152, 153, 65, 156, 177, 180, 183, + 187, 187, 184, 163, 146, 142, 147, 135, 110, 124, 140, 130, 97, 67, 84, 116, + 148, 147, 145, 131, 113, 102, 86, 76, 68, 63, 56, 53, 50, 47, 46, 46, + 68, 73, 77, 81, 87, 97, 105, 117, 129, 140, 149, 154, 151, 143, 122, 132, + 155, 148, 155, 115, 140, 171, 177, 171, 166, 164, 170, 168, 172, 167, 171, 169, + 173, 177, 170, 151, 184, 107, 111, 185, 212, 208, 208, 203, 218, 203, 211, 212, + 213, 230, 228, 102, 167, 196, 200, 196, 192, 194, 191, 191, 187, 189, 217, 205, + 191, 184, 84, 146, 192, 192, 190, 183, 154, 155, 174, 187, 195, 177, 117, 117, + 186, 196, 191, 188, 135, 101, 103, 135, 149, 152, 144, 64, 157, 176, 180, 181, + 184, 181, 167, 134, 149, 144, 119, 93, 103, 112, 104, 106, 115, 131, 154, 163, + 163, 155, 144, 132, 117, 102, 89, 77, 69, 63, 57, 53, 49, 47, 46, 46, + 68, 72, 77, 80, 86, 95, 103, 114, 124, 136, 146, 153, 149, 134, 128, 129, + 142, 131, 141, 145, 118, 163, 174, 177, 173, 172, 175, 171, 170, 168, 169, 173, + 177, 202, 169, 173, 152, 71, 125, 186, 210, 206, 205, 201, 217, 189, 197, 210, + 191, 224, 203, 104, 161, 194, 200, 200, 195, 190, 188, 194, 207, 202, 183, 174, + 154, 158, 72, 146, 189, 194, 189, 182, 185, 203, 188, 185, 192, 180, 120, 114, + 186, 197, 195, 187, 173, 151, 114, 109, 123, 129, 127, 63, 152, 177, 180, 186, + 184, 168, 143, 136, 148, 138, 74, 92, 150, 163, 163, 172, 176, 177, 181, 178, + 169, 157, 146, 132, 117, 103, 90, 78, 70, 63, 57, 53, 49, 47, 47, 46, + 69, 72, 76, 79, 85, 93, 100, 110, 119, 131, 142, 150, 146, 136, 138, 123, + 119, 120, 155, 157, 131, 143, 175, 172, 177, 173, 174, 174, 168, 165, 163, 172, + 197, 204, 176, 174, 107, 81, 152, 192, 204, 198, 199, 202, 204, 186, 200, 197, + 186, 209, 170, 119, 150, 195, 193, 195, 196, 193, 185, 196, 213, 202, 161, 117, + 150, 157, 76, 151, 190, 193, 191, 185, 205, 210, 168, 173, 177, 168, 113, 118, + 183, 190, 192, 181, 178, 164, 157, 152, 127, 118, 131, 64, 156, 175, 180, 180, + 178, 158, 133, 126, 130, 131, 98, 124, 183, 186, 193, 196, 196, 190, 184, 180, + 169, 157, 147, 132, 117, 103, 91, 80, 71, 64, 57, 53, 49, 48, 47, 46, + 69, 72, 75, 78, 84, 91, 96, 106, 116, 127, 138, 148, 150, 154, 166, 157, + 151, 142, 159, 163, 148, 143, 153, 171, 179, 179, 174, 170, 162, 166, 170, 193, + 201, 193, 180, 158, 74, 119, 169, 195, 198, 187, 193, 198, 193, 191, 202, 195, + 194, 221, 203, 159, 135, 179, 186, 193, 196, 192, 181, 184, 202, 183, 198, 173, + 122, 140, 90, 139, 190, 193, 189, 182, 202, 184, 154, 170, 166, 163, 120, 111, + 176, 184, 186, 181, 181, 134, 154, 157, 164, 160, 152, 81, 148, 175, 182, 184, + 178, 149, 137, 126, 111, 107, 116, 115, 144, 152, 175, 186, 186, 185, 182, 176, + 171, 159, 147, 134, 119, 105, 93, 82, 72, 65, 57, 53, 49, 48, 47, 46, + 69, 71, 74, 76, 82, 88, 92, 101, 111, 123, 134, 145, 148, 148, 159, 171, + 167, 163, 164, 158, 152, 166, 139, 162, 168, 173, 164, 156, 158, 168, 182, 203, + 197, 186, 166, 98, 88, 147, 181, 192, 189, 183, 191, 187, 192, 189, 187, 191, + 198, 213, 213, 211, 162, 163, 175, 182, 190, 186, 181, 186, 187, 181, 201, 197, + 123, 132, 118, 134, 178, 187, 185, 194, 193, 162, 158, 168, 162, 164, 130, 97, + 165, 179, 172, 168, 170, 108, 158, 154, 157, 156, 158, 114, 128, 169, 175, 176, + 174, 134, 132, 101, 106, 104, 114, 99, 72, 103, 145, 138, 140, 150, 157, 164, + 166, 158, 147, 137, 122, 109, 95, 84, 73, 66, 58, 53, 50, 48, 47, 46, + 69, 71, 74, 75, 81, 86, 89, 97, 105, 117, 128, 140, 151, 152, 152, 160, + 141, 161, 174, 133, 128, 145, 144, 167, 160, 149, 149, 164, 192, 183, 148, 143, + 173, 170, 116, 69, 129, 164, 188, 191, 197, 206, 214, 200, 193, 188, 193, 205, + 204, 206, 200, 189, 199, 216, 205, 148, 176, 192, 188, 191, 183, 171, 168, 182, + 194, 195, 188, 164, 153, 168, 196, 207, 172, 151, 150, 162, 159, 154, 111, 113, + 149, 151, 147, 133, 127, 89, 156, 124, 142, 145, 140, 132, 138, 145, 156, 178, + 176, 109, 111, 97, 118, 111, 85, 68, 88, 119, 109, 84, 87, 98, 107, 125, + 136, 144, 146, 138, 125, 112, 99, 85, 75, 66, 58, 54, 50, 48, 47, 46, + 69, 71, 73, 74, 80, 84, 88, 95, 101, 112, 124, 135, 140, 150, 152, 154, + 144, 167, 162, 130, 102, 108, 131, 163, 166, 155, 160, 196, 201, 159, 145, 173, + 168, 137, 76, 110, 150, 170, 184, 182, 196, 210, 214, 198, 187, 190, 203, 208, + 199, 205, 191, 180, 204, 199, 185, 112, 162, 210, 198, 184, 182, 156, 176, 191, + 175, 179, 181, 177, 132, 146, 203, 188, 148, 150, 154, 162, 160, 144, 121, 140, + 130, 115, 115, 113, 106, 100, 145, 135, 138, 132, 128, 135, 147, 121, 134, 172, + 166, 93, 81, 78, 98, 103, 91, 91, 109, 115, 91, 80, 88, 95, 93, 99, + 107, 122, 136, 136, 125, 117, 101, 87, 76, 67, 59, 55, 51, 48, 47, 46, + 70, 70, 72, 73, 79, 82, 87, 93, 98, 109, 119, 130, 140, 145, 152, 152, + 142, 171, 153, 156, 158, 158, 177, 180, 189, 174, 178, 220, 201, 190, 185, 211, + 175, 86, 92, 145, 161, 170, 182, 180, 200, 208, 208, 188, 183, 192, 202, 197, + 202, 197, 177, 187, 205, 186, 162, 91, 158, 211, 191, 174, 173, 170, 189, 181, + 153, 154, 164, 172, 111, 124, 187, 160, 145, 160, 161, 163, 164, 142, 161, 114, + 100, 87, 85, 64, 70, 113, 145, 138, 134, 129, 127, 135, 130, 99, 107, 173, + 173, 132, 110, 117, 112, 114, 100, 99, 123, 113, 101, 97, 106, 106, 98, 97, + 93, 94, 106, 126, 125, 121, 103, 89, 78, 69, 61, 56, 52, 49, 47, 46, + 69, 70, 72, 72, 78, 81, 85, 91, 94, 105, 113, 124, 133, 140, 147, 152, + 148, 143, 145, 168, 177, 186, 199, 200, 212, 136, 195, 212, 172, 188, 184, 159, + 95, 94, 139, 154, 161, 169, 179, 174, 185, 180, 177, 172, 177, 187, 198, 198, + 197, 191, 187, 197, 206, 182, 174, 88, 147, 164, 137, 149, 164, 172, 185, 177, + 160, 161, 159, 146, 94, 123, 183, 171, 169, 173, 150, 127, 114, 68, 71, 78, + 107, 77, 124, 132, 128, 157, 152, 143, 137, 130, 127, 135, 130, 100, 110, 175, + 179, 152, 126, 124, 124, 129, 88, 100, 123, 97, 93, 89, 92, 86, 80, 82, + 82, 82, 78, 105, 126, 119, 106, 92, 80, 71, 62, 57, 52, 49, 47, 45, + 68, 69, 71, 72, 77, 79, 83, 88, 93, 101, 108, 117, 125, 133, 142, 146, + 149, 147, 142, 145, 176, 175, 193, 207, 181, 164, 214, 193, 145, 139, 87, 68, + 107, 137, 153, 161, 159, 165, 172, 169, 168, 143, 129, 128, 131, 134, 139, 137, + 129, 119, 118, 126, 130, 118, 121, 96, 149, 139, 109, 101, 105, 110, 112, 113, + 108, 107, 99, 97, 87, 126, 160, 130, 112, 101, 82, 72, 77, 72, 88, 103, + 93, 103, 148, 125, 100, 108, 95, 96, 92, 86, 85, 95, 90, 83, 114, 173, + 183, 164, 126, 118, 125, 103, 88, 117, 101, 71, 75, 80, 84, 78, 74, 68, + 73, 76, 66, 78, 115, 120, 108, 94, 82, 74, 64, 57, 53, 50, 47, 45, + 68, 68, 70, 71, 76, 77, 81, 86, 92, 99, 104, 111, 119, 126, 135, 141, + 151, 150, 145, 131, 118, 120, 145, 148, 117, 159, 157, 108, 100, 78, 93, 138, + 149, 155, 157, 153, 154, 161, 166, 164, 161, 137, 126, 130, 132, 130, 131, 139, + 137, 128, 125, 130, 130, 132, 128, 136, 156, 150, 132, 124, 124, 122, 120, 119, + 118, 122, 124, 120, 124, 138, 145, 130, 118, 116, 118, 120, 120, 113, 116, 114, + 115, 128, 135, 118, 107, 114, 115, 116, 114, 113, 113, 114, 118, 123, 151, 177, + 183, 177, 145, 117, 102, 78, 105, 99, 77, 77, 78, 80, 83, 80, 79, 73, + 67, 61, 60, 57, 95, 119, 109, 95, 83, 74, 65, 58, 53, 51, 48, 46, + 68, 68, 70, 71, 75, 76, 79, 84, 90, 96, 99, 105, 112, 119, 128, 136, + 147, 148, 150, 151, 145, 135, 128, 113, 100, 95, 97, 101, 117, 125, 138, 151, + 152, 154, 152, 149, 149, 155, 158, 160, 158, 151, 153, 160, 164, 160, 163, 169, + 164, 158, 156, 158, 157, 161, 152, 158, 157, 159, 155, 153, 152, 149, 147, 149, + 148, 147, 147, 147, 147, 148, 152, 144, 143, 144, 146, 146, 147, 140, 139, 136, + 146, 144, 148, 142, 142, 144, 142, 139, 139, 138, 139, 137, 150, 151, 161, 181, + 180, 183, 166, 136, 93, 104, 104, 81, 77, 88, 76, 79, 78, 76, 73, 69, + 63, 59, 62, 45, 78, 116, 109, 95, 83, 74, 65, 58, 54, 51, 48, 47, + 67, 68, 70, 71, 74, 75, 77, 82, 87, 92, 94, 99, 106, 113, 122, 129, + 140, 148, 145, 146, 143, 145, 143, 139, 138, 137, 135, 140, 138, 146, 160, 156, + 151, 147, 149, 145, 145, 151, 153, 157, 155, 157, 162, 165, 169, 164, 165, 177, + 172, 163, 162, 164, 166, 168, 164, 161, 159, 157, 158, 161, 159, 157, 154, 154, + 157, 154, 153, 152, 148, 151, 151, 147, 148, 147, 148, 150, 150, 145, 141, 145, + 146, 146, 145, 145, 143, 148, 148, 147, 146, 144, 144, 146, 155, 158, 166, 177, + 177, 168, 142, 121, 108, 106, 90, 84, 89, 88, 72, 76, 73, 75, 71, 67, + 63, 64, 61, 41, 68, 110, 110, 95, 83, 74, 65, 59, 54, 51, 48, 47, + 67, 68, 69, 70, 71, 73, 76, 79, 83, 86, 91, 96, 104, 109, 116, 122, + 132, 136, 138, 140, 141, 141, 142, 143, 145, 142, 144, 144, 145, 153, 155, 149, + 143, 141, 139, 137, 139, 143, 145, 147, 148, 150, 155, 157, 159, 157, 158, 170, + 167, 157, 154, 156, 159, 159, 156, 152, 151, 149, 149, 150, 149, 147, 146, 146, + 147, 146, 145, 144, 143, 144, 143, 142, 141, 140, 140, 141, 141, 139, 137, 137, + 138, 135, 135, 136, 134, 135, 136, 137, 136, 136, 139, 143, 149, 154, 163, 170, + 158, 109, 96, 105, 112, 106, 134, 127, 114, 96, 80, 73, 73, 70, 63, 63, + 56, 55, 44, 41, 60, 109, 107, 97, 85, 75, 65, 59, 54, 51, 49, 47, + 67, 68, 69, 69, 69, 72, 74, 77, 81, 84, 89, 94, 100, 105, 111, 116, + 123, 127, 131, 132, 134, 135, 136, 138, 141, 141, 140, 140, 143, 149, 148, 143, + 139, 135, 132, 131, 134, 137, 139, 139, 140, 143, 148, 149, 150, 149, 152, 162, + 160, 150, 147, 148, 151, 152, 149, 144, 143, 142, 141, 141, 140, 139, 138, 138, + 138, 138, 137, 136, 136, 135, 134, 134, 133, 132, 132, 133, 133, 132, 131, 128, + 127, 126, 126, 126, 126, 126, 126, 126, 127, 129, 133, 138, 143, 148, 156, 157, + 134, 98, 102, 99, 84, 91, 163, 178, 168, 154, 141, 127, 112, 92, 69, 57, + 60, 49, 40, 33, 51, 108, 111, 97, 85, 74, 65, 59, 54, 51, 49, 47, + 67, 68, 69, 70, 70, 71, 74, 75, 79, 83, 87, 91, 95, 100, 106, 110, + 115, 119, 123, 124, 127, 129, 130, 132, 134, 134, 135, 135, 138, 142, 141, 137, + 132, 129, 126, 125, 128, 131, 133, 134, 134, 136, 140, 143, 144, 142, 145, 154, + 152, 144, 141, 141, 143, 144, 142, 138, 136, 135, 135, 134, 134, 133, 132, 132, + 132, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 126, 125, 124, 123, 121, + 120, 119, 118, 118, 118, 118, 118, 119, 120, 123, 127, 132, 139, 143, 153, 145, + 107, 86, 88, 80, 61, 81, 170, 196, 193, 189, 183, 173, 163, 149, 121, 61, + 55, 42, 28, 27, 53, 108, 110, 96, 84, 73, 64, 58, 53, 50, 49, 47, + 67, 68, 69, 70, 70, 71, 73, 74, 77, 81, 85, 88, 92, 97, 102, 106, + 110, 113, 116, 118, 121, 122, 125, 126, 128, 128, 130, 130, 134, 136, 134, 131, + 127, 124, 122, 122, 125, 127, 129, 129, 129, 131, 135, 137, 139, 136, 138, 146, + 146, 139, 136, 135, 137, 139, 137, 133, 131, 130, 129, 129, 128, 127, 127, 126, + 126, 125, 124, 123, 122, 121, 121, 119, 118, 117, 117, 119, 118, 117, 116, 115, + 114, 113, 113, 113, 113, 113, 113, 113, 114, 118, 122, 127, 134, 140, 149, 135, + 91, 66, 54, 67, 61, 88, 172, 192, 193, 193, 192, 189, 187, 183, 163, 75, + 38, 24, 22, 34, 63, 109, 107, 94, 82, 72, 63, 58, 53, 50, 48, 46, + 67, 68, 69, 70, 70, 71, 72, 73, 76, 78, 82, 85, 89, 94, 99, 102, + 105, 108, 110, 111, 114, 116, 119, 120, 122, 123, 124, 126, 129, 129, 128, 125, + 122, 120, 118, 118, 121, 124, 124, 124, 125, 126, 129, 132, 134, 131, 132, 139, + 139, 134, 129, 127, 130, 133, 131, 127, 126, 125, 124, 124, 123, 122, 121, 121, + 120, 119, 119, 117, 116, 115, 114, 113, 112, 111, 110, 111, 111, 110, 110, 108, + 108, 107, 106, 106, 106, 106, 106, 107, 108, 112, 117, 123, 130, 137, 145, 125, + 88, 64, 47, 77, 70, 96, 175, 192, 193, 193, 194, 193, 190, 187, 172, 92, + 39, 23, 47, 45, 67, 107, 108, 93, 81, 71, 62, 57, 52, 49, 47, 45, + 67, 68, 69, 70, 70, 71, 71, 72, 74, 76, 79, 82, 86, 89, 93, 96, + 101, 103, 104, 105, 108, 110, 113, 115, 114, 116, 118, 121, 124, 122, 120, 117, + 116, 114, 113, 114, 117, 119, 119, 119, 119, 120, 123, 125, 127, 124, 125, 131, + 131, 128, 122, 120, 123, 125, 124, 121, 120, 119, 118, 118, 117, 116, 115, 114, + 113, 112, 112, 109, 108, 107, 107, 106, 106, 105, 104, 103, 103, 102, 101, 101, + 100, 99, 99, 98, 98, 98, 98, 100, 101, 106, 112, 117, 124, 132, 139, 119, + 88, 67, 61, 84, 71, 94, 172, 188, 189, 188, 188, 186, 185, 187, 170, 88, + 48, 48, 69, 45, 73, 109, 108, 92, 80, 70, 61, 56, 52, 49, 47, 45, + 66, 67, 68, 69, 69, 70, 70, 71, 72, 74, 78, 80, 82, 85, 88, 91, + 95, 98, 99, 100, 102, 104, 107, 108, 107, 109, 111, 115, 117, 115, 113, 111, + 109, 108, 107, 109, 111, 113, 112, 113, 114, 115, 117, 120, 121, 118, 119, 124, + 125, 121, 116, 114, 116, 118, 118, 116, 114, 113, 112, 112, 112, 111, 110, 107, + 106, 105, 105, 103, 102, 101, 100, 100, 100, 99, 98, 97, 96, 95, 94, 94, + 93, 92, 91, 91, 91, 91, 91, 93, 95, 100, 105, 111, 118, 126, 135, 122, + 85, 62, 65, 74, 65, 85, 159, 181, 181, 180, 180, 176, 176, 175, 147, 52, + 41, 66, 57, 41, 88, 113, 102, 90, 79, 69, 61, 56, 52, 49, 47, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 72, 74, 77, 79, 81, 84, 87, 89, + 90, 92, 94, 96, 100, 101, 103, 104, 103, 104, 109, 113, 112, 111, 108, 107, + 104, 102, 103, 105, 108, 109, 108, 109, 113, 114, 116, 116, 114, 113, 114, 119, + 120, 118, 112, 111, 111, 112, 113, 112, 111, 109, 107, 107, 107, 106, 105, 102, + 101, 100, 100, 99, 98, 97, 97, 95, 93, 93, 92, 91, 91, 90, 89, 88, + 88, 88, 88, 87, 87, 87, 87, 89, 90, 95, 99, 105, 113, 122, 132, 127, + 87, 55, 65, 61, 58, 69, 132, 166, 172, 172, 172, 170, 168, 156, 100, 37, + 53, 65, 48, 56, 103, 115, 101, 87, 77, 69, 62, 56, 53, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 73, 75, 77, 79, 81, 83, 85, + 87, 88, 90, 92, 94, 96, 98, 99, 99, 100, 104, 107, 106, 104, 103, 102, + 101, 100, 101, 103, 104, 105, 104, 105, 107, 109, 111, 111, 109, 108, 109, 113, + 115, 112, 108, 105, 106, 106, 108, 108, 106, 105, 103, 102, 101, 100, 99, 99, + 98, 97, 96, 94, 93, 92, 91, 90, 89, 89, 88, 87, 87, 86, 85, 85, + 84, 84, 84, 83, 83, 83, 83, 84, 85, 88, 93, 101, 109, 116, 127, 129, + 92, 52, 61, 49, 48, 50, 90, 134, 157, 159, 153, 148, 121, 92, 65, 45, + 65, 56, 38, 76, 109, 109, 102, 85, 75, 68, 61, 55, 52, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 72, 74, 75, 76, 78, 80, 81, + 82, 84, 86, 88, 89, 91, 93, 94, 94, 96, 100, 101, 99, 98, 97, 97, + 98, 97, 98, 99, 100, 101, 101, 101, 103, 105, 107, 106, 105, 104, 105, 108, + 109, 107, 103, 101, 101, 102, 102, 103, 101, 100, 98, 96, 96, 95, 94, 94, + 93, 93, 92, 90, 88, 87, 87, 86, 85, 84, 84, 83, 82, 82, 81, 80, + 80, 80, 80, 79, 79, 79, 79, 78, 80, 83, 87, 96, 104, 111, 121, 128, + 109, 65, 52, 47, 46, 48, 59, 74, 88, 89, 87, 85, 63, 46, 51, 62, + 65, 45, 59, 98, 113, 104, 99, 82, 73, 67, 59, 54, 52, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 71, 72, 74, 74, 76, 77, 78, + 79, 81, 83, 85, 87, 89, 90, 91, 92, 95, 97, 97, 95, 94, 94, 94, + 94, 94, 96, 98, 99, 100, 99, 99, 100, 102, 104, 103, 102, 100, 102, 104, + 106, 104, 100, 98, 97, 98, 99, 99, 97, 95, 94, 93, 93, 92, 92, 91, + 90, 89, 88, 87, 86, 85, 85, 82, 81, 80, 79, 79, 78, 78, 77, 75, + 75, 75, 75, 74, 74, 74, 74, 76, 76, 81, 85, 92, 100, 107, 117, 126, + 125, 96, 64, 52, 46, 54, 55, 58, 56, 54, 55, 48, 49, 51, 61, 67, + 51, 50, 90, 111, 112, 101, 93, 79, 71, 65, 58, 52, 51, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 71, 71, 71, 71, 72, 74, 75, 76, 77, + 77, 78, 80, 82, 85, 87, 88, 88, 89, 93, 94, 93, 92, 92, 92, 91, + 90, 90, 93, 95, 97, 98, 97, 96, 98, 100, 101, 101, 100, 98, 100, 102, + 103, 102, 99, 95, 95, 96, 97, 96, 95, 93, 91, 92, 92, 91, 90, 88, + 87, 87, 86, 85, 85, 84, 83, 80, 79, 78, 77, 77, 76, 75, 75, 73, + 73, 73, 73, 71, 71, 71, 71, 73, 74, 78, 82, 88, 96, 102, 113, 125, + 126, 124, 104, 70, 53, 57, 54, 54, 54, 50, 52, 53, 43, 46, 57, 49, + 56, 92, 112, 113, 106, 98, 85, 76, 68, 63, 56, 52, 50, 49, 45, 45, + 66, 67, 67, 68, 69, 69, 70, 70, 71, 71, 71, 71, 75, 76, 76, 76, + 76, 77, 79, 81, 82, 83, 85, 85, 86, 89, 90, 89, 89, 89, 90, 89, + 87, 88, 91, 92, 93, 94, 93, 93, 95, 97, 99, 99, 97, 96, 97, 99, + 100, 98, 96, 92, 92, 93, 94, 94, 93, 91, 90, 89, 88, 88, 87, 87, + 87, 86, 86, 84, 83, 82, 82, 79, 79, 78, 77, 77, 76, 75, 74, 72, + 72, 72, 72, 70, 70, 70, 70, 71, 72, 75, 80, 84, 91, 97, 108, 119, + 123, 128, 126, 106, 79, 70, 59, 53, 50, 48, 51, 48, 55, 49, 55, 72, + 92, 113, 117, 110, 101, 92, 82, 73, 66, 62, 55, 51, 50, 49, 45, 45, + 64, 65, 66, 66, 68, 68, 69, 70, 71, 70, 71, 71, 73, 73, 74, 74, + 75, 76, 77, 79, 80, 80, 81, 83, 84, 86, 86, 86, 86, 86, 87, 86, + 86, 87, 89, 91, 91, 92, 91, 90, 92, 94, 95, 95, 94, 93, 93, 94, + 96, 96, 93, 90, 89, 89, 91, 92, 91, 89, 89, 88, 87, 86, 85, 85, + 85, 84, 83, 81, 80, 79, 78, 78, 77, 76, 75, 75, 74, 73, 73, 70, + 69, 69, 68, 68, 68, 68, 68, 68, 70, 73, 77, 81, 87, 93, 101, 113, + 119, 124, 128, 128, 112, 102, 91, 78, 71, 69, 72, 70, 75, 80, 94, 110, + 117, 114, 111, 103, 94, 85, 77, 69, 63, 58, 54, 51, 48, 47, 44, 45, + 64, 64, 65, 66, 67, 68, 69, 70, 70, 70, 71, 71, 71, 71, 72, 73, + 74, 75, 76, 77, 79, 78, 79, 81, 84, 85, 85, 85, 85, 85, 86, 85, + 85, 87, 89, 90, 92, 91, 90, 90, 91, 92, 92, 93, 92, 92, 91, 92, + 94, 95, 92, 89, 87, 87, 89, 90, 89, 88, 87, 87, 86, 85, 85, 83, + 82, 81, 81, 78, 77, 76, 76, 76, 75, 74, 73, 73, 72, 71, 71, 69, + 69, 68, 67, 67, 67, 67, 67, 67, 70, 73, 76, 79, 84, 90, 97, 107, + 113, 120, 125, 129, 129, 126, 123, 117, 111, 108, 107, 106, 111, 116, 119, 119, + 117, 112, 105, 96, 88, 80, 72, 64, 60, 55, 52, 51, 48, 45, 44, 45, + 64, 64, 65, 66, 67, 67, 68, 69, 70, 70, 70, 70, 70, 71, 72, 73, + 74, 74, 75, 76, 78, 77, 79, 81, 83, 84, 84, 84, 84, 84, 85, 84, + 85, 87, 88, 90, 91, 90, 89, 89, 90, 91, 92, 92, 92, 91, 90, 91, + 93, 94, 91, 88, 86, 87, 88, 89, 88, 87, 87, 86, 86, 85, 84, 82, + 81, 80, 80, 78, 76, 76, 75, 75, 74, 73, 72, 72, 71, 70, 70, 69, + 68, 67, 66, 66, 66, 66, 67, 66, 69, 72, 74, 77, 82, 88, 93, 101, + 107, 113, 119, 123, 127, 129, 129, 130, 126, 125, 125, 123, 123, 122, 120, 115, + 111, 104, 97, 90, 83, 75, 68, 62, 58, 53, 51, 50, 47, 45, 44, 45, + 64, 64, 65, 66, 66, 67, 67, 68, 70, 70, 70, 70, 70, 70, 71, 72, + 73, 74, 75, 75, 76, 77, 79, 81, 82, 83, 83, 83, 83, 83, 84, 84, + 84, 86, 88, 89, 89, 89, 88, 87, 89, 90, 90, 91, 90, 89, 89, 89, + 92, 93, 90, 88, 86, 85, 87, 87, 87, 86, 85, 85, 84, 84, 83, 81, + 80, 79, 78, 77, 76, 75, 74, 74, 72, 72, 71, 70, 70, 69, 68, 68, + 67, 66, 66, 66, 66, 66, 65, 65, 67, 70, 71, 74, 78, 83, 88, 95, + 101, 107, 111, 115, 118, 122, 121, 120, 120, 120, 121, 120, 118, 115, 112, 109, + 104, 97, 90, 85, 78, 71, 65, 59, 56, 52, 49, 49, 47, 45, 44, 45, + 64, 64, 65, 66, 66, 66, 67, 68, 69, 69, 69, 69, 69, 70, 71, 71, + 72, 73, 74, 75, 75, 76, 79, 81, 81, 82, 82, 82, 82, 82, 83, 83, + 84, 85, 87, 88, 89, 88, 87, 86, 87, 88, 89, 89, 89, 88, 87, 88, + 91, 92, 89, 87, 85, 84, 85, 86, 86, 85, 84, 84, 83, 82, 82, 80, + 79, 78, 77, 76, 75, 74, 74, 73, 71, 71, 70, 69, 69, 68, 67, 67, + 67, 66, 65, 65, 65, 65, 65, 64, 65, 67, 68, 71, 75, 79, 83, 91, + 96, 101, 106, 110, 112, 114, 113, 113, 115, 116, 115, 113, 112, 110, 108, 103, + 98, 91, 85, 80, 74, 68, 62, 56, 54, 50, 48, 48, 46, 45, 45, 45, + 64, 64, 65, 65, 65, 66, 67, 67, 69, 69, 69, 69, 69, 69, 70, 71, + 71, 72, 73, 74, 73, 75, 78, 81, 80, 81, 81, 81, 81, 81, 82, 82, + 83, 85, 87, 88, 88, 87, 86, 86, 86, 87, 88, 88, 88, 87, 86, 87, + 90, 91, 88, 86, 85, 83, 84, 85, 85, 84, 83, 83, 82, 81, 81, 79, + 78, 77, 76, 76, 75, 74, 74, 71, 71, 70, 69, 69, 68, 67, 66, 67, + 66, 66, 65, 65, 65, 65, 64, 63, 64, 65, 66, 69, 72, 76, 79, 84, + 89, 95, 98, 103, 106, 107, 107, 106, 108, 109, 107, 104, 103, 102, 99, 95, + 91, 85, 80, 75, 69, 63, 58, 54, 52, 48, 47, 47, 46, 45, 45, 45, + 64, 64, 65, 65, 65, 66, 67, 67, 69, 69, 69, 69, 69, 69, 70, 71, + 71, 72, 73, 73, 73, 74, 78, 80, 80, 81, 81, 81, 81, 81, 82, 82, + 83, 85, 86, 87, 87, 86, 86, 85, 85, 86, 87, 88, 87, 86, 85, 86, + 90, 90, 87, 86, 85, 83, 83, 84, 84, 83, 83, 83, 82, 81, 80, 78, + 77, 76, 76, 76, 75, 74, 73, 71, 70, 69, 69, 68, 68, 67, 66, 66, + 66, 65, 65, 65, 65, 65, 64, 63, 63, 65, 65, 67, 70, 74, 76, 79, + 83, 88, 91, 91, 96, 99, 100, 99, 102, 101, 99, 99, 97, 94, 92, 88, + 85, 81, 75, 69, 64, 59, 55, 52, 50, 48, 46, 46, 46, 45, 45, 45, + 64, 64, 65, 65, 65, 65, 65, 65, 66, 67, 67, 68, 68, 69, 70, 71, + 71, 71, 72, 73, 73, 75, 77, 79, 79, 80, 80, 79, 79, 79, 80, 80, + 82, 83, 84, 84, 84, 84, 84, 84, 85, 86, 87, 87, 86, 85, 84, 85, + 86, 88, 86, 83, 81, 79, 79, 82, 83, 83, 83, 81, 79, 79, 78, 77, + 76, 75, 75, 75, 75, 74, 73, 71, 70, 69, 69, 68, 68, 67, 67, 67, + 67, 66, 65, 65, 64, 63, 62, 62, 62, 64, 64, 64, 67, 69, 71, 76, + 79, 83, 86, 87, 90, 93, 93, 92, 92, 92, 92, 91, 89, 87, 85, 82, + 78, 73, 68, 64, 61, 56, 53, 51, 49, 47, 45, 45, 45, 45, 45, 45, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 67, 68, 68, 69, 70, 70, + 70, 71, 72, 73, 73, 75, 76, 78, 79, 79, 79, 79, 79, 79, 80, 80, + 81, 82, 83, 83, 83, 83, 83, 84, 84, 85, 86, 86, 85, 84, 83, 83, + 86, 87, 85, 82, 80, 79, 79, 81, 82, 82, 82, 80, 79, 78, 77, 76, + 75, 74, 74, 74, 74, 73, 72, 71, 70, 69, 69, 68, 68, 68, 68, 68, + 67, 66, 65, 65, 64, 62, 61, 61, 62, 63, 64, 63, 65, 67, 69, 71, + 74, 77, 79, 81, 84, 86, 86, 85, 85, 85, 85, 83, 82, 80, 79, 77, + 74, 70, 66, 62, 58, 54, 52, 50, 49, 47, 45, 45, 45, 45, 45, 45, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 67, 68, 68, 69, 70, + 70, 71, 71, 72, 73, 74, 76, 77, 77, 78, 78, 78, 78, 78, 79, 80, + 81, 82, 82, 83, 82, 82, 82, 82, 84, 85, 85, 85, 84, 83, 82, 83, + 85, 87, 85, 82, 80, 78, 78, 80, 81, 81, 81, 80, 79, 78, 77, 75, + 74, 73, 73, 73, 73, 72, 71, 71, 70, 69, 69, 68, 68, 68, 68, 67, + 66, 66, 65, 65, 64, 62, 61, 61, 61, 62, 62, 62, 63, 65, 66, 66, + 68, 70, 73, 75, 77, 78, 80, 79, 79, 79, 78, 76, 75, 73, 73, 71, + 68, 64, 62, 59, 56, 52, 50, 50, 48, 46, 45, 45, 45, 45, 45, 45, + 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 66, 67, 67, 68, 68, 69, + 70, 70, 71, 72, 73, 74, 75, 76, 77, 78, 78, 78, 78, 78, 79, 79, + 80, 81, 82, 82, 81, 81, 81, 81, 82, 83, 84, 83, 82, 82, 81, 81, + 84, 86, 84, 81, 79, 78, 78, 79, 80, 80, 80, 79, 78, 77, 77, 75, + 73, 73, 72, 73, 72, 71, 71, 71, 70, 69, 69, 67, 67, 67, 67, 67, + 66, 65, 65, 65, 64, 62, 61, 61, 61, 61, 61, 61, 61, 62, 63, 63, + 64, 67, 69, 71, 72, 73, 74, 74, 74, 74, 74, 72, 71, 69, 67, 65, + 63, 60, 58, 56, 53, 50, 49, 48, 48, 46, 45, 45, 45, 45, 44, 44, + 63, 63, 63, 63, 63, 63, 63, 63, 64, 65, 66, 66, 67, 67, 68, 69, + 69, 70, 71, 72, 74, 74, 74, 74, 76, 77, 77, 77, 77, 77, 78, 78, + 80, 80, 82, 81, 80, 80, 80, 80, 81, 81, 82, 82, 81, 80, 79, 80, + 83, 85, 82, 80, 79, 77, 77, 78, 79, 79, 79, 78, 78, 77, 76, 74, + 73, 72, 72, 72, 72, 71, 70, 70, 70, 69, 69, 67, 67, 67, 67, 66, + 66, 65, 64, 64, 64, 62, 61, 61, 60, 60, 60, 60, 60, 60, 61, 62, + 63, 65, 66, 69, 70, 70, 71, 70, 70, 70, 70, 68, 66, 64, 63, 61, + 59, 57, 54, 53, 50, 47, 47, 47, 47, 46, 45, 45, 45, 45, 44, 44, + 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 65, 66, 66, 67, 68, 68, + 69, 69, 70, 71, 74, 73, 73, 74, 75, 75, 75, 76, 76, 77, 77, 78, + 79, 80, 81, 81, 79, 79, 79, 79, 80, 80, 81, 81, 80, 79, 78, 79, + 82, 83, 81, 79, 78, 76, 77, 77, 77, 77, 77, 77, 77, 76, 75, 74, + 73, 72, 71, 71, 71, 70, 70, 70, 70, 69, 69, 66, 66, 66, 66, 66, + 65, 64, 64, 64, 64, 62, 61, 61, 60, 59, 58, 58, 58, 58, 58, 59, + 59, 61, 63, 65, 66, 66, 66, 65, 64, 64, 64, 63, 61, 60, 59, 58, + 57, 54, 52, 50, 47, 46, 46, 46, 46, 46, 45, 45, 45, 45, 44, 43, + 62, 62, 62, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 66, 67, 67, + 68, 69, 70, 71, 73, 73, 73, 73, 74, 74, 74, 74, 75, 75, 76, 77, + 79, 79, 80, 80, 79, 79, 79, 78, 79, 80, 81, 81, 79, 79, 78, 78, + 80, 82, 80, 79, 77, 76, 76, 77, 77, 77, 77, 77, 76, 75, 74, 72, + 72, 71, 71, 71, 71, 70, 70, 70, 69, 68, 68, 66, 66, 66, 66, 65, + 64, 64, 63, 64, 63, 62, 61, 60, 59, 58, 57, 58, 58, 57, 57, 58, + 58, 59, 60, 62, 62, 63, 62, 62, 62, 61, 61, 60, 59, 58, 57, 56, + 55, 53, 52, 49, 48, 46, 45, 45, 46, 45, 45, 45, 45, 45, 44, 43, + 60, 61, 61, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 65, 66, 67, + 67, 68, 70, 72, 73, 73, 73, 73, 73, 73, 73, 72, 71, 72, 73, 75, + 78, 78, 79, 79, 79, 79, 79, 78, 78, 79, 79, 80, 79, 78, 78, 77, + 78, 80, 80, 78, 76, 75, 75, 76, 77, 77, 77, 76, 75, 74, 73, 71, + 71, 71, 71, 70, 70, 70, 70, 68, 67, 67, 66, 66, 66, 66, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 58, 58, 58, 59, + 59, 59, 59, 59, 59, 59, 59, 60, 59, 58, 58, 58, 58, 57, 55, 53, + 52, 51, 50, 50, 48, 47, 47, 46, 46, 45, 45, 45, 45, 45, 44, 43, + 60, 61, 61, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 65, 66, 67, + 67, 68, 70, 72, 73, 73, 73, 73, 73, 73, 73, 72, 71, 72, 72, 74, + 77, 78, 79, 79, 79, 79, 79, 78, 78, 79, 79, 80, 79, 78, 77, 77, + 78, 80, 80, 78, 76, 75, 75, 75, 76, 76, 76, 76, 75, 74, 73, 71, + 71, 71, 71, 70, 70, 70, 70, 68, 67, 67, 66, 66, 66, 66, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 57, 56, 55, 55, 56, 55, 54, 53, 51, + 51, 50, 49, 50, 49, 48, 47, 46, 46, 45, 45, 45, 45, 45, 44, 43, + 60, 61, 61, 62, 63, 63, 63, 63, 64, 64, 65, 65, 65, 65, 66, 67, + 67, 68, 70, 72, 73, 73, 73, 73, 73, 73, 73, 72, 71, 72, 72, 74, + 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 78, 77, 77, + 78, 80, 80, 78, 76, 75, 75, 75, 76, 76, 76, 76, 75, 74, 73, 71, + 71, 71, 71, 70, 70, 70, 70, 68, 67, 67, 66, 66, 66, 66, 66, 65, + 64, 63, 63, 62, 61, 60, 60, 59, 59, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 57, 56, 56, 56, 56, 55, 54, 54, 53, 54, 53, 52, 51, 50, + 49, 48, 48, 50, 49, 48, 47, 46, 46, 45, 45, 45, 45, 45, 44, 43, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 19, 19, 20, 19, 19, 20, 22, + 27, 29, 31, 30, 30, 31, 32, 32, 31, 31, 36, 38, 39, 41, 37, 35, + 43, 45, 39, 36, 38, 40, 46, 52, 40, 47, 45, 50, 52, 52, 48, 46, + 54, 45, 41, 43, 41, 37, 33, 35, 41, 35, 31, 36, 38, 34, 30, 30, + 31, 29, 30, 32, 34, 35, 36, 36, 35, 32, 30, 27, 25, 24, 23, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 9, 8, 9, 8, 7, 7, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 19, 19, 20, 20, 20, 21, 22, + 26, 28, 29, 29, 30, 31, 32, 33, 32, 32, 34, 36, 39, 41, 38, 37, + 44, 47, 42, 39, 40, 42, 49, 54, 45, 49, 49, 53, 54, 54, 51, 49, + 58, 49, 45, 45, 42, 37, 35, 38, 41, 35, 35, 39, 38, 34, 29, 30, + 32, 31, 32, 33, 35, 35, 35, 36, 35, 32, 30, 27, 25, 24, 23, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 9, 9, 9, 9, 7, 7, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 20, 20, 20, 21, 21, 22, 22, + 25, 27, 28, 29, 31, 32, 34, 34, 34, 33, 34, 35, 39, 41, 41, 38, + 43, 49, 46, 42, 41, 44, 50, 56, 50, 51, 53, 55, 56, 56, 52, 53, + 59, 51, 49, 49, 44, 38, 38, 41, 40, 37, 39, 42, 39, 34, 29, 31, + 33, 34, 34, 35, 36, 35, 36, 36, 34, 31, 29, 27, 25, 24, 23, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 9, 9, 10, 9, 7, 7, + 18, 17, 17, 16, 16, 17, 17, 18, 20, 20, 20, 20, 21, 21, 22, 22, + 24, 26, 28, 29, 31, 32, 34, 35, 35, 35, 34, 36, 39, 41, 43, 41, + 41, 48, 48, 44, 42, 43, 49, 56, 54, 51, 55, 55, 57, 57, 53, 54, + 60, 52, 52, 51, 45, 39, 41, 43, 41, 39, 42, 43, 38, 33, 30, 32, + 35, 36, 37, 37, 37, 36, 35, 35, 33, 30, 28, 26, 25, 23, 22, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 10, 10, 10, 10, 8, 8, + 18, 17, 17, 16, 16, 17, 17, 18, 20, 20, 20, 19, 21, 21, 22, 24, + 25, 27, 29, 30, 31, 32, 35, 36, 37, 39, 37, 37, 38, 40, 45, 45, + 42, 46, 50, 47, 43, 44, 50, 56, 58, 51, 59, 57, 59, 60, 56, 57, + 60, 53, 54, 50, 46, 43, 45, 44, 42, 44, 45, 42, 37, 33, 33, 35, + 38, 38, 39, 39, 37, 37, 35, 34, 32, 29, 27, 26, 24, 23, 22, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 10, 10, 11, 10, 9, 9, + 18, 17, 17, 16, 16, 17, 17, 18, 20, 19, 19, 19, 21, 21, 23, 24, + 26, 28, 29, 30, 30, 32, 35, 36, 38, 41, 39, 37, 36, 39, 45, 50, + 46, 46, 54, 52, 45, 47, 54, 60, 63, 53, 63, 61, 64, 64, 61, 61, + 61, 54, 57, 50, 47, 45, 46, 44, 43, 47, 44, 39, 35, 33, 36, 39, + 40, 38, 38, 38, 38, 36, 33, 32, 30, 27, 25, 24, 22, 21, 20, 20, + 19, 19, 19, 19, 20, 20, 19, 14, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 9, 9, 11, + 11, 11, 11, 9, 7, 7, 9, 11, 11, 11, 10, 11, 11, 11, 10, 10, + 18, 17, 17, 16, 16, 17, 17, 18, 19, 19, 19, 19, 20, 22, 23, 24, + 25, 26, 28, 29, 30, 31, 34, 35, 37, 41, 41, 38, 37, 38, 44, 50, + 50, 46, 52, 56, 48, 48, 56, 60, 66, 56, 64, 65, 67, 67, 62, 64, + 60, 55, 57, 51, 47, 48, 47, 42, 46, 49, 43, 38, 36, 36, 38, 41, + 41, 39, 39, 38, 37, 34, 32, 31, 29, 27, 25, 24, 23, 22, 20, 20, + 19, 20, 19, 19, 21, 20, 20, 15, 13, 14, 15, 15, 16, 17, 16, 14, + 13, 12, 12, 12, 11, 10, 10, 12, 12, 12, 11, 11, 10, 10, 9, 11, + 11, 11, 10, 9, 8, 7, 9, 11, 11, 11, 11, 12, 12, 12, 10, 10, + 18, 17, 18, 16, 16, 17, 17, 18, 19, 19, 19, 20, 20, 22, 25, 25, + 25, 27, 29, 30, 31, 33, 34, 36, 38, 41, 44, 44, 41, 39, 42, 47, + 52, 49, 48, 59, 54, 49, 56, 60, 69, 62, 66, 69, 69, 71, 63, 69, + 59, 60, 57, 53, 50, 55, 50, 45, 52, 48, 41, 37, 39, 41, 41, 43, + 42, 41, 40, 37, 35, 31, 30, 30, 29, 27, 26, 25, 24, 22, 21, 21, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 16, 15, 16, 17, 16, 14, + 13, 13, 12, 12, 11, 10, 10, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 9, 9, 9, 10, 13, 12, 11, 11, 13, 13, 13, 12, 11, + 18, 17, 18, 17, 17, 17, 17, 18, 18, 18, 19, 20, 21, 23, 26, 26, + 27, 29, 32, 32, 33, 35, 36, 38, 40, 43, 47, 47, 44, 43, 43, 45, + 53, 55, 52, 56, 62, 54, 54, 62, 71, 68, 70, 73, 73, 74, 66, 72, + 61, 65, 60, 53, 59, 59, 51, 54, 55, 46, 38, 38, 43, 46, 46, 45, + 42, 40, 38, 35, 34, 31, 29, 29, 28, 26, 25, 24, 23, 21, 20, 21, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 16, 15, 16, 17, 17, 14, + 14, 13, 12, 12, 11, 10, 11, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 9, 9, 9, 10, 13, 12, 11, 11, 13, 13, 13, 12, 12, + 19, 18, 18, 17, 17, 17, 18, 18, 18, 19, 20, 21, 22, 24, 28, 28, + 28, 30, 34, 34, 36, 37, 40, 40, 41, 45, 49, 49, 49, 50, 46, 45, + 51, 61, 59, 52, 65, 61, 54, 64, 74, 75, 74, 77, 78, 78, 71, 75, + 63, 69, 62, 56, 64, 60, 57, 62, 55, 42, 38, 42, 48, 51, 52, 48, + 44, 40, 37, 34, 33, 31, 29, 29, 28, 26, 24, 23, 22, 20, 19, 19, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 16, 16, 17, 18, 17, 15, + 14, 13, 13, 13, 12, 11, 11, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 9, 9, 9, 11, 13, 12, 11, 11, 13, 13, 13, 13, 13, + 20, 19, 19, 18, 18, 18, 18, 18, 18, 18, 21, 23, 23, 27, 30, 31, + 28, 31, 35, 37, 38, 39, 41, 42, 42, 46, 48, 51, 54, 55, 52, 49, + 50, 61, 66, 55, 64, 69, 60, 63, 75, 82, 78, 82, 84, 83, 77, 80, + 69, 72, 63, 62, 65, 60, 65, 63, 49, 43, 45, 49, 54, 55, 54, 48, + 43, 37, 34, 32, 33, 31, 29, 28, 27, 25, 23, 21, 20, 18, 17, 19, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 17, 17, 18, 19, 18, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 10, 10, 10, 11, 13, 12, 11, 11, 13, 13, 13, 13, 14, + 20, 19, 20, 18, 18, 19, 19, 18, 19, 19, 23, 24, 25, 29, 33, 34, + 30, 33, 38, 41, 41, 42, 44, 45, 47, 49, 51, 53, 56, 59, 59, 57, + 53, 59, 68, 65, 65, 75, 71, 66, 78, 90, 82, 88, 92, 89, 84, 85, + 75, 75, 64, 71, 67, 69, 73, 60, 47, 46, 52, 56, 59, 57, 54, 46, + 41, 36, 33, 32, 32, 31, 29, 28, 27, 25, 24, 21, 20, 18, 17, 19, + 20, 20, 20, 20, 21, 21, 20, 15, 14, 15, 17, 17, 18, 19, 18, 16, + 15, 15, 14, 14, 13, 12, 12, 13, 13, 12, 12, 12, 11, 10, 10, 11, + 11, 11, 10, 10, 10, 10, 11, 13, 12, 11, 11, 13, 13, 13, 13, 14, + 20, 19, 20, 19, 19, 19, 19, 18, 18, 20, 23, 25, 26, 30, 34, 35, + 32, 35, 39, 42, 43, 44, 46, 48, 50, 51, 52, 53, 57, 61, 65, 63, + 56, 55, 67, 76, 69, 78, 84, 70, 79, 95, 86, 93, 97, 94, 90, 90, + 82, 76, 66, 79, 70, 79, 77, 58, 49, 52, 58, 60, 61, 58, 53, 44, + 39, 35, 32, 32, 30, 31, 30, 28, 27, 25, 24, 21, 20, 18, 17, 19, + 19, 20, 19, 19, 20, 19, 20, 16, 15, 16, 17, 18, 20, 19, 19, 16, + 16, 15, 14, 14, 13, 12, 12, 13, 13, 12, 12, 12, 11, 10, 9, 9, + 10, 11, 11, 11, 11, 11, 12, 12, 12, 11, 11, 13, 13, 13, 13, 14, + 21, 21, 22, 21, 20, 20, 21, 20, 18, 22, 27, 29, 32, 35, 36, 36, + 30, 33, 38, 35, 35, 42, 50, 47, 49, 52, 57, 60, 58, 68, 71, 65, + 62, 63, 67, 76, 77, 75, 103, 74, 77, 100, 96, 95, 98, 93, 98, 95, + 89, 79, 74, 78, 78, 84, 74, 61, 62, 63, 62, 63, 60, 56, 52, 44, + 40, 37, 35, 34, 34, 32, 30, 27, 25, 25, 24, 22, 21, 20, 19, 16, + 16, 17, 16, 17, 17, 16, 17, 17, 17, 18, 20, 20, 20, 20, 19, 14, + 12, 12, 11, 12, 12, 12, 13, 15, 15, 14, 14, 13, 12, 11, 9, 9, + 9, 9, 9, 11, 12, 12, 12, 11, 11, 11, 11, 13, 13, 14, 15, 14, + 21, 22, 22, 22, 20, 20, 23, 22, 19, 23, 28, 31, 35, 37, 37, 36, + 28, 31, 33, 37, 41, 41, 45, 51, 50, 52, 53, 58, 61, 54, 65, 73, + 69, 74, 67, 68, 84, 76, 103, 88, 68, 106, 106, 106, 101, 97, 106, 97, + 91, 72, 82, 84, 86, 77, 61, 67, 74, 73, 64, 60, 57, 54, 52, 45, + 41, 38, 36, 35, 35, 33, 31, 26, 24, 23, 23, 22, 21, 21, 20, 16, + 14, 15, 15, 15, 16, 15, 17, 19, 19, 20, 22, 21, 22, 21, 19, 14, + 12, 11, 11, 12, 12, 12, 14, 17, 16, 16, 15, 14, 13, 12, 10, 8, + 8, 8, 9, 11, 11, 12, 11, 9, 9, 10, 12, 13, 14, 15, 15, 15, + 20, 20, 22, 21, 19, 21, 23, 24, 22, 25, 30, 32, 36, 38, 38, 37, + 34, 36, 37, 46, 48, 56, 61, 68, 62, 63, 64, 58, 53, 56, 53, 56, + 72, 90, 87, 76, 83, 85, 94, 101, 79, 113, 115, 114, 108, 105, 110, 99, + 97, 83, 93, 82, 91, 72, 64, 82, 82, 78, 67, 57, 53, 51, 49, 44, + 41, 38, 36, 34, 34, 32, 31, 26, 24, 24, 24, 22, 23, 23, 21, 18, + 18, 19, 18, 19, 19, 18, 19, 20, 19, 21, 21, 21, 22, 21, 20, 16, + 15, 14, 13, 15, 15, 15, 16, 18, 18, 17, 16, 16, 15, 14, 11, 9, + 9, 8, 9, 11, 12, 12, 10, 10, 10, 10, 11, 13, 14, 14, 15, 15, + 20, 20, 21, 21, 19, 21, 24, 25, 25, 28, 32, 32, 34, 36, 37, 38, + 36, 41, 51, 60, 64, 71, 67, 59, 51, 51, 59, 60, 62, 57, 53, 59, + 75, 96, 102, 91, 80, 91, 92, 91, 87, 110, 128, 123, 115, 112, 117, 107, + 89, 83, 92, 95, 78, 74, 74, 89, 89, 79, 67, 56, 49, 47, 47, 44, + 41, 39, 36, 33, 32, 30, 30, 28, 26, 26, 26, 24, 25, 25, 23, 22, + 21, 22, 21, 21, 22, 21, 22, 21, 21, 22, 21, 21, 22, 22, 21, 18, + 17, 16, 15, 16, 16, 16, 17, 19, 19, 18, 18, 17, 17, 16, 13, 11, + 10, 10, 11, 12, 13, 13, 11, 10, 10, 10, 11, 13, 13, 14, 14, 14, + 19, 20, 20, 21, 19, 21, 25, 27, 28, 31, 33, 31, 31, 35, 37, 41, + 42, 52, 66, 67, 59, 47, 37, 27, 23, 21, 30, 29, 41, 65, 73, 72, + 85, 81, 98, 99, 84, 88, 91, 101, 112, 120, 147, 138, 132, 128, 134, 122, + 97, 108, 106, 111, 88, 96, 101, 104, 95, 78, 63, 55, 48, 46, 44, 42, + 41, 38, 37, 33, 31, 29, 28, 30, 30, 28, 29, 28, 28, 28, 27, 25, + 24, 25, 25, 24, 25, 24, 26, 22, 21, 21, 21, 21, 22, 22, 21, 20, + 19, 18, 17, 18, 18, 18, 19, 21, 21, 20, 20, 20, 19, 18, 16, 14, + 14, 13, 14, 15, 15, 15, 12, 10, 10, 10, 11, 13, 13, 14, 13, 13, + 18, 18, 20, 20, 19, 22, 25, 28, 30, 32, 32, 30, 30, 35, 39, 48, + 60, 67, 62, 46, 27, 15, 11, 19, 27, 28, 33, 25, 23, 37, 73, 98, + 97, 29, 27, 46, 86, 87, 90, 113, 80, 69, 80, 77, 75, 70, 78, 67, + 65, 79, 58, 46, 56, 66, 74, 93, 88, 77, 61, 54, 48, 44, 42, 41, + 40, 37, 36, 34, 32, 30, 29, 32, 32, 31, 32, 30, 31, 31, 30, 26, + 26, 27, 26, 26, 27, 26, 26, 23, 21, 20, 20, 21, 21, 21, 21, 20, + 20, 19, 18, 19, 19, 19, 20, 22, 21, 20, 20, 20, 19, 18, 17, 16, + 16, 16, 16, 16, 16, 16, 14, 9, 9, 9, 10, 12, 13, 13, 12, 11, + 17, 18, 19, 19, 19, 21, 25, 28, 31, 32, 30, 28, 29, 37, 46, 59, + 73, 64, 34, 15, 22, 24, 22, 36, 50, 57, 61, 51, 44, 40, 56, 73, + 85, 15, 29, 29, 77, 99, 90, 143, 83, 72, 71, 79, 76, 73, 82, 83, + 79, 58, 54, 67, 72, 95, 98, 68, 71, 74, 61, 56, 48, 43, 40, 39, + 39, 37, 34, 35, 35, 33, 31, 34, 34, 33, 33, 32, 33, 31, 31, 28, + 27, 27, 28, 27, 27, 27, 26, 23, 22, 20, 19, 20, 20, 20, 20, 19, + 19, 18, 18, 19, 19, 19, 20, 21, 21, 20, 19, 20, 19, 18, 18, 17, + 17, 16, 16, 16, 16, 16, 14, 10, 9, 8, 10, 11, 12, 12, 12, 11, + 16, 16, 19, 20, 19, 22, 24, 30, 32, 33, 27, 27, 29, 46, 57, 72, + 65, 24, 23, 33, 40, 48, 56, 59, 61, 57, 50, 45, 52, 60, 64, 53, + 57, 38, 45, 28, 63, 118, 104, 135, 76, 69, 76, 88, 84, 88, 99, 86, + 65, 52, 62, 93, 100, 107, 99, 32, 67, 75, 63, 51, 45, 41, 39, 39, + 38, 36, 35, 35, 35, 34, 34, 36, 35, 34, 34, 33, 33, 31, 31, 28, + 28, 28, 28, 29, 29, 28, 27, 24, 22, 22, 21, 19, 19, 18, 17, 17, + 18, 18, 18, 19, 20, 20, 21, 22, 22, 22, 22, 22, 21, 20, 18, 17, + 17, 16, 16, 17, 18, 17, 13, 11, 9, 7, 7, 8, 8, 9, 11, 12, + 15, 16, 18, 20, 19, 23, 25, 30, 32, 33, 28, 28, 37, 56, 69, 65, + 38, 27, 38, 52, 62, 61, 50, 36, 38, 45, 44, 39, 41, 50, 55, 57, + 54, 70, 75, 45, 67, 123, 114, 138, 79, 61, 81, 92, 102, 92, 118, 81, + 76, 75, 90, 122, 129, 130, 111, 29, 62, 73, 60, 49, 46, 43, 42, 43, + 42, 40, 38, 38, 38, 37, 36, 38, 37, 36, 36, 34, 34, 32, 31, 28, + 28, 28, 28, 30, 29, 28, 27, 24, 23, 22, 21, 19, 20, 18, 17, 17, + 17, 17, 17, 20, 20, 22, 22, 20, 20, 20, 20, 20, 20, 18, 18, 18, + 18, 17, 17, 17, 18, 16, 14, 13, 11, 10, 8, 8, 8, 9, 10, 11, + 14, 16, 18, 20, 20, 23, 27, 32, 34, 34, 31, 33, 46, 64, 75, 45, + 40, 43, 52, 58, 56, 40, 28, 40, 46, 59, 64, 65, 51, 42, 38, 49, + 63, 80, 75, 47, 71, 126, 120, 143, 111, 84, 84, 81, 83, 75, 63, 32, + 58, 93, 118, 139, 121, 91, 72, 33, 62, 70, 58, 50, 49, 48, 47, 47, + 47, 44, 43, 42, 42, 41, 40, 39, 38, 38, 37, 35, 35, 33, 33, 29, + 29, 29, 30, 31, 30, 29, 28, 26, 25, 23, 23, 21, 21, 19, 17, 16, + 16, 17, 18, 20, 21, 23, 23, 19, 19, 19, 19, 19, 18, 17, 18, 20, + 19, 18, 17, 16, 16, 14, 14, 15, 12, 11, 9, 8, 8, 9, 9, 10, + 15, 16, 19, 19, 21, 25, 28, 35, 36, 37, 35, 40, 56, 75, 48, 16, + 30, 37, 41, 45, 39, 18, 34, 63, 61, 67, 73, 79, 83, 70, 31, 43, + 71, 94, 70, 36, 65, 121, 119, 140, 144, 128, 113, 71, 64, 52, 9, 17, + 74, 112, 126, 107, 45, 47, 49, 46, 67, 67, 59, 55, 54, 54, 54, 52, + 49, 47, 46, 44, 44, 43, 42, 40, 39, 37, 37, 37, 37, 35, 34, 31, + 32, 31, 32, 34, 32, 32, 31, 30, 28, 25, 25, 22, 22, 21, 19, 16, + 17, 18, 19, 20, 21, 23, 23, 19, 19, 19, 19, 19, 19, 18, 18, 20, + 19, 18, 18, 16, 16, 13, 13, 16, 12, 9, 9, 9, 7, 7, 7, 8, + 15, 17, 19, 20, 21, 27, 30, 37, 39, 39, 39, 47, 68, 72, 8, 15, + 32, 44, 52, 52, 28, 29, 64, 64, 61, 59, 61, 66, 82, 93, 64, 50, + 76, 82, 64, 31, 53, 113, 118, 125, 144, 170, 195, 145, 89, 38, 66, 108, + 124, 127, 125, 54, 32, 77, 74, 76, 79, 72, 65, 63, 63, 63, 63, 57, + 54, 52, 51, 49, 47, 47, 46, 42, 40, 39, 38, 39, 38, 38, 37, 34, + 33, 34, 34, 34, 35, 33, 34, 33, 32, 28, 27, 24, 23, 23, 21, 16, + 17, 19, 20, 20, 22, 24, 25, 20, 20, 20, 21, 22, 22, 21, 21, 22, + 21, 20, 19, 17, 17, 13, 14, 17, 14, 11, 11, 10, 8, 7, 7, 7, + 15, 17, 19, 20, 23, 26, 31, 37, 40, 40, 41, 53, 73, 44, 11, 45, + 55, 60, 60, 41, 23, 53, 65, 61, 68, 64, 61, 63, 73, 87, 94, 66, + 72, 75, 72, 40, 55, 115, 120, 129, 157, 191, 223, 208, 82, 53, 109, 141, + 140, 132, 123, 43, 82, 113, 99, 91, 88, 81, 72, 70, 69, 69, 69, 63, + 58, 56, 55, 53, 52, 50, 50, 44, 42, 40, 40, 39, 39, 39, 38, 35, + 34, 34, 34, 34, 34, 33, 34, 33, 32, 30, 27, 25, 25, 23, 22, 15, + 17, 19, 21, 22, 24, 27, 27, 25, 26, 26, 26, 27, 26, 26, 26, 25, + 23, 23, 21, 21, 20, 17, 18, 19, 16, 13, 12, 10, 7, 7, 7, 7, + 18, 19, 22, 24, 24, 27, 29, 35, 42, 35, 39, 59, 78, 39, 33, 56, + 56, 60, 49, 15, 24, 59, 63, 67, 69, 68, 66, 68, 78, 84, 94, 86, + 62, 92, 98, 60, 56, 122, 132, 138, 161, 202, 235, 232, 49, 96, 137, 143, + 139, 135, 112, 44, 101, 120, 109, 97, 94, 88, 77, 70, 69, 70, 72, 63, + 56, 55, 56, 57, 53, 50, 47, 40, 38, 37, 37, 36, 38, 39, 39, 38, + 35, 33, 30, 30, 28, 30, 30, 28, 26, 30, 30, 29, 28, 24, 20, 14, + 15, 20, 24, 26, 29, 32, 29, 27, 31, 31, 29, 26, 26, 32, 36, 32, + 25, 20, 21, 21, 24, 19, 21, 19, 16, 12, 11, 11, 9, 9, 9, 8, + 20, 21, 25, 27, 26, 26, 27, 34, 45, 34, 38, 67, 79, 41, 41, 51, + 45, 56, 47, 11, 30, 54, 66, 70, 65, 65, 68, 71, 77, 83, 87, 103, + 70, 91, 105, 71, 54, 126, 142, 149, 166, 209, 243, 247, 88, 119, 146, 135, + 121, 126, 112, 45, 103, 113, 101, 91, 85, 82, 74, 63, 58, 61, 67, 58, + 49, 48, 49, 51, 47, 45, 40, 32, 32, 31, 31, 33, 36, 38, 40, 42, + 36, 33, 26, 22, 28, 32, 29, 17, 22, 29, 29, 32, 29, 24, 19, 16, + 17, 22, 28, 33, 32, 34, 30, 28, 35, 37, 31, 26, 26, 34, 38, 32, + 29, 24, 20, 20, 21, 25, 25, 17, 14, 12, 11, 11, 11, 11, 11, 10, + 21, 22, 26, 27, 27, 25, 26, 35, 47, 39, 39, 66, 40, 15, 30, 44, + 42, 57, 47, 20, 46, 56, 64, 67, 62, 61, 64, 67, 72, 78, 83, 104, + 79, 88, 120, 76, 59, 130, 141, 154, 172, 212, 244, 248, 118, 117, 140, 130, + 125, 137, 120, 40, 94, 93, 77, 67, 62, 64, 60, 51, 46, 48, 55, 51, + 44, 41, 40, 39, 38, 40, 38, 37, 38, 37, 35, 33, 34, 35, 36, 35, + 28, 26, 25, 25, 25, 29, 32, 20, 25, 26, 25, 26, 25, 22, 21, 23, + 23, 25, 26, 27, 24, 25, 26, 26, 32, 35, 29, 22, 21, 26, 30, 26, + 26, 24, 19, 24, 22, 23, 23, 18, 16, 13, 11, 12, 11, 12, 11, 10, + 21, 22, 26, 27, 28, 26, 27, 35, 47, 41, 47, 46, 3, 16, 34, 42, + 49, 64, 40, 35, 59, 53, 56, 61, 57, 56, 59, 60, 64, 71, 77, 94, + 93, 89, 100, 52, 62, 128, 134, 149, 171, 208, 238, 246, 108, 82, 69, 94, + 119, 126, 116, 46, 99, 100, 89, 72, 61, 63, 58, 50, 46, 48, 55, 55, + 49, 42, 37, 35, 38, 42, 44, 47, 48, 45, 41, 39, 37, 33, 30, 22, + 23, 29, 33, 37, 37, 35, 36, 39, 32, 22, 25, 18, 19, 19, 23, 31, + 29, 26, 21, 18, 22, 23, 27, 29, 36, 40, 37, 31, 23, 22, 24, 19, + 18, 26, 28, 25, 33, 19, 20, 22, 17, 15, 13, 12, 12, 12, 11, 10, + 19, 22, 26, 26, 27, 28, 29, 36, 45, 42, 55, 29, 23, 50, 53, 55, + 52, 63, 31, 51, 63, 51, 53, 59, 53, 53, 55, 57, 63, 69, 75, 86, + 100, 82, 88, 51, 58, 120, 124, 140, 169, 207, 239, 244, 109, 81, 90, 82, + 96, 134, 125, 42, 94, 97, 90, 72, 62, 68, 68, 58, 53, 55, 62, 67, + 63, 51, 41, 37, 42, 48, 55, 69, 71, 65, 57, 51, 41, 34, 27, 20, + 28, 36, 42, 48, 50, 46, 42, 47, 41, 30, 20, 13, 15, 19, 26, 36, + 31, 25, 19, 19, 27, 28, 33, 38, 45, 50, 49, 43, 38, 28, 18, 15, + 24, 36, 40, 40, 29, 30, 24, 25, 21, 18, 15, 14, 13, 12, 11, 10, + 19, 21, 25, 25, 27, 28, 30, 37, 43, 46, 61, 26, 48, 65, 61, 66, + 59, 55, 25, 63, 63, 49, 52, 57, 52, 51, 54, 56, 62, 68, 72, 78, + 86, 40, 62, 54, 55, 117, 125, 145, 180, 208, 231, 237, 125, 113, 138, 115, + 88, 100, 100, 46, 97, 93, 78, 62, 58, 68, 72, 67, 63, 65, 71, 84, + 81, 65, 48, 45, 53, 62, 79, 93, 92, 83, 70, 61, 51, 40, 34, 26, + 35, 48, 66, 71, 54, 44, 51, 66, 54, 42, 22, 15, 18, 24, 31, 39, + 33, 27, 23, 25, 35, 42, 56, 64, 71, 77, 77, 63, 51, 39, 28, 25, + 36, 49, 68, 75, 46, 39, 27, 28, 23, 20, 16, 15, 13, 12, 11, 10, + 19, 20, 23, 24, 27, 28, 30, 37, 41, 54, 66, 34, 46, 59, 66, 73, + 76, 49, 21, 65, 60, 46, 49, 54, 51, 52, 53, 56, 58, 62, 66, 71, + 74, 17, 64, 72, 57, 122, 137, 153, 182, 204, 223, 234, 136, 145, 132, 134, + 124, 105, 71, 44, 102, 106, 96, 75, 69, 80, 83, 81, 79, 81, 87, 102, + 101, 81, 61, 62, 72, 85, 109, 138, 139, 128, 112, 76, 63, 52, 47, 43, + 53, 76, 111, 143, 141, 119, 97, 106, 67, 50, 33, 23, 24, 31, 36, 37, + 33, 31, 32, 42, 56, 76, 108, 128, 133, 139, 144, 123, 71, 47, 45, 42, + 52, 86, 124, 92, 93, 46, 38, 29, 24, 21, 16, 14, 12, 12, 11, 10, + 17, 19, 24, 26, 27, 26, 29, 36, 44, 55, 57, 25, 49, 75, 80, 83, + 81, 42, 27, 68, 60, 47, 47, 51, 48, 46, 47, 48, 53, 58, 63, 65, + 68, 74, 95, 78, 67, 134, 137, 154, 186, 192, 214, 225, 130, 136, 130, 141, + 141, 150, 135, 42, 99, 105, 93, 95, 100, 110, 110, 106, 99, 105, 123, 144, + 138, 116, 56, 84, 100, 129, 142, 128, 113, 121, 83, 76, 57, 64, 66, 68, + 85, 135, 155, 171, 184, 193, 195, 179, 113, 57, 44, 34, 33, 39, 43, 28, + 32, 42, 50, 65, 94, 111, 130, 140, 127, 127, 116, 68, 26, 74, 86, 66, + 91, 145, 132, 156, 150, 75, 40, 33, 25, 22, 16, 14, 12, 9, 10, 9, + 17, 19, 24, 26, 28, 28, 30, 34, 37, 62, 63, 43, 55, 88, 73, 63, + 45, 24, 26, 65, 55, 44, 43, 46, 45, 42, 44, 46, 51, 57, 60, 63, + 72, 83, 72, 64, 90, 134, 136, 158, 171, 178, 201, 219, 138, 131, 130, 114, + 141, 151, 136, 44, 87, 98, 93, 92, 106, 120, 130, 122, 150, 136, 140, 162, + 151, 135, 63, 98, 131, 171, 172, 136, 131, 113, 97, 92, 72, 55, 80, 96, + 136, 184, 181, 182, 208, 209, 204, 213, 171, 83, 50, 46, 41, 41, 41, 28, + 35, 48, 72, 112, 141, 159, 143, 130, 117, 121, 73, 87, 135, 173, 168, 104, + 134, 163, 144, 180, 159, 113, 33, 30, 26, 21, 16, 14, 11, 10, 9, 10, + 16, 18, 23, 25, 28, 29, 31, 35, 39, 63, 45, 42, 78, 94, 80, 77, + 64, 42, 29, 60, 49, 40, 39, 41, 42, 40, 42, 45, 50, 56, 61, 63, + 75, 101, 107, 106, 114, 134, 135, 157, 153, 167, 184, 210, 120, 116, 147, 127, + 132, 124, 121, 42, 79, 89, 88, 92, 111, 123, 142, 136, 163, 150, 158, 165, + 166, 144, 69, 133, 170, 185, 175, 190, 185, 196, 202, 192, 159, 99, 80, 129, + 151, 145, 181, 193, 215, 213, 211, 176, 156, 164, 55, 55, 50, 42, 38, 27, + 37, 60, 106, 171, 183, 193, 171, 142, 123, 114, 127, 190, 213, 203, 187, 163, + 152, 155, 155, 169, 138, 137, 30, 25, 28, 21, 18, 15, 13, 10, 10, 10, + 16, 18, 23, 24, 28, 30, 31, 34, 37, 64, 45, 65, 103, 87, 86, 79, + 73, 52, 26, 56, 46, 39, 39, 40, 42, 41, 43, 45, 49, 58, 66, 76, + 85, 88, 93, 108, 121, 132, 135, 148, 141, 160, 166, 201, 109, 118, 126, 109, + 143, 164, 142, 42, 83, 83, 78, 86, 102, 111, 138, 158, 159, 155, 171, 189, + 167, 169, 112, 174, 184, 190, 170, 188, 153, 208, 208, 205, 203, 169, 92, 175, + 173, 167, 189, 200, 216, 216, 197, 152, 175, 220, 79, 53, 54, 40, 33, 25, + 43, 84, 144, 187, 195, 195, 199, 182, 94, 55, 131, 202, 199, 169, 174, 150, + 145, 141, 133, 157, 133, 134, 20, 22, 29, 21, 19, 15, 13, 11, 10, 11, + 16, 18, 22, 24, 28, 29, 30, 32, 31, 65, 63, 92, 95, 79, 94, 75, + 91, 58, 22, 49, 45, 40, 39, 40, 42, 42, 44, 47, 51, 60, 69, 78, + 82, 81, 88, 102, 114, 126, 131, 134, 136, 151, 151, 190, 114, 142, 138, 111, + 133, 144, 138, 49, 88, 83, 72, 75, 86, 98, 131, 159, 156, 164, 182, 200, + 152, 164, 155, 199, 197, 177, 161, 183, 146, 202, 192, 207, 183, 182, 149, 206, + 189, 194, 214, 203, 199, 198, 178, 170, 232, 203, 89, 41, 54, 38, 28, 28, + 54, 113, 166, 190, 211, 191, 200, 140, 29, 27, 86, 169, 170, 133, 157, 150, + 162, 83, 79, 140, 150, 117, 17, 24, 26, 20, 17, 14, 12, 10, 10, 11, + 14, 18, 22, 24, 27, 28, 30, 31, 28, 65, 69, 81, 70, 77, 90, 64, + 86, 44, 28, 54, 45, 41, 39, 40, 42, 42, 45, 49, 56, 61, 67, 75, + 79, 74, 74, 86, 103, 117, 122, 121, 131, 135, 140, 184, 135, 140, 140, 126, + 147, 150, 140, 46, 83, 87, 74, 65, 75, 93, 119, 151, 151, 175, 187, 193, + 174, 156, 177, 194, 157, 107, 114, 178, 175, 206, 191, 173, 176, 197, 188, 196, + 186, 142, 143, 183, 192, 203, 197, 206, 191, 117, 110, 25, 50, 35, 23, 32, + 67, 132, 152, 145, 182, 167, 164, 54, 26, 42, 68, 115, 124, 125, 134, 135, + 161, 100, 61, 119, 109, 48, 14, 28, 23, 19, 15, 12, 10, 8, 9, 11, + 14, 18, 22, 24, 26, 27, 29, 31, 27, 65, 70, 73, 72, 75, 66, 61, + 117, 49, 30, 47, 46, 45, 40, 39, 42, 44, 47, 51, 59, 61, 64, 70, + 75, 74, 80, 91, 102, 107, 109, 114, 131, 120, 134, 167, 148, 155, 158, 143, + 147, 157, 149, 40, 76, 88, 79, 64, 67, 73, 86, 144, 156, 184, 183, 184, + 182, 159, 170, 137, 48, 41, 63, 140, 178, 196, 174, 185, 192, 186, 186, 186, + 81, 32, 49, 92, 160, 190, 155, 182, 150, 125, 107, 16, 49, 35, 25, 36, + 78, 140, 151, 157, 163, 139, 114, 20, 42, 53, 67, 99, 118, 146, 114, 123, + 144, 114, 55, 58, 32, 14, 33, 28, 21, 19, 16, 14, 11, 8, 8, 11, + 13, 18, 22, 25, 25, 27, 30, 31, 29, 65, 66, 82, 97, 85, 72, 97, + 127, 49, 28, 49, 50, 49, 42, 40, 47, 50, 53, 54, 54, 58, 64, 65, + 67, 77, 88, 98, 102, 96, 94, 111, 133, 106, 130, 159, 133, 159, 169, 156, + 159, 173, 156, 42, 75, 82, 78, 74, 65, 58, 70, 110, 154, 183, 182, 194, + 188, 170, 165, 52, 17, 54, 78, 105, 188, 214, 196, 202, 181, 163, 172, 121, + 8, 40, 64, 57, 99, 122, 87, 131, 153, 172, 149, 12, 49, 37, 32, 41, + 94, 156, 187, 178, 162, 141, 111, 17, 52, 51, 57, 91, 132, 161, 108, 124, + 113, 118, 43, 47, 27, 27, 35, 27, 21, 19, 18, 17, 13, 10, 8, 10, + 14, 17, 22, 24, 25, 27, 29, 31, 27, 68, 85, 102, 111, 102, 97, 127, + 124, 45, 28, 49, 51, 52, 45, 44, 52, 50, 50, 51, 53, 57, 63, 66, + 68, 77, 90, 98, 95, 89, 92, 111, 123, 100, 124, 152, 135, 155, 145, 161, + 172, 174, 166, 45, 74, 79, 76, 79, 68, 55, 69, 117, 166, 183, 177, 191, + 194, 185, 118, 18, 47, 63, 82, 99, 205, 233, 209, 220, 191, 197, 185, 54, + 24, 62, 69, 66, 126, 176, 172, 189, 185, 204, 167, 11, 48, 39, 33, 41, + 114, 179, 189, 168, 163, 156, 123, 15, 60, 45, 56, 91, 128, 148, 103, 119, + 140, 137, 31, 37, 31, 33, 35, 24, 20, 19, 18, 17, 14, 9, 9, 11, + 14, 17, 22, 24, 24, 26, 29, 30, 26, 70, 103, 118, 109, 104, 105, 130, + 106, 38, 28, 52, 54, 54, 48, 46, 52, 49, 48, 48, 51, 56, 62, 66, + 71, 79, 87, 92, 87, 85, 95, 114, 111, 94, 119, 143, 139, 156, 175, 171, + 175, 173, 177, 43, 72, 76, 72, 76, 67, 56, 71, 119, 168, 178, 185, 209, + 210, 161, 57, 32, 67, 64, 76, 102, 201, 226, 214, 222, 194, 197, 185, 35, + 52, 70, 68, 63, 145, 215, 207, 211, 215, 199, 158, 9, 48, 41, 36, 47, + 120, 172, 171, 143, 161, 164, 128, 23, 58, 45, 55, 88, 109, 130, 127, 133, + 157, 142, 27, 33, 34, 32, 32, 23, 19, 18, 18, 17, 12, 9, 9, 10, + 13, 16, 22, 24, 25, 27, 30, 33, 31, 66, 92, 101, 97, 95, 98, 108, + 103, 48, 34, 58, 57, 55, 49, 47, 46, 45, 46, 48, 50, 55, 61, 65, + 74, 81, 80, 78, 79, 86, 101, 115, 100, 92, 113, 145, 135, 163, 189, 160, + 188, 190, 174, 39, 71, 75, 69, 70, 65, 59, 72, 112, 157, 175, 201, 208, + 177, 80, 23, 50, 70, 76, 68, 98, 196, 229, 214, 200, 179, 181, 146, 38, + 64, 67, 74, 78, 127, 188, 163, 184, 192, 171, 138, 9, 49, 43, 36, 44, + 109, 157, 182, 167, 168, 153, 113, 24, 55, 40, 49, 81, 112, 149, 161, 150, + 148, 117, 24, 33, 31, 28, 27, 21, 18, 18, 17, 16, 12, 9, 9, 9, + 13, 16, 21, 25, 25, 27, 30, 33, 30, 65, 88, 99, 100, 98, 110, 111, + 118, 67, 41, 64, 59, 54, 49, 47, 45, 45, 46, 48, 51, 55, 62, 66, + 74, 78, 71, 69, 74, 86, 104, 112, 92, 92, 107, 141, 115, 153, 146, 147, + 185, 168, 156, 45, 72, 74, 67, 67, 63, 60, 74, 118, 164, 191, 203, 169, + 83, 98, 48, 59, 73, 68, 69, 88, 159, 198, 187, 161, 158, 190, 129, 44, + 68, 63, 70, 71, 123, 190, 158, 198, 178, 169, 126, 10, 52, 46, 37, 42, + 91, 141, 182, 165, 157, 144, 114, 22, 62, 36, 50, 85, 127, 155, 152, 142, + 132, 125, 25, 34, 31, 28, 29, 20, 17, 17, 16, 15, 12, 9, 9, 9, + 14, 17, 22, 25, 26, 26, 30, 34, 31, 63, 83, 95, 98, 95, 118, 120, + 125, 74, 43, 68, 59, 52, 48, 47, 49, 48, 47, 48, 51, 55, 62, 67, + 72, 70, 63, 62, 69, 84, 100, 106, 86, 92, 102, 134, 118, 160, 165, 151, + 152, 133, 132, 39, 73, 74, 67, 67, 60, 55, 74, 118, 169, 199, 182, 128, + 120, 201, 62, 65, 70, 60, 69, 85, 153, 190, 158, 145, 161, 192, 132, 45, + 67, 55, 68, 75, 114, 179, 170, 188, 168, 160, 110, 11, 55, 47, 38, 44, + 84, 142, 181, 164, 166, 150, 120, 31, 62, 47, 55, 90, 128, 140, 140, 138, + 132, 102, 19, 35, 32, 25, 25, 20, 17, 17, 16, 14, 11, 9, 8, 8, + 16, 18, 22, 23, 26, 27, 29, 34, 34, 61, 75, 79, 88, 100, 123, 124, + 125, 93, 40, 72, 58, 49, 48, 49, 50, 48, 49, 50, 51, 55, 63, 66, + 66, 61, 55, 61, 65, 84, 99, 96, 83, 90, 98, 130, 157, 179, 191, 174, + 159, 158, 152, 34, 72, 72, 66, 68, 58, 50, 71, 119, 175, 171, 127, 141, + 215, 231, 57, 58, 62, 55, 62, 87, 177, 189, 138, 153, 178, 188, 132, 41, + 59, 52, 64, 70, 107, 168, 151, 171, 155, 142, 104, 12, 56, 50, 40, 43, + 82, 144, 176, 168, 178, 162, 135, 48, 61, 58, 63, 94, 126, 123, 144, 146, + 142, 67, 18, 36, 31, 22, 21, 21, 16, 16, 15, 13, 11, 8, 7, 8, + 18, 19, 22, 23, 26, 27, 28, 33, 35, 58, 69, 74, 95, 115, 121, 128, + 125, 99, 44, 71, 56, 46, 49, 53, 51, 49, 50, 51, 52, 56, 63, 64, + 57, 54, 59, 66, 73, 86, 88, 86, 84, 90, 95, 134, 172, 168, 183, 183, + 186, 198, 155, 36, 71, 72, 66, 68, 58, 50, 68, 109, 149, 126, 176, 219, + 236, 190, 42, 55, 56, 49, 59, 84, 167, 171, 147, 180, 192, 180, 96, 38, + 54, 50, 61, 72, 118, 173, 170, 165, 143, 140, 126, 13, 57, 51, 41, 44, + 74, 122, 146, 151, 154, 141, 123, 54, 57, 73, 89, 107, 130, 127, 148, 145, + 122, 32, 15, 36, 30, 22, 21, 21, 16, 16, 14, 13, 11, 7, 6, 8, + 17, 20, 23, 24, 26, 27, 29, 34, 34, 52, 66, 76, 105, 129, 114, 135, + 137, 114, 49, 67, 57, 45, 51, 59, 53, 52, 52, 52, 54, 59, 62, 57, + 48, 57, 70, 75, 88, 93, 82, 81, 87, 89, 90, 130, 125, 165, 133, 169, + 190, 160, 120, 41, 71, 74, 66, 65, 59, 52, 68, 96, 104, 185, 241, 231, + 202, 163, 41, 52, 55, 48, 58, 84, 157, 196, 160, 190, 195, 176, 92, 36, + 52, 50, 62, 70, 130, 164, 178, 165, 147, 149, 141, 14, 59, 54, 45, 48, + 63, 88, 105, 133, 131, 129, 125, 100, 72, 82, 101, 112, 132, 129, 123, 114, + 59, 4, 25, 36, 27, 22, 21, 22, 18, 17, 14, 13, 9, 5, 6, 8, + 17, 20, 23, 24, 26, 26, 28, 34, 36, 49, 66, 83, 108, 136, 120, 146, + 153, 133, 53, 66, 60, 48, 53, 61, 54, 53, 53, 54, 56, 61, 62, 52, + 48, 65, 80, 95, 98, 92, 85, 78, 90, 86, 87, 124, 53, 83, 130, 188, + 157, 104, 137, 45, 71, 75, 66, 65, 59, 53, 68, 89, 169, 245, 238, 208, + 206, 192, 51, 51, 55, 47, 57, 76, 142, 213, 152, 184, 182, 171, 102, 36, + 52, 52, 63, 65, 130, 159, 161, 163, 159, 157, 135, 14, 60, 55, 47, 51, + 59, 72, 85, 114, 124, 139, 140, 138, 104, 97, 106, 103, 118, 120, 105, 77, + 16, 9, 35, 34, 25, 22, 20, 21, 17, 16, 13, 12, 9, 5, 6, 8, + 18, 19, 23, 24, 26, 25, 28, 34, 38, 47, 66, 89, 117, 144, 132, 151, + 142, 114, 63, 54, 61, 51, 55, 62, 56, 55, 56, 57, 60, 62, 63, 53, + 54, 71, 101, 140, 120, 90, 83, 77, 91, 82, 84, 124, 116, 115, 134, 130, + 77, 130, 181, 44, 70, 74, 67, 66, 59, 53, 68, 120, 213, 215, 204, 208, + 202, 214, 52, 52, 55, 47, 57, 71, 150, 204, 138, 181, 186, 177, 105, 36, + 53, 53, 64, 68, 128, 166, 157, 164, 164, 161, 139, 14, 60, 56, 49, 53, + 58, 66, 80, 96, 113, 130, 134, 151, 126, 110, 115, 114, 131, 114, 76, 37, + 7, 24, 31, 31, 24, 22, 19, 20, 16, 16, 14, 13, 8, 4, 5, 8, + 18, 19, 23, 24, 25, 26, 28, 34, 37, 42, 64, 92, 124, 150, 139, 150, + 128, 106, 87, 41, 56, 53, 58, 66, 61, 60, 60, 62, 62, 62, 62, 56, + 61, 81, 127, 176, 152, 94, 73, 79, 91, 77, 83, 126, 150, 193, 165, 122, + 120, 213, 188, 37, 69, 73, 68, 68, 58, 51, 68, 131, 205, 172, 165, 191, + 175, 218, 50, 53, 55, 47, 56, 79, 181, 198, 128, 164, 181, 173, 113, 37, + 54, 55, 66, 74, 114, 163, 162, 164, 162, 159, 143, 13, 59, 56, 49, 52, + 55, 60, 79, 93, 112, 126, 138, 161, 124, 108, 121, 142, 148, 87, 32, 21, + 26, 35, 27, 28, 23, 24, 18, 19, 15, 16, 14, 12, 7, 4, 4, 8, + 19, 20, 23, 23, 25, 26, 29, 34, 36, 39, 59, 85, 111, 143, 139, 154, + 145, 149, 129, 53, 60, 60, 58, 65, 65, 63, 62, 62, 60, 56, 58, 55, + 63, 97, 144, 181, 170, 91, 53, 78, 88, 71, 82, 116, 174, 197, 201, 201, + 212, 232, 205, 47, 72, 71, 65, 68, 57, 46, 65, 124, 178, 195, 210, 165, + 219, 222, 47, 52, 54, 47, 57, 83, 155, 169, 141, 155, 149, 129, 71, 36, + 57, 53, 62, 74, 93, 141, 159, 162, 162, 155, 137, 15, 60, 53, 45, 50, + 53, 63, 85, 101, 120, 136, 150, 136, 97, 104, 128, 128, 86, 30, 25, 45, + 55, 35, 30, 28, 23, 22, 15, 17, 14, 16, 14, 13, 9, 4, 5, 8, + 22, 25, 25, 23, 23, 26, 30, 37, 38, 41, 49, 68, 96, 126, 136, 154, + 157, 144, 141, 79, 72, 72, 55, 52, 67, 61, 59, 52, 52, 47, 53, 51, + 65, 110, 149, 154, 177, 63, 28, 76, 83, 65, 74, 112, 180, 198, 215, 220, + 224, 235, 213, 51, 76, 70, 54, 62, 54, 40, 55, 113, 167, 197, 225, 212, + 206, 195, 54, 52, 52, 45, 62, 82, 97, 137, 173, 192, 194, 169, 99, 33, + 58, 48, 46, 75, 77, 94, 115, 141, 156, 156, 131, 20, 69, 51, 38, 46, + 65, 87, 104, 99, 134, 139, 109, 60, 55, 49, 32, 27, 28, 36, 47, 49, + 48, 43, 39, 33, 26, 14, 11, 15, 13, 16, 16, 16, 12, 10, 8, 7, + 23, 25, 25, 23, 23, 26, 30, 37, 37, 40, 45, 60, 80, 103, 134, 149, + 147, 133, 138, 123, 67, 76, 55, 53, 65, 62, 58, 50, 49, 51, 58, 69, + 92, 153, 160, 180, 144, 24, 38, 75, 83, 69, 80, 118, 182, 185, 200, 219, + 202, 225, 186, 58, 79, 76, 59, 68, 56, 37, 56, 121, 190, 210, 188, 176, + 164, 164, 40, 51, 49, 46, 61, 88, 125, 180, 191, 191, 191, 173, 101, 27, + 60, 47, 46, 75, 114, 139, 126, 111, 125, 129, 112, 18, 64, 51, 34, 50, + 71, 90, 98, 116, 142, 135, 55, 29, 71, 68, 53, 50, 47, 46, 48, 47, + 43, 40, 39, 32, 25, 14, 13, 15, 14, 16, 16, 16, 13, 10, 8, 7, + 23, 24, 24, 22, 22, 25, 29, 35, 36, 38, 41, 54, 71, 93, 128, 131, + 130, 131, 161, 145, 90, 68, 70, 54, 62, 56, 55, 58, 57, 63, 69, 94, + 146, 179, 175, 177, 89, 21, 53, 79, 87, 75, 91, 133, 178, 184, 202, 202, + 192, 207, 153, 78, 78, 91, 68, 68, 61, 49, 65, 131, 200, 209, 161, 111, + 150, 156, 39, 56, 53, 50, 66, 97, 154, 193, 174, 180, 175, 161, 93, 34, + 61, 43, 48, 73, 119, 150, 164, 148, 123, 112, 111, 16, 67, 50, 36, 45, + 70, 87, 98, 115, 130, 131, 75, 47, 91, 80, 73, 63, 57, 48, 45, 48, + 40, 35, 34, 29, 27, 20, 18, 17, 15, 16, 16, 16, 12, 10, 8, 7, + 23, 24, 23, 21, 21, 23, 26, 32, 35, 37, 39, 49, 67, 96, 136, 150, + 164, 159, 172, 162, 121, 86, 68, 67, 63, 62, 61, 66, 68, 84, 99, 145, + 186, 190, 184, 153, 40, 43, 57, 82, 95, 86, 108, 148, 178, 192, 202, 196, + 197, 218, 189, 127, 77, 96, 85, 78, 69, 63, 79, 134, 195, 189, 193, 161, + 116, 132, 50, 50, 63, 60, 74, 107, 162, 174, 165, 180, 166, 157, 103, 35, + 64, 49, 52, 80, 129, 121, 158, 149, 157, 152, 130, 34, 64, 55, 43, 50, + 73, 86, 114, 127, 119, 110, 99, 58, 75, 71, 80, 80, 73, 70, 63, 51, + 45, 36, 30, 28, 29, 26, 23, 18, 15, 16, 16, 15, 12, 10, 9, 8, + 23, 23, 22, 20, 21, 22, 24, 30, 35, 36, 37, 45, 56, 75, 106, 142, + 173, 177, 178, 165, 141, 130, 82, 82, 65, 72, 71, 74, 88, 112, 136, 183, + 208, 196, 167, 78, 35, 56, 59, 81, 103, 106, 136, 162, 191, 195, 187, 191, + 199, 212, 204, 190, 123, 106, 103, 85, 76, 78, 102, 154, 188, 188, 195, 184, + 114, 123, 83, 57, 70, 75, 87, 136, 167, 162, 173, 180, 163, 159, 118, 35, + 70, 64, 60, 85, 128, 101, 164, 148, 151, 149, 142, 75, 55, 64, 48, 44, + 73, 80, 119, 112, 119, 109, 107, 77, 43, 64, 94, 77, 73, 81, 75, 60, + 56, 43, 33, 31, 32, 32, 27, 20, 16, 16, 15, 15, 12, 9, 9, 9, + 23, 23, 22, 20, 20, 22, 23, 29, 34, 35, 35, 40, 53, 65, 78, 108, + 130, 161, 182, 142, 129, 134, 119, 122, 91, 80, 89, 113, 152, 154, 126, 141, + 190, 177, 102, 28, 55, 61, 62, 87, 129, 155, 187, 196, 203, 198, 194, 203, + 206, 208, 198, 181, 181, 186, 163, 71, 79, 109, 136, 178, 194, 180, 162, 173, + 190, 191, 165, 110, 74, 83, 123, 166, 159, 161, 169, 175, 162, 151, 105, 72, + 81, 65, 64, 75, 104, 93, 170, 126, 144, 148, 136, 108, 84, 63, 50, 48, + 76, 59, 105, 113, 136, 117, 89, 83, 99, 123, 104, 72, 71, 79, 71, 58, + 55, 50, 45, 37, 36, 33, 28, 21, 17, 16, 14, 14, 11, 8, 9, 9, + 22, 23, 22, 20, 21, 22, 24, 29, 33, 35, 35, 37, 40, 54, 64, 83, + 108, 145, 154, 133, 108, 110, 129, 147, 131, 121, 131, 173, 183, 147, 137, 173, + 173, 126, 40, 46, 61, 60, 61, 85, 140, 176, 205, 206, 201, 199, 202, 204, + 199, 206, 192, 178, 197, 185, 163, 49, 81, 146, 163, 182, 195, 164, 170, 186, + 176, 180, 168, 142, 78, 86, 150, 160, 142, 162, 171, 172, 160, 141, 118, 117, + 85, 53, 56, 77, 98, 112, 162, 143, 146, 142, 132, 123, 110, 59, 46, 43, + 66, 42, 74, 93, 114, 107, 93, 107, 125, 126, 97, 81, 84, 88, 77, 67, + 59, 54, 52, 44, 35, 33, 26, 20, 17, 16, 14, 14, 11, 8, 8, 9, + 22, 22, 21, 19, 21, 21, 25, 29, 31, 35, 35, 36, 40, 45, 54, 66, + 81, 125, 124, 145, 160, 166, 187, 184, 184, 168, 175, 216, 197, 186, 180, 202, + 156, 49, 32, 60, 58, 57, 64, 89, 150, 184, 206, 196, 191, 193, 197, 189, + 196, 193, 175, 185, 202, 179, 150, 39, 88, 161, 167, 174, 181, 171, 178, 176, + 154, 153, 156, 149, 75, 82, 147, 135, 138, 167, 170, 163, 155, 131, 155, 101, + 70, 42, 43, 42, 70, 125, 160, 145, 144, 141, 134, 130, 105, 52, 31, 45, + 69, 75, 95, 125, 123, 117, 97, 102, 126, 113, 100, 93, 97, 94, 91, 97, + 76, 54, 44, 47, 38, 32, 23, 22, 18, 17, 15, 15, 11, 8, 8, 9, + 21, 20, 20, 19, 21, 22, 25, 29, 28, 33, 33, 35, 37, 40, 47, 55, + 63, 73, 95, 141, 167, 186, 205, 207, 219, 143, 200, 214, 169, 180, 171, 133, + 49, 31, 56, 55, 52, 57, 67, 85, 132, 152, 168, 168, 166, 171, 181, 179, + 178, 174, 172, 183, 192, 168, 157, 35, 79, 115, 109, 137, 156, 158, 163, 162, + 150, 150, 145, 124, 62, 84, 142, 140, 150, 166, 143, 109, 88, 44, 57, 62, + 78, 36, 86, 110, 122, 158, 151, 136, 134, 131, 125, 124, 102, 56, 36, 44, + 69, 84, 97, 118, 126, 127, 81, 90, 114, 89, 85, 80, 80, 69, 78, 101, + 87, 65, 37, 41, 44, 28, 21, 23, 19, 18, 16, 15, 10, 7, 8, 11, + 20, 19, 20, 19, 21, 22, 25, 27, 27, 31, 32, 35, 36, 38, 42, 45, + 49, 60, 73, 95, 144, 154, 177, 196, 176, 160, 210, 185, 129, 115, 54, 24, + 39, 55, 56, 53, 46, 56, 67, 77, 101, 100, 101, 98, 89, 90, 101, 98, + 86, 77, 78, 89, 94, 83, 84, 32, 74, 80, 65, 63, 67, 69, 70, 76, + 73, 71, 62, 58, 43, 73, 101, 79, 72, 70, 48, 26, 26, 26, 51, 69, + 48, 49, 96, 87, 72, 80, 62, 62, 63, 62, 60, 63, 45, 26, 30, 38, + 65, 80, 78, 96, 115, 95, 78, 105, 91, 64, 71, 76, 77, 67, 76, 93, + 88, 74, 43, 29, 40, 29, 21, 24, 20, 20, 17, 14, 11, 7, 9, 13, + 18, 18, 19, 18, 22, 22, 24, 26, 25, 30, 33, 37, 38, 38, 41, 41, + 46, 53, 62, 61, 60, 69, 97, 105, 80, 126, 125, 74, 58, 30, 36, 70, + 67, 65, 56, 43, 44, 53, 63, 64, 71, 70, 70, 66, 55, 55, 69, 75, + 64, 55, 53, 60, 61, 66, 62, 51, 66, 73, 61, 54, 51, 50, 51, 51, + 48, 51, 54, 53, 54, 59, 56, 50, 51, 55, 52, 43, 39, 40, 54, 51, + 40, 46, 56, 50, 43, 47, 41, 43, 48, 52, 54, 50, 44, 38, 47, 37, + 55, 78, 77, 75, 80, 63, 94, 93, 75, 80, 86, 89, 90, 82, 84, 86, + 78, 64, 48, 19, 29, 32, 22, 25, 21, 20, 17, 14, 10, 7, 10, 15, + 18, 18, 19, 19, 21, 22, 23, 25, 23, 28, 31, 36, 37, 37, 39, 39, + 42, 47, 57, 66, 66, 58, 50, 37, 29, 29, 35, 39, 52, 55, 60, 69, + 66, 62, 51, 42, 41, 50, 57, 51, 50, 63, 72, 66, 58, 61, 81, 85, + 67, 60, 58, 60, 61, 67, 58, 53, 51, 63, 61, 54, 50, 50, 56, 55, + 48, 44, 47, 54, 53, 43, 35, 40, 52, 57, 54, 44, 42, 45, 56, 46, + 43, 35, 41, 44, 48, 41, 31, 33, 39, 45, 48, 44, 48, 40, 38, 37, + 47, 73, 84, 80, 61, 85, 91, 72, 73, 91, 85, 90, 87, 81, 74, 66, + 64, 61, 54, 16, 19, 32, 24, 25, 21, 19, 16, 14, 10, 7, 10, 15, + 17, 18, 19, 20, 21, 21, 23, 25, 20, 24, 28, 33, 34, 35, 39, 39, + 40, 48, 48, 52, 52, 53, 47, 42, 43, 47, 50, 57, 56, 59, 68, 65, + 64, 55, 52, 44, 43, 50, 55, 46, 39, 56, 64, 55, 49, 51, 71, 80, + 62, 51, 48, 50, 53, 57, 54, 46, 45, 49, 49, 46, 41, 43, 49, 45, + 38, 34, 36, 41, 37, 29, 19, 29, 43, 43, 40, 36, 34, 37, 43, 37, + 27, 23, 24, 31, 30, 26, 18, 24, 28, 33, 35, 33, 36, 31, 32, 35, + 52, 66, 63, 66, 74, 81, 63, 56, 67, 75, 67, 74, 73, 74, 65, 55, + 59, 66, 58, 18, 16, 30, 25, 23, 19, 18, 16, 14, 10, 8, 10, 15, + 17, 18, 19, 19, 19, 21, 24, 24, 18, 22, 26, 29, 33, 35, 39, 41, + 43, 47, 48, 50, 50, 49, 46, 46, 48, 47, 52, 53, 54, 61, 61, 57, + 56, 51, 47, 44, 45, 49, 53, 47, 43, 51, 57, 55, 53, 53, 64, 71, + 62, 49, 44, 45, 49, 52, 52, 47, 45, 46, 45, 43, 41, 42, 44, 40, + 35, 34, 35, 37, 36, 31, 27, 32, 37, 37, 36, 33, 32, 34, 37, 34, + 31, 27, 27, 31, 30, 27, 24, 30, 31, 33, 33, 31, 32, 32, 35, 42, + 69, 53, 56, 80, 94, 68, 70, 56, 48, 40, 36, 42, 54, 60, 58, 63, + 62, 65, 47, 23, 11, 32, 23, 22, 18, 17, 16, 16, 12, 10, 12, 13, + 17, 18, 19, 19, 19, 22, 24, 25, 19, 21, 25, 26, 30, 33, 38, 40, + 42, 45, 47, 47, 48, 47, 46, 47, 47, 47, 46, 46, 49, 55, 54, 52, + 50, 47, 43, 42, 45, 48, 50, 49, 47, 49, 54, 56, 57, 56, 59, 67, + 62, 50, 43, 42, 47, 51, 51, 48, 47, 46, 45, 45, 44, 43, 42, 40, + 38, 38, 37, 36, 36, 34, 34, 35, 35, 34, 33, 34, 34, 33, 32, 33, + 33, 32, 32, 32, 32, 32, 33, 36, 35, 34, 33, 31, 33, 35, 39, 45, + 77, 81, 92, 94, 73, 38, 61, 62, 54, 47, 48, 49, 52, 44, 41, 56, + 68, 62, 45, 16, 5, 34, 28, 22, 17, 16, 16, 16, 14, 12, 12, 11, + 17, 18, 19, 20, 20, 21, 24, 24, 19, 21, 23, 24, 26, 30, 33, 35, + 36, 39, 40, 41, 42, 41, 42, 42, 42, 43, 43, 43, 46, 50, 50, 47, + 46, 43, 40, 39, 42, 45, 47, 45, 43, 45, 50, 52, 53, 52, 54, 62, + 57, 44, 38, 38, 42, 46, 47, 45, 44, 43, 42, 42, 41, 40, 39, 37, + 35, 34, 33, 32, 32, 31, 30, 31, 30, 29, 29, 31, 30, 29, 29, 30, + 30, 29, 28, 28, 28, 28, 29, 31, 31, 29, 29, 29, 30, 31, 38, 46, + 64, 79, 84, 74, 41, 14, 47, 52, 48, 48, 49, 50, 52, 47, 50, 40, + 49, 46, 29, 10, 8, 34, 27, 21, 17, 17, 16, 16, 14, 12, 12, 11, + 17, 18, 19, 20, 20, 21, 23, 22, 18, 19, 21, 23, 25, 28, 31, 32, + 32, 35, 36, 36, 38, 38, 39, 39, 38, 39, 40, 41, 44, 46, 45, 43, + 42, 40, 37, 37, 40, 43, 44, 42, 40, 42, 46, 48, 49, 47, 49, 56, + 53, 42, 35, 34, 38, 43, 45, 43, 41, 40, 39, 39, 38, 38, 37, 35, + 35, 33, 33, 31, 31, 30, 29, 29, 29, 28, 27, 29, 29, 28, 27, 28, + 28, 27, 27, 27, 27, 27, 27, 28, 28, 27, 26, 27, 29, 30, 40, 49, + 59, 69, 55, 60, 36, 10, 37, 42, 40, 41, 41, 44, 49, 51, 66, 37, + 20, 20, 20, 16, 17, 35, 25, 21, 17, 16, 15, 16, 14, 11, 11, 10, + 17, 18, 19, 20, 20, 21, 22, 21, 17, 18, 20, 21, 24, 26, 29, 31, + 29, 31, 33, 32, 33, 35, 36, 37, 36, 37, 39, 41, 44, 44, 42, 40, + 39, 37, 35, 35, 39, 41, 42, 40, 38, 40, 43, 45, 47, 44, 46, 53, + 49, 40, 32, 31, 35, 40, 42, 40, 38, 37, 36, 36, 36, 35, 34, 35, + 34, 33, 33, 31, 30, 29, 28, 28, 28, 27, 27, 28, 27, 26, 26, 28, + 27, 26, 26, 26, 26, 26, 26, 26, 25, 24, 25, 25, 28, 30, 41, 50, + 66, 76, 55, 72, 44, 12, 39, 47, 45, 43, 41, 43, 45, 46, 66, 45, + 14, 15, 44, 27, 20, 32, 25, 21, 16, 15, 15, 16, 13, 10, 10, 9, + 17, 18, 19, 20, 20, 21, 21, 20, 17, 18, 20, 20, 21, 24, 26, 28, + 28, 29, 30, 28, 29, 31, 33, 34, 32, 34, 36, 39, 42, 40, 38, 36, + 35, 34, 33, 33, 36, 38, 38, 37, 36, 37, 39, 42, 44, 41, 42, 49, + 47, 38, 31, 27, 31, 37, 40, 37, 35, 34, 33, 33, 32, 31, 31, 32, + 33, 32, 32, 29, 28, 27, 27, 28, 27, 26, 26, 25, 25, 24, 23, 26, + 27, 26, 26, 25, 25, 25, 24, 22, 22, 23, 23, 24, 26, 30, 40, 49, + 72, 84, 74, 88, 52, 18, 45, 53, 50, 47, 44, 46, 51, 57, 71, 44, + 26, 41, 66, 26, 22, 29, 23, 22, 17, 16, 15, 16, 12, 8, 9, 9, + 16, 17, 18, 19, 19, 20, 20, 20, 17, 18, 20, 21, 20, 21, 23, 25, + 26, 27, 28, 26, 26, 28, 30, 32, 31, 32, 35, 38, 41, 38, 36, 35, + 33, 32, 30, 32, 35, 36, 36, 35, 34, 35, 37, 40, 41, 38, 39, 45, + 45, 37, 28, 25, 29, 35, 39, 36, 34, 33, 32, 31, 31, 30, 30, 31, + 32, 31, 30, 28, 27, 26, 26, 28, 28, 27, 26, 24, 24, 23, 22, 25, + 26, 25, 25, 24, 24, 24, 24, 21, 21, 21, 21, 23, 25, 29, 39, 50, + 67, 76, 79, 84, 62, 33, 53, 51, 48, 46, 48, 50, 55, 62, 66, 24, + 29, 65, 53, 17, 32, 27, 15, 23, 18, 16, 15, 15, 12, 8, 8, 9, + 16, 17, 17, 18, 19, 19, 20, 20, 19, 20, 21, 21, 22, 23, 24, 24, + 23, 24, 25, 26, 28, 28, 29, 30, 30, 32, 36, 40, 40, 38, 36, 34, + 31, 29, 30, 32, 35, 36, 35, 34, 35, 37, 39, 39, 37, 36, 37, 44, + 45, 38, 30, 26, 28, 34, 38, 37, 35, 33, 31, 31, 31, 30, 30, 31, + 30, 29, 29, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 24, + 25, 25, 25, 24, 24, 24, 23, 22, 21, 20, 20, 22, 25, 29, 38, 49, + 60, 60, 73, 74, 70, 44, 50, 42, 44, 46, 51, 58, 65, 63, 38, 27, + 52, 66, 39, 26, 40, 25, 13, 21, 19, 19, 17, 15, 13, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 22, 22, 22, 23, 24, + 23, 24, 24, 24, 25, 26, 26, 29, 30, 32, 36, 39, 38, 36, 34, 34, + 32, 31, 32, 33, 34, 36, 34, 33, 32, 34, 36, 36, 34, 33, 34, 41, + 43, 36, 28, 25, 27, 31, 36, 37, 35, 33, 31, 30, 29, 28, 28, 29, + 29, 29, 28, 25, 25, 24, 23, 24, 24, 24, 23, 22, 22, 21, 21, 23, + 24, 24, 24, 23, 23, 23, 22, 20, 19, 19, 19, 20, 23, 28, 35, 43, + 52, 41, 55, 55, 66, 45, 36, 39, 57, 63, 63, 69, 54, 34, 32, 46, + 68, 52, 19, 34, 41, 19, 17, 22, 18, 19, 17, 15, 12, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 22, 22, 23, 22, 21, 21, 21, 22, + 22, 23, 23, 23, 23, 24, 24, 27, 30, 32, 35, 37, 35, 34, 33, 32, + 30, 30, 31, 32, 33, 34, 33, 31, 31, 32, 34, 34, 32, 32, 32, 38, + 41, 35, 27, 23, 25, 31, 34, 34, 33, 31, 29, 28, 27, 26, 26, 26, + 26, 26, 25, 23, 21, 20, 20, 22, 22, 22, 21, 20, 20, 19, 18, 20, + 21, 21, 21, 20, 20, 20, 19, 18, 16, 18, 17, 19, 22, 27, 31, 34, + 54, 34, 24, 39, 62, 54, 30, 18, 30, 34, 38, 44, 33, 26, 42, 64, + 60, 27, 24, 42, 41, 19, 21, 22, 19, 19, 17, 15, 12, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 24, 24, 24, 22, 21, 20, 21, 21, + 20, 21, 23, 22, 24, 24, 24, 27, 31, 34, 36, 37, 35, 34, 33, 31, + 29, 28, 31, 33, 34, 35, 34, 31, 30, 32, 34, 34, 32, 31, 33, 38, + 41, 35, 29, 24, 26, 30, 35, 34, 31, 29, 28, 27, 27, 26, 25, 24, + 23, 22, 22, 21, 20, 19, 19, 20, 20, 19, 18, 18, 17, 16, 16, 17, + 17, 17, 17, 16, 16, 16, 16, 17, 18, 18, 18, 20, 22, 26, 28, 27, + 58, 42, 10, 20, 49, 58, 41, 45, 41, 39, 42, 39, 47, 55, 64, 59, + 29, 9, 31, 41, 37, 26, 23, 19, 17, 18, 17, 13, 11, 8, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 21, 25, 25, 24, 22, 22, 21, 21, 20, + 20, 20, 22, 22, 23, 24, 24, 27, 30, 34, 35, 34, 33, 33, 33, 31, + 26, 26, 29, 31, 33, 33, 33, 31, 30, 32, 33, 33, 32, 31, 32, 39, + 41, 35, 30, 25, 26, 30, 36, 34, 31, 30, 28, 28, 28, 27, 26, 23, + 21, 21, 20, 19, 19, 18, 17, 18, 18, 17, 16, 16, 15, 14, 14, 15, + 15, 15, 15, 13, 13, 13, 13, 18, 18, 18, 18, 19, 20, 24, 26, 22, + 48, 51, 23, 13, 37, 51, 43, 59, 57, 48, 48, 47, 41, 46, 50, 22, + 10, 25, 31, 29, 30, 33, 25, 18, 17, 17, 15, 13, 10, 7, 6, 8, + 16, 17, 17, 18, 19, 19, 20, 22, 25, 25, 23, 22, 24, 22, 21, 21, + 20, 21, 22, 22, 22, 22, 23, 25, 28, 32, 32, 31, 31, 31, 32, 29, + 25, 26, 29, 30, 31, 32, 31, 28, 29, 31, 33, 33, 31, 30, 31, 36, + 38, 33, 28, 24, 25, 28, 34, 34, 32, 30, 29, 28, 27, 27, 26, 24, + 22, 21, 20, 19, 18, 17, 16, 18, 18, 17, 16, 16, 16, 15, 14, 14, + 15, 15, 15, 13, 13, 13, 14, 18, 17, 16, 16, 16, 19, 20, 22, 17, + 38, 43, 30, 31, 42, 47, 35, 46, 41, 30, 26, 19, 24, 19, 20, 25, + 28, 29, 22, 19, 26, 34, 30, 18, 16, 16, 15, 12, 10, 7, 6, 8, + 17, 18, 18, 19, 20, 21, 21, 23, 23, 23, 22, 21, 22, 22, 21, 21, + 19, 19, 21, 21, 21, 21, 22, 25, 29, 30, 30, 28, 28, 28, 28, 26, + 23, 24, 26, 28, 28, 29, 27, 26, 26, 27, 28, 29, 27, 27, 27, 31, + 34, 32, 28, 24, 24, 25, 30, 30, 29, 27, 26, 26, 25, 24, 23, 23, + 23, 22, 21, 19, 18, 17, 16, 19, 20, 19, 18, 18, 18, 17, 16, 16, + 16, 15, 15, 14, 14, 14, 15, 18, 19, 18, 18, 17, 19, 21, 22, 19, + 32, 35, 33, 41, 45, 42, 32, 29, 20, 12, 11, 7, 10, 15, 27, 40, + 37, 27, 22, 22, 25, 27, 26, 21, 17, 16, 14, 13, 11, 8, 7, 8, + 17, 18, 19, 19, 21, 21, 22, 23, 21, 21, 21, 21, 21, 21, 22, 21, + 18, 18, 19, 20, 21, 21, 22, 26, 31, 30, 30, 28, 27, 26, 26, 24, + 21, 23, 25, 26, 28, 27, 26, 25, 24, 25, 25, 26, 25, 25, 24, 27, + 30, 31, 28, 24, 23, 23, 26, 26, 25, 24, 24, 23, 23, 22, 21, 24, + 23, 22, 22, 19, 18, 18, 17, 21, 22, 21, 20, 20, 20, 19, 18, 18, + 18, 17, 16, 16, 16, 16, 16, 19, 20, 20, 19, 19, 20, 24, 24, 22, + 26, 31, 34, 37, 39, 35, 32, 28, 23, 19, 18, 17, 21, 26, 30, 32, + 31, 29, 27, 25, 23, 20, 21, 21, 17, 14, 14, 14, 12, 9, 7, 8, + 18, 18, 19, 20, 21, 21, 22, 22, 20, 20, 20, 20, 20, 21, 22, 21, + 17, 17, 18, 19, 21, 20, 22, 26, 31, 30, 29, 27, 26, 25, 25, 24, + 23, 25, 26, 28, 28, 28, 27, 24, 23, 24, 25, 25, 25, 24, 23, 26, + 31, 32, 29, 26, 24, 24, 26, 27, 26, 25, 24, 24, 23, 23, 22, 23, + 23, 22, 22, 20, 18, 18, 17, 21, 22, 21, 20, 20, 19, 18, 18, 18, + 18, 17, 16, 16, 16, 16, 16, 19, 20, 19, 18, 18, 19, 22, 22, 20, + 22, 26, 30, 33, 34, 35, 36, 38, 35, 34, 34, 32, 32, 31, 30, 27, + 25, 23, 22, 21, 18, 15, 17, 20, 16, 13, 12, 13, 11, 9, 8, 8, + 18, 18, 19, 20, 20, 21, 21, 22, 20, 20, 20, 20, 20, 20, 21, 20, + 17, 18, 18, 19, 20, 20, 22, 26, 29, 29, 28, 26, 25, 24, 24, 23, + 22, 24, 26, 27, 27, 27, 26, 24, 22, 23, 24, 25, 24, 23, 22, 26, + 30, 31, 28, 26, 24, 23, 25, 25, 25, 24, 23, 23, 22, 22, 21, 22, + 22, 21, 21, 19, 18, 17, 17, 20, 20, 20, 19, 18, 18, 17, 16, 18, + 17, 16, 16, 16, 16, 16, 16, 18, 18, 18, 16, 15, 17, 20, 20, 17, + 19, 23, 26, 27, 29, 31, 31, 31, 31, 31, 32, 31, 29, 26, 25, 24, + 22, 19, 18, 18, 16, 13, 14, 17, 14, 11, 11, 12, 11, 9, 8, 8, + 18, 18, 19, 20, 20, 20, 21, 21, 20, 19, 19, 19, 19, 20, 21, 20, + 18, 18, 19, 20, 20, 21, 24, 27, 29, 28, 27, 25, 24, 24, 23, 22, + 22, 23, 25, 26, 27, 26, 25, 24, 23, 24, 25, 25, 25, 24, 23, 25, + 29, 30, 27, 25, 23, 22, 23, 24, 24, 23, 22, 22, 21, 20, 20, 21, + 22, 21, 20, 19, 18, 17, 17, 19, 19, 19, 18, 17, 17, 16, 15, 17, + 17, 16, 15, 15, 15, 15, 15, 17, 17, 16, 15, 13, 15, 17, 17, 16, + 17, 22, 24, 26, 28, 27, 26, 28, 30, 31, 30, 28, 27, 25, 24, 21, + 20, 18, 17, 16, 15, 11, 12, 14, 12, 9, 10, 11, 10, 9, 8, 8, + 18, 18, 19, 19, 19, 20, 21, 21, 19, 19, 19, 19, 19, 19, 20, 20, + 18, 19, 20, 20, 20, 21, 25, 28, 28, 27, 26, 24, 23, 23, 22, 22, + 22, 24, 26, 27, 27, 26, 25, 24, 23, 24, 25, 25, 25, 24, 23, 26, + 30, 30, 27, 25, 24, 22, 23, 24, 24, 23, 22, 22, 22, 21, 20, 21, + 21, 20, 19, 19, 18, 17, 17, 19, 19, 18, 17, 17, 16, 15, 14, 17, + 16, 16, 15, 15, 15, 15, 15, 15, 16, 14, 13, 12, 13, 16, 16, 14, + 16, 19, 22, 23, 25, 26, 25, 26, 28, 29, 27, 24, 23, 22, 20, 18, + 17, 16, 15, 14, 11, 8, 10, 12, 10, 8, 9, 10, 10, 9, 8, 8, + 18, 18, 19, 19, 19, 20, 21, 20, 19, 19, 19, 19, 19, 19, 20, 20, + 19, 20, 21, 21, 21, 22, 26, 28, 28, 27, 26, 24, 23, 22, 22, 22, + 23, 25, 26, 27, 27, 26, 26, 24, 23, 24, 25, 26, 25, 24, 23, 26, + 30, 30, 27, 26, 25, 23, 23, 24, 24, 23, 23, 23, 22, 21, 20, 20, + 20, 19, 19, 19, 18, 17, 17, 18, 18, 17, 17, 16, 16, 15, 14, 16, + 16, 15, 15, 15, 15, 15, 15, 15, 15, 14, 12, 12, 13, 15, 16, 12, + 15, 18, 20, 18, 20, 23, 22, 24, 27, 26, 24, 24, 22, 20, 17, 16, + 16, 14, 14, 11, 9, 6, 7, 10, 8, 7, 8, 9, 10, 9, 8, 8, + 18, 18, 19, 19, 19, 19, 19, 18, 17, 17, 17, 18, 18, 19, 20, 20, + 19, 19, 20, 21, 21, 23, 25, 27, 27, 26, 25, 23, 21, 20, 20, 21, + 23, 24, 25, 26, 26, 26, 26, 24, 23, 24, 25, 25, 24, 23, 22, 24, + 28, 30, 28, 25, 23, 21, 21, 23, 24, 24, 24, 22, 21, 20, 20, 21, + 21, 20, 19, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 17, + 17, 16, 15, 15, 14, 13, 12, 14, 13, 14, 13, 12, 13, 13, 15, 16, + 17, 19, 19, 20, 20, 21, 22, 23, 24, 24, 23, 22, 20, 19, 17, 17, + 15, 13, 12, 11, 10, 7, 7, 9, 7, 6, 7, 8, 9, 9, 8, 8, + 18, 18, 18, 18, 18, 18, 18, 18, 16, 16, 17, 18, 18, 19, 20, 20, + 19, 20, 21, 21, 22, 23, 25, 26, 27, 25, 25, 22, 21, 20, 20, 21, + 23, 24, 25, 25, 25, 25, 25, 25, 23, 24, 25, 24, 24, 23, 22, 25, + 28, 29, 27, 24, 22, 21, 21, 23, 24, 24, 24, 22, 21, 20, 19, 21, + 21, 20, 20, 20, 20, 19, 18, 18, 18, 17, 17, 16, 16, 16, 16, 17, + 17, 16, 15, 15, 14, 12, 12, 13, 12, 13, 14, 12, 13, 14, 15, 15, + 17, 18, 19, 19, 19, 20, 21, 22, 22, 22, 21, 20, 19, 17, 17, 18, + 16, 13, 12, 12, 12, 8, 8, 8, 7, 6, 7, 8, 9, 9, 8, 8, + 18, 18, 18, 18, 18, 18, 18, 17, 16, 16, 16, 17, 18, 18, 19, 20, + 20, 21, 21, 22, 23, 24, 26, 27, 25, 24, 23, 21, 20, 20, 19, 20, + 23, 24, 24, 25, 24, 24, 24, 24, 24, 25, 25, 25, 24, 23, 22, 24, + 27, 29, 27, 24, 22, 20, 20, 22, 23, 23, 23, 22, 21, 20, 19, 21, + 22, 21, 21, 21, 21, 20, 19, 19, 18, 17, 17, 16, 16, 16, 16, 17, + 16, 16, 15, 15, 14, 12, 12, 12, 12, 13, 13, 13, 14, 15, 16, 14, + 16, 17, 17, 17, 17, 18, 19, 19, 19, 19, 19, 17, 15, 14, 15, 18, + 15, 12, 12, 13, 11, 9, 8, 8, 6, 5, 7, 8, 9, 9, 8, 8, + 18, 18, 18, 18, 18, 18, 18, 17, 15, 15, 16, 17, 17, 18, 18, 19, + 21, 22, 22, 23, 25, 25, 26, 26, 25, 24, 23, 21, 20, 19, 19, 20, + 23, 24, 25, 25, 24, 24, 24, 23, 23, 24, 25, 24, 23, 23, 22, 24, + 27, 29, 27, 24, 22, 21, 21, 23, 23, 23, 23, 22, 21, 21, 20, 22, + 21, 21, 20, 21, 20, 19, 19, 19, 18, 17, 17, 15, 15, 15, 15, 16, + 16, 15, 15, 15, 14, 12, 12, 12, 12, 12, 12, 13, 14, 15, 15, 16, + 17, 18, 18, 17, 17, 17, 18, 18, 18, 18, 18, 16, 14, 13, 14, 16, + 14, 12, 11, 12, 10, 9, 8, 6, 6, 5, 7, 8, 9, 9, 8, 7, + 17, 17, 17, 17, 17, 17, 17, 16, 15, 15, 16, 16, 17, 17, 18, 19, + 21, 22, 23, 24, 26, 26, 26, 25, 24, 23, 22, 20, 19, 18, 18, 20, + 24, 24, 26, 25, 24, 24, 24, 23, 23, 23, 24, 24, 23, 22, 21, 23, + 27, 29, 26, 24, 23, 21, 21, 22, 23, 23, 23, 22, 22, 21, 20, 21, + 21, 20, 20, 20, 20, 19, 18, 18, 18, 17, 17, 15, 15, 15, 15, 16, + 16, 15, 14, 14, 14, 12, 12, 12, 11, 11, 11, 13, 13, 13, 15, 16, + 17, 18, 19, 19, 17, 17, 17, 18, 18, 18, 17, 15, 14, 12, 13, 14, + 13, 11, 11, 10, 9, 8, 7, 5, 5, 5, 7, 8, 9, 9, 8, 7, + 17, 17, 17, 17, 17, 17, 17, 16, 14, 14, 15, 16, 16, 17, 18, 18, + 21, 21, 22, 23, 26, 25, 25, 25, 23, 22, 21, 19, 19, 18, 18, 20, + 23, 24, 25, 25, 23, 23, 23, 22, 22, 22, 23, 23, 22, 21, 20, 22, + 26, 27, 25, 24, 23, 21, 21, 22, 22, 22, 22, 22, 21, 20, 20, 21, + 22, 22, 21, 21, 21, 20, 20, 19, 18, 17, 17, 14, 14, 14, 14, 15, + 15, 14, 14, 14, 14, 12, 12, 12, 12, 10, 11, 12, 13, 13, 13, 16, + 17, 17, 16, 17, 16, 15, 15, 16, 16, 16, 15, 14, 12, 11, 11, 14, + 13, 12, 11, 10, 8, 8, 6, 5, 5, 6, 7, 8, 9, 9, 7, 6, + 16, 16, 16, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 16, 17, 18, + 19, 20, 21, 23, 25, 24, 24, 23, 22, 21, 21, 20, 19, 19, 18, 20, + 23, 23, 24, 24, 23, 23, 23, 22, 22, 22, 23, 23, 22, 21, 21, 22, + 25, 27, 25, 23, 21, 20, 20, 21, 22, 22, 22, 21, 20, 20, 19, 20, + 21, 21, 20, 20, 20, 19, 19, 18, 17, 17, 16, 14, 14, 14, 14, 15, + 15, 14, 14, 14, 13, 12, 11, 12, 12, 12, 11, 12, 12, 12, 12, 15, + 15, 15, 14, 15, 15, 14, 15, 15, 15, 15, 14, 14, 13, 11, 12, 14, + 13, 13, 12, 10, 9, 8, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, + 14, 15, 15, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 15, 16, 17, + 17, 18, 20, 22, 23, 23, 23, 22, 21, 21, 21, 20, 18, 19, 19, 20, + 22, 22, 23, 23, 23, 23, 23, 22, 22, 23, 23, 24, 23, 22, 22, 22, + 23, 25, 25, 23, 21, 20, 20, 21, 22, 22, 22, 21, 20, 19, 18, 18, + 19, 19, 19, 18, 18, 18, 18, 18, 17, 17, 16, 16, 16, 16, 16, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 12, 12, 12, 12, 12, 12, 12, 13, + 13, 13, 13, 13, 13, 13, 13, 15, 14, 13, 13, 14, 13, 12, 13, 13, + 13, 12, 11, 11, 10, 9, 9, 10, 9, 8, 8, 9, 9, 9, 8, 7, + 14, 15, 15, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 15, 16, 17, + 17, 18, 20, 22, 23, 23, 23, 22, 21, 21, 21, 20, 19, 20, 20, 21, + 21, 22, 23, 23, 23, 23, 23, 22, 22, 23, 23, 24, 23, 22, 21, 21, + 23, 25, 25, 23, 21, 20, 20, 20, 21, 21, 21, 21, 20, 19, 18, 18, + 19, 19, 19, 18, 18, 18, 18, 18, 17, 17, 16, 16, 16, 16, 16, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 13, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 14, 13, 12, 12, 13, 12, 11, 12, 12, + 12, 11, 10, 11, 10, 9, 9, 10, 10, 9, 9, 9, 9, 9, 8, 7, + 14, 15, 15, 16, 17, 17, 17, 16, 14, 14, 15, 15, 15, 15, 16, 17, + 17, 18, 20, 22, 23, 23, 23, 22, 21, 21, 21, 20, 19, 20, 20, 21, + 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 22, 21, 21, + 23, 25, 25, 23, 21, 20, 20, 20, 21, 21, 21, 21, 20, 19, 18, 18, + 19, 19, 19, 18, 18, 18, 18, 18, 17, 17, 16, 16, 16, 16, 16, 16, + 15, 14, 14, 13, 12, 11, 11, 13, 13, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 11, 10, 10, 10, 10, 12, 11, 11, 10, 11, 10, 9, 9, 11, + 10, 9, 9, 11, 10, 9, 9, 10, 10, 9, 9, 9, 9, 9, 8, 7 }; diff --git a/examples/jawbreaker.cpp b/examples/jawbreaker.cpp new file mode 100644 index 000000000..187a35268 --- /dev/null +++ b/examples/jawbreaker.cpp @@ -0,0 +1,232 @@ +/* + # + # File : jawbreaker.cpp + # ( C++ source file ) + # + # Description : A funny game featuring small colored balls. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc, char **argv) { + + // Display help (if option '-h' or '--help' specified) and retrieve program arguments + cimg_usage("A small and funny game featuring colored balls.\n (by David Tschumperlé)."); + const char *score_file = cimg_option("-s",(char*)0,"Specify score file to use (0=default file)."); + cimg_help("\n" + "** Quick Help *********************************************************\n\n" + "Goal : Delete the board by clicking on groups of adjacent colored balls\n" + " (a group is made of at least two balls with the same color).\n" + " Suppressing large sets gives higher scores.\n\n" + "In-game keys : - BACKSPACE or SPACE = Undo last move\n" + " - CTRL+F = Toggle fullscreen mode\n" + " - ESC = Quit application\n" + " - Q = End current game\n\n" + "*********************************************************************"); + + // Load score file if available + CImgList score_history; + char filename_history[1024]; + std::sprintf(filename_history,"%s%s",score_file?"":cimg::temporary_path(),score_file?score_file:"/jawbreaker.score"); + std::FILE *file = std::fopen(filename_history,"r"); + if (file) { std::fclose(file); score_history = CImg::get_load_dlm(filename_history)<'y'; } + + // Create ball graphics + const unsigned int W = 12, H = 14, Wi = (W<<5), Hi = (H<<5); + unsigned int score = 0, previous_score = 0, shape_score = 0, + best_score = score_history?score_history.max():0U; + + const CImg<> colors(3,7,1,1, 255,255,255, 205,0,230, 0,235,0, 235,255,0, 235,0,0, 0,128,255, 450,350,300); + const unsigned char + white[] = { 255,255,255 }, orange[] = { 255,128,64 }, yellow[] = { 255,255,64 }, red[] = { 255,64,64 }, six = 6; + CImgList<> balls0(7,32,32,1,3,0); + cimglist_for(balls0,l) if (l) { + balls0[l].draw_circle(16,16,14,colors.data(0,l)); + cimg_forXYC(balls0[l],x,y,k) if (balls0(l,x,y,k)) (balls0(l,x,y,k)*=(32 - x + y)/60.0f)+=20; + balls0[l].draw_circle(16,16,14,colors.data(0,l),0.5f,~0U). + draw_circle(20,10,5,colors.data(),0.2f).draw_circle(22,8,2,colors.data(),0.4f).cut(0,255); + } + + // Create background graphics + CImgList balls(balls0); + CImg + mask = balls[1].get_cut(0,1).channel(0).dilate(3), + background = CImg(Wi,Hi,1,3,0). + noise(255,1).blur(6,20,0,true).equalize(100,0,255).blur(2,4,0,true); + background.get_shared_channel(0)/=4; background.get_shared_channel(1)/=8; background.get_shared_channel(2)/=2; + + // Begin user-interaction loop. + CImg board, previous_board, selected_board, shape, img(background); + CImgDisplay disp(img.width(),img.height(),"Jawbreaker",0); + bool redraw = true, gameover = false, title = true; + for (float opac = 0.0f; !disp.is_closed(); ) { + + // Init board + if (!board) { + (++((board.assign(W,H,1,1,5).noise(5,1))%=5)).get_shared_row(0).fill(0); + opac = (float)(score = previous_score = shape_score = 0); + gameover = false; redraw = title = true; + previous_board = board; + } + + // Draw graphical board + if (redraw) { + (img=background).draw_text(2,2,"Score : %u",yellow,0,0.7f,24,score). + draw_text(Wi - 90,2,"Best : %u",orange,0,0.9f,17,best_score); + if (selected_board) { + cimg_forXY(selected_board,x,y) if (selected_board(x,y)) + img.draw_image(x<<5,y<<5,balls[selected_board(x,y)],mask); + } else cimg_forXY(board,x,y) if (board(x,y)) img.draw_image(x<<5,y<<5,balls[board(x,y)],mask); + if (title) { + CImg text1, text2; + text1.draw_text(0,0,"- Jawbreaker -",white,0,1,48).resize(-100,-100,1,3); + text2.draw_text(0,0,"Press button to start",yellow,0,1,24).resize(-100,-100,1,3); + (img/=2).draw_image((Wi - text1.width())/2, + (Hi - text1.height())/2, + text1,text1.get_dilate(7),1,255). + draw_image((Wi - text2.width())/2, + (Hi + text1.height() + 10)/2, + text2,text2.get_dilate(5),0.7f,255); + for (float i = 1; i<10 && !disp.is_keyESC(); i+=0.25) + disp.display(img.get_crop((int)(Wi*(0.5f - i*i/200.0f)),(int)(Hi*(0.5f - i*i*i*i/20000.0f)), + (int)(Wi*(0.5f + i*i/200.0f)),(int)(Hi*(0.5f + i*i*i*i/20000.0f)))).wait(20); + } + } + if ((opac-=0.06f)>0) disp.display((+img).draw_text(disp.mouse_x() - 8,disp.mouse_y() - 80 + (int)(60*opac),"+%u", + white,0,(float)std::sqrt(opac),32,shape_score)).wait(20); + else { if (redraw) { disp.display(img); redraw = false; } else disp.wait(); } + + // Handle key and window events + if (disp.is_resized()) disp.resize(disp); + if (disp.is_keyBACKSPACE() || disp.is_keySPACE()) { + board = previous_board; score = previous_score; selected_board.assign(); redraw = true; disp.set_key(); + } + if (disp.is_keyQ()) { gameover = true; disp.set_key(); } + if (disp.is_keyESC()) disp.close(); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen().display(img); + + // Handle ball selection and removal + const int x = disp.mouse_x()*board.width()/disp.width(), y = disp.mouse_y()*board.height()/disp.height(); + if (disp.button()&1 && x>=0 && y>=0) { + if (title) { title = false; redraw = true; } else { + if (!board(x,y)) { selected_board.assign(); redraw = true; } + else { + if (!selected_board || selected_board(x,y)!=6) { + (selected_board=board).draw_fill(x,y,0,&six,1,shape); + if ((shape_score=(unsigned int)shape.sum())<2) selected_board.assign(); + else { shape_score-=1; shape_score*=shape_score; opac = 1.0f; redraw = true; } + } else { + selected_board.assign(); + previous_board = board; + previous_score = score; + score += shape_score; + board&=--shape; + redraw = true; + + // Handle board modification due to ball removal + for (int pmax = board.width(), p = 0; p=0; --q) { + while (qs>=0 && !board(p,qs)) --qs; + board(p,q) = (qs>=0?board(p,qs--):0); + } + if (!board(p,board.height() - 1)) { + board.draw_image(p,board.get_crop(p,0,board.width() - 1,board.height() - 1).shift(-1)); + if (p text1, text2, text3, text4, text5, text6; + text1.draw_text(0,0,"Game Over !",white,0,1,48).resize(-100,-100,1,3); + const unsigned int remaining_balls = (unsigned int)board.get_cut(0,1).sum(); + if (remaining_balls<8) { + const unsigned int bonus = (22 - 2*remaining_balls)*10; + score += bonus; + text2.draw_text(0,0,"Jawbreaker Bonus : +%u",white,0,1,24,bonus); + } + score_history.insert(CImg::vector(score)); + text3.draw_text(0,0,"Final score : %u",yellow,0,1,24,score).resize(-100,-100,1,3); + text4.draw_text(0,0,score>best_score?"** New record ! **":"Best score : %u", + orange,0,1,24,score>best_score?score:best_score).resize(-100,-100,1,3); + text5.draw_text(0,0,"Average score : %u",red,0,1,24, + score_history?(unsigned int)(score_history>'x').mean():0U).resize(-100,-100,1,3); + text6.draw_text(0,0,"Games played : %u",red,0,1,24,score_history.size()).resize(-100,-100,1,3); + if (score>best_score) best_score = score; + + unsigned int yt = (Hi - text1.height())/2 - 20; + (img/=2).draw_image((Wi - text1.width())/2,yt,text1,text1.get_dilate(7),1,255); yt+=80; + if (text2) { img.draw_image((Wi - text2.width())/2,yt,text2,text2.get_dilate(5),1,255); yt+=25; } + img.draw_image((Wi - text3.width())/2,yt,text3,text3.get_dilate(5),1,255). + draw_image((Wi - text4.width())/2,yt + 25,text4,text4.get_dilate(5),1,255). + draw_image((Wi - text5.width())/2,yt + 50,text5,text5.get_dilate(5),1,255). + draw_image((Wi - text6.width())/2,yt + 75,text6,text6.get_dilate(5),1,255).display(disp); + for (disp.flush(); !disp.is_closed() && !disp.key() && !disp.button(); disp.wait()) + if (disp.is_resized()) disp.resize(disp); + disp.flush(); + board.assign(); + for (float i = 10; i>0 && !disp.is_keyESC(); i-=0.25) + disp.display(img.get_crop((int)(Wi*(0.5f - i*i*i*i/20000.0f)),(int)(Hi*(0.5f - i*i/200.0f)), + (int)(Wi*(0.5f + i*i*i*i/20000.0f)),(int)(Hi*(0.5f + i*i/200.0f)))).wait(20); + } + } + + // Save score history if possible, and exit. + if (score_history) { + file = std::fopen(filename_history,"w"); + if (file) { std::fclose(file); (score_history>'y').save_dlm(filename_history); } + } + + return 0; +} diff --git a/examples/mcf_levelsets2d.cpp b/examples/mcf_levelsets2d.cpp new file mode 100644 index 000000000..f69546c33 --- /dev/null +++ b/examples/mcf_levelsets2d.cpp @@ -0,0 +1,120 @@ +/* + # + # File : mcf_levelsets2d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Mean Curvature Flow on a 2D curve, + # using the framework of Level Sets. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Retrieve the curve corresponding to the zero level set of the distance function. +template +CImg get_level0(const CImg& img) { + CImg dest(img); + CImg_2x2(I,T); Inn = 0; + cimg_for2x2(img,x,y,0,0,I,T) if (Icc*Inc<0 || Icc*Icn<0) dest(x,y) = 255; else dest(x,y) = Icc<0?100:0; + return dest; +} + +/*-------------------- + + Main procedure + +----------------------*/ +int main(int argc,char **argv) { + cimg_usage("Perform a Mean Curvature Flow on closed curves, using Level Sets"); + const float dt = cimg_option("-dt",0.8f,"PDE time step"); + const unsigned int nb_iterations = cimg_option("-iter",10000,"Number of iterations"); + + // Create a user-defined closed curve. + CImg curve(256,256,1,2,0); + unsigned char col1[] = {0,255}, col2[] = {200,255}, col3[] = {255,255}; + curve.draw_grid(20,20,0,0,false,false,col1,0.4f,0xCCCCCCCC,0xCCCCCCCC). + draw_text(5,5,"Please draw your curve\nin this window\n(Use your mouse)",col1); + CImgDisplay disp(curve,"Mean curvature flow",0); + int xo = -1, yo = -1, x0 = -1, y0 = -1, x1 = -1, y1 = -1; + while (!disp.is_closed() && (x0<0 || disp.button())) { + if (disp.button() && disp.mouse_x()>=0 && disp.mouse_y()>=0) { + if (x0<0) { xo = x0 = disp.mouse_x(); yo = y0 = disp.mouse_y(); } else { + x1 = disp.mouse_x(); y1 = disp.mouse_y(); + curve.draw_line(x0,y0,x1,y1,col2).display(disp); + x0 = x1; y0 = y1; + } + } + disp.wait(); + if (disp.is_resized()) disp.resize(disp); + } + curve.draw_line(x1,y1,xo,yo,col2).channel(0).draw_fill(0,0,col3); + CImg<> img = CImg<>(curve.get_shared_channel(0)).normalize(-1,1); + + // Perform the "Mean Curvature Flow". + img.distance_eikonal(10); + CImg_3x3(I,float); + for (unsigned int iteration = 0; iteration velocity(img.width(),img.height(),img.depth(),img.spectrum()); + float *ptrd = velocity.data(), veloc_max = 0; + cimg_for3x3(img,x,y,0,0,I,float) { + const float + ix = (Inc - Ipc)/2, + iy = (Icn - Icp)/2, + ixx = Inc + Ipc - 2*Icc, + iyy = Icn + Icp - 2*Icc, + ixy = (Ipp + Inn - Inp - Ipn)/4, + ngrad = ix*ix + iy*iy, + iee = (ngrad>1e-5)?((iy*iy*ixx - 2*ix*iy*ixy + ix*ix*iyy)/ngrad):0; + *(ptrd++) = iee; + if (iee>veloc_max) veloc_max = iee; else if (-iee>veloc_max) veloc_max = -iee; + } + if (veloc_max>0) img+=(velocity*=dt/veloc_max); + if (!(iteration%10)) { + get_level0(img).resize(disp.width(),disp.height()). + draw_grid(20,20,0,0,false,false,col3,0.4f,0xCCCCCCCC,0xCCCCCCCC). + draw_text(5,5,"Iteration %d",col3,0,1,13,iteration).display(disp); + } + if (!(iteration%60)) img.distance_eikonal(1,3); + if (disp.is_resized()) disp.resize(); + } + + return 0; +} diff --git a/examples/mcf_levelsets3d.cpp b/examples/mcf_levelsets3d.cpp new file mode 100644 index 000000000..fabeb0622 --- /dev/null +++ b/examples/mcf_levelsets3d.cpp @@ -0,0 +1,180 @@ +/* + # + # File : mcf_levelsets3d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Mean Curvature Flow on Surfaces + # using the framework of Level Sets 3D. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#undef min +#undef max + +// Apply the Mean curvature flow PDE +//----------------------------------- +template CImg& mcf_PDE(CImg& img, const unsigned int nb_iterations, + const float dt=0.25f, const float narrow=4.0f) { + CImg velocity(img.width(),img.height(),img.depth(),img.spectrum()); + CImg_3x3x3(I,float); + for (unsigned int iteration = 0; iterationveloc_max) veloc_max = veloc; else if (-veloc>veloc_max) veloc_max = -veloc; + } else *(ptrd++) = 0; + if (veloc_max>0) img+=(velocity*=dt/veloc_max); + } + return img; +} + +/*---------------------- + + Main procedure + + --------------------*/ +int main(int argc,char **argv) { + cimg_usage("Mean curvature flow of a surface, using 3D level sets"); + const char *file_i = cimg_option("-i",(char*)0,"Input image"); + const float dt = cimg_option("-dt",0.05f,"PDE Time step"); + const float narrow = cimg_option("-band",5.0f,"Size of the narrow band"); + const bool both = cimg_option("-both",false,"Show both evolving and initial surface"); + + // Define the signed distance map of the initial surface. + CImg<> img; + if (file_i) { + const float sigma = cimg_option("-sigma",1.2f,"Segmentation regularity"); + const float alpha = cimg_option("-alpha",5.0f,"Region growing tolerance"); + img.load(file_i).channel(0); + CImg s; + CImgDisplay disp(img,"Please select a starting point"); + while (!s || s[0]<0) s = img.get_select(0,disp); + CImg<> region; + float tmp[] = { 0 }; + img.draw_fill(s[0],s[1],s[2],tmp,1,region,alpha); + ((img = region.normalize(-1,1))*=-1).blur(sigma); + } + else { // Create synthetic implicit function + img.assign(60,60,60); + const float exte[] = { 1 }, inte[] = { -1 }; + img.fill(*exte).draw_rectangle(15,15,15,45,45,45,inte).draw_rectangle(25,25,0,35,35,img.depth() - 1,exte). + draw_rectangle(0,25,25,img.width() - 1,35,35,exte).draw_rectangle(25,0,25,35,img.height() - 1,35,exte).noise(0.7); + } + img.distance_eikonal(10,0,0.1f); + + // Compute corresponding surface triangularization by the marching cube algorithm (isovalue 0). + CImg<> points0; + CImgList faces0; + if (both) points0 = img.get_isosurface3d(faces0,0); + const CImgList colors0(faces0.size(),CImg::vector(100,200,255)); + const CImgList<> opacities0(faces0.size(),1,1,1,1,0.2f); + + // Perform MCF evolution. + CImgDisplay disp(256,256,0,1), disp3d(512,512,0,0); + float alpha = 0, beta = 0; + for (unsigned int iteration = 0; !disp.is_closed() && !disp3d.is_closed() && + !disp.is_keyESC() && !disp3d.is_keyESC() && !disp.is_keyQ() && !disp3d.is_keyQ(); ++iteration) { + disp.set_title("3D implicit Function (iter. %u)",iteration); + disp3d.set_title("Mean curvature flow 3D - Isosurface (iter. %u)",iteration); + + // Apply PDE on the distance function. + mcf_PDE(img,1,dt,narrow); // Do one iteration of mean curvature flow + // Every 10 steps, do one iteration of distance function re-initialization. + if (!(iteration%10)) img.distance_eikonal(1,narrow,0.5f); + + // Compute surface triangularization by the marching cube algorithm (isovalue 0) + CImgList faces; + CImg<> points = img.get_isosurface3d(faces,0); + CImgList colors(faces.size(),CImg::vector(200,128,100)); + CImgList<> opacities(faces.size(),CImg<>::vector(1.0f)); + const float fact = 3*std::max(disp3d.width(),disp3d.height())/(4.0f*std::max(img.width(),img.height())); + + // Append initial object if necessary. + if (both) { + points.append_object3d(faces,points0,faces0); + colors.insert(colors0); + opacities.insert(opacities0); + } + + // Center and rescale the objects + cimg_forX(points,l) { + points(l,0)=(points(l,0) - img.width()/2)*fact; + points(l,1)=(points(l,1) - img.height()/2)*fact; + points(l,2)=(points(l,2) - img.depth()/2)*fact; + } + + // Display 3D object on the display window. + CImg visu(disp3d.width(),disp3d.height(),1,3,0); + const CImg<> rot = CImg<>::rotation_matrix(1,0,0,(beta+=0.5f))*CImg<>::rotation_matrix(0,1,1,(alpha+=3)); + if (points.size()) { + visu.draw_object3d(visu.width()/2.0f,visu.height()/2.0f,0.0f, + rot*points,faces,colors,opacities,3, + false,500.0,0.0f,0.0f,-8000.0f).display(disp3d); + } else visu.fill(0).display(disp3d); + img.display(disp.wait(20)); + + if ((disp3d.button() || disp3d.key()) && points.size() && !disp3d.is_keyESC() && !disp3d.is_keyQ()) { + const unsigned char white[3] = { 255, 255, 255 }; + visu.fill(0).draw_text(10,10,"Time stopped, press any key to start again",white). + display_object3d(disp3d,points,faces,colors,opacities,true,4,3,false,500,0,0,-5000,0.4f,0.3f); + disp3d.set_key(); + } + if (disp.is_resized()) disp.resize(false); + if (disp3d.is_resized()) disp3d.resize(false); + disp.wait(50); + } + + return 0; +} diff --git a/examples/odykill.cpp b/examples/odykill.cpp new file mode 100644 index 000000000..a9e55f879 --- /dev/null +++ b/examples/odykill.cpp @@ -0,0 +1,229 @@ +/* + # + # File : odykill.cpp + # ( C++ source file ) + # + # Description : Simple shoot-em-up game featuring the Robotvis/Odyssee Team ! + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "img/odykill.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Create game graphics + CImg graphics[21] = { + CImg(data_tomato,100,100,1,3,false), + CImg(data_heart,100,100,1,3,false), + CImg(data_dynamite,100,100,1,3,false), + CImg(data_brain,100,100,1,3,false), + CImg(data_cdrom,100,100,1,3,false), + CImg(data_enemy,113,150,1,3,false), + CImg(data_enemy2,116,155,1,3,false), + CImg(data_enemy3,104,134,1,3,false), + CImg(data_enemy4,141,151,1,3,false), + CImg(data_enemy5,140,152,1,3,false), + CImg(data_enemy6,131,156,1,3,false), + CImg(data_enemy7,114,125,1,3,false), + CImg(data_enemy8,97,125,1,3,false), + CImg(data_enemy9,143,134,1,3,false), + CImg(data_enemy10,158,214,1,3,false), + CImg(data_enemy11,131,168,1,3,false), + CImg(data_enemy12,114,138,1,3,false), + CImg(data_enemy13,144,144,1,3,false), + CImg(data_enemy14,132,153,1,3,false), + CImg(data_enemy15,152,151,1,3,false), + CImg(data_enemy16,139,185,1,3,false), + }; + CImg<> masks[21]; + const unsigned char black[] = { 0,0,0 }, white[] = { 255,255,255 }; + + // Display weapon selection menu + CImg back0(640,480,1,3), title(data_title,294,94,1,3,true), choose(data_choose,524,49,1,3,true); + back0.fill(0).draw_image(back0.width()/2 - title.width()/2,30,title). + draw_image(back0.width()/2 - choose.width()/2,150,choose); + CImgDisplay disp(back0,"OdyKill"); + int weapon=-1; + + while (!disp.is_closed() && !disp.button()) { + weapon = -1; + for (int k=0; k<5; k++) { + const int mx = disp.mouse_x(), my = disp.mouse_y(); + if (!((mx - 40)/110==k && my>250 && my<350)) back0.draw_image(40 + k*110,250,graphics[k]/2.0); + else back0.draw_image(40 + k*110,250,graphics[weapon=k]); + } + CImg tmp = CImg().draw_text(0,0, + weapon==0?" Tomato ": + weapon==1?" Heart ": + weapon==2?" Dynamite ": + weapon==3?" Brain ": + weapon==4?" CD-Rom ": + " ",white,black,1,32).resize(-100,-100,1,1), + tmp2 = tmp.get_blur(6).normalize(0,255).draw_image(tmp,0.5f); + cimg_forC(back0,k) back0.draw_image(250,390,0,k,tmp2); + + disp.resize(disp).display(back0).wait(); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen(); + if (disp.is_closed() || disp.is_keyQ() || disp.is_keyESC()) std::exit(0); + } + disp.hide_mouse(); + + /*--------------------------------- + + Go ! + + --------------------------------*/ + + const CImg + background = CImg(100,100,1,3,0).noise(100,2).draw_plasma(). + resize(back0.width(),back0.height(),1,3,5)/2.5; + for (unsigned int k = 0; k<21; k++) { + CImg<> tmp = graphics[k].resize(k<5?32:164,k<5?32:164,1,3); + cimg_forXY(tmp,x,y) tmp(x,y) = (tmp(x,y,0)==255 && tmp(x,y,1)==255 && tmp(x,y,2)==255)?0.0f:1.0f; + masks[k] = tmp.get_channel(0); + graphics[k].resize(k<5?32:164,k<5?32:164,1,3,5); + } + + CImg canvas(background); + int n = 5 + ((int)(200*cimg::rand())%16); + CImg tomato = graphics[weapon], enemy = graphics[n]; + CImg<> m_tomato = masks[weapon], m_enemy = masks[n]; + + double angle = 0; + int tomato_x = 0,tomato_y = 0,shooted = 0; + double enemy_x = -1000, enemy_y = -1000, enemy_z = -1000, tomato_z = 0, vx = 0, vy = 0, vz = 0, va = 0; + double speed = cimg_option("-speed",5.0,"Speed"); + int timeleft = 2000, score = 0; + CImg r_enemy; + + // Main loop + while (timeleft && !disp.is_closed() && !disp.is_keyESC() && !disp.is_keyQ()) { + --timeleft; + const int mx = disp.mouse_x()*back0.width()/disp.width(), my = disp.mouse_y()*back0.height()/disp.height(); + + // Handle object motion + if (tomato_z>0) { + tomato_z+=0.07; tomato_y -= (int)(20*std::cos(cimg::PI/7 + tomato_z*cimg::PI)); + if (tomato_z>=1) { tomato_z=0; tomato_x = mx; tomato_y = my; } + } + if (!shooted) { enemy_x +=vx; enemy_y +=vy; enemy_z +=vz; } + else { + va = 10; + enemy_y += vy; + vy += 2; + tomato_z = 0; + if (enemy_y>5*canvas.height()/4) { + shooted = 0; + int nn = 5 + ((int)(200*cimg::rand())%16); + enemy = graphics[nn]; + m_enemy = masks[nn]; + enemy_x=cimg::rand(-1,1)*1e8; enemy_y=cimg::rand(-1,1)*1e8; enemy_z=cimg::rand(-1,1)*1e8; + va = angle = 0; + } + } + + if (enemy_x<0) { enemy_x=0; vx = speed*cimg::rand(-1,1); } + if (enemy_x>canvas.width()) { enemy_x=canvas.width(); vx = speed*cimg::rand(-1,1); } + if (enemy_y<0) { enemy_y=0; vy = speed*cimg::rand(-1,1); } + if (!shooted && enemy_y>canvas.height()) { enemy_y=canvas.height(); vy = speed*cimg::rand(-1,1); } + if (enemy_z<0.1) { enemy_z = 0.1; vz = speed*0.01*cimg::rand(-1,1); } + if (enemy_z>0.7) { enemy_z = 0.7; vz = speed*0.01*cimg::rand(-1,1); } + angle+=va; + + // Handle mouse interaction + if (!disp.button()) { + if (tomato_z==0) { + tomato_x = mx; tomato_y = my; + } + } else tomato_z +=0.0001; + + // Detect shooting + if (cimg::abs(tomato_z - enemy_z)<0.1) { + if (tomato_x>enemy_x - r_enemy.width()/2 && tomato_xenemy_y - r_enemy.height()/2 && tomato_y rm_enemy = m_enemy.get_resize(r_enemy.width(),r_enemy.height()); + CImg r_tomato = tomato.get_resize((int)(8 + tomato.width()*(1 - tomato_z)), + (int)(8 + tomato.height()*(1 - tomato_z)),-100,-100); + CImg<> rm_tomato = m_tomato.get_resize(r_tomato.width(),r_tomato.height()); + + if (angle!=0) { + r_enemy.rotate((float)angle,0,0); + rm_enemy.rotate((float)angle,0,0); + cimg_forXY(r_enemy,x,y) r_enemy(x,y,0) = (r_enemy(x,y,0) + 255)/2; + } + r_enemy*=(1 - (enemy_z - 0.1)/1.6); + r_tomato*=(1 - tomato_z/1.6); + rm_enemy*=(1 - (enemy_z - 0.1)/1.6); + + if (enemy_z>tomato_z) { + canvas.draw_image((int)(enemy_x - r_enemy.width()/2), + (int)(enemy_y - r_enemy.height()/2), + r_enemy,rm_enemy); + if (tomato_x>=0) canvas.draw_image(tomato_x - r_tomato.width()/2, + tomato_y - r_tomato.height()/2, + r_tomato,rm_tomato); + } + else { + if (tomato_x>=0) canvas.draw_image(tomato_x - r_tomato.width()/2, + tomato_y - r_tomato.height()/2, + r_tomato,rm_tomato); + canvas.draw_image((int)(enemy_x - r_enemy.width()/2), + (int)(enemy_y - r_enemy.height()/2), + r_enemy,rm_enemy); + } + canvas.draw_text(1,1," Time left %d, Score = %d",white,0,0.5f,24,timeleft,score); + disp.resize(disp).display(canvas).wait(25); + if (disp.is_keyCTRLLEFT() && disp.is_keyF()) disp.toggle_fullscreen(); + } + + std::fprintf(stderr,"\n\n YOUR SCORE : %d\n\n\n",score); + + return 0; +} diff --git a/examples/pde_TschumperleDeriche2d.cpp b/examples/pde_TschumperleDeriche2d.cpp new file mode 100644 index 000000000..c5c9c223e --- /dev/null +++ b/examples/pde_TschumperleDeriche2d.cpp @@ -0,0 +1,231 @@ +/* + # + # File : pde_TschumperleDeriche2d.cpp + # ( C++ source file ) + # + # Description : Implementation of the Tschumperlé-Deriche's Regularization + # PDE, for 2D multivalued images, as described in the articles below. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # (1) PDE-Based Regularization of Multivalued Images and Applications. + # (D. Tschumperlé). PhD Thesis. University of Nice-Sophia Antipolis, December 2002. + # (2) Diffusion PDE's on Vector-valued Images : Local Approach and Geometric Viewpoint. + # (D. Tschumperlé and R. Deriche). IEEE Signal Processing Magazine, October 2002. + # (3) Vector-Valued Image Regularization with PDE's : A Common Framework for Different Applications. + # (D. Tschumperlé and R. Deriche). CVPR'2003, Computer Vision and Pattern Recognition, + # Madison, United States, June 2003. + # + # This code can be used to perform image restoration, inpainting, magnification or flow visualization. + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif +#undef min +#undef max + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line arguments + //----------------------------- + cimg_usage("Tschumperlé-Deriche's flow for 2D Image Restoration, Inpainting, Magnification or Flow visualization"); + const char *file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input image"); + const char *file_m = cimg_option("-m",(char*)NULL,"Mask image (if Inpainting)"); + const char *file_f = cimg_option("-f",(char*)NULL,"Flow image (if Flow visualization)"); + const char *file_o = cimg_option("-o",(char*)NULL,"Output file"); + const double zoom = cimg_option("-zoom",1.0,"Image magnification"); + + const unsigned int nb_iter = cimg_option("-iter",100000,"Number of iterations"); + const double dt = cimg_option("-dt",20.0,"Adapting time step"); + const double alpha = cimg_option("-alpha",0.0,"Gradient smoothing"); + const double sigma = cimg_option("-sigma",0.5,"Structure tensor smoothing"); + const float a1 = cimg_option("-a1",0.5f,"Diffusion limiter along minimal variations"); + const float a2 = cimg_option("-a2",0.9f,"Diffusion limiter along maximal variations"); + const double noiseg = cimg_option("-ng",0.0,"Add gauss noise before aplying the algorithm"); + const double noiseu = cimg_option("-nu",0.0,"Add uniform noise before applying the algorithm"); + const double noises = cimg_option("-ns",0.0,"Add salt&pepper noise before applying the algorithm"); + const bool stflag = cimg_option("-stats",false,"Display image statistics at each iteration"); + const unsigned int save = cimg_option("-save",0,"Iteration saving step"); + const unsigned int visu = cimg_option("-visu",10,"Visualization step (0=no visualization)"); + const unsigned int init = cimg_option("-init",3,"Inpainting initialization (0=black, 1=white, 2=noise, 3=unchanged)"); + const unsigned int skip = cimg_option("-skip",1,"Step of image geometry computation"); + bool view_t = cimg_option("-d",false,"View tensor directions (useful for debug)"); + double xdt = 0; + + // Variable initialization + //------------------------- + CImg<> img, flow; + CImg mask; + + if (file_i) { + img = CImg<>(file_i).resize(-100,-100,1,-100); + if (file_m) mask = CImg(file_m).resize(img.width(),img.height(),1,1); + else if (zoom>1) { + mask = CImg(img.width(),img.height(),1,1,-1). + resize((int)(img.width()*zoom),(int)(img.height()*zoom),1,1,4) + 1; + img.resize((int)(img.width()*zoom),(int)(img.height()*zoom),1,-100,3); + } + } else { + if (file_f) { + flow = CImg<>(file_f); + img = CImg<>((int)(flow.width()*zoom),(int)(flow.height()*zoom),1,1,0).noise(100,2); + flow.resize(img.width(),img.height(),1,2,3); + } else + throw CImgException("You need to specify at least one input image (option -i), or one flow image (option -f)"); + } + img.noise(noiseg,0).noise(noiseu,1).noise(noises,2); + float initial_min, initial_max = img.max_min(initial_min); + if (mask && init!=3) + cimg_forXYC(img,x,y,k) if (mask(x,y)) + img(x,y,k) = (float)((init? + (init==1?initial_max:((initial_max - initial_min)*cimg::rand())): + initial_min)); + + CImgDisplay disp; + if (visu) disp.assign(img,"Iterated Image"); + CImg<> G(img.width(),img.height(),1,3,0), T(G), veloc(img), val(2), vec(2,2); + + // PDE main iteration loop + //------------------------- + for (unsigned int iter = 0; iter grad = img.get_gradient(); + if (alpha!=0) cimglist_for(grad,l) grad[l].blur((float)alpha); + G.fill(0); + cimg_forXYC(img,x,y,k) { + const float ix = grad[0](x,y,k), iy = grad[1](x,y,k); + G(x,y,0) += ix*ix; + G(x,y,1) += ix*iy; + G(x,y,2) += iy*iy; + } + if (sigma!=0) G.blur((float)sigma); + + // When using PDE for image restoration, inpainting or zooming + T.fill(0); + if (!mask) cimg_forXY(G,x,y) { + G.get_tensor_at(x,y).symmetric_eigen(val,vec); + const float + l1 = (float)std::pow(1.0f + val[0] + val[1],-a1), + l2 = (float)std::pow(1.0f + val[0] + val[1],-a2), + ux = vec(1,0), + uy = vec(1,1); + T(x,y,0) = l1*ux*ux + l2*uy*uy; + T(x,y,1) = l1*ux*uy - l2*ux*uy; + T(x,y,2) = l1*uy*uy + l2*ux*ux; + } + else cimg_forXY(G,x,y) if (mask(x,y)) { + G.get_tensor_at(x,y).symmetric_eigen(val,vec); + const float + ux = vec(1,0), + uy = vec(1,1); + T(x,y,0) = ux*ux; + T(x,y,1) = ux*uy; + T(x,y,2) = uy*uy; + } + } + } + + // Compute the PDE velocity and update the iterated image + //-------------------------------------------------------- + CImg_3x3(I,float); + veloc.fill(0); + cimg_forC(img,k) cimg_for3x3(img,x,y,0,k,I,float) { + const float + a = T(x,y,0), + b = T(x,y,1), + c = T(x,y,2), + ixx = Inc + Ipc - 2*Icc, + iyy = Icn + Icp - 2*Icc, + ixy = 0.25f*(Ipp + Inn - Ipn - Inp); + veloc(x,y,k) = a*ixx + 2*b*ixy + c*iyy; + } + if (dt>0) { + float m, M = veloc.max_min(m); + xdt = dt/std::max(cimg::abs(m),cimg::abs(M)); + } else xdt=-dt; + img+=veloc*xdt; + img.cut((float)initial_min,(float)initial_max); + + // Display and save iterations + if (disp && !(iter%visu)) { + if (!view_t) img.display(disp); + else { + const unsigned char white[3] = {255,255,255}; + CImg nvisu = img.get_resize(disp.width(),disp.height()).normalize(0,255); + CImg<> isophotes(img.width(),img.height(),1,2,0); + cimg_forXY(img,x,y) if (!mask || mask(x,y)) { + T.get_tensor_at(x,y).symmetric_eigen(val,vec); + isophotes(x,y,0) = vec(0,0); + isophotes(x,y,1) = vec(0,1); + } + nvisu.draw_quiver(isophotes,white,0.5f,10,9,0).display(disp); + } + } + if (save && file_o && !(iter%save)) img.save(file_o,iter); + if (disp) disp.resize().display(img); + } + + // Save result and exit. + if (file_o) img.save(file_o); + return 0; +} diff --git a/examples/pde_heatflow2d.cpp b/examples/pde_heatflow2d.cpp new file mode 100644 index 000000000..bb970a639 --- /dev/null +++ b/examples/pde_heatflow2d.cpp @@ -0,0 +1,114 @@ +/* + # + # File : pde_heatflow2D.cpp + # ( C++ source file ) + # + # Description : A simple Heat flow on 2D images. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include library header file +#include "CImg.h" +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif +#undef min +#undef max + +// Make a simpler namespace alias if one wants to avoid 'using namespace cimg_library' +namespace cil = cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line arguments, and init images and displays + //----------------------------------------------------------- + cimg_usage("Perform a simple Heat Flow on 2D images"); + cil::CImg<> img(cimg_option("-i",cimg_imagepath "milla.bmp","Input image")), veloc(img); + const double dt = cimg_option("-dt",3.0,"Adapting time step"); + img. + noise(cimg_option("-ng",0.0,"Add gaussian noise"),0). + noise(cimg_option("-nu",0.0,"Add uniform noise"),1). + noise(cimg_option("-ns",0.0,"Add Salt&Pepper noise"),2); + cil::CImgDisplay profile(400,300,"Intensity Profile",0,false,true), disp(img,"Heat flow 2D",0,false,true); + disp.move((cil::CImgDisplay::screen_width() - disp.width() - profile.width())/2, + (cil::CImgDisplay::screen_height() - disp.height())/2); + + profile.move(disp.window_x() + 8 + disp.window_width(), disp.window_y()); + const float fwhite[] = { 255,255,255 }; + bool run_PDE = true; + + // Begin PDE iteration loop + //------------------------- + for (int iter = 0; !disp.is_closed() && !profile.is_closed() && + !disp.is_keyQ() && !disp.is_keyESC() && !profile.is_keyQ() && !profile.is_keyESC();) { + + // Compute one iteration of PDE explicit scheme + if (run_PDE) { + CImg_3x3(I,float); + cimg_forC(img,k) cimg_for3x3(img,x,y,0,k,I,float) veloc(x,y,k) = Inc + Ipc + Icn + Icp - 4*Icc; + float m, M = veloc.max_min(m); + const double xdt = dt/(M - m); + img += veloc*xdt; + cil::CImg<>(img).draw_text(2,2,"iter = %d",fwhite,0,1,13,iter).display(disp.wait(25)); + } + + // Plot (R,G,B) intensity profiles and display it + if (disp.mouse_x()>=0) { + const int + mx = disp.mouse_x(), my = disp.mouse_y(), + mnx = mx*profile.width()/disp.width(); + const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }, white[] = { 255,255,255 }; + cil::CImg(profile.width(),profile.height(),1,3,0). + draw_graph(img.get_shared_row(my,0,0),red,1,1,0,255,0). + draw_graph(img.get_shared_row(my,0,1),green,1,1,0,255,0). + draw_graph(img.get_shared_row(my,0,2),blue,1,1,0,255,0). + draw_line(mnx,0,mnx,profile.height() - 1,white,0.5f,cil::cimg::rol(0xFF00FF00,iter%32)). + draw_text(2,2,"(x,y)=(%d,%d)",white,0,1,13,mx,my). + display(profile); + } + + // Mouse button stops/starts PDE evolution. + if (disp.button() || profile.button()) { disp.set_button(); profile.set_button(); run_PDE = !run_PDE; } + profile.resize(); + disp.resize(disp); + if (run_PDE) ++iter; + } + + return 0; +} diff --git a/examples/plotter1d.cpp b/examples/plotter1d.cpp new file mode 100644 index 000000000..226583d10 --- /dev/null +++ b/examples/plotter1d.cpp @@ -0,0 +1,73 @@ +/* + # + # File : plotter1d.cpp + # ( C++ source file ) + # + # Description : A simple math formula plotter. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include CImg library file and use its main namespace +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line argument. + cimg_usage("Simple plotter of mathematical formulas"); + const char *const formula = cimg_option("-f","sin(x/8) % cos(2*x)","Formula to plot"); + const float x0 = cimg_option("-x0",-5.0f,"Minimal X-value"); + const float x1 = cimg_option("-x1",5.0f,"Maximal X-value"); + const int resolution = cimg_option("-r",1024,"Plot resolution"); + const unsigned int nresolution = resolution>1?resolution:1024; + const unsigned int plot_type = cimg_option("-p",1,"Plot type"); + const unsigned int vertex_type = cimg_option("-v",1,"Vertex type"); + + // Create plot data. + CImg values(4,nresolution,1,1,0); + const unsigned int r = nresolution - 1; + cimg_forY(values,X) values(0,X) = x0 + X*(x1 - x0)/r; + cimg::eval(formula,values).move_to(values); + + // Display interactive plot window. + values.display_graph(formula,plot_type,vertex_type,"X-axis",x0,x1,"Y-axis"); + + // Quit. + return 0; +} diff --git a/examples/radon_transform2d.cpp b/examples/radon_transform2d.cpp new file mode 100644 index 000000000..9317a8be9 --- /dev/null +++ b/examples/radon_transform2d.cpp @@ -0,0 +1,379 @@ +/* + # + # File : radon_transform2d.cpp + # ( C++ source file ) + # + # Description : An implementation of the Radon Transform. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David G. Starkweather + # ( starkdg@sourceforge.net - starkweatherd@cox.net ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +#define ROUNDING_FACTOR(x) (((x) >= 0) ? 0.5 : -0.5) + +CImg GaussianKernel(double rho); +CImg ApplyGaussian(CImg im,double rho); +CImg RGBtoGrayScale(CImg &im); +int GetAngle(int dy,int dx); +CImg CannyEdges(CImg im, double T1, double T2,bool doHysteresis); +CImg<> RadonTransform(CImg im,int N); + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Illustration of the Radon Transform"); + + const char *file = cimg_option("-f",cimg_imagepath "parrot.ppm","path and file name"); + const double sigma = cimg_option("-r",1.0,"blur coefficient for gaussian low pass filter (lpf)"), + thresh1 = cimg_option("-t1",0.50,"lower threshold for canny edge detector"), + thresh2 = cimg_option("-t2",1.25,"upper threshold for canny edge detector");; + const int N = cimg_option("-n",64,"number of angles to consider in the Radon transform - should be a power of 2"); + + //color to draw lines + const unsigned char green[] = {0,255,0}; + CImg src(file); + + int rhomax = (int)std::sqrt((double)(src.width()*src.width() + src.height()*src.height()))/2; + + if (cimg::dialog(cimg::basename(argv[0]), + "Instructions:\n" + "Click on space bar or Enter key to display Radon transform of given image\n" + "Click on anywhere in the transform window to display a \n" + "corresponding green line in the original image\n", + "Start", "Quit",0,0,0,0, + src.get_resize(100,100,1,3),true)) std::exit(0); + + //retrieve a grayscale from the image + CImg grayScaleIm; + if ((src.spectrum() == 3) && (src.width() > 0) && (src.height() > 0) && (src.depth() == 1)) + grayScaleIm = (CImg)src.get_norm(0).quantize(255,false); + else if ((src.spectrum() == 1)&&(src.width() > 0) && (src.height() > 0) && (src.depth() == 1)) + grayScaleIm = src; + else { // image in wrong format + if (cimg::dialog(cimg::basename("wrong file format"), + "Incorrect file format\n","OK",0,0,0,0,0, + src.get_resize(100,100,1,3),true)) std::exit(0); + } + + //blur the image with a Gaussian lpf to remove spurious edges (e.g. noise) + CImg blurredIm = ApplyGaussian(grayScaleIm,sigma); + + //use canny edge detection algorithm to get edge map of the image + //- the threshold values are used to perform hysteresis in the edge detection process + CImg cannyEdgeMap = CannyEdges(blurredIm,thresh1,thresh2,false); + CImg radonImage(500,400,1,1,0); + + //display the two windows + CImgDisplay dispImage(src,"original image"); + dispImage.move(CImgDisplay::screen_width()/8,CImgDisplay::screen_height()/8); + CImgDisplay dispRadon(radonImage,"Radon Transform"); + dispRadon.move(CImgDisplay::screen_width()/4,CImgDisplay::screen_height()/4); + CImgDisplay dispCanny(cannyEdgeMap,"canny edges"); + //start main display loop + while (!dispImage.is_closed() && !dispRadon.is_closed() && + !dispImage.is_keyQ() && !dispRadon.is_keyQ() && + !dispImage.is_keyESC() && !dispRadon.is_keyESC()) { + + CImgDisplay::wait(dispImage,dispRadon); + + if (dispImage.is_keySPACE() || dispRadon.is_keySPACE()) { + radonImage = (CImg)RadonTransform(cannyEdgeMap,N).quantize(255,false).resize(500,400); + radonImage.display(dispRadon); + } + + //when clicking on dispRadon window, draw line in original image window + if (dispRadon.button()) + { + const double rho = dispRadon.mouse_y()*rhomax/dispRadon.height(), + theta = (dispRadon.mouse_x()*N/dispRadon.width())*2*cimg::PI/N, + x = src.width()/2 + rho*std::cos(theta), + y = src.height()/2 + rho*std::sin(theta); + const int x0 = (int)(x + 1000*std::cos(theta + cimg::PI/2)), + y0 = (int)(y + 1000*std::sin(theta + cimg::PI/2)), + x1 = (int)(x - 1000*std::cos(theta + cimg::PI/2)), + y1 = (int)(y - 1000*std::sin(theta + cimg::PI/2)); + src.draw_line(x0,y0,x1,y1,green,1.0f,0xF0F0F0F0).display(dispImage); + } + } + return 0; +} +/** + * PURPOSE: create a 5x5 gaussian kernel matrix + * PARAM rho - gaussiam equation parameter (default = 1.0) + * RETURN CImg the gaussian kernel + **/ + +CImg GaussianKernel(double sigma = 1.0) +{ + CImg resultIm(5,5,1,1,0); + int midX = 3, midY = 3; + cimg_forXY(resultIm,X,Y) { + resultIm(X,Y) = std::ceil(256.0*(std::exp(-(midX*midX + midY*midY)/(2*sigma*sigma)))/(2*cimg::PI*sigma*sigma)); + } + return resultIm; +} +/* + * PURPOSE: convolve a given image with the gaussian kernel + * PARAM CImg im - image to be convolved upon + * PARAM double sigma - gaussian equation parameter + * RETURN CImg image resulting from the convolution + * */ +CImg ApplyGaussian(CImg im,double sigma) +{ + CImg smoothIm(im.width(),im.height(),1,1,0); + + //make gaussian kernel + CImg gk = GaussianKernel(sigma); + //apply gaussian + + CImg_5x5(I,int); + cimg_for5x5(im,X,Y,0,0,I,int) { + float sum = 0; + sum += gk(0,0)*Ibb + gk(0,1)*Ibp + gk(0,2)*Ibc + gk(0,3)*Ibn + gk(0,4)*Iba; + sum += gk(1,0)*Ipb + gk(1,1)*Ipp + gk(1,2)*Ipc + gk(1,3)*Ipn + gk(1,4)*Ipa; + sum += gk(2,0)*Icb + gk(2,1)*Icp + gk(2,2)*Icc + gk(2,3)*Icn + gk(2,4)*Ica; + sum += gk(3,0)*Inb + gk(3,1)*Inp + gk(3,2)*Inc + gk(3,3)*Inn + gk(3,4)*Ina; + sum += gk(4,0)*Iab + gk(4,1)*Iap + gk(4,2)*Iac + gk(4,3)*Ian + gk(4,4)*Iaa; + smoothIm(X,Y) = sum/256; + } + return smoothIm; +} +/** + * PURPOSE: convert a given rgb image to a MxNX1 single vector grayscale image + * PARAM: CImg im - rgb image to convert + * RETURN: CImg grayscale image with MxNx1x1 dimensions + **/ + +CImg RGBtoGrayScale(CImg &im) +{ + CImg grayImage(im.width(),im.height(),im.depth(),1,0); + if (im.spectrum() == 3) { + cimg_forXYZ(im,X,Y,Z) { + grayImage(X,Y,Z,0) = (unsigned char)(0.299*im(X,Y,Z,0) + 0.587*im(X,Y,Z,1) + 0.114*im(X,Y,Z,2)); + } + } + grayImage.quantize(255,false); + return grayImage; +} +/** + * PURPOSE: aux. function used by CannyEdges to quantize an angle theta given by gradients, dx and dy + * into 0 - 7 + * PARAM: dx,dy - gradient magnitudes + * RETURN int value between 0 and 7 + **/ +int GetAngle(int dy,int dx) +{ + double angle = cimg::abs(std::atan2((double)dy,(double)dx)); + if ((angle >= -cimg::PI/8)&&(angle <= cimg::PI/8))//-pi/8 to pi/8 => 0 + return 0; + else if ((angle >= cimg::PI/8)&&(angle <= 3*cimg::PI/8))//pi/8 to 3pi/8 => pi/4 + return 1; + else if ((angle > 3*cimg::PI/8)&&(angle <= 5*cimg::PI/8))//3pi/8 to 5pi/8 => pi/2 + return 2; + else if ((angle > 5*cimg::PI/8)&&(angle <= 7*cimg::PI/8))//5pi/8 to 7pi/8 => 3pi/4 + return 3; + else if (((angle > 7*cimg::PI/8) && (angle <= cimg::PI)) || + ((angle <= -7*cimg::PI/8)&&(angle >= -cimg::PI))) //-7pi/8 to -pi OR 7pi/8 to pi => pi + return 4; + else return 0; +} +/** + * PURPOSE: create an edge map of the given image with hysteresis using thresholds T1 and T2 + * PARAMS: CImg im the image to perform edge detection on + * T1 lower threshold + * T2 upper threshold + * RETURN CImg edge map + **/ +CImg CannyEdges(CImg im, double T1, double T2, bool doHysteresis=false) +{ + CImg edges(im); + CImg secDerivs(im); + secDerivs.fill(0); + edges.fill(0); + CImgList gradients = im.get_gradient("xy",1); + int image_width = im.width(); + int image_height = im.height(); + + cimg_forXY(im,X,Y) { + double Gr = std::sqrt(std::pow((double)gradients[0](X,Y),2.0) + std::pow((double)gradients[1](X,Y),2.0)); + double theta = GetAngle(Y,X); + //if Gradient magnitude is positive and X,Y within the image + //take the 2nd deriv in the appropriate direction + if ((Gr > 0)&&(X < image_width - 2)&&(Y < image_height - 2)) { + if (theta == 0) + secDerivs(X,Y) = im(X + 2,Y) - 2*im(X + 1,Y) + im(X,Y); + else if (theta == 1) + secDerivs(X,Y) = im(X + 2,Y + 2) - 2*im(X + 1,Y + 1) + im(X,Y); + else if (theta == 2) + secDerivs(X,Y) = im(X,Y + 2) - 2*im(X,Y + 1) + im(X,Y); + else if (theta == 3) + secDerivs(X,Y) = im(X + 2,Y + 2) - 2*im(X + 1,Y + 1) + im(X,Y); + else if (theta == 4) + secDerivs(X,Y) = im(X + 2,Y) - 2*im(X + 1,Y) + im(X,Y); + } + } + //for each 2nd deriv that crosses a zero point and magnitude passes the upper threshold. + //Perform hysteresis in the direction of the gradient, rechecking the gradient + //angle for each pixel that meets the threshold requirement. Stop checking when + //the lower threshold is not reached. + CImg_5x5(I,float); + cimg_for5x5(secDerivs,X,Y,0,0,I,float) { + if ( (Ipp*Ibb < 0) || + (Ipc*Ibc < 0)|| + (Icp*Icb < 0) ) { + double Gr = std::sqrt(std::pow((double)gradients[0](X,Y),2.0) + std::pow((double)gradients[1](X,Y),2.0)); + int dir = GetAngle(Y,X); + int Xt = X, Yt = Y, delta_x = 0, delta_y=0; + double GRt = Gr; + if (Gr >= T2) + edges(X,Y) = 255; + //work along the gradient in one direction + if (doHysteresis) { + while ((Xt > 0) && (Xt < image_width - 1) && (Yt > 0) && (Yt < image_height - 1)) { + switch (dir){ + case 0 : delta_x=0;delta_y=1;break; + case 1 : delta_x=1;delta_y=1;break; + case 2 : delta_x=1;delta_y=0;break; + case 3 : delta_x=1;delta_y=-1;break; + case 4 : delta_x=0;delta_y=1;break; + } + Xt += delta_x; + Yt += delta_y; + GRt = std::sqrt(std::pow((double)gradients[0](Xt,Yt),2.0) + std::pow((double)gradients[1](Xt,Yt),2.0)); + dir = GetAngle(Yt,Xt); + if (GRt >= T1) + edges(Xt,Yt) = 255; + } + //work along gradient in other direction + Xt = X; Yt = Y; + while ((Xt > 0) && (Xt < image_width - 1) && (Yt > 0) && (Yt < image_height - 1)) { + switch (dir){ + case 0 : delta_x=0;delta_y=1;break; + case 1 : delta_x=1;delta_y=1;break; + case 2 : delta_x=1;delta_y=0;break; + case 3 : delta_x=1;delta_y=-1;break; + case 4 : delta_x=0;delta_y=1;break; + } + Xt -= delta_x; + Yt -= delta_y; + GRt = std::sqrt(std::pow((double)gradients[0](Xt,Yt),2.0) + std::pow((double)gradients[1](Xt,Yt),2.0)); + dir = GetAngle(Yt,Xt); + if (GRt >= T1) + edges(Xt,Yt) = 255; + } + } + } + } + return edges; +} +/** + * PURPOSE: perform radon transform of given image + * PARAM: CImg im - image to detect lines + * int N - number of angles to consider (should be a power of 2) + * (the values of N will be spread over 0 to 2PI) + * RETURN CImg - transform of given image of size, N x D + * D = rhomax = sqrt(dimx*dimx + dimy*dimy)/2 + **/ +CImg<> RadonTransform(CImg im,int N) { + int image_width = im.width(); + int image_height = im.height(); + + //calc offsets to center the image + float xofftemp = image_width/2.0f - 1; + float yofftemp = image_height/2.0f - 1; + int xoffset = (int)std::floor(xofftemp + ROUNDING_FACTOR(xofftemp)); + int yoffset = (int)std::floor(yofftemp + ROUNDING_FACTOR(yofftemp)); + float dtemp = (float)std::sqrt((double)(xoffset*xoffset + yoffset*yoffset)); + int D = (int)std::floor(dtemp + ROUNDING_FACTOR(dtemp)); + + CImg<> imRadon(N,D,1,1,0); + + //for each angle k to consider + for (int k= 0 ; k < N; k++) { + //only consider from PI/8 to 3PI/8 and 5PI/8 to 7PI/8 + //to avoid computational complexity of a steep angle + if (k == 0){k = N/8;continue;} + else if (k == (3*N/8 + 1)){ k = 5*N/8;continue;} + else if (k == 7*N/8 + 1){k = N; continue;} + + //for each rho length, determine linear equation and sum the line + //sum is to sum the values along the line at angle k2pi/N + //sum2 is to sum the values along the line at angle k2pi/N + N/4 + //The sum2 is performed merely by swapping the x,y axis as if the image were rotated 90 degrees. + for (int d=0; d < D; d++) { + double theta = 2*k*cimg::PI/N;//calculate actual theta + double alpha = std::tan(theta + cimg::PI/2);//calculate the slope + double beta_temp = -alpha*d*std::cos(theta) + d*std::sin(theta);//y-axis intercept for the line + int beta = (int)std::floor(beta_temp + ROUNDING_FACTOR(beta_temp)); + //for each value of m along x-axis, calculate y + //if the x,y location is within the boundary for the respective image orientations, add to the sum + unsigned int sum1 = 0, + sum2 = 0; + int M = (image_width >= image_height) ? image_width : image_height; + for (int m=0;m < M; m++) { + //interpolate in-between values using nearest-neighbor approximation + //using m,n as x,y indices into image + double n_temp = alpha*(m - xoffset) + beta; + int n = (int)std::floor(n_temp + ROUNDING_FACTOR(n_temp)); + if ((m < image_width) && (n + yoffset >= 0) && (n + yoffset < image_height)) + { + sum1 += im(m, n + yoffset); + } + n_temp = alpha*(m - yoffset) + beta; + n = (int)std::floor(n_temp + ROUNDING_FACTOR(n_temp)); + if ((m < image_height)&&(n + xoffset >= 0)&&(n + xoffset < image_width)) + { + sum2 += im(-(n + xoffset) + image_width - 1, m); + } + } + //assign the sums into the result matrix + imRadon(k,d) = (float)sum1; + //assign sum2 to angle position for theta + PI/4 + imRadon(((k + N/4)%N),d) = (float)sum2; + } + } + return imRadon; +} +/* references: + * 1. See Peter Toft's thesis on the Radon transform: http://petertoft.dk/PhD/index.html + * While I changed his basic algorithm, the main idea is still the same and provides an excellent explanation. + * + * */ diff --git a/examples/scene3d.cpp b/examples/scene3d.cpp new file mode 100644 index 000000000..5405e51d0 --- /dev/null +++ b/examples/scene3d.cpp @@ -0,0 +1,142 @@ +/* + # + # File : scene3d.cpp + # ( C++ source file ) + # + # Description : A simple program that demonstrates the use of the + # 3D functions of CImg, in conjonction with the Board library. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Uncomment the line below to use the Board library. +// ( You will need to link your code with the board library object ). +// ( Get the Board Library at : http://libboard.sourceforge.net/ ) +//#define cimg_use_board + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main() { + + // Define a simple 3D scene, composed of various basic objects (torus, cone, cube, ...) + //------------------------------------------------------------------------------------- + std::fprintf(stderr," - Create 3D Scene.\n"); + + // Define objects vertices and primitives. + CImgList cube_prims, cone_prims, torus_prims, sphere_prims, plane_prims, scene_prims; + const CImg + cube_pts = CImg<>::box3d(cube_prims,60,60,60).shift_object3d().shift_object3d(-50,50,0), + cone_pts = CImg<>::cone3d(cone_prims,30,40).shift_object3d().shift_object3d(50,50,0), + torus_pts = CImg<>::torus3d(torus_prims,30,10).shift_object3d().shift_object3d(-50,-50,0), + sphere_pts = CImg<>::sphere3d(sphere_prims,30).shift_object3d().shift_object3d(50,-50,0), + plane_pts = CImg<>::plane3d(plane_prims,200,200,20,20).shift_object3d().shift_object3d(0,0,40); + plane_prims.insert(plane_prims.get_reverse_object3d()); + + // Define objects colors and textures. + const CImgList + cone_cols = CImgList(cone_prims.size(),CImg::vector(128,63,255)), + torus_cols = CImgList(torus_prims.size(),CImg::vector(255,55,163)), + sphere_cols = CImgList(sphere_prims.size(),CImg::vector(115,115,63)), + plane_cols = CImgList(plane_prims.size(),CImg::vector(60,120,180)); + const CImg texture = CImg(cimg_imagepath "milla.bmp").resize(128,128); + CImgList cube_cols; + cimglist_for(cube_prims,p) { + cube_cols.insert(texture,~0U,true); + cube_prims[p].append(CImg::vector(0,0,127,0,127,127,0,127),'y'); + } + + // Define objects opacities. + const CImg + cube_opacs(cube_prims.size(),1,1,1,1.0f), + cone_opacs(cone_prims.size(),1,1,1,0.8f), + torus_opacs(torus_prims.size(),1,1,1,0.6f), + sphere_opacs(sphere_prims.size(),1,1,1,0.4f), + plane_opacs(plane_prims.size(),1,1,1,0.4f); + + // Append all object in a single 3D scene. + const CImg scene_pts = CImg(). + append_object3d(scene_prims,cube_pts,cube_prims). + append_object3d(scene_prims,cone_pts,cone_prims). + append_object3d(scene_prims,torus_pts,torus_prims). + append_object3d(scene_prims,sphere_pts,sphere_prims). + append_object3d(scene_prims,plane_pts,plane_prims); + const CImgList scene_cols = (+cube_cols,cone_cols,torus_cols,sphere_cols,plane_cols); + const CImg scene_opacs = (cube_opacs,cone_opacs,torus_opacs,sphere_opacs,plane_opacs)>'x'; + + // Display object3D in a user-interacted window and get final position matrix. + std::fprintf(stderr," - Display 3D Scene.\n"); + const CImg visu = CImg(3,512,512,1).fill(230,230,255).permute_axes("yzcx"); + CImg view_matrix = CImg<>::identity_matrix(4); + visu.display_object3d("3D Scene",scene_pts,scene_prims,scene_cols,scene_opacs,true,4,4,false, + 500.0f,0,0,-5000,0.5f,0.1f,true,view_matrix.data()); + + // Save object 3D as OFF file. + std::fprintf(stderr," - Save .OFF 3D object file.\n"); + scene_pts.save_off(scene_prims,scene_cols,"output.off"); + + // Save 3D view in SVG, EPS and FIG files. + // (using the Board library : https://github.com/c-koi/libboard ). +#ifdef cimg_use_board + + // Define a Board instance + LibBoard::Board B; + + // Set Background color of the board. + B.clear(230,230,255); + + // Draw object both in 'visu' and in the board. + (view_matrix.crop(0,0,2,2))*=2; + (+visu).draw_object3d(B,visu.width()/2,visu.height()/2,visu.depth()/2, + view_matrix*scene_pts,scene_prims,scene_cols,scene_opacs,3). + display("Snapshot for Board"); + + // Save board into a vector graphics file format. + std::fprintf(stderr," - Save .SVG, .EPS and .FIG snapshots\n"); + B.save("output.svg"); + B.save("output.eps"); + B.save("output.fig"); +#endif + + // Exit. + std::fprintf(stderr," - Exit.\n"); + return 0; +} diff --git a/examples/spherical_function3d.cpp b/examples/spherical_function3d.cpp new file mode 100644 index 000000000..b163390ba --- /dev/null +++ b/examples/spherical_function3d.cpp @@ -0,0 +1,113 @@ +/* + # + # File : spherical_function3d.cpp + # ( C++ source file ) + # + # Description : An example that shows how to build custom 3D objects in CImg. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; + +/*--------------------------- + + Main procedure + + --------------------------*/ +int main() { + + CImgList object_colors; + CImgList object_opacities; + + // Define a 3D centered box. + CImg object_vertices = CImg(3,8,1,1, // Define the 8 vertices of the cube + -1,-1,-1, // (x0,y0,z0) + 1,-1,-1, // (x1,y1,z1) + 1,1,-1, // ... + -1,1,-1, + -1,-1,1, + 1,-1,1, + 1,1,1, // (x6,y6,z6) + -1,1,1).transpose(); // (x7,y7,z7) + CImgList object_primitives(12,1,2,1,1, // Define the 12 segments of the cube + 0,1, 1,2, 2,3, 3,0, + 4,5, 5,6, 6,7, 7,4, + 0,4, 1,5, 2,6, 3,7); + object_colors.insert(object_primitives.size(),CImg::vector(32,64,255)); + object_opacities.insert(object_primitives.size(),CImg::vector(0.3f)); + + // Define the spherical function's vertices. + CImgList spherical_vertices; + const float a = 1; + const unsigned int na = 132, nb = 132; + for (unsigned int v = 0; v::vector(altitude*x,altitude*y,altitude*z)); + } + + // Define the spherical function's mesh. + CImgList spherical_primitives; + for (unsigned int vv = 0; vv::vector(nb*vv + nu,nb*nv + uu,nb*vv + uu)); + spherical_primitives.insert(CImg::vector(nb*vv + nu,nb*nv + nu,nb*nv + uu)); + object_colors.insert(CImg<>::vector(0,255,255)); + object_colors.insert(CImg<>::vector(100,200,255)); + object_opacities.insert(2,CImg<>::vector(1)); + } + + // Merge 3D objects together. + object_vertices.append_object3d(object_primitives,spherical_vertices>'x',spherical_primitives); + char title[4096] = { 0 }; + std::sprintf(title,"3D Spherical Function (%u vertices, %u primitives)", + object_vertices.width(),object_primitives.size()); + CImgDisplay disp(640,480,title,0); + CImg(disp.width(),disp.height(),1,3,220). + display_object3d(disp,object_vertices,object_primitives,object_colors,object_opacities,true,4,3,false, + 500,0,0,-5000,0.1f,1.5f); + + return 0; +} diff --git a/examples/tetris.cpp b/examples/tetris.cpp new file mode 100644 index 000000000..5d3c4b36c --- /dev/null +++ b/examples/tetris.cpp @@ -0,0 +1,208 @@ +/* + # + # File : tetris.cpp + # ( C++ source file ) + # + # Description : A CImg version of the famous Tetris game. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "img/tetris.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line argument (if any) + cimg_usage("An implementation of the well known 'Tetris' game with CImg."); + unsigned int + blocdim = cimg_option("-blocdim",18,"Sprite bloc size"), + speed = cimg_option("-speed",20,"Initial speed"), + level = cimg_option("-level",0,"Level"); + const char *geometry = cimg_option("-g","12x20","Size of the board"); + unsigned int bwidth = 12,bheight = 20; + std::sscanf(geometry,"%u%*c%u",&bwidth,&bheight); + + const CImg dlogo = CImg(data_logo,128,96,1,3,true); + if (cimg::dialog("CImg Tetris", + "Welcome to the CImg version of Tetris.\n" + "( by David Tschumperle )\n\n" + "Press 'Start' when you are ready to play !","Start","Quit",0,0,0,0,dlogo,true)) std::exit(0); + + // Create sprite, background graphics and initial board data + const CImgList pieces = CImgList(). + insert(CImg(3,2).fill(1,1,1,0,0,1)). + insert(CImg(3,2).fill(2,2,2,2,0,0)). + insert(CImg(2,2).fill(3,3,3,3)). + insert(CImg(4,1).fill(4,4,4,4)). + insert(CImg(3,2).fill(5,5,0,0,5,5)). + insert(CImg(3,2).fill(0,6,6,6,6,0)). + insert(CImg(3,3).fill(0,7,0,7,7,7,0,7,0)). + insert(CImg(2,1).fill(8,8)). + insert(CImg(3,2).fill(9,9,9,0,9,0)). + insert(CImg(2,2).fill(10,10,0,10)). + insert(CImg(3,1).fill(11,11,11)); + + CImg board(bwidth,bheight,1,1,0), background(board.width()*blocdim,board.height()*blocdim,1,3,0); + (background.noise(30).draw_plasma().noise(30).deriche(5,0,'y').shift(0,-background.height()/2,0,0,2). + deriche(5,0,'y'))/=1.5f; + if (level) (board.get_shared_rows(board.height() - level,board.height() - 1,0,0).noise(100))%=pieces.size() + 1; + + // Create a set of small gradient-colored blocs used to draw the pieces. + CImgList blocs(pieces.size(),blocdim,blocdim,1,3); + cimglist_for(blocs,l) { + CImg color = CImg(3,1,1,1,128).noise(127,1).cut(120,255); + float val; + cimg_forXYC(blocs[l],x,y,k) + blocs[l](x,y,k) = (unsigned char)((val=(color[k]*0.7f*(x + y + 5)/blocdim))>255?255:val); + blocs[l].draw_line(0,0,0,blocdim - 1,(color>>1).data()). + draw_line(0,blocdim - 1,blocdim - 1,blocdim - 1,(color>>1).data()); + color = (CImg(color)*=2).cut(0,255); + blocs[l].draw_line(0,0,(int)blocdim - 1,0,color.data()). + draw_line(blocdim - 1,0,blocdim - 1,blocdim - 1,color.data()); + } + + // Initialize window display and enter the main event loop + CImgDisplay disp(background,"CImg Tetris",0,false,true); + disp.move((CImgDisplay::screen_width() - disp.width())/2, + (CImgDisplay::screen_height() - disp.height())/2).hide_mouse(); + const unsigned char white[3]={ 255, 255, 255 }; + CImg visu, nboard, piece, next, next_mask; + int cx = -1, cy = -1, cn = -1, nn = rand()%pieces.size(), time = 0, score = 0; + bool gameover = false, pause = false; + + while (!gameover && !disp.is_closed() && !disp.is_keyESC() && !disp.is_keyQ()) { + + if (!pause) { + + // Draw the board on the display window. + nboard = board; visu = background; + if (cx>=0 && cy>=0) + cimg_forXY(piece,x,y) if (piece(x,y)) nboard(cx - piece.width()/2 + x,cy - piece.height()/2 + y)=piece(x,y); + cimg_forXY(board,xx,yy) if (nboard(xx,yy)) visu.draw_image(xx*blocdim,yy*blocdim,blocs[nboard(xx,yy) - 1]); + visu.draw_text(5,5,"Lines : %d",white,0,1,13,score,nn).draw_text(visu.width() - 75,5,"Next :",white,0,1,13); + if (next) visu.draw_image(visu.width() - next.width() - 2,10 - next.height()/2,next,next_mask). + display(disp.wait(20)); + + if (cn<0) { + + // Introduce a new piece on the board (if necessary) and create representation of the next piece + board = nboard; + piece = pieces[cn=nn]; + nn = rand()%pieces.size(); + cx = board.width()/2; + cy = piece.height()/2; + next = CImg(pieces[nn].width()*blocdim,pieces[nn].height()*blocdim,1,3,0); + cimg_forXY(pieces[nn],xi,yi) + if (pieces[nn](xi,yi)) next.draw_image(xi*blocdim,yi*blocdim,blocs[pieces[nn](xi,yi) - 1]); + next_mask = next.resize(-50,-50).get_norm().threshold(0); + + // Detect tetris lines and do line removal animation if found. + cimg_forY(board,yyy) { + int Y = yyy*blocdim, line = 1; + cimg_forX(board,xxx) if (!board(xxx,yyy)) line=0; + if (line) { + board.draw_image(0,1,board.get_crop(0,0,board.width() - 1,yyy - 1)); + if (!((++score)%1) && speed>1) --speed; + for (float alpha=0; alpha<=1; alpha+=0.07f) + CImg(visu).draw_image(0,Y,background.get_crop(0,Y,visu.width() - 1, + Y + blocdim - 1),alpha). + display(disp.wait(20)); + visu.draw_image(0,Y,background.get_crop(0,Y,visu.width() - 1,Y + blocdim - 1)); + } + } + } + + // Handle motion & collisions + const int ox = cx, oy = cy; + bool rotated = false, collision; + switch (disp.key()) { + case cimg::keyP: pause = true; break; + case cimg::keyARROWUP: piece.rotate(90); rotated = true; disp.set_key(); break; + case cimg::keyARROWLEFT: --cx; disp.set_key(); break; + case cimg::keyARROWRIGHT: ++cx; disp.set_key(); break; + } + if (cx - piece.width()/2<0) cx = piece.width()/2; + if (cy - piece.height()/2<0) cy = piece.height()/2; + if (cx + (piece.width() - 1)/2>=board.width()) cx = board.width() - 1 - (piece.width() - 1)/2; + + // Detect collision along the X axis + collision = false; + cimg_forXY(piece,i,j) + if (piece(i,j) && board(cx - piece.width()/2 + i,cy - piece.height()/2 + j)) collision = true; + if (collision) { cx=ox; if (rotated) piece.rotate(-90); } + + if (disp.key()==cimg::keyARROWDOWN || !((++time)%speed)) { ++cy; disp.set_key(); } + // Detect collisiong along the Y axis + collision = false; + cimg_forXY(piece,ii,jj) + if (piece(ii,jj) && (cy - piece.height()/2 + jj>=board.height() || + board(cx - piece.width()/2 + ii,cy - piece.height()/2 + jj))) collision = true; + if (collision || cy + (piece.height() - 1)/2>=board.height()) { cy = oy; cn = -1; } + if (collision && cy==piece.height()/2) gameover = true; + } else { + + // If game is paused (key 'P'), do a little text animation + float A = 0, B = 0; + CImg pauselogo = CImg().draw_text(0,0,"Game Paused\nPress a key",white); + disp.set_key(); while (!disp.is_closed() && !disp.key()) { + const CImg pauserotated = pauselogo.get_rotate((float)(30*std::sin(A)),1,0). + resize((int)(-150 - 80*std::sin(B)),(int)(-150 - 80*std::sin(B))); + A+=0.08f; B+=0.043f; + CImg(background). + draw_image((background.width() - pauserotated.width())/2, + (background.height() - pauserotated.height())/2, + pauserotated.get_resize(-100,-100,1,3,2),pauserotated,1,255).display(disp.wait(20)); + if (disp.is_resized()) disp.resize(); + } + disp.set_key(); + pause = false; + } + background.shift(0,-20/(int)speed,0,0,2); + if (disp.is_resized()) disp.resize(); + } + + // End of game reached, display the score and do a 'game over' animation + cimg_forXYC(visu,x,y,k) if (x%2 || y%2) visu(x,y,k) = 0; + visu.display(disp); + char tmp[1024]; + std::sprintf(tmp,"Game Over !\n\nYour score : %d",score); + cimg::dialog("CImg Tetris",tmp,"Quit"); + return 0; +} diff --git a/examples/tron.cpp b/examples/tron.cpp new file mode 100644 index 000000000..c650474a9 --- /dev/null +++ b/examples/tron.cpp @@ -0,0 +1,190 @@ +/* + # + # File : tron.cpp + # ( C++ source file ) + # + # Description : A clone of the famous (and very simple) Tron game. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc, char **argv) { + + // Print usage, help and retrieve command line options + //----------------------------------------------------- + cimg_usage("A very simple Tron game, using the CImg Library"); + cimg_help("--- Quick help ----------------------------\n" + " Player 1 (blue) :\n" + " Use keys 'Z' (up), 'S' (down), 'Q' (left)\n" + " and 'D' (right) to control your player.\n" + " Right 'CONTROL' key enables turbospeed\n" + " Player 2 (red) : \n" + " Use arrow keys to control your player.\n" + " 'TAB' key enables turbospeed.\n" + "-------------------------------------------"); + + const char *geom = cimg_option("-g","300x300","Size of the game board"); + const int delay = cimg_option("-s",10,"Game speed (lower value means faster)"); + const bool twoplayers = !cimg_option("-1",false,"One player only"); + const int zoom = cimg_option("-z",1,"Zoom factor"); + const bool full = cimg_option("-f",false,"Fullscreen mode"); + unsigned int W = 400, H = 400; + std::sscanf(geom,"%u%*c%u",&W,&H); + + // Define game colors and variables + //---------------------------------- + const unsigned char blue[] = { 128,200,255}, red[] = { 255,0,0 }, white[] = { 255,255,255 }; + int score1 = 0, score2 = 0, round_over = 0, ix1 = -1, iy1 = -1, x1 = 0, y1 = 0, u1 = 0, v1 = 0, + ix2 = -1, iy2 = -1, x2 = 0, y2 = 0, u2 = 0, v2 = 0; + bool start_round = true, turbo1 = false, turbo2 = false; + + // Create background image + //-------------------------- + CImg background, img; + background.assign(64,64,1,3,0).noise(60).draw_plasma().resize(W,H).blur(2).normalize(0,128). + draw_rectangle(0,0,W-1,H-1,white,1.0f,~0U); + + // Open display window + //--------------------- + CImgDisplay disp(background,"* CImg-Tron *"); + if (zoom>1) disp.resize(-100*zoom,-100*zoom); + if (full) disp.toggle_fullscreen().display(background); + + // Start main game loop + //---------------------- + while (!disp.is_closed() && !disp.is_keyESC()) { + + // Init new game round if necessary + //---------------------------------- + if (start_round) { + + // Init game variables + round_over = 0; + ix1 = -1; iy1 = -1; x1 = 10; y1 = 10; u1 = 1; v1 = 0; turbo1 = false; + ix2 = -1; iy2 = -1; x2 = W - 11; y2 = H - 11; u2 = -1; v2 = 0; turbo2 = false; + img = background; + start_round = false; + + // Display a simple pre-round page + CImg logo, pressakey; + logo.draw_text(0,0," CImg-Tron ",white,0,1,33).resize(-100,-100,1,3); + CImg tmp = (+background).draw_image((W - logo.width())/2,(H - logo.height())/2 - 20, + logo,logo.get_channel(0).dilate(6).normalize(0,1)). + draw_text(W/2 - 60,H/2 + 10,"Blue ( %u )",blue,0,1,13,score1). + draw_text(W/2 + 10,H/2 + 10,"Red ( %u )",red,0,1,13,score2); + pressakey.draw_text(0,0,"* Press a key to start round *",white); + for (float i = 0; i<1; i+=0.05f) ((+tmp)*=i).display(disp.wait(20)); + disp.flush(); + for (unsigned long t = 0; !disp.key() && !disp.is_closed(); ++t) { + if (!(t%10)) { if (t%20) disp.display(tmp); + else disp.display((+tmp).draw_image(W/2 - 70,H/2 + 50,pressakey,pressakey,1,255)); } + if (disp.wait(20).is_resized()) disp.resize(disp); + } + if (disp.is_keyESC()) disp.flush(); + } + + // Test collision between players and borders + if (x1<0 || x1>=img.width() || y1<0 || y1>=img.height() || + img(x1,y1,0)!=background(x1,y1,0) || + img(x1,y1,1)!=background(x1,y1,1) || + img(x1,y1,2)!=background(x1,y1,2) || + ((ix1>=0 || iy1>=0) && (img(ix1,iy1,0)!=background(ix1,iy1,0) || // Collision test for turbo mode + img(ix1,iy1,1)!=background(ix1,iy1,1) || + img(ix1,iy1,2)!=background(ix1,iy1,2)))) { round_over=1; score2++; } + if (twoplayers) { + if (x2<0 || x2>=img.width() || y2<0 || y2>=img.height() || + img(x2,y2,0)!=background(x2,y2,0) || + img(x2,y2,1)!=background(x2,y2,1) || + img(x2,y2,2)!=background(x2,y2,2) || + ((ix2>=0 || iy2>=0) && (img(ix2,iy2,0)!=background(ix2,iy2,0) || // Collision test for turbo mode + img(ix2,iy2,1)!=background(ix2,iy2,1) || + img(ix2,iy2,2)!=background(ix2,iy2,2)))) { round_over=2; score1++; } + } + + // Draw new players positions + img.draw_point(x1,y1,blue); + if (ix1>=0 && iy1>=0) img.draw_point(ix1,iy1,blue); + if (twoplayers) { + img.draw_point(x2,y2,red); + if (ix2>=0 && iy2>=0) img.draw_point(ix2,iy2,red); + } + if (disp.is_resized()) disp.resize(disp); + img.display(disp); + + // Update players positions + x1+=u1; y1+=v1; + if (turbo1) { ix1 = x1; iy1 = y1; x1+=u1; y1+=v1; } else { ix1 = iy1 = -1; } + if (twoplayers) { + x2+=u2; y2+=v2; + if (turbo2) { ix2 = x2; iy2 = y2; x2+=u2; y2+=v2; } else { ix2 = iy2 = -1; } + } + + // Test keyboard events + int nu1 = u1, nv1 = v1, nu2 = u2, nv2 = v2; + if (disp.is_keyARROWLEFT()) { nu1 = -1; nv1 = 0; } + if (disp.is_keyARROWRIGHT()) { nu1 = 1; nv1 = 0; } + if (disp.is_keyARROWUP()) { nu1 = 0; nv1 = -1; } + if (disp.is_keyARROWDOWN()) { nu1 = 0; nv1 = 1; } + turbo1 = disp.is_keyCTRLRIGHT(); + if (twoplayers) { + if (disp.is_keyQ()) { nu2 = -1; nv2 = 0; } + if (disp.is_keyD()) { nu2 = 1; nv2 = 0; } + if (disp.is_keyZ()) { nu2 = 0; nv2 = -1; } + if (disp.is_keyS()) { nu2 = 0; nv2 = 1; } + turbo2 = disp.is_keyTAB(); + } + if (nu1!=-u1 && nv1!=-v1) { u1 = nu1; v1 = nv1; } + if (nu2!=-u2 && nv2!=-v2) { u2 = nu2; v2 = nv2; } + + // Check if round is over. + if (round_over) { + const int xc = round_over==1?x1:x2, yc = round_over==1?y1:y2; + for (int r=0; r<50; r+=3) img.draw_circle(xc,yc,r,round_over==1?blue:red,r/300.0f).display(disp.wait(20)); + for (int rr=0; rr<50; rr+=3) + ((+img)*=(50 - rr)/50.0f).draw_circle(xc,yc,(50 + rr),round_over==1?blue:red,1/6.0f).display(disp.wait(20)); + start_round = true; + } + + // Wait a small amount of time + disp.wait(delay); + } + return 0; +} diff --git a/examples/tutorial.cpp b/examples/tutorial.cpp new file mode 100644 index 000000000..ed8be8732 --- /dev/null +++ b/examples/tutorial.cpp @@ -0,0 +1,133 @@ +/* + # + # File : tutorial.cpp + # ( C++ source file ) + # + # Description : View the color profile of an image, along the X-axis. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// Include CImg library file and use its main namespace +#include "CImg.h" +using namespace cimg_library; + +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Define program usage and read command line parameters + //------------------------------------------------------- + + // Display program usage, when invoked from the command line with option '-h'. + cimg_usage("View the color profile of an image along the X axis"); + + // Read image filename from the command line (or set it to "img/parrot.ppm" if option '-i' is not provided). + const char* file_i = cimg_option("-i",cimg_imagepath "parrot.ppm","Input image"); + + // Read pre-blurring variance from the command line (or set it to 1.0 if option '-blur' is not provided). + const double sigma = cimg_option("-blur",1.0,"Variance of gaussian pre-blurring"); + + // Init variables + //---------------- + + // Load an image, transform it to a color image (if necessary) and blur it with the standard deviation sigma. + const CImg image = CImg<>(file_i).normalize(0,255).blur((float)sigma).resize(-100,-100,1,3); + + // Create two display window, one for the image, the other for the color profile. + CImgDisplay + main_disp(image,"Color image (Try to move mouse pointer over)",0), + draw_disp(500,400,"Color profile of the X-axis",0); + + // Define colors used to plot the profile, and a hatch to draw the vertical line + unsigned int hatch = 0xF0F0F0F0; + const unsigned char + red[] = { 255,0,0 }, + green[] = { 0,255,0 }, + blue [] = { 0,0,255 }, + black[] = { 0,0,0 }; + + // Enter event loop. This loop ends when one of the two display window is closed or + // when the keys 'ESC' or 'Q' are pressed. + while (!main_disp.is_closed() && !draw_disp.is_closed() && + !main_disp.is_keyESC() && !draw_disp.is_keyESC() && !main_disp.is_keyQ() && !draw_disp.is_keyQ()) { + + // Handle display window resizing (if any) + if (main_disp.is_resized()) main_disp.resize().display(image); + draw_disp.resize(); + + if (main_disp.mouse_x()>=0 && main_disp.mouse_y()>=0) { // Mouse pointer is over the image + + const int + xm = main_disp.mouse_x(), // X-coordinate of the mouse pointer over the image + ym = main_disp.mouse_y(), // Y-coordinate of the mouse pointer over the image + xl = xm*draw_disp.width()/main_disp.width(), // Corresponding X-coordinate of the hatched line + x = xm*image.width()/main_disp.width(), // Corresponding X-coordinate of the pointed pixel in the image + y = ym*image.height()/main_disp.height(); // Corresponding Y-coordinate of the pointex pixel in the image + + // Retrieve color component values at pixel (x,y) + const unsigned int + val_red = image(x,y,0), + val_green = image(x,y,1), + val_blue = image(x,y,2); + + // Create and display the image of the intensity profile + CImg(draw_disp.width(),draw_disp.height(),1,3,255). + draw_grid(-50*100.0f/image.width(),-50*100.0f/256,0,0,false,true,black,0.2f,0xCCCCCCCC,0xCCCCCCCC). + draw_axes(0,image.width() - 1.0f,255.0f,0.0f,black). + draw_graph(image.get_shared_row(y,0,0),red,1,1,0,255,1). + draw_graph(image.get_shared_row(y,0,1),green,1,1,0,255,1). + draw_graph(image.get_shared_row(y,0,2),blue,1,1,0,255,1). + draw_text(30,5,"Pixel (%d,%d)={%d %d %d}",black,0,1,16, + main_disp.mouse_x(),main_disp.mouse_y(),val_red,val_green,val_blue). + draw_line(xl,0,xl,draw_disp.height() - 1,black,0.5f,hatch=cimg::rol(hatch)). + display(draw_disp); + } else + // else display a text in the profile display window. + CImg(draw_disp.width(),draw_disp.height()).fill(255). + draw_text(draw_disp.width()/2 - 130,draw_disp.height()/2 - 5,"Mouse pointer is outside the image", + black,0,1,16).display(draw_disp); + + // Temporize event loop + cimg::wait(20); + } + + return 0; +} diff --git a/examples/use_RGBclass.cpp b/examples/use_RGBclass.cpp new file mode 100644 index 000000000..7129d2d32 --- /dev/null +++ b/examples/use_RGBclass.cpp @@ -0,0 +1,138 @@ +/* + # + # File : use_RGBclass.cpp + # ( C++ source file ) + # + # Description : A small code that shows how to write a CImg plugin to + # handle color image manipulation using a user-defined RGB + # class, instead of using classical pixel access of CImg + # with operator(). + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : David Tschumperlé + # ( http://tschumperle.users.greyc.fr/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#ifndef cimg_plugin +#define cimg_plugin "examples/use_RGBclass.cpp" // Path of the plugin is relative to the CImg.h file +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main() { + + // Load images. + CImg img1(cimg_imagepath "milla.bmp"); + const CImg img2 = CImg(cimg_imagepath "parrot.ppm").resize(img1,3); + const float default_color[] = { 30,30,80 }; + + // Modify 'img1' using the RGB pixel accessor. + cimg_forXY(img1,x,y) + if (!((x*y)%31)) img1.RGB_at(x,y) = default_color; + else if ((x+y)%2) img1.RGB_at(x,y) = img2.RGB_at(x,y); + img1.display(); + + // Quit. + return 0; +} + +#else + +//------------------------- +// Start of the plugin code +//------------------------- + +// Define a simple structure of *references* to R,G,B values. +//----------------------------------------------------------- +// (Feel free to add your own operators in there !) +struct st_RGB { + T _R,_G,_B,&R,&G,&B; + + // Construct from R,G,B references of values. + st_RGB(const T& nR, const T& nG, const T& nB):_R(nR),_G(nG),_B(nB),R(_R),G(_G),B(_B) {} + st_RGB(T& nR, T& nG, T& nB):R(nR),G(nG),B(nB) {} + + // Copy constructors. + st_RGB(const st_RGB& rgb):_R(rgb.R),_G(rgb.G),_B(rgb.B),R(_R),G(_G),B(_B) {} + template + st_RGB(const t& rgb):_R(rgb[0]),_G(rgb[1]),_B(rgb[2]) {} + + // Assignement operator. + st_RGB& operator=(const st_RGB& rgb) { + R = (T)(rgb[0]); G = (T)(rgb[1]); B = (T)(rgb[2]); + return *this; + } + template + st_RGB& operator=(const t& rgb) { + R = (T)(rgb[0]); G = (T)(rgb[1]); B = (T)(rgb[2]); + return *this; + } + + // Data (R,G or B) access operator. + const T& operator[](const unsigned int i) const { + return i==2?B:(i==1?G:R); + } + T& operator[](const unsigned int i) { + return i==2?B:(i==1?G:R); + } + + // Print instance on the standard error. + const st_RGB& print() const { + std::fprintf(stderr,"{ %d %d %d }\n",(int)R,(int)G,(int)B); + return *this; + } +}; + +// Define CImg member functions which return pixel values as st_RGB instances. +//-------------------------------------------------------------------------------- +const st_RGB RGB_at(const int x, const int y=0, const int z=0) const { + const int whz = width()*height()*depth(); + const T *const pR = data() + x + y*width() + z*width()*height(), *const pG = pR + whz, *const pB = pG + whz; + return st_RGB(*pR,*pG,*pB); +} + +st_RGB RGB_at(const int x, const int y=0, const int z=0) { + const int whz = width()*height()*depth(); + T *const pR = data() + x + y*width() + z*width()*height(), *const pG = pR + whz, *const pB = pG + whz; + return st_RGB(*pR,*pG,*pB); +} + +//------------------------ +// End of the plugin code +//------------------------ +#endif diff --git a/examples/use_chlpca.cpp b/examples/use_chlpca.cpp new file mode 100644 index 000000000..6b769d06a --- /dev/null +++ b/examples/use_chlpca.cpp @@ -0,0 +1,70 @@ +/* + # + # File : use_chlpca.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/chlpca.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jerome Boulanger + # ( http://www.irisa.fr/vista/Equipe/People/Jerome.Boulanger.html ) + # + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#define cimg_plugin "plugins/chlpca.h" +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + cimg_usage("Patch based denoising "); + const char *file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input image"); + const int p = cimg_option("-p",3,"patch radius"); + const int w = cimg_option("-w",10,"window radius"); + const float lambda_min = cimg_option("-l",(float)2.f,"component selection threshold"); + const int nstep = cimg_option("-nstep",5,"sub-sampling"); + const float nsim = cimg_option("-nsim",(float)5.f,"dictionnary size a multiple of the patch size"); + const float noise_std = cimg_option("-sigma",(float)-1.f,"noise std (-1:estimated)"); + const bool use_svd = cimg_option("-svd",(float)-1.f,"use svd for computing PCA"); + const char *file_o = cimg_option("-o",(char*)NULL,"Output file"); + CImg<> img(file_i); + img = img.get_chlpca(p, w, nstep, nsim, lambda_min, noise_std, use_svd); + img.display(); + if (file_o) img.save(file_o); + return 0; +} diff --git a/examples/use_cimgIPL.cpp b/examples/use_cimgIPL.cpp new file mode 100644 index 000000000..821eb3c96 --- /dev/null +++ b/examples/use_cimgIPL.cpp @@ -0,0 +1,155 @@ +/* +# +# File : use_cimgIPL.cpp +# ( C++ source file ) +# +# Description : Example of use for the CImg plugin 'plugins/cimgIPL.h'. +# This file is a part of the CImg Library project. +# ( http://cimg.eu ) +# +# Copyright : newleft (haibo.zheng@gmail.com) +# newleftist@hotmail.com +# +# License : CeCILL v2.0 +# ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) +# +# This software is governed by the CeCILL license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL +# license as circulated by CEA, CNRS and INRIA at the following URL +# "http://www.cecill.info". +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# In this respect, the user's attention is drawn to the risks associated +# with loading, using, modifying and/or developing or reproducing the +# software by the user in light of its specific status of free software, +# that may mean that it is complicated to manipulate, and that also +# therefore means that it is reserved for developers and experienced +# professionals having in-depth computer knowledge. Users are therefore +# encouraged to load and test the software's suitability as regards their +# requirements in conditions enabling the security of their systems and/or +# data to be ensured and, more generally, to use and operate it in the +# same conditions as regards security. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL license and that you accept its terms. +# +*/ + +#include +#include +#include + +#pragma comment(lib, "cv.lib") +#pragma comment(lib, "cvaux.lib") +#pragma comment(lib, "cxcore.lib") +#pragma comment(lib, "highgui.lib") + +#define cimg_plugin1 "plugins\cimgIPL.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main(int argc, char* argv[]) { + int wid = 0; + CImg<> cImg(argv[1]); + cImg.display("cImg"); + IplImage* ipl; + //ipl = cvLoadImage(argv[1], -1); + ipl = cImg.get_IPL(); + + IplImage *ipl8; + IplImage *ipl16, *ipl32, *ipl64; + IplImage *ipl16to8, *ipl32to8, *ipl64to8; + cvNamedWindow("origin", wid++); + cvNamedWindow("8bit_OK", wid++); + cvNamedWindow("16bit", wid++); + cvNamedWindow("32bit", wid++); + cvNamedWindow("64bit", wid++); + cvNamedWindow("16bitto8", wid++); + cvNamedWindow("32bitto8", wid++); + cvNamedWindow("64bitto8", wid++); + + cvShowImage("origin", ipl); + + ipl8 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_8U, ipl->nChannels); + cvConvert(ipl, ipl8); + + ipl16 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_16U, ipl->nChannels); + cvConvert(ipl, ipl16); + + ipl32 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_32F, ipl->nChannels); + cvConvert(ipl, ipl32); + + ipl64 = cvCreateImage(cvGetSize(ipl), IPL_DEPTH_64F, ipl->nChannels); + cvConvert(ipl, ipl64); + + cvShowImage("8bit_OK", ipl8);// this canbe show properly + cvShowImage("16bit", ipl16);// maynot display properly, that's bug of cvShowImage + cvShowImage("32bit", ipl32);// maynot display properly, that's bug of cvShowImage + cvShowImage("64bit", ipl64);// maynot display properly, that's bug of cvShowImage + + // cvShowImage can only display IplImage with IPL_DEPTH_8X, proved by the following codes + ipl16to8 = cvCreateImage(cvGetSize(ipl16), IPL_DEPTH_8U, ipl16->nChannels); + cvConvert(ipl16, ipl16to8); + ipl32to8 = cvCreateImage(cvGetSize(ipl32), IPL_DEPTH_8U, ipl32->nChannels); + cvConvert(ipl32, ipl32to8); + ipl64to8 = cvCreateImage(cvGetSize(ipl64), IPL_DEPTH_8U, ipl64->nChannels); + cvConvert(ipl64, ipl64to8); + cvShowImage("16bitto8", ipl16to8); // diplay ok + cvShowImage("32bitto8", ipl32to8); // diplay ok + cvShowImage("64bitto8", ipl64to8); // diplay ok + + // now, we test ipl8->cImg, ipl16->cImg, ipl32->cImg, ipl64->cImg + cImg.assign(ipl8); + cImg.display("ipl8->cimg"); + cImg.assign(ipl16); + cImg.display("ipl16->cimg"); + cImg.assign(ipl32); + cImg.display("ipl32->cimg"); + cImg.assign(ipl64); + cImg.display("ipl64->cimg"); + + cvWaitKey(0); + + // test another construct + CImg testCImg1(ipl16); + testCImg1.display("testCImg1"); + CImg testCImg2(ipl32); + testCImg2.display("testCImg2"); + CImg testCImg3(ipl64); + testCImg3.display("testCImg3"); + + CImg testCImg4(ipl16); + testCImg4.display("testCImg4"); + CImg testCImg5(ipl32); + testCImg5.display("testCImg5"); + CImg testCImg6(ipl64); + testCImg6.display("testCImg6"); + + cvReleaseImage(&ipl); + cvReleaseImage(&ipl8); + cvReleaseImage(&ipl16); + cvReleaseImage(&ipl32); + cvReleaseImage(&ipl64); + cvReleaseImage(&ipl16to8); + cvReleaseImage(&ipl32to8); + cvReleaseImage(&ipl64to8); + + cvDestroyWindow("origin"); + cvDestroyWindow("8bit_OK"); + cvDestroyWindow("16bit"); + cvDestroyWindow("32bit"); + cvDestroyWindow("64bit"); + cvDestroyWindow("16bitto8"); + cvDestroyWindow("32bitto8"); + cvDestroyWindow("64bitto8"); + + return 0; +} diff --git a/examples/use_cimgmatlab.cpp b/examples/use_cimgmatlab.cpp new file mode 100644 index 000000000..08c06777d --- /dev/null +++ b/examples/use_cimgmatlab.cpp @@ -0,0 +1,102 @@ +/*----------------------------------------------------------------------- + + File : use_cimgmatlab.cpp + + Description: Example of use for the CImg plugin 'plugins/cimgmatlab.h' + which allows to use CImg in order to develop matlab external + functions (mex functions). + User should be familiar with Matlab C/C++ mex function concepts, + as this file is by no way a mex programming tutorial. + + This simple example implements a mex function that can be called + as + + - v = cimgmatlab_cannyderiche(u,s) + - v = cimgmatlab_cannyderiche(u,sx,sy) + - v = cimgmatlab_cannyderiche(u,sx,sy,sz) + + The corresponding m-file is cimgmatlab_cannyderiche.m + + + Copyright : Francois Lauze - http://www.itu.dk/people/francois + This software is governed by the Gnu Lesser General Public License + see http://www.gnu.org/copyleft/lgpl.html + + The plugin home page is at + http://www.itu.dk/people/francois/cimgmatlab.html + + for the compilation: using the mex utility provided with matlab, just + remember to add the -I flags with paths to CImg.h and/or cimgmatlab.h. + The default lcc cannot be used, it is a C compiler and not a C++ one! + +--------------------------------------------------------------------------*/ + +#include +#define cimg_plugin "plugins/cimgmatlab.h" +#include + +void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { + if (nrhs < 2) mexErrMsgTxt("No enough input arguments."); + if (nrhs > 4) mexErrMsgTxt("Too many input arguments."); + cimg_library::CImg<> u(prhs[0],true); + if (nrhs == 2) { + const float s = (float)mxGetScalar(prhs[1]); + plhs[0] = u.get_blur(s).toMatlab(); + } else if (nrhs == 3) { + const float sx = (float)mxGetScalar(prhs[1]); + const float sy = (float)mxGetScalar(prhs[2]); + plhs[0] = u.get_blur(sx,sy,0).toMatlab(); + } else if (nrhs == 4) { + const float sx = (float)mxGetScalar(prhs[1]); + const float sy = (float)mxGetScalar(prhs[2]); + const float sz = (float)mxGetScalar(prhs[3]); + plhs[0] = u.get_blur(sx,sy,sz).toMatlab(); + } +} + +/*------------------------------------------------------------------ + + SPECIAL NOTE : + ------------- + + How to read a .mat file using plugin 'cimgmatlab.h' ? + (contribution by Vo Duc Khanh/Denso IT Lab, Tokyo, Japan). + + #include + #include + #include + + #define cimg_plugin "cimgmatlab.h" + + #include "CImg.h" + #include + #include + + ......... + + using namespace cimg_library; + using namespace std; + + // Load input images (125700 images) from training database 'BmpTrainingDb.mat' + MATFile *pmat, *pmat_out; + mxArray *pa, *pa_out; + const char data_path[256] = ".\\BmpTrainingDb.mat\0"; + const char *var_name; + + pmat = matOpen(data_path, "r"); + if (pmat == NULL) { + cout << "Error opening file " << data_path << endl; + return (1); + } + + pa = matGetNextVariable(pmat, &var_name); + if (pa == NULL){ + cout << "Error reading in file " << data_path << endl; + return (1); + } + + CImg train_db(pa,false); + ........ + + + -----------------------------------------------------------------------------*/ diff --git a/examples/use_cimgmatlab.m b/examples/use_cimgmatlab.m new file mode 100644 index 000000000..30abf6612 --- /dev/null +++ b/examples/use_cimgmatlab.m @@ -0,0 +1,33 @@ +/*----------------------------------------------------------------------- + File : use_cimgmatlab.m + + Description: Example of use for the CImg plugin 'plugins/cimgmatlab.h' + which allows to use CImg in order to develop matlab external + functions (mex functions). + User should be familiar with Matlab C/C++ mex function concepts, + as this file is by no way a mex programming tutorial. + + This simple example implements a mex function that can be called + as + + - v = cimgmatlab_cannyderiche(u,s) + - v = cimgmatlab_cannyderiche(u,sx,sy) + - v = cimgmatlab_cannyderiche(u,sx,sy,sz) + + The corresponding m-file is cimgmatlab_cannyderiche.m + + + Copyright : Francois Lauze - http://www.itu.dk/people/francois + This software is governed by the Gnu General Public License + see http://www.gnu.org/copyleft/gpl.html + + The plugin home page is at + http://www.itu.dk/people/francois/cimgmatlab.html + + for the compilation: using the mex utility provided with matlab, just + remember to add the -I flags with paths to CImg.h and/or cimgmatlab.h. + The default lcc cannot be used, it is a C compiler and not a C++ one! +--------------------------------------------------------------------------*/ + +function v = cimgmatlab_cannyderiche(u,sx,sy,sz) + diff --git a/examples/use_draw_gradient.cpp b/examples/use_draw_gradient.cpp new file mode 100644 index 000000000..d87470c49 --- /dev/null +++ b/examples/use_draw_gradient.cpp @@ -0,0 +1,138 @@ +/* + # + # File : use_draw_gradient.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/draw_gradient.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jerome Boulanger + # ( http://www.ricam.oeaw.ac.at/people/page.cgi?firstn=Jerome;lastn=Boulanger ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#define cimg_plugin "plugins/draw_gradient.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//--------------- +int main(int argc,char **argv) { + + // Read command line arguments + //---------------------------- + cimg_usage("Example of the use of draw_gradient CImg plugin"); + const char *const file_i = cimg_option("-i",(char*)0,"Input image"); + const int shape = cimg_option("-s",1,"shape [0,6]"); + const int profile = cimg_option("-p",0,"profile [0,7]"); + + // Define an image + CImg img; + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + + // Define the color of the gradient + CImg col(3); + const unsigned char col1[3] = { 0,0,255 }, col2[3] = { 255,255,255 }; + CImgDisplay disp(img,"Click and drag to create color gradient",0); + while (!disp.is_closed() && !disp.key()) { + + // Get a vector direction from the user. + const CImg selection = img.get_select(disp,1); + + // Draw a gradient using the selected coordinated. + col.rand(100,255); + printf("Gradient with %s from color (%d,%d,%d) to (%d,%d,%d)\n", + CImg<>::get_gradient_str(shape,profile),col(0),col(1),col(2),col1[0],col1[1],col2[2]); + img.draw_gradient(selection(0),selection(1),selection(3),selection(4), + col.data(),col1,shape,profile,.7f).display(disp); + } + + // color 0 to transparency + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + img.display(disp); + disp.show().flush(); + while (!disp.is_closed() && !disp.key()) { + + // Get a vector direction from the user. + const CImg selection = img.get_select(disp,1); + + // Draw a gradient using the selected coordinated. + col.rand(100,255); + printf("Gradient with %s from color (%d,%d,%d) to transparency\n", + CImg<>::get_gradient_str(shape,profile),col(0),col(1),col(2)); + img.draw_gradient(selection(0),selection(1),selection(3),selection(4), + col.data(),0,shape,profile,.7f).display(disp); + } + + + // transparency to color 1 + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + img.display(disp); + disp.show().flush(); + while (!disp.is_closed() && !disp.key()) { + + // Get a vector direction from the user. + const CImg selection = img.get_select(disp,1); + + // Draw a gradient using the selected coordinated. + col.rand(100,255); + printf("Gradient with %s from transparency to color (%d,%d,%d)\n", + CImg<>::get_gradient_str(shape,profile),col(0),col(1),col(2)); + img.draw_gradient(selection(0),selection(1),selection(3),selection(4), + 0,col.data(),shape,profile,.7f).display(disp); + } + + // random + if (file_i) img.load(file_i).resize(-100,-100,-100,3); + else img.assign(300,200,1,3,0); + disp.set_title("Random color gradient").show().flush(); + CImg visu(img); + visu.display(disp); + while (!disp.is_closed() && !disp.key()) { + const int + x = (int)(cimg::rand()*visu.width()), + y = (int)(cimg::rand()*visu.height()), + rx = (int)((cimg::rand()*25 + 5)*(cimg::rand()>.5?-1:1)), + ry = (int)((cimg::rand()*25 + 5)*(cimg::rand()>.5?-1:1)); + col.rand(64,255); + img.draw_gradient(x,y,x + rx,y + ry,col.data(),0,shape,profile,.4f); + visu = img; + visu.draw_text(10,10,"%.1ffps",col2,0,1,13,disp.frames_per_second()).display(disp); + if (disp.is_resized()) disp.resize(); + } + + return 0; +} diff --git a/examples/use_jpeg_buffer.cpp b/examples/use_jpeg_buffer.cpp new file mode 100644 index 000000000..65e86ff1d --- /dev/null +++ b/examples/use_jpeg_buffer.cpp @@ -0,0 +1,109 @@ +/* + # + # File : use_jpeg_buffer.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/jpeg_buffer.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Paolo Prete + # ( p4olo_prete(at)yahoo.it ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +// These includes are necessary to get the plug-in compile ! +#include +#include +#include + +// Define plugin and include the CImg Library. +#define cimg_plugin "plugins/jpeg_buffer.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main() { + + // Create a jpeg memory buffer from the content of a jpeg file. + // (this is for testing purposes only) + const char *filename_input = "foo.jpg"; + std::fprintf(stderr," - Reading file '%s'\n",filename_input); + std::FILE *file_input = std::fopen(filename_input,"rb"); + if (!file_input) { std::fprintf(stderr,"Input JPEG file not found !"); std::exit(0); } + + std::fprintf(stderr," - Construct input JPEG-coded buffer\n"); + unsigned buf_size = 500000; // Put the file size here ! + JOCTET *buffer_input = new JOCTET[buf_size]; + if (std::fread(buffer_input,sizeof(JOCTET),buf_size,file_input)) std::fclose(file_input); + // -> 'buffer_input' is now a valid jpeg-coded memory buffer. + + // Create a CImg instance from the jpeg-coded buffer using the plug-in function. + std::fprintf(stderr," - Create CImg instance from JPEG-coded buffer\n"); + CImg img; + img.load_jpeg_buffer(buffer_input, buf_size); + delete[] buffer_input; + + // Do you image processing stuff here .... + // Here, we just mirror the image and write "hello". + std::fprintf(stderr," - Do simple processing\n"); + const unsigned char purple[] = { 255, 0, 0 }; + const unsigned char black[] = { 0, 0, 0 }; + img.mirror('y').draw_text(0,0," Hello! ",purple,black,1,57); + + // Display image to see if everything's fine. + img.display("Using 'jpeg_buffer.h' plugin"); + + // Define a new JOCTET array where the processed image has to be saved + // (we don't know its dimension before compressing it, therefore we have to allocate enough memory ) + std::fprintf(stderr," - Construct output JPEG-coded buffer\n"); + JOCTET *buffer_output = new JOCTET[2*buf_size]; + + // Save processed image into this JOCTET buffer, compressed as jpeg. + // This is done again by using the plug-in function. + img.save_jpeg_buffer(buffer_output,buf_size,60); + // Note that here, the variable 'buf_size' contains the length of the + // data which have been written in the given output buffer. + + // Copy the content of the above array into a new file + // (it should give you a valid JPEG file then !) + const char *filename_output = "foo_output.jpg"; + std::fprintf(stderr," - Save output file '%s'\n",filename_output); + std::FILE* file_output = std::fopen(filename_output,"wb"); + std::fwrite(buffer_output, sizeof(JOCTET), buf_size, file_output); + std::fclose(file_output); + delete[] buffer_output; + + std::fprintf(stderr," - All done !\n"); + return 0; +} diff --git a/examples/use_nlmeans.cpp b/examples/use_nlmeans.cpp new file mode 100644 index 000000000..07c7e56a0 --- /dev/null +++ b/examples/use_nlmeans.cpp @@ -0,0 +1,125 @@ +/* + # + # File : use_nlmeans.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/nlmeans.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jerome Boulanger + # ( http://www.irisa.fr/vista/Equipe/People/Jerome.Boulanger.html ) + # + # Benchmark : (CPU intel pentium 4 2.60GHz) compiled with cimg_debug=0. + # patch lambda* alpha T sigma PSNR + # 3x3 15 9x9 3.6s 20 28.22 + # 5x5 17 15x15 22.2s 20 27.91 + # 7x7 42 21x21 80.0s 20 28.68 + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#define cimg_plugin "plugins/nlmeans.h" +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main(int argc,char **argv) { + + // Read command line argument s + //----------------------------- + cimg_usage("Non-local means denoising algorithm.\n [1] Buades, A. Coll, B. and Morel, J.: A review of image " + "denoising algorithms, with a new one. Multiscale Modeling and Simulation: A SIAM Interdisciplinary " + "Journal 4 (2004) 490-530 \n [2] Gasser, T. Sroka,L. Jennen Steinmetz,C. Residual variance and residual " + "pattern nonlinear regression. Biometrika 73 (1986) 625-659 \n Build : "); + + // input/output and general options + const char *file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input image"); + const char *file_o = cimg_option("-o",(char*)NULL,"Output file"); + const double zoom = cimg_option("-zoom",1.0,"Image magnification"); + const double noiseg = cimg_option("-ng",0.0,"Add gauss noise before aplying the algorithm"); + const double noiseu = cimg_option("-nu",0.0,"Add uniform noise before applying the algorithm"); + const double noises = cimg_option("-ns",0.0,"Add salt&pepper noise before applying the algorithm"); + const unsigned int visu = cimg_option("-visu",1,"Visualization step (0=no visualization)"); + + // non local means options + const int patch_size = cimg_option("-p",1,"Half size of the patch (2p+1)x(2p+1)"); + const float lambda = (float)cimg_option("-lambda",-1.0f,"Bandwidth as defined in [1] (-1 : automatic bandwidth)"); + const double sigma = cimg_option("-sigma",-1,"Noise standard deviation (-1 : robust estimation)"); + const int alpha = cimg_option("-alpha",3,"Neighborhood size (3)"); + const int sampling = cimg_option("-sampling",1,"Sampling of the patch (1: slow, 2: fast)"); + + // Read image + //------------ + CImg<> img; + if (file_i) { + img = CImg<>(file_i); + if (zoom>1) + img.resize((int)(img.width()*zoom),(int)(img.height()*zoom),(int)(img.depth()*zoom),-100,3); + } else throw CImgException("You need to specify at least one input image (option -i)"); + CImg<> original=img; + + // Add some noise + //----------------- + img.noise(noiseg,0).noise(noiseu,1).noise(noises,2); + + // Apply the filter + //--------------------- + cimg_uint64 tic = cimg::time(); + CImg<> dest; + dest = img.get_nlmeans(patch_size,lambda,alpha,sigma,sampling); + cimg_uint64 tac = cimg::time(); + + // Save result + //----------------- + if (file_o) dest.cut(0,255.f).save(file_o); + + // Display (option -visu) + //----------------------- + if (visu){ + fprintf(stderr,"Image computed in %f s \n",(float)(tac - tic)/1000.); + fprintf(stderr,"The pnsr is %f \n", + 20.*std::log10(255./std::sqrt( (dest - original).pow(2).sum()/original.size() ))); + if (noiseg==0 && noiseu==0 && noises==0) + CImgList<>(original,dest,((dest - original)*=2)+=128).display("Original + Restored + Estimated Noise"); + + else { + CImgList<>(original,img,dest,((dest - img)*=2)+=128,((dest - original)*=2)+=128). + display("Original + Noisy + Restored + Estimated Noise + Original Noise"); + } + } + + return 0; +} diff --git a/examples/use_skeleton.cpp b/examples/use_skeleton.cpp new file mode 100644 index 000000000..7004b1f8b --- /dev/null +++ b/examples/use_skeleton.cpp @@ -0,0 +1,119 @@ +/* + # + # File : use_skeleton.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/skeleton.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Francois-Xavier Dupe + # ( http://www.greyc.ensicaen.fr/~fdupe/ ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include +#define cimg_plugin "plugins/skeleton.h" +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Main procedure +//---------------- +int main (int argc, char **argv) { + + cimg_usage("Compute the skeleton of a shape, using Hamilton-Jacobi equations"); + + // Read command line arguments + cimg_help("Input/Output options\n" + "--------------------"); + const char* file_i = cimg_option("-i",cimg_imagepath "milla.bmp","Input (black&white) image"); + const int median = cimg_option("-median",0,"Apply median filter"); + const bool invert = cimg_option("-inv",false,"Invert image values"); + const char* file_o = cimg_option("-o",(char*)0,"Output skeleton image"); + const bool display = cimg_option("-visu",true,"Display results"); + + cimg_help("Skeleton computation parameters\n" + "-------------------------------"); + const float thresh = cimg_option("-t",-0.3f,"Threshold"); + const bool curve = cimg_option("-curve",false,"Create medial curve"); + + cimg_help("Torsello correction parameters\n" + "------------------------------"); + const bool correction = cimg_option("-corr",false,"Torsello correction"); + const float dlt1 = 2; + const float dlt2 = cimg_option("-dlt",1.0f,"Discrete step"); + + // Load the image (forcing it to be scalar with 2 values { 0,1 }). + CImg image0(file_i), image = image0.get_norm().quantize(2).normalize(0.0f,1.0f).round(); + if (median) image.blur_median(median); + if (invert) (image-=1)*=-1; + if (display) (image0.get_normalize(0,255),image.get_normalize(0,255)).display("Input image - Binary image"); + + // Compute distance map. + CImgList visu; + CImg distance = image.get_distance(0); + if (display) visu.insert(distance); + + // Compute the gradient of the distance function, and the flux (divergence) of the gradient field. + const CImgList grad = distance.get_gradient("xyz"); + CImg flux = image.get_flux(grad,1,1); + if (display) visu.insert(flux); + + // Use the Torsello correction of the flux if necessary. + if (correction) { + CImg + logdensity = image.get_logdensity(distance,grad,flux,dlt1), + nflux = image.get_corrected_flux(logdensity,grad,flux,dlt2); + if (display) visu.insert(logdensity).insert(nflux); + flux = nflux; + } + + if (visu) { + cimglist_apply(visu,normalize)(0,255); + visu.display(visu.size()==2?"Distance function - Flux":"Distance function - Flux - Log-density - Corrected flux"); + } + + // Compute the skeleton + const CImg skel = image.get_skeleton(flux,distance,curve,thresh); + if (display) { + (image0.resize(-100,-100,1,3)*=0.7f).get_shared_channel(1)|=skel*255.0; + image0.draw_image(0,0,0,0,image*255.0,0.5f).display("Image + Skeleton"); + } + + // Save output image if necessary. + if (file_o) skel.save(file_o); + + return 0; +} diff --git a/examples/use_tiff_stream.cpp b/examples/use_tiff_stream.cpp new file mode 100644 index 000000000..37b8e3cb4 --- /dev/null +++ b/examples/use_tiff_stream.cpp @@ -0,0 +1,81 @@ +/* + # + # File : use_tiff_stream.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/jpeg_buffer.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Wolf Blecher + # ( Wolf.Blecher(at)sirona.com ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + + +#include +// These includes are necessary to get the plug-in compile ! Don't forget to link with 'libtiff' and 'libtiffxx' ! +#include "tiffio.h" +#include "tiffio.hxx" + +// Define plugin and include the CImg Library. +#define cimg_plugin "plugins/tiff_stream.h" +#include "CImg.h" +using namespace cimg_library; + +// Main procedure +//---------------- +int main() { + + std::ifstream inFile("input.tif", std::ifstream::in | std::ifstream::binary); + std::ofstream outFile("outFile.tif", std::ofstream::out | std::ifstream::binary); + + if (!inFile.good()) + { + std::cout << "Error Reading from infile" << std::endl; + } + + cimg_library::CImg imgIn; + imgIn.load_tiff(&inFile); + imgIn.display(); + CImg imgOut = imgIn.save_tiff(&outFile, 2U); + imgOut.display(); + + inFile.close(); + outFile.close(); + + inFile.open("outFile.tif", std::ifstream::in | std::ifstream::binary); + imgIn.load_tiff(&inFile); + imgIn.display(); + inFile.close(); + return 0; +} diff --git a/examples/use_tinymatwriter.cpp b/examples/use_tinymatwriter.cpp new file mode 100644 index 000000000..90d63c742 --- /dev/null +++ b/examples/use_tinymatwriter.cpp @@ -0,0 +1,135 @@ +/* + # + # File : use_tinymatwriter.cpp + # ( C++ source file ) + # + # Description : Example of use for the CImg plugin 'plugins/tinymatwriter.h'. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Copyright : Jan W. Krieger + # ( https://github.com/jkriege2 ) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +/* + This Matlab/Octave script tests the output: + clear all + more off + + subplot(2,2,1) + load("mat432.mat", "-v6") + disp('mat432.mat: CImg_image=') + disp(CImg_image) + imagesc(CImg_image(:,:,1)) + colorbar + + subplot(2,2,2) + load("mat432i16.mat", "-v6") + disp('mat432i16.mat: CImg_image=') + disp(CImg_image) + imagesc(double(CImg_image(:,:,2))) + colorbar + + subplot(2,2,3) + load("matb.mat", "-v6") + disp('matb.mat: CImg_image=') + disp(CImg_image) + imagesc(CImg_image(:,:,4)) + colorbar +*/ + +#include +#include +#include "tinymatwriter.h" +#include + +#define cimg_plugin "plugins/tinymatwriter.h" +#include "../CImg.h" + +using namespace std; +using namespace cimg_library; + +int main(int argc, const char** argv) { + + double mat432[4*3*2]= { + 1,2,3, + 4,5,6, + + 10,20,30, + 40,50,60, + + 100,200,300, + 400,500,600, + + 1000,2000,3000, + 4000,5000,6000, + }; + + int16_t mat432i16[4*3*2]= { + 1,2,3, + 4,5,6, + + 10,20,30, + 40,50,60, + + 100,200,300, + 400,500,600, + + 1000,-2000,3000, + -4000,5000,-6000, + }; + + // a boolean matrix + bool matb[4*3*2] = { + true,false,true, + false,true,false, + + true,true,true, + false,false,false, + + true,false,true, + true,false,true, + + true,true,false, + false,true,true + }; + + cimg_library::CImg ciD(mat432, 3,2,4); + cimg_library::CImg ciI16(mat432i16, 3,2,4); + cimg_library::CImg ciB(matb, 3,2,4); + + ciD.save_tinymat("mat432.mat"); + ciI16.save_tinymat("mat432i16.mat"); + ciB.save_tinymat("matb.mat"); + return 0; +} diff --git a/examples/wavelet_atrous.cpp b/examples/wavelet_atrous.cpp new file mode 100644 index 000000000..5f5628d47 --- /dev/null +++ b/examples/wavelet_atrous.cpp @@ -0,0 +1,191 @@ +/* + # + # File : wavelet_atrous.cpp + # ( C++ source file ) + # + # Description : Performs a 2D or 3D 'a trous' wavelet transform + # (using a cubic spline) on an image or a video sequence. + # This file is a part of the CImg Library project. + # ( http://cimg.eu ) + # + # Author : Renaud Peteri + # ( Renaud.Peteri(at)mines-paris.org ) + # Andrea Onofri + # ( Andrea.Onofri(at)teletu.it ) + # + # Institution : CWI, Amsterdam + # + # Date : February 2005 + # + # References : Starck, J.-L., Murtagh, F. and Bijaoui, A., + # Image Processing and Data Analysis: The Multiscale Approach, + # Cambridge University Press, 1998. + # (Hardback and softback, ISBN 0-521-59084-1 and 0-521-59914-8.) + # + # License : CeCILL v2.0 + # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html ) + # + # This software is governed by the CeCILL license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL + # license as circulated by CEA, CNRS and INRIA at the following URL + # "http://www.cecill.info". + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # In this respect, the user's attention is drawn to the risks associated + # with loading, using, modifying and/or developing or reproducing the + # software by the user in light of its specific status of free software, + # that may mean that it is complicated to manipulate, and that also + # therefore means that it is reserved for developers and experienced + # professionals having in-depth computer knowledge. Users are therefore + # encouraged to load and test the software's suitability as regards their + # requirements in conditions enabling the security of their systems and/or + # data to be ensured and, more generally, to use and operate it in the + # same conditions as regards security. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL license and that you accept its terms. + # +*/ + +#include "CImg.h" +using namespace cimg_library; +#ifndef cimg_imagepath +#define cimg_imagepath "img/" +#endif + +// Define convolution mask. +CImg mask(const unsigned char dirIdx, const unsigned char scale) { + const int + d1 = 1 << (scale-1), + d2 = 1 << scale, + c = d2, + vecLen = (1 << (scale + 1)) + 1; + + const float + valC = 0.375f, // 6/16 + valD1 = 0.25f, // 4/16 + valD2 = 0.0625f; // 1/16 + + switch(dirIdx) { + case 0 : { // x + CImg m(vecLen,1,1,1,0); + m(c) = valC; + m(c - d1) = m(c + d1) = valD1; + m(c - d2) = m(c + d2) = valD2; + return m; + } + case 1: { // y + CImg m(1,vecLen,1,1,0); + m(0,c) = valC; + m(0,c - d1) = m(0,c + d1) = valD1; + m(0,c - d2) = m(0,c + d2) = valD2; + return m; + } + case 2: { // t + CImg m(1,1,vecLen,1,0); + m(0,0,c) = valC; + m(0,0,c - d1) = m(0,0,c + d1) = valD1; + m(0,0,c - d2) = m(0,0,c + d2) = valD2; + return m; + } + default: throw CImgException("Error, unknow decompostion axe, dirIdx = '%c'.",dirIdx); + } +} + +/*------------------ + Main procedure + ----------------*/ +int main(int argc,char **argv) { + cimg_usage("Perform an 'a trous' wavelet transform (using a cubic spline) on an image or on a video sequence.\n" + "This wavelet transform is undecimated and produces 2 images/videos at each scale. For an example of\n" + "decomposition on a video, try -i img/trees.inr (sequence from the MIT).\n" + "\t(Type -h for help)"); + + // Read command line parameters + const char + *name_i = cimg_option("-i",cimg_imagepath "parrot.ppm","Input image or video"), + *name_o = cimg_option("-o","","Name of the multiscale analysis output"), + *axe_dec = cimg_option("-axe",(char*)0, + "Perform the multiscale decomposition in just one direction ('x', 'y' or 't')"); + const unsigned int + s = cimg_option("-s",3,"Scale of decomposition"); + + const bool help = cimg_option("-h",false,"Display Help"); + if (help) std::exit(0); + + // Initialize Image Data + std::fprintf(stderr," - Load image sequence '%s'...\n",cimg::basename(name_i)); + const CImg texture_in(name_i); + CImg mask_conv; + CImgList res(s,texture_in.width(),texture_in.height(),texture_in.depth()); + CImgList wav(s,texture_in.width(),texture_in.height(),texture_in.depth()); + cimglist_for(res,l) { res(l).fill(0.0); wav(l).fill(0.0); } + unsigned int i; + + int firstDirIdx = 0,lastDirIdx = 2; + if (axe_dec) { // The multiscale decomposition will be performed in just one direction + char c = cimg::lowercase(axe_dec[0]); + switch(c) { + case 'x': firstDirIdx = 0; break; + case 'y': firstDirIdx = 1; break; + case 't': firstDirIdx = 2; break; + default: throw CImgException("Error, unknow decompostion axe '%c', try 'x', 'y' or 't'",c); + } + lastDirIdx = firstDirIdx; // Only one direction + } + + for (i = 0; i%CImg" specialization="[specialization]" newinstance="[new-instance version]" const="[const version]" inplace="[in-place version]" overloading="[overloading]" simplification="[simplification]" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = NO + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = NO + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = NO + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= NO + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = NO + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = NO + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = NO + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../CImg.h CImg_documentation.h + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = _* + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = img/reference + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = reference + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = header_doxygen.html + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = footer_doxygen.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = YES + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Namespace. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Virtual Folders. + +QHP_VIRTUAL_FOLDER = doc + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file . + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NONE + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = cimg_verbosity=3 cimg_display=0 + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/html/CImg_documentation.h b/html/CImg_documentation.h new file mode 100644 index 000000000..fcdd056c4 --- /dev/null +++ b/html/CImg_documentation.h @@ -0,0 +1,1019 @@ +/*------------------------------------------------------------------------ +# +# File : CImg_documentation.h +# +# Description : Extra documentation file for the CImg Library. +# Used by doxygen to generate the reference documentation. +# ( http://cimg.eu ) +# +# Copyright : David Tschumperlé +# ( http://tschumperle.users.greyc.fr/ ) +# +# +-------------------------------------------------------------------------*/ + +/*----------------------------------- + + Main reference documentation page + + -------------------------------------*/ + +/** + \mainpage + + This is the reference documentation of the CImg Library, + the C++ template image processing library. + This documentation have been generated using the tool doxygen. + It contains a detailed description of all classes and functions of the %CImg Library. + + Use the menu above to navigate through the documentation pages. + As a first step, you may look at the list of available modules. + + You may be interested also in the + presentation slides presenting an overview + of the %CImg Library capabilities. + +**/ + +/*----------------------------------- + + CImg Library overview + + -------------------------------------*/ + +/** \addtogroup cimg_overview CImg Library Overview */ +/*@{*/ +/** + \page overview CImg Library Overview + + The CImg Library is an image processing library, designed for C++ programmers. + It provides useful classes and functions to load/save, display and process various types of images. + + \section s1 Library structure + + The %CImg Library consists in a single header file CImg.h providing a set of C++ template classes that + can be used in your own sources, to load/save, process and display images or list of images. + Very portable (Unix/X11,Windows, MacOS X, FreeBSD,..), efficient, simple to use, it's a pleasant toolkit + for coding image processing stuff in C++. + + The header file CImg.h contains all the classes and functions that compose the library itself. + This is one originality of the %CImg Library. This particularly means that : + - No pre-compilation of the library is needed, since the compilation of the CImg functions is done at the same time as + the compilation of your own C++ code. + - No complex dependencies have to be handled : Just include the CImg.h file, and you get a working C++ image processing toolkit. + - The compilation is done on the fly : only CImg functionalities really used by your program are compiled and appear in the + compiled executable program. This leads to very compact code, without any unused stuff. + - Class members and functions are inlined, leading to better performance during the program execution. + + The %CImg Library is structured as follows : + + - All library classes and functions are defined in the namespace \ref cimg_library. This namespace + encapsulates the library functionalities and avoid any class name collision that could happen with + other includes. Generally, one uses this namespace as a default namespace : + \code + #include "CImg.h" + using namespace cimg_library; + ... + \endcode + + - The namespace \ref cimg_library::cimg defines a set of \e low-level functions and variables used by the library. + Documented functions in this namespace can be safely used in your own program. But, \b never use the + \ref cimg_library::cimg namespace as a default namespace, since it contains functions whose names are already + defined in the standard C/C++ library. + + - The class \ref cimg_library::CImg represents images up to 4-dimensions wide, containing pixels of type \c T + (template parameter). This is actually the main class of the library. + + - The class \ref cimg_library::CImgList represents lists of cimg_library::CImg images. It can be used for instance + to store different frames of an image sequence. + + - The class \ref cimg_library::CImgDisplay is able to display images or image lists into graphical display windows. + As you may guess, the code of this class is highly system-dependent but this is transparent for the programmer, + as environment variables are automatically set by the CImg library (see also \ref cimg_environment). + + - The class \ref cimg_library::CImgException (and its subclasses) are used by the library to throw exceptions + when errors occur. Those exceptions can be caught with a try { ..} catch (CImgException) { .. } block. + Subclasses define precisely the type of encountered errors. + + Knowing these four classes is \b enough to get benefit of the %CImg Library functionalities. + + + \section s2 CImg version of "Hello world". + + Below is some very simple code that creates a "Hello World" image. This shows you basically how a CImg program looks like. + + \code + #include "CImg.h" + using namespace cimg_library; + + int main() { + CImg img(640,400,1,3); // Define a 640x400 color image with 8 bits per color component. + img.fill(0); // Set pixel values to 0 (color : black) + unsigned char purple[] = { 255,0,255 }; // Define a purple color + img.draw_text(100,100,"Hello World",purple); // Draw a purple "Hello world" at coordinates (100,100). + img.display("My first CImg code"); // Display the image in a display window. + return 0; + } + \endcode + + Which can be also written in a more compact way as : + + \code + #include "CImg.h" + using namespace cimg_library; + + int main() { + const unsigned char purple[] = { 255,0,255 }; + CImg(640,400,1,3,0).draw_text(100,100,"Hello World",purple).display("My first CImg code"); + return 0; + } + \endcode + + Generally, you can write very small code that performs complex image processing tasks. The %CImg Library is very simple + to use and provides a lot of interesting algorithms for image manipulation. + + \section s3 How to compile ? + + The CImg library is a very light and user-friendly library : only standard system libraries are used. + It avoids handling complex dependencies and problems with library compatibility. + The only thing you need is a (quite modern) C++ compiler : + + - Microsoft Visual Studio.NET and Visual Express Edition : Use the project files and solution files provided in the + %CImg Library package (directory 'compilation/') to see how it works. + - Intel ICL compiler : Use the following command to compile a CImg-based program with ICL : + \code + icl /Ox hello_world.cpp user32.lib gdi32.lib + \endcode + - g++ (MingW windows version) : Use the following command to compile a CImg-based program with g++, on Windows : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -lgdi32 + \endcode + - g++ (Linux version) : Use the following command to compile a CImg-based program with g++, on Linux : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -L/usr/X11R6/lib -lm -lpthread -lX11 + \endcode + - g++ (Solaris version) : Use the following command to compile a CImg-based program with g++, on Solaris : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -lm -lpthread -R/usr/X11R6/lib -lrt -lnsl -lsocket + \endcode + - g++ (Mac OS X version) : Use the following command to compile a CImg-based program with g++, on Mac OS X : + \code + g++ -o hello_world.exe hello_world.cpp -O2 -lm -lpthread -I/usr/X11R6/include -L/usr/X11R6/lib -lm -lpthread -lX11 + \endcode + - Dev-Cpp : Use the project file provided in the CImg library package to see how it works. + + If you are using other compilers and encounter problems, please + write me since maintaining compatibility is one + of the priorities of the %CImg Library. Nevertheless, old compilers that do not respect the C++ standard will not + support the %CImg Library. + + \section s4 What's next ? + + If you are ready to get more, and to start writing more serious programs + with CImg, you are invited to go to the \ref cimg_tutorial section. + +**/ +/*@}*/ + +/*----------------------------------- + + FAQ : Frequently Asked Questions + + -------------------------------------*/ + +/** \addtogroup cimg_faq FAQ : Frequently Asked Questions. */ +/*@{*/ +/** + \page faq FAQ + + \section ssf0 FAQ Summary + + - General information and availability + - What is the CImg Library ? + - What platforms are supported ? + - How is CImg distributed ? + - What kind of people are concerned by CImg ? + - What are the specificities of the CeCILL license ? + - Who is behind CImg ? + + - C++ related questions + - What is the level of C++ knowledge needed to use CImg ? + - How to use CImg in my own C++ program ? + - Why is CImg entirely contained in a single header file ? + + - Other resources + - Translations + + \section sf1 1. General information and availability + + \subsection ssf11 1.1. What is the CImg Library ? + + The CImg Library is an open-source C++ toolkit for image processing.\n + + It mainly consists in a (big) single header file + CImg.h + providing a set of C++ classes and functions that can be used in your own sources, + to load/save, manage/process and display generic images. + It's actually a very simple and pleasant toolkit for coding image processing stuff in C++ : + Just include the header file CImg.h, and you are ready to handle images in your C++ programs. + + \subsection ssf12 1.2. What platforms are supported ? + + CImg has been designed with portability in mind. + It is regularly tested on different architectures and compilers, + and should also work on any decent OS having a decent C++ compiler. + Before each release, the CImg Library is compiled under these different configurations : + \li PC Linux 32/64 bits, with g++. + \li PC Windows 32/64 bits, with Visual C++ Express Edition. + + CImg has a minimal number of dependencies. In its minimal version, it can be compiled only with standard C++ headers. + Anyway, it has interesting extension capabilities and can use external libraries to perform specific tasks more + efficiently (Fourier Transform computation using FFTW for instance). + + \subsection ssf13 1.3. How is CImg distributed ? + + The CImg Library is freely distributed as a complete .zip compressed package, hosted at the + CImg server.\n + The package is distributed under the CeCILL license. + + This package contains : + - The main library file CImg.h (C++ header file). + - Several C++ source code showing examples of using CImg. + - A complete library documentation, in PDF format. + - Additional library plug-ins that can be used to extend + library capabilities for specific uses. + + The CImg Library is a quite lightweight library which is easy to maintain (due to its particular structure), and thus + has a fast rythm of release. A new version of the CImg package is released approximately every three months. + + \subsection ssf14 1.4. What kind of people are concerned by CImg ? + + The CImg library is an image processing library, primarily intended for computer scientists or students working in the fields + of image processing or computer vision, and knowing bases of C++. + As the library is handy and really easy to use, it can be also used by any programmer + needing occasional tools for dealing with images in C++, since there are no standard library yet + for this purpose. + + \subsection ssf15 1.5. What are the specificities of the CeCILL license ? + + The CeCILL license governs the use of the CImg Library. + This is an open-source license which gives you rights to access, use, modify and redistribute the source code, + under certains conditions. + There are two different variants of the CeCILL license used in CImg + (namely + CeCILL and + CeCILL-C, all open-source), + corresponding to different constraints on the source files : + - The CeCILL-C license is the most permissive one, close to + the GNU LGPL license, and applies only on the main library file + CImg.h. + Basically, this license allows to use CImg.h + in a closed-source product without forcing you to redistribute the entire software source code. Anyway, + if one modifies the CImg.h source file, one has to redistribute + the modified version of the file that must be governed by the same CeCILL-C license. + + - The CeCILL license applies to all other files + (source examples, plug-ins and documentation) of the CImg Library package, and is close (even compatible) + with the GNU GPL license. It does not allow the use of these files in closed-source products. + + You are invited to read the complete descriptions of the + the CeCILL-C + and CeCILL licenses before releasing a + software based on the CImg Library. + + \subsection ssf16 1.6. Who is behind CImg ? + + CImg has been started by + David Tschumperlé at the beginning of his PhD thesis, in October 1999. + He is still the main coordinator of the project. + Since the first release, a growing number of contributors has appeared. + Due to the very simple and compact form of the library, submitting a contribution is quite easy and can be + fastly integrated into the supported releases. + List of contributors can be found on the front page. + + \section sf2 2. C++ related questions + + \subsection ssf21 2.1 What is the level of C++ knowledge needed to use CImg ? + + The CImg Library has been designed using C++ templates and object-oriented programming techniques, + but in a very accessible level. + There are only public classes without any derivation (just like C structures) and + there is at most one template parameter for each CImg class (defining the pixel type of the images). + The design is simple but clean, making the library accessible even for non professional C++ programmers, while proposing + strong extension capabilities for C++ experts. + + \subsection ssf22 2.2 How to use CImg in my own C++ program ? + + Basically, you need to add these two lines in your C++ source code, in order + to be able to work with CImg images : + \code + #include "CImg.h" + using namespace cimg_library; + \endcode + + \subsection ssf23 2.3 Why is CImg entirely contained in a single header file ? + + People are often surprised to see that the complete code of the library is contained in a single (big) C++ header file + CImg.h. + There are good practical and technical reasons to do that. Some arguments are listed below to justify this approach, + so (I hope) you won't think this is a awkwardly C++ design of the CImg library :\n + + - First, the library is based on template datatypes (images with generic pixel type), + meaning that the programmer is free to decide what type of image he instanciates in his code. + Even if there are roughly a limited number of fully supported types (basically, the "atomic" types of C++ : unsigned char, int, float, ...), + this is not imaginable to pre-compile the library classes and functions for all possible atomic datatypes, + since many functions and methods can have two or three arguments having different template parameters. + This really means a huge number of possible combinations. The size of the object binary file generated to cover all possible cases + would be just colossal. Is the STL library a pre-compiled one ? No, CImg neither. + CImg is not using a classical .cpp and .h mechanism, just like the STL. + Architectures of C++ template-based libraries are somewhat special in this sense. This is a proven technical fact. + + - Second, why CImg does not have several header files, just like the STL does (one for each class for instance) ? + This would be possible of course. + There are only 4 classes in CImg, the two most important being CImg and CImgList representing respectively + an image and a collection of images. + But contrary to the STL library, these two CImg classes are strongly inter-dependent. All CImg algorithms + are actually not defined as separate functions acting on containers (as the STL does with his header \), + but are directly methods of the image and image collection classes. This inter-dependence practically means that you + will undoubtly need these two main classes at the same time if you are using CImg. + If they were defined in separate header files, you would be forced to include both of them. What is the gain then ? No gain.\n + Concerning the two other classes : You can disable the third most important class CImgDisplay of the CImg library, by setting the compilation + macro cimg_display to 0, avoiding thus to compile this class if you don't use display capabilities of CImg in your code. + But to be honest, this is a quite small class and doing this doesn't save much compilation time. + The last and fourth class is CImgException, which is only few lines long and is obviously required in almost all methods of CImg. + Including this one is mandatory.\n + As a consequence, having a single header file instead of several ones is just a way for you to avoid including all of them, + without any consequences on compilation time. This is both good technical and practical reasons to do like this. + + - Third, having a single header file has plenty of advantages : Simplicity for the user, and for the developers (maintenance is in fact easier). + Look at the CImg.h file, it looks like a mess at a first glance, but it is in fact very well organized and structured. + Finding pieces of code in CImg functions or methods is particularly easy and fast. + Also, how about the fact that library installation problems just disappear ? + Just bring CImg.h with you, put it in your source directory, and the library is ready to go ! + + I admit the compilation time of CImg-based programs can be sometime long, but don't think that it is due to the fact that you are + using a single header file. Using several header files wouldn't arrange anything since you would need all of them. + Having a pre-compiled library object would be the only solution to speed up compilation time, but it is not possible at all, + due to the too much generic nature of the library. + + \section sf3 3. Other resources + \subsection ssf31 3.1 Translations + + This FAQ has been translated to Serbo-Croatian language by Web Geeks . + +**/ +/*@}*/ + +/*----------------------------------- + + Setting Environment Variables + + -------------------------------------*/ + +/** \addtogroup cimg_environment Setting Environment Variables */ +/*@{*/ +/** + \page environment_variables Setting Environment Variables + + The CImg library is a multiplatform library, working on a wide variety of systems. + This implies the existence of some \e environment \e variables that must be correctly defined + depending on your current system. + Most of the time, the %CImg Library defines these variables automatically + (for popular systems). Anyway, if your system is not recognized, you will have to set the environment + variables by hand. Here is a quick explanations of environment variables.\n + + Setting the environment variables is done with the \#define keyword. + This setting must be done before including the file CImg.h in your source code. + For instance, + defining the environment variable \c cimg_display would be done like this : + \code + #define cimg_display 0 + #include "CImg.h" + ... + \endcode + + Here are the different environment variables used by the %CImg Library : + + - \b \c cimg_OS : This variable defines the type of your Operating System. It can be set to \b 1 (\e Unix), + \b 2 (\e Windows), or \b 0 (\e Other \e configuration). + It should be actually auto-detected by the CImg library. If this is not the case (cimg_OS=0), you + will probably have to tune the environment variables described below. + + - \b \c cimg_display : This variable defines the type of graphical library used to + display images in windows. It can be set to 0 (no display library available), \b 1 (X11-based display) or + \b 2 (Windows-GDI display). + If you are running on a system without X11 or Windows-GDI ability, please set this variable to \c 0. + This will disable the display support, since the %CImg Library doesn't contain the necessary code to display + images on systems other than X11 or Windows GDI. + + - \b \c cimg_use_vt100 : This variable tells the library if the system terminal has VT100 color capabilities. + It can be \e defined or \e not \e defined. Define this variable to get colored output on your terminal, + when using the %CImg Library. + + - \b \c cimg_verbosity : This variable defines the level of run-time debug messages that will be displayed by + the %CImg Library. It can be set to 0 (no debug messages), 1 (normal debug messages displayed on + standard error), 2 (normal debug messages displayed in modal windows, which is + the default value), or 3 (high debug messages). Note that setting this value to 3 may slow down your + program since more debug tests are made by the library (particularly to check if pixel access is made outside + image boundaries). See also CImgException to better understand how debug messages are working. + + - \b \c cimg_plugin : This variable tells the library to use a plugin file to add features to the CImg class. + Define it with the path of your plugin file, if you want to add member functions to the CImg class, + without having to modify directly the \c "CImg.h" file. An include of the plugin file is performed in the CImg + class. If \c cimg_plugin if not specified (default), no include is done. + + - \b \c cimglist_plugin : Same as \c cimg_plugin, but to add features to the CImgList class. + + - \b \c cimgdisplay_plugin : Same as \c cimg_plugin, but to add features to the CImgDisplay class. + + All these compilation variables can be checked, using the function cimg_library::cimg::info(), which + displays a list of the different configuration variables and their values on the standard error output. +**/ +/*@}*/ + + +/** \addtogroup cimg_visual2005 How to use CImg library with Visual C++ 2005 Express Edition ?. */ +/*@{*/ +/** + \page visual_cpp How to use CImg library with Visual C++ 2005 Express Edition ? + + \section s13968 How to use CImg library with Visual C++ 2005 Express Edition ? + + This section has been written by Vincent Garcia and Alexandre Fournier from I3S/Sophia_Antipolis. + + - Download CImg library + - Download and install Visual C++ 2005 Express Edition + - Download and install Microsoft Windows SDK + - Configure Visual C++ to take into account Microsoft SDK + - 1. Go to menu "Tools -> options" + - 2. Select option "Projects and Solutions -> VC++ Directories" + - 3. In the select liste "Show directories for", choose "include files", and add C:\\Program Files\\Microsoft Platform SDK\\Include (adapt if needed) + - 4. In the select liste "Show directories for", choose "library files", and add C:\\Program Files\\Microsoft Platform SDK\\Lib + (adapt if needed) Edit file C:\\Program Files\\Microsoft Visual Studio 8\\VC\\VCProjectDefaults\\corewin_express.vsprops (adapt if needed) + - 6. 7. Remplace the line AdditionalDependencies="kernel32.lib" /> by AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib" /> + - Restart Visual C++ + - Import CImg library in your main file + +**/ +/*@}*/ + + +/*----------------------------------- + + Tutorial : Getting started + + -------------------------------------*/ + +/** \addtogroup cimg_tutorial Tutorial : Getting Started. */ +/*@{*/ +/** + \page tutorial Tutorial : Getting Started. + + Let's start to write our first program to get the idea. This will demonstrate how to load and create images, as well as handle image + display and mouse events. + Assume we want to load a color image lena.jpg, smooth it, display it in a windows, and enter an event loop so that clicking a + point in the image will draw the (R,G,B) intensity profiles of the corresponding image line (in another window). + Yes, that sounds quite complex for a first code, but don't worry, it will be very simple using the CImg library ! Well, just look + at the code below, it does the task : + + \code + #include "CImg.h" + using namespace cimg_library; + + int main() { + CImg image("lena.jpg"), visu(500,400,1,3,0); + const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }; + image.blur(2.5); + CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile"); + while (!main_disp.is_closed() && !draw_disp.is_closed()) { + main_disp.wait(); + if (main_disp.button() && main_disp.mouse_y()>=0) { + const int y = main_disp.mouse_y(); + visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.width()-1,y,0,0),red,1,1,0,255,0); + visu.draw_graph(image.get_crop(0,y,0,1,image.width()-1,y,0,1),green,1,1,0,255,0); + visu.draw_graph(image.get_crop(0,y,0,2,image.width()-1,y,0,2),blue,1,1,0,255,0).display(draw_disp); + } + } + return 0; + } + \endcode + + Here is a screenshot of the resulting program : + + + + And here is the detailled explanation of the source, line by line : + + \code #include "CImg.h" \endcode + Include the main and only header file of the CImg library. + \code using namespace cimg_library; \endcode + Use the library namespace to ease the declarations afterward. + \code int main() { \endcode + Definition of the main function. + \code CImg image("lena.jpg"), visu(500,400,1,3,0); \endcode + Creation of two instances of images of \c unsigned \c char pixels. + The first image \c image is initialized by reading an image file from the disk. + Here, lena.jpg must be in the same directory as the current program. + Note that you must also have installed the \e ImageMagick package in order to be able to read JPG images. + The second image \c visu is initialized as a black color image with dimension dx=500, dy=400, + dz=1 (here, it is a 2D image, not a 3D one), and dv=3 (each pixel has 3 'vector' channels R,G,B). + The last argument in the constructor defines the default value of the pixel values + (here \c 0, which means that \c visu will be initially black). + \code const unsigned char red[] = { 255,0,0 }, green[] = { 0,255,0 }, blue[] = { 0,0,255 }; \endcode + Definition of three different colors as array of unsigned char. This will be used to draw plots with different colors. + \code image.blur(2.5); \endcode + Blur the image, with a gaussian blur and a standard variation of 2.5. Note that most of the CImg functions have two versions : + one that acts in-place (which is the case of blur), and one that returns the result as a new image (the name of the function + begins then with get_ ). In this case, one could have also written image = image.get_blur(2.5); + (more expensive, since it needs an additional copy operation). + \code CImgDisplay main_disp(image,"Click a point"), draw_disp(visu,"Intensity profile"); \endcode + Creation of two display windows, one for the input image image, and one for the image visu which will be display intensity profiles. + By default, CImg displays handles events (mouse,keyboard,..). On Windows, there is a way to create fullscreen displays. + \code while (!main_disp.is_closed() && !draw_disp.is_closed()) { \endcode + Enter the event loop, the code will exit when one of the two display windows is closed. + \code main_disp.wait(); \endcode + Wait for an event (mouse, keyboard,..) in the display window \c main_disp. + \code if (main_disp.button() && main_disp.mouse_y()>=0) { \endcode + Test if the mouse button has been clicked on the image area. + One may distinguish between the 3 different mouse buttons, + but in this case it is not necessary + \code const int y = main_disp.mouse_y(); \endcode + Get the image line y-coordinate that has been clicked. + \code visu.fill(0).draw_graph(image.get_crop(0,y,0,0,image.width()-1,y,0,0),red,1,0,256,0); \endcode + This line illustrates the pipeline property of most of the CImg class functions. The first function fill(0) simply sets + all pixel values with 0 (i.e. clear the image \c visu). The interesting thing is that it returns a reference to + \c visu and then, can be pipelined with the function \c draw_graph() which draws a plot in the image \c visu. + The plot data are given by another image (the first argument of \c draw_graph()). In this case, the given image is + the red-component of the line y of the original image, retrieved by the function \c get_crop() which returns a + sub-image of the image \c image. Remember that images coordinates are 4D (x,y,z,c) and for color images, + the R,G,B channels are respectively given by v=0, v=1 and v=2. + \code visu.draw_graph(image.get_crop(0,y,0,1,image.width()-1,y,0,1),green,1,0,256,0); \endcode + Plot the intensity profile for the green channel of the clicked line. + \code visu.draw_graph(image.get_crop(0,y,0,2,image.width()-1,y,0,2),blue,1,0,256,0).display(draw_disp); \endcode + Same thing for the blue channel. Note how the function (which return a reference to \c visu) is pipelined with the function + \c display() that just paints the image visu in the corresponding display window. + \code ...till the end \endcode + I don't think you need more explanations ! + + As you have noticed, the CImg library allows to write very small and intuitive code. Note also that this source will perfectly + work on Unix and Windows systems. Take also a look to the examples provided in the CImg package ( + directory \c examples/ ). It will show you how CImg-based code can be surprisingly small. + Moreover, there is surely one example close to what you want to do. + A good start will be to look at the file CImg_demo.cpp which contains small and various examples of what you can do + with the %CImg Library. All CImg classes are used in this source, and the code can be easily modified to see what happens. + +**/ +/*@}*/ + +/*----------------------------------- + + Using image loops + + -------------------------------------*/ + +/** \addtogroup cimg_loops Using Image Loops. */ +/*@{*/ +/** + \page loops_Using Image Loops. + The %CImg Library provides different macros that define useful iterative loops over an image. + Basically, it can be used to replace one or several for(..) instructions, but it also proposes + interesting extensions to classical loops. + Below is a list of all existing loop macros, classified in four different categories : + - \ref lo1 + - \ref lo4 + - \ref lo5 + - \ref lo6 + + \section lo1 Loops over the pixel buffer + + Loops over the pixel buffer are really basic loops that iterate a pointer on the pixel data buffer + of a \c cimg_library::CImg image. Two macros are defined for this purpose : + + - \b cimg_for(img,ptr,T) : + This macro loops over the pixel data buffer of the image \c img, using a pointer T* ptr, + starting from the beginning of the buffer (first pixel) till the end of the buffer (last pixel). + - \c img must be a (non empty) \c cimg_library::CImg image of pixels \c T. + - \c ptr is a pointer of type \c T*. + This kind of loop should not appear a lot in your own source code, since this is a low-level loop + and many functions of the CImg class may be used instead. Here is an example of use : + \code + CImg img(320,200); + cimg_for(img,ptr,float) { *ptr=0; } // Equivalent to 'img.fill(0);' + \endcode + + - \b cimg_rof(img,ptr,T) : + This macro does the same as \c cimg_for() but from the end to the beginning of the pixel buffer. + + - \b cimg_foroff(img,off) : + This macro loops over the pixel data buffer of the image \c img, using an offset \c , + starting from the beginning of the buffer (first pixel, \c off=0) + till the end of the buffer (last pixel value, off = img.size()-1). + - \c img must be a (non empty) cimg_library::CImg image of pixels \c T. + - \c off is an inner-loop variable, only defined inside the scope of the loop. + + Here is an example of use : + \code + CImg img(320,200); + cimg_foroff(img,off) { img[off]=0; } // Equivalent to 'img.fill(0);' + \endcode + + \section lo4 Loops over image dimensions + + The following loops are probably the most used loops in image processing programs. + They allow to loop over the image along one or several dimensions, along a raster scan course. + Here is the list of such loop macros for a single dimension : + - \b cimg_forX(img,x) : equivalent to : for (int x = 0; x. + - \b cimg_forY(img,y) : equivalent to : for (int y = 0; y. + - \b cimg_forZ(img,z) : equivalent to : for (int z = 0; z. + - \b cimg_forC(img,c) : equivalent to : for (int c = 0; c. + + Combinations of these macros are also defined as other loop macros, allowing to loop directly over 2D, 3D or 4D images : + - \b cimg_forXY(img,x,y) : equivalent to : \c cimg_forY(img,y) \c cimg_forX(img,x). + - \b cimg_forXZ(img,x,z) : equivalent to : \c cimg_forZ(img,z) \c cimg_forX(img,x). + - \b cimg_forYZ(img,y,z) : equivalent to : \c cimg_forZ(img,z) \c cimg_forY(img,y). + - \b cimg_forXC(img,x,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forX(img,x). + - \b cimg_forYC(img,y,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forY(img,y). + - \b cimg_forZC(img,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forZ(img,z). + - \b cimg_forXYZ(img,x,y,z) : equivalent to : \c cimg_forZ(img,z) \c cimg_forXY(img,x,y). + - \b cimg_forXYC(img,x,y,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forXY(img,x,y). + - \b cimg_forXZC(img,x,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forXZ(img,x,z). + - \b cimg_forYZC(img,y,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forYZ(img,y,z). + - \b cimg_forXYZC(img,x,y,z,c) : equivalent to : \c cimg_forC(img,c) \c cimg_forXYZ(img,x,y,z). + + - For all these loops, \c x,\c y,\c z and \c v are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + - \c img must be a (non empty) cimg_library::CImg image. + + Here is an example of use that creates an image with a smooth color gradient : + \code + CImg img(256,256,1,3); // Define a 256x256 color image + cimg_forXYC(img,x,y,c) { img(x,y,c) = (x+y)*(c+1)/6; } + img.display("Color gradient"); + \endcode + + \section lo5 Loops over interior regions and borders. + + Similar macros are also defined to loop only on the border of an image, or inside the image (excluding the border). + The border may be several pixel wide : + + - \b cimg_for_insideX(img,x,n) : Loop along the x-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideY(img,y,n) : Loop along the y-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideZ(img,z,n) : Loop along the z-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideC(img,c,n) : Loop along the c-axis, except for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideXY(img,x,y,n) : Loop along the (x,y)-axes, excepted for pixels inside a border of \p n pixels wide. + - \b cimg_for_insideXYZ(img,x,y,z,n) : Loop along the (x,y,z)-axes, excepted for pixels inside a border of \p n pixels wide. + + And also : + + - \b cimg_for_borderX(img,x,n) : Loop along the x-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderY(img,y,n) : Loop along the y-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderZ(img,z,n) : Loop along the z-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderC(img,c,n) : Loop along the c-axis, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderXY(img,x,y,n) : Loop along the (x,y)-axes, only for pixels inside a border of \p n pixels wide. + - \b cimg_for_borderXYZ(img,x,y,z,n) : Loop along the (x,y,z)-axes, only for pixels inside a border of \p n pixels wide. + + - For all these loops, \c x,\c y,\c z and \c c are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + - \c img must be a (non empty) cimg_library::CImg image. + - The constant \c n stands for the size of the border. + + Here is an example of use, to create a 2d grayscale image with two different intensity gradients : + \code + CImg<> img(256,256); + cimg_for_insideXY(img,x,y,50) img(x,y) = x+y; + cimg_for_borderXY(img,x,y,50) img(x,y) = x-y; + img.display(); + \endcode + + \section lo6 Loops using neighborhoods. + + Inside an image loop, it is often useful to get values of neighborhood pixels of the + current pixel at the loop location. + The %CImg Library provides a very smart and fast mechanism for this purpose, with the definition + of several loop macros that remember the neighborhood values of the pixels. + The use of these macros can highly optimize your code, and also simplify your program. + + \subsection lo7 Neighborhood-based loops for 2D images + + For 2D images, the neighborhood-based loop macros are : + + - \b cimg_for2x2(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 2x2 neighborhood. + - \b cimg_for3x3(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 3x3 neighborhood. + - \b cimg_for4x4(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 4x4 neighborhood. + - \b cimg_for5x5(img,x,y,z,c,I,T) : Loop along the (x,y)-axes using a centered 5x5 neighborhood. + + For all these loops, \c x and \c y are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + \c img is a non empty CImg image. \c z and \c c are constants that define on which image slice and + vector channel the loop must apply (usually both 0 for grayscale 2D images). + Finally, \c I is the 2x2, 3x3, 4x4 or 5x5 neighborhood of type \c T that will be updated with the correct pixel values + during the loop (see \ref lo9). + + \subsection lo8 Neighborhood-based loops for 3D images + + For 3D images, the neighborhood-based loop macros are : + + - \b cimg_for2x2x2(img,x,y,z,c,I,T) : Loop along the (x,y,z)-axes using a centered 2x2x2 neighborhood. + - \b cimg_for3x3x3(img,x,y,z,c,I,T) : Loop along the (x,y,z)-axes using a centered 3x3x3 neighborhood. + + For all these loops, \c x, \c y and \c z are inner-defined variables only visible inside the scope of the loop. + They don't have to be defined before the call of the macro. + \c img is a non empty CImg image. \c c is a constant that defines on which image channel + the loop must apply (usually 0 for grayscale 3D images). + Finally, \c I is the 2x2x2 or 3x3x3 neighborhood of type \c T that will be updated with the correct pixel values + during the loop (see \ref lo9). + + \subsection lo9 Defining neighborhoods + + A neighborhood is defined as an instance of a class having operator[] defined. + This particularly includes classical C-array, as well as CImg objects. + + For instance, a 3x3 neighborhood can be defined either as a 'float[9]' or a + 'CImg(3,3)' variable. + + \subsection lo10 Using alternate variable names + + There are also some useful macros that can be used to define variables that + reference the neighborhood elements. There are : + + - \b CImg_2x2(I,type) : Define a 2x2 neighborhood named \c I, of type \c type. + - \b CImg_3x3(I,type) : Define a 3x3 neighborhood named \c I, of type \c type. + - \b CImg_4x4(I,type) : Define a 4x4 neighborhood named \c I, of type \c type. + - \b CImg_5x5(I,type) : Define a 5x5 neighborhood named \c I, of type \c type. + - \b CImg_2x2x2(I,type) : Define a 2x2x2 neighborhood named \c I, of type \c type. + - \b CImg_3x3x3(I,type) : Define a 3x3x3 neighborhood named \c I, of type \c type. + + Actually, \c I is a \e generic \e name for the neighborhood. In fact, these macros declare + a \e set of new variables. + For instance, defining a 3x3 neighborhood \c CImg_3x3(I,float) declares 9 different float variables + \c Ipp,\c Icp,\c Inp,\c Ipc,\c Icc,\c Inc,\c Ipn,\c Icn,\c Inn which correspond to each pixel value of + a 3x3 neighborhood. + Variable indices are \c p,\c c or \c n, and stand respectively for \e 'previous', \e 'current' and \e 'next'. + First indice denotes the \c x-axis, second indice denotes the \c y-axis. + Then, the names of the variables are directly related to the position of the corresponding pixels + in the neighborhood. For 3D neighborhoods, a third indice denotes the \c z-axis. + Then, inside a neighborhood loop, you will have the following equivalence : + - Ipp = img(x-1,y-1) + - Icn = img(x,y+1) + - Inp = img(x+1,y-1) + - Inpc = img(x+1,y-1,z) + - Ippn = img(x-1,y-1,z+1) + - and so on... + + For bigger neighborhoods, such as 4x4 or 5x5 neighborhoods, two additionnal indices are introduced : + \c a (stands for \e 'after') and \c b (stands for \e 'before'), so that : + - Ibb = img(x-2,y-2) + - Ina = img(x+1,y+2) + - and so on... + + The value of a neighborhood pixel outside the image range (image border problem) is automatically set to the same + values as the nearest valid pixel in the image (this is also called the \e Neumann \e border \e condition). + + \subsection lo11 Example codes + More than a long discussion, the above example will demonstrate how to compute the gradient norm of a 3D volume + using the \c cimg_for3x3x3() loop macro : + + \code + CImg volume("IRM.hdr"); // Load an IRM volume from an Analyze7.5 file + CImg_3x3x3(I,float); // Define a 3x3x3 neighborhood + CImg gradnorm(volume); // Create an image with same size as 'volume' + cimg_for3x3x3(volume,x,y,z,0,I,float) { // Loop over the volume, using the neighborhood I + const float ix = 0.5f*(Incc-Ipcc); // Compute the derivative along the x-axis. + const float iy = 0.5f*(Icnc-Icpc); // Compute the derivative along the y-axis. + const float iz = 0.5f*(Iccn-Iccp); // Compute the derivative along the z-axis. + gradnorm(x,y,z) = std::sqrt(ix*ix+iy*iy+iz*iz); // Set the gradient norm in the destination image + } + gradnorm.display("Gradient norm"); + \endcode + + And the following example shows how to deal with neighborhood references to blur a color image by averaging + pixel values on a 5x5 neighborhood. + + \code + CImg src("image_color.jpg"), dest(src,false); // Image definitions. + typedef unsigned char uchar; // Avoid space in the second parameter of the macro CImg_5x5x1 below. + CImg<> N(5,5); // Define a 5x5 neighborhood as a 5x5 image. + cimg_forC(src,k) // Standard loop on color channels + cimg_for5x5(src,x,y,0,k,N,float) // 5x5 neighborhood loop. + dest(x,y,k) = N.sum()/(5*5); // Averaging pixels to filter the color image. + CImgList visu(src,dest); + visu.display("Original + Filtered"); // Display both original and filtered image. + \endcode + + As you can see, explaining the use of the CImg neighborhood macros is actually more difficult than using them ! + +**/ +/*@}*/ + +/*----------------------------------- + + Using display windows + + -------------------------------------*/ + +/** \addtogroup cimg_displays Using Display Windows. */ +/*@{*/ +/** + \page display Using Display Windows. + + When opening a display window, you can choose the way the pixel values will be normalized + before being displayed on the screen. Screen displays only support color values between [0,255], + and some + + When displaying an image into the display window using CImgDisplay::display(), values of + the image pixels can be eventually linearly normalized between [0,255] for visualization purposes. + This may be useful for instance when displaying \p CImg images with pixel values + between [0,1]. + The normalization behavior depends on the value of \p normalize which can be either \p 0,\p 1 or \p 2 : + - \p 0 : No pixel normalization is performed when displaying an image. This is the fastest + process, but you must be sure your displayed image have pixel values inside the range [0,255]. + - \p 1 : Pixel value normalization is done for each new image display. Image pixels are + not modified themselves, only displayed pixels are normalized. + - \p 2 : Pixel value normalization is done for the first image display, then the + normalization parameters are kept and used for all the next image displays. + +**/ +/*@}*/ + +/*----------------------------------- + + How pixel data are stored + + -------------------------------------*/ + +/** \addtogroup cimg_storage How pixel data are stored with CImg. */ +/*@{*/ +/** + \page storage How pixel data are stored with CImg? + + First, CImg are *very* basic structures, which means that there are no memory tricks, weird memory alignments or + disk caches used to store pixel data of images. When an image is instanced, all its pixel values are stored in memory at + the same time (yes, you should avoid working with huge images when dealing with CImg, if you have only 64kb of RAM). + + A CImg is basically a 4th-dimensional array (width,height,depth,dim), and its pixel data are stored linearly in a single + memory buffer of general size (width*height*depth*dim). Nothing more, nothing less. The address of this memory buffer can be + retrieved by the function CImg::data(). + As each image value is stored as a type T (T being known by the programmer of course), this pointer is a 'T*', or a 'const T*' if your image is 'const'. + so, 'T *ptr = img.data()' gives you the pointer to the first value of the image 'img'. The overall size of the used memory for one + instance image (in bytes) is then 'width*height*depth*dim*sizeof(T)'. + + Now, the ordering of the pixel values in this buffer follows these rules : + The values are *not* interleaved, and are ordered first along the X,Y,Z and V axis respectively (corresponding to the width,height,depth,dim dimensions), + starting from the upper-left pixel to the bottom-right pixel of the instane image, with a classical scanline run. + + So, a color image with dim=3 and depth=1, will be stored in memory as : + + R1R2R3R4R5R6......G1G2G3G4G5G6.......B1B2B3B4B5B6.... (i.e following a 'planar' structure) + + and *not* as R1G1B1R2G2B2R3G3B3... (interleaved channels), + where R1 = img(0,0,0,0) is the first upper-left pixel of the red component of the image, + R2 is img(1,0,0,0), G1 = img(0,0,0,1), G2 = img(1,0,0,1), B1 = img(0,0,0,2), and so on... + + Another example, a (1x5x1x1) CImg (column vector A) will be stored as : A1A2A3A4A5 + where A1 = img(0,0), A2 = img(0,1), ... , A5 = img(0,4). + + As you see, it is *very* simple and intuitive : no interleaving, no padding, just simple. + This is cool not only because it is simple, but this has in fact a number of interesting properties. For instance, a 2D color image + is stored in memory exactly as a 3D scalar image having a depth=3, meaning that when you are dealing with 2D color images, you can write 'img(x,y,k)' + instead of 'img(x,y,0,k)' to access the kth channel of the (x,y) pixel. More generally, if you have one dimension that is 1 in + your image, you can just skip it in the call to the operator(). Similarly, values of a column vector stored as an image with + width=depth=spectrum=1 can be accessed by 'img(y)' instead of 'img(0,y)'. This is very convenient. + + Another cool thing is that it allows you to work easily with 'shared' images. A shared image is a CImg instance that shares + its memory with another one (the 'base' image). Destroying a shared image does nothing in fact. Shared images is a convenient + way of modifying only *portions* (consecutive in memory) of an image. For instance, if 'img' is a 2D color image, you can write : + + img.get_shared_channel(0).blur(2); + img.get_shared_channels(1,2).mirror('x'); + + which just blur the red channel of the image, and mirror the two others along the X-axis. + This is possible since channels of an image are not interleaved but are stored as different consecutive planes in memory, so you see that constructing a shared image is possible (and trivial). + +**/ +/*@}*/ + +/*----------------------------------- + + Files IO + + -------------------------------------*/ + +/** \addtogroup cimg_files_io Files IO in CImg. */ +/*@{*/ +/** + \page io Files IO in CImg. + + The %CImg Library can NATIVELY handle the following file formats : + - RAW : consists in a very simple header (in ascii), then the image data. + - ASC (Ascii) + - HDR (Analyze 7.5) + - INR (Inrimage) + - PPM/PGM (Portable Pixmap) + - BMP (uncompressed) + - PAN (Pandore-5) + - DLM (Matlab ASCII) + + If ImageMagick is installed, The %CImg Library can save image in formats handled by ImageMagick : JPG, GIF, PNG, TIF,... + +**/ +/*@}*/ + +/*----------------------------------- + + Retrieving command line arguments + + -------------------------------------*/ + +/** \addtogroup cimg_options Retrieving Command Line Arguments. */ +/*@{*/ +/** + \page options Retrieving Command Line Arguments. + + The CImg library offers facilities to retrieve command line arguments in a console-based + program, as it is a commonly needed operation. + Three macros \c cimg_usage(), \c cimg_help() and \c cimg_option() are defined for this purpose. + Using these macros allows to easily retrieve options values from the command line. + Invoking the compiled executable with the option \c -h or \c --help will + automatically display the program usage, followed by the list of requested options. + + \section so1 The cimg_usage() macro + + The macro \c cimg_usage(usage) may be used to describe the program goal and usage. + It is generally inserted one time after the int main(int argc,char **argv) definition. + + \param usage : A string describing the program goal and usage. + \pre The function where \c cimg_usage() is used must have correctly defined \c argc and \c argv variables. + + \section so1_5 The cimg_help() macro + + The macro \c cimg_help(str) will display the string \c str only if the \c -help or \c --help option + are invoked when running the programm. + + \section so2 The cimg_option() macro + + The macro \c cimg_option(name,default,usage) may be used to retrieve an option value from the command line. + + \param name : The name of the option to be retrieved from the command line. + \param default : The default value returned by the macro if no options \p name has been specified when running the program. + \param usage : A brief explanation of the option. If \c usage==0, the option won't appear on the option list + when invoking the executable with options \c -h or \c --help (hidden option). + + \return \c cimg_option() returns an object that has the \e same \e type as the default value \c default. + The return value is equal to the one specified on the command line. If no such option have been specified, + the return value is equal to the default value \c default. + Warning, this can be confusing in some situations (look at the end of the next section). + \pre The function where \c cimg_option() is used must have correctly defined \c argc and \c argv variables. + + \section so3 Example of use + + The code below uses the macros \c cimg_usage() and \c cimg_option(). + It loads an image, smoothes it an quantifies it with a specified number of values. + \code + #include "CImg.h" + using namespace cimg_library; + int main(int argc,char **argv) { + cimg_usage("Retrieve command line arguments"); + const char* filename = cimg_option("-i","image.gif","Input image file"); + const char* output = cimg_option("-o",(char*)0,"Output image file"); + const double sigma = cimg_option("-s",1.0,"Standard variation of the gaussian smoothing"); + const int nblevels = cimg_option("-n",16,"Number of quantification levels"); + const bool hidden = cimg_option("-hidden",false,0); // This is a hidden option + + CImg img(filename); + img.blur(sigma).quantize(nblevels); + if (output) img.save(output); else img.display("Output image"); + if (hidden) std::fprintf(stderr,"You found me !\n"); + return 0; + } + \endcode + + Invoking the corresponding executable with test -h -hidden -n 20 -i foo.jpg will display : + \verbatim + ./test -h -hidden -n 20 -i foo.jpg + + test : Retrieve command line arguments (Oct 16 2004, 12:34:26) + + -i = foo.jpg : Input image file + -o = 0 : Output image file + -s = 1 : Standard variation of the gaussian smoothing + -n = 20 : Number of quantification levels + + You found me ! +\endverbatim + + \warning As the type of object returned by the macro \c cimg_option(option,default,usage) + is defined by the type of \c default, undesired casts may appear when writting code such as : + \code + const double sigma = cimg_option("-val",0,"A floating point value"); + \endcode + In this case, \c sigma will always be equal to an integer (since the default value \c 0 is an integer). + When passing a float value on the command line, a \e float \e to \e integer cast is then done, + truncating the given parameter to an integer value (this is surely not a desired behavior). + You must specify 0.0 as the default value in this case. + + \section so4 How to learn more about command line options ? + You should take a look at the examples examples/gmic.cpp provided in the %CImg Library package. + This is a command line based image converter which intensively uses the \c cimg_option() and \c cimg_usage() + macros to retrieve command line parameters. +**/ +/*@}*/ diff --git a/html/CImg_flyer.svg b/html/CImg_flyer.svg new file mode 100644 index 000000000..a37aa8e01 --- /dev/null +++ b/html/CImg_flyer.svg @@ -0,0 +1,2165 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Usefulness + + + Simplicity + + + Genericity + + + Extensibility + + + Freedom + + + Portability + + + + + + + + + It provides C++ classes to process and visualizegeneric images easily. A single header file must be included in your own sources, defining only four new classes. It handles up to 4-D datasets (multispectral volumetric images) with template pixel types. It can use external libraries and user-defined plug-ins to extend its capabilities. Multiple architectures are supported (Unix, Windows, MacOSX, *BSD,...) It is an open-source project which can be used in commercial applications. + + http://cimg.eu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/html/CImg_reference_chinese.pdf b/html/CImg_reference_chinese.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f62f67930195922ea606d9deccee2e42f1d7aeae GIT binary patch literal 925937 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 z z$I{T|$k}NszR1`-rbVQ2(6_-Daf-DfRuAipkS-~o*ipk8fDW!(nk(YOS|Q63zQ?+Y zgt=_RzH~OO>A*Nd2ftYB)!8`j(2$Q7gukDzmo}~q=x8oT6O2bHIw8L$dT|X0ey{w{ zj?M-2r8@FcQjB*C`PG!gRe5;#raBBFv`|Yt8w^HND@!I)dqVLnXco#M51d&NcByBk0Tx`K%#2a7-iG z80Q=_{YSbkNq=@WtyQaM{9dm8LHVmmCn$dFOvfKMw#dBJ**Ff>(z@5wC-PS%Xs7ZD z4e7QX|JQ-ImT4W$$!?SJCF}NVZtlG{lD;$ui=S8lZDyQw%rq1l!^(n_?geVgK^{S^sgI znPs)4wRJ*Q270Fux+&Nc*WZagOPW(*uh0it^i+hhH4 zeHYgg<}j3VK6qu*d`s-}QTU4{W7Bet zWR51v&dOn?J7K>U8Cy=(BXPW_wtTLGF+E*ot?WB;j)-m8Anco*u3@aF!h9dQR|#5F z!Y8Oq*YnlFPN~V)%jJmJC*ph{+V4@!qak}J3VJG>2%nef?7bk~9qwI{-O~yisj;tWRza|~Cv1zU$)s&|ACZ2mcI2*Zs7JvEKHJjGY)-a!*nC!UQ89OlX#g^=X^xe{?wKcfUolWEYb>=)$IWw-8 zy(Z3b)FVr>*BkPC*JS^fHmxJ=i09U(W1YdKc#kvipOGeLuSJsMT#k@y%NaY9=CuMk zFKt>^)Yv!|hcb#k-e>%NO}wvavN*S;=u+D>7reBqm=Hh1H8teJ z6yPJY!pCi4&ro)gOkX40j@QJwy(Q^Tl?w{69^9{MV$CbK$GV+$Ofa2WRyo+E>D;DT z(>36?dwy?2{DFS-z^}K+{z@_QgvXBXcWqOQP?A;kyr%hbO;ipenQ9o6O~ZKNIqYLD zKZNf;LNZcV9;aH`G*?vGI6umMDc4)8I<4NOvBx#_(NVuDztzK7n2W)f!CWp<)kiaa zC5O+(clN?IQ@$Bv8cVuA_k9jmd#on!7$*M|zmNOan6BkheU^egxxRDt&Zp*sYs=$0 zRBf`7&0HS3nOOsm)n(+6_og>pC(Kxs9F{DH2g+d_6qY>9=o5tl!?<}Td?%$BI8Kjs zf?RWvt6N6jxwL#;bWTRuu4F%yW5pf$X%)TO3coc9pPXY3%HKp=n%C3YG&Z5unu{r@ z`V7qTaeSBaGo4LyES$Gg_-3v@P<0`VID0UM!+9f>f3A=4E$>IFO2~e1<665GY+GDI2lqmTzNwD!jP?a}4AyV&{qHAXe#1CVdmC^_&)JVKNkeVp zU9h=__by?)q1}N#&h4tE_))v6dmZR>LEohs&@}IzjbnoYt#8{^o$%VOYH?FdaSQW$ z!uyI~Bd6F(4|GS}nqp~KH=O8}?rmY7xSmv(eFood>?-!NhH+PP2KK-g0eA~zJaxuq zsb+keI-_q`j+&W1Yn#@e@>nhDAdU@G8GnGW%8_h2)_+|_N9JNqD2H>oo?}?!g7h55 z4T_9EsBB2iN!1w}G-r?2!fsMFJNB_8I!Bvg`Ww^nI?mzOC)mlgXurkv8lL~OpJ^+*!o#P1yl}do`~7n`zjppz!r9+~^D*u7 z2F{H=oyF4KJ~wb@h)IKz4w*Q#7nSY()qUsemR3aR=^);aIWou_qMR+OaD8K zy@Nh?@azoip%&?V+HbZ4tu(TxuI=+-LCQqNXs4A23zP4W%>f!S-?v~3AvTz4wTE%h)>?xteFiq^7WRH)V~pVj=7{>Jw`pD23T)D7 zV_Y`dLD9yz^pgB;g-20!M};{1m2ZjXW+l!YuK5X>v#p%5ze*Y>m!rY>TM)LBiqrCS zEsL99&DZIx{g}xS4VbEeZ>Ce_|hpgtF_?2%5)6m zSdC3%^Ks!h+l=k2X!$$=#}qJ56>Yv=JZG1)U&8T^%I4$uT)^z-z1Zq*qZ60y6C ztIFxzX!-hyQ)t%-`!=Hh@u8{#}e-uSNX z!95#ev?AHgh}&;%Tssmo`s!Got;+1LqC4|A`?T%MSlCuGds7L&Sj=ru!b7wv4(Y}_ck`I-{W(nqrV&S`?1E3@wZCHMLI8$F3iulTpH`tmgdIy8q#}w zE^__f%BK0gR?voP=pyN8v;%m3Tti#I*oZfbHja}-VY}cy1)*~gqsMifT$6-3%z|hd zi5}6W`BQ%0XJ{6My~4aviFtCJUt`lc;>M(m3hIZ~%NTd2OD*`QvMF9%%>mD&PS}FEacetX@5O6vZCZ1u*1|aX z#-_Eb%mZ`vg}Iuy+%wGKbVR>S(5fY07;8;~=)V=d3D@GOdG$h;@cSP0bPs1zmpQi@ zT65|{-JhFZlaYJY>r0!~)itC?R16~6G#@=@!!sVLCVk0RpGe=FiL)_g&NKEK8#;sL zFq5a+t&FkGeOqVzdi8#PWNfZKpNkVETt1&A1MSakTHn$LKfKJ?;mlhxV~;c5QRNMJ zUA2(m3hcg4_;hG9ZfshMR0;cmZ3$J&(`LTwP2-IUus0NL9^Cpr2AOoplV>(L<_8g;cKj&Ikvo*9gM@R^#$nhwCkE z8sork5%=DSaav*TwKl~wAO^doJ;!(r#wmK6Vw^h~Bhb21Osf>WInp56<7=B@snc_e zHR1Ee>_-^C;rG6cbH8aGJK(1kyz@BBKgHsnfO7(Upo9rL1AAZ(a(4;#^U%i-`@Rme zOL&OJpPd2UbhO7Q2YzPbnw|jrwYG6gkmF!D{}hXiHqMbM9{_FMjqputIF|}x+p?dq zGL6;anpHfrT9|Wf)0`LbS*m|wyb${B1<)?dc@2A>@ReJ#&ss4r#?1ucbA{(lYwR-q zSx4()-GZ@FuKB>YB@JxBf&)_Ue@ z?^N!wpm$oqPq}zjgI;s0ylXXfe_*w+miA1hkE#*T5db9uWmGgc}5ZBurTioy)7C&2pdoibvsGSi$%u z`A4dDePtTc!F7Q9PbMH;M_3h%;L;gHTfD5?1r4J!}N~i zC)PCADE!Y<%YgN+s#X?lyRA*}{5ZFs_@*+QH%7lo`7$lhp%yk~GecLjIXP!Amk(mz z?MXIjo8}!=t`%bz?1x426V%@r(?F~U#s`?cS|P)|;1|X-U_1z8Ca30qmAto^HAW$e zs;&)lfsw{1g|6ked7yrAT@~?1OMP{j z_nB8JI?EMLr@vF|bd%X{#tO8g3()RpXXL3pVXY6+YVjT0W2H^=?TFuDjNUqPrZm)V zBi@VR8SY^x?zf=l7%S3=^A-Jq6^)l-xQH!^ne{{)I{ghe-B#oEf`4ac*T zSl4!@|0sTWt&IDNGw-u()ES>d`5)>%6+f7xhr-3Hc(?M2INw@l_J--rb!!}#RrNuP zm0=u_s&C`^$8^0S-!&1` zPvsUGK~K&Nac)ELN=x^n*t=Xlq%ocA2$?nFIbI3f5`>QE-PWpzE*NXd;bj}kyZv-2FApv76z6wCL^}6yzZ#)iwX_Z4u_=xTcBgwQ?8_jC&(J_cp~8FrEVA zhIG1w#8-RC|ZpD4;Gke$`+0(gJ zW!`5Druw!ce|s)pts1|#F`d7D^hiGnOU3vtg%xC6W<7IeC=6mR*1$Hpnj_cKlo@+4 z&AkwFSlbl8qH1oA(X4uaeF`VMTZwszNdkNP7Bz6crGCOTZ2#t${b ze^JbValkxR##mvEL?!%((scYM+O$q*W8)f%I@34TTwq-XWAcJcYk>m2i@ern^i3^% zj8gDX?hIp$X>GcGP3^I=88G*<%3ME4tB&w$PIex2oKDzrjIYGHoL1PDo#5L+-<)T7 z_SiZ)8`nnQxjFQ4P3SAWp0m9gvhz4b$n`#4|5^zj4$r{|b|YfPYN104o5o>k8`nvo z-NNG)8K0!JDGn5I$&9nb`SW}u(KL|%RGO~K!u=?0iZu#kFQIKxWaPKZ_$Qdti9$Ch zTyLH6bCsXWSj!?qqhQn8GyJB=tc7!o3iF9IYghxbg)w);o2Ag<3j17=Jadeyq;qv+ zI+wz+k;Zf!KAMiF=i-UHhq?R%w?PLDF`irgo9bt_Hm;LAw<|1avfHu5D_q!B{2X}- zd1+0$C((xWQpzJGoAr!rskL3z&h{{#>I>@+Ecz)P3vtd z;)T-kb>SiNcbIucJ;(2g89THR^D1X-;VN^V`5NgOZ9WcG3I8>Rfku9bHjO#wu;ziz z^HT7%^4}Y>?KyA4`E))vdOBM;=NW}BTbiz?tAwvr3mvH9St|Ek3)x_OS7&?)m0M8p z!qW0Md=*1wds5ZHunbih8*6L2_Hmif3FVA^qv~*&=B2Qgd-4}*vDREJhx7C)4%Z7G zIn3B??5nUGmNw2a)fvAS^~EY9KWyKYNAwo@xrztV?=rJLo!Iw^^cv@K<{IYeip;ZP zF@pzf#REKhkTG*Kt}^@|=sk{CR^($X6)3=P%XC1cm@0WC@q*(kiW49!o+|!;SJ(i?fYvD8Y z^t`um{5n^EiF3@wz#{pV%0E@SlEdU6O-swiylP?FvCrCwb5Y>}xW+Juv!E2ZIA_bL znoZQVg|JmrZE&FZErrjbY`UDS$Y(^6*_%22Q)P5gAUS6Hxez)by}yL}*E0PmeUbVr z;QYZp3!zt*C)~?D<25a98cSKyoC;W5n)CA@&w~$p&;80k{$Ok4TuIFM(WS8Cm=|u@ z6^;byhjEh5{ZfpFuHm{h9UnqJ4fVza%w;X^#q&NN@Kl^iucyyY>yd#lj+3u%KR+ZKU>o=@*w=@WA}2o_h1@Z#27!!A0yAB zek*K>sZe%XCB8oen{^CNc52I=?`*5&u!M8;t1@~%9QjV&kD0xEP`t#c@5Z0dzsg~6 zm0eW|TdB#)foapP-4@d_kPi01)bN&^su{q)WaAMy%oJ&n-AIGn9d22i?6}Idc zKdC)exbS0sw5l_yZ5{(Oryn@?SDD6IDr`e;O}RRTT%J$)J_-w2&Cr53m9cM29KfZ!-K}X3nfIGe?el ztMBR~XG|_XP|fHn<^Sd4v*n5BM`b#m80^7fcg$-K+DFd+4oBv6ik`{QLCKHOwR7@4 z7vKF!&-U_9;9O^1K`CT!ZtdlajO6B99^uuW)V8T+_E?>H|C@C$jgllO56j5N%!tS% z^3JTgs;j!H`ktBY>8`nVXL`=PW)Eg(mfdApU>Ejcm-VuXSffQ)ELa9C%w;S+p=S&B z8H3l#{n%JlVCM&4@DeJj6jUiZnuI6u zdzAMr`pB?0^JhukC(Y+h(N;}bF=i$2pXOs0a2K$4^6y2f=Y49W=au|fl8=?-eJc`e zD-yhkgr}MWW1K%vOK=y@>eAdT>3KDOw<67-j#l0`lrI;f`TQ#1=*lFIksP8LsDyhU% zMLsCVpUHUwp5v|P7f3J`wSz^SX)NJ9l=elD`zhCD72`Wo>>oL|Zc2DB^mP$`lJ)hZ zb5U{~o7`l3e9~E(@>$h#u6mMfQ^erqI|c*d`z+>II%XJm@HLRfwXSsgBl5obQ{VLZRPV)&&X+QXq%y4q~ zUgj%4#m1dfmu^XV+@2uA%CR!5WRn&!6|%fC1s{ADzscIg$CdjfQ+!-^iXT+Yk6R@l zA}z^#qqHx|wae4ahL?ROx3st9{CknlF0ZqoNu%VWIi-2*UHp;V{K#@HbJCds`Mq?4 z-j(^H98)wVz%wadVNdY0cFTvA_nv{SJqJP1)pHx=Jk_MQIFodxc@_Co&P`5>7g)Q< z-Dxq}Yi+z_KTXmJ*OCLg8Vr-h+%5iS{T@f z^Nf47*st8rMLTN^c7x|y^QeUkEbI`y)Qp^e^t@m3%#iv7(tYu1qV2U#lfE00e3F|h z=?5Kc)xD4sT$9Enk{=*9CiTUoceT9f6W}vSbC6xuMM}6aO82|{Zb<7Z*TNbS&B-qF zT@AK!GbQ`ITqif_JsH+;3T{}5U*zB13F8`5VAiM5)|$XK<$1y>YcNXs-a%XE+sfx? z%kgqL!M2dk?Uv8l#uM~Nxn8#HPdK~C1}gcf<^P`FFNN3pq~fOlWS&Cv+wMhL`;P!iIJy`2WRNyfls} z`TDM;w~BZD65n_d{d@@y3vI74v?tul^T;({vE<9_7LzUF!R`Fhmi!J=^3gqMo&rW^ zf-P3g<@*q;V$YbW#qDNH*9cySrRhC*vX5 zg$If?`)KERCV4CiUA+c^U1co{?X0~o`<~^qM3c@BPdYcrCeW{3H@;hqR{0%*cE)`O z+C5K7(eC;9Y4ZhWXMH5yMUI#2y~}kL)6RlS+LM#ce>%JHYWb{@F+uiRi!Lenw>S?d z#u`Y^*RX2un7y@s!O~Oq3yNXRI+<4 zN!H8ukX%Py)J_*Mc0JeeMV_F1zPFBc*4@i?jLfHU{8q-FY-`D|xM+JVf+g8)7TU_I z$h5DboiQpoX6#CHmutXXNjI16d?wk|a=fv8w%wKH3?|6lXo6fXXdajNq@cLrF8~qEB8lB`z@T{pK)pJh5QK7_MDDP>rm2BMP8JZ_J%F-lpOc=OFTv- z`pNuS&ZQQ#ET1*;N;=Y&V0KI6$TCEZ6EkT|mgJku`y(#FlT28vgLdXUXbFeqysf;a z9BH2N-l~+=W|ee;oC_ioc9us+?gDCvVxdM@i9Tl(%vYm;S2 zIma%;J}DnlUb{>?PrA3!0 zikhw&2^Rv^RWv@kTtQp)CQFhYFmgETl09G4i!o`R_44suw7vevMO*bZb+lEdQt(b| zf_)?NwVV^SOS)T*X>@a+L9Aye@hwH$V?F-O; zKX31X_Eu;QLVGQ=htXCoPPvt9<07&y?t*p;wELkw2kmZX4?%kj+LO@kgmw?KC-Tn=(B6{Yi}o65ZxZhx zuOT0K$|_hj9^%Rze7gCkjU44Pd^-6(hx^L-`R|^dyA{2NF2D1=O7pX;H{O2fvu|(S z^&&D(y#X%0lP@AoeAC1?J^Oa*)$mQ+s#k7Raf`*RDsHj3Rj&N1h+8CX6>*DtC(+{g zPm%uwiY_XbmHPp+$}nDAS1#Xgn&SDVl&6%hD_>M>MHy{uYzz#;ND}z`f@X$##U;dd zRQ3^@`)Uv-o^Enmyw!uZZdd*|drQ0_-h@|^<2vrGo#O3|sa+)QMotV;9;H`1_r^?;R2J8oAG)myl7&K5?wXhqk zVcoSOdl6RB137SyG6L@BFp~f}S>4z$2KzUX6>TF=L(6a7MsTm8n-hcUL%3mmd1Zz{0 zfp{e`V0FoV>$dgQJZjWyZI%v>?Q81k!ij!GywQi1Jg)r7_zi(tm;zoJpk`aEH&K5U z&6s+;=h%EjukJgskgfeE$~on5#xvb)4(JcK8!?JiJ1}VM*;dss8PmLKsxl7mbb)VA zDScRt0_%rYHUk&=KBZ>BOjvE_^8bb3@5!hldH@i4Ki@~8k75r60XEIZwC0!RQ~HIcw6`WB{=Pd+f)`TR`$EqjY0!ZAcu-td|1sA&Mhca1sOR{zUnG=-~hiMK7}L zqY3YPI`TdYAHNd2ABT^Z6Yt-M5pJb8_AZEvpn`Sz|G-#ZQ34nziR0e*?cREJ89jj> zgg3vO__y2_dxy-gguy2%PW-20ZAoE&+tA`sSF}oPgFkm^O@u;J0)ORu8 zV)sSvA5zD?F+4h>UOxxp$BT8xKKYBpOoPa!c=cRG>mR+;7!a>@?{E+AECQ_NlI zQogFJ!5mixAFUZ=FeKT~z(_Fdc=F;p8b&!JuX+WnWuz0`As6dz+Eq8|M2q4U57a6DJH?O7m%0vgQ* z-u@|I(gR#pltzgf0x+@`_u{;rK}Q5#LNBI1xrknw{e7vzKQ0LTqT!hOA^1NAxMi>} zf2OW(yr{jVl&t5Ex!eCO#@!+X`4B*7~*B+uNMAYSz%KqIp(9A6Ad9r=6Q$ z5UexPI-&dP2Y;2B75<6O6DtyY8D9RD^1lGX^U7Y3P+~Ta%Ii5R!4y}p3Ul@Z>N5hw z(O@XZ46tP2T|y1rHg67`6`G>Maq^bHxoFb}xi?aFAWRu&N8HpKsqKB{e%xJF#@oZCf%nJma?=EZ6ykX+ba$FT0XI=g-?6H?XmRtvLuCFD6 z&BjbH+I|xogJBHo7-lqBFBmiK4HLnY(4n_?9?j!f%QQ?iRnd~VA1^wgW0EdLODIg* zY6St67VZf7mjJD+^DY7lV6?R4zv;*vZVc>-?K!@CYKR*{za4qLTX~8jRX03Ve-cQ! zS8()R8a&;m?u&Z`^d{i>C(75r?g2hY#fHlW7y(|#h)e+B(fVL8e8xw#g5ucRSV4>X z(|Dmpy!zpK-3rW-nssgXCqCUpBI$uT>iH5S1<#7Q)U4}V!dL; z1_5McyKyZZ&pRfq;LTq?dzPQ_5G?LAtnaLgs7Fte1f4#8`h%NiX>@&v4Ckhr5#Agc zwsnv=<{UAjg-r!`vk&uq9XJQW?i}S*fg!igHYUKfdE=Z8>tlk5ce3}OJ-@kmzqbjH zYyu?QJbuVU1}6srppg$S9@z9y?ZAQ4hYsDgxp~JhF|4JSSbMn6y9PJAwr)GIZnKn_ zu4^*C8|bu4g4t*L{r=Jrv~LY)@V}LpL05)=qk*!n98``9UK))VLng~8zw|CRsmb@%Y9>dys^)xc4w=^Zp2#{3Ju5vPWK%eiysvc38putvTD zxF0IZxn$TFMUvRv5F1p;Mqyfw#-edVvVKQ3*K|hO`EQhOfW9G_oXvL)$rd?QIN9chg&XhU6=!2XJ>|IjTfCl}aUK2^gSqAg z4!pbntsXSb&S-P5wAL4hw{as%Y}>Actwo&FbR}EO_dw&k3^;BUvNtux`X(LEBerQ* zD4zRq!|~h4Sk+UjU9Snt8;y)N*4 zZUcb*+y%**q+{k8E1B$iV8JwMm3KrY(+ot+C*oD$`JzChiK*wDPEI>m*BB$q`-yEOhhY;O^;Zq6D(q~)`d=tt02@2a@GhkH zXjCA907_D!fyVTB_W-q24QBjJK*95x+WF;B`z7ry39i~)H-Slw!G}OnQT%Hhr3pW( z?f(Vb?D}FJ_wqND?}Log!Kd3O=-ZQ7HOIu7zy!I1iQcG?UMVo~=Wx?A$+OqP^s^V? zau{&&pvv4P7}+>=RN|7RL0xtXuyOX#^)KPH>BkL)khR}GW}AyLzjEIr5ie@$?FyfKQmv|1)a<791ZBPVMwBkM5fxyLv% zJ(e5}c)jg%Z&Yt5!Vc-AKH|rYy%8m|zQM4LG#2?F!4jiVp$T0CnDz$FK0RPI)>L&b zs58?)dHUe{{#mNpYSpzn{4<8t0`BU7UjDlBpTPoB#jY9Q4&rzj1s3Vge zj{^QNW;t(rFZGhU0u@|GR()F6=M$UZ%sTxpSf?++>c?CFCaDl7LXvI3zDSFGG2W3m z$-1xTfWkgq)w+J*Y#P}0_VAED56gUr_o}|SK%Rx~7g9|p9;>`=fcuF9s@krh*ru2@ zO-)M@ieJTrUb8bz{Z-{=Jla+h*%W^EJ}ovhZj6q;mStZ$Qi1ygl%gGAOGg<<&8 zg3m2bysP^&{k!^L=$-_n@-TpW%PMFNzIF+|9(f!tciaV+qfydQs|b4kqqVi;`?J46 z7&tK)9tkt-2zV+9xlJtFq+t3R5jeC2)>oytPO;-+jd-LIyTp64(P(t4dOfq~!JGP_ z@~O;2DfuTunDwI}|1^AjDfWJY;*kH7%o#zMAMhivfg8E)xPC>@Z(IN1X4FNMMicQsa&kDCMaua@od)=!Ew?Thpn(QGl z_d}V_@I&w!Ue2&QrySdXX)rxx**sd`D6D;F;>&DVqEc{nPPr&e}p?{#h6p(B; zlYW2>IX+va3HlX_z7Z|&@vMlYs7Ye9BwUVFLB`)ZpCCtTupq&_+EsnO1#&rgI5ZQD z9`dYN!-`+6oz<=QB7zaE}hdcD90p|H5oY|;- zzd%&zyxmxc)pWyLZYP#iU#X=uN&?NQw$Gqb^K(a#e`1k`U-9Zz=q(8^)^wJA&0bM? zQuV7zyyh&=r2EjmPAkDqw@*!?;n`#b|2BiQ0@hLv=g1HiTxKY(7rtUn(TtCh z^t@$yUU(4)cl!v})t2-5z&Q|F^iu%te+ZnLz1UY7RX^$sqQpjg!0I>7;>KaH+p3lZ zTP$!KxSD}2B#D6GryxmYz_;4398!*hJSSr@Fec&^aRziRHp-TTdBua=hU8bE2Ckw< zWA6;rkMhv|06_NSqVptt+*zLmJM#fBnqB&8^??Uk+_G@z9{A-?A{Xn#CP^Q*nTAs} z1ofEcDaCD9{g=*+t23LJHSpo|#w)F=9kN-Xg56~(M((#Xl_glkb;>E_CRjx*EKQkJ zdp%>UqX4}l3H)3)rD?X*VNZnQVD<8X_}-4Xkt`<$&9qS02lct`qJHe&%Ms!9ZWr-; z@BIfj^#kkENXJQNf97F_a5E8N@!y4Rs#(q1Py;L*KnhgU-f>DtB5wht{~dsZfW~|##4|QL{>(bXui+iT<&Q<~31WMne7#}1vxc+pSPL)2 z&zTXe3NO%t*?$ac5t36_IKnR&3<^^U)>L*kL9G_n-xf@7K5s;h6W(e16by7j54>o$ zh8lCR-Sf4ex=iilg8&qG0-g~Y0Aui}!J#PHnAKfI@$#W+waGQJk-BY@>6+HHqy6^7 z5%~S)Bh*aWs#8B*SF`wo(6&DWY=ufI+o#4B{&N69t>n+vM}>zLJ>zzJshaj%m2hE3 z4cZ4%c0i@g8tOM0TXqp(@N0t=0K%%Z<_8NtXn1{Ypr7A2*K;+0rZ-2QHxlm-V)t$u zTm9bxti7xR;KyeEV2L{8ut?!hZL`fYpNnKsDXR(I zMqTH0!99q)|;;@)jwsI0~D_{}zW^~PsB7--&?jKO|x*PY`vA?><+iOONA6`f8!O_KjGt%tV(IfM#!wN+> zxbECI#_{cp^H-J4vHp}Ch>gKEm2 zDLaUa^DUW<+X|azO#D`FekMjquV3@$J6h0RP1vj&Q&aO%Jd5JRfar0xZHJC9q3>&c zZEmd!yDIH14VOa`cxG`U)pdwq|xx*SA^?HF79k0Oj;c5`?G@zD?wLW$C!)kPQJPX6(ZN5aX4HC( zLtLxg)rRlH?UtRaKX7m+rkdWFsrD>C_Tu#s1G~!v8UHt#T&(1hF~`Z4eI9RQDvT5$ zjs(GFnhNfG0{g_meg}|I398+c`SbyjhzQUOOL(2DVF=$r3Vca8<=h8L^CKR3tDL02 zPPzSoH&Zj@kGKuf`#s&=b12r5_9K3Sx|N3raWm~Pwi#xX10v?V72n8B>2YXHc0UTp zMiK{pY#v;lNVjb4Itw=gtos0{bDpzwec;RpAKgRLF+v)fwU}bJ_FnE7R&&0lhONUC zukJIvn|=Fm;H(m>^<`EG-aweuHF)Ph*TU}bVP8bQt=v!Yz!DsQb)#&BGIPEoSH#hV z6k3zi%@vSeh^^VGnhyQOqRwmcQOZ&l#A>5L=RuaI=pU*+a058135z0zy)Qbw)e3g! zI|nPKipfmtPGVi(t-083&EG?l@HT2i>9Oef*H+s!slUpgecN!ldpZ{8S8yzBn!Q3p zZ+X(&VpU^5d#5hAXQp`*V05p@7d#u-^S6Y2dByR}lgFuJ`Yh20RUC*7{aczUO#i!u zRd{#EZzLge-~Spy!=B+(Z=1nk@7`cwx=O~K-^!$Tpe!o~l@qxR8g17>V--`VoI+>{ zIXjeW6_OKSbewYVP!cwisBr+`^eJP=OlzoJckmL{?0Q{`b(K0S!i}2lJCz!t8(KS2 zqh>(E`w0m_?Q~95wXphzAT`_vD6Y(RJdHQ!y5}ub)8N(CDZ^op_YTDd$kSl9B~q;^ z_J%_P_CC$<{Bjo6IesPTEn#yUe<^FzExR(;5?5TFHDFsWwqrKy;~;%njXY+YI|y`W zBDa>PwHXgN@tjA&0|Kv}p9q|zus7>Q(|nlH71M5?O|U=nNce}E*Wlp-#k1=RG4@tQ zgXdyo8!gjqVEzk%vqo8%XYIZTbosBDHMK5zq9fT8EhN|2*V!4+KMDZe9P;g?oo@5l@q9*E+#nieeWj~)dN)qaf6sCEF7)LzjdMl{Q< z)j}-@@E6^=6Ok6KcY1SR;$t?*Ja~5buRs%gMcJpE6qet%lvtj<$*;m(Ati0FG2FrG z>mRz$vo>PFYXWMwIp8p3{RJr-N!hC!Y8XJFpLG=NPvwn%DzSQdQ)m z*LhYFLi31KZ-NsXf$Ir-(cGh(nwi8tXF*Mk>}Y||YO3+&voR>Z*LpppXT!dr`A!u% z)A>xsjD<)BVxd03LKxdNh3?2qo*l--V_-;tk~P=Vnu1NJ-|dC44gNKtOD%wJ6u#Fsq+X3{Wj*o=~`%}d;KrnmH|>? zR*gc-wKp0ZVau6QSN3VGz2J=M=aIU%!w}f)mVc+oIE^sSAm+$LDqY+YIQ^!kq0kI; zT8|&LbnZ8B<<5lz)gY>=Z)?qrjDL=q<463RMpVj@8X?hssBLO;DHaF?(1dFOn@KPn6oa6uy6?BF!`G6p3YhKm$$ zQhbZxk6Qv~Gjf01XxsOLdTQ$c=mJh_ujE3iIJrgQ3B8n-cU2x5UArRfN>R~V7)oyN zh*OURMyz&f;L|^`*SABB%sA9>7wnTEU!n;*3Gg?pL5yp&{yz8~1HS9@J%oil?C|q5 z0Nd*W&+_eu`bQlCbXr@47l|3#EsDE`Vw~)meHF#r>XIajxqUm6i-FPwPCqE(7h75G z!v5R7?V@oiQ!-P=%l(a-&W)aLze5CLoxAv=2-%Vaj-18CBkL1^cv%SxW83KP8;IG&LG+>{S8c$D7@%u zsT-PiFq^!-z9&&<_UQH{TUB*zQqp*oFh9X;sqIBG`*d2ZYdkr=qR$e-Yo56}~YpK@jvQFaGHv8URkv zDrlJ58v|zvG}0z8(r~~Lat7G2Iks)uuA>IHF7p9cS_?kILkE4By37X=I}_nFMEvc% zxwzP{h;24R0R;<8PH}^U!_Z)z*s7}?Zbha>Leupy0}180)xKlcPQ##nU$qCvD>$h? z>4zk+ zNZ4h}ux-aMx<=TlsByEsz`%#%sOH6WH4zs7CtXAw-J_s}6KsdifXUEw#8wIpchtb+ z)zG7s+ubwtFlb@pI5oL{z?vcLOCKa;l;tIj4)3ue!`d%{}ZwYcaED2w+4Sw9pwRZtPI2DAv2)=4W? zYjdow`Zb#bp8#oLn;whZj)%SYJ!fvp@*jb71{ecYW6!RDKy%;fEd-b^YYe+>&{5tB zshCe1M%dQel_L@M8V`Dz-1r9Qkv~^P$_>H~lLFduNmgz(Wj@WATSr*{a4ieeZ%oiE zFIcyOJaIx7Gegbvi`MO{uotndFRN~Y*xX009&u3vJmP`jlQuK-$AES=v1y7MAd1}& z(~w)SsXD$%v2&o0&B~2TbFIE+`L_@~s1ELInlR#ALh7E|OcssbF)GR9hT&HYD?Zc3 z&Dz6`0y@&lV_g_@RHcI zwl*iyaPunTK6W{6wQF;>zm#Zpbx&-oApIYkhrf-5g{KAAGLI!{qlUx(&$pKbTXt3F z-F@~sXYYOX*?XV)oIB6sd-u&lzkc2QdRD8|tro3$Y9WDyg%BVFSO{ae96=Zzmm!!i z6+et)$5bXD6o!fuX8=MulHgw|f0CHlcB-hPoPT8PbBA|dtBc$9Zr{G|y}o-`!}qQA zE%j{ctSwo^0}xap!P&rMwZO@6Njg3?4c`^Y0Q8O=8FskkooiaHOU;jyz<--XgCqse%-UGjQP`9q+rS3HDN<1W~x-KrVI zz6Z&c*jYwIxlJzm?siL}N3LDlvmNTw7}raNr}OdGz$0n47FkXgsLED~QT>MPlr%Brj zEg5~AN2QX7?U6~UzB$N##39C&yc;OCq!)!(ua@9nPx-D^MLr2I6mIgWL{!nsCm>z> zc4RcmMi3$SimT&`wpI5F;};=3G42KUh^?vy~mP z3N?y`P8nOEy=5I32Ajcsx4tH2Wi=p8wu+rbU18)5pLlU7TO+rcU_XRy?_HTbN@ujHwWv^!aq%hNbsgojuZLm-Qf%?f#FlL$`p0WH zD81S3SnkK_mj2WD8pSnMbKl8u;C|RrycURv2!FZ<-J$RHxaHJ^=EVc~ zjQ>Y#EA>h>vm_K88pW>7>y;)C;+;wg;m*;QX@S~`i zB<(2Lm$nko9XQO;4XJC;k4R*RmW)IqBBcBbMf%1pZbIPw*L%(z+wH4e%x%Ig zmnauAaCPeRGefKfEP&tz&P+WVd+x|~$n&Btz?cZ{d)y@vYJsWPjzlS-7uckc0Z~v8 zRIVR?zP;v(UhR5sBQ=Cu?nPb|5_c(-5v2yUfw!D!cs!`%zp@h_ylTx7bkpNw%c=2@ z;!PT!@!t%YqiG0nb!ZfekGn$)Fb$h>(;wus45|P!eQG+AW0O5N)R)YL74%5hcN3mG6;Ojn$W14Mdc9dD6 zu+%zOSnToCc7ne&i7*{L@U$q~2UqJ7<9BW5w@s<8w6LhXNp$Uair)WMer6tcSPA0L zZ%!r&z)!e^X0%XNEQxIPUb1n%x8g@6OM0mY5e)@4VPM|L;!Ojv27nf=x$0 zl3N38*LMaRc4JxXcpbh`Le&+8sVoWx3CU!{vJ+{kQq^D{7ren0C0n`7p>O-H@AMf9 zNi#46L$U$^3dx=@F&(5R89VmNHgP(@E^ce$r1)Ny(ys)fUU%1v-gB}eO}8qmDK;%a zY;RDqaH$1&23t$6NeoX$o}k>Zyx4Xb6Ncw7ldBOdj?^4(@vuxxGvb!zLXxLdmuY2$ z0_*%GMEm8O>F0{8eB=FGLwZzfIIn<1__rCNxAaQfTo?FCUL~7MBOLa` zX2>A6(|k?+nIPo|i+leTvlE(`f!uut40hEhZ=l__*+P}&m^c_&hDGbqeWASV?ntiF z6n)yqyx%vH1cH8RCxay}-&X`zutF~jQF>=6*CW-XTuu}OKhAX*mhKo&<a!xSJ1b zp)#Ml=T@Mk+dQXrajU4hhPFGnU)%_YV_Jqu2I_h!*ZhRVBJ$y6znUz?S$dh`)nf^) zZ11s5ceqQP(0?eDaotk=<~8PIp000rIdA%5VH^1UnK^rym0$W~Qte%^@4N-GGgqPM zlgv4UmQU@Fxo77 z%uR$>&+Z=>?}e<}3%JW6qVD&w6OPM-^@hrH`s?Ro!w^=@bvp*~_XS~(lBVsIqtePs zJW=durQUY{N9nUB^DHuJgZ28CAb6|wC1Z2lW5rfV{r+|k*1m~CcjIy&w=WOdE2Gdw zCcm`b;<bseE{=6jcx?1eKzy5)&&YvA9vc7KAe8!e8XrTERJbg0~ zx7`uAPp;D6oO|2cpQi1JThN9%C*HZ}D^-jRo(Sc(8@L&k z^f^5jVY~&NFWbvoXl zy$I`FSK~;<{p1;+^(x5UIfs^0d-?H)rVp`4;2;B;Fhw7fDE39oGf6Em z>(y5LM^&p~HLb?8&*}oehb_sRhDK*9@2I|-uV^_}aUO#hdOGKANA9eDl$R|O4RhMI zy8!;l!s|!eR>`PrvO%-P#NHEHXZ=0j^_X;OG(k1MR&^jc_4;zHw$y0cKYP(pb%~u8 za-%^I7lkfWJZ0qcXsH);Mm&J0_T5@(tr=|+t{9u;FBYw;RXYt|p9m9My6!JXAl62Hi702g z+?9?=suh^C^Z>Ni0=8m%>+p<5IlT!Ih1s4>4uESh^S9bBBzAVfkMAO+!kl(7HyT? zYS}B-yyT@I9~n$vrjkbyaqAUFHXrvV^}e4%1o=;puP+pC&!=B^H=}uWo@zhztxVO- zi|-x!!oq6x0IDGR*RsKlsk6+_##8%Pw5O4MVOqQzO)cPSODqfmpmtOe%RZa>=V zJwtJCyN)Yc;|DC$G%aOw@@VZ$1t$l?8w6vMNciO^efKs^4HNg+CEe*NC!H%-uIT+} z4DvUH?*V3C%VSSE!PnclB3NVe!|-iS#gx56flGU5TK@a@rW9_(KW~wkLdgBXdww^N zk0V1%6D*?W`%Rl?Ud{A9$~^X>rA7H4553PC0mGr|mP2ZYWH%6wW3z0@1wZe0DKg+! z?er2@Na@mKUVGB(`dhGuNu6epv{BE89I~3ugq5(V(TRGpA3Veh2p3 zZu%~ZB~?DEzukB&080(PX8#_t^HM&&dto*u{p(WS;lk6L9Zgo8BybPOWW{#>V>%FV ztc5EL+OHYyWyYM2vix)??g<1Vk_?>;iP0Fp4@b5%)_jf$R~Rh;+wj;wrnsR;c~^a` zR)?ci&J5G;4+3!ljACHBvKpOkUcgz(lc!7`$1ZC1pEMrg2*I8Noc#YS{3YCho~k}S zpN=EbB~I3upZH>BWC6U|i{ov*2{+ELZ*y~uLd1aKBhoZ`jNg0jy-!d{uX}*%1GB$| zj*rX;rJXPb-Po=Q1QF>k034C@O%};w*Q`{F_Zkl{^z7|w8!Vm1V&JB>dwex8y^WI( zmz9|YNoE+)J$%#-tL>!`v^f(JotmsEez`pAr!vPV-*dv%wh0xF%c_k77gYn(9P>v!c z0!suJySP+)&iTY>w7O=ke>SeC8TWibBJt(m+91#dW%(EWkBMQ6jfo zzM?3%%HK*-5qi&=q?|gqnP%sWAQ8CmlD>xaI%b};num%Zn0T3 z<4TrdzoJm^r0yI%4><|KP{k6ICFAXluc%mf&Sb{yuL0@&S72oOg-eAe@@mh5KI@i{ z^@yOWA5DI;Kby3%`}vt~^tR@W+u8pW&x&ekp2~Xt-x*StVr!MM3ae@ry{L+wFl9Vc z=Y02~g)e!0*)Xnnd=1;Nu|rwMcvdliTDxY;cTkKdQ~0fQ0pe4$ah`tao6>DVlxF8S`5P)q`#i=pl;k&%I;DX z>#Dj37&|UHCM_2|uG+2&xspy^3;0n!r&TW$b|&d>dvi9^+Mmy~<|cEk*)o>f$D);( zQG$Sr%CbkLv+beNr;29zVDtQ+lsq%2R*NY7A|wE(m`^nRyzoB&hi=V!7DoXc$r<6o z>$$ddIvw~5VBvlJ1w5Tddi)%`hLHJbh2X`7eb4wJ;hsBw1LJ;hb{oQ>JG41{;y7^w z)hC?#RuFV;;mhSGgdOM|Q{WR?Nx43m;63`0x2%s&p7Xbss3ITFMOf ztwj0{zW__7!ufo@tB2eOE8f_Eh;7=^bljb!6GoX`L4j&^Ei-hD2+XNXWDsUq7|7rI zO~Q-*Ly(U{8u^b>o+Yp|G3_o>K*q}p_@=Jr%jlwd%V!O`~Y&G#^;mT4J<>OqcB%yJsWb1{2)WoiD^X zJ!5si&={~=7NWWl2AFvC12)0t-P}@g+3Y^-c*@!(Jjw!!`)BuxW_ECU{ppp^z!vqa z_NM`)6sBkQH-*0frn{W0G!I1wdFI-g9ox>Kwq!oav#W>R;)Lu>{t0U<+9e3tJ~sp| z6KmO7Su=*i)CDX(p!95@hTupET8}CnRDu^@r?|dX$4N0NlQiah<3ibthRb~-oe&`Z z=WWlwPFeZNnV&`_QD4o#H-RZLJ zyu3csw6{J;6+Nd#0v9EEudz|m3pA3B(eepS^5r5@wll~`={=8Xgj{<|nSAUcwt4_p z_J$+kY;Uf$%xVeHE8*b-gcTn?ZdyKzzd?Bveop3$;Ac4^U569CG-t(mA$H@i>ek$Ef} z+|Vjog>cbMVKZ*!KZxj{iDmd)j9n}9y4-ub=VMI}XgIbdqiRH>EQ zEciO%vG}56;EBpw*LHu9--5=lzeeajfk4}fLs$!K!nv9mkjA?x1FToB7>y=JyNr=m z+4dDs8|TXgw*_WEvK6}x%xy_^Q=^>0t^$vmDGR7)2iBiaJUX`lUb}m4{8^4n;0RXv zGY~WSSX62B8x;}e!){gGFfZTkx9q^Z7X&pG?fq{=oiUZ;3`0yoxg7oW1+^qvk;{*BLg+L>AME#kz}Dc@g!FJp*< zo3QH3lN!OzSS&p{5|ys?!CmRTs@UD?5|TNcK*b&U{^lu@9!Ya&-^Iwq}fNOs}F0eH%*<->aBA>nr#Qaj>AZ!d`o2irNb~R@YUe55 zB1Xij76(|~Ak;9p6mbPBX{f514+6wJ6xh~)xYfIxw(p!JiWI-0bz)x-mRXq3J--TB zEG;~sGsg59rnWSf>9u!m8Z0_&CQj=;^IuqO!On5UR}tJ{goaV*3E)f+6<+QF^Dv0S zuG7C0_PNp3@vsMb>`TvKIEJ-$&jfCJ&lhFb{7!6pZ z+BC-}@igik-sj?cdLBFS%2$73T4~blf_VQ8FhGU6exsKG^?jt_ySnXp&T%1fl%jOq z7wo8jjeuiafE(%+L1N*qbjuLA3Dv0Tw8nQc<1lwws^ zF<`*pR1jLB_j4xIaptPDCm;;D&M&(S8vfBIkX{jB=KQZH15$=K|^&mjLoGG-)?(B1<*_!Iws(|3+Ufc9@JigL;WM~tUOI&}^ zf^bcEGJ+uN)PJi^%5{=u&%F$5RC!-US3CN;%CY;pe)+uNK201X*T$v0hop8AX5%AU zdYHA!xL6WA%{CjTzF#bDdDv@i#3}=haDmduxJ^dMb;qYWm?l`4{p#+hT-s5`4BIQC zD)QuOu_)qgfc_Q+nDWrcIPvW0tvi@raOmA+P+Mq66?Ntrg+_)cn?)<*=!d!; z<-2d7tYx-1=eJ|iHQSgw*JRW2fUJL1I&q0O$%x|a&Ps}dl@tAYmn4|J;)ACLx-$Uu zEj)=MS5W1q4a1L^+AxLhPHgH&g`ehC9Fg~^$aMT9j~z3mex!YXB!^A_e?5e&4o45W z=J+bQKJ;m$XjZBpG_ACX6l7p!Avb2f<5K&>xKS3_h1Bv(Rzkj9K3T!V(H&=e+qAfA zh3)qc-;Et3&s_gI?=;pRdhhGG%qZEI16%O>-u7YP6~fsOb;g35YAfGwZJnwxW&`0j z#jz9q8HoVX9Vqk%K)~Mak;v(kaI5+}a@-)ro@2ax=FDAZi?$_jRB0<4AzN;`CSL|t zOtUpz7{+e-L={)Yzd<$0B>t9Kg~-A4TBV*W*X&9L86dc zIEmFuFxYUZjasGRcEqTyv*ME9sPcd`rG|7g4We)TvjvM<}5h4R~hm~`uZlHY8s z`PI#p3XL{C^!89)VMX*dF!#HVkDMnWbqDYTa*pCBorHvw8QC90hJPhjO0DKRp|5)f zlj?APF&J)7)5M|0<{wCI`PomKG~nSoOxF_VGde(vR@ta^gCVxHC|DxbwGHZ#K7h1q zUF8DE(WA7SK|*{6)gp^58^tz{F9TmVz7}9_`PlZ`+6Fc)3M9JqHi+m;mQ!qg;(flm zM;xE8Q2e}Gw75nsZeDZv!MrDz6i&{Ratm6oX*X`JuAJ+Wbg64m1g`gUdS~bS-ro8A zd0%plV!8KRDDT?KG55d?X@nKYMc+GbrR+iEq0h8hEvwybzvR`q^yybZ*>J7sB!qXR zD=T%*D#t3eXi!{kTWZ4hf10a6`+z-WE}(bsa;;`i3~;x!vQQo4Jz3 zPe11x$RZvqzLU64GY|;?5RJ>+*j$_5c;m%;NlRs|} zLHgG`z6Dm8bJu|$9U6*(K*bl~-#3&Bh(nh>05}o)q(W`wH~_XAl&SAKsS@;0bwSpD z?^KYtX>%HRJSNPGDUR%TBeR3h7J?{u7c83Of=|4~S_pVG8mxcq1z& zdFJ~$#H8=$k#S{OvAWgdPd}b?T_=nkKvlkeee~4_;OSom>cW*kj3GK-kCahN(ZBHB zKTznsWmlx-Cn7h zoSDYS(T|?s^ut4)Hr?mEZLW=&D{v=RbdaJHtj1RMXimY`V|U z$7)tB6-|k~GFGNr@!f2S=QST4&k*Yo$=)Iw+U*}X`WLRj@os9rzr!8-uHAZqIHJ0r2T7KFgw$kgxz%EZ;e%VzfB!hZWw`hQ7*ZPt$0KXnF)K?XRQwE4*Z^2 zN^Kc$q>l#TEtD#Uj~i&TP2FH)6>Xp8L3;nO(QU__&rz8M96S!$MeMn4;QNNI%gJVJ z`i(TLGlnsaih&RUjlGsIdC!nxLjqPX+_Z0-hTk%BMdHsPxBN%gcQw~DK%UnpKcl;| z`4b(xuDun!a1V~!aeJc+=<@Pl8%6PnV!H^4`rq6>UcEx`m923FC*vhpn^`I@U$H$l zsZal`@XNw~E_CwV#O`cnaE|-upEU>llit*Hn(&)|-(RAv32Uw!n{AV~Iv3I9e!XM* z!6+k?A!XO6v?GzqAhD6?9ndo~X#M zJJDtSB)7k%T)TFpE55k6{z7GXDlgTG)Ya&92E?&F0DCW0PoaZOrDq1izVcW=FIm?6 zL+^h0VPtxz9549-#V777;mXPGpw$RWSuX`ZF^pz5wiFMGiQgtHt?YEmsm`J@M~|-- zw!j__Cc4&%6&{}8uUlmf04Adqc~-iyN*GXY;Rv=u)4Fdo`kaXb7JZ^$S;K0l5k-#A z?y>NP0`U|kK=&+lyB8)Uqv$*F$7M`}-@=Lwwnqxb`|WPE5o6ITOO7!qXKi3fp$vrV z*sf}yY$xgO;iOjb^Xkh_01td0_EgL@X2+&DhV0IYYH;%LOlO+MsZ@8T;N4qnP%BJ( zo8$5EI;xce_XcH53WuMD+<$xwk291JE6y6YQOzcR2UnGu`># znx|L8d-dk2U%&2tJ*(A&THP(FHMCk&YZf3I!sH-qz%1h+kTJHwmVjkRjD`hb+1N2L z2CtRG4p^A{Nq#tlEEF(!NU-DlNfz1XR@IyOb>fxk)%Av|?mELBzHjeu7u%6gO4KzH z`FFN$-PNsM2pGY?qG`VE^~<*Zl__H|C_}Peodg^1wIJ2$`h5Qga6MyXdZMtYI`|gk zuvuWPXI1oF7#{HEB<1*PH`lCm7p;+oWwUF))45E**U4xz&E{h>(tYBliim{nn%caG z1*Rs7kZ#0kIt2nI7>K>dVkg#xsw|l_>K{T!W_znzczCMlTOPUjG*6>1>BIod zPm@~vt}HBeNzKQNigPDwCNBNVg*ynoKyWjuNuAcp%mLg{E~mQZUI+z~7M9*Ubw7Am z_9f10x`UGmsTj`uPyct}KNeoe(b{$08)awTv84423hllJ=-+$ZbMQfv+D`WNrj?{t z@ZNU~wYLAY@L%BW)gGvW>Llt9F@o)CyX_0+PRX?MX< z954q1G`DP>(}`C`5afIXTTW|FnUtB{yu}=n4fd^PCZ#FCvpruI{pF<^vUFGA>@>XY zD%(^!^hbq%1GcGF*xanEERJ|wcbgVwy!CsnUR~=fl3rHjbh>f=$tT|i2l1FhntW2A z4K_&icv>W#tUeLG?MiS0fRR%^TQwy&@;+|`?Bn~uw$vw1?Rh4vBLbV(NH+(y;1?A! zDOBIP4`(qs`P%~u;7E7fC6t#$L$jP%rK<+B?cVvv9}5|N81R~RoSFd(8;yn~-7gcj zt}xm-gL%1nW`xngG0(VxK7_)#f3PI#T7u?$@sd~*ib?>>=4)%eNASlv(p0yj^kTrD zH`2gNyn#}xRhCbj9Pj%Fd3ANjnUznBBu6_D%dU?;_2iTB0gooubmrLd$w||p^)9YC z&k8thOIVLfbnMuh_H*46E0Gpi4p>Vmjc}3vip2uUcNf)IMtV@Kp_nt>Z|63xwBNf% zUUSwl=C9kJY7vaQmw#9X^?FKjT}R@C$2)N9U#vcmn#I`kqFXH2HXhm!#M+Oo_lDw_ zO(VXXEA&*R9D2dbt_kB&$lj!OBZQ=$hZVY&KPKFMNYS%v0{!f@Yj1Ugdl&yjpM9O! zYr0YwTp`H>s%Vn)e+jINgwvtnxF(xly3G>qgz9YwNSO9M+l5f5TXIxwQ#JjCTy>jQ z+g3Nlz@u8mXfS8%Ds~hZyTcMcto@IKeUjKADJ95D9U26S6Iv}n;<8Zv&D)K*?5~B` zuPvova>uD445fYf@)v~d7(AMauoJU-ENe`+?G=%jGP0zYG`X#_P!zGFt1@EJwCYJ% zecgdVKK=TmJhyvbN9Ejuy1Q$j5r zmAVs4-3{t)%Vd&xq61-20{HP$ArBuYJnLNMmkeWn|HxkPW z0AuYtqE^s@75wKsBGt$97u&9AOaV79s@dI@2_BuBTdV6ag7AM$vPh#{wU!T~RKRbh z)%SA(J-)nX0KAKzgIlUu0Pox=deX00pMO7JpHvysU&>7Bn{t?seq8ulu%;|u(eUPm zm~>l)98Gl(8R%Yt`j;(%o%=lcHC5V))@rD{TGTvbqgp4>z31g45|W5>O(OBgBOf(w z!&SYq`i!T$?Mj{3A!l}V8vB0uTUMytaax^SY310V9NoN@_aTgYj$k5Jb__L?c{wT> z!OZI%Z@GJ&m;Q`PTvS+~j@A3m*_@)|cyD6d!2w!Gy`P1Er7h zvg3R61b6kKYYJy=exPa-@pNK(2}IvN;g#i3C+%+7W>mvkT7|n!z(aph__u(br~vm%cy?Na zwzC`^#zt)c?d#}-YcmP4ZodTAW+&H5RwAw7{)hPkruvzllvVTH?=}28W=>8551l#Q zBv0z~noQM7gP(rC@Rtxdl)7l#v)g@wo9(-ipLDx>obj@Fhfv=8c7PCUVhPPn#n>jL zdZfFjPVlRFDd!4D?CRB`dG1y)wHXCyvcYV1uF7;0Pc_I98is!CJ)~1=xK71%h!r&^ z`?)Xw2yosvAxq5x2RJs2aNFhyx|_4A5c0X*kkYE1NjJH(p9MkP~ z?9rALqh%#hQxhpAzL;w1QUK5v+r>=(Vs=->EQWw+E*jJ}?p@K1iGILmeAcj>v}kEF z1b5cCPG?&;I~mZV+w0S@Gvs5#J*W(w0S7&@BS&9<#$j{E_2jI2TjU4a?qUM`v_|#Q@ESLNxu(*@4O1Wivk^4TzoJJc}NrK&g$5An4x2B zn&2ZnT%Np8CDCsxRd4g5ftAK)<;~BiYHJPh*K4pwg>)6OP*Yud;oTcS;GMtvPnIAH zYB@^+9bH-~L8QG^Wz|apJ#gt#0zb~GS7F5)^Yb^W(@PE~W|)}H*~6bx0WX@b8(f;j z<-<$)?97qOOkyiNa9FK1095{Wz=72Cz)az6;Y#8Dypspab7^@jf*Un|TD#<_!z#diDNrgcOMW15Dp{SlAS}bzirDo-sD!4?hCa(BOsO4k1P;Y0(7Z#1#uypUQ z&H0UvZRjS$@l>sy>VUoD_v}y@9XuZr;NF;M;Y;xk$Oq7g#`HCRAC(= z@ohKmNhEvZyS)%W67L){%}Y0`qIv3OczT!bPCXK^lU9UIS=_p>|c}z44JpR1&iup}-K}U#!v!GQZ9MC?nd*O1 zTSBHZDlX@0u+nlcWq~8iLat-_G3@zYtNKgf_QGBH1j*AowT5G<;p+Axd``bxTl0n^ zT}8P4ALWJ9>)d(VwcGi>ulIVK_f&V308V-daYHnwy}JVu5gKUR+_0U%bd+{y+3VF% z=)v)Hxhil>R!dc{si`Q+rv>_Ow|m$0wAt-)^*Z5XLZIL80pjD9+cqh&{qB9paDgj^ zek2`g=nkVg;&wJa87u~Gy3^Oy9S}dOnG<{uYZ-r~HMA6~$&f{qR>*eo?Xe z2e9V~UBu-t$H@Q~e1e8~4rmz$h_5*U;52e7gRoX8Jz#vkR{!|M^K zvcD}|_VNwk$ToGta;|0g9<1l%V0Yq0fxh(Oi;wskwKbDlGy4LX-2~AEoH*aq3_SU2 zY_9=%eNMwXd0C0HO7vq+iSUSIfAGh1y1|UF00!z36ubcRXz|qMFEuXZplF^ z_cZfak8i<_Dx)67iOoE@?O?lO7fc|#FK?BMH;dzoQC^1`!frLcw$k}70K6B}#eYJe zFD#%~;y_qD8%#EfZB5Q*Uf_E60=D(wsi&5K(HJQ6^l)abq}BdV0g}l34M3<~L}d6` zcQ)37ER53V@Bv;bI<~HBnV$d{FdgK4_4!oL1ziM*Q`dQ#F%^4id6iEgfC|{In(RJW zIC))_)7lwSk}+7{5&`VuwQwlP4Q}IyAbc{iE)a##a6ttN>(&;EJE&S?rmnR-Gdz3f z&@pwNfDb+a^ytMGpTVZBJE7qcQ+RRE3XQdOgH1pz;PnC5Njj@f=t+|BcO)+xBCve= zSye!e=?m;@UoB`k=T+6RT8?J6>L%N|MPt>gk^|oW&9Ab$79~i;@jC)`4*}eOUDfE` zF9QeNor^6Ls(d!!i>G`#sm5<)3DfWl6V}s7KNLPSSX2VYo*Fc6YI)mhK_T4LKnCdu;5}nlaKS{WrLSv``&sA$AJXwuGxg8%jo) z-P#=oM!M1$Q!Nhkz`vkd)lBsd938fIPWspCD6w#n)zD!4j``f1Tim|?t);AN$xSPsQ|E$R=M#t(BHw4QhD^8B;X z{ilyV?-cNEUBE}DrZwJCy>KC;C$7latv}M3HU{ssTR)4%;J6xK8k8LkkT7U`gG9WBY}C z9_erLy1$w@?~goWQyVlYyKkEmQH7u(yv@g`w)EXV3auO5%cBBKd9G-9^a^p=BrM<7 z`r5KqfyWgNF4IGPRMlc+J$Z-n`lsL>f8y~oxB7f8pK4?w{M#v2ikl*MzKSc$4SwHL z$Jnrl9Ng}+OTgX@1FZ3y^&-KO>dqzsB!V*)Mt$NjQ_mpgp32$G9t0$JXLFq0$F0cD zaI|MrxVV|Fz{V8XV|X6&6?#9OH57==6pNWy_d@bZ%lQ| z*zZocyq2JnlxaAJC7+>F^FC`5zzn%d+(ht21N(NSlUu+7OcK%wWdrt4|2pqOCt%ZO zzydDq)XnS&)if5xh81^Lgv)X;D`AOs@OkmwW?Y+ z?XQr2hIz0cZ}Vt(O|mlB!Og=*4Gdl3`i{?v#0lQSi6a3^TqIaD1h#8MzvfU)M_v-} zivgFGBa+mBKZOFxyF33QuhCM#koCgp!Yzf1`6Tq#WsdcBTSP{c8#cxp-L%~r!JV2`c~LF^6sIjWf~cwHp#FQ#Is3z!^Z%1?j-t*Mn~LE> z&Z=3T4|;s=VUM3wBQL-k-z^bK@ihKLfqr%W{!<4Jel|y!9tFr5*bd9CBzXaKVJgGT zMMoFyUawck=LZxg{40h<1@C(mghWoidcGr z(o~Ox9=VM~E47?p-yzLAyUrN52AzO3>acJm(fe21#U7=eTjYl0UFqPg*_z-Lik%`2 zL+qMZ3q)x?D%YzCowjJoo(coY6M!gLu5td0yqC3_Gx%dFD{a-xcZ#4^ckM-D;dNq#=n z@$FpUNg-~Z+|qa^+hia^&2Q3G8(!MslAG*ctUDW@!X5X+gWeJcVZ$m{v|9BeK6^8P zba+?Z{J9DYL7H+BwPWs2oICqfO?LK;qFVtB4GRE8<6_G&@q+Qi-V)7=4k#^cK)B>hF;0_8R& zd$5_uv__&!KX8d&CuD~7SGC?!$qDQ!;u>#=8#SMvuw7pMP!?FC^!v#@MJ$Rk0zcs4 z)cJ-Utls9iQH0@iW3VB`AWQiKTVb=9x2y4;2gI!&X|y$kIgFOCzu3NQ9-Y2aaeen( zV0-p_R|{*5ncR*#;e1t_Yh7yJvv2Xi1=n+KVc3}ip5@t}>2`pB%$9TjZCHq@KtatQ z@dRBewS?}Krh7!!n@fi0I2gBZQ1*gh#`;0wC$MUzml!}szc$A8E6Y19UCHzJsx_{z z?77i=pV19p>8{LI5CeEl?RiEb9QY92U~Q8uQn}s=AlFCH!-lm;rl(ME0gl_Avx#Sf zK5`)B+WKO+-b1~knWM&=ZI4u9&1b}f zi5aXNS-Ts8#FVGgX4T-fQgC%7HYrIcJ2~BlU_LQ#ahqfA_aGU%w8SK{RTO8VDXHqt zX|t`K<7VvrXAcwmHZ7QIp?RPsa}7((Ejv#K{5*v8UnaPDU`FV2{b1*02)516OxOWm zBCeln3%>`^eK;*KxjET0)Zcew)4EQDyGaudXhqNURxmu%Tgyn(pN0T`$=x@Nx`(_& zEp28|*RF-$A*`W)r3balgM+EY{&5zagKXFB166G_T2tLLbnMt`OxJR(uGD5~ZfYZs z9-9iDeAsqnBpbEH@^`aoZ845<)*qI)^Ks4GWUS6JRXx#;0IC9~PpR+RPVD0;MH|GP zLG0N<%tMpK!Y0hF7&?hHt83e#%~(lHR$W>H2ZWHy?c}0rFX|#efkSZLN&v*&Zbos{ zP9tWw51Gu)1aTus;0t}77ArS*7Y?<}p`uvLbXv(`8vW~C-NV3s#d9N zr0@K>-%Vkm2dV}umEmISKytfw0@7_on$PX4pU!O6V}kqmpWw3&Ag?r^X1i%PEjx~W zV`bmaY&M;6oR9yn`}qo>NC=E+ta((=h5IG=A&Dty13XigipXSp;E zy}mX`U0-*6$}DNti1Ag+_4!?%XGyW{gv*guofBHAlO;=yb&k#IGCp&(Y?|x0xIXZZ zLDzO`RUEeo+!$#d04J<56`NFD{U;+eSGO=zI5(QE*(K&Om5%Sa*3Lg=ug@Jl8qgxO z&4nr5pjHoi&PIvX+^!|94OQPdD$q*}hwt36mwGL&oxz2=p>T&gK6UJytz{INwoZhI ztJn`TB=+m?f&ga+X96=STJpIA&8I}Yj4po<7^*cwbk-(E81)R7 zw;V6&T53t}T;)j7@rz!mj*5>b@~CS!Chd^_5y7)|6oWr7-EbrcABercG?PS2Xd$oW z3>8{&UUN!@NNrf4R|tJ5lO28dZ~}YF>yu5V|GMt`p?%ykGEJbf26o)YM!$L68}hi* zXlCfCz&qvGlacQ}L-?Z;6n#L;w2(Q%f#B-;g2I;v2wo>h*8!xbhazbhW=o4)f?LEN z>eOG$*+w<*tnRFdt>z`MEqQXXb3o_%_!KtJNAm4Hy9=8n)yO3x_EYAdw2qsq6+D%i zwsYENQ-rXLd(M4?pDMfP7!d>URJHCiOKIE!g3F;noK_hp>D?u#=ol8$9s7{aViPip zrlL{Rltl) z@34;!Wr0su+HPW{uQQC$6(;&z@a8(o(4&bwOzgDehOW{k-`R3e&NAem;;KZEw7G1&v2Jx{q;#yyqejLVIY%V^qLz^WDeRkXL>08+w?Gw+)pDzk3x<={quo) zf24v^mNo)DW0z29SLhtM$FIksbDLI)DJ>@k&)}RRuoN{7o)jwJLkpYydn7#FHn){8 zYIAAoaF<6*`?a4}YB?{hqvUktwe1YuBOK4E%yP^3g7Xj+Bj=;Aw#3$c>tTZLbRf+V zX=L|CG9}cX4yNKHe4AHKeD_wZqD72G85SO_PQdEasZ|PX$m?r)rFSba?#kv6zeiDQ zyvWsUi+ln*w-9GPrIl9mEb45;lO5dZ``(I2A9L*Ju<*SJ>Onvj!6iKqzWeJ2jy;Y( z@&P|3xE7eS#dMrRvQZ3J)>Y!yRy#FF{7bSL`tEsDL_VdlPiQdAmEVV0@g2xMYU1k9 zmcC)LYn_+0Ru}W3U$sapC-_~fyZiR@A1| zg)U{jfZ#HmKUH?|?LwGOJt{rw_Jxn|sWqA;>TVnL?ryh`vGFEEtjR$`Yfhx}X93XJ zPKpVR>P~D-a+h4gru1r<(yN~7$>=UU1UCB;Y#<7#_A)T}{(`T|dbb$x)ZkJ4SU50v za0JD!P5dBBH4**0FpH&qMk^xNMp!gtUNw~vMg9(=$aoLimCZvwZFaX69F^gBwj0pm zHUm;9)CvPFj%`+3T++RGrF<^ngUbPb0WRktEjn7086FRA$1(TZ7j!*h9{Tu6iv|-N zAB##7mt4fKt|4PN;0pmK_%S__&WF8HD4jD}8oDeAY&(UhCx7}~$mQRG?^=a^VK%p* zVeA_hhQhsI?NBPZy4M|?(*$L-cVFzUm;kK|U1gk$4j|pZI$vmNt$BPII055TW<;U9 zq^Dlsf)(L7v+<`shvuuUyl?`zX1 zTurk?hN^*Q8n$IuLhQ$FuPme$#-?y>>t>(5g#c1Ot-tU#oou1%fSI-gtejlIi42tQ zU~nPrlMe?IR2NN`xaF?EbV?*CN2cz&dU2vi4O{{)g>~F$3y(i^D4(8R_bde%$t>S+z#ejq6U~ zO4!k=ZPLM$fm=FC>iwEFks^LUAlTn|QcS)1nl8%wD(=1u7o>EVjPJpj$hWNfk*$5| zs;sJXhdvD&_G|C!Y=2R!&?Q1A72~JC+h|TS|V= zQZ=w#2d3cjnO(5+w34X>xuP=7fqRRVr&Y)k-QOQz1ySjrzZ-e+l z9qG7Nl$Quwg44(w=^ysSP1}g-=m0XKkQ6iRMvld1kosw?Ta*CgU1Boox1$I4+ zacC#HVrXQf)J_1IA1oX%+`hvvwwMC|uRM~kbhej)b`{|}8z+K;ZPZ$F zi=YgbKlVY6ux@)+>C43R=V-gjaXb|Oz%TY%L0r$7#1C^_Hz|1Fd9DA$x0l9Pc3kJZ zs=7qb??{YeTU}y74pNIH<0WJzsR`hCesFAL( zt&H12xt?U;zTOb|CRU!07T)sh-;05xIOD}!KZj48TP}j!HsXHT_O!q(Nj2asqN{c z4F7*Pt|=RqIR*Hn;0?|$Y&#M(6wr1j&=m%F=r&l+qBvll=KMNN0`OsVW8qzTUZPX};FM2!Bq$jYgY zmbEZhs17?sl@=M)kRM0!D)y;o$uAFwuop;0(&$Sb48+Z{?8jx4peUEltV>i0EzKbf z%?Sr?8G-MT1o8Jm(4m4Ir(}4tMj9tKJ`kaoiLANG-{?Jo{hBA_B!CZom+fAl#G-)X zt_UZnIf7C>F)8E((Ciiu>b@_$;{1MD`VMf?_O{Y#w4;$Kd?X_`{S8yr`=KZKV*z#` zdh{9#_FxGB!HPJf(9`dD$3Jr=XV;I-rdEA(V{p1AktJ5wwUafIL!~?)8Bh6sUO7Cy z@3RKmYU3Rt%zB}ODIh?umw`vYkd3Gse)T`m!25*4E^wAsj6S8%?|$l2r_V8GBRj}^ zP8~ord`aIE1&2*a>qd3KqNTc11spAY=cc~q zm~uyW+x6@HJaP7o()+rBmUQw>TCPI$IZw6wi2&OQ5=V?)2+)^bcwuev&6EthXg+mh z5BTD4HX0l_iF5>VfKe;(G z^9U&i)+h6cju*gv{3Dj|dU#Ods|^xn3$o9ZN)&xq`TZsBM{a^Exh zyWfC2|2n<)8hq06N8s_@NS?np^uI#MOGaDqQs|q^66Kcq4p?cns5}&flVSjOIG)XQ zcW_;CTa+Z4`Qn=e~QpLx!_$@V~Rv6?b>_lt4=JD1F`27;GO#HryM|b~UB;4Kc3wS5vd@6xN-2BET9!WKDpn{1Z>I)>-Ax z!uNIaE9WITLTI;+20e!&Tnjua__7Si49QwZC#AeL_tTumJAjGls$Vx_2SqcYIJSI8 z=KzTu;W%`oYu< zHd>72&XHDqfCV_HMAEZe&kp(qbLshZz#Z3(7AT?IH+Mo9E{IYeL1g3a3ivg- zkx%ddv(WN-F4n&$QDb8x==GMSrk3(&)qV1PS>LHtKlq@HEsMLsn*r#wf%x~`==$>` zUg1mE2Rz_W-Fd-@QmW&1xHfKZ=^wWH-EPkVmGyb2@vc3x~rqhYwqN zlHoYxM-MAx#-HzmB|H?VlNZ8Z`tC6JElRyd*1kMF&q+|0D_*idNlUg|Uk`Gn`%0_? zw?0|T@`ck4r*bm%k83ewNi*z_TgCK{UM_{(bF)REqsZ0n z`ltyuZibm|*!s}fUA2Rl|1+xiJ@A>QvBiRkhBfK^MPs7rC2+?!s||o5^~m;kwaQwF z$Gm$8;Z~Lq$zB3fO36((WyG}r$lkKtIxuT1QB|n3Y%9H4N3jEUb1p+E_c?dMwkEnd z_M~5x{(Z?W#UtDrkBO5pSCOxZqK5fFmY1Ujqrzg|H#Z9}rYaL>Vt~AqG&%lSEWfaU zgv-o)ksYH$0TE>u%cBl)s&y5MC(YRpq8Ryc9)VU+_>Jj9XWOK=xjq%E35$nF`Y+p7 z=*2fTumD^sAl^vd^vqkrvfR|AbrYtO=IEjE|$AkW)&++KL|@qNCgOL9DHFD z`?hD>&*PODOE(Uag;}fGew>n2&z-YWbz|*M+ndLyarek@GSyR-3K0NTQ+5AwZtX5$ znxlE0W;X{-`>XI>k+{e0IRoFoMfR?Dee5`+bzicCIEar7-S%M!cwDy`+{9T6EqlIy za1a0v#bkXQAz$GvAYTjpW3F4l)Ww%hAzye{-gk-HN_I*0cx$y9)nhc}Ob$XH*ae^- z%kvRQqx+(JkJU*1*veAqQ!NPGmER@8Xn{wnO{4yP1^DE0UjMjxXAa}_+EQ5|f!VF% zHO?uZ+2aFJE;W=6Fple9DzJvn0UoYST6(5^%Jdu$+48F=F9ZcC#?J z*1RJ+dg~kx7tS8hf(0HH(j8SBev)V5+0xrfH%jj+V%LZ|?=b43DKv^zhN`VO{ar() zZ#b^G>$x`&Z_5A;AiUjEv=(U&G@FWc5DG~f7L#VKOIOK+AFQ0IBEOfa_@_FuRuF|hj5@k-LBUuAV&0Mx#v8xdEbzZUjbBIB` zah>M1iFi9b<|cS>YwOafNOliK{-45PyQd)G&7#HtFLuxtgp+@M(T>%{P3(W5yA--%ibV9$8#gv7Sxc>8YoX$36u*DMHu4@Vxv7sR<nD4mD7WLxZ*HtcQp0JMU;SC>KbL+82>n2z{2U2CcNIR&S>_d{{;0$>t}%gC z|HDY)c{7#lZa{RW4k?QQn!I2$3JIbH%mKn}z|OHvg}&j6>`Q6OO`_j1x_q+88%>*g z?JmQ%&9oiPHXX(0xh+Q%Am)y~Txx)qT`2U?yJBw6lm^@7*uvcgd5-)4E!eohv(uEp z@%eq+*ZvaD4oqB%{FAJVF0pzU)n>gPQ9j@Gf!X`s1aU*)hAEDHn*dShI9+L|^?j7w zESxy3S<&^a8QMfdg1u-6J7J$aJ#ddvMj*u-Z5D$m_bnq#=#o(f3n63tZZArQ0D64;W5xSzy>$%P}0= zXW#6vOixe07!3lKgP|8A>Maozfk!Z5dr=&az{mK2=g5}hv#R64t(kNrw<%e1ldi+r zOa+jR zr&=@KS%s7P8F;5tk~t195KG~P*>K;G*}k>R;MC_NeA3D|ku6|7ik}6{Wvc3*H#FrV z{|X*o3eeX{)N+DQ^GTnGrhUp){1g*GV;)Qemzk2-$;vqv{CUodjAG{4NXzB!3=h1H zJ>p#zhf)3>kJ{zJuOA5Q*MxWs;GCyCBVl}tQF~r9YrDm-)KLXjj#}YrGx>ZK)r;_;vwmMHyKE*X345QA6dy1o|m(A+j1H`^!(|kz36T&P8;>o zX-clnlZ9LE7|kvIZLXcCu<8`D(ueYYeMT9ule1`a+(T{x`02)rxV>$Qgrsmr?@@5XR^$w zjx}y#rbUm_^fb0bPdj~$JbE3p$_j@aCKESwdm)ZBl6@g-c%m0jAGX?Nu9~Et&pQdO z41Cn}9MM5lyG9)X_x%U59}(TRFE=fjY=l-2-x8MHgDM0AT%f*Bj=DTJ;kY*0;y`>S zZ(GwuuHVuBXu~lalP=#mWh<6X)tFku5Az+ayy5=#%~0+jB(vQkb`4N{O9T}!ai#;T zHBvL+k^FO^Kews)#3|#X9*6u`Mn4R}&T)s{IzeQ*seqT9PZIZ$Ym_9xy;@w20SN!u zV-DAaKK0jtJVw?(vTJq2wO#Am#n;Ev3=jz1*Yu;#I`s%g(_%t}EU{N4uEj5K-#25^ z>)CpSo6G$MV-pQ!2yOKgJf4rl{6X#im6{3(u$jMhe>1amazc_cy;*@_|$#WyNbMn*mnTBzO(B1{zjeX zv6N5@Vpn(&Zl?T!CE7g64}J+=;*n?z-6Fh{(1tkd~FO z&ZtyJ2FHVifFv{4ny=ff45;PFwCX-B!ji!+c}?X)Ecu*k7s}ABkD~ z`fz76!}0CU_Gudn>hy)Oo6HA1><0V^IJJ|eS$f4jg{8|ZcAHYdi!Asd&UETEG90uc z7RvJqQR&?zk$)auCCd%GXc+LiVMleyr?$O8fOtuDjD8@Lu42s@X(@d+c|}jg#H)wS zosKKqXxWjT8?SCQ>=tDIQ9akx1=mZ5N=Hj)@{UK*w_eLjMXxDTkK1xFm}GriD=^Sy zJfprhsHc$ z6YemI(-y-acs!F{t5v}hzcFocvwWat>%yBqfw%}YJx_RmGrrr1> zZ#E{;q}6cyvy902Qc$y>lcAkQn!hjoqV#RBLoKiCZ})n@i=7<~)-@c=Y{zsfAkZuW z)Odm7Ya6yjtN&D={2@YJdKNtGPArH1Ft2EBEO28fUtN#Ny z`o9BQUd^Wnjm~T}@AH^>9%p{ z=!&L34&yJ`H7|tC4~M7M*H7oqQ;_nX2oX{rQ0R!BO)-K@mL@=+gGpDZ7LFn&vbGhL zg;U8iYiG|bEG*db^YeGRKBwWEnhux1qDwi(-cj_K$uUz~O-IME8(Qy4_IWlc4sqAH zuI1bQ{W(D^C;}e97uMi#DyIALQLP5UP-a`&@4&e{ZB9_Q)zNu!%CP!a7YlJF!?o&B zNGwJeayF7j&A2ZM7L!a^>Fk8d%lea9(@FJ*MU1sD@i~GM`YFWc@d+(LtU5nFotTR>^L-EfGcn%aH)lC%iCg1D3>{+d?924g~^LxWcM8?WW!KbcPv&|U0qA!xQJG_m@NkWEuqy=IBg$HwZ!#w z>*`gEs<_-z2)Obk4Q|mz!8NcKbC~U=U@zYyi6^|lM?IGlq5sfa+7E?d5D?uKQQyuo zcGK*wmJ@j8bJ7VquJpWkkT~M3K&`Yzlkj5_{+F279Fe9j_=S`7?J~!1S`#S>qzg7N zQ;%GlKW+!b3dI{ z+yG{9h)U2QQv!(S@zKk80z4qyY(9YNj^^kD;7!|YoQpLeljh?P-!5p+!^lFGw+X-b ztSUReL=!D0T+i=OGB<^kbEXeeJg5lS>amRLC4mS zfG`uo$GUzLB}BAb6CET(2Qz!vDe}`6M8Qj?`*P%x(}|H2jN9m=7TTzj;ih|rj>ab2 zG0~pTG2B*ok7LH;n2|fFU#1q2cX@`0XN<-#^iRe@ZiM`hV_k;T-Y{i0_Vyd_N}Vc1 z7km(4txc;}wBVMmz6Zr;LJDlum`RvXgja|NDB-aMD4$mhAxy!^1eLewnb3lND`su! z*{PkTNvNEl%~XasP#fJQI`(HH0wF7m1B7@PR%Gs%fL!sv^9ju)@3vnpT`S#NdZ_f& z_WjEC=H|hUG(0N^%UF%s&#}o~`SiG_VyfM*Z@)dzZDc^Au1|YLi!hLAbuhRW zd602LqpSn%MK<>Zz7p^?ZMc~ARg@AHMSuv~>|n*`M75ZNw|we_HLL@1Ai@yRrP2|?Dsy>I;)N32aEUO_ zUWOemm2QGNoNM)82NI2YNw0SrYVLn-5aHf2V1QhuB0~^8();@`bBuX!&UBk z%o|U_8}0U7yPfdRyPtZFjO%M_gLWJ1Y*Hm>&WN~j9j?6(oWqa7hRU{l>f7&`e8l#F za}FZgrFPJZ?6?bWIC4VU)U$)e?(+FJEUpjegz8(cczskq4p9Q zP~}_?{X^KTVsa_ORuvD(B8D7YCXx}L+Y9K56DL!s*D9|u%laPi8ehz`}uL{|H6JuTr%w09Vvm< zcC8XF&917z&i;z(j+p`2=`;Pg!oWR8+mi6S>x@$t8SWLuFgXTcw*f8^hPs1kfCt-O7 zFE{Ipj`d#{-C9BGXC60Qs$?#6ec#dZ%O5AAjQ!wCvte49bArl1)XxD}p}ZDSa<$WL zSZQ-2Q4nWo;9DNcs{{YF^!NFVHvOGBz$x$DQ3NLWEj4T3i^I12=2>?%epR6E?LFol z!a)JP3kNXegsi)N2yj<uli9Amml>=DHF!NI&bQ>SuI^8R=*ohIf_iie358)|Brn zQBe&3loj)|gO$?c3XxS3g#Xcv14g`VQcqh^8cE%*Im(;T?SooO0=5j-8W2?-AHIr2P06B-{OPX)-8>^=Wz;}POl zkFp+amh`KX+|?VH*V^`VU+?CU@wSMRAm8P9N zd*CS=SUkJqNRLcyX(yP2RZhr}()%a*)X>zZy1R4bi_+S7YH-J`)`x!~ub&zAZ#C0y zkHX_>1}U+M-kAg!Zco(mq00BE?^p;gQgQ(3zQEYFLZ@~t2@b^SfQ8^w#~G?V!b^LL ztmEng5QqCv7u9bI)her^XDC-!`nTf$N4S^9Saw|Jy}EVpt*Tqwt-HQ`>$mhiy}$0+ zd!~n+;VhgPa>(Ims39q?k|>IiEJ~IghLWXNjx8I8;wZKZ#foAi4&ca30ts-CAV_{h zil`+)eg;S!Ee_xyi4r0CrJTC&^~xFgf&Kb*_Zz;dQ>V`P&N<(AV;zAlnD(l_6ssl5 zvjvK;p2ka$eMF*Cp#c7I(NQ-=Kb`E$Zi~6EWsZ$3HhX~KZ7b%u;Y<@k+M1e z??}=B&e+FlC&`mgqaF+SfCQB$ z#j94C9Q^D*m;N8@dEUn3ksVPSCWct$>H5gGXlA1z0gZO&8ROoaZE}+PulQGH1<4VX z5=mj^o#m9PfaQJ{`IV0Ju&Yzg))XC9L2nA&1=!ZYl>zF{C=R6p>_#-E|CY;qrx*Jk zAiWbE+}sT6QKYLqeEL*dm3th`={rqdGQ3Q<`7ng0hq*1!4X<2FTm^fb_j#oUd({&y zn&s&F5Rq5+yLrQ1HJ}xhjQ6z1P(8Y*--Rr}9XT6g-N4fdy%wo&6>GOc!yy{XYN286 z$Ec`He+%mx0Jc86b)}A{9=;gKYr6{!bdWw47Ym#wywWKaSY*c^l>V|%KW`q=&g{=t zNBfI>py5Ai*@n-+)6R$C>2Zw$BmVV+Ec{i9&w;B#AR@Kj@D;yxA0r-EBQ6=pYyTJ4 zH~{>1tSQqtJ@5VP7m#~$w&??7*niPM^_&s?pi;!Df_T|p zMr*xl*Hy`s%FWFkUQYg|AT?R30kXCSs{_~>-%s0MWxs2vOq_ut(g z_IfLDls65^t_nkJi``|9=vx}Suh;vCAa&X-L#XPZsX@s3BuaGu@WNTENlne?%UHT5 zujJ~E@YMMW71+mRAF>qHo}f>}uH3(gYob)dZd)6Cr*yvb{DeVNH2=v|apm?^QHM0y z$yk$J)CsoNF)0%^_WsEPRv#29?CtbVYLo>|lWJltNJ92UlvZ)8isE!TVsMWTJIQC< zGL-ZvgHngsjtQb==QDlEk~-sF8fx1xt2vd94k-NfHz~ff@+xGqY6g|!3dJjzTDW;> zmAz>4bB>*cHm(?-3uLLjML$BfavB?_$N?PWvGc7eHDy1$?C082N@E7ytcOHEmz9R7d$3O`S-0G zmp^zi$Mx;wZ9m=~DdhTEq_+Bm z!C3lgaR;#h<`6CBXdRFYkN$eMJS;$!wZu!5Q9rBCpy__Ci{hk_m~s&E?QNALe5?{U zVMG(6)27u3*pd14jrma6#8PyD2U-VpROhJTR#4yh=a4kBig9^0Ay69oBC0`6=w+$? zXTIr1vS&n0cntLugsb{G!tyQ zy2}oDhi4J?!+ zM;o4GbDTj!!O^^@Y1arHMKZ469&6#d!TrP71)$^I#h9>4^dFl@)Co*hOT@b~3_b)EJw9hDm$=Nz z*@wZuhjyg#OGYf63V9b!en|na4WkQIaC`=-az+)gly>m_G8WV((v^_U5N@N^NTAqP zmpm&E{Tjv7cCIlU@|In^La2ZrJ^62txX19k~6JQ49ED%<+gs=JQ?2ES$JR=e{j zf0CKT?q2jihWBp>4i8=Mv7a9{;V0v(iBD~}6Z2ELKSx43AM+}DFABooWDI_PUZWf5 z;c=~S`6;eR8Od_lDTB%8baCh3Oi_rVu%Z!yb9LV&esp=t>;7$u zH;ogLaHqhlAuV6eU9$qU{&?4-P>p`4;L)v@PL!T5u>G#M*UyU5W84PXla-H~ntQyZ zF{z@6g2Um19cAK5-^HO0gL^I}fsp8#3l8_VBmBfsbATlU@0M#PW)?(VC4QO<)imO) z3YVFR>!Y>~2yA_hvT9Q(l9Ed7iJ+|N(WHGqG^DjEiPCplhor@PpsU4z3wZk-e{8`tyA2jt=oNay5A&bZs@r`-)gnI zPN(w)8DS>bQ?8x`Gz*Xc!p4%uhN&yWvP4`FJUQ_htKo3LGV72V-!snt8^c4X-~oJz z!neR%;O=Z#pP71Bm$5PQtG#JVV!x39ZfV1Xm{ljy!`d}-zKr|P)sTBsvOyWVYQW`8 z+7ZfWB3xacQry~OmaI z!_VEWmGzf`QhPK}?peXN9zlvh@Gq(z+q9xp8xsMUE}+MYpKpR&RC4!Nuvk|JKmK^Q zvva8ceK}kdk@u-~>PSUplsY}9=0h^brai@GLJq(nisz-Tnx3RAeesdp89X{e&66K^^032p<)Z2 zy9)KRU{tW~V6xylXe#V1?Oj-o6=fPI*H}bl}34=St z)At%N8%RqL@GPUW?edXj#{@yOoE?jL$HFiPnO9FVgHrcm%7O(u+jFGPvA%03(12ZR zF0V#{9J>%wqqK zFwb2rKCrguh+7=;mxM&-;)G?_L$|Qw*bl=}xzvJqRNTSQQAje}<*-gho%Ox8e z5MvF~62h&;2At<1@F!bt?HI9&Lph_cTuNFZ3^{Tt$OJM;d|w3fqT(6hKkq6iAA6L? zJsXFd*bjH0Ec1vYmFu<+``M2R-fp{e5~|6a(#6u1A}Zg1JA=K@I^nlHSl<3%PS`_3 zEd*?9j`6%32(OleHGrm5s5M|#O50Ot!H5t%q6c4cdU_qeLGipsG`VA033nB`yBu<; zP18B%Za{ct;Q9G46gf#`Eg^Y~@-MbBpL3!%AVIV2M2q69 zJdLpoYh8o&Y~DhgxIUeRk}X!xHGbRmB38R<5w8(LKS-u5;)T+VpVto5G~+qJcVPeT z+3yHW;K{*?Z9KL({9AGW&Hj}*?$4QKmJrpUES$d_@}*WL(z*F+9Rl+5{6Ge}DutKY z$@L2geWk!|d4b*9T;Musrc~0FbJw>DQn=hppN0VK85%%TbzoDUJ_ZgSM1b`5-Q162 zuX1M&AR8@uOe+zNY4WHKA=L{#LGNa6p=bU68W6+fe1pHp2F2RBt7b}j>A0W`d+vD93<#DpUY#ApkoXG z_JVQ{I7g5@p17~OMA78uhzk4^2Ue6QYs~yy!~b=yD6SIS4FSu!Vc8Y5ssllSk8^C< zEJ%nB))C_J*>;H*J&>P(H>px%k5_uP^w;f z>3fXrL)gmmC*ZfkiL&l~U8Do8r?G6zj-UOnizt|Sf2tn}s^~@7)+1La)2h+Agsx0a zk9>7@rZ#Arr_A$y#OE{9gqjPk);z_>S}h169VnxahikRCIzMmcC-Fr2S%F-7@?iWp zB#uZebM4S5ZdWa_I_cKh-@XP$faRP9&&Et$MK?DU>aV(SEL=Zpt)kU_+Mv8wDSP#h zpA{a!T zqd`3p*p;2$Lq;Tqh*N70YAn8q!y1b8pF$pVq4c-_t~PD865Z8}Ca!MH*A_EmF{Jw0 zpBJ&-GBImKEp~GcLymb2Sx&}!mGQKc9G;yPlcDiRjwVLBkF7RF20ZJ1p{hv8OF`gN z!wQaS!h{hsm)tf)L|3o)6G!>dvZX!>U9HJks7d0%nJgV98%d}v^PsHd@Sm`R~JS|9UL$G0&r zu=No`jn)qs>T;I`k!D?oQxWXo7%Rz6qZ5{)5%-;`nu94+Dh=i5Nplu0ceTMhWC7Ep zO^6m+5t*-tL5-YR0O*Je*qNiGx{TKAQ4N_!HFKLrZUq576)P9ZFW|6|ggTf)Vd!Kv zz=kbws^$!05ar80CRO3Gx^E)p2|yWva6Q@zvRL>*$dCEQw>!f(Z%#XTb#t)?IiyoI z0m6Q(dpTB>)B{`cpZ#SK55|%I6kw`19u%P_S>Uj^a(IXoH$IMc7|`E0AbB^{-Y1D- z$w>2t7o+1~(`Lmc$~ftx=?rNUYfn|m549exJL##B^6mSG6tj?gtI=G;y=CRX= zM7Y*rqZTKJ6)6~~c*2DqC z1FVx;tv26GqpO<@C(P^hipC<3XyCXgu67NeJNIphGgFUM&1wWs4!mNDDSq}BfYsjy zywWIjCzJjGIY_30*SlU-bk#nDr5_tBNStDgsf+0HbbAw(&rUbwnKXRk3ad8W#&Ii; z0YyFBAEvGzc9e9zsoupj^iB*1_I}uImYv5nAUe(zItt7AI^^F+*~yb@GhScuoLde? zak#rgi(zq`8&~3xs5&6h6b!gXS;e%Su7N{Y!2)Y~*9jSi2nf|%G<;gnODIIMF*s?C z9*%v1g`ziAwJex1;t~lK768)@aC@+QjOl;sF!L~aa^cX>#Yq%d4f&J2o& zLM=-5kg_+FARQ^FpP&KZxDrF0V%kxHi(48s6<=R4T#7~l$S$tpY7b3)x$d>R<`>Ed z#qXmygdocsJ}V~;|F`5I#Ze!ury6m1f;9P)Mr=`pjL%%!xzXzoJFb;F zu;0akQN6$BLrX4{O_P%>PJW__CP$b68+**_f(v(`^DrR~48GTk-a2Ky z__bJVc^-=4-_P$X^dhV_E4Vb1s$&bl|jOq^#D4fT$p0RznWvD!bZkY2v)Hik1a5a=B zf#%!T`DCJBhGSLYOB8=%#qHl-Tksv?iqPftD^&Axn&@S$T1ix}#cY4#TW~I=(Ls>A zx;M>VFPQw@vH3UlVqWsPZO=UH&y4W#6`!T+(n_wN;t|v4PHG-;pH0KB!aGiVgyOk# zWt^T~|B&&7r^>Zdyp)-R+yafQ8@#Du&pxf60r?KXHTQr3-;k6ZS?J3L`r%!Ol zBO%TI*cU;t_@1f$zuNHD%78Nyu;!1znpSCN)jt!(oz1T$E4bxJq3(oMoX>n#UR70sCkgbD{c!X5%-P8J>MnS}H8>H^t``AVWhpqlp z;L_gg(yVal;N+RycS-0qrrKT@_yn&uBkD=2HvLer&g`kC#mc&1ApE-t-~ITcdwaN! zBfIp2bi#O@(5Q;;?SXd56Hh*AXSMLeP4JlWmTL^cf4J$Zz-#VMd@V@1aK)J(PWw?Joxt}n@@I{hO2cB}@V}r!`ewmb z&PsKN>7~)(@^iiDWE71X8{Q5;lW{1t>xbWcLjz*quUKK?Yw&2gDGifrcEnGP8Uo(JRu>499()=b!LuZjuDsZLf0{w!`wXF+?<~|H1Z3Ugk;%BW`Pp zZM&oGSPA2B*$6|n9`&3kb8P&`0I~eII>pn^W9a$(^Wwb?8iOE&UqR9}D?{7Z@gd(!Fxx%V)gp z5-X)}r+-rV_prkRBII(>08~J$zdt+$CwTpx_0(=Hu`f~@-RDjhIOG0jZ|n5uL*5gy zb{KI6SbCZ*deU~>f5C_z)9hJwQ9D$zoe;^3@OZipj}K`#&`9H2J&DhFxJ{(XlNc@}Yj*UL~@> z#)K3vHkS3K<9pJ$5C!LYsJo;pOLNisMxyYRwq4xy7i0Bja0FMkLZpr#zc?CQJdU<5 zjyBN=A7TUxa$Ms)Wv&;gIB)_F<3Oct;m60p)Xf+wt|qH&?X=r%D7L!Y*s8fy;aA^= zh-x9dd=d~fpLzMCR`AQ~K4i(T z-7TaHeH>AWt5Rss1@tbUj(1&`F;T?o9~71N5ODVsr58%COz`MFlV(EyJ4gbY)ZOp$ zj-qL}H%i_h_fJ??mqU?YG#he_9Fietp6V1~s1$O)9^t&y`-6 z#r_m$zjh&oIjq*kwnfK=Nk_Y53aHMqBYrU`a`$LF)JWfHvoptv$DLJILKX9Q8VX?o z;Z-+f6E!}bh1aNbIpdkZQH_aIB)S~2(1!%_)(7EXE%QNZ8UE6%;3-~(oRC#c>&Ga5 z%5hNQQ?bB?)bp<;8sbw@6Cw^UjVaf@HAkQ#B!92$e_FmTdN@c0BM0R@g*}tOQ+MI9g>p~9hX=PL ze=Ch{dyG~Qx4fm3$$Z(Fsv&(h`b5v`9#u27W@nA-|VdbNS9q+TE z$H#y6--`~sSD=bkX;gZAtSW|pShTaqzEb0$iSmOcnn-8HU4{qA(6=DTvN#UBnGBsg zXZS5D<%_3IojQ%m07D}$i0GC*?~1eFor(TFZ0W4k9vyo>Jbg1Y7q3KO@tH(_JE|C^ zUJq#+xbcP^J*?4NHLsd1x}Jpkz&79xymZY0*iH9OrGhSMdt@qTEDYXSIFf%v09B)odFi1mOFWJ+HD=* zv7gQh?(6qUGrPTn)k#z8exjqv40-U&Cyi)%$tj}GweQC20tD9=td~rkLk|y5P&SJU znlj@3mlrrL-;C7^4caw|A760$*KSiB&HM4L&g7?n#k`_gAA9x-f%>k3_Oj6|5e~B@#5@np~N|o$0IdBm+#L zir&Ka3bo5>p@>KhSZeivUf{s`ZI|`n-LRl`;~jD`+ZlKkowwW?d==ewmcwNdcoZYo zaalt`fSX5-H&dQ=x>IuGOxLM?6EYbmFGuncnA^JB#aMnXOekKjyX8}(&nWT6G>AO%x{h&Az7h>ONx1WDd<1rpP*>2>! zoyKQ&f@-xxgO8!+HF{>E(ro!Q2Zo zbzC0wGPo~nX6}ls`T4L@GrVrZBAf^${tHV^uXp(vNs26D=cV6=R~x%k_2H)Y-aWbx zMeGoI{p{xE6X8trEPAL9&J4H8*IUzzAz~q4e>IU;;BvhTHomf9kRFXbwbUSHtB)He zw}!-A-)c*joe60;>r38=RZ3VCQ`}+MvC&d#52Jk_5NR9Mxm_qtj?6SRCNq#pbAwEh zN1=~8;xXi4&-7`jrgxm}mHsJDZqMc!xXO6|O8G4A*S3vGtgd-ZRgerZ3C~4x3U<=Y zXPo9x4AESL+_`p{Y~o-1N3%xRNzLeb1RGiCnXtXp=i(qj3iAFA2&S#b+o!*LCaL=YIu9-HO>) z7~U2lIQiXN{d1!1sz~sV4wyiTLPS`TM{1CWoN~;3 zUfsm5$v&rfpt4ybErZ8~Aysp88-~8IKJ7&93Txf&2<#@8++TMpiL=t;L9|&15a1DJ zlFrSjR?(scA)E#25cam@v<5d8Z2aC;rHxfuySnoInm-wDaeej39UiN+-fd_9G0?%q zg`t%KENY}0xSsg`pK$LClI*(9>-+8tH{X|E=Q!OxaVJmDh6&i6&5PZ|?jjNyAP5K~ zNPrYbm@+|1GR+c6%a)aB*(}MSOxl*@Qn0LKRaqsgBnC;Y@<0D@l|)HaD3MiG@h5!l z>o7gDfemc$pl4_C&bjA)=lf3JZd6^dR$6Jz^ZS)(Ynz49V_=)i%%Dv^bVV{z!9`=+ zJC4u#9*JBoNcZBo8ct7am)E+T6zfhkf@9nmP3w)F47(lTh)t2y?%?r1=HYA?$?yqAA5 z6`&Bc4?N1xU$bn&YgI=v7h|f~WtRf%*R0UeDUET7bJo$8E!`sa+}EYzLraeZ>z6*6 zGP6DGagn?Ol1zoJJhO38S-M@Y(=_eR@e8M zJLvo@`u8=b@dN2Yn^nMQu@R{XbM@&+MTCZ7Kxq&Xyxeg-pm!T^&(3UhhC6}g?tC3k z+0;LV^|UD-na?GTQj3YD9IFqvQC%-jo`ZXmP;($(&>0fSdD9G3b$8IYl~^(55Pndx z{fZZ`i>|XBC*nup`){_jTRnv}+Uq_8M*%nJIYW{G%P;gHu)abu_Jl`pH?zaJCP6@Z z9EO><*uYw(j5-O5C@}oDmqTHD^O5pg%78@oi*_`(&~PL~m3r^nIfHK$I(f}!XVL+> zn+=ScFZZq#kCp)cfnn3T-81Oy96Y0&ohE#@{d6F%7%KVl%Wrv-zF>;OFKhJH%P*Tl z`;AcjVtxX}wHj!Ug|(8vY%LHWA^zuD2d<=UWl-^?a{UXP3uYuEpQHI!;kzRxe7W$- z;a%tqRi-zr=1voV!w-AM*+EX2$6q`U{oYE`{c`!5BDU4Qv#C~yF`JRFY`4oYM3P#Z z)qReMq?tw`l{ArPmO&y5+KMq&L_JCpRlAT&GH?gKhOCn zd{wBAa`w=uT!nhcl<}i2>mk>EARPV_R9%LFg(k`Bhvl@f%DE zKbi~p2M9@s3Q8JL#&@QtsftuRWy6bQ3b4cK3#DxM{{ zmoHZ@%(!Xgrl=MbEk|mJ&<-HYLyK0qyL;N5Ddd}Me+HOtPO1f&`r(O^G-ok7onguz zosapCBNIU01MT}UN)$<6tVk+J;1OHoKfY0B#NAPB|dGOl#EZgv2ZU7f~YK$@2 zu--RXTi9Gbx{f#81Q~DRL68p@^0vn6XK=K7Gq&<|#Nl-SB+T>Kzp$OeSEsN7;lE5- zKWXh=X-B09RcbLxCC5To;*9_aH1ckkqm-Ur_!nqR}3Y5AD%+p@?!YR1bm!*-rG%I=X*!P|=({j8AE zPv?AY#+3}w7PTSx{+3moPfC^flI1tuD=x5D!k3owN*eqdy94ov>?X0S`uv2KA2M9m z>dX+KoSY4PC%>;=K^D#zUK-U4%&i?wA05Nre(ZVEkH5Kje8^z)d)xdUdcBR_EC$O} z@;LFmj`F?O3C|Kb+ZUE6NV&9RZPdZOHOulfDmu)w5DDCsoj)qxyh~AR|eU5bxcE^v46}%Eh z%Z}cvl3i1^Qv6|t0unR?3f$y+?50n{$Nwmlt;qjzE_vjeee_ZJPSl67@IQC^xV||^ zgiW@c$IU&T={0q+N#|KGlpHY2Wz)Qy%>1KP%hEj-2Hj0)X77_&EtGLLtu2s zFmFv&yz_4I;Xw8n%#PHNz6X9Ej9#TPgf3+H=E_fKpt?RQoeyLm%z6TB48nYwbZDb4 z&{2x|tlBc5WV*dxz0JtmGNnI)yvq zjltZiY4tQ3Gat*ysm|fBAvoHG8{0HhqmA<#Xa50n2nNwB<|PnSZbc%@WQH9P#7N>x z9Y|3Y2D?uZ8dx~-Y)3nu%e^Q7REw1&3_Fg4sN?-}h<_b5G;_V!crbKhX_X{W=vNk; zxxG`wtLy=n^xE5zQULRJs?t9{c!w>G-@){N<58ZQQRd;J} zuZf0rjo|777zU#)CYrGZu8MctklRhDAk|iAE0QTm(OFeO79^5YuQ7uz`gYQDRHehO zglf$~9fbgUE-56hz^mfbUR8}OG(>gY;~H}1Y0&4LXTK79G*$#emlu~DB0?E>Jp8On zV{l?x6Ig7mN=O@4F$yJo*X3(wn5#6iTy#p1IfC3@e_V)wt1sjeWuqKA4kOe3$rVdx z>g40khV?(g=G`>yZRCIUcX6Ot$Zv3Fr?{HoI3%}LajOJ+zBT8$ko(uI*;AjgLK>#+ z#B!a;wfpwG_@I>tE8?ZV5$Tm0j%&KMdJu7h#ooFj_AY1e#ZLh5D`oH4ZqSt0LW#U$ zy~J{UZsu;jS*QT+?H|^frZz9ebaiXY4JMTsFzc`pY>*PHdzERkk#UBxs0tp7+E%gZ zg-q#~vDYvQX}}MNLsJ|EIF^^T@%%iRT_tv0adoxrdjHzhKv5TqSqWDf%UvALsah*; zl(JUCQoa?5OnV}Js9}}seE&jd%k4AsC(EFlch_ChRr25aJK#0{y-+g@?Lm{?ry!R2 z@5lay+o9ZeG4{V=+DPk=eqZ_^!CClR;@`|df`8?sE)Vi*@3(W@Ear1zlK_tsZ}?m8 zkN)89e#m4jEPZjs=Ls!ZE%=qX-1!(H@rEN^hLHm>(dY3A;uqT>GOM?Je&C6vCzsgU zp6HyPaZyZ`?Kl2eWOFx6YLR%9m94OrJVv-2S3S(rZRJcZkGy!?cbuAUh$ov-=CF=+ z`n)5OWlZ!&Md1;t|8fmGBmsfUxzpGqx+Z3;)=bwRx9w($6{>3B?nSD9DpX}i-!H9c zIBrF)08ZPXwji3Kx~)n@T(0{L)wE*&43`e`H?$=}euCiUR)o{J##0GPp6xCxW?Q9J z5i&PqJ6FWgj62jGO07(Y3{+@LT5I!(70s=-ZJz~0CifSR&%aS<7tR#U6`q@%*0H&; zQS4EVgZ#LR zII?JDRW#}baV&}JF;F%gKCl%bTKmftR9TC4L)pro325L_#cmMp%7qg?2RhirBp@7! z^XlU^@@>0Tq<*7l|47uT_*i$Fn=)_^n+1*YoUSugIibtMb`#%^9foYn4|vNronM?a zrkIWz?ON;>4!}DTj2beTJnb36myA9elYKzxJU-yogIB!H^w9ouMYj`yq>^8bgSQ>G zLp6ER(j`=hm~|r3952UOSUg}K(C!-1<@j~$4fFqQ^|{4BwPHRt5(*so^(3XZEq-$Z}!y}vJfyYTfw0Biu=!*3>Ok_sUkIs6iTAyf}t55-EgtCZK>-UxdDbH8m$ zK)|1wgLc#l`I6(aK9VoI@I#OUU7!D|?Zh!d|Mj8B_Am|{58K(WwF;CW1c0^!M++QT z4vHK~Y#V*Q;b~lWNO1Q81i33BM^aCftL2kcKv2MC7Pwjtd+&ddPkPqO+`+(*vEi=x z=H^se(A>Gfz#Cn%yrB6u3bMMDH3v9eUZ^%$Am)c?W;lg{!i3eq|%Tjf1BSZNnC5$KwdABfcj@*>tg6UiUo zpcwhSULg2#nxWWjCZ{N}ZO^x>pL(ros=eB`f;7t(V%;U@v5ccM9_|jBlm7iesjyZU zfcm_e*W^3x{`An0>C+|dAl>MBBS4*C?HFo@eLHhC`Z-W$db@cn;>6cI%hd}L+X z3W|IQWqn>^KD*;l7A1=rsxKJ+5SL~}wDS-=U(cQuB-C7F$Z{7gpK(MiO{Mo~vS?-y z&w;y2KX0kUjcbh(;Ip2lHKBo}d5 ziFCd(XmZgX<`b|>aC*Zo_|($FIK7%gozH5!?PHgH%I@CC?v0_{Z{NIm)zkEZh8&Y9 zl$8iV>z3{@PuHGOHx*)U4 z8&NBvN@87&f?s4VNW~yLutPwN^)C0MWGVZ%=+=~3PvmA@8Jd-=|6$c{xv&oT|3cx~ zXq$KIu)Z~JpKsp14n8XXbn;FhT*~_!`uk=pHQ@6g*%p8fRdAyWf0W0qH8kj?4NrHP znPQ4I7vI0Qcrw!G)HBm3Id6=XxzV4pe8??)h7d7JYnM*daA{}8!L#L#Z;N&@1d-#_ zstr%kjg8%?*M8;5u@3FOI~ICx@|h#Mk@uTgyuY3ATE5W1p6Oj0 zuy5Rew;zkt%GpS@9*+ID?mEd~cz)g1%``k=mdEf7Q?$7esr|$!=-K;)Bt)Wk@2~S6 zJO)a07EbP|!t1p4zDSEb`MKOQ2PY{ z640M0s9D{}^3EVt3T@A^kp-@Yo2d3uUKRR@P%RTuvI5IEr6x<9y6b)0kpXDXm+TpX zx)XO0j)wjSZKcif2e+_4@ArCcxbDRVWemL)4jDU7RtHvT=Fj~Mk z^lTOn)9cpogL@#?C>PyO>k{}BS=Fe4th8gTrpO~!D5NNBL{ijY6~I;k7vqa|au^)5 z7N-((OH%3f-7oxz8^@2ilF-t}UhbV+E869Y2i_Yv?u4;+w0@Lul^(?No=L;n7W~&e zrmHEsI2ArmVO3}G1;7dwfEUDQ_PYZfFpwyy z4NqO$S|7T?yT{#l3ze}VHv_Tmfwbqoc!}^ERcYOV^W5?t!kHyw`Yt1i#a&@azWaK2 zvGSbyA-ls^fF@9&$F~OAp0XJ`6$s+k%#Q`ZWlCd!dI$XiZ(!kLBAYsrwywpRH;Hs? zUPDh$Ips+lz@54@x>KZ}-}|#%IY6d{3_UaDm7G>@Wrsu1Lqe5%0Zh-oJ;hRTzX40h zT5LVyXr*dSC}RZLW-Do zt@~uVUrJ+2)2gV&K3%a%qs%>k%p_8T6;E`6sO-g8Y_Gkz8-XaK%Tz_O1YY%cdC>k( z_fLcQrt`P*YKmXTz&}U5v$i!Hp~&;!;dGt>(+Bi|^7Y{RdguEcD{+{7QDYr?fqXuq zO{^N+jO+lRUa-QJ9aQ`0LcT;Ybd9jZ${IS^LOy!LZcSW677tzXJH>#hxM*pHLYbs9 zSTt;fc`=Biy;CJ>VQ1e|mbtD$7}f1$=aJBkf-j(F?&lOzknepPaQF{KTX<%N!uaIb z!&>t(0_Ua2^k|Zcz;uMqd8J|4Egdbp-^Vu}e+*tqJ*E&W6zBDkQ=~tH}aX!8-+*n?UKVqo2e>re^PhP zRo4h>-JI#CrsnY`e>ZSAtdRR8p!eqF}juIT9CL=iyMih)Pxw z&=v*4W(f(sU0XVe^MDDI%1_z}A-?21K~C4wkdU~gJmLN(kVi%EQXe-5CpEFLyBxII$DCWHo^2XT|{!K6R*B)rV3){{}tL_Q1nt>(Vb%Iol!U4*wEjrGQk z=AA2nT!b(>u(Nw&%%ibWIvYG4daD)BGF^-KwyVTr1gC()hQfd+(ntj!C0pp`{cjJ+ z_r!;{$8190eS1bwlAmyYxb`yg#^hFwrNq>zr~5s`(vO~nm*bqUswLIVxRR|sRSsop zC1to!k}WYx{ELx#CA8u??v&7u1somC+ueJ*?_^ z)FHc$27ZfKq*(d6{U)yNU7D8}DW14GjVcFYK0bP=KU%Ej7mLI zs5?TKY#Mi_iOQr{lz*KE*r9(mjuMyGee7sg+Ml7=lhlWQ6g{VrJP$9W&eL+{G76s^ zDEO>Q1g$q33wCknoXq$}(TRxWiKJNa6j2V^dc#$ehL4w>%8s{M^(<_||A+G@%(P+a z!mpkxJAyj3`jJHaH1HOZo*&;EmQOMN3EY`x;W1#ouNK}Yd~7`Hc30Oa8P&605599) z%1#gK+Q;wM-J6~F@YE=h{^6n_q)2uo8bI!#!0F&usg5g3Rk>?c*$}FrI!=Y8RD`(c z2PG5}->dHh;tPbbYE7d-rE<O z3~#N@SV2oA5pZXHhg!C)yy#I^(1scCX^`ahyNxw;4yVdXO&O#YVs zeF^kCUMz*%u@vL7fqhrYtG$R&2iX>>Ne~(q?fVw?6WkN%BOD8Wa=yJ6$QCc5^_pDr zSp+cFW?q2eu1|>#Klur}edHDs0XVOza8DFN*NL(cR+U5vE2&2DhO~Vt6T~`%3fTz% z9q*lAE8_Men~}vGD`Z(HHKF?ZkQX>wTEeALW6wsRZeQpZT2BcUMgHKJPrPTb*gtbRA}bP=W{sY8R7BHcYhMBN7krKE}dSKxIZ3# z0~23_VuQ2T(rC-J1oOq4ADo-pGAnBE=21$MSq-VT=TX`jgC0ap5G~a6MWYwtmYNlajPo7;Nwo)keqK#7V##7lI}KGQ$w>%Yl8hEMt(>F zFZAYZ&-a9f9zzu(#7?BXkI)nPo0|{swCu*RXj^_PqrT8s1<5|ytSDxSD-b+oVNKa0ab7GT?Rm4a?jHl*6KYWN35xz|5K%BK6R-cd5 zYe4;_@~kfK+OoxZC(+gxNmo3*(8!8Bl2!8G2;3BcpWnnwuSe=sDdH?kQOI20KD&|H zYIEyO9k|bFKg3~HQE=lU@Z;a+)7>@DJVQM=*(18g(vXR=JPrp#Jv4k@&)=`U@rLie zp%K+={rONn1iXB~M=qgZ;JXcO`y^TCt}mhu$SG0$vF)NOeK%P4G@A=$k;D*8OiD!pT*`EZ-5ctPT zdlV!eRo4ukrkj$U4aA#-&cd};=oBehR%H|Ix9m#77my8Q?T9OnKYrz;oCPPJ7jJkvIX@K1DA& zaN7a;9@9>sqvg~MRsF-#1v2EVL8K}bkClE(`;2+5lAYATR2ExNDR9G1nEC}&2u9J{81IcvGX7{NVbs$F z<8S_}P|ra`o~M9Oe$(1=9tEukBH)(wsaT&Pyu7~RiTX3AI=H)Yx$c(Fd6GwYZ|E=c zNunB{^M#yy4aR|V_XWugw~xllNB3Sm0^XE@)1+OtX7Z@(T+%>06ZBJDv&;J_Rl&YO zD#1&_iz*=PYFUwpRwdp($;04>7d#$6zuUEDckg(SAytc-?RYFXZ+4D2HV$s@U2EVI zub!;86Wedqd|{0ij*6x;?u|BXvwYk6$voTKr77}sJ>uKP)-~PH%*xOKQ{SG<8-RC) zGXDi5FLvPV(~(-)4|xYdMKp1?7KjACe1Z_ZL$`q=3U%E_Ggf;vwp_swsRZtjTkBEb zRlkytVn=Er5EYmD<*$PNa!Tg|5xSIR1fOMSAN$qVzv>3pGVHGgVgPFX6pb7rm&;a? zYzHVH{-r`bz5G{z&wo_t0gjx2`&F2Ry9v^n50C8`jgs$pB4#qvJZidaP1~(u#w)VpUTc7kg-~WO;rX+lfK}iyTva;HP~O zoOU&vg&Q-^Dg#JMJ2pxjNUwn^m2tq{1zP@btm8DsDiL~h#;z=E&3lgRN!EV02Nzg~ zia(i&8!FCPVYl%7)Hcsiq2P_Q*0DMKyT#@`ypU(wjjR+UCYtC+f0)<&%|CMrQ8PEhp`;G(vXDY8NkmOhrYQs0M4qNy>mZa}%Zu~f zshU+adpURLZx9}xBKYYoy!7fb%b>QJkd{wkU5Wf{tYWEIFqG`&vXhzda7ByG2W&^! z>1&`_o1rX$@&H27^x`**?&rUcq2V6KUxG6IAKbqB+RySs1gkq*bPjYBC(4-lviY`q%@fa|PBXd=$bu4%yDfw1~w zDCbWGqB)j}G$aww7dxz(F2i@C_bPDg^9bae4HD&j!2^AJx;YEh8(sGN!GjIZf#^p%A z80m~~(<*{)Fbr`xm&fI7VFYJV-u0;B$m4YPEdnLv#l1_k?r@r%gQ&Or@_69z+TF;l zyd?$rQFv!8|J~O42Fgbl7{Gp#Mz>($t^S{s`g}uJs{KEkNF?;`hne zogD){Rb}JYIq&}P<;z7Iq9*XWAB7Mh>u5wSfs0+%KX~!t?aP;MU%cdf|L)ZQ=&Vrx z3ZS}--+8r*x@ViG0&{SIe13m_KiHLUFH5igMeV;-JFG=jiJ5r_YnZ0d$N0a^9x@+w+{`D_RA2opP0LxQUp5{*`M7zq!eCDrPme}hgTYqy z_$9`70R)%tK8MSa1LJ0g2bMVnFv2-3%o@X|ntpL{HuHnB zKr5qV@P{%EbzlFp+JBwwIk&1gk3)1c*ZaMdrcX z1N7N8-bRq5IEhZ9Agi|mqbcH6?uKk08S3Ou9|UjsD5St)prQd^ee)WNGB)#@_01ki zI`16>0dP$P4r1j@@Fb4slcH8tME|Oq3d6OyswEA;KhBNsehS#972?CAI#C&#?nNI; z39o&+-+za<$ff>5RBoJ!@A3Nm)n3o!8{S~v^wCV8EWOK0d<8!8*;uc(Oy*}xHme_8 zf4Y9Y^oFYhPU!me>p#(MV$~oDrwi@kjwwX><_s}z-sP%R^@_?a+E*c#E`itV*Ur{% z0V02*ng~2Lv3yw29vv# z&uEH6PnyROP`&f=#fac<#o`M zt!hiJm6L4XN8_$bITLi;UG^&XpPSg)LwdZE^|{f6`o2*<@w`#XXxQd6CEvH+IvR#* z_I=O8W$p7Ii4!*$Tf!x$krf+g!M%xezGtwAn?0(jjOSvmX8mlw-T2N{&~A}1q3-#> z%4Ukf=7?Ha_d|B?a2vOr`acZ_>e3`uA6sWCYogV>d%8QJEnA0Q#>zg7=~E;5cPymO z>c1b^R|4{Fk-A9ynK>2e+jn-`eo%G}2LZVUUp9(uG+%i3S?j(0Y<1luTI8`&Hqw#t z{e&6nm)m^|+<;+Vs732ZfEbqMk2Zr=&=^OtKRVpl8e8pNg#{njM|-Hz?jA1TohW+G z-F`tgas^ zvPXea=o#F++h5F0*ll>5b_3)oG7*@$vgtpYul^JX9o7GkD9-Yq`pibK7Hon%?Dek! z*ZXQE&z)*Q@I;oN)6{XFNgeK(9202wxHTR}?LP$3WFzMgBbPYD6h*vpcJ9)|#t12= zgtp9F*ULuW;m-h6v;1*J$d82P?SwoN>eE5{ndG&1xjW*-)$w zViRr5d+o+mF6F=22sVR_pP_K3?T^h+XGr?q<>lpIXJ_X$!#fO*xF6|Jq<3Po9O+r= zMM8sfV#sABx3{nVdF>muFILF!%tI01=!otdo%FP%UY+fv0P;16(ra!EdjOBV7-SI& z!}L^Hq43%ruRRQ$BTCJp4G0t7W~?{0`H3=Eho8tuw?~>k@V%dlb~-q2o?>`*J@n;V zCvHb^y`f~Jli5hO^q3!iy_$w3wG`rZueMTQhq31K2L+f6z|-T1=V%)FXrb*m_L#_5 z4(Gl-RFrFRt^{-!jCbq81&TSsCO8Xk{vC)eIZJ)@(rT!}IVWcf&w$TkZS)%B9h9Uf zFMKJfgm3)oCaDM75Vv}OH)0rb^JMa=@%+yc%^ppAsKd3hnb$(Ub0s$_l)QD(kXa79AF+l9cyU4+ts?O zJ!)vf=VC3=S4w*%iG!5&My}Y?46|7;(neAS=q8eYdY^=koRPbnCqsDlSg5}1@deU} z0{2)T8LAH>$OGLo1$NQ3E08R1FhE*?5WYy>0P*OVYEkJe7m4_uQbkq2?;Ewhu6+s4 zcB9(KK33`Sz(;=wNNHUEI9pA6l)GwM)wxa1>u`tf!O4#4Dki-@ z65S6@PD=li%gI1XOPev$GD%Qc$1`e3^Oy(*5OyRo?&Q1)`h&shaJV`ct__DjII#t$ zMTgpzP?g$<8px<$onv}8UdynQ_1mis%lYE6e_@4`9bD~m_ICp%RNZqjLRV&HW&%h| z+t)^<<$}&G7(l#GmW>`+!Zy8Fn@ru8K3z^EY}6jFy}S0lL!X|w>~vWBkY>_xd59jh zAjsZiL6sgZ;OoAVj!G5hb73P3>{82Fe$myu^5{o8<&Tv-xwS zv5&A+3+q_*Z1_8oP<|3NEV4RC?+}$YkXsFeyyS(PUiIT!M6twp(E<_fjOQ2$&Y_44 zp-h@#5!Fe<(WJDze7Ur|N0+d38`qwMh@mUQ@&(Xz17gO)p>D^+@5wl`Pdesw+*_PX zbk3E_vOkm9UxP1?x`t;AvHV?${h@3LE%wAklr^P5t=}%WzyZVWpjv{uz1`PZ2%a6$Jw1gx>Kecaep89J~3p65D4@D-p}fY zN!DEosB~?lL?_L?+$IgLRgWwYX~;Eut>kwQyS4RytEmpEv1~)5ixA~0k&5s&D&{lb zlf!x-fmieHQlH3MY3PMP;B%eC3UmEkoMOqX#=^=p(p(}VCn*0fCm4B9bt9)P4^})W z`90XgI>DljBai8VZ}P)HXotfyrUya}tD(|9h~IG@WH|@nJS$srQDpUU<`u~nY>{9QK%L2J%0lZdasV#b63`BHti(+4~SahdB*m*_BTF*(OyL&C)9CbqtzJw37H-u z(r=2QG`<1LNRHF1s1R1W>|n)PJKL2%Zz%Uvyc8-^NS*HI@hamD(lV%#!w-F)i_Y@{ zB5zW4dI>dd;bJCFHW#Pts5Zaw_mejn?Qh4KxKra=;+IJ&VF^gN>i z#lQ(W7_eg}XG3Hil_>g@(K-+3Ld9EByOli8*2_{q1j=>{QhyMIHkLEKO3pNKH2BHD zCw?Fp5&VNx=EiLmxDF8m=YxhYojEmABs>n)DvboNRfLy83A+hyEI!#G?eTu-pFoUy zt=6iYs@TA>35>n1>E7N1VWbbdnI644dQkEQobwl0<^Wy@s-2>z!a>KO?y%*U;kzLb z>$#V8g>Sf(+tFyPw|-_I;H`D5KBqgSXO>!MCZ6*w1d|W|ivz!9ORvQ<4hyYYnWeO7 z$JCcaJqip@@l)x#_C+pQ&T-N0CDbSFk%hM`y#rRh#&Eus;QHLHIo5dEHq(&hPHtip zQd42iuh;%p?GGx(uu^SxKFDI}H}4~lzLh#A#_}O^v#QTu2TptQW|Q%G5Oh#31AQOl z%Y7%?=bZf6O~BWFmY{Z27J`%tQ%JA22{CyqZoi8t9hlX!{gkcj?98z8kk`t5yXGV$ z$0ybyGM(5e7?b4r;W~D; zk4;Atcb_ECGmNjk1ULV?iM@I$(ic%Ew7Y>*8_8b^uoN=IpM6`bM-9~5UqE>$qW=6- z3_o3F)Tbl;VQd?jyNp_1BxM*%!kYak8CYL0OJ8M07*$WKQ-vn7NvZclCRRET5F!aN@`Ha38n|lbc++T!DD#<615eTS*;}~L+1b9VV zY(<;-v}JuBrEz?g;nsTOhiijIyUn%d8I+WMTC%+?`a~&enuSP7n7>fQj!#JPG)qY-xPhdOz~v z58u}1YU3g&VPKq>s8uDcLPBTVUW+N}@eQBEA`&-+$`GgMaUVc|cAq`)njK4um-Kw$ zb+-Ap1A54?N*x_MGDE2h;Oj|$NJ}u{uE&`4zcOS}W zl#}%B@G(C+w4H|%peb%2-FNc@oUyw1@ez$)Wr{roOg8amC;x_k#XVhDnW~dK@dZ$O zeqIGPocvzK7vF;vxx01Cc@IC8$rX@d1YNWSa5pC(c$qMKASl5!+#p#z$JfwlHq z^i5BaySIaD*9o9sqI}M;128N|3B%ulOfPct3_F>k{z%N6xlP63obV!^QNQ$ERiX3J zh8KVjK3UEDPrD#vqZ^kh@)O@pERpVwb`Pr<=@>yBPHm+pHvF>cfH&cUFVG~xq2-Xh zAmzGkCpHwjofCpJ(_4^hB=DIq_NBW=1qZ$+dQFs;5aZQ1Rqowy1yYoici_*DASwb% zJp1K%HpK?gk9JlG3$(bwowgdDhQ7%MITrEVfXf)Wd?m*!Kd?l za@aw?b2?N@nk1xQkcq*C2{QCz;Nr5>Xs91(p)ZDNOVN)&`rM3mn%?kqi7sz|XEz#L zP~Qi5eSP1QCEHJd>h^YR@bv!vBd0C}|2$L<>v$IUGO#$Slv^>q6iW^6Y@BBBHu?xr zqA^fd4qClt9B8%Kksc&-jRGD578gC>810~}pL9iItsC@`sYU(I+E;5S8rc7l- znz9pVUjJI{8@2yfBEHJH%4*DGwYN`tsmHoM<1XV7=ABpyA#!&^`A!MnBImi(_9lovpqUe-Tk(;x3~AO7ykf5bcw{{ zr0x;oJ?vh00Z+))pC5dWl@I~Xj_qpd@d@&}eL7BEbpgs8H9^^;C?_v!g zL`FU#9KgtVCwB#Z0Z2FoK;k5V&{(n*N-z&!0M~4*fbj&LF!RQNZ%n}Q$J?Xce~M-- z97_->_$Ay56F{(YhzTN6A{2L02V-0Ndez~c0V^vf1zv<4@EwyH7C9N*v*QfA+PHnF zGd}!PdaQzae^<_caYcR{ab$B%3slaKPM!FzeH{MaK zg2Gd$l<}2eRq;Jsh>@Q<5?cmjDRpu1Plk=ah13;Kl}!fywijlCVaaC+WYE8n*LsKuC8x1Qi$G z8JYD$szm0oY&eg$kw~7vkl}ppRv2%V`P4QTXj5_Jx97nl;Kv?IgZvZKByY2< zJvJlV2vr2Iwf_5LqbWQD-~(XCZ2+^}-ToC5_Yklpoae|H1Sq|`o?|m~cMBG!kLW^V zDt7V;6M7QY|Ger?ELA<=($n5E-9^cFj?ZOIhc=I~`AP%%eM?07-idv+GHB%|CVY-G zOvv<*ti%TAYqLgZnsFx-p!Y?_a}pab284wK6aINBspwn5NaS_F3k0Bh)l=S5uZO+C z4C?B%@VEjR&@o=nUhTs5tB{s*cRK=r!0T8S@ebwkI>W^hAmX`48{mCUsT|-1k!;P1 zb;8sp!)r7=RnSxrxwUf^+x58%vQ)Fi()=QU-;_PGwD?;~!CKW*{d%RrQ($@5CYqZx zEXJE6Rd?dpcm^4k+L*?%Y%tZyc)azHasD2s!b`e{yYCLK_C+M)yK32_^{u*TKX=f( zC|4De{n6s0WUAZpY@>xOi_k)*Q1Jo19C^zley?1%G8Pj{=|b$Z_DL5D#6nSyY>==Q zK?-c9UJS|bTm+fY21;I!aciWKut;X5U-UeXQCIl#wc4Y#XDTLlOt6Pd!`|<36NwH( z_mQJjk*U-bIWgDq*z%SPt-WU3OnofYx35KN@wr%^p*ecGY(18%1xw!n4`*dvQZ<`) zM}VKxrfznHKFcLa+bAaQDvKP! zD0H3;FsiU6F<8=F-=WAztXQsl0@FSMOKtJcjQbm3uh>diiTL*N^p73>q+PZ3kfqsl zs-Dqw)q7H-IiaJ-)vq0H!};21T#xnk@_wK8r@JW zq$~jLPN)(B;l?uDQ4MQ-7n_zB5%}s^AEQ|b!I&vu@OA8P(()6ni-vCsujD4S>fe6_ z@b@#obYH5y>!@nJolorGc$aT7WK}s$*)E!^GS66ld9{kNGyd_N2Ye|ZRfXq1V_IY> z032_%!A&-lg77sIvG){Pkb9EwtZgXQFm@*Nl4RbciB#&X0EVOb0xf^cg{~(U?KC&) zoaub8mx5#qh&CK&X)Njck|8*+ua>`8emwc*_)XMT}C#s?K4 z;4h36Hwlh_!{yHEYedF-9pd|eOB_L7PQ5U|9w_zSM$Y{h?{MEje#PN{Cu+j=%9))E zaQItm@2tJInxw1*-Z{3a1zO6Jt*zbNkNRD7+;AhI+}1_$%?bhKyx)&NX#t`;y5y+g=gW zEJ=?Sbt&uj)PnPRD{K$!lH>Nj(OW@C!8u7M(k;sQHGhSzMIPY*-~n3jl!wTsZoruS zSpb@`1I~jyX`9qng=cWqmf*&?=3f6Bh;Ls6 zjNYsEjSnjzV?^iR3|5HOusNg{n9>C7tHdmAbStat=)hi@J`#UeS&WqhfFita1@;ETn1 z98ro#sTT<&1MAOjGSzfJduVox>)7bpS`sJrQF(!E)G? z*}HG|a;%6^6-39i-rbik&9y{K^lBsKX)q9ywsesRB^!#g7tjBSa^iW$oyUqC8NZ82Z3Cg^KBS=y*^Rdxrh+ducKJZ$J9oC@{foE zzh1k#)57Wg_FA_aW8KM(^f0gYR;UqnHJ(R?uQrO^cGambd%k~I+lF&}s;UH*{m{8- z=Nm*DKOPP$&F$_D%R93*H)amW*%F?=u4Ysfk&N%uV%l*gJ%b)*&j=0?;Vu#m{*G-j7ru(&eU{}=&N z>ZDZ8_A&EOVFK<4GilfO%&B_jMG$miSr0=mjFYrgemcEoQyoHJeZ&hXMbQjSxgu8&ZY@x8?6><$xvO5x zDDE{-%nb_s{fO2<4)aUBJ7f#yLLC-_R7(>UmHNt?Pzs4**|aY>3%bK}NvxIP@7hs5@{^*mXfs8%#3{M-o1OZ!>yQd zhk6Lotk-T;edN6p6~iM>Emtikm1%cnem4wK0h2E9X+X&FX>RO`;28IO8i1H z(;DH0Zhhdzv;B12D;yQ4){1fH?>ErY;ygy`ic(I!+kas!B7@Rd2 zY!o@LTfS(EeMM$_UUP6p@H$HKpp)UPfSAZ@cz_;}iup6ri1YM~8waDlFj0s* zL#*SoD5L=hha)ciAUF$27!teqb?y(hVwA7XT;>oZsKR2s>s#?zDpmV_q}(Qcb9kHn)_OnS^Lt}Raw>5%T({(vo}LePj}A@%#21bBVd?e84JWn zFc>32U>GBWaL5Wp5FtWgV~`QTpv57x84!%^AJ!lHhk`}nz?Q8*{)x|hnOT+9-5_Oj zWmaV^eV4O*-#OorD!xYXxni~@lEKWHMG!b$a&>wf$B@jDK8l(2TzZjYz8mnOYy5-K z|AFY87xCyk@aNL-XH?klRA?F;+U_)z-5l-KC%?A|d#W6Tr^kW$pEhC^P}Qv3QwZQV zJj=bk*R>m9&~iS>NkUsRV40{IPlzM(3f)fT2MVyniY*+hM6yey{O=^HFrLl(VZgIv zd&hQW=R6rDsI`bhW7hx`oYAmT?Rc+YDe(kzV5bst^-q8S`e4zUV9!?%YswBTc1o;g zTju-UfSO@53 zgOGhZ$yw^QxbQL!v5~W06`gE#c+B|@7pI-GZ=zUpt52GDV#+WB2p(omh5A;JXT*nF z+hv?DXSIO{Fl{&e%awUwB&V!w%jp0>^M&uS_7PuJ^mB&iZZz(4+CH8sm5Z6h^M!Wx zwk=N@mUlFOTj0*Y{TFBPnT+*Pr`%IPrviwiA1ztV8}hU2T%qGS0|s#J-1S)qPc&Fg zW0v@J#zePl2j`RJ)*!+EfR zByt)6OzS%l^|}d4h{W!0!YW>D*W}5BR}Jqlr@o&TM(5+-F)n^YcoJ9UnSZh&xKmFZ z6FiiqTt67gXDH=W(n)Ep;mma~36mCKE&(>=aHYu?xH@7`e?ixJkP@h=mQ$ASRuIsN z3?QTEney=4CIR<&Dj~$pg)st$!b?(D#tI_JjH)fyrK`F}N$?opeH4eO5$EX{6NKO{ ze6zj)nK3|4tL2HtnqvSghdqcbkT&T^+y6hogZ{G6CoGn>0XN*7XcR_*x~)Tc?%PVP zDVfZU7hl|dJO>D3e3b8Yj3?2B#1C=CkFHYI2s^k1SrC<#jN7{*@30h|g5dhAMn1_h zbZ=~e1UDJ?sxpb0;N2Xh{br4XelX;$+i==*pLMbd$pTqxIrVUp;)PkKURmi-VOH~I znyJ``dx=Q8pR{Af@{bu;)wxaw67p$?FTT@Ga7?)ehSZ;TrHS7P7&3sAYkMK8sGhvK zk9pUDCtaN|RC1?adK>B;Yd(gXcNkSUkP;-rw70p?C==rab2Z5_x4|UMm;nmw&*Z4S zrCG0r2K{IH@Mt;8m*{Tw9Kfq1Mx^VZOty`@m-{q#lh}>OM*sN20Be)Es};bMdrm}s zr%?u&EPdDCiC7|BDIQt$R=?&%DM|mEpBS-f#9}1jUqxeC-)%b;_0qpsTr8>{KPvq{ zuoOGFd%E;!;a&ZyQPEpVj%i|R7sS>svJpKT@k4(w@yR08{ETBPFxk-l$QJ|mek0+= zf@0?30T#&BH^XNOqFhIjEAkjeY14;=6CfR2}Ts*01Mm!tJ=oyqhYY; zIQNG^$P<=ObA__haaJg+(_SA9W_X}lt7x;Gbsg2OiuFw)qZiE*jRGO7UQ@qJ>isCQG@&O)HGuXzG<`nFO2eG zKF*0nUYv-Qwg%G(-p{8yA!&M>0ID$1%>(}&+vON4z5V)iktFRj?Uc*wwprxAfM+vw z-L@IoHHG4*6Uab`I=4*w`w!i1F#~cNU7rzrsOT z>i>aT_pCFY)qKgQzPTq{S9+XY_XYFCURLu@ZurYfet+3V%?NOpda}`RMSB@Yygvi< z-V%q#qAMeLOLwkUItr)shQbyn(dpLNjA?Q^92_u6dqlQvo=?TJSYDMa`n4M z;BktEtjXBAQI{yo9FN;MuOkXQO#;B1v6ttr(LjzdKs?RXnU{gdZn&OuBz@+~wLH*1 z9q61!Zi90k>ay{L+sv{J7R*JcS-&~wE&2Bm6~xBQK!pkEoUMBh-^ed`1kg*6Z8ss@ z-Is*)_Z=bNsHhaS!jj4WDfM(0l13<r1d_aYSf)ODThkSGt5x9vL6qC@_@ z(kh&%RV+^h^sV9H5x#WPxGTm~#|SJfR2$RIy|E8g_XFyFFE6=&%gFMQ5zB=6DXbNI zA+gQPR+S{kW5JF@B;IRx9o+#>^JW{)?7Zs(XLe0A&o3DXE*jK%#c5C`>K7up9!Z_J zJX)*bJX)vtlDFz}JqK8vg=Na)hR-)&JiV|$@!}ewi;cz3au&GG3}lC0Dp{KZNt5Ck z@I(32|6TgK(znKbSSz)P>8gtb4xjeH0|~`Jxnwj5x8I7nb>5gv&#-RI&jWtjSXp@| zn9C;=qMCfXa`Wa%IE4#NSEDUR3tvrSg@$z5e{-rYVlQ#}H;cztY!|Y%6trTG1OO%j zU+~YDKR|IxHNR=;=95J7G|>TOc?-C-mz5ldFyAlq$gN`1_#f!V4-W=*^PfMTy7e;4 zk$b~-?!%21nj0EdEcJ1?w5}eB)m=_M$OxNfq=qA)!Ynv#C%})|PX9Mzeffb%t=)|E z0>4NC9a22su;uyX>UN|d^^m6GpN*|ldquxQCFlq@M8Vfm?b(|2Zai9LyIl1XTYs>bdU;^;yj_;3V z9kwRfvHt>k{pwJXs>PT(;oKv~u; zm%GLDW*G+rYo@6XZ8ro%5UQ>|n zfUZHT4x)U;PTVkv31}JYrvV9!Tq*lH^tJwNCj_p_A8R(7Uc2449YBw>Kd^xu->f@| zwC-^cw%xjbe+EJv#Sd2?A6D*W=oQB_TrG_g*L|rpujsBZ^g}=9qq`Yea=I-llfGxiJ&FvJ4^8aMUcDNk)3EaX>)`2Tlxx&( zJKZ|cS2bc`a5~N(PvlNsrIG3|y&8vtU-Y|P|J$MtL5y0Rnjq!S)lp}K`5JDoKX4-< z^F-$zM^*Z4CJoCT+(!Vu^LM4M7V~_!>!Ziv>{cN0>9Qxm!q|bQW%xpfcM^aP`9XaSnT~Oe6|L>_HICvubHs4 z{()HNmWlB(=01o#qu%7crxpEQSpU8x5LWv#7M^zGUI4Vi9%uNFgJuBYg=32j)ulNDPsqX=L9?k9EH|koC)GbA&rr5w8 z>Kr3&#AGlzooLK%)4n`Qa&(ch;cm>?E;48~IYR7o8*&{nE9!NjG|&`u=8fJrO1F7oQK&uRUKpoZs}qfKv^&eS%h-#R( zrJnC>QoL=`^md}Ruq*7*G~L8_*i`F@rZ{g2z*h`x=I;v}KMxtT8svP&nmE3%(7y?&U^5yy)Hu1ovnJ%sBg|FY&{D;W4>@uA4U==1q^2B6gnbiK=i8P1rW586Xiqt5;z&`<=lrab{x=WyF|_seOMH2N23wk%Era5GH~vMy>ddfJSTAJKyO6iMx3P^^W;Xn+Kf)^G`P{Lf^Jj1M`Q&aP z2_YVG$VGV)%Lrv|z#QN@d?!R#QSSH|MnT1G%OKN%2$M|nfL7<_hP)?|%Oph`@KNmh ziPvT>ccUavk$A&=wUCGTqT06#)%=_b>*L+5e!@8$p*>Yg0DFYhFa$%bHGS|HNtn_h zp_XG5I+5=e*{TUAalTO5-NuEcxob97Ly-NF)#zn%OtuSEXeWO5VWhuR5L{fHK}#*{ zk!tRXN{^k1EX$w?j84+Z;b1Bhe7;^Ta9MQMnm3% zNyTu=h_0y>btP8ocB%(H?y+MStA2gx%agq)5`7um!VdqOX`i?_Yjxo)$Fj=)_3kr) z6gQVOu$anjAOjVD)K7EY#0nsbG9h8wQ2f>{;94%-NG#x&7LPXF>PFM_Xc)X$Z8^N< zY5+(mAyHz=Mh6~kq|z@jhy?$)I0I7Br8?y4(Ui)_YbLWjlh<*Dq!^JHZH?Tb3OQ6h z7}>;~j&mD;2SCqx*fVT(!7&o25=hP}#Ic5<<@%G0a1`H(wS<82mJq3WeWB4mxRwA4>B1zq5QmbnAc3Ukt>MPEwV#hxI zh~hF0Q=$^B{Xm-#ezR2A!(SI&gKFtrrI$+YD}A8!k^Ro}owh+HBizZp`e2-)GwVHv zhUSW29jTK>jhRA|G?-L_!LO$N`2LLN6gZj;O5ZFjM=Xj5BYA`*Xc0d40IKC1K$I1R z#0i)zbt=ZaiHPR~oC_|kOq;bd?a|aRs1-TfzPDmgo)R>0(dx%<{}ghvf4_5{N*D& z2+R>Mmw0POq4z%fEZ^BVzq9k0uYzt!qqa@3X+I&N%cA9o@Oc+ftjm&elw&24GcTxo zX<=!3dAU^Jlphp*I=@sYbqa;#{t)i|wBTfba4cjd)3saJ&~tFv*CTxiby3JprTTgJ zdO5n+or#=Y3y6$jiYDG%)oB}~|Gkwfe8~go!q~el1btqh|E%T}&N{F2xr~u9CsUjy zPh~+-rx;;?bEQ(gIpUtf{eBPW|Kla-Za5GlnMuUXSxiG16BO98(CDC_ZiR8u; zvD$+a@QAIT0ecIU-T+VMqqP|{r~}wva-7{LUSA7@cy#y zw^ApKY*~y1UMd7Np7hm>BbW?6x#a-`XaUsSsyUI5V&0|9bb0y4FvI2T`Ne9(xUyaq z+`)b&f5K`IaP3Hfb#|>x^2>3qLLr1JO@@>FL9FVrF0Al}#rb%^$`_|P#lvyQrr7B4 z&hnddd>&J`Og3-Pmrrb^aJVdYB5>S3#O1X}p=OE{hJDXiJl^V(`vm#Dt0=wgHt|X@dRd$sB70Bsv5c*PWRQ%A-WUs<5Q@m*P z7>luL_(FECQ9Kv9LD=*?U=6NW6l#8sa_k|)1BtXOXHjOrS+EF-$qb9mzXpEUDDe4Y z&*SNW?4UY2?n`a%I9ymd9b)2Rgs82_7pwc$exGc0 zrh?e;U_xtZwUd32ahq{c{w4=X*rWFSaZT>oxjCz2oSWP1^*(CFVI8}Ne`Z4?Yu}ri zCr$=xCf7jl?9k|nA%o`JJm)YtAZ2eqal!6 zBp-hc4C!%*;rc0!?n5jaw4Ax6lpszaO^Vu6Fe(djF_cR~62GbKFmuoM-<4CQstS^rFd_RshHF^P<*s zpiU_^@Hmy+LK)!Zs)B3W^qfH)C`c~+We62_+y2^p3jGdRS%?wK-DKhQT@5V5LoSN~ zh%}$Jbs2mlF%_p5tuDH=E6J*9wwtGHQ0Sa*us6Sr)PKd5z1@>UruVG2Jnh7lTE>q9 z57bAJf&-4UX?@t;=>qxQsVF_#-*g_xf6fJwacOIxZ` z&T1GWOJQK>Kj$GkYxjIXp)f0=5K?|Rl&C` z^1qYajdry;+SS&rx454jHpf#o2Z>`u9{-Ak{IvC`iwf-^)}6!kK@6}7P&r@*WbZNy zAW*(wb%WBB1HmI&)NcKD9oI}`{7|Q#15aYfpOo`Zuqbh?YlWK?oFq@aS}p_31q{LpKeJk^pwt7Lf1;Qj80CTy&CMqg zvyGxv(JN-F2OGDlXvg9!>yLM`?PJ(@MyJM)qT~rz84?9sDq}fKp7)TDVTk_iC)HyL z1rd8BL>qd3&S@>zJVq}ID&SOnu`b|LzUEZRiAk%qG}bp9P1C?Mbge6t;anxpvGez` zXo&zG%T|`VD-G_Fu(#qrshl*dglyKABAAyYzyxeOg;xbu^K9uYr58%?1bqK%Q~sPB z5)a$H3z-yQ4xrDi9pYpH(u$YOjRGwcP>viFd&c#s(a`kfIBpku`l1B&*DRzD!G-&} ziaQbNV^3+6191U(x@APgItR;8mC^+1083dv20z_=(J9;Nox>#Vfd@cR0{_r|K*MDtx?v!RP*IG8>MJKmxkbZeo<{YI!JSBbl8$3GtmHj!g5&)Y9bEE>bjbEI&nWeb)rQbFD&)bpUXc6+czLU& zFN>N$MEF(V;5{Hu5i*Vuh$?#A@xgPQRG@csT_FajZIT)ayJ_e*72kBJ2RK~ekh_7} zoRv&_5weniHTc7cs7ka^tKA3Q3t5X`emTkfKzSthBqOp0utzaSrjnlUIP*LO1dCwY zis4$k!0nY?#W3c6OS@9DY&(keD)w|jnByjK#g<_a6AK1QlZWz*V$9>3F`vzTXHney89rDPO;C@O~3TZwJZ0Ognra{*koQ2Ql zz*6st^h2+Z*`=OxtwbC~#T*O0)9|=1ojvkBEX)2RqE!Km-SxNvQEWuj# z15nW~8;&YdBYI56iy0wR`1m;QFQX%i9N|s|CqFyyAogB|NLj8}OWd~@gF zVcCth_BwanpTMn#*N;{S;FTnm<#Vt+=BscEFJJLOF{+@By1aR*S(*jjF{u-b%lHRJ zF)F?f2BVjJx&~|)`DNSxJZq{QH(g3X3deFO@)cI)2dq>ug21UQ4FFpZ-n{c6ir*!% zM?#vtFVSl(sNbD7ahR&BVU-x|f9_FV!&yGz`cFm^e*>2ra7Y4O-0bvl-tQ(HE>#W`=j_|q|dBNWnNW2Re@R+r{;dI8E3QZFzo({&2lHaoK zw^i?sN#MH3g?RbWo_v>!&V(L|rJJxF|k zN8yX6PU4XKg$dW4{=)=38ebdrM802in{jEmbabRW*e}5q&lw!^V4S56XEytMuq61rpQL~BEB@wTd0fD zMI&V|5?@sf5*h+~xDj}vtY*0P2=IsF6rbsNQUJo>r`K`!{u|VDJqRb}nMj_AWU+o5 z8(u9U!*Hwu*;nKwhd=}w_U{}S;3vPZ7pcx}qApWLD&@qj$o?f;{(*YFVRJ5X?GJO_vJg!APfK_tF4HbKjkIGf7zmgM)Y0Zz%xTG&1VH4w4Zl929&X z5{vK8K|sbjssbdNvu6%TI1O=rlI9U4IgezuJ!gBd+C#}wGgHEje}!yOLE@Xq(UJ+v zkjV3In5q|s?DJQtZPh(WeI@G=9<*BK2*q>FdWKoAD!7Z?YPs*l!EztWjH>!<1)I6q zwGctpM>e9;0?mJ~*zZnJ7ai~RkoS@Upfo9OWcy%u(*GK_iDxwt*hJ@@B|xQihsu>+ z`<+a)BM99v;{EVe9krI7wI1HUG|EvG$&j3LfQR_(8>Z$O%|DE1t`_%q)As;{!)^0s zA&@zDv5vFjORGafTn-rY= z`e+(HnCN1D=SSepwi*)whv<~%icGMt!QH2fWQ0ocvCd#{8)6!3YCm}S@-?uGvk^l2 zvcBTZ0EM4trfrnls=fkDFiIQD1lF%L0=Q=~{P~BxOF(sa>uimx$k%E$!|6H-noB%y z>fg`}VnX_dH;IDHJkGIE<)$+ghx(8cP8CX(eVG<4xTs+q)Huf~30UB5$3I^9cZ0c> zcF>l4(pe7_QdZqpGhEK^M(UB?s{WGp15c$n1SK2)1;T=)+IbbgRBaQKhI4jUZCV*8=+Kb(2*dsVMj?24G0p04hgcTS%3o$s9U9fPRS&vZH6t-98~ zsilVd**JfynxfxD8_Hu(o7LI9}~`-=B)0>;L!tn9(wZ7|nSx?>9+k~s8{E!|(GsF60c!<&Y-BL@b2&IyH^htZ!o z(J=7)p$ITz8AW}HI)53~Q4p{vDY|Vfu4~vfZ)h(h$-(9zuWcH>bm1XckyYbY%R}Ny z$7;v3!`=Q={&6_jtO#E-@_Z0SbB6TVG*>pp68Li~=yc@wfS1Fk?ac-p_7Q;23RIXu z`FKzH$81{h!e@_wKM5O#F?oOV3{k>xCFUrR)zRkY^^puRB3d1aPTmUQdiDvVQX<4> z9EV5T5_p6RdL~@K=_&@QyBk zdQmRbTM__!w)^zOi_ZzdTw2tbWGf}BMVvMyJV^xG3jA#XBCJd?f@4!RNxogjL4@_0 zQ~yRckWlJRU$6rv^coK-)(~h?b1DqZ3~n8-T`pg#9Hn4JY z0i^MxggCyFU!cp|4Y0G`Pz#ZPi-AtHv6Tn<+7YHZZc;@T%L*jjgrQeM z?pm(AVk59sDgq1#x*W^p)1hu(h;_q2&Korrf&Qx`v-*cWe;u}L@=eT;%C3UH%ljt$ z7Aab#Xl{|DYmrK9QbLSiYoJf9B zR}$!>hRkCiE(qdpna(Zh02mi4_W$@fq762^z#YZwb!hkd)BBG(QxTU;MSQ%RdOuwH zKdVTc0#Q1gbQsmc-&Ip4Dg232-CP!o$IZ8Y8q2jk#d_x>IieY8KViNsGCg6u1DZ}q zCBN{jVPH_iwoze@A2iWC)BYDIN-3&arD0vMG*$ue{I@4=e!Bj6n`{*xfG(CqU!#(} zSr8B7*P z(n7p2{vv!_P_$-%Vh}c&GOd>v3ROE$saD;DRsWndxpDbnoa6pyu`|L;D{wuKu2e;F zAj|Nsn`9qV4HOAAV(R^&?CwS~9fu-56U*la$0?|1DA0Q=_NzxJlA!%HSzsx>KYXU- z?633;XRl}QhMPxXHIi$ASTZpX8lX8hhl2Why^k+0uC2MN|JK&RB&e0wu-~bDx5W3% zFsfVSF8m&rK1pG#+a9O)g@xVGM3Ag58JEa#A$C!dxp~`i1EY z=Jd(3P1+%Q>>yU~Xg+akO@r07HJn?deLLBIHF*EgATn>(5}1Go|A zh69O%3GcURS8F#7LcF?+m8nE#Tn#Dh9Os}8-l04$f%Fa?Wmd`rQ!6`7s{c0TQN8YpZmdjl@rb|7-*o;9pMdq<*}gnXaT7_W9f76Q4FJ_6h38!!;~3`n^W zI>c|Jt~XyG-bPM0Lt=o)M&^huo(I@*h-qW`b$HX|eoy<&rnH@V)5Ow$t9`vD4Q_Pq z*`b!o_FcP4oru@|iYfLMZD_#T6!<*2H0KoncTRvtGoXVn*;(f3$szuwUn0#nqvG5p z;%}VZ7&*G0HR|R)M7dS^M!8d3I#5&Hk(+mKD$5OgsjI3G$i~u^J&KdIPqzNjbOGgKrrcL$NP;@kf_(M=j<_{MH)j+!}0Zy9t*pBf^z5F)?j=JU+K>!XwdV>3}O-ilMzP*ct12X+SkX$s$K2TWdRxh%)_yRKWEo&Ary^3{ZV>)QL*`q zu;Iv{%aIkKbsYppq}Rbby@?+uJiLH3%?RR%%1B27|H99c`Yi*&GPyvuR@HnDNUSYj3}!6Q1E4lcbu}rBy?lNmqPu0Z}2!1dL|TXjpBiN4ryD!^DU0 zvR6Jk+OK;lDBG*tuu>5OJupas1j1AtI-d$~t|;cy^w$k_+moKR6yijiGLBs@#koel zFn{)>`Dfr|ko5;(bq$BHBK7Xi8P?u0EX4Jd;T|1NE<}WG44lT=<|^r}5*5gZM?Mzw zqtR#%3(s_MgB}Q&PaKgSNg)eQ554frsX9@8$~(vA6!KSH9%YS)*Iu02&t$V3k)+bEr4z=Mj_uw1bP%>Xx}yd7NV*wWIT>V25^Na?tLbUu ztx(hp{exGnlcWS;f}Ke5j$;az@7xA9PD1gta+>n8=WE} zz|PE&7;C-~_{*9%DA(;$>Gw*`{m$kq9ap%1-Z5d~q1`TOooMH%9xt~|&yRy;)B2WE z&+6i8rM6Xjv+>EDD#ZhV^|V7bWZ4-KtAIHOi{0Ua!{Sa?{ujfjH3?zFzzOB| z%~NM4nINMnOmoLC=Fl*Y8!mPhpmYWMoa3Sh@BoFr+P~IAQUCUwl|zBi%17j{(8}*@gs9E>Bk1| zJnXn2GM?>V68MXOU&ky?%Odwmx5T3FmJ`R_+7%N^H*3$mpifOYA6tjr znpfU;yii_pTfxjs-I(2iO*;KU{yIB?oz~)NH$T3w9{*R}O&Uhdcx*@l-t=^kcA*+H zBVoF~HH=v5w@@IdZZCnl268OH%WG@M6d^6Vg$1yH^E4N8 z8o|I1z!4LG?>u`ET)*f7RkUDQVC8(a?Y0IT-;2*;$?L%P+N^t>qNAy!&h9Y)U00Cc zdLgihB3?4yZ!EWrhwpDeo@0pCt+ddloeBuzxqkT3kXBu|Vw%N!vtQUq*B|H~_x5aLR zVw<0~!;LylR+PgQLs1ZxMF!de1zDDu^yxwEtzaBt+5QthX_Y{)Vj#`mH*cCG!aQyZ zMsyGgQw%z#Zu{Hi%|cM?Pc}hQh8-U;?8$yJE~P=E`+J8x(3xLzMCgU=MCfI4pK|=j~{zxkwX-{9^d4BiqZj6bi`q7ePvi(J(O;XyF;Nk1&SZsrMSC8ao2;p z6n7}@?(XjH?(Q7i-FoTw&D@zgch0kaBx@&c@~)MY-mj_Lf$uUkBLsc0x>UswIm)zD8I)r{v6cUE=54_*bOPGh z`&M^$>loQ|PR9`*CX*gr;uyrS*s-OByX1CxO3p~qQ4EVHHc`?lEwap?4t@1{XCf@Q zI5M_oDZYCd2f*7uH)FYvVSfJ2XIN1#LuY$d`Su7EYW8vYb{B|!JJE8lVIBB$a_6v> z9Yr2>Fw8$c+T|CQeQO1+;O2}?CEPf@I`Lvms(%}&2H0bx z&8v~#MKfniwe4Rwv1d!GLyrOGMdo>O*6lmqta3pTBxohg~%f&!prrBg7sDVRwDU8=#L0S$vv)2;OZxRGXX1r+P_^99 zi)ETWXz0EO^^q7VGBj%nkczc%p|1==GLxz37s=k5+V4Y2;@DkgO+G46u`p2Fo>-uZ z3xCWG7C(=SH_zch&64?TIO7x>(m3o8qnI%n>7)(OTXBgn2!3~2WQc#9BoiBNi|*pP z5S0A`iM73L95)$F z(9Wd$aY7y1$&_&8uMm0d!?ACsw(x+GP4FeO^MGB@6&AwU&)}bj*q*h4k z3vtdF6m$~#vO=ZhX4pESGi$^&lOqvQ7J^Ri5F4Ma@Q*%21Di?KM&z&D_m;RJkuWOU zV)1c|E2S@Y=@h?5Y3DY;7`#F42%l%@ZR1^aL0C-(j%eQe_@UO}-|Kk8rF!GBRWK$or7ps zhCv*-TJHBCKIyO_Z_F!LyhIsCxyg)wUOCu5QGBinD=C7Zr7n_-D|=6DTV&T$AA3;A ziax(BP(7(lcE7tRm$4Tv5sZFq7ds|jLOM0UFC3EeMwnS?F5%?AqWx&jHucRFN zZ%SoX+SHLLG~t5LUkIY|PQNl=@_P3Z80Qqmq44`2!+~uwICV8C9KUDvL3&)$#qxmg zeb>|dR1WwDmYj#lFRoja9PEk|)7#KmWAF*_^0tE7#$D8sZ!~WBGm-bL2mz7NySdyfkJpyWpukDt z9njfZ2Ci@v6_roq*N-pfM%89##?=_tbRg9|L52_1_hZj~(Yt79O?ue~B+0shGgz)H ziQZE6XNsQZcFi5l0|BHQV;Fl&E2<(tjW*fL1Gd=*B~OeYOJm(kY+m)YS;x~xO>r!7 zX_lsUnx{PqE^)GnS~QlY+6Dvb^E%vfaC^I#PaHM4QHK%zt?C15QoMImOQPPFzmGG%Flu+)}^kB;qA8ew#YVu1_|(p2YN6vgOL;MBI^xcn21*~|$aX4AY3r!bsu{g%ja z$A8GiJ$!a7XRNVPR)-|?G;viS>x-MTw{%7OCkBKi=l(Qp0QJo!DFnBr7lFh5h_NBW zk@gZ2n3eWzJ88(Tr6-tB`c~y_MWHw&W7%T!?zbiv`r(VWOB-?k-C$0Y#;$1E4?tI4 zdPMp-l9e7Z2yqrJ=y+6F>i#@r7!%{y9O;72310Fgmwu6A;y%StYoPIcx;6@H?g7R0 zN$gmQLLf*nXj_~-*(iGVLb6>sA1QM!=HA47*3V%ZJ@74-crP(Xkf9*MObu%a3om7i zE9cFF<+A=Lq_}*Q%#IyXi#1NXWQdRH9O>EAGF(|+w`sP+E`x;2u zjV{UO&K5|2niZ0-9YTCRqubG-z{M99t%&%VZMyu+z+0_?o-mSPUz68@_tFC0OxB;o z1VNU=Dv1Sb3=jH;j+hH~G(h#B{ybm^Vh>Y@e5Gx-pVeHeIZg8SXcp2B7rL15RI^^7 z>6yBlhpyc^f>pCFC)Y}~>yj7o5~SkuaE)DJVXG9sN`sgPy5z}rYwZht8mtF_=`Bd? zdhOu3jH3mZ)f!QW>p&v3k}42nyiAjcsqi^jZo9Is>EQ4=7hdbOXav}IVN%fsIyZ3_ z=9p$`birjV6TiqxQum|b>(D#5V9ar*2=?kp?0C5Ri$qmw<-t}>E{^F^UAu>7dq)k? zbAttIj!&5*C!5~e0{BVKaKBozPDv~!YwzH{IGO&CU=R@eda#$D+fIgUy?#tXMWTz+ zX8yXWw@7WhxK2;JY(@2$R@-*BM7EPU>Dm9KCklQW>_%(}RwvZ014*qv-OKd2dou}! zTa{`W8AJC04}GKfE9Gj`OW#)b#}~l4vO2J@h%i!$Q;hz(vNrzy$b#Mk=?~l;LQy?u za(B!Y6&))=J6VRr(L@}SZi8(6P44#AGV}x`s|BOx&|XnhPIxUe$x(W87&yYXRv5H3 zZr^Bk>fw|t;Age>rW|OyNOAd(z8DoF(J-C6qo3j}OvK?hLpyC$S8?KDtKzo5s9gB5 zy?Bme%U$7~=8)m`j$=(_4HY}Qq?bl(e4}(Z?&?@F*5F;zlyu5Cr&V@+ETkdxZPmm$ zv&?=!sK$)6Mv9j5^?`&D}E1y4-a`SbY;52K4h1xOnCYVpnw61I&d5UsP253*j< znH^5$s>f`t_bV?c5K=ey^J&ZXb}xB>UIBP&g;%` z+KS|PYhC-Wpx0tw$^}>Ti}RgIT|7H9{Omhy z*>ir!0tuc0_At>gJ?S8)$T^PL7&| zXYETbV|kp<&Cu}iQ4ZNFy7UO)SqE(}R>&+M0xY-1zM&;&9lMTW!z~se!DOU@~%R5gi$y9sA|>Kv%BbY?y`sB1hutN;@lV zIUN!#I<$Gb-?nM1qNnS8fkogsi-3ut<--8xWpJyiQttKOXh3`og}f4%7A{)lrV4WM z8eV>#BPFWJ-^)#x8LZ!>9K6!Hl9?6Il`yiTk(GWC^&hMOX}YwXgu9>aUq{BZ-9l7< z$y05{(oXh`Hz)%`O~o#8VW(6dXA0U7qv}0}T2x0AV=VpTn)Iz?$rYqqWhUm;Pm>9cq|OoC0CeJG#zxT48-z6=c(GO* z^lc=;F#tr9&kh+R-HB9fXdiDq7dpg3#=LIiqxn}T5m0EN&dP|!4|r+l^sEG4bt^Kx zOykf_;#YaFy}ldHZaTlW#epP+-waqK^KxC(U3l?ABig5cGYAcoo;N=0m|DnnvDFS6 zSrRr!(G&Z3efytT2xaI2+JDL#e}84IF^yje%RbbVb<`)K4%2Z1gZ9n&K3=Kbzlsmt zsuvH*$L?aE3i(Cq&s_qvVfP{3Y0|)ZH=v;Odbnuted6-Fqe<`frKwPbSyfXtnd*&c#5vL3ioNY0X zV*N9)8Vl32ZbJRuU_HU!(~&^+>?AkS z6n$tW&Mi*^&{0n1o@An9zCxUGDw6kG4kwIL{pJ?=A*m!G;(S*ud$~oA92noP&tl(OYkVMnjHy1C~2(R z6jDf18O4^Q>gX?b;d$M{na>#(#~uolxt*$Zf+s+;rT3$iQgdL@o521>8Cs3z)^hs7 zmHa++YRoWxpNk5PCCI}$jcfu>e$6%UvFqx|=J8o3=u1DRy+?PxVD@@fru^7k)~%KG z&JQBE&%sAmq!9S9Ji?k_myHrtWooARLTIxvFs<9M`?NhkiKyHxgdMvb0?3{$eopR| zBmdS$Hyv%Q)n}Y|_YT=bJk4sETa3<@W_vEcj4F zmPzhJ+?>Eb3>Gg%))1u)$wV`bh5O{oZ*kNx2%-#QZTfj1@5Ux?)nu%y8#FdJHCUL% zC3cbL-5=6amj&@&URLih3~B;7r&!~<`PvpTgS5dHvI~oOh~a7YVx~$;n3w%u9AHxF zHak0#19>B3pb+9W4H=Nz5Yc<#JalQ@2Z%>X|CHJ(F%%SuQLOwF9_0$dadCZp6(t;Z zqqNZy4((TIfdGqY^tOsGQ&MaME_Ud=AVb}t8!R{5ee*W~bj;60f2a zOa8@m%4F3MsdH(!0oc;e987aBQ2Z_R#Gwi~rWwi^Kw~&0QGHVHU!{imgPLNN6~1kL zrmVj6huyhaB!cpR^<`J{T}w(o!!CopVPt?x*$>kk}E z7vnt1W2DJz$!W87N9hgOw_p+gR5t-lHyp{vg&q=;ETu1~sHo~fLO=RONOaFgNWxr{ zg%XUaPe^JYF;SnsowSs_c6L4(Gct`&i^tZ9KjS{b0%Facy*eMbIy&J)ojXW4>UWyx zyM_}ZO8~_YUX?^iynLlNfzSg76!?iUsezH36-;|}AxQGvqQi%EV+4YfvqIB32WGQb z7pnO(*pj`nI3Wo=uMh60aL9F4Uw07`acW(QpqzBoPiRfcwdox-nB&wBS5(yJo6>8+ z+m=J0|L8u?))~483x7+C%{)hf4?ESvN*0oGk*g6u( z;pIT_YjT`vt$2P_TRdW=tbl3XD28s{V$U38h^c`mMNI%nfpe>_h(kda~@H}&@dS_;2Z|1 z>B|ztLK>w%qzB{04B0|YutN}48BJ|Mot+++mToPJx8k))Kl||oSkNe$x4mP{L^@tS&@f?J{D-)ago34gFicP*a(iL?hk4!)F zH_L5k4y+J&oL1O5g)Yq%tfn|i)B=+1zNtBQoes(s3ie^>`!V_6gQ8p=5FUQGS<8$i zi)_~pW|rq%xzKG?N_hT2ff$vDuFuvDzh3Z1l$?vNNRHXxN2pniE7jx)?N`sMeL}S| zq|_m&4qY^5HPpPR(jI{kr^+mYeUw+#l~7h13pzM9Qc(>bgy1}AY^yU?&k>l3o1`e@ zfwO=P2VQB6DCrZ-kA}8D^O8@6U@8om*k~(mJESVb*`ySrB)#t&kC)54M*d)k^p0tLBWqkbF^h(KkR*V=&EjS&oQ>F>+ zT^2_C!=Z4SWD#BkRn@_T#l;tne3`7&sWtal*~;0bOZ6g=!GjhPz0ILWc@xxiAzABz zlRjq!<_DwY07XO3S--6n2e<5nI=piroCe1u<=UP^6en4PwL;0}(d?J_c*&F&2az(& zx7Rc`bTC^N$NbsSZ*s20g`-pHiLP@=eNZJFT5ylID2T)?g;fZ{5RjZiP{&+7mU+}t zC?s=3d>9dID_L<)s3ss0jesXD2W^w8xq{H|T<}N_S;!MWtMvH?XmedaiAy<1P=Rxr zBfOAjWoN%&Wx6E##kt3#Q}=RJ&az$c8*=YtCPRH#R)h)dXo-O`|7C#(%|(zl7A-ln zbU*TT|DBw*;^FUvHA|bAF-pC<)qpIb{7Qc5SDfvDh9LHL(iBA#IKK)H+*Cq!W7!wa z+|^taI4?A-pFtflYk>_6%D8sz6cdbdb|NUR8gU7R!1&giC}7ThId8irN@Ua(aOwxJW2Y2+J+iK(eame6#AU64mp8a&!-mhu0{Fy$*LQbY5CeL4M(;xGQd>fTfpd zhgts~1_cGC1FgeX0QI>CVZ7mxsL6VNt z_zQaBhLggdJ8Qx6ICetH0b-80F~L@R{u3Z8_Y$jOJ+59BxDhMqcpl~oN(sxvl)@~f zm2oY}p$CLjkZOrSOBuN%8CmEV$}ByY3FYUnfr+LiVc*q5Dznb%<6+7VQB7wMWiU%2 zIgdbXQ>X&P)ez#yLMfEg$5$SL@w9b{(RwcGT0PmjgP^b#B~Wl$q=*Jo?pR3{`|!Ao z7X0)?McXDPms2hZab9`@OnTnwB083FHdn63+|u4kmO|LXH`qgPc^k1@pBY}oE2ZNY zunRJ@5Ow-b=^;qO6AQ!nwc9M6SZFAs?(z95hvey0Xaz(biu{V>FRq-TyBI(4X3B+9S`6&vdhi;rgDv88wY9@I%AWQ1s zW&7V>`SkO`K2`Xtaa22~J@E0PBpebB_hhZ)Br87}W12_Al#pgWao|R?fX9?-=srt$YsW7)|>ywC+KSt&{A&-WS%P-r&f!D9W{XpOryCXMYz%D>rRGQr-^VYFCds!$o7$tt{Yqwaw%TRJ@r1iIrjPYHm zP6!+7I#%Xx8rGA%6{t#M4RjWcW8*Wg&QJJJ#OJ?O`E)L?rj!!Ljk235Qk%vZ7Z2DT>!FN4{qV?2WdP?=$g0u&L!LU+%OYG|LpkK$P zOi?@G0Se~@wXdj)W44&2iy5}czYlZdT?cTA8@&hOFvc&?G1O7pl;-kC{pN=9q7)$< zS`b9W5BIdhn$qW_77E2wdb)j-*^>~y7&lpFzUbmki38YR4I>8TJ7r+ zK<9X^kC5^Q*%kwTyOl#ae86{BE>mx2b{CWJ4};4Ds>_5ox!11)g{+`5A2FxMm$dZc z?AHY{=bZ+Crw5gLC|hdPtA`+z6}2Vs4avw<4#K(jt&-L7*03Z#n0&UtCZYKD5qmV} z?Aj^?nZ!(ijU$uwF%c=Grw z7|eaU)6}W1qx`M6wE_3AO=7O=OBQ>E4CC|{g<=b* z{Ln2&WPw>O2vHKzaCdcYKY}v{OWXK%R5`J=(lCpa{HZm2zu1+-Cgho^=t0=xhZ~wo zi-NczVL6Mg=@Doa#*qalgtOkf;q4-A@1vd2;q9q~5B(J@a&90~gF;)}uxUv-CIV55 z74MsWo(1h7j0-m$ZPlV9K{6>n<$x<6KD*UQYXFWF1XxK0OQKyR1uV8-1IK?OhfT%3 zGe)e92RCF%+7=PzRm#M;MjM-D3n+^z|6XR4P&GQLmRS8>#P4@E5(lmSU0N!~DfQJ& zp*mZ2u`P}`xelY0$&}xw)igq}M6jmkafpJNa-KjW=grp`kX83fzp4(44RJfL*r{g= z$MlkizjJ27JO`tRZ3M?3-GabArxYdJd42jd=JdVO2RY^7dOE!o!2A6Si>@=?@e%X@VuQ7kRn)i*_BK?G z(Ii+0?XciiLKd~hoj9igNcw5?wgw7&X>fihjXob5026;DSCGPE4*u#h&8ss%H8s=4 zDk!UYFgqQJop+1B^94neJe}jl7?h^eP;e_N))DW3-u;knce+}hx}HCO43!G0H{m-W zBmLrAEOq1q_c=btEWh|?b{KDUPeISdQ5;S2@tTZF{h2`P&;A6snwoWA=y6wb!8!t2 z_r=r^#%^)|;-mV!KfAy^E+fJjcpaAc!wf;I5iV_zr-tzFJ7?Is(C45gKFlw53#LlH zO;eB_rG@t(QF#o&72dJ94dTq5E3P~#WT@6ik|YsETqvFIn+T?3iKW!D z{N=&iDae?kPu?2GK|;6W57M}A#CCIX;o2{23#;-a|CIp1VV*7w?v#AbD9=jN)`nZs zL`zHh-CeSVOFk|VjL|Cf)bNIx1-tSLcU|!HFp>^@C5EP-lh(0~theuL2nuCRb>+c> zCZ3Z7IIy+9BbTSQwVl?V{u(S0K6|iT{X3ar$|%mNl|2XLTtjrSM%0kPyb(G6A3AOV zNt#rAltnAFdfl%%m}JMZAX3f~43WqNrJEZZZ#m@D^NDNKGAaX>kg`3h*7V3hEZ zy_DPftBb(*SNg!rqtoBcz)}|6;5y@|(Wju~6lDkL@QTv?9ZQlQs!DcLvEkD!@oj|^ z%BEgyj5Z|+=2qG(o3G;SD|zKgei|paXJ75Cj*8LK>(erOin^fp3ve|s>qfJH*%KT` zdrqm`IyT|G>p9F~=AMIvteOK8jYW*9B{d{1eaWa33Pdh79!fv`vMq$r9J-5>^$em} zb-rbfmZ>(G1qKe75HI9L*S?aXm**;o#}j|kPQLMyod!W2))a^Z=uGomGgI%e+|E0c zt(6WdGa{s9L5)i3X=jma?FkpA9hTg7IeLzgtXvBWosUibfzod@$$}auTM#&%4jU=u zYP0#8`kK_EJ|dnqRcEuA#bvKvSL6dHR%}F)DtYH)*EIR{kZFt=FbmfIJ6x?|$uRkp zM%QBBp&8l@Thi|;ytc_I6l&21X@oiWh-j8Euz`RVCy-rQv^g+T%1GfGrKYOTSuIte zT%aC=t2p|JQbsO|IujMKEMyCnIHbN+oM>Fu%^fuJ=W|ktX##Ct_b$sZEJ|9n%nWI0 zj|RS05NN)m-Iq0dQw8nB{sj^`MM88NNQdRrsEQ%wz#%QHY~0m08j%G5m5J>poeW|q zj1zokojf9K5{4IhU|M?^-C9#v-SNb;zQvFgX9P~EX{;4et4t}mxFB>v5dn^q`7un9 zr6$0Cn;8>%2&JqfCW#xvAXm%OFKT`Vq%K}Z7t-Bi5-R;vDSi75VJ!V3SR>QHnAdkP)Ntl+83*+kWV`G~5=NhJq5rNy(!00EMowwg6 zT=uyeN;)O!c?EWgssR?m{nGNAf0%lyy~gXhC@@mYtw{IHBk~-vVWYp~1Z$y&Ybb_< zwh4#P;27r+Frw|M(OF0D@8k8d#wj|EqZAukRE`Pow@s-l9a0BlI^==D<;bc+p3#le zkZ}ewgq}U zP`#UJe%?$Yo?Vb4mJBd5B7x1!6!Rm4N2gpxTpLxPOcp6A?kHA>9}|rml-&kJb`*#v zEyo*RybPyZm1w^Hd$vT0+BV%f9yuCe?^bH)NGv9tqupN>t-V|tS}dJKh$1AeL@Y)W zRp@Nhmj>PqvJ@sf`_)VYB4hEOU!j@P=Vf?+}}nn z$%NJDUnFMmcD)RbE5-AboS1H!IKhLfby1vr<;H3@gl!J<+)%r1*;Tl=xoDVr;{L3L z$4aivN~Uzyim!Z>G?e9wM^zfFNo=dIMJ0I>|FF`ceM(Ff!ff80?vHxrl`37a2#N9| zp_Wb?W8oMf_-Xzz`+Ladbz7&SXh0g$&_*S)NbTFf4V0SHQVtASF?Q+4Y_FKP4?7v1 z<;bbdt;#X<$A+*+4R~6Morchc+5>+1+FeJvdfuR{R=0fyT ztldQb=8$w+R+afDs3Kp2Fi{h`lA%=C*hGg3TETvwlqq6wXL zUB#mK8bMxJZ(z%3I~^YUc9Sp03eD-={U%>ZB2!80UTXTZAP-zXIlI~}Hu3{S_c9E5 zYUs=kIhhWu64@eCzk3|SQju}`)G%nTsl*xhu@7{zmL)<1kp|wACM1~!Yp#t-zCc=e z(7rAS7PrWhWXn-uO9hCHWWtG1fDLG~e2&hWXVoh4&xnuhm+%SX+s430s8_x|q^PI3 zo^q5A?~>$=0RKc=}hepL~`X96wqONLz;CQ zog!;c9NGA}6VLb`eKUG>P;zgL>^6mRYWox(>Fo&3ocL;j5;(Nhq!_TQj`s8_y(~mj zAo|0wSn@uFU{Q1Ary=E(V=`sKDvY?)5BQ^EqvT)jsUk^pez~O@`aOlY)1ZG*i?6>x`bcg+QA9L3ftD3Ld_s`P0jCvIswX30EZz8f?{5-qn3%z3GS0%66PTchX&cK6K%GrWS|fhnw33}gcC z?k?vT8nVxxq0xDJM4s`Jzg^2i8TIS%^UkibJX5nI1zO@k#Pz63tGak!6J1IT&Z$PE zT+)-WkwnP7f2oxD76l|_haLJXy@3VSXXR6z_Q3@WEjQI+mb*6hlQjNJ6>sLR0PMa` zx{hAd&6s{S#`FLg7qns)M(5l{9h!zcDLEXF`0b2GNd>u=DKj(B#kNqbKov{GsDCrF zEs42_1_iSY59y~J*BB{OQL>^KhzF`mmeiciG7DcG$||whaZiTgU^y}vf#Jis&Sja7 zT$^jaJ@1p!23R?^RIJ7|hsNg3bGIhM?jz!rj(BlqImg-C8Ic#8@dI!Q_J4nLUtXO< zS=!=0(MTm<%IVP@?@6u)Re!C`@Ux~&);VEVuZ~n$@=?3CW#4!X2umb6u)4`bOi95|`1z&hLdkXa{WN8|f^Oi^n4$ z^79=<952p_BqQ2}y~NNXa2b%+sQAeGEW-N!gt6|bVp{9nqDAN>XDV@nvFP#vi!y0v z=B@*NYR3+gHfM|fv;s{I#cKR!s(WgD`PkL;Tm}jn*klfNzV;7$K?hd{AV{rz&cNku zhF{xP2$#Pn;xEeP$D>PcFhIa_I%2vGN2;Pd3E{Sv@L7cdsXOXx7j!xHdxTw=-O_6@ z1UtXfUJxdAlEDvT`LqkdPjJElQG{TgFROqsL6Yb`oTw3mAb!=;7R5qKy#*a8tUuGm z%3fM#XqbY(oQPcs`ITrWRm=?Wzy6#r(J#I|Qe0=}W(h%c8&!Vkd6autJCgTyt`5}d zU33}mn|2s|jPA&C7=mf5a{$kdCBFQbdzLp?h}2o;i7+Y?lA6s zv`3rd7|Jb)!tyg0(O$YXQMIaDO3MlPrRX4PpB!w)VNhr(FHQZF8;--YLBO zK{dP@T68f0TBbY<%ujO^Q9sop9qb%u>3QRw^~Y%g>b2$WN&ada-KA7@81X>!KjbE zdJ8hQQp(2L_Y1!(@x$-Co9C)kyIS`|tkb8>xV=>hZ|fFIhSkmnKDiahXE<6fZW1@! zeXwmzyr-R3rimB0T&iOf-PPT1Z@ICf@s0YqN8f^E(@W0>snGwVV?Jq)s8paZIkP2rwK0;c$q-A1H zI^q~jP;DG`&YSFB9(SMk*Jiow9?q%8J)y5VoOXxSy!UP&p9L<o)@C@qt!7N$^oaOAKI}tW>5H0qiHEOE4?$e*9NiJhV!X^pxBY1= zbpY`EOwr+EuS&eIeLH})WY^~4^!RhPa*5}D)TbRLE7iGv`n(=_b@tE>arLadNa$ps z<_+WykY)ug80_}+=07O{y@6IV<9}9JI@;fqs+|RL4+E#KHr)pYbQ;k5{@}4!cf##1 z`BYzZ9x>eOdtYpLnZIqupt{)WzpTpsyx^g?j_$)>Di&~RqBw_mPZ`XEjY+o$gNBVc z!NK=XWzbuo=RQCy#BwQem>I|(zUk&FOt5Q}Y|lwjv4!ipS=6z?k=;vvh@zcL8SX!! zKFAg6&Ym50+c4T>seY;?9r^*R-in;@Z~3_`Tqr~8gDC3oKGeTbwN1rTHB8Q3}hNEUMx|ITT1I46apk*H5;o; zTEcROh|I8BN=wxpC4(Z;I{1s}BZsn)EZz^}XYCg_E4bQ+_i*ZSl ziU<6ZBs!OmrM6!Rs>Lr*oC;bGmk!llU20cT1{kZ*0t*+8G$zBd`P0hoBAACeB%U?U$|4 zH#4XQGdo-7>mO{qU*hx$wZrs21|!y&kX>%s--(^<4euGaU8sxkjjgqfn}gQmLlza3PG{*AC)(I6gMT<_28m804h(s6(hs*ex~)Hc zv&?BWo1EfZJ!?tE?ZI4<<6R7sHg2RzedO&V?5%>`um9L4?0EPB9-s@}Z1rczgTY@~ z?IJvK^-rK)>>&Qt6-W~EqvpfsQU=(p)1FV_2&pdTEoguHsjBTqiBk-&zt4p2uaeMx@*Fo=N6aJvgof<|<%-ukVfp9Ta^pt!;Q<(hbROVW;q7gp+ldf9 zHm$Wg>pgaOq52axgQNP7|Eq_Y#YUwnhC9x{VrO*C2KkU`WYhb})Fu8Z$n9>YZLvl4 zpwX&g^9ky~-Ceg5F#OURFX+BI@c!!81 z`L14##t&aIBbLNo9U+|xo;GEhH_AU*L#49# z#{<)YdDW;~!O}vfbiO;`{CET$@5M}sHedKd+^ZDC*3PO+nu_9 z$BBO~boITZrQnY6^fE^9)LSHj4})U(P6b25#MtPtbhQ`2Vs_Y9;xwHPeVhfv!{$DY ze%HtNNZK8IDHFVu*ICrvxxBX;~TJpt!Kz4^6eC&39^k5?VCQT8eA=S z1h>pKTK9+z?_4)QX^-;>EyCke_u6_1SuXppgcr2O4c#ikBipF^qSacRr`ARORr(j?>yzVMdseIE7NbG3KK&g_ed6j* z@0wC`s326$;Iqp+Mt$hDH}V~{rWKL0Z*D=4Ys0U3DNCOwiIH48VwZ$HV7&fdJvOqU zw{Ewy2q9O;seyT0u-IaG@FAb;qI-C;d6<8HU8l7pEiabigeLl?8#6j*TwIN zR-qFhP~AIvy2y%1%U2^f$=O4N!D2vQiPcR*glXH{t>AfnVFb65HZt#U|H&!*b^}W zgpBMBjI14qXc?IQEkHm3=%PvgH_kxB!NE$z&cdPv;Qu!fI}69Z(0W#8maY{4mQM)~ z)Uy%$7nvTQ#v3s00MgUMt@WN52bwMRRW5N3rXwQ0K^SH7@9e_ z{smNYwg1qjxV16xuVNi-Y%Gne{_>{>$l4hi*_m0JQ2b|dN`QiqiP?u?Tq*cJtYSpT z%L@=vC1RleP~ZQh`QJIP(f=0*Wd(5xD?Kwy2Oy`Rot_EM+QrO>frFjt2Lme;odM8_ z5}*k9Nb~<>XZT;U3+XwT8PX})8<;v;*%;Yb8vQV_GjcVcGqScfGte`#rZcwt|H1wX zNze{x^RG$iiC8#T=olG^*qIqWOloZnbg(C4{6~p$dUk)6z{v8Kfx<_FvvV|X_*ZC8 z!~_uh(C^3nkKjMI6@U(U4u4H4ZDeSs_rHNF7}*0I?F@|UKa?y8v;^8I+UOY={f#Kn z|1}-UUz`th{x#f(R7r`Rh@JHxY$YWIBDTM6LE%ICxB0UCXM~A}?cd4@GV1&T@^4)~ zVhkUQ{>kwXW+eK@3V*@n?0^P}Mh=<)IUx~%l97vp7C_j=K~(W?JrkqTEPJ>{k}woOXUxQc+QX#OB;-`0}rU&(iz1H| z8f@x`bALJ-Xuccx!zm$M`zZdWp`_Q1*ULk%j*K-Cp}mZg*y>UWK$f_Dx1gi_Y}D!A zGm(ol2fA$~wWXRoZlX?FPf>9rh{rL#aDWT%{9?Ek3wja~PDtr#Bo8AENP;<+jE#b# zei(+Bapg;G4(PPvum3sca$&hV|6rHi@eAcgzLnB9A5Ln9XJL_tA5V$@@jK)Uci~n8a3U05~iOnFg!i% z`rS09G$!Qdwr^-r-Vvq`{*IfRizvsJ>`J!&g!+UAIvS4hqc8E}t(6KNv)Pf`rDo zq)_d1P2))5TabgXppe?<4(NGG(j>y81VB-A87s{SsoEErn=~^SO_d}q{c8S2v$T-) z7H*;TXVZ~ZQJGUF|CM&gbpO_l>%{)vAylVllpqNPR9@JAAB0jixyoEi!mlE0j z9X5aP?T3+Va*nt_Ebo|2n_)5WaYch8;#sX3B?P`8snF8&!TH$&khh(`^%Yvr_2%;N z?rstJ@n&{+9Ten@oO!j=o9ppz)0h-(KXSnDY9l;V7EK+R;gcKdavsPQJSLKpp8z|EMI;ijtYZaQp4~!C1(1PN`>Q{(f()boN?o`{@<+d6l3{x$FTNF zOQw~}6^Bzgk)`C@$LT68_1GAWl;Q}k-@rf3eUAzu_1%t5b<+$YADk)b(;o4uXDGCJ zjyK~(V*lMy!9J!0DXZu3`G*L9AeLh2isv3raDYgu)a;;F<#%^dB@5^ul1iff@{c^y zgFfmKo?z8fbV@pO2lXdBA)~|u;82~+>obQ5jG}AS8|sV(`Lz|N9Hk; zx7r0<%Y~1;Dn=9bpS!U88N4e4TA#RYJL$}1rYm%D@xd(5g7$@aDl`GoXSrGPVBQ)mUta5t1 znGs;rhUwTn>NDsK$$Y)9y>M+`TNS75pBLO(Oh7IQDXjk5*eIzHC~~$%%+9WuLrkfD zN`OL8>B$g${N$G7o>GCEMzqL#97jnKw$5phGQO^^CedV`#7f98VrYcj^4^qEb{Lp6 zz>s0Ky5K}soNVdAhSP_CzrsY8VHaNd;%HX(jb=${)dxKS@m5)NBGUdVciXxHO2E1tyg6{J8aB2J7$i zvBqwr4#?VBU&SPH36z+#GPMp>KOPcE?nO~QPUqDBbcHLQ<@ou~;cYfBXkpw26K$i7 zm9=!;&+UxaK#h~E7PH4;w+~~~VmT3Ct@mXiIel^NfNNaJd2w&OyPS5&N-a^7t%p04 zobh?D#6s>ljQ&I{V~YZtihOz=uf%Owa;PQWrP7)q&LHvS-Y+K*iJgOZQHh;j%~AJ+qP}1V<#Qk z>8NA-=EK?hJ7;`%?|bezr~aw2#;7%_>K&_UJ-_)pbG~93b&JEyIe^-L9YYZo;a{Vd z6n(VKO|8{?%}g0S=cMTZE4}Kc>Qcy-w}{2a&CAa~KSH?bOChib0&tO(%6QgA`kyWz zB_vn6vk9tHbtos0O=R@)W=LY9(j$Qdwt~;|L=_l(8F!0(4kQ%{9E{IAzN}qBIa*El zL7%d3SxbXj*9EnBySKqME6?c*wM_4{%kGS#;hF7Y+bntrwBn2C-sIk~arJXSId*(Mt^Tq7U9uFm%XR{%m8jL2Tj+Er7?lYxumCTh1~w`%9NoZ zh(b22OTshu8P`blIYKN~g6uCYh63=D#o~N4uSWn5f$Y1)dCf_WB`qz=&xzpGL8q9W zLcIMnN$l4=7(i8J`)}_|2=0gQTmH2w|k{U#&-6psH! zt^cl@>Hei!XaA>K|3gv#uc-CE=<-j!{)aCAO|Sn$#eb^xKZN_=sP+Fzh5p-${Grf) z{}BHW5jd9#$wUlFAQp6%roa#@b$D>PF+l#8bgYG)5R1mTm#$EybR z_ZyZ9+I-YgE?f#D1`p$c%7Ufpzi6Q;C?k>x--wE+J7JR`1<^WOBW~*7-ZvCiuRWfo zH{c^0RNpdPb5m4|llnV4S|Xa5rz#e~tS#ucum%=6^E#^Jv(|pS^FZpNN^w8bkT-ZY zJ4~Po7-_aCCNWm$!jGXU1YX{m{Ive8Wv`8TiP{=S(u!mn(NP({5!>qrqUg2^vC!ZN zrd5^V}4xukeY`jz@R-=i!Ggye@q4Sr!+)`s(=v)$DB@bbK=d5L(55#z7} zwKm?59eL6m(6w3Dlw2^=_n2$cM}E^RU9?hsvX4oD588*O!lk{qj8C)cX zdeExTc9(h>etlkfZiuoRk!>!eIo$($luLMHOWp{fdxJ|(YfKxp^ALC*V4wUASyy5; z23mGHFM`mf<(N$gT4~9EO7V4wwXf0nxu?op4sp#pQhhBC^GO^hy6~jx=X~jNg|g31 zfYfjU>abF=D+M=YP(8*w4FmxfPL%X;PB3zD7~^tw#h93+@%W3}IB6wnuU^igbMT@? zMz+e@O3G%zvbY?)SYOcDdwuR)V@Y%7W{Wlu>J2{-DwA-o&Yl8%cFMQzHm&w+2a0hm zulM_Vi(^FJSpY_=2v&p_8Dh4eYV8Sjx{pTY397u#YM-Kz+iT+IaD`B44@%YJ1xSeT zEnJ)P>WB_#`UKjVWGW3_FZF6KcYF6F*LK-DoI%va$U-=vV$^Z)1J%|(#9gv#=(tfrC+w8 z79xc`ipG>FG;~Kh?|UsarJ0rE8&YHAF66qIi4`3MB`qeo+BkGsT6;BM(8rQr zi}OSc>P1-VEKWPCBAnYOCaRMG-8SL6KRCkpHN-y`R)fFuJJm1oGRUk8Iv5*36D~_| z*CH|?e#BIO&!L}X2#>TkX=8cVMrdM|NPsGNtuZLXO!yN**vmslv&^Sz{20@07Hj~q zk4mJ@wri;gm+0yReE>!5oY%6P3);ofGoOc+sR@wfSCQU|{8%VlPeSW`@>z-Pb)-n< zd_q3hMVZ@<5Qz3OyX~QXoIZZhpnstZPVF$A=|UUDIU9> zw9c(GBd^X$qGM+9W12iPqoBSQGP~F4eLO7^W)&vkI51wqPn2{HI03_eaZ(x#)+4O1 zGUaJ8teQQ})QY4WUB;w6!5e*UY2u(fumvAXOsCp4gJaySdy&T@VO90EK>xA|&3g-P zV-=*kh-0(z+GRpFgOwgBcp?deC(aevO}naT74txlb3igrPa%hh_3QNd3XNx4z@7~3 z)wu?$ey6f*?iq^6#5#H8;sDizXFynDmswF%HqqFQ2XDYUeTcH&ca&`Z`NxI06J62r zbV8LV@i)Yt_*>pySDvXpRKmidCvF?lUdjVBUlwHssyC^xpoXV)NWL`sE+$-jwRid~ z^;$&Lq%9^=)ga&Gu6|k|kO4wUNsRgR1_%TTWTn>FlGFJkI^N-@5w}oV4^aR%fnKz< zEinpfFkbOq080?v2UfF`2r7oJ#66&J3vzZd;vev53F4;mi?Q+d5{)uLMm&OGb9t?E zd$o2wvd4&M3@X)i&69(a7ZIOV$S{zTdDcrk@p;hx3X$UJa!c z2c`i6{{3Jyt}PlO<^DUYu`L+A$AWV*du(=9sTSl->SEKS4=nF0bC$>6@B?XfB#$l; zwcnGOW~4ww_E)`@eQ|RZu1Qmx@@3D=n|0DNXq)3q+6mJL3V$&rk)kSv%;fM$5X6GH zH8YN+z+X#vwCDHRsyV4rPZjsh?HxFJk7SQkLnSwZC zmzEzJFzMC_;4&KhCi65=f0%oj;UOm&__?>;9$NCK-5{J85}Zc2Mt5u3!4Bax2||I@ z8^&wlaox`$0pz2u%qr#m@tp9cGS6+4Sew;!426i+pPK^HBiqe=EnUo638J+QH~!2n zt=8{;uOJ5moC}5h6C<;J>Tr&wHTX{$$T9S_n3s}}&`6jF%I$+rew^?=AESkO-F{En zveoZLgV#MGnw&qsD^`KC(LC5Z1IeCWT`#5dQw6$$vrRqXQ^Y@&51%cA9D!WEKS1%3XpIh2(^N;QC zu*AKir!Y|d0`RmAQ5jf=)Y>9osR}RIP5mBkZHU#bDz91%X5_@w@UaYR$Lq_kC9ajG z5cclk?D^8|=JD;@%Y7=9Sn@h4BQt-v$FIXr#Nt=T=A>XiZ2EEZ6pQfaeFIl;?xUf5b`4>!&VV<@hrU zn@=mr(7U02sDr6=o63l|{{$GnJI-f7mYnJ*rTb zGq5l={H@e4VNH+!I~aTx-2We)f&auB9Dg9t{{w6ModfXs_Mi2A!T-Jy@E14kKWh8T z94!9^CnnUaZP!GR-mCQl3iU?v3tjJ{w1vrh3CnchAZCO>Zv%8d!Yj!+N9yJ3K_$*CVRz|9i~EBzUjOPR?O31lbsTSN zKMuGdXPFcI2g<;?8O)Kd%V7>&#s=r|=ZGPM9m;S5Zf;?FOxom%q1n}qs$&~blj{Bh zu$+{g=M9$|AG|cXx(_S7^Pj`+7v6`9uG^3yt528C2$LUk&I`Pz7h$L19o052F{$~B zR8TPN>J4E4D~0p*2xX(A`7-_a{4N2Rl&P;p5r%fW6?7#iI zBIV@0_&PevX>X`oT4_75Dy~!2>c5Ievtk=xN8pGwXPjM)uS?o!ZOn}mSsuPAkEGjb(NK7j{skbp4}FLoqIGL2>;9_1lHfZ zOKa!Ux^`eGCZen4oI$iGBu7$tPmld7t`VeP5s10PO84kp<_O^zfQR%tC!NO6t|g>5 zW1&q>PrgigG}p7D@;r?wUjild*5akC#xYJ`e*z&rGa;B&{>SuU1$vR9qt&i3UAEqn zTR;o6Skhl8AapGtClJ8<+mJ;+9{d@}SRr^Dy7+-z!1~jS77zuTO2D~^bn>ybBQfX- z9N5$OIVnH6{PUKy&tb-RfC(C49#D7 zOhzXT8EoPGj4a9GO?mQrzZ3?%z&mp8XeVawZH%^Ca^tb7?myL&AbKNu?CO5jo;Eyh zRMxe&59+R0y%Au#DWar?1A3Ec}nTr}&L*!bHtdVXIBDPO|4{Tu(ENFBDr`5vzV^&W&2_vT- z12J#hADIz!^?O!a*=4Zf)%1dkC!SaPmaXko0XJ!+VUvV3)Hg#SujuHtw_Rky_l>=i zmf?tC5~vd&DQ-={T^BgbI~t~?ORt21paD|K@HpchVGQUCB3y&1qX;#!FeN44q!e*G zf8gG3+1T6LP-Z=oDOVbMVl(Yw#b!f_^;7!W2Ay$D2@xid`o?ojUE3X$Fax2lpcs+#Lv9z&WUP6zki3igd9URA zXjQwC`cu~nssgON{)a|In#-Ihwh+b6IKg473YwLy$xVq})lJdO^b2>dcHiE_OcxDQ zNk!qOuzp4;z?H*!cF1V8>hbWNxqhc`=%`X=bLT7CN*^r4`F`it2oMMPH5A9|^+)2g zUzvv%NPz`!yGO&CjY~xiA1$uxpMQk;;|ZgU1K{bDf>_|afA%6y&qCpI>vJ9uF*dIby`Z0rT}%2}MvFn`JZZgna9@XY-3lZozN?BoI2MoTy~_*-F}Y>! z0p(CFqjt}l&E^GB0Md&W+SMgE49+ak z>jP7fPQMepi_XR`Tq2zNCT=@BZ#mzba93y;p?8UkCV5w{kj@{!# znbChl4V^eHb3vh3O=tj^2<4k!6hY}wR`)W4D>4bs&ZZN(a{L`~BTbu1nCN($%yIk) zP>--bZxitk|HK`Clr`96(6zX>)D(ed9d*-K#mVJoR!=pi()|XJ(;Z09qQWnby0wID z;k;BtMmCRvR3f%)g(mQ4?@hTWJ(BXCh%j{W^VI}{gxpn?dj$;9<(h7Ec6X<)f@QxX zUFIRJsWQKPe3YevC#7)`APmN#U?pIqkhA6u(4d7!+P~HW{*n~cfP#zv0+57X7P?i^ zN&O`YaArB2N?Vc27pd{BOBY^4#biB^BVjPoxXeI)q`T58PH!6R;85zD*q6$zO~Y8u zJ6;(oZ3PxnNk}T&AKzjbOFVa2dPu|D}f2qHRa_2p?o`5^ZMFx+5&ic+K_ydfv>h=(lveRh9YL$VC z)4Z>J>~rH4b`)-YceGAe500WvDo?`Hi!h_I@`P~{Nv6T5SQT0VHRr@mN9Y13Mt$8M zFu~c*US6u_@0-A8kmypg9>;9}V9E~N$ITRy|YGRB@#P(3k&BO}`%ag;xW^FI?KW}Cle>LB~%QG$Pnd5LfW zbAES36sr|C%mLhlNTvV<#X_`47!{t%mBnXE8sr!}QZV~B6ndUbfCV1*BF05E_^Bxn>! zg>0zl0HTQO^}D4>G-?hu*Ed`Z``1N9B;XRBKfnZxBs((GvW7WKOCo-(=#4%-t(@*2 zM9MSb%9(;lX^LaUrd!_lps!@U=bzdgaT}arriSTFfM}~rvsiYcuC4imygrg#i06t#iLV#drJ;Ne*uh)BQOlf_cdc8kB>5;KjgB!Au zrY*o?p4Jprj5u9?kB!s|_Bz$W!_TW;zj`tHYVrnQu5NqL<(Td$x@~=(J^;L9R7XV1 zrX6BdOMs6V4lPeY*6*+AFGm|LK5ouDyoQKMr$$p++<(? z;2vn;RH8oUms>$|sFzD|Wyq6~6oJMK{IroQ{jm*IurPHNpENiw6hAo~tabz9Yro$iM-6T_+@2Paiy^cR?faDEo#)kDjCbo`vb z+r_Ho$(-@FN@-$r6|@g^nh|c|vUV@TSkf0(wNG=ConWjEBT?907904l*uOM{r?wTGbm-yfJ|+`X&A;Cs7yg z!sp*nNK_e98S^vycox{!0ZvUpYo{FGi<%H1ed6CfyK3@jmUqK}>0`e>%pI{kvfUbB zxIN*zS@f`;A>=^GKvXVGH;Ap#zNiGlPCJYEj(W6FXf;6vJ#Fy9mAG3cCw(&@}3t~#BraI77 zHmhYxJrg3!y9<6*{DM$O1fi-3(22t5MDL(7FCnEPXUch8E?1|B}>FV*6RNK&>TknLK2oTPz@RZRs~5YB0H zM8hMbUUgdkqgKhyB1J)Dvs|7mey^FM5Q1GT#uAznsr^ktDpO>w+Pkh=xM(?DJb}>RmCX`nc@&HO`7OJAq!dRbd%)dWvO8WURlHL zgr0RE%WHp6ZROp5LbX^H!p=QC!D_!<&qIFgd6P#PhQ!U2u$m{@12h53p~1tAw#%tD zr8>=Jsj-68HJrzaCg#tELHIc~(kh^afdV_2+odJ^k>EvB|`19KqL1b=(AT(#Of)}y_OvL^&zK|-rEr9r@4c{GhKjt7orcz zN&5@@?w)8BV;xlmFZEkEZTVL-5T;oHso^T=5i6d_4k`4dEK-}rX;QZdVnFJ!r8BVc zr`-pzCtESYjPs4MC3-{{TL2)V1sI1RAZL!`@Mk>SKATm!kTtfmhAx1u0|J&#RRV-T ze!}5^qQR87iVmb-m-8x1X6imSgqz4VF)T8)@=DSMQeHN4jLPX?X0p5SD2u;yg$%;zuShuNmJ@x+8N?4-LtC_e?vadv^L#W+;QpbKb8x$BRtCdm>L4Y?) z&sV5#w2cdB7+%{^dtY_B=18j%?&pG$Z`czYSeXl4ku_anWT$eCcjXf0IHfv7L5U-p z>?(8{aj_9aoFKlOXw_$k@f~cjUukr=r>W~ZASkVzi@XAQhJLwM#9yvyN}6{LbA@k5(!9N(wT$ zvQytCVGs5KISX{=ps)xIUU*{6@s$N!C<>{^iX3Z)*!8Vn8aH_%Uu~q*P*=$h*z89x zOgC}Svlc1z#&6Y~BAP$Y4gjOKCG1mx^_&2X5hq>rp+^{(Cfd%2f+bhcOY?WZ*ZC=A z5&51=BJlLFx)4?P8q4L)pDl&KySjDb*<#nm69t4h-T5kgx#QiZ>&rIsV9LGbHIK?s zgzSnH!EvCFEQAsfQbIh@;8cfPB{m=GWAFOnqn54b6^JIJkGA(b%7_@#^OuvQu~enF z=ZQj#fQy{WHdDk~AbX`qoypTWQ(!okHGZIq3-IxXkxPguKnn*cwy8oEXXqjS+DmE<#8V<-i>e7`n5 za}sZ;N^)4I?DKy$hG|6xvI+-YElZVzu*Vg|Hhs>-6uF`^bQzi-MClJ7DQDy|meeLD zYSPOkC+HV`9(WW|nFZysr!w6vP=qS_($H(>aN@;G-gHSv96Skw{sl?u=T?9HQ|Lk9 z*eJ+ZK6BreJnmDIAj)QOB68Wv{D(=|?YE-z5%ceF$M|1Wfy9T{g@3JLicdAQ5Na^s z%-X4qa`!81*RWNEwRyF6+fojsL#c3nhlb)y+SpgAD_uudijd;BXK~z1-Zp@`$QDLV z>lb!Ng$;9}RUq^}frRAG8RLrf7}t@LL5FiiqlYZ7i$_*_2gA3@tF^7DCpW=g5F+~` zm#Lihb}g-5{GP_HMh-2T9*fy~`uS*(%=KtH5B|9g_$R-aOL| zX5_*_QcK(9bWm8jJXkQVft%vt(M?O2&;~OLXky5k0W|pX4%@YUZa8F;u$>`O<_oA2 zkdSuu%~6-N!@8dz!RHH(cUbNIH5vqrdi{cyAK_BBm~Kx)A#nl{O$7&tI7&ugaL3kE zXd7+CBWyQg!&Lnc>LV>9=|SYN$E?QNtyW=llWtMZ5pKvy#%Xe0GF7X^-uMbY`O&%O zFsHTJ&pqT#)G`?$3_1SDIdLh(&^Rl1yc44r=``FW<*0%UeQ)5_3=_rjx$h5gi{(`O z#cobkHkq=_64H%qPdnzl%;>;8xG^A7D4;y&LjD96PfBLNln`T4yb6~ePnqw~PVF7P zj1u8JGSyu=@}GZpl6}KuDRnjk%-vQh19z;YnoA5GKfZxSzG^m*fsBr*x zbxf*5DLJgzQ$Fs9H^srTk2nTx$v$YIAkJ8%noa_2UNpYzuDs7<@GM;+GQD}+(BZB1 ziS}B%Hrbf9np9Y)Iz)B)@{8D6BvTq;Bhk1cBK3jh!+r#5vXd1>JwJnZ$C+{8+F0V$ z$|ZL5bZ}ONZJ*)WQvzmSyWSUdsQR*2f01#?ptL|O4EJ!=&Or7c4D!w{1*&yEASgV= zJEB{^f=9L-w`^UVCcSrNQOk%kn&~hD0#nqH4vpO6wqV>&7$;CP(%20F7VpT3ozoZ5 z;^k`;HQO23X0re^#DM;=&>tsRZc{~H1cZM=zarXz&1FV`ne0-MJ5s&sDF+KY_vA4DY__kpzb!e^GeD6I~N z;|P(#1e)z{*y-$HvbaFWP@KUpOr!5uOKws1KtVNlFy@ojS&8AjVXhMQ&qLy08W0Ut zo*l2^KOOpxOLEA-uS2RsW_8 z@jDLw32^_8xc|V`f9dTp{*}1@aM%8Ki2F~5{=LKJpNYZ0xO+_hj1MyZM|@COnFXJL z@ps4YH^%;Z`u-mx?%x*c590o8lKQRPhk@Zwgl7DG9q}2M{%8YYVEm8g-;w(tp+kn> zmhV5KH6t4{``;9W{#now51UZ4j9D8&e67~|9)kk&(@W^(v4A5D`gwg!XB ze5s-uD>+=$ZZSdm3DqxufZNMtMNX5oj$foTy51V`lYF!vZErW5W5@UD+LqO-HdWl< zteaFiDQeed;cY9lBbWd?P$s=d2hb4q_m@6b`U*Divc|zmfSVHBFGnY(#%VlG4IF0f zK-PG7;jN(rCR93R96KFz1IveqdsB!FA+=CIJArwf9(r9KZEJ~%y zl@m!?&@s6+xUCC*mS=)IasdpWviaWy*@yjmLW6RRG3d&Cl7r}{{dc9rL#K)S=3`R8 zm8?}3RHw;7xedM5;D@Xe!=u31Zm>($A16A~jFD0fap(wdBl~@5aPE;fVHOzU z9JWH39?x6Iwg5dcr(BlhtS#ltEo+@7E-1{8Kh_f{X_&(dOD-1mVr(L}O_8e-XMUut zPu)PG`PMrC9dPj8iJ0`7#XDoqA)D~aZTO}+=`$JSovX^IDG2aQR5$q9y=LgRo*=t9 zxOMjWjNQL?%MU3>4XwQsP|g}YCQNnjeP>(IPxwKhnq`d_FT3jZO{oErJ)DMygVka$ z@ew#L+Dc3J%r^TziA5HG`EG}x-5W92N2iNaK{ZEHywN=2LR%dk{4J$B&PXD ze(j=FvG{_OjU$@Q%-oU~uw!3IacL`t-f%AG!4n+&b!+D9qPVkM5@SF!?C~>*y7+z` zdr`fLT4uhys;O#69~kqRJctoBaG{RBoIE5M=Bv6ExHSZM?ts`xPAPYk{Q3?>9O+nN zRA#N-Itr`7j!g)``v$37lgVT>nS}va(VodV1kylTmx}D@q%_QGE%RCzy0VJp0jnsB z^Gw}lECms#s5$xar~(*|d>(xWmHgm~rW@hS-aNhx3*WuTf|GCj9p${jVDpzr9AA}o zgN4QoyCC>44CTG$C0kWc%Bza@O=n^bOBpm4hDNnG+2Y8nPpwW_j6~P zlANuPK%)f$`R&uv1L}iIUG=NY&w^cRU%davlqn2b$6dF)}1b4-k za<*M%GFBrj$M;zLS0q1#Pgv*A@EN01(eRQ05u9F!2He&|%&brq@m+D{i>r z5Z2X0kyfB{$Qh@G^s|~SEKw#*ntloGAWp&(Uz(?2cxW(+ko}vmEAuP^5-p+zqy}PS3011aktE@0&+Nqe&*#{siI}w_C81n-$#iL z!zXZS(Q6SU*hh*qWavM~aI-IM6TeMV{v}Nb1dJMX>+!x9@?j zE>j)>qmLu3+FI$AQOvGaiADM%ll93Q};J>8dGEiWo2uqQ8rh*n_$wT3n{lS7eX z<6%RAMgpJ!f&3x8say3-&0lBW22*@h1rw{8vLH>W&D-%+4AVeMNG0o+5&Bcos-O@h zYu2mQSsoM3xqJB)7Nb$?3cWS8aDgPFp@t%Bv6(6+4R&SG>}r-cmc^Cqz*kjL9qfIO zSL@mx@`tjSDg_DzL;xpY#i`56fnbK=ThkI?4S_yDP* zd78p?SRM*{wjD$cp`rTZ!(c};T45==S!AZFWFLC%6=L&_I)^CI*0yxdtivJ6X?r<3 zQfG)X^bH%i4;Y(ucxJb_Y_SVh(WO#os4Yr)s*6l_}@0093fr>C9wG96e z;h@rPsu#y=^6j`1px|cMwk3zD)MfGYdA$E+c(~I2;g~O{dow3E6u*^7^v34fzH8&x zX_^Z@kRJPJy~&`EgH~TX)el<^Rxdyu`iO~krij{SA-kIi=d@a`0gC5e;yLJvz|Yk^ zKHc8pP&8qwI^Q~`@oAs#){OVPZkCvspMjW`;AcmewTinhcL?K5-oT3)1S;LApX_?~ zVEcr|+F$9GR<;`0T3lDw9F2FwbJt^bxzdv*^peAdWl(Mi&L=vKw2@ z2N4a`$2d`ZYE`hyQPy<3uwZ)LWYA3&rmUDsbQNVKwIdZ(6%1;tB=0SNhIpJFay5l1 zCgrvrhy`03V7F;+7dDI*59>(mSCRs3b{!7#O5I zTba@M_I$Q8=h^5NV%5R?sCn{w|9;iK6hdd3jv=cr1~k~EXMdXzvG@H#_+F0Z0a0BM zEDy_hPGumdfbh1!Ci=RUPidmsij3+8w^i{<>1t&y%|k)#$;lvB8hg;UR-<`-QJe!e zCBM>2G#20zxYK@p6hl;DLSOc$$bsd~Sn=+>vwJMv8zFqGmGOPP%%N5D@`I+aYfPGW z`B?pM#|!8+Vpu{P9Ks=WE6_u$Z-lp7&tolli|1wJriL-zp?4^yRY;dM!Zvj0ThYgy3AW>C!xja!DW@j^vJMt($LEM z#r&Cl7!O%kIduAL+o7<`ro)%$%|%~t9DV?@!>jC#i=F_VcU+-;P>04SQ!mXMoltxM zZYY@Mpd?=Kjp(TVcF+r<-k8U8@4f2On8oE?1GN^ z<-fy`-x1`WmfvsZvi?2{;C~1~e&dP%3=m8V%%4Ly{$<-zq1syXCqQ^Fsa+}n3puH6 zVIhFwcSsETb&Dsz(b*%Nsa9sb1qKS)Dt7$~bZJ zdgtt+PAbR6TZ^yQxIybFKiON_xT*Z8rYx7mb1Ae40eu{R7cQ1v3`G}7RU)}`W-$A5-=j5WGv7mISY21Jf zD8;OyD7km6b5I)->}~t-bZ`h>{}KZazPgly`|k35dJQpnDpPgq7E&;~qPteqdwT!0 z(hxy4=A#2H{FVKp)Z|DTM3I259Nk8dm_?j zNI%@Lu58?sHr)@L6sIsYZr!E*ab?-XQHeV&YZ^(T$7WGVUiVzGD|4Kc<3^rKxW$+2C6V9 zPumQB&`Um|6DJUjHS#%;aO-$5ZuPc%zg{sP@@(xfCu;|5TOHd#DaE~!#9Yh-iU&n) zqxxVDMV%#ci{%Z%7l+Ybe)TwfDX`~p=$7q-Ib407%5}tHx>!}wiDl%20_inwri*j= zc9Z#G2R4z6_P(<2lI7R?r=?=+!aCc-i(0`FG}LP>?vx!T5qG1}XcTZz@mH{NV-wba zC=2!A7lwDR9lB~2^mW#4?Ymv=oZe-=&5-oL2zk|DA_!cgP_x%=&fU1K-^ymwir6sx zry1kXbYW%Hm>%8cMQeYg`_9sy4N}}du2JL_owSvwNJSTq4LVA8>j@aOVBTH2*W66v(R?!eyxt%;J2lM0~x^-$IQe*0mXb%Q%q9^5n}8COMhGz(1C0g#%m$nzFD z4UC@%?WbvOSzRJ?O@jZ9?(8bI^Z47Zre4N}$3g}j#zd=e<{`5|OHvI&-D?w3a+Jur zYB%@q5mx6S{pyRpZFOxh`TUc1$}VEj9N>@1uQLxL@Yn*>JVX1^qwyeMR8e^^v;8Es zb;*_$>zboCqP$=mdzNljx1&zygl)hEDNS(E$h?F0P{XerhLC!pfYphrLCng#S-GOm z;0lxG%8Qr_>#XHzIl?SV1)81wO)W5%aJ9u*D~F#y^a?dK5m@M{O8v>DO9y2Hklg^r zSUY>XC|@$|BSUv6fA$~`h+u9EXx7M6U#sC|n}T`#k7|Xn;-JAFlTi)~O*t!eE-=oP zt!N4@?Xh3Bb(acjqSE(95sqpQ5jdjEA$^2SqvwEu@yDbf|U zfR_q|`NfOkv4w#GB6KL!j0VT?l$lu)eM8HELl8RLm8!+ri#iI#11a)OVbCJ z4Hb~IdF9cBTj|?<$io2lh|N0H9G0?B*>aD;*c-rNv}!@@hTAY7;icufpRau$^p~<# zIpA-o!`7$|H(6-VsaU_WSik|vwGvGR&_WV^Bl8k-);tPLGy?3A_w`XCC<2oqw{^A& zJ_Dqi+M)|uA|x8emer-TWo81MznGWD>c`fZ!-c>xQC$>0YV@4~K0B3T`x@Q!KL3FY z!)JL>cSqEnK0m8$Oc|SCy11)kp#_tNY_JRvl)er!0gNAipaA6tfe=RziM4rsVWIkl zC|8K$%!#>lRSP9h$vN*hJ>e>$Fs~`#bXu8)ZzZ9Hgvwfs%_6v*;Jm;k2dY`etSZ_S z29Xv}o%CxvRdloK18^En6k3-$)F`Z#Fh@vjB+r6t4Z7|y6T@#MDFelxPb`zeloo(I zXqs*v3q*h!G0?^TsXf}K{UJinr@|)|A4WdmOY<<_hj%bUHLFk8^DqWb zwJqZSKSCw(PR0ain@JW;-`lj>?PjB6Fv0{zg`uKmm* zW%9sR5+oMEhZ`$os{*SzYRpNX2@jx&s!Kl=1%tB)mdD{!$YZpgEJptd{#^WaGrvq^ z14d0a2=mX(H#!>rSREpMvyVv#nWtrjZj^}q3KY6-K@D{=D2)2&e!U&Lj4ZV#UJ;{2 zv|H6}Y85Z7Xe#EHMm)gqbJ|C4>+(iSOySu>h=7K`+&CB_N$WgmwqO0_9!S?^(OK($ z1wK$()LTo4dwi413R#cN3}$`@E;DovE@Aw%0cn{zmE8us&gzmk!qb*9_JV5G2nWUAAn^&R0Hk5PMWnrj<*OEF7SUq`YxiB%w80K zjNSKVT1&8tf{9 zXmc~Wt+i!Vf^TBJfB^YYY65>pbbsl6`u`(3j=w}Y|8R2tSBUN}PSWQ@xZgPRj~R0R z7$^6S339(jI{)vc(*M>pIflOki2sqir2ltaWR1TiFP9PD&h-Qu^~k9Q*4yNCm05ZZ z2|@j75WZ;PlSj_GbkZVS5N?X3f7@ab(hW}}r+S)!uQxm4{b~PmBF*F5-O0s@&BKYz zP5Y#>i?>dTjLY50a0{iUTeru;5mu5y^M{>Cxt+T2$0I>Gb!&ZX5#!4H+=48Nw`14G z^g_j(k9G}Ik<-L|3&xjKMAq|*>dk}6Q#mY$r~aRMFFlhnYMqK`vM=@r(UtIHl!|rd zrRG{y0eiN_8M+)eQB{_dSwEtvKI=qyuZAzDvlodr)aD0?H4{zi%qt>!_1Cs+Cq75nXG8AV@#_n5xX~;UsI@C1vU;yO)iaAWs zp}XFdG;Y5Bf-#7;`_x$rFG?A+q^N+~n<3v<2^{M{(dC7VZ`XQqR}#VkGs4nd%c{~g zYu&}I3Y&}#`oK;&6ZFjH6s#O ztZkRdTLe&CGmwhBAdSXhSkuDKO}?JrD|3Ne62B#dDMw*iN~4YQt7vw1QOo$$H-6Uo zl-P2)*guS@DY1A?@|oW%c7d~g38IJZ9CBoDfU=^lC1kmPX_FV8VY>cst;CN)N+0(O znskz;w|Wwxm5-0t+RLXS@0F0USA(Y^rjQcao&U%48`TQRdq<8G(MD` zOTPY}D{nxOWM5ivnx~$H-iL4Y=7jEVagUjv-b|#PZfrBGN4B;$OA>H{JKmJNF0R+a zDqEiVCx?f>ecK#(eLJi%{0V;!zX;z9z1M4rc{cS?k1CRqKjMnpYFtWLCb0_u_dSWM zHkqowkjdd^WmAGTCkGzKkeOYiuZgI9u!%FCzpOK!Q~@WNawR4fWk2i$d&Mwe7E`YB z38!#hB(ogLj6_!cPbfvhEZsy1)+uAe7P>_+MXjUUe6-3S;8-5&40&H809WzeQ)oRh?h&zj3|2kB;_? z*4q65m$2AlIzmqbH+R5bW}gt`gwp~y8O1{<{b1@`>^QX-PlULLeX4`4=_EzVyU3Pp zoi?ZEbAmurr>Z%AMB-#UBq|p};uP*dD;%fNGljCMn|e~lt2_;Orb63x=5uDhcVZE? zOfrx<{jp~z&q|g}x0(l9r#Xa?bs<51d*~b|m{2{!T-?Nqnm+`rg);ez!LD#Y}$tKwl}yatR$X|EM255 zS4w)kKh;c!7_&^$Fyzli{3JWNjQODLfH28VKOK{up6B!6U|J(69=R4Og>e)qfAEF? zP1_h1A`9_K{&CQHuRUE@bjHXx%GLG`brn?QRkBw)ozXqjl_hWBlpFeifh`exm>+a# za1?ibv1ep%XVO_QW_9^o)$VLWTn3tPtjBVj!7!O&sv%eimHGrMBM>$QhImErC;i3bez#Z-!)9j`xa?`bMEDZF zUuk!@T_Ttm-d(oV5#M;FdtsVv&X0u$weSfE?-b+)ogzqkJ4~6Fc7N|c(C<#6v@Gwf zrZQco=txEcvZ0X}1It)_eQ2bf;rSRreno__+MkGlm5{T4_#`AMS;YkhS!-w!(GfzD zT^u=f0ikjBXX^z?_bMe#bOGaB(jn zo24%5IvD*Skp7oo6fL7D8K9;UxLDvMp$S4Q-y4%v=;Ex z4qGGf@=OlrO6?F4h|Zd*2}TGP65Ve*e0J8mCqbBNS{5>Cw`n%!$?k&UH^OUzV%87C zXxAN*421&Sm%{M@1pWS4A9iYnAX{fZ>dUrm-zwUi3+eD zw82z11Ak=qa0p&x)rk+>gGo66Y#n#;LZ?Yv-fH-k6AN=rkcOJdnzHo?&Ra>fo~gCj z;cgi)qa5f-2Fqv9L8i0tG=Gq$8+`&BDb`9jgR~av)n0Vzw~fOEGheo}vtTG;oeoH0p*vlNo`Ns)-A zU`eqe%8G^Hv<`ztaweX}AFp|L=0Inu_-*<0Ht{q9pd3^!fkQxB4o-mw7xW;>k~m^Q zp@d@@>|%gRq4f0XS4MJTog<lmJmB3f#91pRj)2a1OO#DKNF+rhT@NKMhb6t50^?l~bQ26%w{Sg1QCt^W zfgDEzy+WhZx$fz~RbeB|s_(dD>8oBJR6z<$dpw6C&;z1>Cm!`h+MUV`_!SMR`sljU z=@~L1U-o3w`h2HOc8`QQwG5B15m@rMVK*7~Fxu!4h`e~PwK8N_##4{`FRzcvslc*wFP*Zx2U1Jv6l;}vc9M% zq>$aUjSjZqf}^D@8f|7M1d5|wdx%g(;UX+^#R{YewKa1g45R8l%#q#YLcdhcru!ov zm{I_9(Y5(Mg(Gge7x~I84gm>5Muc}P2tgegs))AMc(usOBW<+6b7tWrgbP{C=xg#B zsOBf>7$27&u>)n_hFM`6-030%9RQ-463qJ_Ha@m3JKP~$Y&jTeo%_S^=qSpw^tMIz zPzY&}Dp-W5>xoUSmoC|Po+U165I~vvJv0P3P$|p_LjTnI*H+(ik-Y(ij0156O!HSy z61sqfUT6L`DDEqYK8P}PQj|C=ZZcWY5NNFrw#u|{a%s$x>iV3OuriLtDwYWIt^j;< zNa%uGu*D5SpA)Tnyl`b6&6{0XbWmv1SoUKtF5enL&!dh47#~?akk1qkJOa4Kv;Ja&8J}aPtwF7cO1y%b2*ixO}8R_^U zRSd2IQcT3OM5P-4Q{f?IO_v5z&%Q`aNITP^mrz9IB}Z!vy}64H7}i3!OUK1fUXGI$ zH=S0w%b6a&5$Ay!8lDV5>?9e8;EDSSRn&&WFq;z$D1))xn6h12u!OkHZwt}nLW|nPfKcEL96b0!6n`DN&NtT3}H!Cj=Ao zRr{6J9VGP&6dmB(IL-Cns9XB~7wwDxkNHZ5{|=4vkFvo3fAf|9A#@r3BX#+II7#{U zDF17clI?#6IzLxlv-}2~|COY)2?iC>^vFQ{i>;Uop!FA9F&fxMT)w`&_NS;CXj;`& zNhVa#el$r(D@aTok}}2gqI$zvnpqLhW75_>4Ahf8ma4cct`?H zbch2zK8`w}qRxduEXvC^wD{DdoePnUwWFIbA+vKZB{zXw zjd2`gI3!cD2OAdD&g{tfo$3p083$@fjWc)J!l2-JeNe^9P@M^FKPG4HVGO(+tWg-? zz-;qr!I_E8lc6ZP+D3Wik#trdNvk@v#XUWC2^nW{)g@}z#`fo&wcrf)lok)n7u%Z~ zL=GKJxf~Vrg3%B^sw02o;A(z=%$(da;}W$ZVS!v64N1>np;P8Xv&zp1yB8F9+L_WP zzh~i0iBfb!2kim>bj2NQTTZ92BpL$W=&%MrG)mbcQ!2Z;WZAVz>(bNY+=ZlHM2gEb zj;)P?6nDKR68m!+-z@7>(H^i(^qqnJz@=|7hWtDc%P&(oFt0+9o_xMIc0+o;8gh1w zSm2DCOAP@#!0Rp$RV!2fBdP15aC8u|p@4usfTF{ghSX6)CEqE1~j9t_)#Vj*lD)y>f- zz5uLy`Fg7v4EkE)syu1cF_}tZ<5Obyb0Y{~l5oh#aAaDu5Cy|QE&V)SKgGTg9lBWj z(yLUXOi%woJUTgIj%-h~3i50`e=$9uEl{}0Z&s7vT$>`J&=yV3*WyDVCewDE7cOUk z!4(R>d?kbh>CrY7AW~7!g|$R=<%NhLKRc;W@M<{~3({=a{NhsKa>m-5%uXfYZe$So zje(M|a;jEtJ};M!UheQrI>VseLG*e(4*SEx7H(0VEH7{FhM`|>0@?0w0GF)Bj+WqN zf^>Ndb7?%nG*iHPS*;#~8C`*uj$DIkcguCL;$votB}qm&rW^?LWlR}uNq#U7s`VvC zh+4pPDahc+BB~d_fmgl(d8KsyVzcd3v%Yt~^>*5N-q$&1UmWuHREr-a#lU1K;FK0r zP2`OvC=)=k64ox!mzlR+e6cRO;pK+wKlds3I2Mu`(Z7hpx(7c#& z96pkCfTpPFFEIh>tI=6LJ~WM-<7(YBd0`P{<1>o*RHB1(1i~uj6>CVLgm}Hh3ETWp zd1Wj&dx{?yyNc+%e|7`-!7h=zq?J~BXSuCllvufbm#f*)wTbW!nayLV*hT6lR^TU9 z=?4ocxPABgNVe;CZCcuKjTGebNw z?sam=47s+r!F5ZaTeVHrM;^tC5Q&bP?2SvY44pmXL+z=`tOw3PUv^o!UJ3c>q;p+} z(i~cpMQ8D9=nscP!yUP?Zv*0pPQ`gRVDh#D2iTvyW(F{SgQ!vheB^9g5a%D;2;NtK z_jA|K{^PR~tvJ3|in}LG;3&%hzj0do$s5KUU6`;}Ojc=r)ig++;K(>R?sK*q4z{kjKW{)9uo&yUE_SCGcZ(;tE@(NB8!I)B#2;$YXSQm@gD zf+bQ2(Zms>Ew6gtV4zHnGY&{CbusmXhzNJ8u6c;>!xe33Wx`tK?#lR zy|%Da&>i(fJccb*KM4R4BiZ;Mc%m2W>fg;?!VdeHz<6W9`BY$FZC%bz!$=9$RW+9j zB$WZ2!$2BFXbrk}Zy!(|JZR7Mxdnk!;cc59lzLypHy~Uwmt7&i*DD2C+2A=1+xF-; z^XMZBC=_!!0q=aMKE>UKg!W6?pGZF@XdrK= znV`c95V!5d3gFiN*&Lf0e?O5EG)N2&)`coYWM|sT3A^*wanF&Aymg~5RJi2}mU1)| z#gJiHL!_!5hIJcedQOUOP39dF7DM`cKym>LqFpy4fX;7v2w^OGdT~mGN0mv zLiwsn;oJ%jKdXA?@UlF|{v$wL*l%HFp=8H2S}$5MBxUer-LWNsmripMV#XY}cuT-;MxU%bC9GY_k>9A|-uNa~#tNmniN5)oz$ z$K!uXdb-&mao#NCPe+z7$$Bcf)PAMW{{c#~vgOEE4S@?8fuN8aq(dgBlLJ8DM@hY^ z69Dm+6E03K))~FhCxfYoKdSZp^^)xU=)gqaFC1taT2iAcy944!jcx>fjqu6)P(JK` z*V7#PqHrRyxmv2u}KK9pbqKg9%87_8TT)u=7;jz&(GI zy>ttN#~iexzH^!5nk+F2ycjcj=;jynwC49Uf1^1#-$-5l1LISckGfdcsQFl!RNl0% zo-%&Te{R2aw26i5IDZ>=pCS>!1svYotgGvdi7_;Un)({4TU|1vxkjyX7q@szFiN5Z z&nnpf7ti{m(cSX{-UIz{Ec@bEC++PYArGrF9eO(zZu3M!nZr;+8uw;9U7r~M$2C0g z1bX#P2xcT*eNwP8ot5DE$LXK<3?P~PN+*3jXPw>JhgRZ|=~bxMTv?pk8!X&x=&g|t zbU9h51-D{@&xP28a)|}BDFkH;GsqeDa`iBsxP3F9_L0nQY_BJuPbjsnPt$4qNMVkW zOoP9>I0hEe$6ZOnW$8iXoxS;v$mI#~2y&dWi#*yj`xL%wLD!go2J1#TH$W>ifdj-q zcg4~ZL%?467FzJFlR_E^RB=zO^Aj4c=B)>1oI`xKZPg% ziSPb&>7fCp?_=G^_ajL-6_PPu+O*tleC0DFHfO{(%Hm2edavP*3apq7M2>(BO!qhs zUKb;k1Zr*zR4x2ODj}aY=qG-srkr)!YJ-5P$Y6T(%O0;$l< zfG$90s87~`)UlCwl~vKpu-Wqcw*6+7Gyrh27hd4YUZ>_PyzYYg@>--*J-W(Qz@C)v zkuS9f?+`*}q8xScHo~6Vt2Vl2D}GR1iH0F|Z;!)|mtX5DB2YQQ@#OQe4WsAom3;;D z)>hQ58|5ut)81*|%*)st&Pz{md0=L2r_EYYM96oQ&f@du- zUxI;av|`F=-Fe%+)_#)zVNlP|%$)m^ zTEmGa9~ZfA5-Xk<5+<4@UI4?i;veeXOF#G$FLllCo}?f_>MntTf+Rc#*)WAQ=^vY3 zm?x1MlTBn%#ZU;HfN_xWyVwX`Fm?INi0~#=b53Fq4V`A-IhU|InC})dj}r|kMmBLI zY{d%K_9w*7+dfXOn!p4_u`$CTZaBRDY3vf+0j$9rq-vtzr{-1Snjl z&V!Q=Xv#vv{*R}fo^x)Un(tx-k4eOCR?vCpNv+3FUT^)r zJM7CNB8n4#3Id-Q7vgu>9iFyY??$;3F8Xg2+u&e*MjiF_p8$5clOzydCb8prqR zxzU9WdU2dPxG%sGz98u49IC@4cHkJWxRj-rA?DVBUJ+~ zUaQ*Di(~fa4;qAQNurC@!V>X0hCMg6Sz-%Og`rV}N`z?ql+!;~DG)7IAz$gw8Rs&b z&QOiS`Jp2{;4e>-6Llb}h>kpEBOn6LBhmn`030_o%^aVwyi85A6mJVM8oix5A6%~& zD`hJaZyLbUnH81aq18E7())F-xvNz@RjiP~PcW)*TW6=S5Ct{@g~Qy?dT`NOM+FQ^ znw+yh;E7NC)%$qcCOV*o*5PECXU_dq_~EYM;5sz7=U0RkMhWK4AR`%w%-H?n2k=X* zUNJBk@;dkTK{lg;ZSR~Q zeuJuTKpsL^f&>;Lg|`HCd<|o++?^cjd*=W**sb^Ea19DV0X;k5cOhremHdEkGaBX( zJRbsLa?YgG*G@#|js^CHTWk2c{kZ^eQJ?v#ibii6x&Q-Tvt;a7Eiw2%#RIHObP_0( z^~51e3!OX(D%Vt5yEHnq2`$sma)Nn%T>FAR!n|Mo$j%(@)9``MspSp0!odfdrta|P zNo{p%{DcS$Ff}*HMD!3tJj!QhzvMt%5dAB|m;=b^_x-L7*CLS+2g8RxTwxgot(=~5 zCD6h_R@P{VueQ&yn(4k+-d_yqzfO)u(tym+(5X-;&uXcgQ=RAwg3tQCwo8CEo$N;(1xeuSZry=6&bTj|+9a#hml6I%;9p$z4o45zY6@I1(R4yIR*nO%vn~L(vM#^q=pj@0 zU=pWg`tqa6e5&-D*Z7UrZ5lL33>tZ3=Bl^rq^t5o30a8Xp+#r>RDW}Fq8EO$Oie84 zB-A9ZE;8a*nD@h^y#4;tJw}MA7FiA;I}Ecz^=7R%PzEN9hc-MWKxHt3Q2SopTy^P` zuOG@f@^neS!|kq7zx(!`WR{(Pgpg4r(+-RwxvJvN%7m`98mHfn(u4SA=g%Jt;91&z ztw-SBj@UcNoBdRl$azH(S8ig}0Hn20;2A4Yje|c0mM;{iSnb~hpoj3P+gWP{sEEfm zEHvFM&&r9UG`CCiIAF9f##YT#f|YI_BA_6!h`$+@_5fS-i^aGn2u;K;yODu+*rY-J zxi*DQcP^y3^!3dVj-2z6M8@$qf?eBH#zI0E#SiPbO5QUn@j*B>8P65pO*MaqhnS!a zv!?x+hxbopub$NV;Z%kCrS>0Qf0#5u1cIhv3M$m9XZY*!LEL|@uQ!4Kw{BeY^x*=n z2_U*bU=II|rtykb=879Emz#fk7>$S@8lb6oO{6gIbjb4?ZwKcFtMcOs-H^KJvxKcs zbVF6#EI=i!?!hDvl`t_*gmDR+`5(+NR%`_*jKq>4=;I+eop2 zX*~zr7*Y@GLeHb2Hc;mW^VVY5#JZ<%o>%DkFeB}lE8UW`@B4y{hFeIjQXJei!BI6I z$M?cDNs(EcQPVTZVn?T@NNQY!p4*1ELd|3uI*^OWigp6?nHBl*j%bwg1{haJZ5)96 zMMXM!3n02p>pTn4s-Qi98SX(QgP*E&b3sP3K}WH5d1Z+@H7o(X<;bGl!_vH-R?Z>f zvM0-=(e@#+Iy$o$EMMEr2E$n1m1W=-Z)<@d(DgZ<}_5~6KAnxo0 zWgOlaGD=biI8P*xvIj1|aOw#N$ra!`t}IX;N5`;HT!UFZyb%;~Q8T3*wimEyiYIf) zijwf##ODVFu@zw1Mjs}LkN+RMOoFs+SU8`iC03=aat^+`LnNnE#&%qxkG$;Y8Xxkv zZ8GQm<>_?QeDmufIDo51qYZNEO#)%(1fnk!9rN|yC<_E*D2+YUvBd2P1I;z1?C=p6 zp0L)`RyrT*8eVX~idP8bj3ml=q{Df(__rHQd<=1^#hgaH&YbSPxjUDXKR1w&dNiPBSJnRr(sr)6w6E^9eWGD}g${RUEN)q{;p z%~}Bq`ongbvB-=!&5Oq$Xg_1XQjdV2aH;`yZ>8c%C!{cWhcPh3$!@A0%#qZp#X-;% z_4cq{s#j%7Eae|-=G*4%VN0uDLt6w^Hwk-N)FS`OUmWjXLpJwjRT6`8Dr7YiNuHH7 zm*^b#l=}Ycs$D+mh~pOf-eswW;MigMr_#bEE4$$0Y)@IVqE6$pi%g3--33*XnOsS+ z6P{v#?Z6_6qQ{ax<|0#(=9QorCmlt}JPTC)khf77yVrfdg{zz0T$k1cIcebPZ3}CA9(RopesDR3%A=aRg2u2;4pEFQbOhdR`%7{wS`#s12IDC36I}(n>n)=xImG+ zrJ?Ul%D+?!c4k8;V4;fj`4sNo=~&mN^A#`<-xSip6}x;+mngnYT~bu@u-_K*=Dd*-MK z^wlPOzOER0XUwu5gJ0`cs)J#i{e3?JNxtyj6sOkkp#_~hLG{%kcRBFD6#V0t@g0Ka zeLCb69YS*{ECONQpH{uYWaW7=)WDdl-)%bEo-(&=YS}G#bc3JKq|*w>gyLH8__Pp1 zRg6hA1N2Zr1Ac%~E09%Iqm@Z%Xr5ze^~RPHAy0t=-`-i^lki@mhoTz`aoKnzukU|B zgJ{sg_mMQANH}lpU!|sO!3M_h7-y4;QOyR~|ACy#*-Mfae|`;?Ewvwq3z(kkC^OYT zSmdX|{{?-njHTezYjjw&MM+dw+j^Ip;;^KT8aDAP!+)WWW@(MwjDTlh$}?HCXENhV zW|D7N8T(+^cI5|U|9iOOSkhu{b5Q-f;K~B`gKF*k!0(obXUb_bT+E%GPq|79*%#i^ zdm@bYDu%A|x15Hzfrb~7j2N;7%ATQ50fi69(pNu}L3NyZye!ab4yZqQzhO^4f8g)^ zz<|aJ(kJQ+|{EGiUDEW_++&_?_|HZJF{{JdC zrT<4A=>J;5>3_B>p#K~4@!jC}zls+9PrQfxw)DtOW#P2-21nicLINMus_P z=1cPvZut+%TY4cfpgt>1TVz&g6k6<8U--?+4$KSmWx=gh^^<`W$0Re@dPyJH@U2Ma!D-OA))bIpOIFfvx_T zt02EyGnfXFc&gnFa7AO=@AZKW=`OW{$)$yNYGHqR1L`v1Qe5H5%kPE#2CcQUm9HDO zC-QMWM)E;0vCuT65iAHnKl93dn&ey2ho-8$tNEUkb`kV3-yiggdgi|9;fc06ZG73= zyJU;7ocWqYZA<6n;nVUr`=+Lc=em}p!}}eVS5w*~S>!E?JYLtp)RME!1DpnRSlN{q znHG3i4mHk~B2*U99}o^I=Q)f3O=J3)*}KIQ<}j3{jA2y%?;=ZukY3guv=&DwCMz>9 z8<#G&`nBUdW{1|HS>g~U9+(+__+R{g`~aGV(?r*h6>G`Lg&(Xj$YR-0O`T9py69)~ z{|KtXEzf)Ob`XTm_8$E{E-0Eu_89M)znSaUGL*zUVn$NiW~K><;r`QP&mTH#I|eD< z%~yHUGb&T%(Axmal;LBi)2#m6zd!)pL5$2GhXRsklqO9i>17L^5a=C7dQ%t)qXI8i zV$^VQ%T5lICuZ2Uf*=)C4?nE>x4!8CNKn5lX5N18xHKUohJqrPHjz18_r>Ao_kx6A z+}imvYU=tlqz%C!HOa=!)E;bWGY!7UKW48{QtUL^?ilEPGCi2Uil5VYyHIcT{;efV zj_U|wuNlO%EoWj_U>^R?p0V zEE{VJW8uk6HJOYUp+Q1q3P=&bl*ylr)mFJc)YMzU;-U!v(E-hghEwLp7%tb03$67P zWKL0}W{*Mrwx9{F(#Z!{>E_kp2byt{b-^e1x|e?OSLkht-RVkt8K%HAbYq`;xN2|k zlQmIF8v`FOVqmswnn|Bn-8#YOvjc#A55tBqo7yv6fk~F~hl+hIw8jwA^0C1`%B_ra7^#=6-mQ+~QW1~6zS^zlV#r06^ zI+l>+xhQ*5&Q^*i6QZ^unZuSI>IleWgEyW&nbVX-c_T*WzuJaipLFtxhoEtU$)^z6 zA_-%qd&sW0Arl2bWyyjaH;wtY3kJcYmNso}$5~rg_QFqsUrMM>=fF>YE=Z6B!ZLKtL^>`+7CiUjqW%XtsZbqL@-t`PJlqFjy=FsT=2_XN0@4fwZ#=*;VkqM#WWX-CK5?FubQPSDlNyYd6g=B0wdbN-=mP z=tDD@$*aN$ioNbEpz~@uWJvUqB4n(I$0PhjG}hEn;(CXiB-X&)=aONQ7*wdlHD{W> zR>C3Yow_0M>ChJ@+x>DaMH8lw+V6iEu5`i_WjG;lHQ-&r(<}Joh+TW>Qd#e(5fZb^ zW`7Bn)gALON1`}{{u`Mom!WeFppShs=xj&z=d5h?;MLxbupys`Nzl~*5}98n-K!*@ z^H;DX=FaFU@y0aCET|3HhUd=ZnqZRXJS!HqPr;)8Ok+YiYr7yiGgncQSdoO=7gUYk)v0F^e9EQ+c>jiUD)+krzsM zwT)B41V|fK2Lu=eldmreLl?Sn_}*DpPF2DkXarc8<#PZZANOmSR|;*^Y15tOcszH$ zMUca-NI<2U+@^h{+twP5q;f>t_2{?H!;~;7oQ4X_U=PJTrQW9)VL1A9Fg6NjND#wy}d^=_biBrer z<6kP3M7yX7tyD>wAjC!sTBLcd=YoyX!a_6P$fy0-UvQ6&@u4EO$AA?QW{>&Jk7LjR zWL=Kvl5$se>K-pnb(5St&x-Low}O>sB>MUmFu9>_n+pH@ z_2RKn{X{A%D8~o}v#YK`sRclcEM+I$qzy^Kz%ffgKlLcFECQ^LfYjKY!tXx7A!3N? zo3BHj@YgQk58a!e1xk66%Sspz&JXQ|@WyL480|~0rpTYEY%0W9z=I`grTWC3FCSk| zYCKmBXRea_PBw~9Fqo@z*#ah(5Hyx6jcJRh- zV`F1cu`)dzvh_W1w>sP%z%91*7%?%-vQkUD4E?OLkK0h&>Rj8F&FZxYNydaeiR84Kf zfV57~WqJ^-(Oqn}h)7YY7U>1GAYaB4#CG!#=1I~4HFR`5{E<3#xhffxDI@b=FQlvb|`s+Nd$ zDS=MGg#jrkYU=lkCjecj=4(l<>!H}4GD&?nOG8qDHhD9q0Lj}y%^)lNN@=^^vR9L> z7R68(2k2Mdndc^A153%3?-sCfBW*WR1fM}tE30xrd99AmRNnIH?kasx&R|pplEUqr zru{aP6^>4E$(Re1=W(PBD4c!N@iyM3Z0U%7-ATRDQo?4$&@;MbTMG_LZ67P~{t64K z85fO0JNucv4#kDQBfK9cnG;1vIYTx^1?9pA z{wbsO>F((%%bsMM;s3y&x^ZY$75}ov^5=5C$_St=SgqHVDzOm>SCsMi*`@Kb+}Ccz zlB!om@h+gFTBf016k#?OuGBkjG*-kg)ceQNVp37`N&{sCZS`J{@Pz3?{1~C6Tje2&PywA_S8e7Rj+=;PezpsYBVw4xfRP|k@(JP3i#;ta z{ex^Uw6w(VB+w&(B*t(8cSxPuJG-8UFzeg*osi$$=m!1>fhGxO@oD{B6Sc?uc74Qv zSmw3GXQ^qIo|R!!r}DxngEP53IUPJscJ^96eTg8#d9#$T+MKUTK#*1GzJf1z0ZArAjxr$I-{%JMHi4JIbm|FNG&8o0ZH z;^vdpFz{t-6?a*AXKQV3F@D(b4?SQauK4I^<__sXLwe!_*b_c@WQG3Psmt6m3OT=f z%ux7QK0f?7138j75J9m*5ahc|yS4QcI2ZdFeg3! z`kyTq{A^`A}BAFSzHUyxOfks{7Bm(V8X z#b3m*s2xbvhacc#mH@X;kGwAY?K`r~1I`XBZ;dAh%l|Pgh*PO5L-a)8AZnZwc^BMP zzJ%ak9f1x`jQ-bzu7eSfpd!RL2#yEfUkHKZd?f;fNK_Bt{OJg^4-{>|O<(uPUYv=w z$X6;J1Qg@hNRW5}0mzPmH+Y3?2G0JBpZ7^(Ka~T)sCt;wf?;m(dzvTX%hk05+}nVPw0mn z2oxs4vTZ!$5+~#a`aP8AC?qGyyjJvlvlCKt;q5p0fC%(VKQL8DA&Flkvyl)#nh+Q) zo;`&hAB7F5X;6{iEWGUq|5_-ow!t$&H{{SG;^Uy0kzLh41dz5){Ve9a!rrXC7J)C} zQvm^v)$v&%y>H{CEPIb3iO8wqEASQh!g(b9!Ze?KV{`c2wxV0UW2&(YbK&Qv3EnfoQP>)G)JK*sj!W0 z^qRW>ZHp)YnwZZ2AZ>M08_a-?P(pXEU?q$+XeVF|) z(m*_9i-Wo;pJCG2!=!q%4Bzx@twphLGY1PPCnBtA(I{)sbmuB?$(c>*H)jmwu%E+H zh{N11WF*rPnin4;IDMYd)yr%Mf@_k*(Li80Y_lth>C&;w**~b^dJea~(qm=d|K5oC zQ-RJVz}&_G@%L$%WHc($WMaA~!VA0R@o!VQI$qKKP(lCzE-xtFky&=1i=Ad;3r>xi z6Cd?l7giUE4Htn;?X8Mh4_I0QKdRmxs*ai9c$Sb-4pM4{xwt2|*mE9iOh4*oX>gJ} zo08Q}8QKBs&~w^%!lgjjQG1{@BPVU&XuOCxwcm1y_N$@~ehwsPBOwIf(*OXxvmX$%k1>4VU4$*_o=jI+DtBI@9JuP!bM1WN z674pS-HcBu)JE^g0awbQ}}UZ#G)V<5($3j@M}mg|9O{O5@*Gro;@~W~@&&!_wNf7tUlX%4Il5p>8@eTJxX#^qebE=fU7`R? z3j#Lb-Y39m@79!CNdFuoK1I2R<+S<}h?X)|-;xPAGOV$#KVE5!q#-@jCOp`d73su- zw8c(8$>%1b?6-a$jKc~+L=!Q19VY$@Es3(r8+lezBFEx{eQ3g4Wsn-BQY_ipJK9%XC|IjgY2=`@K?5u(_e$3xFv8 zp7E2no46!0a1kxf^W*27qtURPtArlef}UD&|N4|$G&6}yL-%fCuC*N!b8HV8El))& zKmc#pS&n$h_R|FC-eiLk7UnUmnqdZuOk=%Lw?DCN;R6r$zHZL#Z;%~tbQx~Nn;&Qb zXWF}%xR6lsXpZpr)j@pIbv}OnFZ%_iKDDMXm^AXlQsPu@(N#&2hD&F?S;bIp<<#!Q zT(>mZQ?Fx(Nq8sO`v)&}|6C!zcH@$U*)`a6K=(_%O1?jkdA$Y3B#HZ96Dn&#Xo)A; zUv4)sXga_;H-X?nEFiWL0PbIP=3B#zAKiv}a$rV1=_i5+UV0VOd`Tk|R4TJ*V8lQyrtFl-k z3Lh;EN=?|RuxK3WH^di)4X|euZKD)MfnKg|UZW`4~g*4_29 zZl=~7UcnG(=&m zqWb;WgV%fybzm7VIQ0)LZ#VdRr@=OkR5Vdp0|{vVya{*U{iOG@Hlo|Fn{RJ{U8crh z_K8n6Vm-fi5QTK~tYk3VeDZT``fQ4n{Zfvd+Z318GruP6W?DtFhilzt+6SETqwxhN zz&en>MfWdokFc!Smcns6k$kskn|=eg+-N5Q*P$T#qK|hHxwp6aqZ|PrdSfx|GWY>}GJTF(M~&HMj+XjK7wd_W`n4p8v{J^)pBgSF zl3!YtPo7^Z#%^_39)Q0^zvD&3@0VC=2_nJj+Fs@3!*y5rXfsqsd44Se^553m@d^ znn#{HgFSNTJx4oI;!z;>0kk%Y{bD^=4vtj_!^!gb^dh~r!8Zb>r-3sJ^>;YxdCmC^ zw)^G$>XVxggGRA5j40vMl3Dv`z~iaPbD=004JJTFw=Q)*PW>hPTEO9O*yzM2wPfXU zvW3HA9_O8T{`pn@w6M`PS!LUo0S=ID<=fd6HM*)*-ApoJGo^BTd3$_+uXi;KdJ#2g z@zq6s@s!f>bga>Z#0D-wwT%k^43^T;&*2ebY}RV57ig@}dgStxW*q-`rJK*+0%R&c z$*hoDjnqAdk830+tEba7Pq$Q_XQl*WDc`eG=#z16lk=`~ko?J=;nL|v8m8M%;te(n zh|CMa1O1-?4O@M?Kif?@osfC-?8mnM!c&yG=hyOq^UIGULqKSE8!eul6VJgc-|!`P z|3`M;TJ%RtdkyVrjf?eRkJ7eB>YnBIpp2&0ok`$sNq#af z5KFdW-ka#+3k*N=Ke6Vs>y-zF{ke~%sP$i_mT$n{<4s-l!a6#ga(cw_g1~cggEzVdk&R8ynv?%U@TVj&# zTB6%&+G?NnI*a>YCv)M$cX25RKv(^bnBR6)1qZ4I0uGez^^Tl1v-Z%cP@b?esHTt|qq6**8xVb z0POz1LsEKt^3Rci(*&O7zQD!7$kL?tb$mEe8Gpv%A+~)Qj(r;DQDF{ZqBIbJG<|Ru z5$^TxH&{sCWe#!T_1NO69tgU_XVfq=fcBFnFVe65FP)xG6ZEXlMoBZQ;j5VGxmwl} zXx;=!8f{d&x*fd|=3A8SgT}dc z)V1HA({$qiXk-BK!m(0o<55>(u(ll{XidP|Y{-~i(58GqnqKVPwi4X7iX1pZkzvD) z;s6^)JpIP*LSgX;nAFZ#y}uwbS_Dm= z#a!>cT75fBN>Rw=Nnt;HQWBM!@;aO%2A7#Zdo3~CVXXamk#h8PHebglA`FkEg%J)O zV*4^O*1fdzuamH{{rlExeCA)!21Bm`qmZE23_F?B*p3AQ@YV)??Q)}_*1(wLah-b3 zc#>qZ{+jpjN^U*+BzFUo+TfwR@4hO+Z8tXS*^r0(G8&x$M1t}iLIa85`5n%|%Bm;* z(qc8!$ifqRDZoNZ)B3cLG^KQ&O#i+my-|0w^2QwA>h*EVQ||Tn8IcEWiOFSsSG;w^ z<2Kc3e7X5~Z*?mIJ&cFj{xOn0Aq|hEjj?{~&~kY}`Ol~+f`2qDBLU3}qrBa>hZr5L zf)=?DkK7l@^BCHJy0Db_d-~Vs0RXtBwV!}zgRvBvaB#aoR*~wRLFy8X2=Tjy$Y_xuSM;n>GO8G;RDxmv z^Zhrb-UFKLFa8@ZrA4%A2G!cD#>Z-HY8KJjY9_U-X3>h8wTY@7s;X97s;#XEv0}w4 zYS&Eck=Wal@9+2jpXWIzCy{e0Yn zZuQ}~8nQgGyEKaHEAEGU?}z;8d0dVcnDSxNEv>OZh;_PSCC!`!pH=8*>ZghgyJM@y zrG7A(S!S%cLmnso{p9w;_Jc*OXmLn@Pg}fWXAe_ncJaIKCOKY3^0S|Y_Y&VP)ee6! z|9bz2p6^fnSE2^4U5`ups?32Z(|*aE$1>*ax8p}9dF}U`EHDS&6HBWp`zDxNeTHBe zqbkqv=l?YSJWAE#G@uWWGCOkpMyPac9r%iP@C5AffqPO(<9EOpZ%F1d>1YFqe>@7pAck7h>*N##trCnJ_t| zX}v7rxuI@b`c5P5*$6+oneIo10&}kTzdJk`a+IL^>T%cd?)@#%9gHub%_}fON}F<3 zt(j!XvETVZ9-%n*qpHU^@}`Ez6NabpM#C$AolfL5>$rc0<>l*-U%ZHSp-Gu=I+M-u@)Ror`aX z`}g+PP73mcT0`&PbyZEHUOpfA8`~-uSz`E3zS}U;u$UfGB1d5*Uu+D%XC|1|v&f2} zW~kaJG7iwsQz|j!NEV@SjMtFDs}=8rS(L*{$3=`cSbF?v9H)*`Jjxf&p8v@Zn$MUB z7o$HrqnZI%1~lX!pAKGr(g`vZP|P!DSzqX3@cSwn{VU}i>}ytke{E1@*BkMFZ&aj- z>aXpcJniwu?6-Latg;-6d!@{r1x&x(7D2Ll@TH5cQrGyUinY08KR1oUrDw%Gcg5|J?jcmfpFrK(qMD zDX!z!k|o;mV~`5(v5odn7G^0vAUdCqS@N7la*JHjQCZTP@*^Aff4+^&ur5@{qh-nd zYc*vyWOJzQ040Av!1aDW@!tU9LKL6Tj&Zu%k9-_|gG)g9bQOy4P#vmyvBPu5w!@&^ z4RRKt<^{+#Rjy_rC2~>j4dtlVkUCWRJ`~DSs}5!L%Y=yoC%23wlci6vr@hCu6!318 zJar*z#h^q+2YS#U)I^2!{2+eePQwqVTR{b=RX_E1LB0`oT`zW|Qe}`?L8GvmK@3%(^nmpmP5gA~z3?wV}qyHI|HEpP)Z8u^F22HB-%K(qU6tD<#*wFA!zCBKB zA`11qAr-7&m%$706_VNc3NL;D>9QSwU&*fmHc`Y>a86)eJ9K!K)7Qk ze@zd{bg`5FnScb3+OP(woxXMmFgoc*d`JhE3R*xHgnW%mmRi%nw8DU>1=Q36sv{K8 z!m?Y`3WFA^YCvD}1TRtF%)6B31MX3tr0Knzq(NNB2m>xl*#kTQmaWN16pRbVxQi>g zC!Ke1*y689z#m^crXwBc?%-6Di;}nq#}`Q<9gDlQyRi+zH!d^BszQhuj|t>q<7+&j zr)KfHt=2y*q^0Cb4t8_BvMC@`t=p|TW|_^u(`|>jhjh+i3i3t*%6+K^k(2^v69#q~ zrQF5IcEb6bIC+6U$&yBn0C}$DJB2u{Axr4*$)P~f*TW)Esi?UHESaNt6{_n`&7+Yu zV1JUwH^?&nctmNvm~u4!I3uO%Xff^sc>%}&Qj%J&Gd$+2*lQ&Ncc_@NcsEC&=Lcok zY600I1;IK6!Qy*@GDx-JcAef5e!Cq8fY5G_)h7MOZZ@;{{qD4@VWEsA_s~sf1fPb~TaQ z6in8-JCbJ}c4tBHmYF|sQJh@Bb<%vKIm+L{YuN~abK7;|%h2AqD02pWv!E8_U>8g# zt?nCSp*{(@aJvg+;(HvmlYj5)1IIqff-eXFr&s*MOfTJGuM~a66itDJWIaJN@2HeWr~HLURQC;Yr&tDMdY_Z?lgQ{_FN84a~op z{vr`&=-Ju>auP4;Csma;^trEmp5a|VwF@89L_EGs|D{feT&#E)CO)_n^;zVFpY5GR zLBQHIV1Dx*Gl%A-k8$_QbdF&2BH{;{$_qc^v!|}qE=ySh;#EPF?Qg_+i9xRyC`AF? zbcm!%K=*^xo$&K0UVu6cW$JSeNaq{3ueh}`^{yAA8A4nPOhT@0;W0~sfFqHADw4mjhphrqo zCxEEdL%*o$q>zYSS+MBw(}BtqSwO2SprpSnlIor(qvkB_*o~oOTt}J-P?vM97~xS8 zHg+tjH(44(pUcD>i{Sy49=5W{=Y)|8W4$ez6|tm-ubpXYGQYdQ6{q3b|vy(1RF&4RtR-uB`%D8F~y$U#WLM{auh((Ru7x$mdE^>A@v+l6|eOY!*~r z{$J~;=KvQh^JFvdAqt8XUT#%oF+(LE;2DNPzIz6KeDU3)CQfjIl?zZJ(Sf0V z_7ivG+<#Gw*$k#UK#G%kE;2j=O!5@2>yqRY4?kY3!m#ze(8{uu(C<76K*{>&9Ua?GDAAd&*now0Yzp)zkTf5n{{2oP0rdN18+ zLfcGRIt*LBxQ6!)ACKE4)%3>Vn`3)vXGXI!gFcM+yK7;~EVQ9;MV=!?mtB8M5yRFvkU+4L}E4$bZk0+9Z^FU05Ybm^y5PB@s1P#A0kM!OyxT z^{I|bQ{(&fjO5#02!;X^^XINTl1*+GQtxOYsU}BXNt|w^>p>B#$oaD z&jS9~2ekOM1?}(vJhM0J@`du3-n*t(q2?+O3`plL*(Xg-0m9K~;2{_}(-)fv;o+lW z&^fdWZOAyk5{P*2Yo{{L!=8xxcE-&d{fC9WB1L_vm}fRV9?$o;QxJ$}r0IQGw*aYI zVC4slwMaed)HNV^b3xa?U9aX50v*eMAJEdb7hwuCf&dnhU|fXsP#`s=+2 zWYEmw##fUB*g%VPXOpGl{PaOeBmxM~eW0Ij0F^2$8UKwz`k6y@x?p^Aq)T~sqDhci zBE9#QEu^1R@w7Kp{!{K6J1NYtEUj)(CrrYWTYxMz+puoLbicmN`IY^@(_)gKmG#m= zS1B(y1Y@n}(DMox84b_hece;`IzF9=r<1^M7sUL`zyCDxM^ja(mP3f=Uvx&$dH=`M zi42Y6XxnT159)#{A65vPC!A4YAyt_vNZ=^t4*BYnJil6<`bVPw5OW_8xu~wgZn+B{ zv$CBE7?0u{0I+I9X@Y7Sy)~~XMWKwH|4bN2lqxA zaBG{!f1Q)hDlLfhR2MPQ`49gmZzWZ}0W_%$SCqoc63-Mr`Oz_jFYtA~@|0DoQ*pP{ zSW>@wN>~e6Y~&S0X^7<}HEYE!jeS8p#wOdPIJ9rFOo_f5vUpp#U)F>*z^)3PGm=qj zVm+hh3eB0`(@yc#%3r(>v90NDYPYy=5UOH%TCE%LQy#?J)22Q#Bh-B$@n^}f5#SLi7x$&-4WKvK@v*t5!0m*mjKFJ&3!CdelF&jfuUO`*^{JDk?)`~2{?^-I8EH)s*C z36k#l?G2K7S;WNdc%7ZWqdZZ|WJ3_3v4XDXzAQy2?c_W4X>|vTjh}w=w=GG&-h+tN z-~caeN}R@dz5SD9@<(nd9Iu5T>qh9kl)6-2WkH4pXVBa9tjn+-F->`3S2~S{+wk zRH<~1u_`wc{nrcjinqh@Yoo->cPI@iB7h0uqzx9mgR%>rr7lDyFYx=Qm8)p32eb-Q z)fsx@qtrTD3`iisLDCb)l2+D^oxd;CJuSHG1m5R0Y6Xg?Z80oZdLIX^ez90R5$f)w zU%1TThWqPnln|4#oqgm1|E(75@}O4@=ziS6*w)2w>C#ffqA4a&{@}J~2M}W4Sq2D~k#CML%C20bpKyjbfR~`>; zUDp7`BK!~Bl9}#fFFplWtz5>3^@@Z8%(W?-e|3C)W7IGFCM<=JoGdzr+Htip)Uq)< zV+ISsQYr_FNtv&HwU>h8j#vI>hQ51$?5N)RmC<3;ApW03RPD=qUM50bzCvCkKTT}d zzD8b+xmr zE6!0*4;mCDmOgC&Rmeu9So#Fv_%!IrL5T1N;EJeW%O^buj+g4(s^Xm-son4O@P()@ zx;T6qYJ;)sfKb#BkdjlraOY3{rctX$B_#=GYhmZA2b-rNTf0!g(MA1b^DEtt>l*?S z+0*~BH~O{&8qCY@y=az@me{v;j#dbMs7}e(Gf4k=hQoHE!W~<~r||7cK8>bXxmcWn zAD^O+3D)a0=+p9Xjh*2~#(%y)e3t@eT>4{K5F9sV!MOvB*1v{qht{(FwEeax<76Bw z5BM>33aOrO6VI>mDpOm9*$$R7cC1ZTpxV18)TBFQ? zC4!3kE>C=@?=;z{o)uoMnEU}W9_7+<9ABKg^-}0Tql}fTS2>k)0#2K2)fJ9VF1S>T#hZLw30&m5y9>XPT zlLbrJn68F0;mJv7RU%q$Pmuxc*Rc#WbF5C85_8}TT3D=&_?rHHxwp=mP1Qx4SiQe& zdyd8JK<^^wZEH!&(Ab`fu|78RKh_S&5e;l!Bq-_^av^1r(!AB1EG1WaJp5`Mg-^~~ zn@0~@5w@`lP9J-;Sk9za<}oVs{uDbLsg(W2>SKQ8fi)x2PnWU*1KV+AeVOX!#oMaW z>v`98#AA#(Irfytw;Rv{4Teiuz{@@sxi3D(1X%*$#)pm zTE^(?5bteX7m?WpOmYRpp5|KSU3eFr6x7l~WpaQ1`Dp#UvFu5pU1N=pvK_+eMTC_E z!iqMVU*PvUNyq|!^gFhp5iD_mCd zvD1kd0Ul=NaiQnhL>D|Wjm1SfK(`ryc0eN>CSj*JLfCm#N>=CTK1!AyMIq?V*Gl!) zCNfo^>~qxowOKN40wN47nPqdbGL#br&W;6#&_fHiyYuO3Rj3>yn5+ZBz_00{7O^lU zL4h_9`ba*=n@%?g%Y!QOU z=jFQ>=XeVT#NB`A6}BwcSM6MuW8dy>ZLaOwvIaBKReuij<5mGZ*&3aFEpw<3=6d2lB1n$w-*z_z{;(N)e4Ew zJowvj5jX(p;k)MJ$|Bp@I}YftOgdI)_ifVN{3KC$GXbn7?v89`*(*f2CE2szBSD!Tdn5}Xa?1pgGE!SrIpB=ulz7%df{l0I9iu^@j zZfbpc^hQ{m5_+~3r*s%OE1kUjc3&d1a`2Y5ceu?J;5F0qcPgK^75wPf$hXU3NT#D_ zXyv5s%zNHXz;(`g)0KhrP}DB7N&<4^^t$mjXJnYzx2rSPPn8cvra?|Wj~SNT-v-nC z13B>}dRG41xAL5t7q7a0o;Jn?eBXPOy^y4*0xddz7Ikv&B>8nVUcQl5p;C!7)*Dl6 z@1GW{+Wt_fHTSiQBYsW3*q)j9``}?P?DqCV>+-& z4N?WqoQ2Xl=J#yJq~YyS;C|j31?@wPVAAVo?n*l(voU6 zWcK-83@B~+&Td1V%~)m`U9_xfvCYbdZ>n;827%!Vn7dt%=~L(hvNuxrV|E}s`v`JC zmuP3=*p+^FZY)m9q8 zrR8MDTHqmo2g-_L;l-`^LrP^_0t( zBn4FRpeFzyqkSPb5BF+-0Xh&{v4Og&Xr2fkx8ak zt?zp?);9Y@O*U7b&fx_@+Qxi!?E!`-g)1+pjA!ZGsbtuzxC~|*hGdp>nN2)~o6*iW zy*oLxx!i5-(x%0sP*rVD>H(R51D(Ev`eHZtu zs7!?f0WzS23$?f400fT%=i#su?{gZ|GqhoAth>>iRt5*aw*dC+5^$hO0o8OrrfT+q zB!TAmKk>~`svy7Gp{B#&UDxLQTVnpGU2|lkJpcg|aJJ8GRyvYLf1;7q?luz8_8SVf z5nshxxw#hZpY%yGqG(0qkX)^EOtV$X3zWI4G_4ST&USe) z0JoGQ{pGl$jO=`bU^~#44`bD0fD%4s#v(}@j1I@G(?lWNc%T+F@7@XzI5ieS5jcj! zKiZqjZzV@u^y^X_RN`P8HLaop+l#EZK1rCZQzrAwZbLQ2?yDc>7VPNJC z#9AA3Nu`JxDhM|6wsWO88iK3YdSMfsAfp<1glA8@S5!BD@ z(~q@26nguhrg`E*lIQW!kK@3F%sk-Rag2;-t=C;Jy6_eZB!ul2j>m*r_3bv!?+WN+<T zmU8gT#75S_KFN4+b-6gHwMv;jx}5|oDT592F6ig<41SZ$fA22ovst?TL99tu-gPj` zXL$WcwC@=6`jE7PTVU3wdC_g1L@yaILF&`{oq5z^z$c>8;qO^Wyh2pcq4`GW#)}Y!Dv8TJgqKFLtu>%sxUB~~%!KroNExNueaH%-PYALo2Fd5J@ zkFXJ!crBdt-gdeY|EZ2<`%Go_ETkDro&iei!G}b-<@L(L;t45Iiw2*1^;l=A;dK#& zlwQ$RgjF+SZ?)DNn?E4>{^H6aKGp1ABy!iyUc8HtpN6>hq{5vq(rAGa#}LIxWU!4m zs}TO;Sy>+fn#0>y9Wc!C*XZ66oagTklkL=ZJQ{M9pvA zbIrV6WFpO51Tp+vs&EffLoL$HfA>MBC+TzO5_noDDz!wR0^si>Nz5w7nW!!TgDCr| zW&(UjGxN>hx$N3~OwV*aA1bqW^49Qz1OWf4wPU$kgt zVS|nrElNNKd0RoD?-nJYM>my%xZ$pnWqohV+aU!Vkwklv3_5@???4LgE&)bw2#^F~ z{^)e!vQ=Nk6G)JOy**m_IC?5X@$d2RgRz`DTY+q!=KswkyU#vP^yWuDNL@vsSDK4%)qEgje6`_PYq_lW-~JlOCkYC($tNm&6WL0IOTu*C&MoIsHKd*MqkDGp}E1L9^x;N0S$VjWN%TNZ;pd=l3Py zQ2Bb3tH|Y!J+W8*a;3O;>a^xy>G$L?!!JJTHTf^vUM2CA=&ooW`ouzmm#yg*dWF>O zpP_}|Jl}QMIzYqZl#BwbK#PwgwicsV;|GH0`Piw6Kh~?`uwgMfL(95czFtg(J%WeU z^$qQB zpfiwQ>nwuuJv9tN9-q%dU7exa`<>f`X*A?cu+`hBq!b>$DC}0I0!EW%BEc++7$$ZA z`&NuE0l88sQa}&w|6y*2Y8T}Ozgs~T5yKI&C5cy1Bc7&zJrav&^F0$rY!Zf`@uM{G zxQ3Fy)g5b7LeK;$RAxp8C=xf+$rcd}Tn)MfUGY|n1M9JJI~&F!xzjj+2U5m%MzUIU zI&k{e-Hs;dw|(lykFsxFw=~*dfR{&Rw#IJrz>{Z$e!5eKK1TRuEdN@>#1qv=aT3sI zhTnObcU|7b!omsmpve|S0Y%7Mk%0sRMpYvrRYw&<9fh2eyfGux2A^*TNB}2pJJLgs zNGG1KHmziecyC}5-Zy4m0VF%v)5`@WEuzki;3}?8S#6Z2i88Om!VSjc+xqU7l>& z9C;r;O|OH=vV@EopL{DIj|PGl2za?8C&J2NQ`_vT&Cqe<8pEe@$3_Q@i;7-pNA=R1 zPyZ3Yi^mGmCO@RjT;G|E1NUD@1xd=Zvy1bfla4`mS~7nNWS7figKpBFK--edi2!L`-v`odN zb;R-Hq^CMM;T|sGu(% zd~ja|`u+-=qBGbq?8l(c<;R zqW98!V(d+k?FjF+v+HwFU0SW6nd^+4^iX#x60f9!zg6$iiX+X0C}x7XITrWTHhi3? z4YANTWR&(uI|;uwCuZ`n=;GGt6PeS%7;>@wm?+DMAIJ|&VL*tI+Q3T z2K2L5Lkyg}kem;E=*az3r}w^@kmmUUR|x$?_gWt$((3D&21^QV%!r3)|M%yRfOts>4BPrJ!R{UpX4i zb1=A;s8S!YlARa~vlY+z(aWjYc)F{xdVai>xQ7#H_|ek(m%Y#IB`b+1R$IXeM#o(D z_N_E{cOdRm=vcU`TGsPEfz+e~X~+WQ3x~|t(W}p1(oQg@I*Y@VX-QN~{pk%!=tFVQ zbVy@|H}}1*2&%qZ^WvLl=&t-(ugP822ZfizZw7$TB2?Xjc^5ZPE~Htem{&HeDCGFC z8GEe;d|o&e;?1}CuX}^e1@w}CdCBN{e;;QF^x>WFZ=a0(3k|`wk*X9dK8=V+QKhzz z;jSL-%M0!0KZZ8@J{j0ll1qe+|G}QVrzX)9GCYxm-&&oS9C*!#q~2Q%8IQ>oy;7&o z-0&5mEFGvUjfe6fCxQp3L)ed;a$Q1l1DjfvVOt*n-@ffv{poVfhz;rE?qPXdvSx$_ zA2Y#6R14M-I<(PIlqFZ9h%diG5sWqrQkyXCSJZ_fuIH z)^-A;H;9P6r>VzI)F_K`8_`xt&IBZ>xHZM)M5qb*dkFW10y%w|GAiJl0thnH&kaMW z#DkrQgs3^n>jN!nK}oQqbv@MJJZJ|I=f+GJDwKxB-M1b3ApYXnk@|VQ)L+fp-wSBX zD1hWQdmN4BYHc>7FU17huICQsB#n3(u=yx@7AdHeSt~PKa5%9-$%#X_HN99d3Uh!7u03CtCL`EZ7gQ_ls=$A9VzmL3jImR?b7GjgNk1 zzrOTsuYvvWy+l@bU;Y-jxWR|~yWz$K-W3tirCs}53zLJI)?7rM{mJR<^v})G_UXR# zBRfA5`BDE~U6nKW5os&fFol3sED3YZpYvWmX=_YSUcPKvJ~P%4XP5WTY~?~ba@>IL zZhZzHb5cTmB%y;2TeI=t2^{5H{wbBjo));8Pj?$SPORNWn5fTNmnKXg4|%Kf?U;rx z197|C$@7=n&k=d+jZEPxgJpgLCqYUn#tuGInGb42yaQ|PgVLmi$2FBbsDJUJZ-fYx70&+Ee+7H(DWIXLJZYeb3jl;gZ6FKxwi- zzYW(!e`Xl6<(7M%Pcm4OH6ARIQz;sS%$7n;>&qxi!+j>5J0B_Vg?Jrh58Nz{YK++2LLFn+woe2g17t0Zq zfp^VM(T%2i!Rs@fwx?YLJm7fbv)f*ITksR@-N2E+qpAM$P|rz4n8~dpuJ!&ucOs%@ ze&z`GJ+UrG|9(H~`(lEbRWm{^NDb~f$bP$MRd%S<4xksOmP}EYyShINP);j8ULmKZRt?P@_ppGjVdg4 zukvqA?$0II(;hshc_z%V9=V_NAdutxGIaK?(T%e)Kxrh;vHF@g*O)kgq>VGyv66(n!uxYmU7hy zh5O9GSeHnx%CVgz>fK`dxZI^aZ4QGVNEI}Lx}1KJ<3EY`52V+X+t~Q>_fPP2>c0)1 z1m>I+TM_$-2y}Xar*M{M$4H5^O*|RuBkY$7f>6Og*qN#5I-H4DY82h+-RYtehUWMG zNK}UxQ=l|S7)lb>A$gCUkzC7@qLX8|5tf+m_I}uZg_a4p776A}f!u<=VJlc6S;=8w z1z&oC)N^WKT(4JaI}&e&2PdWy)MY#2_43*T1{V@z=+Le%=DtQSzU@&OCuPc5=T09DNPf8{ z=4&|syFaBMO068%eV&+h`)=nC8Sn&0L-y*OnZ?`PPwwy znbHIEg_|3PeH;e4syRe_UFom&9kkoMkP+xbVKyzSYl(FZzdA@Hd8X)X`J>0y7$g|s zGH}}Y#3`i4%NmyWU0ICilT!4_;RUTWYZDc`r45__{y`7Cr-uIl-hwNY-ip!2dpLiy zv9j2@_mdg((t~5H|K%Ny7-H+I`5zJ%47~2;`EnnkG`zO$vmT_@>3Wrptt8vbz<$X$ zk>gSh8{V;@p}7ax>V8=@@zLDUXtVM$^DLOHQwZfEp7RPoaw91rgo>a&)kfkLs0Gn2 zjq7WOAXF?8SY4NiFDclV-qM!ShU*(r$i=Hq*y`BD@~?bkqlJy1>DgrAkvXv4sC2Z-w>RKnmfn{wZpLCMtjBx4|5 zi@-n!e`)Q>Uy!X|lYPH-?HzKYeo}05mt;qMjUX}vymsPi!A9LTB8TQ{%sFZ3KSya& z%=5=DI4$lH83Y%KH0aup;t}-ol&6?Mhv>*YNggm`NiK7T_(ye;H$n31r)NZZd8E|p z)DOmp>a;u?ainxhwWm*=*VL%jh9x(k?kzFA4eM-v7yWb|Ji!zVN z>`TTRW9}6-yTpIgy1~N25uTlo$2ojM%iDZq+Z0jO?T|@$$fTy-Bt<%8(oyoJGFj`9 z00N~>B?|o(NpV>paV8aa&d}9K`W3mTqb(oEanuTH7kn1s@_Bqe7gG4kJs+mBd!YvN(Pj7~fRbSd+XHH*5nQ%JI zDmLwE$Nf@ln^~x_t$O*&*`)gBgU*t2*o(i>3e|5S_*Mx7aY%HI z@~oBkf{i1JO7rQ z4v(GGOituWS^@o7!hrc?aaM1t$vkvTYEaquH?o#-9yhNso8DI`QDpg`QOJLMcDAz zv&=_*NrGrr88VfyKdt0e;DdfppVOMnll5D>!3tbsBK@xUV3Mb0pC5Ak7GAE?U=|J& zf?nfC8Mf-cE%jNy_W}>*36Me0%=F+8Stj^=I5B)yoFa*>!pa+m&S-Bb5CV%}AZQ*o zXek5qB+2IJ^E^nFb$~99K~#f@WCl}*feDZ^!*GvV$NV!2VP`yYMV#PPKn*^hW>v0q z9nk-U1GBcrp3xJ+(I1jlz|A1+D`5fP%nS#PkO`tE4#g6U!5-f*@M0E%F>~>+xCf)D zeUcGH>D9@7lWw(7hK5$owDut7qJK#L zP?$Cfj0VLJ7MP$i-(a__bsQ#4#d!lsPL7(@5Fme$tkh{y?v~%G_{wknEKrd%sAAd9 zW5)mK3IT69JMVI}^V5yEHspW8PN_bGkbMyUOB~s2w)75Ndy0sdI@z_kGsTc?EP6x9 z#7)M$lfC4=h-bLWM`F~$I2MBbRBwnP$!&T8kQNQMg;pfuZIZMcalida?@JG&2> z^_UM7jlF01>v0#27pkLja|ObtuOkkAD89BR5@+*ZtKFv@T_-UA?yq+je&1|q%sl&{ z`1dlK6z$EVv@|M*U-+`KtOMAQ-G zrv`yRTT&v#-3nrBfP)uFA-Fg=0m+txaH}E34rLV3jf}SxP1z2TP+C&%u6hMXmO_0a zITXnyd6_S|MO)l0Bf)0>NI4g&rwSaDJotIve2nF**I06&WF)xle#FHGqgjuk!#NU8 zH$%2zZHTj8Pz|l%A@=h^Gu9Yxm+_<-@lMO9t~$+9w1Q-_QAK@BF5hv4`nI*wyu9U% zO`^;XrAM571U+&VCqWE2Eoz)>QELYzazdH-m(Rj(gxp=XnGAYO5_(Mt`Z**Pd3cr3 zsua32B*Hh#zaBGA*2_Y*s-1LGMKprYdQe7M!tiK-lx}6xLrELSlc8mj=SfQrMz~O# zdhp^zsZmTOd-Vpha%g(_Yb(Y#DJds+gf;$iE5?>7fUGcN^2aKp&`FDsNqEaB7fN5v zH5Eev_@Iv>%V1p>nch466wt2T|L*dI)3FvAvEWV#z7q_$K_XHyaKoPhO}jj47f?EK zM{X`VKrnb-zvC&`r^!|HsHtf0r3+^GQ^df@d!^e-2l^aMw08ohLyu0kuEJnqfrExJ z=eqq}xvytLclS5SYu|Vv8OGmqm=?&6K5qdifLA1b=d(i@4ZM*G3P>a^>7egN#lq`o z;N?|3brzzVEN%^$A=h$0OVKgW4A1XHoiFM(6h!XwWz5vF%q;JMGp8v#(9e3KX)O)i zmrxHJpp|Ya_kulBy{sBM_VoYiuNF7YUTPiW1L4b}PA*@>ZP|Vl%URnJywc@6@A-3< z^p1zxJvxrcVFnK!=J$JvD5HPiP`~Cr*3NxY+%^e3=%i-bR@`wD4>Aw(Hf;x`Ag2EA z^R|)>GLv9{I!c4Dw_^Elv>hNRgb-3m>2-^u!!W;^4|jlbkM35M)HL)^znG*Jzl`5E ziR=`oOk7nW1F|5CPJeKe-S~5KJlIH_zT|~vish(7O(~chr5W9h#R%Q+KseJw{aAsM zCyh;zUytCc57fz_dkoOXc?2zhI18WPp?mKT&RkG-Mad<`(A>F;AzVzu2i-+g87oHn z0K`iQK*hn-fLs#jTxUsOVEQ3-B%3;MkZT~tF%)Pfmv@zVHh)TX(-=OMTGg9(%9=|t<|p94e6u#LT$KK;g8!B>2@7x}$JI?GwOqH?P98n26*dFNKH;Ohl=?c2F1Pds_)82RT&8E}SIMCvN@7(~# z(E-h*(1}$_eKh23un8v+w_@&JcmZJL7b1Z^9+$&2Z3EX5d1|geJwL(UEFPt{6uf^! z7d%zBJ@B|__wVsrX;OHm%PH#Zzp3-$wUxM4mO^T|K!4bodSc^<>)ssrM;`a+pbmlO zcGEL-=7&%!XfHWb?&6-8YqiDHL-Em@BKBXZu`f1jtODIf*B`h6d|j9x|J|VLZQMNf zpT7g=`?>H`bv`ZWxny0v{P!gX9Y?sZzmtO4eD`M5< z9KfpVAA{PxaKltEjy~u}>m$1PU|)EmSxe;wJ&tGVSxn$6&1^O43eC>Z*7F?O)qu

    s+m6&Q)95h#O2>Jh88LZ`Q)1#OkG%$%EjALo6WG--jrjopWXAjiE;U|jn zSa%_Vux|_KLbGlney~{+M)N|^i=$G@9Rcgm4NxY%MT8JQO9sseM?QrbAmM=dVzXw6 zuF##E^DptJ?3f}IuVB%4XPNTn?#2kq>7uFga<8376m3uUBRxfn>LN~~3BX3{y`!^C zz%Qe+h{>gLX-KL^(7byQ`b&sqr2p2fK ztGxO*>DHGYifFkY+eWcosX~H&6C{-0>u&k_9Z!W9`3S9nz6jua2a)tcc{JHd#DnA3 z!WRyq7_h5Ec-!Es2~A(0+1?3HN<8FKV4YABRYl4-tvjq1c>6}o0%`9F4A{xJUJwW( z9fi0FWlvvG*-pfYS-Fp0zKdPPj%mS5T|n0ZuDODr?R_|MFyQdlMmgF7!-4ca zqlT)LaD+(2*p z)?hS4T{Ne4BBGLjq6*7}U<*RFC4_g`P0e07dv)CO^mJ2Ya9sw$|Jk1^gaQt2q*;9^{J}*CGbfo0)YF$}i1T||wZ}RsHg>{3smeTUg$(-hq zRMn&#KxZr zwLq<0@RJimULP1*$Qn6hHB+m!WyC+$KC#j7l3sK8(oT)bWTqpIQfnvyH8^fsYW)*> z|1Y;b#E(WT|3&PPX=c|~q1*D#jco3HpDGhFIcFB1Sp^vjU~F^U$$Ha2Xj+^a@}wK$ z8fClm7mv;&B8j+2<$mgH!?N$RI_o+;hG%x*cjmJI-$$n~!@EXVAheTLwr#mFsKO%{ z%x(SasuG=z?YV!?F@Ie#kKMJ_IF1u4$K?bN$S`<@j8eh8j|~bd;OHOqGu7WK-?#tm zS@^rYFvhN{T_fKd&TR0JYK!?xi7Q$BB4sgbpT}yKL-n}#;V1T0cp^@f)!Nv?6i2-S ziw6!w8wYanQMB>Bf!i@&^uih$x}LUYlpjJMCGNdI0emfY*%-K%e)^=!fllv2ua0ypHN}7kH9O?!=!`N0f zT^ejX(U`@zG6Y4OI31CFj-*qau^^WcbippLMP(XY$yR?L3xrb=i9T<8> zsR6`a{3YDC#q9`v^4M~m^-8hp?gs>Ya`{mEFj{j7gbu3}cW#VZ54K3p2xa6;0`<`K z5^?EDao({61gR2b%zwO%D_T9vQ(NSj9o*(KybZu%&t@On)^0i^TX)y-9cD5^N}14) z?j-=?{R^dp<&SFv?Q&l|F(Ln?kT^1H;V=7$>V`kP&Zh7CGN51ODT^}zEp1WAuxv+0 zuPF96C_ZIFuoQdm_8qIT5Erl!0UsFFqS(j&Z7}}^SZojc?gS%2R`YY>PZ@CUz~hZV zMTOimSKaZ3!)YZ_`XCm`fASvNL!HYzRpw+u(fRptow>Xn6g^#n_SP>&C#Exiwmh`R zxEY;K+#qWSfx44wm`IAjR~j6Mr=Y$t@h&G6H_RhhpsT+joalWrN51{=P-ZsjkLCn_sWk@<(%g_h$vTJgSvcqK*PGgEBftOkWnYP29No<{~4o+bW5v zEAiJLmpek(1ZzS>TQ&HU)&0@)VIy;&Oqv1wu398Ry2Kr`%ATk|p7y6i?>rWI`k2#izjj^Jw0SC;dqtD7W&mvp@<_iHMZm=skFh)o z*x@$9=ncV3nkoW)mqDi$O)WoqnY_EZ?&B2wl5i$--RYUSvv~O@vC?%`$#XPmD^*I1 z%!uD1$oV6J6To42oHaCvA(?xtVP}a`vO+*nphIZpUY%T&%I_a_sg7oYE7#h$(NH5 zT)WrTUue~8_Y3Qj)b;+{b=mw?+1!;zB~c7k{+(46`d6RfWo-h>c0LXU=hGL95$aCb zJl(O1em|4MnfyHUvp+n4``TVD6_?0^Y$|2tiC1>0@tgZzb{NtCxqy0v12^Ab2VPct z>=vED;4~6QhUMJtFEr(PFz^_wtp$TI`$ySt$1?CU>8WbE9R~|@RX3ZB#7XNxq(7` zi$nw+TJDT?U6}-ym|dqq{+YD2;6r-O#$U==&>l|_P=>8>B`wh_?;e*bBd?N|0-{|N ze?qEOuV@?n(T$to$K1%UAbN<#F=h0c+9d;QgLWOnluDPENsJG(-DXCo07oWyo}JM7 z{9<-EnrnuYu(3B8OR^_M{6Fa%I@fezzISe zfbQBnSxSb8Ibo_;Ea@lAL?v+>d>qndKZ(QjaouOwv0TH(JK1Qh5)FQj#s}&9dUl@9 zkYQgdk?cH3q+ULmh%Sw%C)3_g{PBFEU$c6o72Gy<>NzN#CaP|eV6aeRJkFaYM>)t! zKo$2hj6=c#^aK&7(j1m3-V5|bXni@uV%$JsY2bFRE*|T>H&R^;fu&-bP=&#kKaIPQC?s5X3I4K6hpNJ{O_+97Je( zb;@pW2Z!FpFifXz##qWi_gmW656W$qQxwa%-JJ4dcJCGDkUmvSU({`aCu><}vfb3CoQq z58bgBA9+a1tQJQ7aVqW|vQ;Ij`-?ly>|o0wFSTT}%ynZcUpZy9-aI$3EEU|Xl&u2J z$ZUsKFAZTqF=)#d?r!SCZAGY19-&S3eXjQ?6DZ2F$*XzXqoT*7l>S*PJAi$}#Pj); zlvy`OSnSP*shY_zfV7dqYPQq>tUq5ewWnQ5oW@_sn;LjlRAMv(4K-h;AH;J1jpaP} zW}-)9dTRu9f6rueRY7j6hfltioVfd)f2v+8eYL;sx4$zXIo_99=SU3ca~1J!CT=M( zA+k+>mQgp(I+%1jnZT+}4p7WXK6IAd)itesL|@%k&RB@H3#^}r%GStbJl|0fT#T1n zXUM1@*6W%x?O4*N8!@fpX0r{bb%cKHNy};cl;of#Loz!g_03(c=|UEQi-iq~vzLp-HW*RD0uWPb^ z%q!`55yZyA;@6~b%pH!*&`W%saeKkBlpd>$v-xA&H?R{irmYl$trKqK!WLE%2%X~G z2OSZBXUb+tq@{Usi0|TdL;p+l$F?A9Ecbx4AZY%?N754V5Ye)(0Q)zBxQeH;4WhAG z?qQ zqcPyuhpj->Zj8$A@3d;)11ZFO507sILLw#y8=wAj57(CK9<|AF&`a_KVjv$m0JP-| zGWko;eAow^Fz6Y9B4NaO`0FFfc7NuREbCx^5_|=;!hN{Y?D&Td!!kfB#}RM#sS`Ac znl=68QPw;=1-kvHaQ37>0_ZLIkWl6y*?66CD>W zj3mBGdwOKp&l0D77Oh1R1wBvHJ&BY0`^ia(@+*)!wCLqz#DJ+{!04d|Ve<>GulnwGj9s602QIeA`rmRxgUR811M95pRRMb#Wxa$vK=M3F~em>TZ1|5WRM zf)|!RHh?PP@%#(*h8z@QMs*T?HzhbGAGTyWoe4dj;08W-uBnivn*lIq>~H2poC|0-aQ zbW_ML^oJbQM{|8-h6oa8={Q8g2L}8--yTy4H(!xYE|u(`D|eAkz63&qkAQ0mV=bH* zO^GEch9#m}oS6J)lk*!88jOGH9j7Xz!Wn_{IuPrz3>bX2KAy2rUEodg%^T{Xzu_&VWtdM%cQTamQmnWq*HD0 zfX*~$QOc}!eR zrQzwcNnrk|Y)IG<1sfUvmhs;4QR&OA*XZualz&VM$T)fdNUCv=p@CON`JSUL%Ch6! zn<@t3%xU6dA#fytJ!3pJoBqQ%)9r=Mw1b+Fqa5tz+tlt{#O_INHcfZ~P565hsAc5D zEqh{F6tyBCd+xM8e5=Nz1d%;2**%*tx&CcT?QdazW~DpacQd7-OOt3(skc;-=RG&( zGq2JnJtI7!-xhZlbaBvEvFrE1dd2E);Sh>FU;u7)sKFrMWM}-oO2Fwt-pgV$QJai< zIjrwqSBh0nJ^8`H!nEpz#jjhuv&+CPB`u7mmdjhYmdj?C^u(zQYYF|)H2fLM&h-bI zT^!$7tjPW(%T1ml6yMec1u#rmwdw9JKW;LQ`=Wu&1DOYb+@ z?$ zg4c%dZOJG^WyN}#RZ1&&dwqZGr$9~-#};eeULpp@_uDQWSb^(rL)Ht9O;H=m_XOW*HT|9*%F@50&eV6)5JfjnmnSig1ol@C`Az4uSvv_KkG{8htIzF=_vNGKglUKD9u zy)iHp3`Sx?fMV>exShVh;qlU@y2Q#%E{mYBZjxB*sri*B5{5b130R8fOM7(VSquK{*H;r zNZL7R)I{vT5CengTVLc#j9vbvZT>m2lLwjNCWG+*LNuF=H3?6TgzLm~akmhE~6TyIdS+x{rn&{Pg zeE?Zi#R^P5`poAumF7+SnGPlVWh#NI#ctTU_d8$=y{vt5>5=BwT5si2W)F1RrzDrZ7))guSUn}M2A18zn?@CkzX{Hn3eR96 zQ|;hwMc90}nH9WwHG<|}`OVAuJ1tB+YwF*bBf1RJZ$C@yjHcvtApl7FkLxe;N55i1 zcxKfm_O$aJr*^%rzB{x$ADwGIk{d_1FI=^MyY@O-oJUM_VS2PJl@AfkHM7lPU%KoA5Cy5D3Jl=tUq_VOW`dYx^6GdKiMT3Ql=NO)?&eLK(T%U0tELVBhOP@W$hm)o&8+LBUn9t(FGE zo1pos0VE?_cVA=+l^#)6xA)sr2oH_}smQ*!XF*{!#4a`x4dz*LNg`VB*>DHOcDO<@ zzK?N?kAb^E^mepL3`MU+y1JFy=+O0FhoF0^o$Ot);C@;Es#xRI1EnGRj> zAhhi4FU6uMfCS&VXY){b!Ge*GP&8j1ewP2?|bzSJ8tR?>a!=Q4E>C8N2t7H*+pY zoi6a-z9TC4!F04S$+Jz*{S0O<+GZvlYvw6sX5%{K8eF)pXz5#0YnxS?NiS|L3Oo8z z=50XJ%vnd0=a#UU@u40QMsCr{o!2d9X$1K@GC7p}=CH4&|4udaEm7*CYA>(%l**PI z{RuPiBIy@@9%!8$&Udw@MAqiSn&r_?N9!Y(A;;8fZhzI1dA91tZQO+mCV7g>Lz&8$ zIJp4RWJh~aSDE!(}3ri-M5el_MZJq0zP-td`Z5ZG+$ZFRj~@g72hq+(;R zP|_&cY1+xWVNvG2ukZWoYac?wS0}OD@1YuvsC)CYd4PO(6Uz|c6;CxA-?Gp6ijk4_ z1;b&Uo8{X#FP!k4kiX|@{R{rBwzYrzF$*QZfY8vvwkuvrxsg;zBZVI(7R~E|=J8wGO zDuNuoTCG~jUTzcik7ifAaYkfUxP1KR(S|>75z+pe=2G9M4T;jBpF#r2kWznC=mF*g0 zzmHitqNvtV!v01) z(&CQYL@xnwlKrUGsv|ErFPdY%Kl;sH?_(dZxgX!pF|!d-^-jERS-i50oL#)ZO`}cv zO)%m0WNZV2zPi`5pii+j&xkEc#i`C?%=0sKNQe!I1#RmkGi=X>)rR|?7G+M%3)0nR zeYG(UXA2wXV>opmS010+QBbq$4ECmpt%`r2_LKdJNAp$)5ssHW#`HH~K z54@MkPw~Vf-s({vLt9MQ;vTDKCuLq zd?Nkq&VFSa+V2Pd=qH?32f)%r_Kyuij#H?dyJP%-U>kf(d(@iOC^V_&&O zohYpLDXkmrJDuk{ohSZP%N%4+wWiJd^le&e7O{VXFE102q00Jb`eO>N=DVGNC`5Mg z+Q05375-OYFbAf=fe`%l~Gm zG(Q?{hhncAP&?$|%>PUc2hAqIcg#25R&Vg9Lbsx1y&rL-o4LKDINm7oyeeRGtNZ%0 zuJv8#*FVo}&{cO+b;~E1t|$`MAMwcce;eW$kWFA6*kf>HVA!@`K#V^YYLWbX^t$u+ zDh}GC^WW;?QpuOS0r4~I_17tO+>bq{}+p|)C=U37;I30h@Qlj(FIdB@t zwhyCT{2D@wy+c>22rJQVos9D$(4$@5mNyQKmx%RhpL=E{D}{&ViuLowk)v|L&S71@ zce0K!VOBf$>J6u=aZE{4#p`bhDb20wX40b=Few@IW6Za$F+UWjrCOty|DkVr%QQmQ zw&?gOGpXjwG}|aMeT8t>)$)Ea6$_u!*yns6Iv~f8J63l?KD1?EwYB1l zwq=BtdRg&+1$;7_@KRz+Z7UQpAj%T9_r0;7Y}P@C$aiZgu`pqOa;ji34@(yPrUhKn z<(-Y(`k2`u-*eFfQ@u3HmjWO9Z2|~q&qdC4z2HIcer5YDea|yZc_zASZ8Z-S7R=1y zIVwj-A)6_KwGLc+?kAxtj@~q4T0V{Ms)^qYeFo9fDbuBfBa1;U)`R36Hu|;ZVyy@D zW?zR!dx3GA!=Bx}h!edt-FYu&8~s>J^~k>R=&c{InAhQix!0Q`<;^vgvrw$=sRnsRNZg^K6qY9REKE z6C^y@1~?j=Q8_)K9^?&`9Jh}T6(Cs;*J0!^P+@~bkwc0wiw(vgI45i$<<}CARUP8$ zpS%?ai;cEPB;3rKDGBru-bY9*F{xKaaj zeor~8&QO~6?5b6sD0$9k&m=WjO^&}Mdrwkou?zJ-XN0PrQ@C$w`NkDJqFh6fYan9> z>(H;V{HB4szimpYO+VpQeD>*~40lrOUAc6nHHBzlLS~$9&Rp@h zgT3(9wjd4aw~!Fh;(4R-^F}kEf?z3TWhRwZ!#Glf%rpuR@A9r~4See3SlGV)JfP17 z7&i;wMqQ-eGP5a*l3b3@|8^}47q@%GPrK)d4{^YUa1kjBqts#@K+uwFAE*Z+*5eTD zSVL{EI5q)K%}1LA4sQ02xy9D!rM}Kj-%+d>3xXM)Az3P{_zeyWFUvQ_-bjdFe7XFa zJxUHyLPmmJUb-kl5G|qV$d}l52zJccyia9Z{SdH+Yeujkkp!y@89y0>cy|5I=aXx%GwDTI7w`z~H>hil0+YnrAgS zekt{QEc7CnqrlN6Hpf#sOELD+E$b}9@*rT1ilU2&VNhurwI6Zf1$Wb8D>ybqv!bCN zHe9LS1|o6#TP+t2%rPDM~KJ&|&+$bTkD_WJGMvfslk};tlJ59M)3T z%9?l94}2obIz*H@n!9yHg7i=MEvzKH17rh!Hn^-gU_*iqPw#H@PJ^zm#n;0ZHUS6A zCdr*G8}VG*pEuybK*zB@5%F#H*H7S1UV|;Nw@raekT^A9@BfDfkG33u4rm;o;C=^E zBZQ{t6R)^GA6Xzh_>h@rdLFS<-Lcjs9eUT8NA>q2?f0u`cpY#4x_gl-l4t~EC)`Tr zcjqgpNgr(m^~ikw5xxMZL)pM$nh3eJU)WzXSPda#{IDeJyLj_hgd*ewxH=nWge_A_ z)hdAUkkXRH|q&xWoE;(Z4O5pp&GawU-zUNntZoO!8do6B?tY z^@S|^5)%y5))KGeE1=iF7?~RNMkEvSUe%T~$qc*rGbS6N zJIRLsRq8lnWD`+$ES&!-up|I0LP9-fs3%&ozIG`8_jaG_h5dXx&h9hO*aW~Y^*R%e zuk2Pc+7AoEqR=IvujTq{^A)e_J28Qr{wWO?6i*Y{)P*PVps>PQJQW{;6$Vbo1mlB& z#$TS=;~pT|6z{`CzB5IKY-a7>_qII3ue?{2`p@O_pTC;sDxCXQ4-TB*Hzdv@X^_dF zpUFg>)kK{+Ir0~@k2D5&8AlEz4>?RG#C-iUC4!d+C(CV+40ifhlnMW-vm9)>ke;`3 zAbk$T`BB$x>EoEDv?KUrVIbLxCX$r5SEIm^(lNzwTTC2r;&Di`13`d=fdJn$b-9Aq zoF9@45z6M9)1`h+x?@7JHA_rALz*@dZ!)7dH}kt%>3!+$SnuNCx2hkb%EGz8IOqqY z#Jr%SabafNN%&rUc=;5F4ME6;=pC2}DM>+oQf#6l(b41{QZ4ah=}RolO@sl~xQeAIXm0x0vwj^^a#&#N+(qB{ z1?$|p+JCEpl~UmnipTB%YYPiKbvep8(w`QD(G_>`Pi*G=G`=}sxaICA?6SPzuW$54 zg~X2z{BsFC31!ERL0Gy&cft4KE-SWGma4j#Fecx884sneoL7D-Zl>s7CZ?XI|eG`{HMAg<~aA zQ!7|(*KHN~M}ZIcVcQM!ocjuGmGq2I1qHk}i2v4#^8a5eLjP~ASWNt9O$+IO^}~X} zZsbMQ-&gkW21VK`$K%+MjqPjfu$(ja?j1fX4CTSRk5Q#!O!Ujq)V3*kv zXV61{;XMtdP4IPt1@Z244-BGvh?bxj&p{)#l`R#q3BpUZw z37ZzrD92@P@_h(jdvP~^BbQs&%zgWz&C|EC4_d}*OZw? z^Rlk>mzK)&PU81^U)u0~jTkkOlrBLvQQ<bWFR2 zq?h=)*L&Ub*d2zWCP|hfDLRl`6w0oZ)IcI54423t4v#tidg01$owyh-evHav*p3V+YUtbL(rEhzJVSvHUl*P+}eNE$HwFKJRnrx|2Eog9hU1 zo7iCZ-1gBcwGC`q}X$YHeezJC>j7(?K1@=u#>Vp|CWJ;lon&NBW63>dp!hW*DwlE;bnjkPlz1f(f z&A4M8`4zZcCk&yi0AunWCA&#wKIT(eE0X(TN>a?;C8CaH z&XM|=!ugmtUO{~)?n&D*PiUA?4;`%dQ_qxpx@Q>sZfVp_)ZJU9Lr_hU`uyiTqp_5t z#+)aqX94yRTHewI?)Y*F6;_kl(hW)H3bX^ddQ?3GO0mLK`PeN!Fg9JandS3$R{yqPVcT-C{6vSwy3scBecrh<&E2< zcYdux*mUIZ3vk3Zq&Rxyh&b7jg8v3pPGPcTud^J-?WD+Y{}y)P;l3JEeXQbz4sEZ; zJ4Xqex8Hiv_`Kl;LJC)6rY$Y0?H zsKw#T{KS}rMvZyrkTLx`i@a+|uERfwb1vK*1E9&zd{YG9maiEIF|sU3iqr#^lP=omThHBZPsgZS z-hkww-)`*~^po#|e_tIfL@~G0ujGHd{#J?pv)C9@Znx!dD#Ten1`p^QZ@(rN7#me- z=oMQW*1|gRiocW4xNy=(jD*r-Jie@u3)9jFZ**5?1Qr7HenvT79F*&2TqfSh^e@!X zwthyvCdF4jVC8o8w510!C-IrHz(-i#5}#V=QxgUjNe0whojZuqfI6oFb{D{oi60o0 zvsS|dIye_c$bqdj@poVq_Jsoc&FqkEWs9n=-`YDncY_A927c{0B#rwC?y$FC;Y&wM z#vGqW8yEK^AtgsQzP%tzFr7pOWES$6y?fIxUa5XSD_@KpPY~zTrg&Cjk0ssyoN#6n zR48DJeJ4E*>v*l()F{0=XIy!JHn6A#vDt!ntYSRNA%V+@k5k*r4Lq%_`r22HTG=9a z={ncWC6KMOjqSAct$T@+)4`BmK+%U>vphV9U0o7NpikidNPt4G-_Zl;fR8^5qFJTo z-IGnMA6CGJ`ERr5LEoiA){~&nLzF4ZsB8VW_6VucX0m^BIwdKNcS3n57Y!d014JmQ zDexT$lo1{xk`*yP4#i2J{Kf>nZ`20^TfrqyWt2_(sY;szKBi3&FX`2b`I~8`i?0gt z9%?6jGDQ))9(jWaF^>rn>r;#{ zVb$U!;~hJ*^FIQD0qqzAsb8*BU!AuKve_7`YVxlBCGPi47^$Zx0j1cMEwDrnS^~xd6(k)(aNPI?D z9QQ392aaAOJx-|P>w?d46>a{#`s>{?nSTUxWQH5b29QvlC$t&gy~?U zkl{JQN|ym5ihD)LXkmO)rXtOa{Syi1>nO4c+g)rI;Jdk9?kC~|J%yf+5J6v|z_q00 zX1D~^v21yYyW&451k8S=F#Bjy2ATnGUw(X|7Zt+SwG0C77zjyCwiG2qPfMhl)KE9+ z8GGRFEh8qvEtt)+{kL4CB))N$$gf4NQlZop3ih^P_)11JNsOAVYOgLA`*3;L^2i`W zV95O0Scsw3dF{7z8zIgnk%zyNiN7JU@nVI32)4IEF!puV<(T~1r=u~p~O#k@$ z^>}KQPkeSsZsl$JFMnJyFz=xr60~HC5B_oY`fvZA335t>~mtaNpeX;%owN>jq`wu1r7vg#&XIUM*w%YL&Zu z{xL@=6wVufK=h)qP!nOB6V9oC`Le+S4*0ogNDfvokfRHdl=3~SS_a#{i$R5l6jD*t-@3OV2V~v z!i!-(Q1F-bVj=dQ&kNs4$=+$JKIuUELruiYbGMn&-bGS=hktDR`@!{u5&*Or*LwBr z!`6Bk2h?m2S=F%ZfSVY=#(JN(P_OkaSlwbm|I^`q1ZX=QVL~RY%>W&MU3~eI%&qOe z^a*{zc!ZQs*!r2P+7C0I7nnb+@IoQA3moDBY^=UK9Kq60*OF=YKRssWf6Q5e(W{75 zY=8CCK2|W>+TF<}czh8{h}>~6Vuw2YL#PAK-7j|AlqiF!LhmP+1eBc4;#~gX5?A`} zL)WEUo24DE(~ntN764qrB*@UkaZ4RYuIp(p zZ1BV2|26nUJ=^!zusM05p(H7wfefi89ZMzJ)WujTqT=*dP%_~Uq- z+ULQ%N8U%xVAdZ#?$yr?;(GD3fN%Lp=xz9HUhjgz>pKd>TYy0^BY`NO8H)!VxRKKMiqeq zry;{DEnj?XKitUo6y)2Aqi;*$>*4eR2=S~PN&{aNO6gLQ6b<#2WQF%!9L~>V7>^1w zQ1VrLFf+?r2bFpF2(@*SiJa>fbLVd@vu3Sk))JP_C0-awSXjuIM52u$a^_Gus~2)H zXs=_e4jrlt9gWGmnP^nQcRzYw(EbqUt9B~n5qz}*@cH(FUfksm_pX6{C^KcUYP23RY&`pG_b zK@E51yiO~=Q|)iK178;31-@Cg`o2eFI%i<-+mikyfUO2VKRAwEa}j;*z3>!0FC+c6c7yi9uL9xD*0>2VwBTfBObUs6w;h$K<5I8 zy+lmWJZw4!^DiNn?#kiV9Dg_}7{)woHDzF*;AMOJpVn%9;}pN^yxTMjIxpos^4;5| zLq{o?g5kZzo49=H?VBz~EM3D}9r5-SM46s4mfkWt-bCyo6nH}RJa%$W!717~VZyX5 z!7vVL2o+adX$ih#$97oc;DoLdm!3`Q}K=9$QXVH~@2 z$3e3g&@ae2EUsV$DB+v`uY`xT@BeM}-;P!7cnQ&f!uJfz@RAXwmreMhdK{t$P26eu6~7{Kq|FewS&0NIc#bH^RF{I~46f?y)EyX}8M;Q9_T zxh{Ca-*H1Da*K+hx=6J#gl0YtFiWUT`g=`T4P#|RqzZg&+5l)zF8ATfl4^??$Y~6E zMC9{h^@(WBM4NgsdPE{-tsykNNsCsp1he9kka|uPp}doYKz_;xe!4~%sXA-wo{$`> z)~Z=PRUIdXTdhdA5IV<%lM_zJIo3sECdo!*D%^?f^}zt0xe+uiX&^WBf~4VvA6>kq z$^5kDxFW&B@G};W`d`8)oS+RQ<5PKC1pYHeW~n#KYClpcPcV`(J`+$K5UwAQt|AV{ z{AEIa@M_j_nXJ=(dRqc?oWeVm?@glU&5y9|*nA$rC8Kl-j8;ij;d+QUx9)`39u;$# zg7|R2cy{%XM1QRvSV*JS^H_5uWl+(x-(Kig^PNUyZa3BlMc7fcqacqu7|Zn8B2o$GSrW!kxHZXTw(GETW;B zEbtF}?7PB&o27I@pTNj8(cerWvAIgKle_vZd=5haq@lpPi=jY{p+HMc%4q`=wY`GC z(A8)5e}C#_Lvgv`m0ibg;@fL@?>v+8|DF@ws4`@-~lK~{G_yR3tP0{Vyd$`!#9l4Fw!)AOc3 z`Yj(J&@}l7^fF!$8ZLvkFUyv;{K+AxiLeMtA-WgszY-%S0*xs_o>6!SLe`Gns z;ops=29w@X2D&;C58$q14FdN$^MKmgV~ox4H6R$5`YgfcAe>qQ_VxaQ|#dI!}z&421VFXuR(*@*Hxv&s4J z=qRLngxZ1F;Za_X^=T*NRI^(sC;8Zhbw7Fj?2yC_j~7zz+GOq8EPj?qVlS>zJfDVq z-RBrx-4Rp&YNOe<11_w$6+Th-`SjJ~M@XtO-k4-Mwy@cxhj?Dn4-R-$W1uBWYrYei zcmKL20$>%Z`vSbb#q)%RliBx6A?F_J;JbDLr~sb2JD{xLCSQ%RPk`U+AucUW))|*0 zX!=qi%8D4^_wt`Ww^guD#^sV2;Cv415Po$avV)cZoT)_)78~5pgE@C-2RtHpUes&^ zZ?@@0rVxM)?rFhRuiac_pacY9iVPxj>DW6Y2aziks*&GBYgh5!%L!I=a6u*Tp zK8dHpR}W#B9hgNlgyF%RC(0Sp&mX%Jf9KNhGbHyhqkXUX*xLl>+k#5abZ~MIv(C|= zG1K}^GSP-SUa%2oFprKTtLANLfp2&Ys+WgoQ;bq=Nq1hY?bQ3rRx-~UNojXBA?JmU z?eLsn1%)#ktx;`<`!{-P7Ak`lI=vPee;0Coen0A)KH5Sx@RR+t07+XoSz7S@9eG+V zgqR}9WJOF#41X6D@Kr|e{cV&xQ1aS!ZC){MAlNki)xv|fnf5?F=s-QhvF`y??E?nN z;k{MrosZGzM%tps&}n-$H_X_a0A*}-{@(56-`^(Km%F-Fn>)y)ddPm?RZ}@g2ATxV zBLL5=A;&%{SkSA$uBf{caMy4}eNjIsnt>#Pq{1R_lSlp+{LlcC)Rwd~$#N4C5!_kj z-6iOUzsFIJnTQ2{7RG=7XLN8u^XsrT5SjNcE9LEvqA7XJ4RuXPU9E@M=R4r)64e5V za>(z`)^UT)RU#MKRF*q?rz}b{{f(O?6h=&}+S`irG*ErFwO$Ht>>)KkN%GURI{|M{ zE$J}P1~$LJzi`O0n6v?K4A_TBk@V}hx74JoI=C9gT%}AUoB8&p(eW0$@!raZ4i3X4 zZU-PCPd^|>a|4fRBj!0}Kk;Bz;*>MG!ul1$G`|f4ZS3BJM~HpvMP~9Qm$&!UHW!nc zuAHb&_c?Aw&?Gy-h%H*2H6nKak0&g6z6Tj=uHY(eHc1xoFSJ8LWL%XK87r)3A2Fen zm4B|4?aV`OpWi1kSK6Oj*E9m;Z4GJ`#K5!)@nJ$7hpQ-(_l=94NNfM6GC*+G$?35e z5Qr9~(3~)f4+dd91>;aEfw03MuePzPW$eUZfP!}&+pjM`2(fAhPdyq_4$zN2_g6tc z00ln_;;kDxjqhQB09_o&0iF4=;b2D(U7xk?(y0&nlLNx4RtQ~0QO^ghr<|NRZ_+@6 zVwXZ9;UjfA7ze_8Y5YzfA)48c;26+Q0l@;x2htcYd(c5RGD?-1tEA~F%5eiQ-4`MT zyUvt`iagz3nT$K;8e;xj$@G~ANDSDT?xG{~OT#}AR>H62Cq81=5$vTlIJ19_g(_8) zWBr{-^v*84f+F~w9DGfx;g|lYP5UKrq|PV~IuBu1u24+PRBq46N=HggB^N97O|_cH zXhVAj_Pg;WXCVTh0Y-Nfu=%nPTtvS;43})hlJdY;MjVjR9Fbrz8a98JW)h7ARZb*T zz2z9PdaCqDf{nmpivtk~3O`Ve3{+OTu%Xmo2Z4%*bGZNX5G^pIxBSjH(#_=3@DBYd zH!#b%?m~8IQs|l^V|AcS(PGSg^Lps%!48=!VbPGW{?LRx6}`b}!+V&6Qh2oHI9>Ds zmVv)jaZ7dLljL|t1I=7*odOYhkoT}olsU3Y>T9OI3kEoe!=;+qrC{2{X@52#_hq0( zR-grQzMJKaYo43ichSZ~6EV`PSrx>`K_q*R&ZIJM`-<@Ebby^wAr>wmdVTOr2LDSM za2EA4_?cOF48+Sc71D;|H8^-3s6V6N)xd;uP~aKxhh*F|vy%;#F$|%!UQj@2BkbUm zv2ade@C$M<@XmplP>Z(+$X<|d**-OFo}q0~9j4R|EhH-pk$<;#h3>Uh7q}A+xPsU5 zwkNvvC-h1O(e+C72e(aJHI|>me2%Zt@tPt2a%QnaYx?eKxc?}8>fFX`_XA5qjCFWP z&CsX@0+|Plc)WAC#FQ0)C{spLJh)@%AGIl!SV4Ht*_(|_T9FQ)4@QJn+R!gruzbB1;E21SOc>9%!N z8y)Hv5kL&Z)nRZBf7r-ldMCl&$9bO=RNq`|M0CR_L6Iku@l4A)J(+gZKNfu0kemUK3OzPe}=3-`TXmfnrLA zmog#{Eh$-G==(7l*j0!ZP{>zBYpCA+hd-wt@oYd%ny0N{^kPrt0#p7fplOX z{aTI|D&NqF{DS_fl;>hM>`&;V#c!7Ifdx_FiFn-qV3^e$1^>DE_Zof@&KNk~r8CI9 z8r6rO(ck~auK}73O0dP%vw(%IFnhqlUZ2l%QE^wm}&-+AmW;;PnGhLz-IgYJiZUBuU zs!QuN8w}SM<=r+Ql1hg}f}&ptFtC8G8WqJjrYs_jHoCHnYz}H!jsz5r#3e59c=sN? z5F!5}Nzdngu~u-OZ4S%N_0OnM(9~Yki1&Q@CO=M_tGFww>ipwZvf9QN$<@lYor_jVEXzl)ItvZ!urWWX?CKi@8Y=Pl#ZMGez2ge|`sf!X-&1ckMZ_HL zQ-G*VpePCL!VK9I=#XTWIsz3>ec%rJP&)cJhu3Ot)a1zS>pzvQ3bMDGOvH6WYOAz^ zeu?DGyZ0TQXEyGHB$vN3D5=Ed>Uw2FJ`Jyaw+d!F9w_k+WA) z)}SqUfzg}KjTi$cOBVQ~8qfuQg1pgL9W_&->p-SpfZbjw_|8-nRa+jrE$+B1ORij> zE4NaEor1egCe9|4mW$jklo5*U`Pji%bdB#XPZyGF1yfL z=B%m))jw0|!E@R!N>5`~%oRCd$$k;4Q1;hO870FyUx+z4THYA=zN|F}$KwjUe7e?t z$hAyW@s2cU-e9V|f8Z}oA!o%x%gLSg9jf9SY1Ak0Z%qIEIUU>ZRYu{pzUpur`F9Y3S!16 zjuM~cM-}501rPBMQHmRFE(MLK`A_+{4THw(=H?u@S%W2|Jo)(PjuONAZ-Tmi z*#Sz@F(8@u~#ZRkJg`%$LXJQKs(tOqA;I(Khk4MiLv2 z{Ak`zr=MLNm*|P(h?SI^WLM$YVAEBFZ!UbEJ`-xoDYE9%z~4T%>L4IOT@A$Av8y0T zANDs;z1H_#Avqe!jELJziPQBJl&Q-Zr}gc>;NM{AU7G|2*kc0Rv7Z8>rNH^oi`9gl zNZG*Eg9c$j3ARHa;wS44GX8|`siDm;5!}!yxIHh_7#asU7)}`3RJ#d8K*-9&L+ob< zWBCybMAh<4j=c$oIUpeRlbrz^ycw(jxMnF_g)3aK?HL1CHFv7(J{&pY+AlC0fdL(m zz=U>j{~$!qAz40%>xL(#zAl;R(?mxmxXn4kjUG+MgBG~Ekdg^foemZ_Ra!!U+I1i?{7l^DHTjWVPvHR9feUc5NRt z^PcZurfs=aAbJhV{yr<;d9S`@RC!M><*6XmS5W22`i$WdW2wGoQ{`X$72li?y-q8zOdmc+$vsES zjRB5?5k|v2Su_jcyi6&HFMH`Yz1g%1G%>)GT=i2qJl-Wpxom9%@zjJp49hJgkaRli z0*ACCWgaX>%Hi^ar^r(&jp>Mqb3BQ<{h%;8L%21Gao^kBYQW~ zNKk3%cRucNk4$2r8b;_8bGf4IqpuoAWmz6l)=`IBrVD}&~ zI*1tBWLp;rCHlV=-0eyq!JQ-m3YU5aCW-D&anT7r{=?Ei{_c!zt4O=om#1Tdc_Vde z3GK_fA;G_H<`w@0XpH=Lp=Rxn$Hd;Fr?u%A8-gEgOqsLR_lzo9N zk5_OMlt-gI39{}>m=8F0AOgeCDHX;duW3xed7?)i=X|i$4HcZs)36h4-=ytJwT>1c zQK3@=%mMtW=gIp7Gf0Kq#q-@6!syiXuItVlg`O|K0v2$FZ1HyaV?}7_M|C}(68{H1 zEOG)gv!k+y)^*fK@IX)j`m`^o+z(xU82sReK0Va{hVAQ>2bV}th$Z3`W(&DeGvu}w z8;nB?-X@1Oky$HKK)Ze~n6Y;ejR2m+7Kx8nQ6G%X^c<(s5pyeR9Jq}}MfJz?xOJHt9<)ZqEtexOlX$BlZGHbz$}^eyK3^XB3znQi=MOX z5qM@baG;Sw*oXI#n>`UY(Ua6WA4$6*(uXtbDfEYJ&8&wZAylr@A*ErSif~w~r6Gd-w0;RgDRz%n4pYYAR+tU5TNaS$y*;K_5!3&p zD6BN;=b?~SqmRGv>K%0&9yxs>^~%6EGbYRZ{VdIexo?@O%aee*MXiF&h)Q8K_gAl) zQaw+2aTK7d{R)00R)qBN6BT+|cS1EdD58G%OLx-t+m#X~Ln|NLzBeAmVDXx~hF*0a6b?q2uC)$))1^D{HI4b2yKuYHzO-Ih#L?p(d^ zg1qmPy$@~e{@PlhY{k-av;f;YMA_{k3Xwm(c);JX>4@DTi{&+ld=E+e*DUyuw;t|+ zOoi|O7k#Bp+t+8E{Q~F?qAne8R7!Pu$Uz14xYFv_eJ->gYEjrVQs)~9a=rArpsVfM zuAu)|2;BFI?Tga?M2_GiYse;)&?ey7JSUF$Xa`oXdcCq!8E9;Inu17-86=#1gkp&Z zk%|oNY$jj*g5_pCgJQ?cJxNiCAN+950b;9-j)})L`h#7MLY=(JF7#zjPUV=YLULZ7Sj+T|A`ZGwGXFkdaW)y-Mk8 zb(7)4>^T`va&WiSNy!&2s=kab!;LwRyI;!PL2>-hRi979LnsG?Yo@$uVQ|eNF>iMs z??`B7XsRt*DUndm<~IT7?CU|XWGDK*+BKphIM6Q(6Mv@1(_?u$Lq06%Iu)Uw=={;h zZXsKUnj0@-81|FN3y;)cf{)HQozD4^08cDEN1SLV6qX}W{t-~>92ZCf^ z|1I2Zh-%-fUIeV+Iz|B7J$^)f{Eh-HY62fciC5pL13dVAHWoxGCX}0@?BJJ*Ipur4rbrw zBCpOOFQHH`!sy#mF4+7cT{oIi`yLA*@vl2@r%CIUCX@fz6n=xuS^;(=4w352Wt078 zi9+Ju8QlzylQDDWN~G^&kqm1M>bUtr@=l3JIy>(^a|B`5@2)J1W^E#C3D%CyG+A!# z7Jl89L4&qYou6IF?TRV89L_Sz)FkCSsG`%;Wv86viFC5@b<&BFi^=ID(Hs%;O~uD^ zR8h(7aWYn(p(RpmzZtfk$(ajFRL;e5zl$Y5Ald#Cb?O^~_KP7nP>uoyRW=N1lOvNP zE)~B}YM)pVnSqI}8m%lD4b20UC`DdH0T29F!GMwbJUypxVh5Vdn-!U_1&k48Jd3Zr zOml~$9s&DYwXIG=MMNzHv;xa16mED?`0ATV>>NMDJ2wB8RR*bHM#J`%i${ibPrmS? zUe)h8wFoVvLScri!|yS-LEQfW)3S8DUk-W04M2ReSyiGhsu}_P3LBzP1##{pzjJ7| zbCkXBn&<9TCn}meJDoB+W4^cdnSRfa{>`!2)bMOUVa+$Q3O*}tUJJg_cI(vE4EUL# zM4%W~AV1fQht#|^YU@^xYx}rGsu^0$hjDU~DF2#qgp+&_#;h`DGcCE#bH5@z!5)f0-kxnIDO^T=hy_^7sWN ztembt#7G?TGj|GL#49FQnyuT^U*WV$Do!Yl7gBRr{iel$j(#=%2^;@TF`>-dv@2)4 z-ihY^_bSu-W0#O3=^Pe{5(BlKxM>>!dQIaen@JB-=t&qp$>?Dk0v_lAkY$G_u&&oK zcNKq8m?nwCZKYC7rdryjfxK9M8L6G?T6v>kzKOg>5DgY=bF7=la(pk*Y;m>q5+*F)#2`;xQw&G$QMg zU!_`edWBjiUZOcB1qp7`KH)E^&GNUG?o&XC{gl+ZSqg&(Fto8r=qJ>PzdXfb5H8`& zrWSUN6}%*HSVgrbz(F;)1MRZV z<*B0k{WwrNKO%JBKZFe2Ig9FwA4wkodP8+@~~QvbrTt5oq{S@wC~z z>0qUXI)4Z9$CW2|ql{*igL>6r!vVqW)~)ktG#>P>`C$Xx0rO`v74P3d-F9v zSw&f))w#QL%qBI~s+p-46q0r>hkZ{^w_$bH4riN408^pqLNbPeuy9u$*wdu7OOw+o zEU`hS$1{DdO}!YF>U4=hoZg8ePf)edQp2r$*KVALM4X4>d7kk8CtKbcI0z#qk3=N% z20_16nrE_CemUbtf8ry`=%~R6z$t$!@AfeZ{A+%s&hQ*&Rp~tpp^&6kTFfy z3I*%rl=f6jnvJKJ-m$=Uy7RN2E@nT?uTbHu=F;0$Pm_vD_=lrXivYaaI}_e#_dHYH zieHOjkAi*TUfj_pL#NmbE$xKz8=F>6C2{`g2axk;Wc82nX(|04tw>?5M!7H#`w@Te zkJMo1px3WGy^DNdGvQc&%BLg8^4lt1Bji&8vzBHP?Ri7a=P1b8UDt5g`fyAt|9nM0 z>Qpuso|}gHJd}B{klB#L`>UGwJtOk2KC%r0|wwLza;Ma zj6Vnq)ED3WwQJKDIJnTpO(bCc^4UL?Gvixxcu(47qq^ZQ{{U6*Qn5cHuW&QDy`<1d zF|2b2$Fyv}jlVsmKSe6kse?CQm|(;du&i6V={v1SXfP#y=KW+uPy?3Kv2(&2{vg8< zgFU%)yUrM7A_+yn9@a)yP`vZ>AAL!Z6f{NOcksz_RB}|d;t+062ZX|j_8J?)=K|6Y zmyi2zF*&XTSskq_`ozo#Z`U7Jyj5?(3C)<96v*=$Uxg6@N3fqXhnkGt>jT@~1jb}Q z-613Z67`)YD#eD<)A(iE-^QA+a#bX!{%8>0?lFRA2+e-4lPD2F^pJEF)I|!ZOq5Fb zaLTv|SSyeLS(toctccY+Qt)TDOqKRw)6n4xVwapVl%OW|Gl)G$L|ZC8_o{x$+JfZJ+1bdJBCC?nK9 zvLI@YF%hqOzSf=Aq)n$J{_Hmw!T=jo!LB~>02|CNFA=3I2==Ey0rw|d*J*{J*&rrw z%P)snc@EFsPWZP213iKWO^Jwt|Le|`C-#t2di}so*`M%F$Hfl3(d&EZ^(++Uj4NDV zn{$Q-3VdE}(dyxzmK z*2{$IV{qIj75+VH7TLpU@*0FQ+!cr{ddMPyUf?8PK=YqsLKTg9p&3WSnOyXx=vPCb z){C!={c;)BqX^UdCwko3+eE^)X&-H}d6G;s#A*hlq$(jv`oF!Gd0yU%^J<19(jx!+d>Va>_?m&`Rucg^G0+W z&+6w9xgT1xa;_X+&X{(9=d-Q7m{HpRn)X0T->$R=9zWM8DbnLN*z`W`n&j3K*x&hGuWh2d@OyNg_s#+cLtlnefp0c17Hqc!bm_o|DH4pAJy8{!0Jd~)FraP194S{&nslC7+&!oo=&KO_-82|g) ze(_$gz%us9WiJQ8)}u!z&3LvNR<)A?Z+@_R4@~XDj$G@tUR&oyU-dDQ_@ZylY3(Q_lrBHlF)Br&fej$#zeZYL?Vg*ecBSF2^U|*;0YO#BKC#en~WG z7J2z98!RqxPY2aK0}tZ%ClCUeC;p#=u`>z3hO)NXw+(?mYi+_kcR<~*#m|v%vzRV% zDe;~;a(B~!Yh|*n$)V`;-{2+^8yhORjf-cx0l6Gy~o!px9SLanA9=;ciRL&e#ZyY zdt~qmI=HA-zUa5S$DGu$AqzkPkduUlzV4DZ5mt53^^*F>9&Wl(Hcazh#k*bs<4A^E zH?~FsEz})w{$1=l zQC5e2Qbdq@B6L$(%@k?Ksa1dc-l381?s{cmR;5Myr)$IPG9Mtc=yuR;c^|zsm&iVM z5#1BxIh2m@Oz3WVx=Iok`P6nWR#TkKFp)sCJA8*#>Gq@Gu0VcEX%MSs+n~;6K2=~6 zolnl^7R8qrl=g>8#TLxLgM{ugfv$HlRXrsKb59p5N@Pb^zX4$NrZP$@wKVD_s6|eEC)95ytYLd&H01kJi4p7%k|-aGXFDRZ`$NLVzt`9F-yQi``BW=GE|w zLe~}<>`S#ReR!bo=1mx6$C#{gAd~woCqY3s`!^dN1La$p(({zv-h0HtTTgnmnGxdx z(CZo=TlaqU^pyv?mv=$;-J2@BFt*@(fZVjnR@fRRmKBt_kWsb5&`(}2M9TI2opL( zPXW#SV7;L4@y-MQ!k2cw{n>GYEv%fM2O%dD+{Qw!zrB-hUAQ`b1EL8hW*;_awqAWS zKlUS_I(RoQ_{YQ5Y6n z{CMo@*XZ_{PdQe55CLM9V{WVbZ6_^+FwVUZp{OJ#_4CE6W^M`V47$7)p%)bE3<`bo z8>$*mhtIm(Mx2hjsw3wZ+y;DTj{}sh&f=Tt>@*2Dk(?n$*?<^2|0(u&d!h2OtMg=$Mx#kDvat~BlR z{Vu2zodlGlhV5oEtG&VnxOqd$!)XqML+TB{Hq3z$I&nBc-LG?-=groN1jiKreA8GBF&r( z0`dM|W=%7~4|bLQZT-r6{oh_xLQo9QJow#R6!ran`^Y#V?QIV5??}Ma zT-cWSY{8x}B5=+h9ge(Ez$Z$M0IF_;h?OEM#{CM@y0=5{m1Mrbgl4fqP1<{reDNSG zX@7GodS2Pce1G6o-u61NVt~b5&=Z?sF7g0hOya%_wtL>`7hriZaYYZHJc@|bnN^O* zy~w|y6G|W!?@gvo4qzmEy-^J9CX?_kB`ZSY zaR_Eidn{QygVF)#^XuJ2RvM>l4qC_fm>eS&zG(~{k&cNAk?-$`^}u@5Dn^i}g922l zpp$TM;vcM`FV@t?WR&!-G8p!?XBalYI1fUU&{K>7p{?a;)YB1 zWHF-!>Ot}REEc3KC@HNYtz@wEMoXsw8b@aOO<`Mhb zd^8_EpNj^;tdQzvc$|Ew$a|*3fLsV|Peq^iSUS$(yAzH=ga(bb)mP>u5d*9id-maN zc7ZLfC9r0jbvBj-pC)ub2RfivIHsqBP7|{(Y&W#5pEL7sFS`i7X}Mt}NjM|{9GQVH zL}Z)ibEVEv7VsKLj%CaGQZkgxGPa`0uN!}u?2Yea*X?Atj_+xeIZCSs8dMieKH2*F z8MoxBO;5w^26z)n7^>R&zA2_{i-<172^!{bR50kuhla$M{ zFYj8)Tw8v5T`B(^>dnpk_A^t*2MOOh#6*6Kyh6R{2G2fm3wFN#UUM~jpVi*J1K0ok zfSaNy&<(m5`hDTYQou`sWSky*5+A~YycU0I(^*On*TjETm7vrU;0GCB>zJ~V-#RQD zN-9@nZfRKYD{tS{e?L}mvG#0>tMHb;&1?JBQfF=C#*}LaltZX8rzQsWA_PT-O^HN8Y3tz4jWT)Nh( zUZi>|KD}c)QXPEZ$h_=}Ms-#KVTW}Cq8^SyS=OLu&JG$rge5iF8FColM;slC0!=If$gL(j0OIn}+Q>U!t()Y{$0X&VSGjTMofW7yT^I&s6|T zRxt+r#c>M!BVF%hJ3CvjxlT3+-d}ZN*EB=bM}RMc%@SclJ|dq`$DAaz=kdhnsrnLs z$%XhpDPz>G;xYR4V#)NrQ*KxWahq4O&Ir9<{aN&|yuHkZkPRs?z16R|iVC@`4&FvS zw1?1)tq3AMvcjB0=%5Q>*0SX7`Hx&xV!*$_;((S0(bz@_ZW=`9RA>y2E0ldDN4zei z*(qd&nOpQG1YfBkDy#u(&kiEDe5SZnT#s%Y!`%;x^iZtX^|GO4kRM+@!t8`{;X)Vz zQT*4BIMMv1**y9;5-`$&q$rT~B3F@UtbPGl9t6XZpht+!Iq|WS{-;HU-$!2AR6!S3 ztbw{6h~6@?2JT-#LOaeUYWfA*P^oRu#7>GE9*9;Op<3$ueD3`_8-?fM9WP1Wirz5* z3#Qrrsq=|2NbygtG~TtYZ-!9(=p}}Mioc(!i%RW-^z|im#hFT9lTKvd(;3BNPekah zL7(*J^vqG{FVU#~VH$nMdGc?(OrzPTh;S1~2dRLRzukIC{N9e`kSgSw>pqd>zDiGN zk)Ji3QL^rN_B$@6CSK(>8RaG!<)6F^Lk=1Q5ZXUGI{02!1L@bSxuAGZpSr@Z%9YM6CyVJ}wAgbFZ*yW*1ItW*!?f#s;-&=;KN-=b(@Jc2 z7bpEHreZX%VtZ9<=&Qm)Pch(5RB{wcy|$pR zD#*BWvpD^i(*fR1ITa4(Q6)oE6(HvB((bC*Zp=B(k;Zz<##WsZEnQ`O>!_^>)XXU= zc_?%AjbzYnrB!sW(q4E1efLyXfu2(xuDTm383Q!@}(Ozx%Crvc}u@wSSpa z+#VDO&O%b}h31k0KiaQJtAX+^&q5%14=P3rrq4VZr2keJF6!7e-e{OG_iq9gV+*@( za{(50Yo%xvzl%Wk^M8xL_sE=Y8x)lLV_svAwsbxvMMixTy_P{?zumH+9}Du%Q?%6h zK#k{ZY>;M`67BrYro<{7HL7I13ffkzJA2YDd6kfVTkSQ!3trmw0O0HnB$14r%ZY6| z5ku?SrprgZI0L>mjo;Rs7P;r|4^9Pbu=Qp}UqC3I)o9JGp?>Pi+0HD-&93N)>VM9D zd6E{l-aAA?4;}vaMYk2AtLfXt5}Dz5C?vwSAEv<}5y!mN@3GHTTF^gMx$bWNKA>yj;VUiY3IT`o?+;KbF~Gm=72RJr z{kB0vkBAhP4MrG10p^-nE1M=-FI!3m z(OagXU)LnSF?gZTv+E8^a~$jXk`zN6wl4&zAX}xeG8`KQ1O9&O`Sd~R;D|-F#MfPs zFRvmq@*i=(BjWZV;yLS>x{NL$WA%${5O}V-M6AZFu{1XM_w4)*;>P@ZS|`G*<;iG! zMXj5W0tMMI-wj`q8wgHrjTA$)&FGcgn)5D z4;Xmfb)7OQOIl)^=XLP@a%T3&Y%)v*8oQzvso(J+7=TOT_Rmw`Rj@6neK@cSRc&44 zq|ZnY;Q{?u`s>ZfW^4McQ_%b)%{g;F+hpeN4E?SwUVmP92_%s zrrbJBqajK^hL_6o>4X>pD`V@dHnV(jYmB)x;k-QQydojf3=wOiW<$#+Sle~5%iY}t z-n-NKxt9tnCL)2~f__%ME#}_We|f5D%g~IXH{`kLsfT{6fIr)DLgVj*vqrBtP~&&1{C*G;mqDGxj+2NGYjRvb!iQ`0ZFL#DxB zouEVYzY8;+Sc3WUvq?f`SiBs3oTun37>U^MHtdf3<*RSfT|5r<88m%cX!vT>_jnL^#?j;GrNRfhR9mu9m?+zPL>BXKwYqPg^wqd&&yaggrG)l$ zxgja{3zfZW`T&weIvKlcMN-6YDK;XT9AQQ%f-O>__f*dz7wVcRNV93EdtlL}`v;Xq zB~ieLj~331Tjf}a2jyAozHGnE5+vld(d|C@%xcIm;L1-kXv>6?qx2b*YGBSo^nzXy zukl51$9Y7+T`E+fbe42q@yTzWQhMo;|7-YxR-outWcxxG+!VU!vVpof4!X=*NBQ6} zw~IipoZ6@NZ>b;FCH$#Q*1vBxCXj$v>z3l-slH@8aNizqb$K`j)U_M_(FaC|2aBUE zOD&&!M-Nr4=}2H&b!h3Sg}kX90 z1~OVj7jW`~I5u@P2tU6lCM-iYCCUtxS+k|*zO|v2&t9a$bk=yE4tbwWc2gemBx9S# z;)v0owA-CaOF$%3PEkO)JJfJxZ1P;FB#=ApD^4&dYl%YDP=H8CrNXf>L`|R2-xzc4Y`yK2ycD#t6s{zhI!^Nl7S{N5x-!kV^iP zIHE)V4N^)Z39iz^%;#4^xUt?c(uQHbTqWp2GYZMZkRM&J%+Q4NsiUH2+7+LnpW^A;K21Nn>2H^pR1`V#o5sW? z^5K)(C~NzKnz&8u@k)w_;M*z(>5XBC`?{^s(A~sT4D~JrdZ;PJ&3nL6ZJqT-FwEw&-~rzb1UvuJ3Pn?#|I?C9#K> zG5(89OTzNE-iB|wl-!4dWleo+_VS`(#!@uims{4{SFxN7pNVQjR3*&PD83yuvAoeO z&X0}HNgf~BOCq8{Mu<4I>FeK$%U#7BG%}w}xCIXeKyv@$>^^&fCeo%|h41A%efQV- zi>s5Qh8*G8K|27$fR~dPdCYfx%eN&}G<2O))sQa_s5f#f!!@abB&mY6XK&%eQ{MOR zqrOaD5*;fa1DQ%D3AkJ(__B>}e}A#`Mk|Z%SAYrIVR^lb(1*WFpVTz4CNC~~r1NK7 zrJp^_B|UT!&a7ZS^$h_l*Ij1+x8eZ_emIpEtHVWU#`+>eD!qUCd}5{+%WB_go+lBj zIddy?r$2cxZ@$NP`JI>jjZ>;CHTeGGcU{8cWUDF|h14}cQwcs)c8=cQ*JH5jz7cR- zhsoIe0fu)&q>%AX5cW~xhYtlpn2U4`YieR2Fi0iHJ$Od|ptE>3wdvy*>KI3*K&~+vdie|mRf+^kAyW^Zuc4ga~ z&;+V@YSv{brS{6c631>ok4Ws3j}Ut-j2)oT&Lq2s|Bi)G_iL21XoRLpt{=>w*Mnze z4YhJBzPyI=31$ZlfcP=_2l)NM_QQvS!22u(aM7kB{qH(wGOyAaV zMf6j_@vlxps~A1BR&G^XemELLu^$%h)SVE-4=tqL$udM_6vKq((8bnau<`20E^e^6 z;55z{SlsuGDEU#An)P1(Qp$CX*Cf#J1nYQsdQBhEInjMl7xD!!^zB`k%P3;C%OiRL zjTKC4QvqS?*RZjiE<@0jy;gsk6HBp_;q}ves_CurcLjkle!;6)j{|v+ z4R?=8rj=&wuxCY4TmGsqalI`x>vddxQU(NB#7MQzvBR^WpKqUN%~21zlNF0yrS2P~ z^DM^UT9XSWQ&K{n4&y)d!FS#RwgNWE|Bt4tj;8wo`?`mz%P>sm)!jKg&Dhm7Obu7p zbWC4en{I~TYNnambYG^s>;3-T^S)gEHv}s3|>}S_o$aQ2&;c$LA=Ph(tz8uaRvxpAINH* zg--p5Af+(XxAiy5daM=Pkx?Ii9Im{bif!q+@V&LaKASowwHiy?nlMP^m@(iI1TMKy zPQkw%{Q9G_B&+OW8KcS+s_`^D`!xeBm<&^r)wL1b`vuZ17YTFieF6%#zS3x(Lcz1@ zNE0IM44gS4HQrxwQ(QLMp9c%t3&nz+c8K` z=}_Od_~8GvxpiBf>VH3&mUgD}LSfZlCqO6ri5oC8Px3m=EJY;|G~60sUywaVmJ_GL z<(^pE;GAOOGg%tLl5U%w1Sf7(-6PmIT_X`e1S>!e$z)sIFZ#YdoeS~U+O&d?uyiB{ z*V`96M#I1&o<{IET8H&0ll`%o6g+ssD1Cr87BblH`~s3t7n2MYKdB#cSRS8aeoIMf zRf!1^43fBcf+Ko7VQeZum4rvAnXkm9Ka&5s*$ORbW_JRPWC;tGU=Z zzM14swa8ZHTUKozVnk)ba1y1??7vG7PDco-zbVZal};Pxopk4^qxymQ_9B#xiVm4+;kAxG8-G0EZ4Dt3n6i-XDi&_X)JSorN4j z%S_-eTcA}&l;;@GZpdkHmL-4|BL9@6goGQM%Ki-d`jc9b>IJiG3*nGuVu~xyAywrHsTkVK=`MN7+G?jg6V(SgmTr|mW+-l`@>kT3Eo_pf3`m0SYEkArnEk0P65@Lu1 zUJMag3>6WRO$eEsTMRWcMkUXBw4?NY*ZB_EUXUo9Uxk3KZ1P`InZ*o>$Zn~Th$ep# zqenLE^WBx^+Gyur|AaGdDw&ub6c#j;)zFNSKx}-O5I9>Y4UOTC>3u2#LxG-*;JUhN%*!nIgES zD8q1IyEoA1HvQ1*g1=#1SM;f_$g{4@r=Y;1qt&j7!Ip{H;|*iLsKw8ss1^!R0ge2>^s7SzP-0HP9t;jmfiad@nljE;quQx3_Ra9;SC3YhYQk1;yrAWU&o1~onWZ6`9-A>+!En$2c zX_~7q-N`Y##Wf4!=v~KkJ1hDR{+s2+A)|%Gv+?iSR???urm70C!yE!yOmI;&yCOzD z%&O+hPKdJQ{YZOW(!I0vU-!~$F@;%40#K%AOkR}G%548q+DJr8$kAIHW~TaXT+;v! z;hiAU`WTosPyx~Qut^+35Z|yWrt!S!$`%4zh^bCyjWtrkHiH zPcaClkx`dHtV2OJerlO3p}|iDT%;#oa5q3v$uxLt{S>LVyq@#xV~cx3b;q&(_4r^x zz@Jeo0K(1+(&^{KEVJ* zsSK-Z4S_dqJk{6~ec$OFjmCrXu-*YO@3*2 zeLIb>nzZ@{S|rQxW*G7#PO+1TZg(Xk!ED7>iKLW7rHuYc=~rfoR}ru~P3hwi4&i*e z`fc*M)MNRhlUHn$aZxZU@aV6Cmpv@E4emS_30-0=*~KbaoO*AZ*)3E6H6n1;zmswK&(`| z!I&+qLc1L7R`ABnT#Y+J$K=nCNMEoD(rIC0tO713`az79iqkv8r=f)Jy~xE99UpCv z?UZPWlJh*hT$a{rN0VpH%pk;FxXi@{-zic`F~3ZLE_4k*1!>L}sexABv z>h2Mq>Jy}lLlTumqPO#FN-`(1i~lC(hz1wP`c~p=`{};K_0^$2^q>XIZz(OVg>HmB z6fobSR+#?FL%RQOL7;ZhWw+`@nVoudrRWn~Qfs1SL_G#Q`(Coj!esgkw2$ z@-@D?OU&S9iSC9`T&c;;)awij!>SG^o+b6@oFQ>O(*&&M{(O`A&dQ0$a=Pb{Um+1M z&LIzs=raBlW^)4Mg$hAdvZXF$t)#WZt!oEym)@&jH zZ~h2Z>wQ&Z|D30XRQ}WKV z1KHmCnxsGdWO>A%($VE9HC;RT4-~L#DYI%R@&g70`aASl70l9)Wz-l_)8>@jpY>}@ zDrJq2DotA7omRF#*gNcQ7H{N@lRmvmzIO7yf+_6A%qusPo$8zx^Mr1v@!qu>PEBl^ z(l>C0YrlV>-_uxEk-{AnS;Y&~*R{&jiK2JWz zn|zJ;RZ3M~Nxomt=Oy3(9&UO3q%TU}_(hI|qL`pgNz_E)j_W&Bwt3Czj%S89M% z2$&WlR!ojK-r1w?&&7Mi6Fl%?m zKc8xa~Pc#8neojYBz;*S3oDZ5EXQgsYB?x)EB6^G+dsr20cOs z{&SHTETa#n!j?G+DXU#CT6wW()~kx!huhNAHS3!^ua>7DQKd_xEA{_Jf|2se8N zH#zUUy4mzWhJ>7;(wWPp*P1)tyr5dQvFm$F-i2$=|Kj5bEBAegz{k_p;}${ZpxgZJWigN*Y6;!m{QKl4h%EJ5K5soz9QVAOB^crW+TS z%mtC++aZC;Vx?L$lSZTRr5JHlO{zX5T3jl);Mmt0J=$ut&@UF9P#>SMx0ll*o- zeo72wh&tCQh5a=m@>7F(vteNt-nz%DK-#2f;&FILktYiLMv>n;T*zmQGU1g(Z>Aqs z74r9S!r@eI4BAm{RerYU%-Hyh>3y2Mj82W%XRgD8uSUvW-LwP7RUbv9E?s37h~Jqn z=tu*fRHbdIh^m0M>JAQU0u`Q8^+Rv&A!H4`wjUDFK8%QuM#P^LHPzczF=}Q;2Yh0I z>So>hEByJ}Z%^Qsygf~9L&Ql;)?2FYFIPZLqUtLWQo%pY_~sj5$^x0Z=rOhaemv(r z2lsQn^RL%64H~bDotP~JTa~3GyPwyD_aBKbu9xkO^U$E?pH4QME|WztD+s>y2gr<{ z?C8oXHe$U1k)~C%xKomsMx#NdiKxJ; zu{|{Jmf1KI8nqU7ijB91J`X?$)(y;ExLz?rffY4&Nh^sJ_D=Mr?~aZ_kjY6UJ6BRg=qF*B?mA&fHMFq2XK7AI)kNdgz&LfnrnJvzP*)wWu*V8-iV&@1xLJuQ$ZqNdtmNHz`!8Yh!2i5>iKgRH9xk2-Bak{V<9aKbSM&b znsMEmRo_X&Khr~ZQK8uQlz7-Qzlf?gv4l>Lz+7vyA z1c8cN6j`ZY=Mm`HT)b6W424~&um}5Egmk{AX3$3v%iA^rVqXTT4aS7Uw}f8WRtEp3 z*mcc8QH$ZW{3tEZM3p71mb{1}8f;WI5%&Z$Ny36vnlh2MI&Jl{O3-rphkw0(w{+D| zDb?Dnarc7Yn>LEVN5@^dT&gvMd%@Yyx8AZOmm&txgy9tm#YHmNc@m@t*<}*xRbcOU zZDENUjxKkCGPe=Cd5nh;i#U7N>3CJ*d?ItQ@$&YmZ17q`rpND}!hIhI-?V8HZ5-{i z`t1;e%`9dMNe-UJwWRv;Ab#sm{ufuIiLjU~+W5a7L&ITvZ7rnmp*K4#7AX30}pJ?c;2-yW6TZ9FroqSgo=TwHZK! zjX&@j8w(m32pSvn8tVz`B=O~B31(z+zjW?!_`RaXdaS6hoH}?E&9Et(05zed*i`-X zb3@GJB@q;bmcFB(1X6N_5qWU*?yktpEy7ej#sIom_S>D=_3~&=)a#%{=jX5K8=K>k zD2hZPl$R2pH+6KJU^h-&-(9t;CTuK@6X4O2?K?dYc zDtvi*R#Fw?AIjMcKXE`laT(iJ8QNEv*w?(bufgDKrVp@hATD-msj?`m@+&JkFmfN7 zJ`ejkfsiU6f9l|P-0#@}e4g&CX=TvfpEB;MMO0}+_vjlA98ZjFCCP&aUDFG7DSz?@ zZ91{KxK6garHVFs14QoIbv|eeh-FVXxf(bM)7||;yY3|(C0P1LlMS!~ej7uJ8|^w zWVKO|`=z$)_SdNUZ8q(RQK)#;mjQo{uhC8{6q5lz@RkNHEceS6|I?uD3;@vWT? zCnP4Uo^)cCD{TT@tYJuCf~HU70V>YV z&Vg5g{^HP#x3(G&_+W}i6W$OIGCV&Z18^k0h79H>>JB4Qd5DI_uZ8(4FnodXpup`+ z5tN-*$nd$RAXrE*h`C1O#o%WZ+zZ$#g<1{~~8?l^n)ivTgc=Nt&3? z<)gXP$?sRz`B1uyF}3^0bSK&&L3#QI`OU?>vE=SZ(Qg#4NR8@}$}x%!`vFr|5xbl{ zEomRFPIJ5y-cEW?%P$WO>ijXBdJFsF&pchY`Zq#&ST_m}6dLs`>Q9VXjUmOx{et1A zW0ZYqZ_5}}K1HXz5{&$8?sxc}%Y+=aphC{RbyinZxQaGSFL8KPF6ruI=9?R8!iXyi z3@A@@AniwP;n$P0ukruWetx^M9BK02G`3NS#vxE}>dC4Up=G*>N&@DT=4v}`6k6K< z*!p+ct)?0A$!j_%UZOdxX?1D0Q_IM$YS3Lk>iVO`m0klPv-`8UExcHOHW+tPFYYvY z0cvE86pWj~4V(Ri>-I>IcqgnB5XqGL2K(1kORuot4f-MsCu1p3HbN}g@DF#eJFO14 zLMj!4MML!mtZ~~||2`CWJ-%B?Lh^x99eAuqx1v}e#qN!F;9^#HTHYOH;J>nG-+?Ow_1Ote zeep`RR-KKG?csL22@%UCs=u!YMm(n9TncOQ{7Q=Z&Dg6u$!#PoOM+*67LJwePp;_v zrjb5)jwHFx61BjMvzi+%xtXKCl|iACMd4DR{7obXaQl2zIa1W0v@v%IZ;f+atnt!B zkRZcjDVI@sec9zqBVcKc+hp=nhwCI}Y0o5JieJA!OYnMX1(H&=(Lw?G_uT7OzDba4 zS2CY^!P;@bwv!bpGuFq`Gn>q6O}p1xfSE#W8z67ya!RsWTx>^U4r2A7pA6`rW%m-0 zqrc{(4LZe^}TEz&!;Lh&G!2jXwq)@&G7|^objUR#;^- z)|MMn+kV-Y)hUZ*%+*=)Nf_gagl$?~VYBTp#Cc_QON|g^Z(@N@`e0#6723BiiuRiH-6u)|%>*Qe z1tprYXvEaM<`gSwO#7FdrY*Y+6^a$>f5ov{)-{)VRfFGq$?Q7P?4nBavnb1ZF-czR z)GY`W5FU_TMPt1mPEqd9U}Vr*O3_=Rxi!n=!fq*2q?KLx7CO^U&FI?Cg1hmf8qHEB zM8r9H=%vG8{FKp~nc^30I$wsV%Ibb0wE%8C4xaZ8mA}YphUP0rG=67VZY^A*AlT9z z(Sek+rtCr!Wt|!eX*g2Lmv^M>th9{T{oJ1&=8G@IM=(0PCH~f?6}>26gIO0qUm~|W z)acHw)+SAy*7xs5TQiKQWPW;a5n~_v`-hfeEa7f%u!->Atjl&GPQgc6*5XE8C5CTM zb}!%7($F&Uq<_VY+m?T_`C7a|{;z3a#*K*UJ$4#FJqh~?|38hJ-m6C-)Hra2v1z;q zT=@6xgY-_rWIS_d)z>>9q42O}wTW`L$Z4WI9$2K?KEwraHox~;nfu^gRs5imahxP} zTqtp0IP_VoqO)`cqHD)BG~3M&LS*9dj)_EVR~q{37fOPsA-a3P7F?{CJ4FlAC@~KoXAgCU4$B6q;R&EW zr-O_Askr`PaqsNdfjwZZ<8XjFHHf=^+(V82)O-)^R+-H^&Ju8_OJ53g^A#JZrB~N)3fqac znCl%9yvQCAodL5z07h0V2y|Xf3kk6V&2S7$b;o>CXr)6-h_E6kX(<$OvE`7PALliA+kYGw%PbZ5a*-y4aOfvp-)hV@{V+l28*Kp^KsRYnu9|=XZ87;ExdT%X z4iquf@~Nh}LvUQE@|e(}2C#BT2Hzmk3D$}T*ATTMUZq{W+!JD`ryCibKT8gdp1Yy9 zhu>~hC4XfNqr?4fW8hI z_&w1f9`A|Bcfy69}A$3<0H1G_5B0{Vj$ z0z<`upjg8A|1i7(L7UL6af2nJB9L3u*6fmnNx(C#-|bO6MB_x0@gLoUlkrd7Qu;&{ z*R%6oHK%S%414&fCPi{@3Z;FF-gH*KTbZ&u0u<3rhPlF3n&;AFzmvt!d&SR}O{N9f zPGgm&zUdO2B9`&&agC-D80RyX%KD=mxHm*AKYL{s#+B}V`-r)lDU(^A$8f9y60$^V zBk~r&UUG8HPGX67rvKZnwH8eRk_Tk?{L)-UoMeB=i~~aYDQt(M1n1s({CQg?pkj-f z7A3T>fhWyX{5F+G+dN+1aC5dv{iA!VY_m-1`?0i|?;|iB1bb;YVJ1d5?$39XNZE8F z9dAYq-s#ePMg#jfeEI!~jyuBLqhhxl!7vZoO#-_VPH-1?%D^L^)7YNy*dI~Arbz`4 z(WMaO*(#g8zpfYS;vdKj+S1|%!-{bVO63OcX15M5bv4CDzLN55Sv{g${v3w(If@;A zhMct4q=A;pS=*W&7JC(GVVSl$i|bmj;BZ(ku(f~(+8}D5rD%>7PtOQ9iq-?}bA8`> ziM?9;QB?J$Xt_K~oeE=%0pFO|=7`vi7EixAw9nZ4@iyQ+t=JeWcbo3CsN`lUS$x;E z`hvySC!JMfG>K|+SOX{3wvX+%a_|PZl20U8CKE0bueYUr_DgZfpHT7 zpySY2UTn#MksPAkDLKTY)q|JK7k@D4<4bPQ!Tu{XsxeOxt+SlYgZsTRnvd-HrhAW4 z0yA*?l_&RsYEz#p_@VQiN2v!scvIr|msTfI%ja)yx9Gz~h=G;xV^L54Y2AAZTZCoc z(6YruxN8WtyFTSP)@T@+@j{%0lf=`4D<>qZ8A^x za9-tTE@hS~xsLr!l_;KRE6)D=s5)?OdWYI9*Dn^3IVrHEFLiOK5$Y1Ba8ixr7n@D# zlXu1RtaJ+=j3&UC&z2_fFr#4t4FSQR!BIwTPo5eSa%2W%!ET`RtQ+kiWDvbS#^*I8 zmQGq?4LAROqvc6==yg(Sj008DJkyVVz+_1ua}^(O9bOm54ZzQRU{|Q7LFNQ=1_Y^bb~U)S2>OPCxnveFJfD@KA(y3PkIWyjBPY-rNuKyq(W`#XbmBVmrK^ z3!FS9-v76}pg^9goOgj&92yz|2tHvt=9D4k)bDRxG62KnvVFqqe8wC89{?pc!1cYG z;f-A&jy;}guIz~$#)bmYsfGM$;q!v+odhHk&=8Z+LS4}jM0o3JNZ__mC~E`!>Q$ad zBQhL|4#LD61PDGCkRcYz>UH0@4c%0!ia2wp5~W|PG1_~cp`7xD+fvigLX|D)kefz_ z7=Ishp(`n5g=iI@kj#Mj>~)3xhODSCpmYsiwOR&tABZ{DS>tc;Ono$1I$5+#5-UEH z3U~pBkNze-EzD$b+HaB1;EE3f{SlJ;lY`(x+Tv~62>!WpGN4nXPPD^7+mnoMO)mII z$4<$M@SQ@$QA9U!=m}}fs%itt)S}Z2>g4O=@(?|gX7PAqlCewqGaSLQbD`+-Z(Hbf zktR*=C8Fk!szh$HoLWw8lq!c_TaHHYZ1qtbW~p7F0i|)QDpjkr(^a5-dWK@V7Dh4_ z#p+dB?V5EKIr3;yeqm4SA_oIL0RRf$8X20hmfzJbbflp0Q)$bz#@R6zigrwV18geh z)T+d?S{%5J@ljH8TW8I>L$>5YJBGV&)?lCe>p5m|>P1s%0ENoxMLakHitg zc79@!69Lk(Yc*$-X{IVM3g1BgWDG_%qR$%g}`KWdN=i}aZIqp-^bXc`ze72lV?+;y`A=0nY zx0_Z$pZ^$&y7R~J#M&MVOh>p}$WS>UsqPQ_z5|Zhp_y@c6a_{$wP1ZS{G!LzJ<*HXi34`F$-vO{Cf1LHDL43b4o{Bp9nrBpu%ei9 z@Ohy!Vs4;|?1VVRqn{Fyw~@^6;}W$8JR1q%z}p z*|01a-62OIf|zW7*(rJcTAM?BUv_1h@LtLBYNnt9eCX*zH~2LPIEd4()Fc3CQv+S>KxNVfey`)UitFonmX#kAb{@!D z+Y^HOcZT1=yT6&$H7ZvV?HAjww;3}A6O>@nEnLGtI1fkGH9P~@qu40G z1Ax1jutn`eWgSV&GBUM33qgKU;^3C*YlHIw_-sjz|hq-2zS)~LHmSzkz1XQ_b6 zB;_aaI4_Q0_w&UA8Y9zw>LMw3gnG`24V_||s%d>#(-tpaOOyGY<9a6?}VU%zVocb6O4zg38IAuJ%$ zA}vl&w?U%u3B&dmq#$#=fizKE9SLgFL1oc_pn zZN6dHQOP-GgW)~aMF5_MGft6E)KYuuOk>zgUB+CRwBvHhEKwf%r)^3LzI{txF9q9! z=%FQIO~(bclJ(gI; z}IDxQ{KcepBx8)5*cLsG_!m(D4aJZMGQdw?4F7yIpqJ`GYdxC=oNEC@#^%x*{y>o&h2OC&>B98`H%@A3snjM5} zSnG2=NguEGABXDQR(Bzp+k9=$XEs$yL~(1`0=EHeKDYTM<7s4hGKdg0hz3S{I~vel z4Q2Hs0LKG(Ns$pjYw!{A!_D9c3bZGr=(&KODYlCoeSP;E zbO9?~G*)4NYb%(6C_(l4Po=+c14eQrec5+xluN8c*G!QZ(CxJ2P`su_?H0~E4+_pB)=qscF_yg$V2%uhOjo!(-|vRUtw^)w~V4b{a%gc zHbJJcs{cNa$cZ*g@=F1MCB--4U&!K?*9w?Obe$lK_WUkRUKA(M z9Pfld5jA2eOI1xQy%I!g!>dj7Z-}IMpV^P?pBk3xGma7IG@_%LXB-nafJq0illWhO zI=rE$3$MK$uW>5>=4|8YZz{L1N4}S$|4T!-i!r~aQSV0p(S;3Snz6>1r^@r-eoN1N zt1rXAER?hpOC(yzctzequZW19-eyiWiJD&_i6BVEJS*P9I7u=a(H!KOOVUY5*GWi8 z&dW}2Bi&Hwlqomqg+)G;CK|pKZy|~=^jbq zm@HJA+)x{W$=|xMamUk{m_?<`65j$y$0y7}Z=aBaK>i{7Alu$KDc z6#Aczn)=fD9-w+WA2+3eKT4|jssmO1$X{&b{@m`brkvC2wLrjf$Nufn9;TkP5UvD> zdYss2Bvw~wSnJ?hWE&sU$xz>ts9iF+o<3d|^rB;%<2gJwy7otXD4Y18n{C^fK>la zANPTdFf#`sSchyPa$%mGTS!Z{(a=>HWsy|b{Y!Gg-$XO>EfIL-IDd_bP}p}0KyYuv z$_CR#Z0PoH%-jOPvJkn`LO{~?J{4i8dEW0{?wZ6@-l}Owr8i%U2V4L?!IzM4C0MkNLds3N9)pk2d{)6HB(c|mA+W_+ce9L& z1wJ9q(}^K~#T5q-%Yc>*rPGj`qCE+?Np;AFGZ^H8-fdox9ah*-q+qKOqX8qyK_Lan zw2W5AjcxSnL2J8&l8>{-&ovNSYu3nMntA`V&Swt*j|JbiJb4+NO-MKZ-@P3e2nCfA zp}3RWg^7rQ*jWk1aE{7ICgf=a$_q7E28$#Vgp0+u`u zf9V@DB#oU48Bt1NGkW;Z9VoHR_0^G)&dX}@!K z7$OXFjq$z+%neMqp@6+63D3nNkfE~(C#mYIz0&zZ=KAaf>8!! z16NK~B$XvQ;gi(sc=tY@8faiU3B1pxu0Z<2<4i))*;Q za$}7x)5Nj{8nR`zU|6>;>zUx`Q4r?2IjH~a^frw%`yk#{e;sX1*SqtbShXNcomJlW zSex!v`!2YpxnaZHa(44iW=W36gpa4>@#>>R>FKQ9;(pZ8Up{}}6e1w#5a-7_IdiN( z9y0v{{rdDDQk#h)$#Bb9h(0J<+a6sMNtfzGR$~0|wLsu>hSIC9(_gt5Np zOo86z{`Te8%F*Up^>;B={X48@6FkuhNUxBn8El1@K_lmu-{bh@I+sK~DV|td#(#9X z|B_}?UX0Jox;W~gG?}x{Dq{XU+hZ%6yOcZ<^w}1VqU|4S^M}hpQn~CFQJ?CbADjiY zk)nF45((o!jK-V(SjZQm56>`$F*#X %0PjXTUA3Yd9iNG^r|NK8DMH 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%0AkV`(LKabqEf!v!Dl*|4s5WZ&}p>G3m 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 z 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

    ?CwBmEn$= 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

    P=vH{RyFSe>*SvY^O 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 literal 0 HcmV?d00001 diff --git a/html/download.html b/html/download.html new file mode 100644 index 000000000..132ad18d5 --- /dev/null +++ b/html/download.html @@ -0,0 +1,63 @@ + + + + + + + The CImg Library - C++ Template Image Processing Toolkit - Download + + + + + + + + + +

    + + + + +

    Download

    + +

    + You have different ways to get the Library: +

    + + + + + + +
    + Standard Package
    + The Library is mainly provided as + + .zip package + which is platform-independent. + It contains all the required files, as well as various examples (which must be compiled), + illustrating the use of the library functions and classes.
    +
    + Sources Repository
    + You may be also more adventurous and try the current development version with git. + This ensures you will get the latest code available, and will ease the + updates as well. To do this, just + type the command : + + in your favorite console. Nevertheless, you have to know that some code in the source repository + is under development and may be experimental, so always test the latest stable archive before complaining ! +
    + +
    + + + diff --git a/html/favicon.ico b/html/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f6752b6e6d727e5036eb20f308cd95cec056e0fe GIT binary patch literal 1406 zcmb`{F>l*u5XSK%bs{AyQtc$|+-~uFlUMHs@(sKl`VG8f@Z>o_00XyWNQVwx{0TgD z@y+(+$wL4mKFCy}WB9dRJmVfV2 zRr2`wC=U-0a({m>pFVz+h>)wRE4jS9l-t`|xx2fQ%#_p9Q#m_3lk@X)ad$a7I+BZv z3pqJCk;B77F*7+hIFRGxV>x?Q`u1(<2f5MulKS_}KYH`|v%dfHFO@PCaVn@(F`>we z%*d=|rQ+mH?&MDHT_!{ziY3(!zkB zBFA7D41-}X42Hol7zV>&7z~49FbsylFc=2IU>FR8VK5BFIU5ecVY8#uMJS`33Mwgb zERMyoI2Om^Sh(aAITpv_SR9Ara2$@qaX1dg;W!+FV{i=4xjPQW;25%6aL?8Mp?CA?cUc5=YW6ab$CF4H8E-2lpd6hs2Ut5=&x9EPQP#a(X5fzQ+_f zmTVU8Nn*)%J!Xq>O`IabP#6kBVJHlRp)eGN#84OtLt-clg`qGMhQd%73PWKi427XE z6o#UI(!c0m^mmTotQ|+q$8P(${w9AYGp5X+GJDF*>Gk!sGM~zPD)Xt#t}?^QEbG(L zlm7c(&9mI*Rix%WVb=LX@oZ6h`TFP=efRCNbd!$5pyM?3En5%UW#9E{-R%}E7pw6_ zdzWe4u)P}=yKP&ttbXQ4NTl!kiDNF;!%N0ohW-7a#oNXBitW?5|GND^$!0aL zhuyfhp0_W@SM7MKH4grN+8GX>pXML5Zg11poerDLLb~;|dGWkoztH6{ Vj;r-F``M-YdVbH_Tbm#B_#g3rp>+TN literal 0 HcmV?d00001 diff --git a/html/favicon.png b/html/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b69bb86911af73a4f590d9535718c0ed9cdf6f9c GIT binary patch literal 520 zcmV+j0{8uiP)dj6n=RgBk+CMgl1;^ab)Ff{jmN6?_PhDOMB$Q@F(xLMjbJ6dBPj zk&tVqxM|!X5*>#v_Ev{;&*A$yU+#Ln!vDNqKU;(l0HBmoN*RV>7zSgUeLXMuzE3HA ze_v4grK)PWtSAaXC=A0&rIO1i5klVHe#^2npU(lH-|tJ3L`1ts<+wCmNk|YTLFvb{TLP)h*Jsb`I@RCkDj1^4 z-wvm$>hX9il}g28k zGp=5*$8l_$W|AbQ)9G=?aU9omqbRz&1OSpGA%s#Hv)Rn|eL{%u`}_TVz4oTlX&8o- z(%e&82_f6b$Ids0000< KMNUMnLSTa9+UElR literal 0 HcmV?d00001 diff --git a/html/footer.html b/html/footer.html new file mode 100644 index 000000000..3b40df1f2 --- /dev/null +++ b/html/footer.html @@ -0,0 +1,27 @@ + + + + + + The CImg Library - C++ Template Image Processing Toolkit + + +
    +

    + Copyrights (C) From october 2004, David Tschumperlé - GREYC UMR CNRS 6072, Image team.
    + Copyrights (C) January->September 2004, David Tschumperlé.
    + Copyrights (C) 2000->2003, David Tschumperlé - INRIA Sophia-Antipolis. Odyssée group.
    +

    +
    + + + + +
    + + + diff --git a/html/footer_doxygen.html b/html/footer_doxygen.html new file mode 100644 index 000000000..fd313f1c7 --- /dev/null +++ b/html/footer_doxygen.html @@ -0,0 +1,22 @@ + +
    + +
    +

    + Copyrights (C) From october 2004, David Tschumperlé - GREYC UMR CNRS 6072, Image team.
    + Copyrights (C) January->September 2004, David Tschumperlé.
    + Copyrights (C) 2000->2003, David Tschumperlé - INRIA Sophia-Antipolis. Odyssée group.
    +

    +
    + + + + + + + + diff --git a/html/header.html b/html/header.html new file mode 100644 index 000000000..43e625dcb --- /dev/null +++ b/html/header.html @@ -0,0 +1,68 @@ + + + + The CImg Library - C++ Template Image Processing Toolkit + + + + + + + + + + + + + + + + +
    + Logo +

    + Latest stable version: 2.9.6        Current pre-release: 2.9.7 +

    + +
    + + + +
    +
    + +
    + + diff --git a/html/header_doxygen.html b/html/header_doxygen.html new file mode 100644 index 000000000..6737ed90c --- /dev/null +++ b/html/header_doxygen.html @@ -0,0 +1,69 @@ + + + + The CImg Library - C++ Template Image Processing Toolkit - Reference Documentation + + + + + + + + + + + + + + + + +

    Jd~Y!uRKvY1{3yioIyM8xw3j=uf@u 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

    + Logo +

    + Latest stable version: 2.9.6        Current pre-release: 2.9.7 +

    + +
    + + + +
    +
    + +

    Reference

    diff --git a/html/highslide.js b/html/highslide.js new file mode 100644 index 000000000..f1d645b29 --- /dev/null +++ b/html/highslide.js @@ -0,0 +1,1891 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if (!hs) { var hs = { +// Language strings +lang : { + cssDirection: 'ltr', + loadingText : 'Loading...', + loadingTitle : 'Click to cancel', + focusTitle : 'Click to bring to front', + fullExpandTitle : 'Expand to actual size (f)', + creditsText : 'Powered by Highslide JS', + creditsTitle : 'Go to the Highslide JS homepage', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing + +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + + 'width', + 'height', + + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +timers : [], + +pendingOutlines : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + try { + new hs.Expander(a, params, custom); + return false; + } catch (e) { return true; } +}, + + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else { + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + this.correctRatio(ratio); + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy(); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + this.isClosing = true; + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +createOverlay : function (o) { + var el = o.overlayId; + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + },this.overlayBox, + true + ); + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + offX = overlay.offsetX, + offY = overlay.offsetY; + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +} diff --git a/html/highslide/graphics/close.png b/html/highslide/graphics/close.png new file mode 100644 index 0000000000000000000000000000000000000000..4de4396d4a09677774f79289de2a09511baeea22 GIT binary patch literal 1910 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 literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/controlbar-black-border.gif b/html/highslide/graphics/controlbar-black-border.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2403fe83a93608b4d944b0d2c92f3b82d27a33d GIT binary patch literal 5109 zcmWlb`6JVf1IIs~eLiDz&Mf4}9La5SXO6jPj=AreLddalB*)XoRYDhIj*j;8^Yixhrqk(8 zPEKZKW_o&h3JMCMqN4vTSNaKq0AK}Z|KH^QPJjTPiZGqDWs8Pxop>5!c75zl;(@z? z_h%ZDhd-r0X6Wd-=vF=ty;@jy0li2r|I&QXApR~nuyghk-`y~d9K$e*i%)h`)za6` zcQVl@pYm4q0*fq>DyOV?Fo$7AViwyK>fbo-e35mT4jb3Gk=u2Qs=ds$RQ#{AZsZ2v zVih@^WswIR?s2u~>bhX7D>FXhA>I6vnV%Vt#aryVO(yA%I8Jc?wi#tqQF-gB4k683Ooo)TAEkCoH_7{mJ1x2_itr(BQ8 z{VKVJFFblEtGm))X|9UpW7xFbbamZWQfxt{Qi!T z1-9TG(AV7jOS=PRWPSCS-mYqDn%KQPywspAE#2dTpUU)q`#r*1bN1%Dqnh9H|qtkDgCfbQ&$B$kQn_RxgmzG@kRyTJV+_;%Tq=))RDT1czHzYJ3NTYM{ z`h{5Vn(bIosI4%Xdn)g?nu%+M5DWoa?%yH{_b@+zF{SOAWea>0joQh33 z^&Sr1BDKB7>l|NI1;b^zs$~Wd{vP5%Pm{tWWCRS39`fsF+g!Cu)=;+Cs_?fjcHP0` zx|u(FFD7ZCmiIhRPr^vO_*h&vro_8YMa&Q+F3j~Az3iAYzG}>d|6HKNnt6ePa{9%tv$B8RJNC+0r~4Re_wz(k zmRQkjgKN*jb>vgjQkgYUFW{*CxsTu%^SNKT#2S~++mE8>=RZrq#f(hsF4fp9wCWFSdr&~0o{5o<0yRg^2^v!ePZ+Sad!PWeJ;(TBF1a$2iO9? z3ds4>NqGCZ`7guKTA>`wq$7_CW0|Ls4XKv9&FHru59X}Osg7|_N<%o*XYA_YW-T2M z&Lg7s{CFxPyN(D2D>DV*YeK#(K*)}GJSv;DqlRQkr2wGV7zZQ5${A2{h1DC8;eljW zIEDw}{JHBm21Sgi8|P7cXm~LKfb#B#OX05k&S4n7xZ-xqbVDAS`X1PEeR5iuNqv1$ z9laRE0(Y+>`eq1%i9vD%?rtSvop_KQk}V{I110X@VYxg2V)kW8-XiCCZ&wSp z{x~B&M1(xeITEXCrXM{3a1WFFU6X3Fw}J}chNuQ!>mb&fnI@N_C|ru`48Y%GO3cjd z5w5e?1o7#DhyvP|1IQj^m$(fFP$Y{v%PB0kdpby4p#VL7mSJ%fKtVkhgT6{#YB!WSP!39CK6bzg*E#28MDO_j9KEl>GZQmmF^oz z25J0kdBx|=Yi3modv86qUr$M_jsZYfA-o!W&)yYF7_79X4_g~!y< z{=%iwYu`i_NJl@dVF8S$6tpNRkYa_-&Br(Iu*4~-5q#RFoY!nAR%Qj zvZ(Uavz4eii&zdi-d|sGo&f2I0m@7D;vy{l+eT8shr>6+1hkPSFGUC3Y=?X9dgvu% zNc61ur&%VKB)P)$OyS6sE-RttvIb|D{Yf7O`*kjz6X6_pbi=Ixzx=_HUA&shT_XgS ztApe+1m=@?V6jxHiqA^SwK9=F*$Y$S_DeF3 z5jiY>=-rF=1A4&v`+@K?LWB#S3?2pWvW^r1idVvsddVXpSZ!8{@{czio_CJ~&IKy2 zP8vzLY}?s&cD|S{{#W*Porgf5hk%AD7i&rUVnRrGtL)Czx8cwz5mQ4~WWISEeGgjN zrlZ8xZ-)n%>CNePw0-UC_q%Nh+EsRDW3$^9Nkt3}yotyPs>Yt~e z@N}@wNcXhq-k-FgpW_Gj@X~1M04k84y!GpOL3wd%iZ|)UKTY(n^Y@YjHT6INr*sS) zhX`sOsy3a!5OsD@@7!So?0TcH0y^CygbISm{vCsRia&I|s9Eb93{X_j%h1yyweLN6 z94*r!VntR=y4&$cYnb2t&3bt~=yb+<=;POaI};Eobxy(J#}s)ToiE?BZ~j)EHW?o0 ze~A_3@g5qpc6_Pd#7GnKbtbOHYD|mo`0M=)<-Q=t&4k5GMK{NkE9C&nQIYTM<2O>C zB_$lw@K;dD_J!jNi)8u1QvyUwsFnF_N;<7KLwYj=+xBd=-AJ!~-1}0a-!O1PfuuTs9Jv9PT!+ms72TKMxRUp?l|P?BqP4JnE^+`xnmi(Hgjz` z$1uEOmtSdHjbCCN(vVJ;~YGk?=-D zUPxqA{@L`Xm$b+qjJ0rg-B9M4Fqi2vX1BfZ>t3IO=xjXEx6;cuoLn3~cv4ZyW6IWhWv1B1 z$>e8Cz)HW@9(scHX0j&E9_t6&m7Og4feN`2b<{S1&rArIi@eC&Juc`z!FuJ#kv%Mjq%%IK6Z%=U^acq?@Uk1FL-~M4MEY6a7`jOJcC_b}JwzrI z`}WAURdZq7xu6b|s6+Z%Kj1jEtNp9J(YNr>sTi4L)55nFe;&!VPx78E^=^6U?bb$d zG68Kf8Q=5FXvO9?Us~Pp&+<39Fgp;dzZpDoF26oGHd2kqA%J_?a_du;Q@z$f8sLp9 zd-Ci}4L9944KMg@T;!nxlk-f2r{GVm5$me%;_GhTZdF|C&8a_o9`mi#nQpjNTgp%H zR3TQJjVQmc3mTV>F!d{Sz&XU_fbJ;=E7St`nEg&AWnuGEC+;V~cD3NC786ZFssl4J zw^fpb_T=4hbEmqNBpNw-J8Re5ydHwz8_>ktO#F=OzOLA$&R9`>&96qlnhuI&hIMi) z#>G2`G=>^b3$VUr-cyUBhgBV*x)!y70ol$pP7aQR!Z;jWeQ9$10j06kc4NZUiePNB z0ZRiYrz5vD;VKQ;f)QI#WbD#xCo6S>BFPCJ?XOC&2ZX7Vpea|z2b)$qk3NXO{*b^6 zKqYTEavvCIeATB&d#_4fS57*tb*?6j3P|&8!=nT4dYPP@xREYdW6!$~wd+dBZqI#Y z*X$Ecrg+sTUL|;RRjj#*3jV5EPV5;sdj!`)_(G%zY@H04Nf(NR3lfB{u>gz z?i$taC;e@(JW(sRUJJc6@(Bb3v+J$0_2aw(sx(b_U&%@a`hQ9WHKS>4yMU;N*A*vh zm5&%qv>I4?-+vcqZ&*WL*}4zNu~8H@9K;q#V+SHAOcz^b0y1Tj0(oqR)C3`d_j8o>aomw%dGo zovFePTzKr4T@R;dux3}w&onq;?(y7u&lv5|jiByXTGOvIP9p8G`}(8S2AKc4fx{^1 zv>`T`jX~-;HiSy9x@xD-F&J=x`EpM-kZ$hB{gql=%-SQ(M#yI9iMR+bng&Z~bH@u> zE_XFcra`sCz2=2&!nRKUQb&?j-=Py-`$k}O#v{#NZCGvYxXK{X*%zr=qy#V}lvm zt$&O_dqkQXMxgS7$KLB*Ra!kMjXlh&!8^zL0rOsmv7sU1E@#H$Q_Bq((;ByjpWO54 z@nQ|V--azYeVV_9hAJUtq$WvwfW~-QTL1-DJ>AsmRVwV^A7BjLltIrX@&V!@V)jBbx_A*G3kOq3_E-=FB~J<@GDZJlp9W8%uK+&uHDxcz&^)vn_;)8Xom2 zZc+F&{-^NsciU~VE;F$jC1!qzoU8S|z_MrFCMok)E zv96clnNDAr{^R#FqA-)yGadhX>UhR*O!bU0e)`P$nf%`~u51X!o4SX3 zRVIoq)d4PKysCwY%%==WT-!u*r-Q+*-x5gGGCu2X;Y%)2klk18~eDJ%$67G7qsr!p4M zl?$^L?D>TSaC?FG`~GW-#S>nOD+}b+>P5Mh#kFekKff2HC6~U0kT*h>Bomf?D3H(g yEMc@>F+VNMxW1~?;n_mGOLt!h?A*T|GK0rj&fxYe<1Lp72bZPXX5tlKfbu`SS-XG$ literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/controlbar-text-buttons.png b/html/highslide/graphics/controlbar-text-buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f72e0a817c601e48dfcf27f8e1c5b38ee9c355 GIT binary patch literal 1300 zcmeAS@N?(olHy`uVBq!ia0y~yVAKU-2M%VS$i47e5kTrsfKQ0)|NsC0(j5RT{qf_+ zqeqWs&YXGo?p;$;)AsiEj~_qU+S<;YJJ;CQ*xTFt%$YN}xw)aCp+}D%b#!!Gy?V8U zg+*Uq-{;SttE;QGZ{I$3>eOx9w!M4zZq}?>hYuf~H*em#bLW2l{=IbR(%ZLhpE`AF z)v8qs7A&}W_3FQW|7OpgeeBq=pFe-@-Mjb0hYwGlJOO%I?tI^AU^u9k1o;IsFnqYg z^I1-!Xyci;Cxt3Zt8c_O`@6Jl6Wb9jJvd$=lt<@aApV zA_fNL$(}BbAr*0NZn*O`JMgq7+9$9XeVMgN#cQ{~_x;{WJR=niet%#4e=6%V8zz1G z+!$lO1;)f}1XHo8rV&>XW_9Rr{ZdS9nh4F6Vi-rU`jSzX&qg`0vxg_Wi5w zt~j<@>Tj;)(pNkV3^#JFJjzxuh-un6$>(o%=C@CqZu_@?NjuNS$-v;C(9yW~P`CIO z{Z8lPg6&el)5{It3B)&K-nT2e-H~L_^DH;Xc z!>(TzTVtZsiO5tETQEYu8yW$|(IBShRDS&GtRQZ=*Mzz6^4NF4!r$QKt6xXP&!l zY12Hs$TUDwZ0$p@jTy2(b6?#0bmx=bmV7j$b&FLlMrHLWM0sD8k-jLkW>&ItRCB1e z?DA>Zr;ATpU)-m<+Xgv+zP>88b69j|HQ$%g?y3 z-fcavP<>g%mTPirAEYhW`pqt8%b`1+^FEnz++LY)x1|pl4RGgOO>b4+^30-OOUBoI z|4)G8WKpX1Ql!w{9c$y19WGjYan-7>^gErJVryf2!wQTq-MWg;*ig8!S3};pg6!Kg f_Yx!tUW&igpc*XL{1$dLm#0`~?1qNF>_X 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 MWY<(b2m;&x537qxG5`Po literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/controlbar2.gif b/html/highslide/graphics/controlbar2.gif new file mode 100644 index 0000000000000000000000000000000000000000..39ad65218c2cdb03f4680c90e78780007b8c6919 GIT binary patch literal 884 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 LNCjgDQvd)v!q;7m literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/geckodimmer.png b/html/highslide/graphics/geckodimmer.png new file mode 100644 index 0000000000000000000000000000000000000000..309bb27838e57efe124ed123a1892dfc56992957 GIT binary patch literal 2817 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 T92B{V00000NkvXXu0mjfnn+X< literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/icon.gif b/html/highslide/graphics/icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..b74a073c13b0ffe7e970c3402396e89be9ee9113 GIT binary patch literal 867 zcmV-p1DyOvNk%w1VGsZi0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui01yBW000O`0RIUbNU)&6g9sBEOvA9D!-fOXDE!AzjhZx{Kz%~U tP@u$rpg4Y1BXHxvjuZukJZX{Pr;HpUPW+fsA>bC%qss-h(X zHHZn>ATy3#M#|c!98XL*GbK!)tuvyx8i>o zn-B9FtxS=czn=wa6f?3>K))raYM(M{oA_ow&Ao1C!kw>lUa6(K{$duNWopKqG zPMYUWIS4Szy|j@(tOhnGXcEjAR%By<&QUlt!BYHj$@4w8<{3yHmwBM5=d^9^sqi(6 z40+hNMT!%5Z!rBnm9f!a183*%`MH{2Fmu?D%>g>+&c6?wf;Z=c#?E4VcdM{qYC^}| z#5s3OrnNe{9W@Y{kT822BQMJ#2Z7m!4Tr9sn+P+89m5!4%&$&$x-v)ex*P|`VTHcq og?ucA1}jf(SQj912pC;qx0W&~lqN|u&5IVCz`$S)N;qHu07z5Pa{vGU literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/loader.white.gif b/html/highslide/graphics/loader.white.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2a1bc0c6f545e20e631a96e8e92f9822e75d046 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nnmm28Kh24mmkF0U1e2Nli^nlO|14{3qpHl$uzQnxasi zS(2fUn3Y(Olb@KPmzkHA&!G5|g@FsGT=74*pKD04vtxj(k)8oFBTz^Oh=E26FfcG1 zbL_hF&)}42ws10s6^G;;cE1^EoUR)U5A70}d2pLv!jVIT7j&Z~EblI3x0K*v_sV|m z0W=b9G$XP(CLnYCdK49;TX=SFc-G}o=oA=|U?{1O;Nu!CwW3C5Yw7*Bi4yD$3fCnb zwK+>}QdQ9sf*QnxY>*kpE+b{_Q;sJloS71)&(@kO!}mqf@1v(v;*8Y=G9S3kY~Cw# zY=t&c z;3~JK4HxB^lY(MD+sYeQ=t%XSSW;x^1M?dTvN=W^yNcAcy`HCte31C;)5xP%b~qs> zDP&4(%TBqBNGHwnryK;BdMI$fEg xd0mc!C@j^ZpLxYv4HmnPfI0THYuv<%+6iSmMn&w3dPGDfL1|=LY008wP(boU~ literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/outlines/Outlines.psd b/html/highslide/graphics/outlines/Outlines.psd new file mode 100644 index 0000000000000000000000000000000000000000..540565151015ca3714d732147896bc2250404e60 GIT binary patch literal 171802 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 literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/outlines/beveled.png b/html/highslide/graphics/outlines/beveled.png new file mode 100644 index 0000000000000000000000000000000000000000..fc428f415ca5017a82c42e568e6d75f17789bd9d GIT binary patch literal 1848 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 Hr-UW|RX8B) literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/outlines/outer-glow.png b/html/highslide/graphics/outlines/outer-glow.png new file mode 100644 index 0000000000000000000000000000000000000000..288d43feffd656511f5b1f5189b5b0047dc146ae GIT binary patch literal 3423 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 literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/outlines/rounded-white.png b/html/highslide/graphics/outlines/rounded-white.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4b8176f57c44f41071c8cff7b86ece9c8c1f9a GIT binary patch literal 2050 zcmeAS@N?(olHy`uVBq!ia0vp^8Vn5FJ2+T?EX!#|@eB;?Cp}#pLn>~)y?Z)8=Bgya zhso?cOF0x>AADRgyU9gt!kNR2uBq- zl8Fu4x#36VZ85i7nYTXRJW$Kp~UfJg@(-p_QxLn)qZTH2~DXeuAO|75&_VW76=N~n1ce=Tm=Us2|*Be`xo^6W% zdRhN+|E1)GZ(`Zxd(PV4IG^#-{N?e&Bj4LY8hgKFRB3Vl$^Df%$EClmgn5on`=$fo zmp)qPtLL-cj(o85OO4F5=mTkL75kWGJ17WLh;R7uCA6lgSL8#k-z2Fe4a>uV9i}e% z_wQ=j!T$Y{enFv9wXgMOdw;q9TYs;3=9in%mouim2>#vNZ^pduYh=#-fJN)QCTghl z?fdpl{r}(dZQq~TPq+JXfBiqHJ7)?sixx+8O?sZO=5@}m(kjco+dD0GU+XWv`1t9I zN;9`Ln$yBg?TqlZ?&^Ae$^X(ui_NbdM|`Q$tGd5%j&@u@-vSlA=q>%4CquRB!PXP6ogb8_Rj3seJAN?wu#cg8e*4aFufh!< zmYSDa-_S6)eI{hH@5Y}Wl32}7pS{t{xh+^|k2BW^=JV@Wy=ww*$RtY1Hf(kNb^W!{ zfyaj*Jp5O_wQ#N8s`W)7Y9^hsNAgA&Qb z2JyxNOb!8exbn+f^pjj%9|WaH^6G-3&rBkRGlu&mf z7s$J_q8io5d*d_{`+tTT%&6i_`^|SSK&{=g{6Qwf-Ei9rWDZn9z4DgZENSCx&Us#U z1EgRc-TFWV5*~1E7IF`knlM8Q+%fl{pV5Y*#4yMc55IaItx=&WEH1S-8(p zBhMnJU=@c2D-O3Fm)OICL+U+q0UN4Oa9*FK1v?I1SRJ`tWKKMHneoBkmC-^m5^T{k zA3QCwI&f`mf%q+jF0ns#Q2UX_ w+V^>CQK@c3$u>!!4V4cPj@cQ_Nchjsn7O%dD#tS(VBOB(>FVdQ&MBb@09h6A#{d8T literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/resize.gif b/html/highslide/graphics/resize.gif new file mode 100644 index 0000000000000000000000000000000000000000..9100de776d506f8b9f061d475beed274b550aa29 GIT binary patch literal 70 zcmZ?wbhEHbaR31LswxV4$g2MTg@u8xTODI z5Rm(x3IH5!CwX}t9Y+se4ap+) zbq_sqEP6e;1UOkLD<=askyoBa1;l% zQ-<-10LBZ*?9~TF!Qykkt7>Gg0vg*u?<5g!Gr+$8FACGPpVQrBNMVhvC5U z0E$w{k*B@9511sVpPUp*Y9)C2{NM}5BcrwT)&pXy##07>P2aHT2QHo#YPdKC-0h)+ zxw7+b0>G^+c6pK^ZmzEIQ+ly+0a;8>ajY1zB`d{`M-Mjt` zleoLN{@L@3IfCCjLK*GP&;D;$8f8zX(y-rHukIu(-?iaB-qFr74yszW!#K&dbV|1GS1w`!aC_A>F90kQn7N@}Tck&@08l83;B1tox$2|h>cx24hrZf} zduJ*1Mvi%~Uyeu)#}@w7+mfU9wH$l&L?bPyCC?8TTESjj$LMrV0`7i;&jga5g#WCt z3i{Z)BCye9N3lq)7?xup*6}c=BrM8zQGXcvRM1EgnCZu2$#fajQ(vg?>BU3o4OD0^ zB)w5YW6YE~QpHCB|LeQxE@i%qh-O{MA9$bS+be~s-zb&fez*1I%T1;z%KPs9ky4~$r5SfUrhTreJV6y|ru4C8TbE``(F`v7 zXQNTu`P&2A0^2m(3>T(2`PMRCAO7h7V%PiXto8&!gb+kv*yZrc8kFYhtyLC7iC-j} z$ki3M>NV)bRFVq5$`zf6q)=5at1HQzrFNurym4yS^X(vB%cRrF{%$lgzOTHOy@z_` zkB1*k9yt>0!2TqU3X{s=i9c0Cjz;;D*@Pz}P+noa!<^lBgzr2IV4SU-A>^rFaWd61 zSu<%kd7xF*<<;xexCWO7o4b$V=JZTBwVsOE)iGCIFVvx0IVkyLrvoq(OwlhJp zx~f=IUO-L2s73EG!(JM5E63~4dtWW=UG|FX%dq%$vQv&<95m&E8tr^`W-irP*;%j} zl^Wd|<-=~F`s0fH@@~aWw4~Lmol2- zP6huj?iD9F1w9t<0u7If^}z1ke@{bs?xFW?|0=GP@n9G&c+40pc#~8TLod8MBxrd? zR?ct{RF=53R5Fz05a*X0G$|TJrjjD_0s$ zgif4JVpa>k2^Mk`7z_A(9~hPYsf(DF#x2a`b=jy5)0WqcaQL*##ACygYE-w-*jDCW zePeY>DfL^*yKqZtOG0>^f8F@yH{ss4(YA5z0gr;0Q5*8%OpmsYL66g*0?q<)K#hx# zjW9*I{Sy?z@FhuFY{l+(^U|?wVo|#+xoq<5y4Q%lItItlqm(*^o86qr)JZ3TD4npq z`R|xkJ5~t;VR&p&F;Pa*(n+4NFzRW(>=*vitMWb@3jY+c6xQ<`__ReEo~ym!l&a=- zmRJ_<5bTg1=C(KfHV4axsk*8^73Jov7jk#)*|+%vFvvi~Zo zf})C>gi9<-Mk7{BB;!n$h_jL+k>!HapCt(=u%EWyfstogXgYRL-i(t@>q3Q7GbrsS zwd+M7^N>Ip7oz&1zt{=S{zob|?-``n(USLX)Rh_+)P2i5dwEPi&!|>zr^>4)$p6m(s zmCndk`S#K;5}&*5D#j)!#HFDhpjXg;P@$8VwNF+Hf83`}Xo9FKRZ+= z82PW~A^+6>Ild6S!Q1!4znDA~0=M^Xus3e#@Wqz>5`$|uF=zktqjjL=ahA)y$W_YI z&%HIZHto>)CXNi>bu?%>2+W?!T*+D&V(MP9YnsHGm4K1yW(BqlV%s6eJ`3<5Tr(*jdB~rUb-Fl9!NZ-&uWi!zVFPf zZ#Q#kKMCso6l{O9Pg5W~xpvhZcuw&+KUW|sxz>Fda7Us=%KRMpHDN@p?)Mp0Gc2hYOR_In%}27uo4w+(OFk4|)%uG^`Bw z57YIG1qkq2Tp8XT_xZ2-)1H=Y5NdCS(1)`>I{t0C*8g5{oBkv{{Sgf{=km@*;Q0zN zZ_?YS=xG8F!~y_35`e#t$hr@}D_#H&ECCS90f5pY?d6aX00hpe3bN3EqU&hNPoJk67UVoULKs>_qiS62@K$=l&)6SM;ENL z-HL~P3I1~WzNfDLih_J;7O*dsr_B+Mv4Wpt7Ggrrg~iQfra=j41V3!G(=}O8hcJ6_ zdr^BeAAW06I+Ajiuq%BeCSpg?(9qSLCUtXj!+c6GV$iT4&i)l=>Ta?XU_>m{%rdC;78#1u(D->@H_)3?g^oe`h~8Ki{)^9dvB{rmUmm-^;+jKpvC;I4Fn6Ot3d%>EOY0 z{tLf5f7P(C!lTugk&$7hqNZkoX(2$MCxZj00$0#TMUL2K_%ior1BAO&c+o?BoCZclTm4bEjZ3bwG}gw3`KhVr zizSK)dXPa9BU>ovT*l-{JX|rc=;n08Lx>7bJ#x;)(XqE}BP_vZce1#$5-UGHUv@=9 zU0pqRzbxAj#4@2u3d|L!q)8?icLjKLXjQ1=VnD;fq{PI;WM&2H%{!yh(nuDMf5YD@ zDk~rEOyv3h2T;NDxP|f`bV>|G>>$yiK^s~#=hX*y_V9=?tU(7@ui^3WI04-jwHDpf ztm#e~r6zUrKt>zILnQ~6m>^OM|%(EYUB&{F8|8tl66^} zP9+f%5O_Ban&ccv=yEhF068x&uj83A^}N#3Qd0K#ex%k-o}2yHFZMh|%wD~EC9LXw zY=FX5Hp~Tqdpthe*CF*ZXe;ge`t@rPDVvrVDz8Qk)`rHDpR$Qw`O@JJa{m7Q$F|ho z?PlwzJ-7AcO-)Uta8$r{XznkqC~qc3A+ubiUm>+E;_g|}zA3yBqEAdib4vin2NY>< zOe9n9&XOkaAQd$8tQFT*Ly!+Tz!eG=+D~FdFS#uP=JvJ{ z%hbG5EK3vq=m|!f$yyLtF!-etf(O}S0{3W^GD4&{ztBQCNg8wZb4W+Ou~;kArNZ|Z zWUB6|&Ax2fKZ+B6P7=!3`QvCFTu&{9WFJCd5yDhqyfoU@f zi?D$Ef7jZU3M1-_EqNwE-s!~BY@K5=GZ0=n>9D&h8e#X4)!A8}=}pfc$ay$4H#g7b z`Lh`_WusuCj$w%xQ=S!+jsZtD`J6{$Dw)PAxZC0+=D)B%D82lE!nMU>@Q~l1^A4aPA1K^R0;!Lb8~YZIIn-=3upccT=&1&9=iwpD%9j`c9;*{YWTg2 zD=We7T}q}VCMa|bRaNar+0m7mN9Kb`?4W6(;pN7Y514OpO~S$+WWh7AsvMogj?FvP zhL5y)@UV*t5!(6Xlr-VL+w-lFWB^0&)wqyR;^>V%Je^ebzScgowjc3B6hwyJvfj<(&XUqFmiqjdA-P+uur?)&-_X<`fUV! zmwNcK6|PqWg*1$NJtcT5LZp}efjxe`C-jyA#0`>v0#qD3mTevz4~&|#(|y!?r>DxY zvVD~SM74XqV)vb=J$afKLER)l1+MII9lrZB0zusm#X95z5Le`|l&^LAOEa|Dkkt+j z4zfj-2@u4f8rG0&YHC`oy|TC8vA$3!u`7N{ixDs=iwo|t>2x@7grvpZ^VgEM77-7+7cL$w36uEnJV;P@Y~zAyV-mUuzs}qKx^K-~6kITPZ7tV#LCGEe&b1R}LKAcuMb*TJ z3Hus6{$~n!FgrWDPA(1vd0M3c=gaM0@A$ji$M-WE#KYeR0F zCz^FsfRmGx&k+gDvW)+%=)eLY*VotC{Z+0)d8wJ1=#hOy8MB<++&!|cXW&eiM6$_g zw)_-{a~f7$n2pVrc45fHm_cG}p_Vs;1w*5RNB8x-6Y{87iofk_ZRy$AFwf7=i!s8c zkZu3E?Wetq*l+w zgxcH3Cp9C3thq@(hTy)fySqDmkx%1@O0(n?l47BwbC%4zmk1xZIbOMugbPFNaAd@s z^iyrA+Z0w6K=O};g-13LlHOCdJq!?zc7_5k`=I$&qG&e#1K;J|bZOy*#3^p}^4Z^z zJIwz=JR!ZOqv&B-a88ZiLx9(mD~pYWnz}w(o@Y$m*w|P-1i1@XU^M0upTt!v1#7&dzFPW@feQ@zv|=>&1r) z4gR6mb4GIxQw47HHW_bSg&~V$MSBLh$!v_=>KCF+@WI5yMD$L-+in! zM@vh4KQuJ->HjuUMG{RM?w(k=wl-Kl?PWwxk7FMjKAd7JQgCEryDF%n@{_q_7d*kj z9DU>lJ#lIWZ4uR}P!CD>s`Z5-x{D;?83dbi*gdtSTln5xp z=YXtje=%>}z9-8)Qa!VK08{E0%{Yd-lgE zO&)0*10+pHexIz}G7|fcjx7$X6Yv>L^UD_bViG)stu8PB(@q|lrPTVlvazvIP+0i5 z`|;yP1iz-Xq_NwD7DfU}k*N3fXj(x*LBGld8$!hWb7SL~Po3c{Ra~vI;`eu-(=yH5 z+|BiZgKtygda90m#bOBlle*)BBfyTPVP2PhUkPLo3Wau^T>gz7Qq9=e*(smM6Mm%V zB>~vXS-IYg8D{UtjuxAk`1ttFpX8RmN_XO6VL|j99UZZ$K;7wWDC^M18n7%t4y8o^ z!!wd9PG}R1>$0V}c?JtcjZBj~w+7x`_8EPaFe2nQ69T$qOe6~(otz@*u`H?V&Bi!c zSkU+P_lwwZR8>{ulBNFbq14O;X{J>(zdmut#06CGC1Jx`N{WibH8r?MGFXn81h~eXZBri;jo(+H$h5DyXFn1ul@hxw)T0mZe)c=2UUk25 zJlzx_K;}t2ox!((6|)@lXEc-k*MJ9w$c%fzvgkieR?_B{mL|t(#!4vXpOBsu83=q} z^Jhm#$J1ss)AzcTul)UmKbzIV`3+oMxeV*g;$rB6uq38zPFCAxBT(S;$Vi`-mPWAp zPa%U5t{JGKwkqk4%mnZ7@$seK;D~f~b`F)4Fg76_ZfhCz=WLS%m_lk9+DqsJthyQY z`+@)mIy!o=1RbI9q)R-*7iE2YeVg&g$p>*bWgIjU{;pX>zr17Br3sd0-tLX~rl3z7 zGq4$S+I=&LvWW4MLvCdd#nRr)9g7};$bPvFGcYh9;n0bUj6C^&D;NiOJ*;fU8cN!W zf7PPu!gf4XKc6p9@>tyY1q6uHe(0#HbF-W(kW@s%G`u%9rAFki=t^yV+T$L=TV7F7 z;l9+2s3L!6C{ghKeMsT7V`8ZtkD6${mUeJ(@Jr;YR+?-^>XEsm1BWTsf=x;AYnX;! zA=H=UP~o*cf7m{Dpg-Z#2TF59f&hBr+;xzr`hxxyDY{yNZDt0U@X~E;A1WIAzP!Z8 z+8(pQr~P%AwKFk13M_?JzGUIAlxHp(_53pk%G4-&f`}wnLIv%%CMaX?|$z| QFx&t C*K;KR literal 0 HcmV?d00001 diff --git a/html/highslide/graphics/zoomout.cur b/html/highslide/graphics/zoomout.cur new file mode 100644 index 0000000000000000000000000000000000000000..acf61999635514eac804c124d24b447a33bbfae9 GIT binary patch literal 326 zcmbV`F%E)25JlfE1~f5BWhhMC!ot$dQjX*eprrFmR9=H4P?|{m&VmWG&g9Mhnf%Et zcpM>kGRw1r9dI&&Q5w#2jPElwbConVKdGC!8#}NBpTjzk^d*~pO_A2*9xg99t|p?6 zvm(Vjn0G#AfA}Nrwv$P3W7ulopq{HbDz#mu$5X0JH;aj=Highslide JS', + creditsTitle : 'Go to the Highslide JS homepage', + previousText : 'Previous', + nextText : 'Next', + moveText : 'Move', + closeText : 'Close', + closeTitle : 'Close (esc)', + resizeTitle : 'Resize', + playText : 'Play', + playTitle : 'Play slideshow (spacebar)', + pauseText : 'Pause', + pauseTitle : 'Pause slideshow (spacebar)', + previousTitle : 'Previous (arrow left)', + nextTitle : 'Next (arrow right)', + moveTitle : 'Move', + fullExpandText : '1:1', + number: 'Image %1 of %2', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a', 'area'], // Add more to allow slideshow indexing +transitions : [], +transitionDuration: 250, +dimmingOpacity: 0, // Lightbox style dimming background +dimmingDuration: 50, // 0 for instant dimming + +allowWidthReduction : false, +allowHeightReduction : true, +preserveContent : true, // Preserve changes made to the content and position of HTML popups. +objectLoadTime : 'before', // Load iframes 'before' or 'after' expansion. +cacheAjax : true, // Cache ajax popups for instant display. Can be overridden for each popup. +anchor : 'auto', // where the image expands from +align : 'auto', // position in the client (overrides anchor) +targetX: null, // the id of a target element +targetY: null, +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +skin : { + controls: + '
    ' + , + contentWrapper: + '
    '+ + '
    '+ + '' +}, +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'anchor', + 'align', + 'targetX', + 'targetY', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + 'autoplay', + 'numberPosition', + 'transitions', + 'dimmingOpacity', + + 'width', + 'height', + + 'contentId', + 'allowWidthReduction', + 'allowHeightReduction', + 'preserveContent', + 'maincontentId', + 'maincontentText', + 'maincontentEval', + 'objectType', + 'cacheAjax', + 'objectWidth', + 'objectHeight', + 'objectLoadTime', + 'swfOptions', + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +swfOptions: { flashvars: {}, params: {}, attributes: {} }, +timers : [], + +slideshows : [], + +pendingOutlines : {}, +sleeping : [], +preloadTheseAjax : [], +cacheBindings : [], +cachedGets : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + if (/area/i.test(el.tagName)) { + var imgs = document.getElementsByTagName('img'); + for (var i = 0; i < imgs.length; i++) { + var u = imgs[i].useMap; + if (u && u.replace(/^.*?#/, '') == el.parentNode.name) { + el = imgs[i]; + break; + } + } + } + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + if (type == 'html') { + for (var i = 0; i < hs.sleeping.length; i++) { + if (hs.sleeping[i] && hs.sleeping[i].a == a) { + hs.sleeping[i].awake(); + hs.sleeping[i] = null; + return false; + } + } + hs.hasHtmlExpanders = true; + } + try { + new hs.Expander(a, params, custom, type); + return false; + } catch (e) { return true; } +}, + +htmlExpand : function(a, params, custom) { + return hs.expand(a, params, custom, 'html'); +}, + +getSelfRendered : function() { + return hs.createElement('div', { + className: 'highslide-html-content', + innerHTML: hs.replaceLang(hs.skin.contentWrapper) + }); +}, +getElementByClass : function (el, tagName, className) { + var els = el.getElementsByTagName(tagName); + for (var i = 0; i < els.length; i++) { + if ((new RegExp(className)).test(els[i].className)) { + return els[i]; + } + } + return null; +}, +replaceLang : function(s) { + s = s.replace(/\s/g, ' '); + var re = /{hs\.lang\.([^}]+)\}/g, + matches = s.match(re), + lang; + if (matches) for (var i = 0; i < matches.length; i++) { + lang = matches[i].replace(re, "$1"); + if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]); + } + return s; +}, + + +setClickEvents : function () { + var els = document.getElementsByTagName('a'); + for (var i = 0; i < els.length; i++) { + var type = hs.isUnobtrusiveAnchor(els[i]); + if (type && !els[i].hsHasSetClick) { + (function(){ + var t = type; + if (hs.fireEvent(hs, 'onSetClickEvent', { element: els[i], type: t })) { + els[i].onclick =(type == 'image') ?function() { return hs.expand(this) }: + function() { return hs.htmlExpand(this, { objectType: t } );}; + } + })(); + els[i].hsHasSetClick = true; + } + } + hs.getAnchors(); +}, +isUnobtrusiveAnchor: function(el) { + if (el.rel == 'highslide') return 'image'; + else if (el.rel == 'highslide-ajax') return 'ajax'; + else if (el.rel == 'highslide-iframe') return 'iframe'; + else if (el.rel == 'highslide-swf') return 'swf'; +}, + +getCacheBinding : function (a) { + for (var i = 0; i < hs.cacheBindings.length; i++) { + if (hs.cacheBindings[i][0] == a) { + var c = hs.cacheBindings[i][1]; + hs.cacheBindings[i][1] = c.cloneNode(1); + return c; + } + } + return null; +}, + +preloadAjax : function (e) { + var arr = hs.getAnchors(); + for (var i = 0; i < arr.htmls.length; i++) { + var a = arr.htmls[i]; + if (hs.getParam(a, 'objectType') == 'ajax' && hs.getParam(a, 'cacheAjax')) + hs.push(hs.preloadTheseAjax, a); + } + + hs.preloadAjaxElement(0); +}, + +preloadAjaxElement : function (i) { + if (!hs.preloadTheseAjax[i]) return; + var a = hs.preloadTheseAjax[i]; + var cache = hs.getNode(hs.getParam(a, 'contentId')); + if (!cache) cache = hs.getSelfRendered(); + var ajax = new hs.Ajax(a, cache, 1); + ajax.onError = function () { }; + ajax.onLoad = function () { + hs.push(hs.cacheBindings, [a, cache]); + hs.preloadAjaxElement(i + 1); + }; + ajax.run(); +}, + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +dim : function(exp) { + if (!hs.dimmer) { + isNew = true; + hs.dimmer = hs.createElement ('div', { + className: 'highslide-dimming highslide-viewport-size', + owner: '', + onclick: function() { + if (hs.fireEvent(hs, 'onDimmerClick')) + + hs.close(); + } + }, { + visibility: 'visible', + opacity: 0 + }, hs.container, true); + + if (/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)) { + var body = document.body; + function pixDimmerSize() { + hs.setStyles(hs.dimmer, { + width: body.scrollWidth +'px', + height: body.scrollHeight +'px' + }); + } + pixDimmerSize(); + hs.addEventListener(window, 'resize', pixDimmerSize); + } + } + hs.dimmer.style.display = ''; + + var isNew = hs.dimmer.owner == ''; + hs.dimmer.owner += '|'+ exp.key; + + if (isNew) { + if (hs.geckoMac && hs.dimmingGeckoFix) + hs.setStyles(hs.dimmer, { + background: 'url('+ hs.graphicsDir + 'geckodimmer.png)', + opacity: 1 + }); + else + hs.animate(hs.dimmer, { opacity: exp.dimmingOpacity }, hs.dimmingDuration); + } +}, +undim : function(key) { + if (!hs.dimmer) return; + if (typeof key != 'undefined') hs.dimmer.owner = hs.dimmer.owner.replace('|'+ key, ''); + + if ( + (typeof key != 'undefined' && hs.dimmer.owner != '') + || (hs.upcoming && hs.getParam(hs.upcoming, 'dimmingOpacity')) + ) return; + + if (hs.geckoMac && hs.dimmingGeckoFix) hs.dimmer.style.display = 'none'; + else hs.animate(hs.dimmer, { opacity: 0 }, hs.dimmingDuration, null, function() { + hs.dimmer.style.display = 'none'; + }); +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + if (!adj || exp.transitions[1] != 'crossfade') + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + if (!hs.fireEvent(hs, 'onKeyDown', e)) return true; + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + op = 2; + break; + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {if (op != 2)hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else if (op == 2) { + if (exp.slideshow) exp.slideshow.hitSpace(); + } else { + if (exp.slideshow) exp.slideshow.pause(); + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +addSlideshow : function (options) { + var sg = options.slideshowGroup; + if (typeof sg == 'object') { + for (var i = 0; i < sg.length; i++) { + var o = {}; + for (var x in options) o[x] = options[x]; + o.slideshowGroup = sg[i]; + hs.push(hs.slideshows, o); + } + } else { + hs.push(hs.slideshows, options); + } +}, + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.hsKey !== undefined) return el.hsKey; + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, +fireEvent : function (obj, evt, args) { + return obj && obj[evt] ? (obj[evt](obj, args) !== false) : true; +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + else if (/highslide-html/.test(el.className) && hs.focusKey != exp.key) { + exp.focus(); + exp.doShowHide('hidden'); + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + if (hs.fireEvent(exp, 'onImageClick')) + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + + if (hs.dragArgs.exp.releaseMask) + hs.dragArgs.exp.releaseMask.style.display = 'none'; + + if (hasDragged) hs.fireEvent(hs.dragArgs.exp, 'onDrop', hs.dragArgs); + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + if (exp.iframe) { + if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null, + { position: 'absolute', width: exp.x.size+'px', height: exp.y.size+'px', + left: exp.x.cb+'px', top: exp.y.cb+'px', zIndex: 4, background: (hs.ieLt9 ? 'white' : 'none'), + opacity: 0.01 }, + exp.wrapper, true); + if (exp.releaseMask.style.display == 'none') + exp.releaseMask.style.display = ''; + } + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + if (!hs.fireEvent(exp, 'onDrag', a)) return false; + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + hs.fireEvent(exp, over ? 'onMouseOver' : 'onMouseOut', e); + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + hs.ie6SSL = hs.ieLt7 && location.protocol == 'https:'; + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + hs.viewport = hs.createElement('div', { + className: 'highslide-viewport highslide-viewport-size' + }, { + visibility: (hs.safari && hs.uaVersion < 525) ? 'visible' : 'hidden' + }, hs.container, 1 + ); + hs.clearing = hs.createElement('div', null, + { clear: 'both', paddingTop: '1px' }, null, true); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + Math.easeOutQuad = function (t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + hs.fireEvent(this, 'onActivate'); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [], htmls = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + else if (re[0] == 'hs.htmlExpand') hs.push(htmls, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images, htmls: htmls }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'loadingPosXfade': + return this.pos + this.cb+ this.p1 + (this.size - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + // get alignment + if (exp.align == 'center') this.justify = 'center'; + else if (new RegExp(this.lt).test(exp.anchor)) this.justify = null; + else if (new RegExp(this.rb).test(exp.anchor)) this.justify = 'max'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.target = exp['target'+ this.dim.toUpperCase()]; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (exp.releaseMask) exp.releaseMask.style[this.wh] = i +'px'; + if (this.dim == 'y' && exp.iDoc && exp.body.style.height != 'auto') try { + exp.iDoc.body.style.overflow = 'auto'; + } catch (e) {} + if (exp.isHtml) { + var d = exp.scrollerDiv; + if (this.sizeDiff === undefined) + this.sizeDiff = exp.innerContent['offset'+ this.ucwh] - d['offset'+ this.ucwh]; + d.style[this.wh] = (this.size - this.sizeDiff) +'px'; + + if (this.dim == 'x') exp.mediumContent.style.width = 'auto'; + if (exp.body) exp.body.style[this.wh] = 'auto'; + } + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); + if (this.dim == 'x' && exp.slideshow && exp.isImage) { + if (i == this.full) exp.slideshow.disable('full-expand'); + else exp.slideshow.enable('full-expand'); + } +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isHtml = (contentType == 'html'); + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + this.last = hs.last; + hs.last = null; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + if (!hs.fireEvent(this, 'onInit')) return true; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a + && !(this.last && this.transitions[1] == 'crossfade')) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + if (/area/i.test(el.tagName)) this.getImageMapAreaCorrection(el); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType + || (this.last && this.isImage && this.transitions[1] == 'crossfade')) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + + + if (!hs.fireEvent(this, 'onShowLoading')) return; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + if (!tgt && this.last && this.transitions[1] == 'crossfade') + var tgt = this.last; + if (tgt) { + l = tgt.x.get('loadingPosXfade') +'px'; + t = tgt.y.get('loadingPosXfade') +'px'; + this.loading.style.zIndex = hs.zIndexCounter++; + } + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +htmlCreate : function () { + if (!hs.fireEvent(this, 'onBeforeGetContent')) return; + + this.content = hs.getCacheBinding(this.a); + if (!this.content) + this.content = hs.getNode(this.contentId); + if (!this.content) + this.content = hs.getSelfRendered(); + this.getInline(['maincontent']); + if (this.maincontent) { + var body = hs.getElementByClass(this.content, 'div', 'highslide-body'); + if (body) body.appendChild(this.maincontent); + this.maincontent.style.display = 'block'; + } + hs.fireEvent(this, 'onAfterGetContent'); + + var innerContent = this.innerContent = this.content; + + if (/(swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent); + + // the content tree + hs.container.appendChild(this.wrapper); + hs.setStyles( this.wrapper, { + position: 'static', + padding: '0 '+ hs.marginRight +'px 0 '+ hs.marginLeft +'px' + }); + this.content = hs.createElement( + 'div', { + className: 'highslide-html' + }, { + position: 'relative', + zIndex: 3, + height: 0, + overflow: 'hidden' + }, + this.wrapper + ); + this.mediumContent = hs.createElement('div', null, null, this.content, 1); + this.mediumContent.appendChild(innerContent); + + hs.setStyles (innerContent, { + position: 'relative', + display: 'block', + direction: hs.lang.cssDirection || '' + }); + if (this.width) innerContent.style.width = this.width +'px'; + if (this.height) hs.setStyles(innerContent, { + height: this.height +'px', + overflow: 'hidden' + }); + if (innerContent.offsetWidth < this.minWidth) + innerContent.style.width = this.minWidth +'px'; + + + + if (this.objectType == 'ajax' && !hs.getCacheBinding(this.a)) { + this.showLoading(); + var exp = this; + var ajax = new hs.Ajax(this.a, innerContent); + ajax.src = this.src; + ajax.onLoad = function () { if (hs.expanders[exp.key]) exp.contentLoaded(); }; + ajax.onError = function () { location.href = exp.src; }; + ajax.run(); + } + else + + if (this.objectType == 'iframe' && this.objectLoadTime == 'before') { + this.writeExtendedContent(); + } + else + this.contentLoaded(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + hs.fireEvent(this, 'onHideLoading'); + } + if (this.isImage) { + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + } else if (this.htmlGetSize) this.htmlGetSize(); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + + + this.initSlideshow(); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.isHtml) this.htmlSizeOperations(); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + if (this.isImage) + this.correctRatio(ratio); + else this.fitOverlayBox(); + var ss = this.slideshow; + if (ss && this.last && ss.controls && ss.fixedControls) { + var pos = ss.overlayOptions.position || '', p; + for (var dim in hs.oPos) for (var i = 0; i < 5; i++) { + p = this[dim]; + if (pos.match(hs.oPos[dim][i])) { + p.pos = this.last[dim].pos + + (this.last[dim].p1 - p.p1) + + (this.last[dim].size - p.size) * [0, 0, .5, 1, 1][i]; + if (ss.fixedControls == 'fit') { + if (p.pos + p.size + p.p1 + p.p2 > p.scroll + p.clientSize - p.marginMax) + p.pos = p.scroll + p.clientSize - p.size - p.marginMin - p.marginMax - p.p1 - p.p2; + if (p.pos < p.scroll + p.marginMin) p.pos = p.scroll + p.marginMin; + } + } + } + } + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + + +setObjContainerSize : function(parent, auto) { + var c = hs.getElementByClass(parent, 'DIV', 'highslide-body'); + if (/(iframe|swf)/.test(this.objectType)) { + if (this.objectWidth) c.style.width = this.objectWidth +'px'; + if (this.objectHeight) c.style.height = this.objectHeight +'px'; + } +}, + +writeExtendedContent : function () { + if (this.hasExtendedContent) return; + var exp = this; + this.body = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (this.objectType == 'iframe') { + this.showLoading(); + var ruler = hs.clearing.cloneNode(1); + this.body.appendChild(ruler); + this.newWidth = this.innerContent.offsetWidth; + if (!this.objectWidth) this.objectWidth = ruler.offsetWidth; + var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight, + h = this.objectHeight || hs.page.height - hDiff - hs.marginTop - hs.marginBottom, + onload = this.objectLoadTime == 'before' ? + ' onload="if (hs.expanders['+ this.key +']) hs.expanders['+ this.key +'].contentLoaded()" ' : ''; + this.body.innerHTML += ''; + this.ruler = this.body.getElementsByTagName('div')[0]; + this.iframe = this.body.getElementsByTagName('iframe')[0]; + + if (this.objectLoadTime == 'after') this.correctIframeSize(); + + } + if (this.objectType == 'swf') { + this.body.id = this.body.id || 'hs-flash-id-' + this.key; + var a = this.swfOptions; + if (!a.params) a.params = {}; + if (typeof a.params.wmode == 'undefined') a.params.wmode = 'transparent'; + if (swfobject) swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight, + a.version || '7', a.expressInstallSwfurl, a.flashvars, a.params, a.attributes); + } + this.hasExtendedContent = true; +}, +htmlGetSize : function() { + if (this.iframe && !this.objectHeight) { // loadtime before + this.iframe.style.height = this.body.style.height = this.getIframePageHeight() +'px'; + } + this.innerContent.appendChild(hs.clearing); + if (!this.x.full) this.x.full = this.innerContent.offsetWidth; + this.y.full = this.innerContent.offsetHeight; + this.innerContent.removeChild(hs.clearing); + if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug + this.newHeight = parseInt(this.innerContent.currentStyle.height); + } + hs.setStyles( this.wrapper, { position: 'absolute', padding: '0'}); + hs.setStyles( this.content, { width: this.x.t +'px', height: this.y.t +'px'}); + +}, + +getIframePageHeight : function() { + var h; + try { + var doc = this.iDoc = this.iframe.contentDocument || this.iframe.contentWindow.document; + var clearing = doc.createElement('div'); + clearing.style.clear = 'both'; + doc.body.appendChild(clearing); + h = clearing.offsetTop; + if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop) + + parseInt(doc.body.currentStyle.marginBottom) - 1; + } catch (e) { // other domain + h = 300; + } + return h; +}, +correctIframeSize : function () { + var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth; + hs.discardElement(this.ruler); + if (wDiff < 0) wDiff = 0; + + var hDiff = this.innerContent.offsetHeight - this.iframe.offsetHeight; + if (this.iDoc && !this.objectHeight && !this.height && this.y.size == this.y.full) try { + this.iDoc.body.style.overflow = 'hidden'; + } catch (e) {} + hs.setStyles(this.iframe, { + width: Math.abs(this.x.size - wDiff) +'px', + height: Math.abs(this.y.size - hDiff) +'px' + }); + hs.setStyles(this.body, { + width: this.iframe.style.width, + height: this.iframe.style.height + }); + + this.scrollingContent = this.iframe; + this.scrollerDiv = this.scrollingContent; + +}, +htmlSizeOperations : function () { + + this.setObjContainerSize(this.innerContent); + + + if (this.objectType == 'swf' && this.objectLoadTime == 'before') this.writeExtendedContent(); + + // handle minimum size + if (this.x.size < this.x.full && !this.allowWidthReduction) this.x.size = this.x.full; + if (this.y.size < this.y.full && !this.allowHeightReduction) this.y.size = this.y.full; + this.scrollerDiv = this.innerContent; + hs.setStyles(this.mediumContent, { + position: 'relative', + width: this.x.size +'px' + }); + hs.setStyles(this.innerContent, { + border: 'none', + width: 'auto', + height: 'auto' + }); + var node = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (node && !/(iframe|swf)/.test(this.objectType)) { + var cNode = node; // wrap to get true size + node = hs.createElement(cNode.nodeName, null, {overflow: 'hidden'}, null, true); + cNode.parentNode.insertBefore(node, cNode); + node.appendChild(hs.clearing); // IE6 + node.appendChild(cNode); + + var wDiff = this.innerContent.offsetWidth - node.offsetWidth; + var hDiff = this.innerContent.offsetHeight - node.offsetHeight; + node.removeChild(hs.clearing); + + var kdeBugCorr = hs.safari || navigator.vendor == 'KDE' ? 1 : 0; // KDE repainting bug + hs.setStyles(node, { + width: (this.x.size - wDiff - kdeBugCorr) +'px', + height: (this.y.size - hDiff) +'px', + overflow: 'auto', + position: 'relative' + } + ); + if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight) { + node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px'; + } + this.scrollingContent = node; + this.scrollerDiv = this.scrollingContent; + } + if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize(); + if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) this.scrollerDiv = this.content; + + if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) { + this.x.size += 17; // room for scrollbars + } + if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) { + setTimeout("try { hs.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}", + hs.expandDuration); + } +}, + +getImageMapAreaCorrection : function(area) { + var c = area.coords.split(','); + for (var i = 0; i < c.length; i++) c[i] = parseInt(c[i]); + + if (area.shape.toLowerCase() == 'circle') { + this.x.tpos += c[0] - c[2]; + this.y.tpos += c[1] - c[2]; + this.x.t = this.y.t = 2 * c[2]; + } else { + var maxX, maxY, minX = maxX = c[0], minY = maxY = c[1]; + for (var i = 0; i < c.length; i++) { + if (i % 2 == 0) { + minX = Math.min(minX, c[i]); + maxX = Math.max(maxX, c[i]); + } else { + minY = Math.min(minY, c[i]); + maxY = Math.max(maxY, c[i]); + } + } + this.x.tpos += minX; + this.x.t = maxX - minX; + this.y.tpos += minY; + this.y.t = maxY - minY; + } +}, +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + if (tgt && tgt.match(/ /)) { + tgtArr = tgt.split(' '); + tgt = tgtArr[0]; + } + if (tgt && hs.$(tgt)) { + p.pos = hs.getPosition(hs.$(tgt))[dim]; + if (tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/)) + p.pos += parseInt(tgtArr[1]); + if (p.size < p.minSize) p.size = p.minSize; + + } else if (p.justify == 'auto' || p.justify == 'center') { + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + if (p.justify == 'center') + p.pos = Math.round(p.scroll + (p.clientSize + p.marginMin - p.marginMax - p.get('wsize')) / 2); + else + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + } else if (p.justify == 'max') { + p.pos = Math.floor(p.pos - p.size + p.t); + } + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox && (this.isImage || this.allowHeightReduction)) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +reflow : function () { + if (this.scrollerDiv) { + var h = /iframe/i.test(this.scrollerDiv.tagName) ? (this.getIframePageHeight() + 1) +'px' : 'auto'; + if (this.body) this.body.style.height = h; + this.scrollerDiv.style.height = h; + this.y.setSize(this.innerContent.offsetHeight); + } +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + hs.fireEvent(this, 'onBeforeExpand'); + if (this.slideshow && this.slideshow.thumbstrip) this.slideshow.thumbstrip.selectThumb(); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + // transition + var trans = this.transitions, + other = up ? (this.last ? this.last.a : null) : hs.upcoming, + t = (trans[1] && other + && hs.getParam(other, 'transitions')[1] == trans[1]) ? + trans[1] : trans[0]; + + if (this[t] && t != 'expand') { + this[t](up, to); + return; + } + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy( + (this.isHtml && this.preserveContent)); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (up && this.isHtml) { + hs.setStyles(this.wrapper, { + left: (x.tpos - x.cb + x.tb) +'px', + top: (y.tpos - y.cb + y.tb) +'px' + }); + } + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + if (exp.isHtml) { + if (args.prop == 'left') + exp.mediumContent.style.left = (x.pos - val) +'px'; + if (args.prop == 'top') + exp.mediumContent.style.top = (y.pos - val) +'px'; + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + if (this.isHtml) this.innerContent.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + +fade : function(up, to) { + this.outlineWhileAnimating = false; + var exp = this, t = up ? hs.expandDuration : 0; + + if (up) { + hs.animate(this.wrapper, to.wrapper, 0); + hs.setStyles(this.wrapper, { opacity: 0, visibility: 'visible' }); + hs.animate(this.content, to.content, 0); + this.content.style.visibility = 'visible'; + + hs.animate(this.wrapper, { opacity: 1 }, t, null, + function() { exp.afterExpand(); }); + } + + if (this.outline) { + this.outline.table.style.zIndex = this.wrapper.style.zIndex; + var dir = up || -1, + offset = this.outline.offset, + startOff = up ? 3 : offset, + endOff = up? offset : 3; + for (var i = startOff; dir * i <= dir * endOff; i += dir, t += 25) { + (function() { + var o = up ? endOff - i : startOff - i; + setTimeout(function() { + exp.outline.setPosition(0, o, 1); + }, t); + })(); + } + } + + + if (up) {}//setTimeout(function() { exp.afterExpand(); }, t+50); + else { + setTimeout( function() { + if (exp.outline) exp.outline.destroy(exp.preserveContent); + + exp.destroyOverlays(); + + hs.animate( exp.wrapper, { opacity: 0 }, hs.restoreDuration, null, function(){ + exp.afterClose(); + }); + }, t); + } +}, +crossfade : function (up, to, from) { + if (!up) return; + var exp = this, + last = this.last, + x = this.x, + y = this.y, + lastX = last.x, + lastY = last.y, + wrapper = this.wrapper, + content = this.content, + overlayBox = this.overlayBox; + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + hs.setStyles(content, { + width: (x.imgSize || x.size) +'px', + height: (y.imgSize || y.size) +'px' + }); + if (overlayBox) overlayBox.style.overflow = 'visible'; + this.outline = last.outline; + if (this.outline) this.outline.exp = exp; + last.outline = null; + var fadeBox = hs.createElement('div', { + className: 'highslide-'+ this.contentType + }, { + position: 'absolute', + zIndex: 4, + overflow: 'hidden', + display: 'none' + } + ); + var names = { oldImg: last, newImg: this }; + for (var n in names) { + this[n] = names[n].content.cloneNode(1); + hs.setStyles(this[n], { + position: 'absolute', + border: 0, + visibility: 'visible' + }); + fadeBox.appendChild(this[n]); + } + wrapper.appendChild(fadeBox); + if (this.isHtml) hs.setStyles(this.mediumContent, { + left: 0, + top: 0 + }); + if (overlayBox) { + overlayBox.className = ''; + wrapper.appendChild(overlayBox); + } + fadeBox.style.display = ''; + last.content.style.display = 'none'; + + + if (hs.safari && hs.uaVersion < 525) { + this.wrapper.style.visibility = 'visible'; + } + hs.animate(wrapper, { + width: x.size + }, { + duration: hs.transitionDuration, + step: function(val, args) { + var pos = args.pos, + invPos = 1 - pos; + var prop, + size = {}, + props = ['pos', 'size', 'p1', 'p2']; + for (var n in props) { + prop = props[n]; + size['x'+ prop] = Math.round(invPos * lastX[prop] + pos * x[prop]); + size['y'+ prop] = Math.round(invPos * lastY[prop] + pos * y[prop]); + size.ximgSize = Math.round( + invPos * (lastX.imgSize || lastX.size) + pos * (x.imgSize || x.size)); + size.ximgPad = Math.round(invPos * lastX.get('imgPad') + pos * x.get('imgPad')); + size.yimgSize = Math.round( + invPos * (lastY.imgSize || lastY.size) + pos * (y.imgSize || y.size)); + size.yimgPad = Math.round(invPos * lastY.get('imgPad') + pos * y.get('imgPad')); + } + if (exp.outline) exp.outline.setPosition({ + x: size.xpos, + y: size.ypos, + w: size.xsize + size.xp1 + size.xp2 + 2 * x.cb, + h: size.ysize + size.yp1 + size.yp2 + 2 * y.cb + }); + last.wrapper.style.clip = 'rect(' + + (size.ypos - lastY.pos)+'px, ' + + (size.xsize + size.xp1 + size.xp2 + size.xpos + 2 * lastX.cb - lastX.pos) +'px, ' + + (size.ysize + size.yp1 + size.yp2 + size.ypos + 2 * lastY.cb - lastY.pos) +'px, ' + + (size.xpos - lastX.pos)+'px)'; + + hs.setStyles(content, { + top: (size.yp1 + y.get('imgPad')) +'px', + left: (size.xp1 + x.get('imgPad')) +'px', + marginTop: (y.pos - size.ypos) +'px', + marginLeft: (x.pos - size.xpos) +'px' + }); + hs.setStyles(wrapper, { + top: size.ypos +'px', + left: size.xpos +'px', + width: (size.xp1 + size.xp2 + size.xsize + 2 * x.cb)+ 'px', + height: (size.yp1 + size.yp2 + size.ysize + 2 * y.cb) + 'px' + }); + hs.setStyles(fadeBox, { + width: (size.ximgSize || size.xsize) + 'px', + height: (size.yimgSize || size.ysize) +'px', + left: (size.xp1 + size.ximgPad) +'px', + top: (size.yp1 + size.yimgPad) +'px', + visibility: 'visible' + }); + + hs.setStyles(exp.oldImg, { + top: (lastY.pos - size.ypos + lastY.p1 - size.yp1 + lastY.get('imgPad') - size.yimgPad)+'px', + left: (lastX.pos - size.xpos + lastX.p1 - size.xp1 + lastX.get('imgPad') - size.ximgPad)+'px' + }); + + hs.setStyles(exp.newImg, { + opacity: pos, + top: (y.pos - size.ypos + y.p1 - size.yp1 + y.get('imgPad') - size.yimgPad) +'px', + left: (x.pos - size.xpos + x.p1 - size.xp1 + x.get('imgPad') - size.ximgPad) +'px' + }); + if (overlayBox) hs.setStyles(overlayBox, { + width: size.xsize + 'px', + height: size.ysize +'px', + left: (size.xp1 + x.cb) +'px', + top: (size.yp1 + y.cb) +'px' + }); + }, + complete: function () { + wrapper.style.visibility = content.style.visibility = 'visible'; + content.style.display = 'block'; + hs.discardElement(fadeBox); + exp.afterExpand(); + last.afterClose(); + exp.last = null; + } + + }); +}, +reuseOverlay : function(o, el) { + if (!this.last) return false; + for (var i = 0; i < this.last.overlays.length; i++) { + var oDiv = hs.$('hsId'+ this.last.overlays[i]); + if (oDiv && oDiv.hsId == o.hsId) { + this.genOverlayBox(); + oDiv.reuse = this.key; + hs.push(this.overlays, this.last.overlays[i]); + return true; + } + } + return false; +}, + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + + if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent(); + if (this.iframe) { + try { + var exp = this, + doc = this.iframe.contentDocument || this.iframe.contentWindow.document; + hs.addEventListener(doc, 'mousedown', function () { + if (hs.focusKey != exp.key) exp.focus(); + }); + } catch(e) {} + if (hs.ie && typeof this.isClosing != 'boolean') // first open + this.iframe.style.width = (this.objectWidth - 1) +'px'; // hasLayout + } + if (this.dimmingOpacity) hs.dim(this); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + hs.fireEvent(this, 'onAfterExpand'); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + if (as && !as[current + op] && this.slideshow && this.slideshow.repeat) { + if (op == 1) return as[0]; + else if (op == -1) return as[as.length-1]; + } + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +getNumber : function() { + if (this[this.numberPosition]) { + var arr = hs.anchors.groups[this.slideshowGroup || 'none']; + if (arr) { + var s = hs.lang.number.replace('%1', this.getAnchorIndex() + 1).replace('%2', arr.length); + this[this.numberPosition].innerHTML = + '
    '+ s +'
    '+ this[this.numberPosition].innerHTML; + } + } +}, +initSlideshow : function() { + if (!this.last) { + for (var i = 0; i < hs.slideshows.length; i++) { + var ss = hs.slideshows[i], sg = ss.slideshowGroup; + if (typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup) + this.slideshow = new hs.Slideshow(this.key, ss); + } + } else { + this.slideshow = this.last.slideshow; + } + var ss = this.slideshow; + if (!ss) return; + var key = ss.expKey = this.key; + + ss.checkFirstAndLast(); + ss.disable('full-expand'); + if (ss.controls) { + this.createOverlay(hs.extend(ss.overlayOptions || {}, { + overlayId: ss.controls, + hsId: 'controls', + zIndex: 5 + })); + } + if (ss.thumbstrip) ss.thumbstrip.add(this); + if (!this.last && this.autoplay) ss.play(true); + if (ss.autoplay) { + ss.autoplay = setTimeout(function() { + hs.next(key); + }, (ss.interval || 500)); + } +}, + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (hs.upcoming == this.a) hs.upcoming = null; + hs.undim(this.key); + if (this.loading) hs.loading.style.left = '-9999px'; + hs.fireEvent(this, 'onHideLoading'); +}, + +writeCredits : function () { + if (this.credits) return; + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left', + hsId: 'credits' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (type == 'caption' && !hs.fireEvent(this, 'onBeforeGetCaption')) return; + else if (type == 'heading' && !hs.fireEvent(this, 'onBeforeGetHeading')) return; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + if (!this[type] && !s && this.numberPosition == type) s = '\n'; + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + if (!this.dimmingOpacity) { // hide all if dimming + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + } + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + if (blurExp.isImage) { + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + hs.fireEvent(blurExp, 'onBlur'); + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + if (this.isImage) { + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + } + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + hs.fireEvent(this, 'onFocus'); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = this.isHtml ? e.height + e.dY : w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + if (this.transitions[1] == 'crossfade' && hs.upcoming) { + hs.getExpander(hs.upcoming).cancelLoading(); + hs.upcoming = null; + } + if (!hs.fireEvent(this, 'onBeforeClose')) return; + this.isClosing = true; + if (this.slideshow && !hs.upcoming) this.slideshow.pause(); + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + if (this.isHtml) this.htmlPrepareClose(); + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +htmlPrepareClose : function() { + if (hs.geckoMac) { // bad redraws + if (!hs.mask) hs.mask = hs.createElement('div', null, + { position: 'absolute' }, hs.container); + hs.setStyles(hs.mask, { width: this.x.size +'px', height: this.y.size +'px', + left: this.x.pos +'px', top: this.y.pos +'px', display: 'block' }); + } + if (this.objectType == 'swf') try { hs.$(this.body.id).StopPlay(); } catch (e) {} + + if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject(); + if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent) + this.scrollerDiv.style.overflow = 'hidden'; +}, + +destroyObject : function () { + if (hs.ie && this.iframe) + try { this.iframe.contentWindow.document.body.innerHTML = ''; } catch (e) {} + if (this.objectType == 'swf') swfobject.removeSWF(this.body.id); + this.body.innerHTML = ''; +}, + +sleep : function() { + if (this.outline) this.outline.table.style.display = 'none'; + this.releaseMask = null; + this.wrapper.style.display = 'none'; + this.isExpanded = false; + hs.push(hs.sleeping, this); +}, + +awake : function() {try { + + hs.expanders[this.key] = this; + + if (!hs.allowMultipleInstances &&hs.focusKey != this.key) { + try { hs.expanders[hs.focusKey].close(); } catch (e){} + } + + var z = hs.zIndexCounter++, stl = { display: '', zIndex: z }; + hs.setStyles (this.wrapper, stl); + this.isClosing = false; + + var o = this.outline || 0; + if (o) { + if (!this.outlineWhileAnimating) stl.visibility = 'hidden'; + hs.setStyles (o.table, stl); + } + if (this.slideshow) { + this.initSlideshow(); + } + + this.show(); +} catch (e) {} + + +}, + +createOverlay : function (o) { + var el = o.overlayId, + relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position)); + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + if (!hs.fireEvent(this, 'onCreateOverlay', { overlay: el })) return; + el.style.display = 'block'; + o.hsId = o.hsId || o.overlayId; + if (this.transitions[1] == 'crossfade' && this.reuseOverlay(o, el)) return; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + }, + relToVP ? hs.viewport :this.overlayBox, + true + ); + if (relToVP) overlay.hsKey = this.key; + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + relToVP = (overlay.relativeTo == 'viewport'), + offX = overlay.offsetX, + offY = overlay.offsetY; + if (relToVP) { + hs.viewport.style.display = 'block'; + overlay.hsKey = this.key; + if (overlay.offsetWidth > overlay.parentNode.offsetWidth) + overlay.style.width = '100%'; + } else + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + var parOff = overlay.parentNode.offsetHeight; + overlay.style.height = 'auto'; + if (relToVP && overlay.offsetHeight > parOff) + overlay.style.height = hs.ieLt7 ? parOff +'px' : '100%'; + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + this.getNumber(); + if (this.caption) hs.fireEvent(this, 'onAfterGetCaption'); + if (this.heading) hs.fireEvent(this, 'onAfterGetHeading'); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + if (this.isImage || (this.isHtml && o.useOnHtml)) + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + if (this.slideshow) { + var c = this.slideshow.controls; + if (c && hs.getExpander(c) == this) c.parentNode.removeChild(c); + } + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (o && o.parentNode == hs.viewport && hs.getExpander(o) == this) hs.discardElement(o); + } + if (this.isHtml && this.preserveContent) { + this.overlayBox.style.top = '-9999px'; + hs.container.appendChild(this.overlayBox); + } else + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + if (this.slideshow && this.slideshow.controls) { + this.slideshow.enable('full-expand'); + return; + } + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + if (!hs.fireEvent(this, 'onCreateFullExpand')) return; + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (!hs.fireEvent(this, 'onDoFullExpand')) return; + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + + if (this.isHtml && this.preserveContent + && this.transitions[1] != 'crossfade') { + this.sleep(); + } else { + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + } + if (hs.mask) hs.mask.style.display = 'none'; + this.destroyOverlays(); + if (!hs.viewport.childNodes.length) hs.viewport.style.display = 'none'; + + if (this.dimmingOpacity) hs.undim(this.key); + hs.fireEvent(this, 'onAfterClose'); + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; + + +// hs.Ajax object prototype +hs.Ajax = function (a, content, pre) { + this.a = a; + this.content = content; + this.pre = pre; +}; + +hs.Ajax.prototype = { +run : function () { + var xhr; + if (!this.src) this.src = hs.getSrc(this.a); + if (this.src.match('#')) { + var arr = this.src.split('#'); + this.src = arr[0]; + this.id = arr[1]; + } + if (hs.cachedGets[this.src]) { + this.cachedGet = hs.cachedGets[this.src]; + if (this.id) this.getElementContent(); + else this.loadHTML(); + return; + } + try { xhr = new XMLHttpRequest(); } + catch (e) { + try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } + catch (e) { + try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } + catch (e) { this.onError(); } + } + } + var pThis = this; + xhr.onreadystatechange = function() { + if(pThis.xhr.readyState == 4) { + if (pThis.id) pThis.getElementContent(); + else pThis.loadHTML(); + } + }; + var src = this.src; + this.xhr = xhr; + if (hs.forceAjaxReload) + src = src.replace(/$/, (/\?/.test(src) ? '&' : '?') +'dummy='+ (new Date()).getTime()); + xhr.open('GET', src, true); + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.send(null); +}, + +getElementContent : function() { + hs.init(); + var attribs = window.opera || hs.ie6SSL ? { src: 'about:blank' } : null; + + this.iframe = hs.createElement('iframe', attribs, + { position: 'absolute', top: '-9999px' }, hs.container); + + this.loadHTML(); +}, + +loadHTML : function() { + var s = this.cachedGet || this.xhr.responseText, + regBody; + if (this.pre) hs.cachedGets[this.src] = s; + if (!hs.ie || hs.uaVersion >= 5.5) { + s = s.replace(new RegExp(']*>', 'gi'), '') + .replace(new RegExp(']*>.*?', 'gi'), ''); + if (this.iframe) { + var doc = this.iframe.contentDocument; + if (!doc && this.iframe.contentWindow) doc = this.iframe.contentWindow.document; + if (!doc) { // Opera + var pThis = this; + setTimeout(function() { pThis.loadHTML(); }, 25); + return; + } + doc.open(); + doc.write(s); + doc.close(); + try { s = doc.getElementById(this.id).innerHTML; } catch (e) { + try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera + } + hs.discardElement(this.iframe); + } else { + regBody = /(]*>|<\/body>)/ig; + if (regBody.test(s)) s = s.split(regBody)[hs.ieLt9 ? 1 : 2]; + + } + } + hs.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s; + this.onLoad(); + for (var x in this) this[x] = null; +} +}; + + +hs.Slideshow = function (expKey, options) { + if (hs.dynamicallyUpdateAnchors !== false) hs.updateAnchors(); + this.expKey = expKey; + for (var x in options) this[x] = options[x]; + if (this.useControls) this.getControls(); + if (this.thumbstrip) this.thumbstrip = hs.Thumbstrip(this); +}; +hs.Slideshow.prototype = { +getControls: function() { + this.controls = hs.createElement('div', { innerHTML: hs.replaceLang(hs.skin.controls) }, + null, hs.container); + + var buttons = ['play', 'pause', 'previous', 'next', 'move', 'full-expand', 'close']; + this.btn = {}; + var pThis = this; + for (var i = 0; i < buttons.length; i++) { + this.btn[buttons[i]] = hs.getElementByClass(this.controls, 'li', 'highslide-'+ buttons[i]); + this.enable(buttons[i]); + } + this.btn.pause.style.display = 'none'; + //this.disable('full-expand'); +}, +checkFirstAndLast: function() { + if (this.repeat || !this.controls) return; + var exp = hs.expanders[this.expKey], + cur = exp.getAnchorIndex(), + re = /disabled$/; + if (cur == 0) + this.disable('previous'); + else if (re.test(this.btn.previous.getElementsByTagName('a')[0].className)) + this.enable('previous'); + if (cur + 1 == hs.anchors.groups[exp.slideshowGroup || 'none'].length) { + this.disable('next'); + this.disable('play'); + } else if (re.test(this.btn.next.getElementsByTagName('a')[0].className)) { + this.enable('next'); + this.enable('play'); + } +}, +enable: function(btn) { + if (!this.btn) return; + var sls = this, a = this.btn[btn].getElementsByTagName('a')[0], re = /disabled$/; + a.onclick = function() { + sls[btn](); + return false; + }; + if (re.test(a.className)) a.className = a.className.replace(re, ''); +}, +disable: function(btn) { + if (!this.btn) return; + var a = this.btn[btn].getElementsByTagName('a')[0]; + a.onclick = function() { return false; }; + if (!/disabled$/.test(a.className)) a.className += ' disabled'; +}, +hitSpace: function() { + if (this.autoplay) this.pause(); + else this.play(); +}, +play: function(wait) { + if (this.btn) { + this.btn.play.style.display = 'none'; + this.btn.pause.style.display = ''; + } + + this.autoplay = true; + if (!wait) hs.next(this.expKey); +}, +pause: function() { + if (this.btn) { + this.btn.pause.style.display = 'none'; + this.btn.play.style.display = ''; + } + + clearTimeout(this.autoplay); + this.autoplay = null; +}, +previous: function() { + this.pause(); + hs.previous(this.btn.previous); +}, +next: function() { + this.pause(); + hs.next(this.btn.next); +}, +move: function() {}, +'full-expand': function() { + hs.getExpander().doFullExpand(); +}, +close: function() { + hs.close(this.btn.close); +} +}; +hs.Thumbstrip = function(slideshow) { + function add (exp) { + hs.extend(options || {}, { + overlayId: dom, + hsId: 'thumbstrip', + className: 'highslide-thumbstrip-'+ mode +'-overlay ' + (options.className || '') + }); + if (hs.ieLt7) options.fade = 0; + exp.createOverlay(options); + hs.setStyles(dom.parentNode, { overflow: 'hidden' }); + }; + + function scroll (delta) { + selectThumb(undefined, Math.round(delta * dom[isX ? 'offsetWidth' : 'offsetHeight'] * 0.7)); + }; + + function selectThumb (i, scrollBy) { + if (i === undefined) for (var j = 0; j < group.length; j++) { + if (group[j] == hs.expanders[slideshow.expKey].a) { + i = j; + break; + } + } + if (i === undefined) return; + var as = dom.getElementsByTagName('a'), + active = as[i], + cell = active.parentNode, + left = isX ? 'Left' : 'Top', + right = isX ? 'Right' : 'Bottom', + width = isX ? 'Width' : 'Height', + offsetLeft = 'offset' + left, + offsetWidth = 'offset' + width, + overlayWidth = div.parentNode.parentNode[offsetWidth], + minTblPos = overlayWidth - table[offsetWidth], + curTblPos = parseInt(table.style[isX ? 'left' : 'top']) || 0, + tblPos = curTblPos, + mgnRight = 20; + if (scrollBy !== undefined) { + tblPos = curTblPos - scrollBy; + + if (minTblPos > 0) minTblPos = 0; + if (tblPos > 0) tblPos = 0; + if (tblPos < minTblPos) tblPos = minTblPos; + + + } else { + for (var j = 0; j < as.length; j++) as[j].className = ''; + active.className = 'highslide-active-anchor'; + var activeLeft = i > 0 ? as[i - 1].parentNode[offsetLeft] : cell[offsetLeft], + activeRight = cell[offsetLeft] + cell[offsetWidth] + + (as[i + 1] ? as[i + 1].parentNode[offsetWidth] : 0); + if (activeRight > overlayWidth - curTblPos) tblPos = overlayWidth - activeRight; + else if (activeLeft < -curTblPos) tblPos = -activeLeft; + } + var markerPos = cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / 2 + tblPos; + hs.animate(table, isX ? { left: tblPos } : { top: tblPos }, null, 'easeOutQuad'); + hs.animate(marker, isX ? { left: markerPos } : { top: markerPos }, null, 'easeOutQuad'); + scrollUp.style.display = tblPos < 0 ? 'block' : 'none'; + scrollDown.style.display = (tblPos > minTblPos) ? 'block' : 'none'; + + }; + + + // initialize + var group = hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'], + options = slideshow.thumbstrip, + mode = options.mode || 'horizontal', + floatMode = (mode == 'float'), + tree = floatMode ? ['div', 'ul', 'li', 'span'] : ['table', 'tbody', 'tr', 'td'], + isX = (mode == 'horizontal'), + dom = hs.createElement('div', { + className: 'highslide-thumbstrip highslide-thumbstrip-'+ mode, + innerHTML: + '
    '+ + '<'+ tree[0] +'><'+ tree[1] +'>
    '+ + '
    '+ + '
    '+ + '
    ' + }, { + display: 'none' + }, hs.container), + domCh = dom.childNodes, + div = domCh[0], + scrollUp = domCh[1], + scrollDown = domCh[2], + marker = domCh[3], + table = div.firstChild, + tbody = dom.getElementsByTagName(tree[1])[0], + tr; + for (var i = 0; i < group.length; i++) { + if (i == 0 || !isX) tr = hs.createElement(tree[2], null, null, tbody); + (function(){ + var a = group[i], + cell = hs.createElement(tree[3], null, null, tr), + pI = i; + hs.createElement('a', { + href: a.href, + title: a.title, + onclick: function() { + if (/highslide-active-anchor/.test(this.className)) return false; + hs.getExpander(this).focus(); + return hs.transit(a); + }, + innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(a) : a.innerHTML + }, null, cell); + })(); + } + if (!floatMode) { + scrollUp.onclick = function () { scroll(-1); }; + scrollDown.onclick = function() { scroll(1); }; + hs.addEventListener(tbody, document.onmousewheel !== undefined ? + 'mousewheel' : 'DOMMouseScroll', function(e) { + var delta = 0; + e = e || window.event; + if (e.wheelDelta) { + delta = e.wheelDelta/120; + if (hs.opera) delta = -delta; + } else if (e.detail) { + delta = -e.detail/3; + } + if (delta) scroll(-delta * 0.2); + if (e.preventDefault) e.preventDefault(); + e.returnValue = false; + }); + } + + return { + add: add, + selectThumb: selectThumb + } +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor || hs.dimmingOpacity) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + addRule ('.highslide-viewport-size', + hs.ie && (hs.uaVersion < 7 || backCompat) ? + 'position: absolute; '+ + 'left:'+ fix('scrollLeft') + + 'top:'+ fix('scrollTop') + + 'width:'+ fix('clientWidth') + + 'height:'+ fix('clientHeight') : + 'position: fixed; width: 100%; height: 100%; left: 0; top: 0'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); + if (hs.viewport) for (var i = 0; i < hs.viewport.childNodes.length; i++) { + var node = hs.viewport.childNodes[i], + exp = hs.getExpander(node); + exp.positionOverlay(node); + if (node.hsId == 'thumbstrip') exp.slideshow.thumbstrip.selectThumb(); + } +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); +hs.addEventListener(document, 'ready', hs.setClickEvents); +hs.addEventListener(window, 'load', hs.preloadImages); +hs.addEventListener(window, 'load', hs.preloadAjax); +} diff --git a/html/highslide/highslide-full.min.js b/html/highslide/highslide-full.min.js new file mode 100644 index 000000000..a20c40630 --- /dev/null +++ b/html/highslide/highslide-full.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +events +unobtrusive +imagemap +slideshow +positioning +transitions +viewport +thumbstrip +inline +ajax +iframe +flash + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",previousText:"Previous",nextText:"Next",moveText:"Move",closeText:"Close",closeTitle:"Close (esc)",resizeTitle:"Resize",playText:"Play",playTitle:"Play slideshow (spacebar)",pauseText:"Pause",pauseTitle:"Pause slideshow (spacebar)",previousTitle:"Previous (arrow left)",nextTitle:"Next (arrow right)",moveTitle:"Move",fullExpandText:"1:1",number:"Image %1 of %2",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a","area"],transitions:[],transitionDuration:250,dimmingOpacity:0,dimmingDuration:50,allowWidthReduction:false,allowHeightReduction:true,preserveContent:true,objectLoadTime:"before",cacheAjax:true,anchor:"auto",align:"auto",targetX:null,targetY:null,dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",skin:{controls:'',contentWrapper:'
    '},preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","anchor","align","targetX","targetY","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","autoplay","numberPosition","transitions","dimmingOpacity","width","height","contentId","allowWidthReduction","allowHeightReduction","preserveContent","maincontentId","maincontentText","maincontentEval","objectType","cacheAjax","objectWidth","objectHeight","objectLoadTime","swfOptions","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},swfOptions:{flashvars:{},params:{},attributes:{}},timers:[],slideshows:[],pendingOutlines:{},sleeping:[],preloadTheseAjax:[],cacheBindings:[],cachedGets:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(c){if(/area/i.test(c.tagName)){var e=document.getElementsByTagName("img");for(var b=0;bc){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},dim:function(d){if(!hs.dimmer){a=true;hs.dimmer=hs.createElement("div",{className:"highslide-dimming highslide-viewport-size",owner:"",onclick:function(){if(hs.fireEvent(hs,"onDimmerClick")){hs.close()}}},{visibility:"visible",opacity:0},hs.container,true);if(/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)){var b=document.body;function c(){hs.setStyles(hs.dimmer,{width:b.scrollWidth+"px",height:b.scrollHeight+"px"})}c();hs.addEventListener(window,"resize",c)}}hs.dimmer.style.display="";var a=hs.dimmer.owner=="";hs.dimmer.owner+="|"+d.key;if(a){if(hs.geckoMac&&hs.dimmingGeckoFix){hs.setStyles(hs.dimmer,{background:"url("+hs.graphicsDir+"geckodimmer.png)",opacity:1})}else{hs.animate(hs.dimmer,{opacity:d.dimmingOpacity},hs.dimmingDuration)}}},undim:function(a){if(!hs.dimmer){return}if(typeof a!="undefined"){hs.dimmer.owner=hs.dimmer.owner.replace("|"+a,"")}if((typeof a!="undefined"&&hs.dimmer.owner!="")||(hs.upcoming&&hs.getParam(hs.upcoming,"dimmingOpacity"))){return}if(hs.geckoMac&&hs.dimmingGeckoFix){hs.dimmer.style.display="none"}else{hs.animate(hs.dimmer,{opacity:0},hs.dimmingDuration,null,function(){hs.dimmer.style.display="none"})}},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{if(!a||d.transitions[1]!="crossfade"){d.close()}}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}if(!hs.fireEvent(hs,"onKeyDown",a)){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:c=2;break;case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){if(c!=2){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler)}if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{if(c==2){if(b.slideshow){b.slideshow.hitSpace()}}else{if(b.slideshow){b.slideshow.pause()}hs.previousOrNext(b.key,c)}}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},addSlideshow:function(b){var d=b.slideshowGroup;if(typeof d=="object"){for(var c=0;c1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}else{if(/highslide-html/.test(b.className)&&hs.focusKey!=f.key){f.focus();f.doShowHide("hidden")}}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){if(hs.fireEvent(f,"onImageClick")){f.close()}}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}if(hs.dragArgs.exp.releaseMask){hs.dragArgs.exp.releaseMask.style.display="none"}if(c){hs.fireEvent(hs.dragArgs.exp,"onDrop",hs.dragArgs)}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;if(d.iframe){if(!d.releaseMask){d.releaseMask=hs.createElement("div",null,{position:"absolute",width:d.x.size+"px",height:d.y.size+"px",left:d.x.cb+"px",top:d.y.cb+"px",zIndex:4,background:(hs.ieLt9?"white":"none"),opacity:0.01},d.wrapper,true)}if(d.releaseMask.style.display=="none"){d.releaseMask.style.display=""}}b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(!hs.fireEvent(d,"onDrag",b)){return false}if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}hs.fireEvent(d,b?"onMouseOver":"onMouseOut",c);for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"loadingPosXfade":return this.pos+this.cb+this.p1+(this.size-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";if(a.align=="center"){this.justify="center"}else{if(new RegExp(this.lt).test(a.anchor)){this.justify=null}else{if(new RegExp(this.rb).test(a.anchor)){this.justify="max"}}}this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.target=a["target"+this.dim.toUpperCase()];this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var f=this.exp;if(f.isImage&&(f.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);f.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}f.content.style[this.wh]=a+"px";f.wrapper.style[this.wh]=this.get("wsize")+"px";if(f.outline){f.outline.setPosition()}if(f.releaseMask){f.releaseMask.style[this.wh]=a+"px"}if(this.dim=="y"&&f.iDoc&&f.body.style.height!="auto"){try{f.iDoc.body.style.overflow="auto"}catch(b){}}if(f.isHtml){var c=f.scrollerDiv;if(this.sizeDiff===undefined){this.sizeDiff=f.innerContent["offset"+this.ucwh]-c["offset"+this.ucwh]}c.style[this.wh]=(this.size-this.sizeDiff)+"px";if(this.dim=="x"){f.mediumContent.style.width="auto"}if(f.body){f.body.style[this.wh]="auto"}}if(this.dim=="x"&&f.overlayBox){f.sizeOverlayBox(true)}if(this.dim=="x"&&f.slideshow&&f.isImage){if(a==this.full){f.slideshow.disable("full-expand")}else{f.slideshow.enable("full-expand")}}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isHtml=(l=="html");this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];this.last=hs.last;hs.last=null;hs.init();var m=this.key=hs.expanders.length;for(var g=0;ga.scroll+a.clientSize-a.marginMax){a.pos=a.scroll+a.clientSize-a.size-a.marginMin-a.marginMax-a.p1-a.p2}if(a.pos(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(d){this.error(d)}},setObjContainerSize:function(a,d){var b=hs.getElementByClass(a,"DIV","highslide-body");if(/(iframe|swf)/.test(this.objectType)){if(this.objectWidth){b.style.width=this.objectWidth+"px"}if(this.objectHeight){b.style.height=this.objectHeight+"px"}}},writeExtendedContent:function(){if(this.hasExtendedContent){return}var f=this;this.body=hs.getElementByClass(this.innerContent,"DIV","highslide-body");if(this.objectType=="iframe"){this.showLoading();var g=hs.clearing.cloneNode(1);this.body.appendChild(g);this.newWidth=this.innerContent.offsetWidth;if(!this.objectWidth){this.objectWidth=g.offsetWidth}var c=this.innerContent.offsetHeight-this.body.offsetHeight,d=this.objectHeight||hs.page.height-c-hs.marginTop-hs.marginBottom,e=this.objectLoadTime=="before"?' onload="if (hs.expanders['+this.key+"]) hs.expanders["+this.key+'].contentLoaded()" ':"";this.body.innerHTML+='';this.ruler=this.body.getElementsByTagName("div")[0];this.iframe=this.body.getElementsByTagName("iframe")[0];if(this.objectLoadTime=="after"){this.correctIframeSize()}}if(this.objectType=="swf"){this.body.id=this.body.id||"hs-flash-id-"+this.key;var b=this.swfOptions;if(!b.params){b.params={}}if(typeof b.params.wmode=="undefined"){b.params.wmode="transparent"}if(swfobject){swfobject.embedSWF(this.src,this.body.id,this.objectWidth,this.objectHeight,b.version||"7",b.expressInstallSwfurl,b.flashvars,b.params,b.attributes)}}this.hasExtendedContent=true},htmlGetSize:function(){if(this.iframe&&!this.objectHeight){this.iframe.style.height=this.body.style.height=this.getIframePageHeight()+"px"}this.innerContent.appendChild(hs.clearing);if(!this.x.full){this.x.full=this.innerContent.offsetWidth}this.y.full=this.innerContent.offsetHeight;this.innerContent.removeChild(hs.clearing);if(hs.ie&&this.newHeight>parseInt(this.innerContent.currentStyle.height)){this.newHeight=parseInt(this.innerContent.currentStyle.height)}hs.setStyles(this.wrapper,{position:"absolute",padding:"0"});hs.setStyles(this.content,{width:this.x.t+"px",height:this.y.t+"px"})},getIframePageHeight:function(){var a;try{var d=this.iDoc=this.iframe.contentDocument||this.iframe.contentWindow.document;var b=d.createElement("div");b.style.clear="both";d.body.appendChild(b);a=b.offsetTop;if(hs.ie){a+=parseInt(d.body.currentStyle.marginTop)+parseInt(d.body.currentStyle.marginBottom)-1}}catch(c){a=300}return a},correctIframeSize:function(){var b=this.innerContent.offsetWidth-this.ruler.offsetWidth;hs.discardElement(this.ruler);if(b<0){b=0}var a=this.innerContent.offsetHeight-this.iframe.offsetHeight;if(this.iDoc&&!this.objectHeight&&!this.height&&this.y.size==this.y.full){try{this.iDoc.body.style.overflow="hidden"}catch(c){}}hs.setStyles(this.iframe,{width:Math.abs(this.x.size-b)+"px",height:Math.abs(this.y.size-a)+"px"});hs.setStyles(this.body,{width:this.iframe.style.width,height:this.iframe.style.height});this.scrollingContent=this.iframe;this.scrollerDiv=this.scrollingContent},htmlSizeOperations:function(){this.setObjContainerSize(this.innerContent);if(this.objectType=="swf"&&this.objectLoadTime=="before"){this.writeExtendedContent()}if(this.x.sizee.offsetHeight){e.style.width=(parseInt(e.style.width)+d)+"px"}this.scrollingContent=e;this.scrollerDiv=this.scrollingContent}if(this.iframe&&this.objectLoadTime=="before"){this.correctIframeSize()}if(!this.scrollingContent&&this.y.sizethis.scrollerDiv.parentNode.offsetHeight){setTimeout("try { hs.expanders["+this.key+"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",hs.expandDuration)}},getImageMapAreaCorrection:function(d){var h=d.coords.split(",");for(var b=0;bf.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},reflow:function(){if(this.scrollerDiv){var a=/iframe/i.test(this.scrollerDiv.tagName)?(this.getIframePageHeight()+1)+"px":"auto";if(this.body){this.body.style.height=a}this.scrollerDiv.style.height=a;this.y.setSize(this.innerContent.offsetHeight)}},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");hs.fireEvent(this,"onBeforeExpand");if(this.slideshow&&this.slideshow.thumbstrip){this.slideshow.thumbstrip.selectThumb()}this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(d,i,b){var k=this.transitions,e=d?(this.last?this.last.a:null):hs.upcoming,j=(k[1]&&e&&hs.getParam(e,"transitions")[1]==k[1])?k[1]:k[0];if(this[j]&&j!="expand"){this[j](d,i);return}if(this.outline&&!this.outlineWhileAnimating){if(d){this.outline.setPosition()}else{this.outline.destroy((this.isHtml&&this.preserveContent))}}if(!d){this.destroyOverlays()}var c=this,h=c.x,g=c.y,f=this.easing;if(!d){f=this.easingClose||f}var a=d?function(){if(c.outline){c.outline.table.style.visibility="visible"}setTimeout(function(){c.afterExpand()},50)}:function(){c.afterClose()};if(d){hs.setStyles(this.wrapper,{width:h.t+"px",height:g.t+"px"})}if(d&&this.isHtml){hs.setStyles(this.wrapper,{left:(h.tpos-h.cb+h.tb)+"px",top:(g.tpos-g.cb+g.tb)+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:d?0:1});hs.extend(i.wrapper,{opacity:d})}hs.animate(this.wrapper,i.wrapper,{duration:b,easing:f,step:function(n,l){if(c.outline&&c.outlineWhileAnimating&&l.prop=="top"){var m=d?l.pos:1-l.pos;var o={w:h.t+(h.get("wsize")-h.t)*m,h:g.t+(g.get("wsize")-g.t)*m,x:h.tpos+(h.pos-h.tpos)*m,y:g.tpos+(g.pos-g.tpos)*m};c.outline.setPosition(o,0,1)}if(c.isHtml){if(l.prop=="left"){c.mediumContent.style.left=(h.pos-n)+"px"}if(l.prop=="top"){c.mediumContent.style.top=(g.pos-n)+"px"}}}});hs.animate(this.content,i.content,b,f,a);if(d){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";if(this.isHtml){this.innerContent.style.visibility="visible"}this.a.className+=" highslide-active-anchor"}},fade:function(f,h){this.outlineWhileAnimating=false;var c=this,j=f?hs.expandDuration:0;if(f){hs.animate(this.wrapper,h.wrapper,0);hs.setStyles(this.wrapper,{opacity:0,visibility:"visible"});hs.animate(this.content,h.content,0);this.content.style.visibility="visible";hs.animate(this.wrapper,{opacity:1},j,null,function(){c.afterExpand()})}if(this.outline){this.outline.table.style.zIndex=this.wrapper.style.zIndex;var b=f||-1,d=this.outline.offset,a=f?3:d,g=f?d:3;for(var e=a;b*e<=b*g;e+=b,j+=25){(function(){var i=f?g-e:a-e;setTimeout(function(){c.outline.setPosition(0,i,1)},j)})()}}if(f){}else{setTimeout(function(){if(c.outline){c.outline.destroy(c.preserveContent)}c.destroyOverlays();hs.animate(c.wrapper,{opacity:0},hs.restoreDuration,null,function(){c.afterClose()})},j)}},crossfade:function(g,m,o){if(!g){return}var f=this,p=this.last,l=this.x,k=this.y,d=p.x,b=p.y,a=this.wrapper,i=this.content,c=this.overlayBox;hs.removeEventListener(document,"mousemove",hs.dragHandler);hs.setStyles(i,{width:(l.imgSize||l.size)+"px",height:(k.imgSize||k.size)+"px"});if(c){c.style.overflow="visible"}this.outline=p.outline;if(this.outline){this.outline.exp=f}p.outline=null;var h=hs.createElement("div",{className:"highslide-"+this.contentType},{position:"absolute",zIndex:4,overflow:"hidden",display:"none"});var j={oldImg:p,newImg:this};for(var e in j){this[e]=j[e].content.cloneNode(1);hs.setStyles(this[e],{position:"absolute",border:0,visibility:"visible"});h.appendChild(this[e])}a.appendChild(h);if(this.isHtml){hs.setStyles(this.mediumContent,{left:0,top:0})}if(c){c.className="";a.appendChild(c)}h.style.display="";p.content.style.display="none";if(hs.safari&&hs.uaVersion<525){this.wrapper.style.visibility="visible"}hs.animate(a,{width:l.size},{duration:hs.transitionDuration,step:function(u,r){var x=r.pos,q=1-x;var w,s={},t=["pos","size","p1","p2"];for(var v in t){w=t[v];s["x"+w]=Math.round(q*d[w]+x*l[w]);s["y"+w]=Math.round(q*b[w]+x*k[w]);s.ximgSize=Math.round(q*(d.imgSize||d.size)+x*(l.imgSize||l.size));s.ximgPad=Math.round(q*d.get("imgPad")+x*l.get("imgPad"));s.yimgSize=Math.round(q*(b.imgSize||b.size)+x*(k.imgSize||k.size));s.yimgPad=Math.round(q*b.get("imgPad")+x*k.get("imgPad"))}if(f.outline){f.outline.setPosition({x:s.xpos,y:s.ypos,w:s.xsize+s.xp1+s.xp2+2*l.cb,h:s.ysize+s.yp1+s.yp2+2*k.cb})}p.wrapper.style.clip="rect("+(s.ypos-b.pos)+"px, "+(s.xsize+s.xp1+s.xp2+s.xpos+2*d.cb-d.pos)+"px, "+(s.ysize+s.yp1+s.yp2+s.ypos+2*b.cb-b.pos)+"px, "+(s.xpos-d.pos)+"px)";hs.setStyles(i,{top:(s.yp1+k.get("imgPad"))+"px",left:(s.xp1+l.get("imgPad"))+"px",marginTop:(k.pos-s.ypos)+"px",marginLeft:(l.pos-s.xpos)+"px"});hs.setStyles(a,{top:s.ypos+"px",left:s.xpos+"px",width:(s.xp1+s.xp2+s.xsize+2*l.cb)+"px",height:(s.yp1+s.yp2+s.ysize+2*k.cb)+"px"});hs.setStyles(h,{width:(s.ximgSize||s.xsize)+"px",height:(s.yimgSize||s.ysize)+"px",left:(s.xp1+s.ximgPad)+"px",top:(s.yp1+s.yimgPad)+"px",visibility:"visible"});hs.setStyles(f.oldImg,{top:(b.pos-s.ypos+b.p1-s.yp1+b.get("imgPad")-s.yimgPad)+"px",left:(d.pos-s.xpos+d.p1-s.xp1+d.get("imgPad")-s.ximgPad)+"px"});hs.setStyles(f.newImg,{opacity:x,top:(k.pos-s.ypos+k.p1-s.yp1+k.get("imgPad")-s.yimgPad)+"px",left:(l.pos-s.xpos+l.p1-s.xp1+l.get("imgPad")-s.ximgPad)+"px"});if(c){hs.setStyles(c,{width:s.xsize+"px",height:s.ysize+"px",left:(s.xp1+l.cb)+"px",top:(s.yp1+k.cb)+"px"})}},complete:function(){a.style.visibility=i.style.visibility="visible";i.style.display="block";hs.discardElement(h);f.afterExpand();p.afterClose();f.last=null}})},reuseOverlay:function(d,c){if(!this.last){return false}for(var b=0;b'+b+"
    "+this[this.numberPosition].innerHTML}}},initSlideshow:function(){if(!this.last){for(var c=0;cthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"))}var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;ae.parentNode.offsetWidth){e.style.width="100%"}}else{if(e.parentNode!=this.overlayBox){this.overlayBox.appendChild(e)}}if(/left$/.test(f)){e.style.left=b+"px"}if(/center$/.test(f)){hs.setStyles(e,{left:"50%",marginLeft:(b-Math.round(e.offsetWidth/2))+"px"})}if(/right$/.test(f)){e.style.right=-b+"px"}if(/^leftpanel$/.test(f)){hs.setStyles(e,{right:"100%",marginRight:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p1=e.offsetWidth}else{if(/^rightpanel$/.test(f)){hs.setStyles(e,{left:"100%",marginLeft:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p2=e.offsetWidth}}var d=e.parentNode.offsetHeight;e.style.height="auto";if(c&&e.offsetHeight>d){e.style.height=hs.ieLt7?d+"px":"100%"}if(/^top/.test(f)){e.style.top=a+"px"}if(/^middle/.test(f)){hs.setStyles(e,{top:"50%",marginTop:(a-Math.round(e.offsetHeight/2))+"px"})}if(/^bottom/.test(f)){e.style.bottom=-a+"px"}if(/^above$/.test(f)){hs.setStyles(e,{left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",bottom:"100%",marginBottom:this.y.cb+"px",width:"auto"});this.y.p1=e.offsetHeight}else{if(/^below$/.test(f)){hs.setStyles(e,{position:"relative",left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",top:"100%",marginTop:this.y.cb+"px",width:"auto"});this.y.p2=e.offsetHeight;e.style.position="absolute"}}},getOverlays:function(){this.getInline(["heading","caption"],true);this.getNumber();if(this.caption){hs.fireEvent(this,"onAfterGetCaption")}if(this.heading){hs.fireEvent(this,"onAfterGetHeading")}if(this.heading&&this.dragByHeading){this.heading.className+=" highslide-move"}if(hs.showCredits){this.writeCredits()}for(var a=0;a=5.5){c=c.replace(new RegExp("]*>","gi"),"").replace(new RegExp("]*>.*?<\/script>","gi"),"");if(this.iframe){var f=this.iframe.contentDocument;if(!f&&this.iframe.contentWindow){f=this.iframe.contentWindow.document}if(!f){var g=this;setTimeout(function(){g.loadHTML()},25);return}f.open();f.write(c);f.close();try{c=f.getElementById(this.id).innerHTML}catch(d){try{c=this.iframe.document.getElementById(this.id).innerHTML}catch(d){}}hs.discardElement(this.iframe)}else{b=/(]*>|<\/body>)/ig;if(b.test(c)){c=c.split(b)[hs.ieLt9?1:2]}}}hs.getElementByClass(this.content,"DIV","highslide-body").innerHTML=c;this.onLoad();for(var a in this){this[a]=null}}};hs.Slideshow=function(c,b){if(hs.dynamicallyUpdateAnchors!==false){hs.updateAnchors()}this.expKey=c;for(var a in b){this[a]=b[a]}if(this.useControls){this.getControls()}if(this.thumbstrip){this.thumbstrip=hs.Thumbstrip(this)}};hs.Slideshow.prototype={getControls:function(){this.controls=hs.createElement("div",{innerHTML:hs.replaceLang(hs.skin.controls)},null,hs.container);var b=["play","pause","previous","next","move","full-expand","close"];this.btn={};var c=this;for(var a=0;a0){F=0}if(C>0){C=0}if(C0?G[L-1].parentNode[B]:w[B],A=w[B]+w[H]+(G[L+1]?G[L+1].parentNode[H]:0);if(A>x-v){C=x-A}else{if(J<-v){C=-J}}}var E=w[B]+(w[H]-g[H])/2+C;hs.animate(s,h?{left:C}:{top:C},null,"easeOutQuad");hs.animate(g,h?{left:E}:{top:E},null,"easeOutQuad");l.style.display=C<0?"block":"none";t.style.display=(C>F)?"block":"none"}var j=hs.anchors.groups[hs.expanders[k.expKey].slideshowGroup||"none"],f=k.thumbstrip,m=f.mode||"horizontal",u=(m=="float"),o=u?["div","ul","li","span"]:["table","tbody","tr","td"],h=(m=="horizontal"),r=hs.createElement("div",{className:"highslide-thumbstrip highslide-thumbstrip-"+m,innerHTML:'
    <'+o[0]+"><"+o[1]+">
    '},{display:"none"},hs.container),e=r.childNodes,n=e[0],l=e[1],t=e[2],g=e[3],s=n.firstChild,a=r.getElementsByTagName(o[1])[0],b;for(var q=0;q35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){A m={18:{97:\'aK\',aZ:\'fw...\',aY:\'8G 2i fP\',bD:\'8G 2i g0 2i eR\',9Z:\'eZ 2i fc D (f)\',cq:\'f8 by an ao\',cr:\'f4 2i f6 an ao fg\',8Y:\'aq\',8W:\'ay\',8Z:\'ag\',92:\'am\',90:\'am (eD)\',b0:\'eY\',ab:\'al\',au:\'al 1p (aj)\',ac:\'ah\',ad:\'ah 1p (aj)\',8s:\'aq (8w 1b)\',8X:\'ay (8w 3m)\',8V:\'ag\',ae:\'1:1\',3G:\'g7 %1 fz %2\',9W:\'8G 2i 26 2R, dC aA dE 2i 3u. dF 8w dB O 1D aA 3a.\'},5c:\'K/dw/\',7R:\'dv.5q\',6h:\'dx.5q\',6W:5Z,9A:5Z,4W:15,9B:15,4d:15,6L:15,4F:cY,be:0.75,9l:M,9f:5,3Y:2,ei:3,5S:1j,bz:\'4Q 3m\',bA:1,br:M,ct:\'em://K.eh/\',cs:\'ec\',aS:M,9w:[\'a\',\'5v\'],3q:[],cE:5Z,4b:0,87:50,6J:1j,6X:M,4D:M,3U:\'60\',7W:M,46:\'1M\',9n:\'1M\',b1:I,aC:I,a7:M,4s:aw,6k:aw,5Y:M,1Z:\'ev-dV\',8i:{2X:\'

    <6t>\'+\'<1H 1W="K-3a">\'+\'\'+\'<1C>{m.18.8Y}\'+\'\'+\'<1H 1W="K-3L">\'+\'\'+\'<1C>{m.18.ab}\'+\'\'+\'<1H 1W="K-3p">\'+\'\'+\'<1C>{m.18.ac}\'+\'\'+\'<1H 1W="K-1D">\'+\'\'+\'<1C>{m.18.8W}\'+\'\'+\'<1H 1W="K-3u">\'+\'\'+\'<1C>{m.18.8Z}\'+\'\'+\'<1H 1W="K-1a-2F">\'+\'\'+\'<1C>{m.18.ae}\'+\'\'+\'<1H 1W="K-26">\'+\'\'+\'<1C>{m.18.92}\'+\'\'+\'

    \',bd:\'

    <6t>\'+\'<1H 1W="K-3a">\'+\'\'+\'<1C>{m.18.8Y}\'+\'\'+\'<1H 1W="K-1D">\'+\'\'+\'<1C>{m.18.8W}\'+\'\'+\'<1H 1W="K-3u">\'+\'\'+\'<1C>{m.18.8Z}\'+\'\'+\'<1H 1W="K-26">\'+\'\'+\'<1C>{m.18.92}\'+\'\'+\'

    \'+\'

    \'+\'

    \'+\'<1C 1W="K-3O" 24="{m.18.b0}"><1C>\'+\'

    \'},64:[],a1:M,16:[],a4:[\'5Y\',\'3t\',\'46\',\'9n\',\'b1\',\'aC\',\'1Z\',\'3Y\',\'dU\',\'dM\',\'dL\',\'b3\',\'dK\',\'dI\',\'dJ\',\'b2\',\'cv\',\'a7\',\'42\',\'6l\',\'3q\',\'4b\',\'L\',\'N\',\'88\',\'6J\',\'6X\',\'4D\',\'dN\',\'dO\',\'dT\',\'2I\',\'7W\',\'4j\',\'4x\',\'3U\',\'8e\',\'a9\',\'4s\',\'6k\',\'6M\',\'9i\',\'aX\',\'2N\',\'2Q\',\'cF\',\'cD\',\'1e\'],1T:[],61:0,8g:{x:[\'bM\',\'1b\',\'4X\',\'3m\',\'bC\'],y:[\'5N\',\'Y\',\'9a\',\'4Q\',\'7E\']},7B:{},b2:{},b3:{},8e:{aG:{},29:{},aF:{}},4m:[],6u:[],4n:{},4R:[],7q:[],5a:[],7k:{},8c:{},7l:[],2t:/dP\\/4\\.0/.11(4A.6d)?8:8J((4A.6d.5G().3b(/.+(?:b9|dQ|e9|2h)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),2h:(W.6q&&!1S.3z),4M:/ea/.11(4A.6d),6y:/eu.+b9:1\\.[0-8].+es/.11(4A.6d),$:C(1v){q(1v)E W.9Q(1v)},2o:C(2a,3j){2a[2a.V]=3j},1d:C(ba,4l,49,6c,bh){A el=W.1d(ba);q(4l)m.3A(el,4l);q(bh)m.R(el,{94:0,8H:\'1E\',9D:0});q(49)m.R(el,49);q(6c)6c.1X(el);E el},3A:C(el,4l){O(A x 2Y 4l)el[x]=4l[x];E el},R:C(el,49){O(A x 2Y 49){q(m.3R&&x==\'1z\'){q(49[x]>0.99)el.G.ew(\'5Q\');J el.G.5Q=\'bg(1z=\'+(49[x]*2w)+\')\'}J el.G[x]=49[x]}},2z:C(el,1f,3C){A 4T,51,4w;q(1F 3C!=\'7j\'||3C===I){A 2H=c5;3C={4h:2H[2],2Q:2H[3],76:2H[4]}}q(1F 3C.4h!=\'3G\')3C.4h=5Z;3C.2Q=1h[3C.2Q]||1h.bj;3C.7g=m.3A({},1f);O(A 2Z 2Y 1f){A e=1J m.fx(el,3C,2Z);4T=8J(m.8I(el,2Z))||0;51=8J(1f[2Z]);4w=2Z!=\'1z\'?\'F\':\'\';e.3E(4T,51,4w)}},8I:C(el,1f){q(el.G[1f]){E el.G[1f]}J q(W.8L){E W.8L.cK(el,I).co(1f)}J{q(1f==\'1z\')1f=\'5Q\';A 3j=el.5y[1f.2k(/\\-(\\w)/g,C(a,b){E b.bi()})];q(1f==\'5Q\')3j=3j.2k(/bg\\(1z=([0-9]+)\\)/,C(a,b){E b/2w});E 3j===\'\'?1:3j}},7S:C(){A d=W,w=1S,63=d.7a&&d.7a!=\'8v\'?d.5h:d.19,3R=m.2h&&(m.2t<9||1F bf==\'1L\');A L=3R?63.8F:(d.5h.8F||7c.ep),N=3R?63.c4:7c.eo;m.4g={L:L,N:N,5O:3R?63.5O:bf,5R:3R?63.5R:ed};E m.4g},6K:C(el){q(/5v/i.11(el.3J)){A 7N=W.2C(\'1N\');O(A i=0;i<7N.V;i++){A u=7N[i].eb;q(u&&u.2k(/^.*?#/,\'\')==el.23.2Z){el=7N[i];5m}}}A p={x:el.4V,y:el.8O};5g(el.bb){el=el.bb;p.x+=el.4V;p.y+=el.8O;q(el!=W.19&&el!=W.5h){p.x-=el.5O;p.y-=el.5R}}E p},2F:C(a,29,3E,T){q(!a)a=m.1d(\'a\',I,{1o:\'1E\'},m.2b);q(1F a.6a==\'C\')E 29;q(T==\'3D\'){O(A i=0;i8d){8d=1B;7n=i}}}q(7n==-1)m.3d=-1;J 16[7n].3M()},43:C(a,6b){a.6a=a.2p;A p=a.6a?a.6a():I;a.6a=I;E(p&&1F p[6b]!=\'1L\')?p[6b]:(1F m[6b]!=\'1L\'?m[6b]:I)},7s:C(a){A 1e=m.43(a,\'1e\');q(1e)E 1e;E a.21},4J:C(1v){A 1P=m.$(1v),4q=m.8c[1v],a={};q(!1P&&!4q)E I;q(!4q){4q=1P.5J(M);4q.1v=\'\';m.8c[1v]=4q;E 1P}J{E 4q.5J(M)}},3B:C(d){q(d)m.9y.1X(d);m.9y.2d=\'\'},1u:C(B){q(!m.2v){84=M;m.2v=m.1d(\'P\',{1c:\'K-dc K-2x-D\',5r:\'\',2p:C(){q(m.1A(m,\'d3\'))m.26()}},{1n:\'1Y\',1z:0},m.2b,M);q(/(df|d2|cU|cT)/.11(4A.6d)){A 19=W.19;C 81(){m.R(m.2v,{L:19.cR+\'F\',N:19.cV+\'F\'})}81();m.2j(1S,\'3O\',81)}}m.2v.G.1o=\'\';A 84=m.2v.5r==\'\';m.2v.5r+=\'|\'+B.Q;q(84){q(m.6y&&m.aR)m.R(m.2v,{9t:\'7T(\'+m.5c+\'d0.ak)\',1z:1});J m.2z(m.2v,{1z:B.4b},m.87)}},9x:C(Q){q(!m.2v)E;q(1F Q!=\'1L\')m.2v.5r=m.2v.5r.2k(\'|\'+Q,\'\');q((1F Q!=\'1L\'&&m.2v.5r!=\'\')||(m.2q&&m.43(m.2q,\'4b\')))E;q(m.6y&&m.aR)m.2v.G.1o=\'1E\';J m.2z(m.2v,{1z:0},m.87,I,C(){m.2v.G.1o=\'1E\'})},8N:C(7z,B){A 1i=B||m.2G();B=1i;q(m.2q)E 1j;J m.1i=1i;m.4z(W,1S.3z?\'6U\':\'71\',m.68);1t{m.2q=7z;7z.2p()}1y(e){m.1i=m.2q=I}1t{q(!7z||B.3q[1]!=\'4e\')B.26()}1y(e){}E 1j},7O:C(el,2n){A B=m.2G(el);q(B)E m.8N(B.7V(2n),B);J E 1j},3a:C(el){E m.7O(el,-1)},1D:C(el){E m.7O(el,1)},68:C(e){q(!e)e=1S.2u;q(!e.2L)e.2L=e.9k;q(1F e.2L.9j!=\'1L\')E M;q(!m.1A(m,\'dz\',e))E M;A B=m.2G();A 2n=I;b6(e.dy){2c 70:q(B)B.7r();E M;2c 32:2n=2;5m;2c 34:2c 39:2c 40:2n=1;5m;2c 8:2c 33:2c 37:2c 38:2n=-1;5m;2c 27:2c 13:2n=0}q(2n!==I){q(2n!=2)m.4z(W,1S.3z?\'6U\':\'71\',m.68);q(!m.aS)E M;q(e.5n)e.5n();J e.c0=1j;q(B){q(2n==0){B.26()}J q(2n==2){q(B.1p)B.1p.cl()}J{q(B.1p)B.1p.3p();m.7O(B.Q,2n)}E 1j}}E M},du:C(14){m.2o(m.1T,m.3A(14,{22:\'22\'+m.61++}))},dt:C(1r){A 3c=1r.2N;q(1F 3c==\'7j\'){O(A i=0;i<3c.V;i++){A o={};O(A x 2Y 1r)o[x]=1r[x];o.2N=3c[i];m.2o(m.6u,o)}}J{m.2o(m.6u,1r)}},9U:C(7y,7h){A el,2m=/^K-U-([0-9]+)$/;el=7y;5g(el.23){q(el.6R!==1L)E el.6R;q(el.1v&&2m.11(el.1v))E el.1v.2k(2m,"$1");el=el.23}q(!7h){el=7y;5g(el.23){q(el.3J&&m.77(el)){O(A Q=0;Q1)E M;q(!e.2L)e.2L=e.9k;A el=e.2L;5g(el.23&&!(/K-(2R|3u|3D|3O)/.11(el.1c))){el=el.23}A B=m.2G(el);q(B&&(B.62||!B.55))E M;q(B&&e.T==\'8y\'){q(e.2L.9j)E M;A 3b=el.1c.3b(/K-(2R|3u|3O)/);q(3b){m.2y={B:B,T:3b[1],1b:B.x.H,L:B.x.D,Y:B.y.H,N:B.y.D,aV:e.7A,aO:e.7F};m.2j(W,\'7D\',m.6H);q(e.5n)e.5n();q(/K-(2R|3D)-9J/.11(B.S.1c)){B.3M();m.a6=M}E 1j}J q(/K-3D/.11(el.1c)&&m.3d!=B.Q){B.3M();B.59(\'1q\')}}J q(e.T==\'c3\'){m.4z(W,\'7D\',m.6H);q(m.2y){q(m.54&&m.2y.T==\'2R\')m.2y.B.S.G.4L=m.54;A 3I=m.2y.3I;q(!3I&&!m.a6&&!/(3u|3O)/.11(m.2y.T)){q(m.1A(B,\'dr\'))B.26()}J q(3I||(!3I&&m.aU)){m.2y.B.59(\'1q\')}q(m.2y.B.3W)m.2y.B.3W.G.1o=\'1E\';q(3I)m.1A(m.2y.B,\'do\',m.2y);m.a6=1j;m.2y=I}J q(/K-2R-9J/.11(el.1c)){el.G.4L=m.54}}E 1j},6H:C(e){q(!m.2y)E M;q(!e)e=1S.2u;A a=m.2y,B=a.B;q(B.1k){q(!B.3W)B.3W=m.1d(\'P\',I,{1l:\'2l\',L:B.x.D+\'F\',N:B.y.D+\'F\',1b:B.x.cb+\'F\',Y:B.y.cb+\'F\',1B:4,9t:(m.3R?\'eB\':\'1E\'),1z:0.eU},B.U,M);q(B.3W.G.1o==\'1E\')B.3W.G.1o=\'\'}a.dX=e.7A-a.aV;a.dY=e.7F-a.aO;A 9g=1h.fG(1h.aE(a.dX,2)+1h.aE(a.dY,2));q(!a.3I)a.3I=(a.T!=\'2R\'&&9g>0)||(9g>(m.fK||5));q(a.3I&&e.7A>5&&e.7F>5){q(!m.1A(B,\'fN\',a))E 1j;q(a.T==\'3O\')B.3O(a);J{B.9m(a.1b+a.dX,a.Y+a.dY);q(a.T==\'2R\')B.S.G.4L=\'3u\'}}E 1j},aP:C(e){1t{q(!e)e=1S.2u;A 66=/fM/i.11(e.T);q(!e.2L)e.2L=e.9k;q(!e.7P)e.7P=66?e.fE:e.fD;A B=m.2G(e.2L);q(!B.55)E;q(!B||!e.7P||m.2G(e.7P,M)==B||m.2y)E;m.1A(B,66?\'ft\':\'fr\',e);O(A i=0;i=k.1r.4h+k.9c){k.4o=k.51;k.H=k.96=1;k.82();k.1r.7g[k.1f]=M;A 9s=M;O(A i 2Y k.1r.7g)q(k.1r.7g[i]!==M)9s=1j;q(9s){q(k.1r.76)k.1r.76.ax(k.30)}E 1j}J{A n=t-k.9c;k.96=n/k.1r.4h;k.H=k.1r.2Q(n,0,1,k.1r.4h);k.4o=k.4T+((k.51-k.4T)*k.H);k.82()}E M}};m.3A(m.fx,{3P:{1z:C(fx){m.R(fx.30,{1z:fx.4o})},ap:C(fx){1t{q(fx.30.G&&fx.30.G[fx.1f]!=I)fx.30.G[fx.1f]=fx.4o+fx.4w;J fx.30[fx.1f]=fx.4o}1y(e){}}}});m.6r=C(1Z,3F){k.3F=3F;k.1Z=1Z;A v=m.2t,47;k.9G=m.2h&&m.2t<7;q(!1Z){q(3F)3F();E}m.7m();k.2g=m.1d(\'2g\',{eJ:0},{1n:\'1q\',1l:\'2l\',eN:\'eM\',L:0},m.2b,M);A 4G=m.1d(\'4G\',I,I,k.2g,1);k.2J=[];O(A i=0;i<=8;i++){q(i%3==0)47=m.1d(\'47\',I,{N:\'1M\'},4G,M);k.2J[i]=m.1d(\'2J\',I,I,47,M);A G=i!=4?{eL:0,eK:0}:{1l:\'4y\'};m.R(k.2J[i],G)}k.2J[4].1c=1Z+\' K-1g\';k.ai()};m.6r.5w={ai:C(){A 1e=m.5c+(m.f1||"fi/")+k.1Z+".ak";A ar=m.4M&&m.2t<73?m.2b:I;k.3V=m.1d(\'1N\',I,{1l:\'2l\',Y:\'-4v\'},ar,M);A 3v=k;k.3V.4N=C(){3v.az()};k.3V.1e=1e},az:C(){A o=k.1w=k.3V.L/4,H=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1u={N:(2*o)+\'F\',L:(2*o)+\'F\'};O(A i=0;i<=8;i++){q(H[i]){q(k.9G){A w=(i==1||i==7)?\'2w%\':k.3V.L+\'F\';A P=m.1d(\'P\',I,{L:\'2w%\',N:\'2w%\',1l:\'4y\',2e:\'1q\'},k.2J[i],M);m.1d(\'P\',I,{5Q:"fo:fn.bv.fm(fl=fe, 1e=\'"+k.3V.1e+"\')",1l:\'2l\',L:w,N:k.3V.N+\'F\',1b:(H[i][0]*o)+\'F\',Y:(H[i][1]*o)+\'F\'},P,M)}J{m.R(k.2J[i],{9t:\'7T(\'+k.3V.1e+\') \'+(H[i][0]*o)+\'F \'+(H[i][1]*o)+\'F\'})}q(1S.3z&&(i==3||i==5))m.1d(\'P\',I,1u,k.2J[i],M);m.R(k.2J[i],1u)}}k.3V=I;q(m.4n[k.1Z])m.4n[k.1Z].5U();m.4n[k.1Z]=k;q(k.3F)k.3F()},4C:C(H,1w,aB,4i,2Q){A B=k.B,5X=B.U.G,1w=1w||0,H=H||{x:B.x.H+1w,y:B.y.H+1w,w:B.x.Z(\'2f\')-2*1w,h:B.y.Z(\'2f\')-2*1w};q(aB)k.2g.G.1n=(H.h>=4*k.1w)?\'1Y\':\'1q\';m.R(k.2g,{1b:(H.x-k.1w)+\'F\',Y:(H.y-k.1w)+\'F\',L:(H.w+2*k.1w)+\'F\'});H.w-=2*k.1w;H.h-=2*k.1w;m.R(k.2J[4],{L:H.w>=0?H.w+\'F\':0,N:H.h>=0?H.h+\'F\':0});q(k.9G)k.2J[3].G.N=k.2J[5].G.N=k.2J[4].G.N},5U:C(bk){q(bk)k.2g.G.1n=\'1q\';J m.3B(k.2g)}};m.6A=C(B,1u){k.B=B;k.1u=1u;k.3l=1u==\'x\'?\'bY\':\'bW\';k.3k=k.3l.5G();k.6m=1u==\'x\'?\'cj\':\'c8\';k.6Y=k.6m.5G();k.9L=1u==\'x\'?\'c7\':\'bX\';k.b5=k.9L.5G();k.1G=k.36=0};m.6A.5w={Z:C(Q){b6(Q){2c\'9T\':E k.1K+k.3s+(k.t-m.2r[\'1w\'+k.3l])/2;2c\'9v\':E k.H+k.cb+k.1G+(k.D-m.2r[\'1w\'+k.3l])/2;2c\'2f\':E k.D+2*k.cb+k.1G+k.36;2c\'5e\':E k.4K-k.3o-k.4S;2c\'8D\':E k.Z(\'5e\')-2*k.cb-k.1G-k.36;2c\'6e\':E k.H-(k.B.1g?k.B.1g.1w:0);2c\'9R\':E k.Z(\'2f\')+(k.B.1g?2*k.B.1g.1w:0);2c\'2K\':E k.1V?1h.3e((k.D-k.1V)/2):0}},8a:C(){k.cb=(k.B.S[\'1w\'+k.3l]-k.t)/2;k.4S=m[\'9D\'+k.9L]},9M:C(){k.t=k.B.el[k.3k]?3H(k.B.el[k.3k]):k.B.el[\'1w\'+k.3l];k.1K=k.B.1K[k.1u];k.3s=(k.B.el[\'1w\'+k.3l]-k.t)/2;q(k.1K==0||k.1K==-1){k.1K=(m.4g[k.3k]/2)+m.4g[\'28\'+k.6m]}},8h:C(){A B=k.B;k.2T=\'1M\';q(B.9n==\'4X\')k.2T=\'4X\';J q(1J 4Y(k.6Y).11(B.46))k.2T=I;J q(1J 4Y(k.b5).11(B.46))k.2T=\'4t\';k.H=k.1K-k.cb+k.3s;q(k.9i&&k.1u==\'x\')B.6M=1h.31(B.6M||k.1a,B.9i*k.1a/B.y.1a);k.D=1h.31(k.1a,B[\'4t\'+k.3l]||k.1a);k.2U=B.5Y?1h.31(B[\'31\'+k.3l],k.1a):k.1a;q(B.2E&&B.3t){k.D=B[k.3k];k.1V=k.1a}q(k.1u==\'x\'&&m.5S)k.2U=B.4s;k.2L=B[\'2L\'+k.1u.bi()];k.3o=m[\'9D\'+k.6m];k.28=m.4g[\'28\'+k.6m];k.4K=m.4g[k.3k]},72:C(i){A B=k.B;q(B.2E&&(B.3t||m.5S)){k.1V=i;k.D=1h.4t(k.D,k.1V);B.S.G[k.6Y]=k.Z(\'2K\')+\'F\'}J k.D=i;B.S.G[k.3k]=i+\'F\';B.U.G[k.3k]=k.Z(\'2f\')+\'F\';q(B.1g)B.1g.4C();q(B.3W)B.3W.G[k.3k]=i+\'F\';q(k.1u==\'y\'&&B.5C&&B.19.G.N!=\'1M\')1t{B.5C.19.G.2e=\'1M\'}1y(e){}q(B.2A){A d=B.2s;q(k.9e===1L)k.9e=B.1s[\'1w\'+k.3l]-d[\'1w\'+k.3l];d.G[k.3k]=(k.D-k.9e)+\'F\';q(k.1u==\'x\')B.4c.G.L=\'1M\';q(B.19)B.19.G[k.3k]=\'1M\'}q(k.1u==\'x\'&&B.1x)B.57(M);q(k.1u==\'x\'&&B.1p&&B.2E){q(i==k.1a)B.1p.5d(\'1a-2F\');J B.1p.4u(\'1a-2F\')}},aa:C(i){k.H=i;k.B.U.G[k.6Y]=i+\'F\';q(k.B.1g)k.B.1g.4C()}};m.5A=C(a,29,3E,35){q(W.bS&&m.2h&&!m.9F){m.2j(W,\'41\',C(){1J m.5A(a,29,3E,35)});E}k.a=a;k.3E=3E;k.35=35||\'2R\';k.2A=(35==\'3D\');k.2E=!k.2A;m.a1=1j;k.1T=[];k.1i=m.1i;m.1i=I;m.7m();A Q=k.Q=m.16.V;O(A i=0;ip.28+p.4K-p.4S)p.H=p.28+p.4K-p.D-p.3o-p.4S-p.1G-p.36;q(p.H(k.x.1V||k.x.D)){k.bs();q(k.1T.V==1)k.57()}}k.a5()}1y(e){k.9o(e)}},91:C(6c,1M){A c=m.4p(6c,\'7J\',\'K-19\');q(/(1k|3x)/.11(k.2I)){q(k.4j)c.G.L=k.4j+\'F\';q(k.4x)c.G.N=k.4x+\'F\'}},6T:C(){q(k.aD)E;A B=k;k.19=m.4p(k.1s,\'7J\',\'K-19\');q(k.2I==\'1k\'){k.6n();A 5o=m.3w.5J(1);k.19.1X(5o);k.eP=k.1s.1O;q(!k.4j)k.4j=5o.1O;A 5b=k.1s.1U-k.19.1U,h=k.4x||m.4g.N-5b-m.4d-m.6L,4N=k.3U==\'60\'?\' 4N="q (m.16[\'+k.Q+\']) m.16[\'+k.Q+\'].69()" \':\'\';k.19.2d+=\'<1k 2Z="m\'+(1J 7K()).79()+\'" eQ="0" Q="\'+k.Q+\'" \'+\' G="L:\'+k.4j+\'F; N:\'+h+\'F" \'+4N+\' 1e="\'+k.1e+\'" >\';k.5o=k.19.2C(\'P\')[0];k.1k=k.19.2C(\'1k\')[0];q(k.3U==\'6x\')k.8A()}q(k.2I==\'3x\'){k.19.1v=k.19.1v||\'m-fY-1v-\'+k.Q;A a=k.8e;q(!a.29)a.29={};q(1F a.29.aN==\'1L\')a.29.aN=\'fR\';q(9p)9p.fT(k.1e,k.19.1v,k.4j,k.4x,a.g1||\'7\',a.gb,a.aG,a.29,a.aF)}k.aD=M},7Z:C(){q(k.1k&&!k.4x){k.1k.G.N=k.19.G.N=k.8p()+\'F\'}k.1s.1X(m.3w);q(!k.x.1a)k.x.1a=k.1s.1O;k.y.1a=k.1s.1U;k.1s.9q(m.3w);q(m.2h&&k.aL>3H(k.1s.5y.N)){k.aL=3H(k.1s.5y.N)}m.R(k.U,{1l:\'2l\',94:\'0\'});m.R(k.S,{L:k.x.t+\'F\',N:k.y.t+\'F\'})},8p:C(){A h;1t{A 2B=k.5C=k.1k.9O||k.1k.6g.W;A 3w=2B.1d(\'P\');3w.G.aJ=\'bc\';2B.19.1X(3w);h=3w.8O;q(m.2h)h+=3H(2B.19.5y.4d)+3H(2B.19.5y.6L)-1}1y(e){h=de}E h},8A:C(){A 5i=k.1s.1O-k.5o.1O;m.3B(k.5o);q(5i<0)5i=0;A 5b=k.1s.1U-k.1k.1U;q(k.5C&&!k.4x&&!k.N&&k.y.D==k.y.1a)1t{k.5C.19.G.2e=\'1q\'}1y(e){}m.R(k.1k,{L:1h.9Y(k.x.D-5i)+\'F\',N:1h.9Y(k.y.D-5b)+\'F\'});m.R(k.19,{L:k.1k.G.L,N:k.1k.G.N});k.52=k.1k;k.2s=k.52},b4:C(){k.91(k.1s);q(k.2I==\'3x\'&&k.3U==\'60\')k.6T();q(k.x.D1P.1U){1P.G.L=(3H(1P.G.L)+6E)+\'F\'}k.52=1P;k.2s=k.52}q(k.1k&&k.3U==\'60\')k.8A();q(!k.52&&k.y.Dk.2s.23.1U){4a("1t { m.16["+k.Q+"].2s.G.2e = \'1M\'; } 1y(e) {}",m.6W)}},b8:C(5v){A c=5v.fC.7G(\',\');O(A i=0;ip.28+p.4K-p.4S){q(!5u&&8C&&5s){p.D=1h.31(p.D,p.Z(1u==\'y\'?\'5e\':\'8D\'))}J q(p.Z(\'2f\')2M){ 3f=3y*2M;q(3fk.6k&&x.D>k.4s&&y.Z(\'2f\')>y.Z(\'5e\')){y.D-=10;q(2M)x.D=y.D*2M;k.57(0,1);3T=M}}E 3T},dS:C(){q(k.2s){A h=/1k/i.11(k.2s.3J)?(k.8p()+1)+\'F\':\'1M\';q(k.19)k.19.G.N=h;k.2s.G.N=h;k.y.72(k.1s.1U)}},a5:C(){A x=k.x,y=k.y;k.59(\'1q\');m.1A(k,\'et\');q(k.1p&&k.1p.2D)k.1p.2D.5t();k.9b(1,{U:{L:x.Z(\'2f\'),N:y.Z(\'2f\'),1b:x.H,Y:y.H},S:{1b:x.1G+x.Z(\'2K\'),Y:y.1G+y.Z(\'2K\'),L:x.1V||x.D,N:y.1V||y.D}},m.6W)},9b:C(1I,2i,4i){A 5M=k.3q,8o=1I?(k.1i?k.1i.a:I):m.2q,t=(5M[1]&&8o&&m.43(8o,\'3q\')[1]==5M[1])?5M[1]:5M[0];q(k[t]&&t!=\'2F\'){k[t](1I,2i);E}q(k.1g&&!k.3Y){q(1I)k.1g.4C();J k.1g.5U((k.2A&&k.4D))}q(!1I)k.78();A B=k,x=B.x,y=B.y,2Q=k.2Q;q(!1I)2Q=k.cF||2Q;A 6x=1I?C(){q(B.1g)B.1g.2g.G.1n="1Y";4a(C(){B.6I()},50)}:C(){B.5D()};q(1I)m.R(k.U,{L:x.t+\'F\',N:y.t+\'F\'});q(1I&&k.2A){m.R(k.U,{1b:(x.1K-x.cb+x.3s)+\'F\',Y:(y.1K-y.cb+y.3s)+\'F\'})}q(k.cD){m.R(k.U,{1z:1I?0:1});m.3A(2i.U,{1z:1I})}m.2z(k.U,2i.U,{4h:4i,2Q:2Q,3P:C(3j,2H){q(B.1g&&B.3Y&&2H.1f==\'Y\'){A 5W=1I?2H.H:1-2H.H;A H={w:x.t+(x.Z(\'2f\')-x.t)*5W,h:y.t+(y.Z(\'2f\')-y.t)*5W,x:x.1K+(x.H-x.1K)*5W,y:y.1K+(y.H-y.1K)*5W};B.1g.4C(H,0,1)}q(B.2A){q(2H.1f==\'1b\')B.4c.G.1b=(x.H-3j)+\'F\';q(2H.1f==\'Y\')B.4c.G.Y=(y.H-3j)+\'F\'}}});m.2z(k.S,2i.S,4i,2Q,6x);q(1I){k.U.G.1n=\'1Y\';k.S.G.1n=\'1Y\';q(k.2A)k.1s.G.1n=\'1Y\';k.a.1c+=\' K-4I-46\'}},6w:C(1I,2i){k.3Y=1j;A B=k,t=1I?m.6W:0;q(1I){m.2z(k.U,2i.U,0);m.R(k.U,{1z:0,1n:\'1Y\'});m.2z(k.S,2i.S,0);k.S.G.1n=\'1Y\';m.2z(k.U,{1z:1},t,I,C(){B.6I()})}q(k.1g){k.1g.2g.G.1B=k.U.G.1B;A 6Z=1I||-1,1w=k.1g.1w,8r=1I?3:1w,8q=1I?1w:3;O(A i=8r;6Z*i<=6Z*8q;i+=6Z,t+=25){(C(){A o=1I?8q-i:8r-i;4a(C(){B.1g.4C(0,o,1)},t)})()}}q(1I){}J{4a(C(){q(B.1g)B.1g.5U(B.4D);B.78();m.2z(B.U,{1z:0},m.9A,I,C(){B.5D()})},t)}},4e:C(1I,2i,8u){q(!1I)E;A B=k,1i=k.1i,x=k.x,y=k.y,3n=1i.x,3g=1i.y,U=k.U,S=k.S,1x=k.1x;m.4z(W,\'7D\',m.6H);m.R(S,{L:(x.1V||x.D)+\'F\',N:(y.1V||y.D)+\'F\'});q(1x)1x.G.2e=\'1Y\';k.1g=1i.1g;q(k.1g)k.1g.B=B;1i.1g=I;A 5l=m.1d(\'P\',{1c:\'K-\'+k.35},{1l:\'2l\',1B:4,2e:\'1q\',1o:\'1E\'});A 8t={cN:1i,cM:k};O(A n 2Y 8t){k[n]=8t[n].S.5J(1);m.R(k[n],{1l:\'2l\',8H:0,1n:\'1Y\'});5l.1X(k[n])}U.1X(5l);q(k.2A)m.R(k.4c,{1b:0,Y:0});q(1x){1x.1c=\'\';U.1X(1x)}5l.G.1o=\'\';1i.S.G.1o=\'1E\';q(m.4M&&m.2t<73){k.U.G.1n=\'1Y\'}m.2z(U,{L:x.D},{4h:m.cE,3P:C(3j,2H){A H=2H.H,4B=1-H;A 1f,D={},93=[\'H\',\'D\',\'1G\',\'36\'];O(A n 2Y 93){1f=93[n];D[\'x\'+1f]=1h.3e(4B*3n[1f]+H*x[1f]);D[\'y\'+1f]=1h.3e(4B*3g[1f]+H*y[1f]);D.cI=1h.3e(4B*(3n.1V||3n.D)+H*(x.1V||x.D));D.6S=1h.3e(4B*3n.Z(\'2K\')+H*x.Z(\'2K\'));D.cJ=1h.3e(4B*(3g.1V||3g.D)+H*(y.1V||y.D));D.6V=1h.3e(4B*3g.Z(\'2K\')+H*y.Z(\'2K\'))}q(B.1g)B.1g.4C({x:D.3h,y:D.3r,w:D.5L+D.44+D.8U+2*x.cb,h:D.5K+D.45+D.8T+2*y.cb});1i.U.G.d7=\'d6(\'+(D.3r-3g.H)+\'F, \'+(D.5L+D.44+D.8U+D.3h+2*3n.cb-3n.H)+\'F, \'+(D.5K+D.45+D.8T+D.3r+2*3g.cb-3g.H)+\'F, \'+(D.3h-3n.H)+\'F)\';m.R(S,{Y:(D.45+y.Z(\'2K\'))+\'F\',1b:(D.44+x.Z(\'2K\'))+\'F\',4d:(y.H-D.3r)+\'F\',4W:(x.H-D.3h)+\'F\'});m.R(U,{Y:D.3r+\'F\',1b:D.3h+\'F\',L:(D.44+D.8U+D.5L+2*x.cb)+\'F\',N:(D.45+D.8T+D.5K+2*y.cb)+\'F\'});m.R(5l,{L:(D.cI||D.5L)+\'F\',N:(D.cJ||D.5K)+\'F\',1b:(D.44+D.6S)+\'F\',Y:(D.45+D.6V)+\'F\',1n:\'1Y\'});m.R(B.cN,{Y:(3g.H-D.3r+3g.1G-D.45+3g.Z(\'2K\')-D.6V)+\'F\',1b:(3n.H-D.3h+3n.1G-D.44+3n.Z(\'2K\')-D.6S)+\'F\'});m.R(B.cM,{1z:H,Y:(y.H-D.3r+y.1G-D.45+y.Z(\'2K\')-D.6V)+\'F\',1b:(x.H-D.3h+x.1G-D.44+x.Z(\'2K\')-D.6S)+\'F\'});q(1x)m.R(1x,{L:D.5L+\'F\',N:D.5K+\'F\',1b:(D.44+x.cb)+\'F\',Y:(D.45+y.cb)+\'F\'})},76:C(){U.G.1n=S.G.1n=\'1Y\';S.G.1o=\'3X\';m.3B(5l);B.6I();1i.5D();B.1i=I}})},bQ:C(o,el){q(!k.1i)E 1j;O(A i=0;i\'+s+\'

    \'+k[k.6l].2d}}},a0:C(){q(!k.1i){O(A i=0;ik.x.Z(\'6e\')+k.x.Z(\'9R\'));A bG=(3N.y+3N.hk.y.Z(\'6e\')+k.y.Z(\'9R\'))}A 6F=m.9U(1m[i]);q(!bl&&!bG&&6F!=k.Q){q(!2S){1m[i].5F(\'1q-by\',\'[\'+k.Q+\']\');1m[i].9N=1m[i].G[1f];1m[i].G[1f]=\'1q\'}J q(2S.bF(\'[\'+k.Q+\']\')==-1){1m[i].5F(\'1q-by\',2S+\'[\'+k.Q+\']\')}}J q((2S==\'[\'+k.Q+\']\'||m.3d==6F)&&6F!=k.Q){1m[i].5F(\'1q-by\',\'\');1m[i].G[1f]=1m[i].9N||\'\'}J q(2S&&2S.bF(\'[\'+k.Q+\']\')>-1){1m[i].5F(\'1q-by\',2S.2k(\'[\'+k.Q+\']\',\'\'))}}}}},3M:C(){k.U.G.1B=m.4F+=2;O(A i=0;i14.23.1O)14.G.L=\'2w%\'}J q(14.23!=k.1x)k.1x.1X(14);q(/1b$/.11(p))14.G.1b=74+\'F\';q(/4X$/.11(p))m.R(14,{1b:\'50%\',4W:(74-1h.3e(14.1O/2))+\'F\'});q(/3m$/.11(p))14.G.3m=-74+\'F\';q(/^bM$/.11(p)){m.R(14,{3m:\'2w%\',9B:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4Q:-k.y.cb+\'F\',2e:\'1M\'});k.x.1G=14.1O}J q(/^bC$/.11(p)){m.R(14,{1b:\'2w%\',4W:k.x.cb+\'F\',Y:-k.y.cb+\'F\',4Q:-k.y.cb+\'F\',2e:\'1M\'});k.x.36=14.1O}A 9d=14.23.1U;14.G.N=\'1M\';q(53&&14.1U>9d)14.G.N=m.3Z?9d+\'F\':\'2w%\';q(/^Y/.11(p))14.G.Y=6O+\'F\';q(/^9a/.11(p))m.R(14,{Y:\'50%\',4d:(6O-1h.3e(14.1U/2))+\'F\'});q(/^4Q/.11(p))14.G.4Q=-6O+\'F\';q(/^5N$/.11(p)){m.R(14,{1b:(-k.x.1G-k.x.cb)+\'F\',3m:(-k.x.36-k.x.cb)+\'F\',4Q:\'2w%\',6L:k.y.cb+\'F\',L:\'1M\'});k.y.1G=14.1U}J q(/^7E$/.11(p)){m.R(14,{1l:\'4y\',1b:(-k.x.1G-k.x.cb)+\'F\',3m:(-k.x.36-k.x.cb)+\'F\',Y:\'2w%\',4d:k.y.cb+\'F\',L:\'1M\'});k.y.36=14.1U;14.G.1l=\'2l\'}},bB:C(){k.a2([\'58\',\'9X\'],M);k.bq();q(k.9X)m.1A(k,\'eE\');q(k.58)m.1A(k,\'eF\');q(k.58&&k.a7)k.58.1c+=\' K-3u\';q(m.br)k.bp();O(A i=0;i=5.5){s=s.2k(1J 4Y(\']*>\',\'c9\'),\'\').2k(1J 4Y(\']*>.*?\',\'c9\'),\'\');q(k.1k){A 2B=k.1k.9O;q(!2B&&k.1k.6g)2B=k.1k.6g.W;q(!2B){A 3v=k;4a(C(){3v.6f()},25);E}2B.ca();2B.dg(s);2B.26();1t{s=2B.9Q(k.1v).2d}1y(e){1t{s=k.1k.W.9Q(k.1v).2d}1y(e){}}m.3B(k.1k)}J{7H=/(<19[^>]*>|<\\/19>)/db;q(7H.11(s))s=s.7G(7H)[m.3R?1:2]}}m.4p(k.S,\'7J\',\'K-19\').2d=s;k.3F();O(A x 2Y k)k[x]=I}};m.83=C(4k,1r){q(m.cX!==1j)m.95();k.4k=4k;O(A x 2Y 1r)k[x]=1r[x];q(k.cZ)k.cg();q(k.2D)k.2D=m.ci(k)};m.83.5w={cg:C(){k.2X=m.1d(\'P\',{2d:m.8b(m.8i.2X)},I,m.2b);A 6j=[\'3L\',\'3p\',\'3a\',\'1D\',\'3u\',\'1a-2F\',\'26\'];k.1Q={};A 3v=k;O(A i=0;i<6j.V;i++){k.1Q[6j[i]]=m.4p(k.2X,\'1H\',\'K-\'+6j[i]);k.4u(6j[i])}k.1Q.3p.G.1o=\'1E\'},ch:C(){q(k.cm||!k.2X)E;A B=m.16[k.4k],5q=B.7v(),2m=/7w$/;q(5q==0)k.5d(\'3a\');J q(2m.11(k.1Q.3a.2C(\'a\')[0].1c))k.4u(\'3a\');q(5q+1==m.4U.3i[B.2N||\'1E\'].V){k.5d(\'1D\');k.5d(\'3L\')}J q(2m.11(k.1Q.1D.2C(\'a\')[0].1c)){k.4u(\'1D\');k.4u(\'3L\')}},4u:C(1Q){q(!k.1Q)E;A cn=k,a=k.1Q[1Q].2C(\'a\')[0],2m=/7w$/;a.2p=C(){cn[1Q]();E 1j};q(2m.11(a.1c))a.1c=a.1c.2k(2m,\'\')},5d:C(1Q){q(!k.1Q)E;A a=k.1Q[1Q].2C(\'a\')[0];a.2p=C(){E 1j};q(!/7w$/.11(a.1c))a.1c+=\' 7w\'},cl:C(){q(k.42)k.3p();J k.3L()},3L:C(ck){q(k.1Q){k.1Q.3L.G.1o=\'1E\';k.1Q.3p.G.1o=\'\'}k.42=M;q(!ck)m.1D(k.4k)},3p:C(){q(k.1Q){k.1Q.3p.G.1o=\'1E\';k.1Q.3L.G.1o=\'\'}d9(k.42);k.42=I},3a:C(){k.3p();m.3a(k.1Q.3a)},1D:C(){k.3p();m.1D(k.1Q.1D)},3u:C(){},\'1a-2F\':C(){m.2G().7r()},26:C(){m.26(k.1Q.26)}};m.ci=C(1p){C 7p(B){m.3A(1r||{},{4P:4E,22:\'2D\',1c:\'K-2D-\'+5k+\'-14 \'+(1r.1c||\'\')});q(m.3Z)1r.6w=0;B.4O(1r);m.R(4E.23,{2e:\'1q\'})};C 28(3K){5t(1L,1h.3e(3K*4E[3S?\'1O\':\'1U\']*0.7))};C 5t(i,80){q(i===1L)O(A j=0;j<5I.V;j++){q(5I[j]==m.16[1p.4k].a){i=j;5m}}q(i===1L)E;A as=4E.2C(\'a\'),4I=as[i],48=4I.23,1b=3S?\'cj\':\'c8\',3m=3S?\'c7\':\'bX\',L=3S?\'bY\':\'bW\',4V=\'1w\'+1b,1O=\'1w\'+L,7e=P.23.23[1O],5j=7e-2g[1O],6o=3H(2g.G[3S?\'1b\':\'Y\'])||0,2O=6o,ej=20;q(80!==1L){2O=6o-80;q(5j>0)5j=0;q(2O>0)2O=0;q(2O<5j)2O=5j}J{O(A j=0;j0?as[i-1].23[4V]:48[4V],7Y=48[4V]+48[1O]+(as[i+1]?as[i+1].23[1O]:0);q(7Y>7e-6o)2O=7e-7Y;J q(7X<-6o)2O=-7X}A 8R=48[4V]+(48[1O]-7f[1O])/2+2O;m.2z(2g,3S?{1b:2O}:{Y:2O},I,\'8S\');m.2z(7f,3S?{1b:8R}:{Y:8R},I,\'8S\');8l.G.1o=2O<0?\'3X\':\'1E\';8M.G.1o=(2O>5j)?\'3X\':\'1E\'};A 5I=m.4U.3i[m.16[1p.4k].2N||\'1E\'],1r=1p.2D,5k=1r.5k||\'bV\',8K=(5k==\'en\'),4f=8K?[\'P\',\'6t\',\'1H\',\'1C\']:[\'2g\',\'4G\',\'47\',\'2J\'],3S=(5k==\'bV\'),4E=m.1d(\'P\',{1c:\'K-2D K-2D-\'+5k,2d:\'

    \'+\'<\'+4f[0]+\'><\'+4f[1]+\'>

    \'+\'

    \'+\'

    \'+\'

    \'},{1o:\'1E\'},m.2b),5E=4E.7L,P=5E[0],8l=5E[1],8M=5E[2],7f=5E[3],2g=P.ef,4G=4E.2C(4f[1])[0],47;O(A i=0;i<5I.V;i++){q(i==0||!3S)47=m.1d(4f[2],I,I,4G);(C(){A a=5I[i],48=m.1d(4f[3],I,I,47),ex=i;m.1d(\'a\',{21:a.21,24:a.24,2p:C(){q(/K-4I-46/.11(k.1c))E 1j;m.2G(k).3M();E m.8N(a)},2d:m.bT?m.bT(a):a.2d},I,48)})()}q(!8K){8l.2p=C(){28(-1)};8M.2p=C(){28(1)};m.2j(4G,W.eA!==1L?\'er\':\'eq\',C(e){A 3K=0;e=e||1S.2u;q(e.bU){3K=e.bU/dR;q(m.3z)3K=-3K}J q(e.bZ){3K=-e.bZ/3}q(3K)28(-3K*0.2);q(e.5n)e.5n();e.c0=1j})}E{7p:7p,5t:5t}};m.7o=m.18;A e8=m.5A;q(m.2h&&1S==1S.Y){(C(){1t{W.5h.e4(\'1b\')}1y(e){4a(c5.dZ,50);E}m.41()})()}m.2j(W,\'dW\',m.41);m.2j(1S,\'8B\',m.41);m.2j(W,\'41\',C(){q(m.7R||m.4b){A G=m.1d(\'G\',{T:\'e0/8I\'},I,W.2C(\'e1\')[0]),8E=W.7a==\'8v\';C 5P(8m,8n){q(m.2h&&(m.2t<9||8E)){A 1i=W.c6[W.c6.V-1];q(1F(1i.5P)=="7j")1i.5P(8m,8n)}J{G.1X(W.e6(8m+" {"+8n+"}"))}}C 5T(1f){E\'e5( ( ( ez = W.5h.\'+1f+\' ? W.5h.\'+1f+\' : W.19.\'+1f+\' ) ) + \\\'F\\\' );\'}q(m.7R)5P(\'.K 1N\',\'4L: 7T(\'+m.5c+m.7R+\'), 7Q !dA;\');5P(\'.K-2x-D\',m.2h&&(m.2t<7||8E)?\'1l: 2l; \'+\'1b:\'+5T(\'5O\')+\'Y:\'+5T(\'5R\')+\'L:\'+5T(\'8F\')+\'N:\'+5T(\'c4\'):\'1l: fV; L: 2w%; N: 2w%; 1b: 0; Y: 0\')}});m.2j(1S,\'3O\',C(){m.7S();q(m.2x)O(A i=0;iHighslide JS
    ', + creditsTitle : 'Go to the Highslide JS homepage', + previousText : 'Previous', + nextText : 'Next', + moveText : 'Move', + closeText : 'Close', + closeTitle : 'Close (esc)', + resizeTitle : 'Resize', + playText : 'Play', + playTitle : 'Play slideshow (spacebar)', + pauseText : 'Pause', + pauseTitle : 'Pause slideshow (spacebar)', + previousTitle : 'Previous (arrow left)', + nextTitle : 'Next (arrow right)', + moveTitle : 'Move', + fullExpandText : '1:1', + number: 'Image %1 of %2', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing +transitions : [], +transitionDuration: 250, +dimmingOpacity: 0, // Lightbox style dimming background +dimmingDuration: 50, // 0 for instant dimming + +anchor : 'auto', // where the image expands from +align : 'auto', // position in the client (overrides anchor) +targetX: null, // the id of a target element +targetY: null, +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +skin : { + controls: + '
    ' +}, +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'anchor', + 'align', + 'targetX', + 'targetY', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + 'autoplay', + 'numberPosition', + 'transitions', + 'dimmingOpacity', + + 'width', + 'height', + + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +timers : [], + +slideshows : [], + +pendingOutlines : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + try { + new hs.Expander(a, params, custom); + return false; + } catch (e) { return true; } +}, +getElementByClass : function (el, tagName, className) { + var els = el.getElementsByTagName(tagName); + for (var i = 0; i < els.length; i++) { + if ((new RegExp(className)).test(els[i].className)) { + return els[i]; + } + } + return null; +}, +replaceLang : function(s) { + s = s.replace(/\s/g, ' '); + var re = /{hs\.lang\.([^}]+)\}/g, + matches = s.match(re), + lang; + if (matches) for (var i = 0; i < matches.length; i++) { + lang = matches[i].replace(re, "$1"); + if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]); + } + return s; +}, + + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +dim : function(exp) { + if (!hs.dimmer) { + isNew = true; + hs.dimmer = hs.createElement ('div', { + className: 'highslide-dimming highslide-viewport-size', + owner: '', + onclick: function() { + + hs.close(); + } + }, { + visibility: 'visible', + opacity: 0 + }, hs.container, true); + + if (/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)) { + var body = document.body; + function pixDimmerSize() { + hs.setStyles(hs.dimmer, { + width: body.scrollWidth +'px', + height: body.scrollHeight +'px' + }); + } + pixDimmerSize(); + hs.addEventListener(window, 'resize', pixDimmerSize); + } + } + hs.dimmer.style.display = ''; + + var isNew = hs.dimmer.owner == ''; + hs.dimmer.owner += '|'+ exp.key; + + if (isNew) { + if (hs.geckoMac && hs.dimmingGeckoFix) + hs.setStyles(hs.dimmer, { + background: 'url('+ hs.graphicsDir + 'geckodimmer.png)', + opacity: 1 + }); + else + hs.animate(hs.dimmer, { opacity: exp.dimmingOpacity }, hs.dimmingDuration); + } +}, +undim : function(key) { + if (!hs.dimmer) return; + if (typeof key != 'undefined') hs.dimmer.owner = hs.dimmer.owner.replace('|'+ key, ''); + + if ( + (typeof key != 'undefined' && hs.dimmer.owner != '') + || (hs.upcoming && hs.getParam(hs.upcoming, 'dimmingOpacity')) + ) return; + + if (hs.geckoMac && hs.dimmingGeckoFix) hs.dimmer.style.display = 'none'; + else hs.animate(hs.dimmer, { opacity: 0 }, hs.dimmingDuration, null, function() { + hs.dimmer.style.display = 'none'; + }); +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + if (!adj || exp.transitions[1] != 'crossfade') + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + op = 2; + break; + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {if (op != 2)hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else if (op == 2) { + if (exp.slideshow) exp.slideshow.hitSpace(); + } else { + if (exp.slideshow) exp.slideshow.pause(); + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +addSlideshow : function (options) { + var sg = options.slideshowGroup; + if (typeof sg == 'object') { + for (var i = 0; i < sg.length; i++) { + var o = {}; + for (var x in options) o[x] = options[x]; + o.slideshowGroup = sg[i]; + hs.push(hs.slideshows, o); + } + } else { + hs.push(hs.slideshows, options); + } +}, + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.hsKey !== undefined) return el.hsKey; + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + hs.viewport = hs.createElement('div', { + className: 'highslide-viewport highslide-viewport-size' + }, { + visibility: (hs.safari && hs.uaVersion < 525) ? 'visible' : 'hidden' + }, hs.container, 1 + ); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + Math.easeOutQuad = function (t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'loadingPosXfade': + return this.pos + this.cb+ this.p1 + (this.size - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + // get alignment + if (exp.align == 'center') this.justify = 'center'; + else if (new RegExp(this.lt).test(exp.anchor)) this.justify = null; + else if (new RegExp(this.rb).test(exp.anchor)) this.justify = 'max'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.target = exp['target'+ this.dim.toUpperCase()]; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); + if (this.dim == 'x' && exp.slideshow && exp.isImage) { + if (i == this.full) exp.slideshow.disable('full-expand'); + else exp.slideshow.enable('full-expand'); + } +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + this.last = hs.last; + hs.last = null; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a + && !(this.last && this.transitions[1] == 'crossfade')) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType + || (this.last && this.isImage && this.transitions[1] == 'crossfade')) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + if (!tgt && this.last && this.transitions[1] == 'crossfade') + var tgt = this.last; + if (tgt) { + l = tgt.x.get('loadingPosXfade') +'px'; + t = tgt.y.get('loadingPosXfade') +'px'; + this.loading.style.zIndex = hs.zIndexCounter++; + } + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + + + this.initSlideshow(); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + this.correctRatio(ratio); + var ss = this.slideshow; + if (ss && this.last && ss.controls && ss.fixedControls) { + var pos = ss.overlayOptions.position || '', p; + for (var dim in hs.oPos) for (var i = 0; i < 5; i++) { + p = this[dim]; + if (pos.match(hs.oPos[dim][i])) { + p.pos = this.last[dim].pos + + (this.last[dim].p1 - p.p1) + + (this.last[dim].size - p.size) * [0, 0, .5, 1, 1][i]; + if (ss.fixedControls == 'fit') { + if (p.pos + p.size + p.p1 + p.p2 > p.scroll + p.clientSize - p.marginMax) + p.pos = p.scroll + p.clientSize - p.size - p.marginMin - p.marginMax - p.p1 - p.p2; + if (p.pos < p.scroll + p.marginMin) p.pos = p.scroll + p.marginMin; + } + } + } + } + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + if (tgt && tgt.match(/ /)) { + tgtArr = tgt.split(' '); + tgt = tgtArr[0]; + } + if (tgt && hs.$(tgt)) { + p.pos = hs.getPosition(hs.$(tgt))[dim]; + if (tgtArr && tgtArr[1] && tgtArr[1].match(/^[-]?[0-9]+px$/)) + p.pos += parseInt(tgtArr[1]); + if (p.size < p.minSize) p.size = p.minSize; + + } else if (p.justify == 'auto' || p.justify == 'center') { + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + if (p.justify == 'center') + p.pos = Math.round(p.scroll + (p.clientSize + p.marginMin - p.marginMax - p.get('wsize')) / 2); + else + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + } else if (p.justify == 'max') { + p.pos = Math.floor(p.pos - p.size + p.t); + } + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + if (this.slideshow && this.slideshow.thumbstrip) this.slideshow.thumbstrip.selectThumb(); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + // transition + var trans = this.transitions, + other = up ? (this.last ? this.last.a : null) : hs.upcoming, + t = (trans[1] && other + && hs.getParam(other, 'transitions')[1] == trans[1]) ? + trans[1] : trans[0]; + + if (this[t] && t != 'expand') { + this[t](up, to); + return; + } + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy(); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + +fade : function(up, to) { + this.outlineWhileAnimating = false; + var exp = this, t = up ? hs.expandDuration : 0; + + if (up) { + hs.animate(this.wrapper, to.wrapper, 0); + hs.setStyles(this.wrapper, { opacity: 0, visibility: 'visible' }); + hs.animate(this.content, to.content, 0); + this.content.style.visibility = 'visible'; + + hs.animate(this.wrapper, { opacity: 1 }, t, null, + function() { exp.afterExpand(); }); + } + + if (this.outline) { + this.outline.table.style.zIndex = this.wrapper.style.zIndex; + var dir = up || -1, + offset = this.outline.offset, + startOff = up ? 3 : offset, + endOff = up? offset : 3; + for (var i = startOff; dir * i <= dir * endOff; i += dir, t += 25) { + (function() { + var o = up ? endOff - i : startOff - i; + setTimeout(function() { + exp.outline.setPosition(0, o, 1); + }, t); + })(); + } + } + + + if (up) {}//setTimeout(function() { exp.afterExpand(); }, t+50); + else { + setTimeout( function() { + if (exp.outline) exp.outline.destroy(exp.preserveContent); + + exp.destroyOverlays(); + + hs.animate( exp.wrapper, { opacity: 0 }, hs.restoreDuration, null, function(){ + exp.afterClose(); + }); + }, t); + } +}, +crossfade : function (up, to, from) { + if (!up) return; + var exp = this, + last = this.last, + x = this.x, + y = this.y, + lastX = last.x, + lastY = last.y, + wrapper = this.wrapper, + content = this.content, + overlayBox = this.overlayBox; + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + hs.setStyles(content, { + width: (x.imgSize || x.size) +'px', + height: (y.imgSize || y.size) +'px' + }); + if (overlayBox) overlayBox.style.overflow = 'visible'; + this.outline = last.outline; + if (this.outline) this.outline.exp = exp; + last.outline = null; + var fadeBox = hs.createElement('div', { + className: 'highslide-'+ this.contentType + }, { + position: 'absolute', + zIndex: 4, + overflow: 'hidden', + display: 'none' + } + ); + var names = { oldImg: last, newImg: this }; + for (var n in names) { + this[n] = names[n].content.cloneNode(1); + hs.setStyles(this[n], { + position: 'absolute', + border: 0, + visibility: 'visible' + }); + fadeBox.appendChild(this[n]); + } + wrapper.appendChild(fadeBox); + if (overlayBox) { + overlayBox.className = ''; + wrapper.appendChild(overlayBox); + } + fadeBox.style.display = ''; + last.content.style.display = 'none'; + + + if (hs.safari && hs.uaVersion < 525) { + this.wrapper.style.visibility = 'visible'; + } + hs.animate(wrapper, { + width: x.size + }, { + duration: hs.transitionDuration, + step: function(val, args) { + var pos = args.pos, + invPos = 1 - pos; + var prop, + size = {}, + props = ['pos', 'size', 'p1', 'p2']; + for (var n in props) { + prop = props[n]; + size['x'+ prop] = Math.round(invPos * lastX[prop] + pos * x[prop]); + size['y'+ prop] = Math.round(invPos * lastY[prop] + pos * y[prop]); + size.ximgSize = Math.round( + invPos * (lastX.imgSize || lastX.size) + pos * (x.imgSize || x.size)); + size.ximgPad = Math.round(invPos * lastX.get('imgPad') + pos * x.get('imgPad')); + size.yimgSize = Math.round( + invPos * (lastY.imgSize || lastY.size) + pos * (y.imgSize || y.size)); + size.yimgPad = Math.round(invPos * lastY.get('imgPad') + pos * y.get('imgPad')); + } + if (exp.outline) exp.outline.setPosition({ + x: size.xpos, + y: size.ypos, + w: size.xsize + size.xp1 + size.xp2 + 2 * x.cb, + h: size.ysize + size.yp1 + size.yp2 + 2 * y.cb + }); + last.wrapper.style.clip = 'rect(' + + (size.ypos - lastY.pos)+'px, ' + + (size.xsize + size.xp1 + size.xp2 + size.xpos + 2 * lastX.cb - lastX.pos) +'px, ' + + (size.ysize + size.yp1 + size.yp2 + size.ypos + 2 * lastY.cb - lastY.pos) +'px, ' + + (size.xpos - lastX.pos)+'px)'; + + hs.setStyles(content, { + top: (size.yp1 + y.get('imgPad')) +'px', + left: (size.xp1 + x.get('imgPad')) +'px', + marginTop: (y.pos - size.ypos) +'px', + marginLeft: (x.pos - size.xpos) +'px' + }); + hs.setStyles(wrapper, { + top: size.ypos +'px', + left: size.xpos +'px', + width: (size.xp1 + size.xp2 + size.xsize + 2 * x.cb)+ 'px', + height: (size.yp1 + size.yp2 + size.ysize + 2 * y.cb) + 'px' + }); + hs.setStyles(fadeBox, { + width: (size.ximgSize || size.xsize) + 'px', + height: (size.yimgSize || size.ysize) +'px', + left: (size.xp1 + size.ximgPad) +'px', + top: (size.yp1 + size.yimgPad) +'px', + visibility: 'visible' + }); + + hs.setStyles(exp.oldImg, { + top: (lastY.pos - size.ypos + lastY.p1 - size.yp1 + lastY.get('imgPad') - size.yimgPad)+'px', + left: (lastX.pos - size.xpos + lastX.p1 - size.xp1 + lastX.get('imgPad') - size.ximgPad)+'px' + }); + + hs.setStyles(exp.newImg, { + opacity: pos, + top: (y.pos - size.ypos + y.p1 - size.yp1 + y.get('imgPad') - size.yimgPad) +'px', + left: (x.pos - size.xpos + x.p1 - size.xp1 + x.get('imgPad') - size.ximgPad) +'px' + }); + if (overlayBox) hs.setStyles(overlayBox, { + width: size.xsize + 'px', + height: size.ysize +'px', + left: (size.xp1 + x.cb) +'px', + top: (size.yp1 + y.cb) +'px' + }); + }, + complete: function () { + wrapper.style.visibility = content.style.visibility = 'visible'; + content.style.display = 'block'; + hs.discardElement(fadeBox); + exp.afterExpand(); + last.afterClose(); + exp.last = null; + } + + }); +}, +reuseOverlay : function(o, el) { + if (!this.last) return false; + for (var i = 0; i < this.last.overlays.length; i++) { + var oDiv = hs.$('hsId'+ this.last.overlays[i]); + if (oDiv && oDiv.hsId == o.hsId) { + this.genOverlayBox(); + oDiv.reuse = this.key; + hs.push(this.overlays, this.last.overlays[i]); + return true; + } + } + return false; +}, + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + if (this.dimmingOpacity) hs.dim(this); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + if (as && !as[current + op] && this.slideshow && this.slideshow.repeat) { + if (op == 1) return as[0]; + else if (op == -1) return as[as.length-1]; + } + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +getNumber : function() { + if (this[this.numberPosition]) { + var arr = hs.anchors.groups[this.slideshowGroup || 'none']; + if (arr) { + var s = hs.lang.number.replace('%1', this.getAnchorIndex() + 1).replace('%2', arr.length); + this[this.numberPosition].innerHTML = + '
    '+ s +'
    '+ this[this.numberPosition].innerHTML; + } + } +}, +initSlideshow : function() { + if (!this.last) { + for (var i = 0; i < hs.slideshows.length; i++) { + var ss = hs.slideshows[i], sg = ss.slideshowGroup; + if (typeof sg == 'undefined' || sg === null || sg === this.slideshowGroup) + this.slideshow = new hs.Slideshow(this.key, ss); + } + } else { + this.slideshow = this.last.slideshow; + } + var ss = this.slideshow; + if (!ss) return; + var key = ss.expKey = this.key; + + ss.checkFirstAndLast(); + ss.disable('full-expand'); + if (ss.controls) { + this.createOverlay(hs.extend(ss.overlayOptions || {}, { + overlayId: ss.controls, + hsId: 'controls', + zIndex: 5 + })); + } + if (ss.thumbstrip) ss.thumbstrip.add(this); + if (!this.last && this.autoplay) ss.play(true); + if (ss.autoplay) { + ss.autoplay = setTimeout(function() { + hs.next(key); + }, (ss.interval || 500)); + } +}, + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (hs.upcoming == this.a) hs.upcoming = null; + hs.undim(this.key); + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + if (this.credits) return; + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left', + hsId: 'credits' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + if (!this[type] && !s && this.numberPosition == type) s = '\n'; + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + if (!this.dimmingOpacity) { // hide all if dimming + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + } + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + if (this.transitions[1] == 'crossfade' && hs.upcoming) { + hs.getExpander(hs.upcoming).cancelLoading(); + hs.upcoming = null; + } + this.isClosing = true; + if (this.slideshow && !hs.upcoming) this.slideshow.pause(); + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +createOverlay : function (o) { + var el = o.overlayId, + relToVP = (o.relativeTo == 'viewport' && !/panel$/.test(o.position)); + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + o.hsId = o.hsId || o.overlayId; + if (this.transitions[1] == 'crossfade' && this.reuseOverlay(o, el)) return; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + }, + relToVP ? hs.viewport :this.overlayBox, + true + ); + if (relToVP) overlay.hsKey = this.key; + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + relToVP = (overlay.relativeTo == 'viewport'), + offX = overlay.offsetX, + offY = overlay.offsetY; + if (relToVP) { + hs.viewport.style.display = 'block'; + overlay.hsKey = this.key; + if (overlay.offsetWidth > overlay.parentNode.offsetWidth) + overlay.style.width = '100%'; + } else + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + var parOff = overlay.parentNode.offsetHeight; + overlay.style.height = 'auto'; + if (relToVP && overlay.offsetHeight > parOff) + overlay.style.height = hs.ieLt7 ? parOff +'px' : '100%'; + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + this.getNumber(); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + if (this.slideshow) { + var c = this.slideshow.controls; + if (c && hs.getExpander(c) == this) c.parentNode.removeChild(c); + } + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (o && o.parentNode == hs.viewport && hs.getExpander(o) == this) hs.discardElement(o); + } + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + if (this.slideshow && this.slideshow.controls) { + this.slideshow.enable('full-expand'); + return; + } + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + this.destroyOverlays(); + if (!hs.viewport.childNodes.length) hs.viewport.style.display = 'none'; + + if (this.dimmingOpacity) hs.undim(this.key); + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; + + +hs.Slideshow = function (expKey, options) { + if (hs.dynamicallyUpdateAnchors !== false) hs.updateAnchors(); + this.expKey = expKey; + for (var x in options) this[x] = options[x]; + if (this.useControls) this.getControls(); + if (this.thumbstrip) this.thumbstrip = hs.Thumbstrip(this); +}; +hs.Slideshow.prototype = { +getControls: function() { + this.controls = hs.createElement('div', { innerHTML: hs.replaceLang(hs.skin.controls) }, + null, hs.container); + + var buttons = ['play', 'pause', 'previous', 'next', 'move', 'full-expand', 'close']; + this.btn = {}; + var pThis = this; + for (var i = 0; i < buttons.length; i++) { + this.btn[buttons[i]] = hs.getElementByClass(this.controls, 'li', 'highslide-'+ buttons[i]); + this.enable(buttons[i]); + } + this.btn.pause.style.display = 'none'; + //this.disable('full-expand'); +}, +checkFirstAndLast: function() { + if (this.repeat || !this.controls) return; + var exp = hs.expanders[this.expKey], + cur = exp.getAnchorIndex(), + re = /disabled$/; + if (cur == 0) + this.disable('previous'); + else if (re.test(this.btn.previous.getElementsByTagName('a')[0].className)) + this.enable('previous'); + if (cur + 1 == hs.anchors.groups[exp.slideshowGroup || 'none'].length) { + this.disable('next'); + this.disable('play'); + } else if (re.test(this.btn.next.getElementsByTagName('a')[0].className)) { + this.enable('next'); + this.enable('play'); + } +}, +enable: function(btn) { + if (!this.btn) return; + var sls = this, a = this.btn[btn].getElementsByTagName('a')[0], re = /disabled$/; + a.onclick = function() { + sls[btn](); + return false; + }; + if (re.test(a.className)) a.className = a.className.replace(re, ''); +}, +disable: function(btn) { + if (!this.btn) return; + var a = this.btn[btn].getElementsByTagName('a')[0]; + a.onclick = function() { return false; }; + if (!/disabled$/.test(a.className)) a.className += ' disabled'; +}, +hitSpace: function() { + if (this.autoplay) this.pause(); + else this.play(); +}, +play: function(wait) { + if (this.btn) { + this.btn.play.style.display = 'none'; + this.btn.pause.style.display = ''; + } + + this.autoplay = true; + if (!wait) hs.next(this.expKey); +}, +pause: function() { + if (this.btn) { + this.btn.pause.style.display = 'none'; + this.btn.play.style.display = ''; + } + + clearTimeout(this.autoplay); + this.autoplay = null; +}, +previous: function() { + this.pause(); + hs.previous(this.btn.previous); +}, +next: function() { + this.pause(); + hs.next(this.btn.next); +}, +move: function() {}, +'full-expand': function() { + hs.getExpander().doFullExpand(); +}, +close: function() { + hs.close(this.btn.close); +} +}; +hs.Thumbstrip = function(slideshow) { + function add (exp) { + hs.extend(options || {}, { + overlayId: dom, + hsId: 'thumbstrip', + className: 'highslide-thumbstrip-'+ mode +'-overlay ' + (options.className || '') + }); + if (hs.ieLt7) options.fade = 0; + exp.createOverlay(options); + hs.setStyles(dom.parentNode, { overflow: 'hidden' }); + }; + + function scroll (delta) { + selectThumb(undefined, Math.round(delta * dom[isX ? 'offsetWidth' : 'offsetHeight'] * 0.7)); + }; + + function selectThumb (i, scrollBy) { + if (i === undefined) for (var j = 0; j < group.length; j++) { + if (group[j] == hs.expanders[slideshow.expKey].a) { + i = j; + break; + } + } + if (i === undefined) return; + var as = dom.getElementsByTagName('a'), + active = as[i], + cell = active.parentNode, + left = isX ? 'Left' : 'Top', + right = isX ? 'Right' : 'Bottom', + width = isX ? 'Width' : 'Height', + offsetLeft = 'offset' + left, + offsetWidth = 'offset' + width, + overlayWidth = div.parentNode.parentNode[offsetWidth], + minTblPos = overlayWidth - table[offsetWidth], + curTblPos = parseInt(table.style[isX ? 'left' : 'top']) || 0, + tblPos = curTblPos, + mgnRight = 20; + if (scrollBy !== undefined) { + tblPos = curTblPos - scrollBy; + + if (minTblPos > 0) minTblPos = 0; + if (tblPos > 0) tblPos = 0; + if (tblPos < minTblPos) tblPos = minTblPos; + + + } else { + for (var j = 0; j < as.length; j++) as[j].className = ''; + active.className = 'highslide-active-anchor'; + var activeLeft = i > 0 ? as[i - 1].parentNode[offsetLeft] : cell[offsetLeft], + activeRight = cell[offsetLeft] + cell[offsetWidth] + + (as[i + 1] ? as[i + 1].parentNode[offsetWidth] : 0); + if (activeRight > overlayWidth - curTblPos) tblPos = overlayWidth - activeRight; + else if (activeLeft < -curTblPos) tblPos = -activeLeft; + } + var markerPos = cell[offsetLeft] + (cell[offsetWidth] - marker[offsetWidth]) / 2 + tblPos; + hs.animate(table, isX ? { left: tblPos } : { top: tblPos }, null, 'easeOutQuad'); + hs.animate(marker, isX ? { left: markerPos } : { top: markerPos }, null, 'easeOutQuad'); + scrollUp.style.display = tblPos < 0 ? 'block' : 'none'; + scrollDown.style.display = (tblPos > minTblPos) ? 'block' : 'none'; + + }; + + + // initialize + var group = hs.anchors.groups[hs.expanders[slideshow.expKey].slideshowGroup || 'none'], + options = slideshow.thumbstrip, + mode = options.mode || 'horizontal', + floatMode = (mode == 'float'), + tree = floatMode ? ['div', 'ul', 'li', 'span'] : ['table', 'tbody', 'tr', 'td'], + isX = (mode == 'horizontal'), + dom = hs.createElement('div', { + className: 'highslide-thumbstrip highslide-thumbstrip-'+ mode, + innerHTML: + '
    '+ + '<'+ tree[0] +'><'+ tree[1] +'>
    '+ + '
    '+ + '
    '+ + '
    ' + }, { + display: 'none' + }, hs.container), + domCh = dom.childNodes, + div = domCh[0], + scrollUp = domCh[1], + scrollDown = domCh[2], + marker = domCh[3], + table = div.firstChild, + tbody = dom.getElementsByTagName(tree[1])[0], + tr; + for (var i = 0; i < group.length; i++) { + if (i == 0 || !isX) tr = hs.createElement(tree[2], null, null, tbody); + (function(){ + var a = group[i], + cell = hs.createElement(tree[3], null, null, tr), + pI = i; + hs.createElement('a', { + href: a.href, + title: a.title, + onclick: function() { + if (/highslide-active-anchor/.test(this.className)) return false; + hs.getExpander(this).focus(); + return hs.transit(a); + }, + innerHTML: hs.stripItemFormatter ? hs.stripItemFormatter(a) : a.innerHTML + }, null, cell); + })(); + } + if (!floatMode) { + scrollUp.onclick = function () { scroll(-1); }; + scrollDown.onclick = function() { scroll(1); }; + hs.addEventListener(tbody, document.onmousewheel !== undefined ? + 'mousewheel' : 'DOMMouseScroll', function(e) { + var delta = 0; + e = e || window.event; + if (e.wheelDelta) { + delta = e.wheelDelta/120; + if (hs.opera) delta = -delta; + } else if (e.detail) { + delta = -e.detail/3; + } + if (delta) scroll(-delta * 0.2); + if (e.preventDefault) e.preventDefault(); + e.returnValue = false; + }); + } + + return { + add: add, + selectThumb: selectThumb + } +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor || hs.dimmingOpacity) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + addRule ('.highslide-viewport-size', + hs.ie && (hs.uaVersion < 7 || backCompat) ? + 'position: absolute; '+ + 'left:'+ fix('scrollLeft') + + 'top:'+ fix('scrollTop') + + 'width:'+ fix('clientWidth') + + 'height:'+ fix('clientHeight') : + 'position: fixed; width: 100%; height: 100%; left: 0; top: 0'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); + if (hs.viewport) for (var i = 0; i < hs.viewport.childNodes.length; i++) { + var node = hs.viewport.childNodes[i], + exp = hs.getExpander(node); + exp.positionOverlay(node); + if (node.hsId == 'thumbstrip') exp.slideshow.thumbstrip.selectThumb(); + } +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +} diff --git a/html/highslide/highslide-with-gallery.min.js b/html/highslide/highslide-with-gallery.min.js new file mode 100644 index 000000000..5f8669993 --- /dev/null +++ b/html/highslide/highslide-with-gallery.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +slideshow +positioning +transitions +viewport +thumbstrip + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",previousText:"Previous",nextText:"Next",moveText:"Move",closeText:"Close",closeTitle:"Close (esc)",resizeTitle:"Resize",playText:"Play",playTitle:"Play slideshow (spacebar)",pauseText:"Pause",pauseTitle:"Pause slideshow (spacebar)",previousTitle:"Previous (arrow left)",nextTitle:"Next (arrow right)",moveTitle:"Move",fullExpandText:"1:1",number:"Image %1 of %2",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a"],transitions:[],transitionDuration:250,dimmingOpacity:0,dimmingDuration:50,anchor:"auto",align:"auto",targetX:null,targetY:null,dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",skin:{controls:''},preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","anchor","align","targetX","targetY","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","autoplay","numberPosition","transitions","dimmingOpacity","width","height","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},timers:[],slideshows:[],pendingOutlines:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a.offsetParent){a=a.offsetParent;b.x+=a.offsetLeft;b.y+=a.offsetTop;if(a!=document.body&&a!=document.documentElement){b.x-=a.scrollLeft;b.y-=a.scrollTop}}return b},expand:function(b,g,d,c){if(!b){b=hs.createElement("a",null,{display:"none"},hs.container)}if(typeof b.getParams=="function"){return g}try{new hs.Expander(b,g,d);return false}catch(f){return true}},getElementByClass:function(e,c,d){var b=e.getElementsByTagName(c);for(var a=0;ac){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},dim:function(d){if(!hs.dimmer){a=true;hs.dimmer=hs.createElement("div",{className:"highslide-dimming highslide-viewport-size",owner:"",onclick:function(){hs.close()}},{visibility:"visible",opacity:0},hs.container,true);if(/(Android|iPad|iPhone|iPod)/.test(navigator.userAgent)){var b=document.body;function c(){hs.setStyles(hs.dimmer,{width:b.scrollWidth+"px",height:b.scrollHeight+"px"})}c();hs.addEventListener(window,"resize",c)}}hs.dimmer.style.display="";var a=hs.dimmer.owner=="";hs.dimmer.owner+="|"+d.key;if(a){if(hs.geckoMac&&hs.dimmingGeckoFix){hs.setStyles(hs.dimmer,{background:"url("+hs.graphicsDir+"geckodimmer.png)",opacity:1})}else{hs.animate(hs.dimmer,{opacity:d.dimmingOpacity},hs.dimmingDuration)}}},undim:function(a){if(!hs.dimmer){return}if(typeof a!="undefined"){hs.dimmer.owner=hs.dimmer.owner.replace("|"+a,"")}if((typeof a!="undefined"&&hs.dimmer.owner!="")||(hs.upcoming&&hs.getParam(hs.upcoming,"dimmingOpacity"))){return}if(hs.geckoMac&&hs.dimmingGeckoFix){hs.dimmer.style.display="none"}else{hs.animate(hs.dimmer,{opacity:0},hs.dimmingDuration,null,function(){hs.dimmer.style.display="none"})}},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{if(!a||d.transitions[1]!="crossfade"){d.close()}}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:c=2;break;case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){if(c!=2){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler)}if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{if(c==2){if(b.slideshow){b.slideshow.hitSpace()}}else{if(b.slideshow){b.slideshow.pause()}hs.previousOrNext(b.key,c)}}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},addSlideshow:function(b){var d=b.slideshowGroup;if(typeof d=="object"){for(var c=0;c1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){f.close()}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"loadingPosXfade":return this.pos+this.cb+this.p1+(this.size-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";if(a.align=="center"){this.justify="center"}else{if(new RegExp(this.lt).test(a.anchor)){this.justify=null}else{if(new RegExp(this.rb).test(a.anchor)){this.justify="max"}}}this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.target=a["target"+this.dim.toUpperCase()];this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var b=this.exp;if(b.isImage&&(b.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);b.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}b.content.style[this.wh]=a+"px";b.wrapper.style[this.wh]=this.get("wsize")+"px";if(b.outline){b.outline.setPosition()}if(this.dim=="x"&&b.overlayBox){b.sizeOverlayBox(true)}if(this.dim=="x"&&b.slideshow&&b.isImage){if(a==this.full){b.slideshow.disable("full-expand")}else{b.slideshow.enable("full-expand")}}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];this.last=hs.last;hs.last=null;hs.init();var m=this.key=hs.expanders.length;for(var g=0;ga.scroll+a.clientSize-a.marginMax){a.pos=a.scroll+a.clientSize-a.size-a.marginMin-a.marginMax-a.p1-a.p2}if(a.pos(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(d){this.error(d)}},justify:function(f,b){var g,h=f.target,e=f==this.x?"x":"y";if(h&&h.match(/ /)){g=h.split(" ");h=g[0]}if(h&&hs.$(h)){f.pos=hs.getPosition(hs.$(h))[e];if(g&&g[1]&&g[1].match(/^[-]?[0-9]+px$/)){f.pos+=parseInt(g[1])}if(f.sizef.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");if(this.slideshow&&this.slideshow.thumbstrip){this.slideshow.thumbstrip.selectThumb()}this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(d,i,b){var k=this.transitions,e=d?(this.last?this.last.a:null):hs.upcoming,j=(k[1]&&e&&hs.getParam(e,"transitions")[1]==k[1])?k[1]:k[0];if(this[j]&&j!="expand"){this[j](d,i);return}if(this.outline&&!this.outlineWhileAnimating){if(d){this.outline.setPosition()}else{this.outline.destroy()}}if(!d){this.destroyOverlays()}var c=this,h=c.x,g=c.y,f=this.easing;if(!d){f=this.easingClose||f}var a=d?function(){if(c.outline){c.outline.table.style.visibility="visible"}setTimeout(function(){c.afterExpand()},50)}:function(){c.afterClose()};if(d){hs.setStyles(this.wrapper,{width:h.t+"px",height:g.t+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:d?0:1});hs.extend(i.wrapper,{opacity:d})}hs.animate(this.wrapper,i.wrapper,{duration:b,easing:f,step:function(n,l){if(c.outline&&c.outlineWhileAnimating&&l.prop=="top"){var m=d?l.pos:1-l.pos;var o={w:h.t+(h.get("wsize")-h.t)*m,h:g.t+(g.get("wsize")-g.t)*m,x:h.tpos+(h.pos-h.tpos)*m,y:g.tpos+(g.pos-g.tpos)*m};c.outline.setPosition(o,0,1)}}});hs.animate(this.content,i.content,b,f,a);if(d){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";this.a.className+=" highslide-active-anchor"}},fade:function(f,h){this.outlineWhileAnimating=false;var c=this,j=f?hs.expandDuration:0;if(f){hs.animate(this.wrapper,h.wrapper,0);hs.setStyles(this.wrapper,{opacity:0,visibility:"visible"});hs.animate(this.content,h.content,0);this.content.style.visibility="visible";hs.animate(this.wrapper,{opacity:1},j,null,function(){c.afterExpand()})}if(this.outline){this.outline.table.style.zIndex=this.wrapper.style.zIndex;var b=f||-1,d=this.outline.offset,a=f?3:d,g=f?d:3;for(var e=a;b*e<=b*g;e+=b,j+=25){(function(){var i=f?g-e:a-e;setTimeout(function(){c.outline.setPosition(0,i,1)},j)})()}}if(f){}else{setTimeout(function(){if(c.outline){c.outline.destroy(c.preserveContent)}c.destroyOverlays();hs.animate(c.wrapper,{opacity:0},hs.restoreDuration,null,function(){c.afterClose()})},j)}},crossfade:function(g,m,o){if(!g){return}var f=this,p=this.last,l=this.x,k=this.y,d=p.x,b=p.y,a=this.wrapper,i=this.content,c=this.overlayBox;hs.removeEventListener(document,"mousemove",hs.dragHandler);hs.setStyles(i,{width:(l.imgSize||l.size)+"px",height:(k.imgSize||k.size)+"px"});if(c){c.style.overflow="visible"}this.outline=p.outline;if(this.outline){this.outline.exp=f}p.outline=null;var h=hs.createElement("div",{className:"highslide-"+this.contentType},{position:"absolute",zIndex:4,overflow:"hidden",display:"none"});var j={oldImg:p,newImg:this};for(var e in j){this[e]=j[e].content.cloneNode(1);hs.setStyles(this[e],{position:"absolute",border:0,visibility:"visible"});h.appendChild(this[e])}a.appendChild(h);if(c){c.className="";a.appendChild(c)}h.style.display="";p.content.style.display="none";if(hs.safari&&hs.uaVersion<525){this.wrapper.style.visibility="visible"}hs.animate(a,{width:l.size},{duration:hs.transitionDuration,step:function(u,r){var x=r.pos,q=1-x;var w,s={},t=["pos","size","p1","p2"];for(var v in t){w=t[v];s["x"+w]=Math.round(q*d[w]+x*l[w]);s["y"+w]=Math.round(q*b[w]+x*k[w]);s.ximgSize=Math.round(q*(d.imgSize||d.size)+x*(l.imgSize||l.size));s.ximgPad=Math.round(q*d.get("imgPad")+x*l.get("imgPad"));s.yimgSize=Math.round(q*(b.imgSize||b.size)+x*(k.imgSize||k.size));s.yimgPad=Math.round(q*b.get("imgPad")+x*k.get("imgPad"))}if(f.outline){f.outline.setPosition({x:s.xpos,y:s.ypos,w:s.xsize+s.xp1+s.xp2+2*l.cb,h:s.ysize+s.yp1+s.yp2+2*k.cb})}p.wrapper.style.clip="rect("+(s.ypos-b.pos)+"px, "+(s.xsize+s.xp1+s.xp2+s.xpos+2*d.cb-d.pos)+"px, "+(s.ysize+s.yp1+s.yp2+s.ypos+2*b.cb-b.pos)+"px, "+(s.xpos-d.pos)+"px)";hs.setStyles(i,{top:(s.yp1+k.get("imgPad"))+"px",left:(s.xp1+l.get("imgPad"))+"px",marginTop:(k.pos-s.ypos)+"px",marginLeft:(l.pos-s.xpos)+"px"});hs.setStyles(a,{top:s.ypos+"px",left:s.xpos+"px",width:(s.xp1+s.xp2+s.xsize+2*l.cb)+"px",height:(s.yp1+s.yp2+s.ysize+2*k.cb)+"px"});hs.setStyles(h,{width:(s.ximgSize||s.xsize)+"px",height:(s.yimgSize||s.ysize)+"px",left:(s.xp1+s.ximgPad)+"px",top:(s.yp1+s.yimgPad)+"px",visibility:"visible"});hs.setStyles(f.oldImg,{top:(b.pos-s.ypos+b.p1-s.yp1+b.get("imgPad")-s.yimgPad)+"px",left:(d.pos-s.xpos+d.p1-s.xp1+d.get("imgPad")-s.ximgPad)+"px"});hs.setStyles(f.newImg,{opacity:x,top:(k.pos-s.ypos+k.p1-s.yp1+k.get("imgPad")-s.yimgPad)+"px",left:(l.pos-s.xpos+l.p1-s.xp1+l.get("imgPad")-s.ximgPad)+"px"});if(c){hs.setStyles(c,{width:s.xsize+"px",height:s.ysize+"px",left:(s.xp1+l.cb)+"px",top:(s.yp1+k.cb)+"px"})}},complete:function(){a.style.visibility=i.style.visibility="visible";i.style.display="block";hs.discardElement(h);f.afterExpand();p.afterClose();f.last=null}})},reuseOverlay:function(d,c){if(!this.last){return false}for(var b=0;b'+b+"
    "+this[this.numberPosition].innerHTML}}},initSlideshow:function(){if(!this.last){for(var c=0;cthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"))}var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;ae.parentNode.offsetWidth){e.style.width="100%"}}else{if(e.parentNode!=this.overlayBox){this.overlayBox.appendChild(e)}}if(/left$/.test(f)){e.style.left=b+"px"}if(/center$/.test(f)){hs.setStyles(e,{left:"50%",marginLeft:(b-Math.round(e.offsetWidth/2))+"px"})}if(/right$/.test(f)){e.style.right=-b+"px"}if(/^leftpanel$/.test(f)){hs.setStyles(e,{right:"100%",marginRight:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p1=e.offsetWidth}else{if(/^rightpanel$/.test(f)){hs.setStyles(e,{left:"100%",marginLeft:this.x.cb+"px",top:-this.y.cb+"px",bottom:-this.y.cb+"px",overflow:"auto"});this.x.p2=e.offsetWidth}}var d=e.parentNode.offsetHeight;e.style.height="auto";if(c&&e.offsetHeight>d){e.style.height=hs.ieLt7?d+"px":"100%"}if(/^top/.test(f)){e.style.top=a+"px"}if(/^middle/.test(f)){hs.setStyles(e,{top:"50%",marginTop:(a-Math.round(e.offsetHeight/2))+"px"})}if(/^bottom/.test(f)){e.style.bottom=-a+"px"}if(/^above$/.test(f)){hs.setStyles(e,{left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",bottom:"100%",marginBottom:this.y.cb+"px",width:"auto"});this.y.p1=e.offsetHeight}else{if(/^below$/.test(f)){hs.setStyles(e,{position:"relative",left:(-this.x.p1-this.x.cb)+"px",right:(-this.x.p2-this.x.cb)+"px",top:"100%",marginTop:this.y.cb+"px",width:"auto"});this.y.p2=e.offsetHeight;e.style.position="absolute"}}},getOverlays:function(){this.getInline(["heading","caption"],true);this.getNumber();if(this.heading&&this.dragByHeading){this.heading.className+=" highslide-move"}if(hs.showCredits){this.writeCredits()}for(var a=0;a0){F=0}if(C>0){C=0}if(C0?G[L-1].parentNode[B]:w[B],A=w[B]+w[H]+(G[L+1]?G[L+1].parentNode[H]:0);if(A>x-v){C=x-A}else{if(J<-v){C=-J}}}var E=w[B]+(w[H]-g[H])/2+C;hs.animate(s,h?{left:C}:{top:C},null,"easeOutQuad");hs.animate(g,h?{left:E}:{top:E},null,"easeOutQuad");l.style.display=C<0?"block":"none";t.style.display=(C>F)?"block":"none"}var j=hs.anchors.groups[hs.expanders[k.expKey].slideshowGroup||"none"],f=k.thumbstrip,m=f.mode||"horizontal",u=(m=="float"),o=u?["div","ul","li","span"]:["table","tbody","tr","td"],h=(m=="horizontal"),r=hs.createElement("div",{className:"highslide-thumbstrip highslide-thumbstrip-"+m,innerHTML:'
    <'+o[0]+"><"+o[1]+">
    '},{display:"none"},hs.container),e=r.childNodes,n=e[0],l=e[1],t=e[2],g=e[3],s=n.firstChild,a=r.getElementsByTagName(o[1])[0],b;for(var q=0;q35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){u m={18:{9C:\'9t\',9f:\'bb...\',9g:\'8o 1L ba\',9Y:\'8o 1L bd 1L bw\',7p:\'bx 1L bl B (f)\',aS:\'bp by 8H 8I\',b0:\'bn 1L bj 8H 8I bz\',8T:\'8C\',8U:\'8D\',8w:\'8E\',8v:\'8J\',8t:\'8J (bv)\',bu:\'bg\',8P:\'8G\',8A:\'8G 1g (8B)\',8N:\'8F\',8M:\'8F 1g (8B)\',8S:\'8C (8l 14)\',8O:\'8D (8l 2V)\',8s:\'8E\',8r:\'1:1\',3n:\'b9 %1 bq %2\',84:\'8o 1L 26 2M, c4 8L c6 1L 3i. c0 8l c1 K 1p 8L 3c.\'},4p:\'L/bX/\',5M:\'bI.4y\',5m:\'bK.4y\',7f:53,8p:53,4L:15,9M:15,4j:15,9K:15,4z:bE,91:0.75,9j:J,7A:5,3B:2,bP:3,4R:1f,at:\'4g 2V\',aq:1,an:J,aF:\'bQ://L.c2/\',aE:\'bO\',8V:J,8e:[\'a\'],2Z:[],aL:53,3I:0,7G:50,3Q:\'2n\',6H:\'2n\',8y:H,8x:H,7v:J,5c:8R,5w:8R,5q:J,1B:\'bR-bS\',a6:{2B:\'<7V>\'+\'<1R 2s="L-3c">\'+\'\'+\'<23>{m.18.8T}\'+\'\'+\'<1R 2s="L-3r">\'+\'\'+\'<23>{m.18.8P}\'+\'\'+\'<1R 2s="L-2S">\'+\'\'+\'<23>{m.18.8N}\'+\'\'+\'<1R 2s="L-1p">\'+\'\'+\'<23>{m.18.8U}\'+\'\'+\'<1R 2s="L-3i">\'+\'\'+\'<23>{m.18.8w}\'+\'\'+\'<1R 2s="L-1a-2D">\'+\'\'+\'<23>{m.18.8r}\'+\'\'+\'<1R 2s="L-26">\'+\'\'+\'<23>{m.18.8v}\'+\'\'+\'\'},4X:[],6Z:J,W:[],6V:[\'5q\',\'30\',\'3Q\',\'6H\',\'8y\',\'8x\',\'1B\',\'3B\',\'bG\',\'bH\',\'bJ\',\'8u\',\'bW\',\'cd\',\'cc\',\'8z\',\'aW\',\'7v\',\'3D\',\'5b\',\'2Z\',\'3I\',\'M\',\'1b\',\'7B\',\'5c\',\'5w\',\'6F\',\'6R\',\'9i\',\'2t\',\'2r\',\'aT\',\'aD\',\'1G\'],1x:[],4V:0,7q:{x:[\'9H\',\'14\',\'4i\',\'2V\',\'9L\'],y:[\'4T\',\'11\',\'8h\',\'4g\',\'6D\']},66:{},8z:{},8u:{},3u:[],4U:[],48:{},7I:{},5G:[],21:/ca\\/4\\.0/.19(4B.5r)?8:8n((4B.5r.5Y().2H(/.+(?:9y|c9|ce|2m)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),2m:(R.52&&!1A.3q),4u:/cf/.19(4B.5r),5Z:/ci.+9y:1\\.[0-8].+cg/.19(4B.5r),$:z(1M){q(1M)D R.c7(1M)},2p:z(2o,3j){2o[2o.S]=3j},1c:z(9m,4k,3P,8b,9n){u C=R.1c(9m);q(4k)m.3b(C,4k);q(9n)m.V(C,{bY:0,aM:\'1F\',6S:0});q(3P)m.V(C,3P);q(8b)8b.2E(C);D C},3b:z(C,4k){K(u x 2T 4k)C[x]=4k[x];D C},V:z(C,3P){K(u x 2T 3P){q(m.4d&&x==\'1n\'){q(3P[x]>0.99)C.G.c5(\'5j\');I C.G.5j=\'9o(1n=\'+(3P[x]*28)+\')\'}I C.G[x]=3P[x]}},2b:z(C,Z,31){u 41,4v,47;q(1q 31!=\'6q\'||31===H){u 36=9V;31={3J:36[2],2r:36[3],63:36[4]}}q(1q 31.3J!=\'3n\')31.3J=53;31.2r=1d[31.2r]||1d.93;31.5S=m.3b({},Z);K(u 35 2T Z){u e=24 m.1E(C,31,35);41=8n(m.7U(C,35))||0;4v=8n(Z[35]);47=35!=\'1n\'?\'F\':\'\';e.3F(41,4v,47)}},7U:z(C,Z){q(C.G[Z]){D C.G[Z]}I q(R.6T){D R.6T.9P(C,H).9Q(Z)}I{q(Z==\'1n\')Z=\'5j\';u 3j=C.bf[Z.2j(/\\-(\\w)/g,z(a,b){D b.92()})];q(Z==\'5j\')3j=3j.2j(/9o\\(1n=([0-9]+)\\)/,z(a,b){D b/28});D 3j===\'\'?1:3j}},6v:z(){u d=R,w=1A,5d=d.6i&&d.6i!=\'7P\'?d.4l:d.3x,4d=m.2m&&(m.21<9||1q 9l==\'1C\');u M=4d?5d.8m:(d.4l.8m||5J.b2),1b=4d?5d.aK:5J.b3;m.3S={M:M,1b:1b,5l:4d?5d.5l:9l,5i:4d?5d.5i:be};D m.3S},6g:z(C){u p={x:C.4f,y:C.9h};4o(C.9k){C=C.9k;p.x+=C.4f;p.y+=C.9h;q(C!=R.3x&&C!=R.4l){p.x-=C.5l;p.y-=C.5i}}D p},2D:z(a,2O,3F,T){q(!a)a=m.1c(\'a\',H,{1u:\'1F\'},m.22);q(1q a.5u==\'z\')D 2O;2d{24 m.4Z(a,2O,3F);D 1f}1W(e){D J}},a4:z(C,4F,U){u 1i=C.2L(4F);K(u i=0;i<1i.S;i++){q((24 5X(U)).19(1i[i].U)){D 1i[i]}}D H},a7:z(s){s=s.2j(/\\s/g,\' \');u 1T=/{m\\.18\\.([^}]+)\\}/g,4S=s.2H(1T),18;q(4S)K(u i=0;i<4S.S;i++){18=4S[i].2j(1T,"$1");q(1q m.18[18]!=\'1C\')s=s.2j(4S[i],m.18[18])}D s},9w:z(){u 7J=0,6j=-1,W=m.W,A,1r;K(u i=0;i7J){7J=1r;6j=i}}}q(6j==-1)m.3v=-1;I W[6j].43()},5h:z(a,5p){a.5u=a.2G;u p=a.5u?a.5u():H;a.5u=H;D(p&&1q p[5p]!=\'1C\')?p[5p]:(1q m[5p]!=\'1C\'?m[5p]:H)},73:z(a){u 1G=m.5h(a,\'1G\');q(1G)D 1G;D a.1Y},4W:z(1M){u 3w=m.$(1M),45=m.7I[1M],a={};q(!3w&&!45)D H;q(!45){45=3w.7j(J);45.1M=\'\';m.7I[1M]=45;D 3w}I{D 45.7j(J)}},3H:z(d){q(d)m.8j.2E(d);m.8j.2R=\'\'},1m:z(A){q(!m.2a){7E=J;m.2a=m.1c(\'X\',{U:\'L-bk L-1Z-B\',4x:\'\',2G:z(){m.26()}},{1e:\'1D\',1n:0},m.22,J);q(/(bm|bt|bo|br)/.19(4B.5r)){u 3x=R.3x;z 7H(){m.V(m.2a,{M:3x.bA+\'F\',1b:3x.b5+\'F\'})}7H();m.1Q(1A,\'3O\',7H)}}m.2a.G.1u=\'\';u 7E=m.2a.4x==\'\';m.2a.4x+=\'|\'+A.P;q(7E){q(m.5Z&&m.9q)m.V(m.2a,{9e:\'5O(\'+m.4p+\'bh.97)\',1n:1});I m.2b(m.2a,{1n:A.3I},m.7G)}},7Q:z(P){q(!m.2a)D;q(1q P!=\'1C\')m.2a.4x=m.2a.4x.2j(\'|\'+P,\'\');q((1q P!=\'1C\'&&m.2a.4x!=\'\')||(m.1U&&m.5h(m.1U,\'3I\')))D;q(m.5Z&&m.9q)m.2a.G.1u=\'1F\';I m.2b(m.2a,{1n:0},m.7G,H,z(){m.2a.G.1u=\'1F\'})},83:z(6n,A){u Y=A||m.2h();A=Y;q(m.1U)D 1f;I m.Y=Y;m.49(R,1A.3q?\'5P\':\'5Q\',m.4N);2d{m.1U=6n;6n.2G()}1W(e){m.Y=m.1U=H}2d{q(!6n||A.2Z[1]!=\'3Y\')A.26()}1W(e){}D 1f},6d:z(C,1P){u A=m.2h(C);q(A)D m.83(A.7b(1P),A);I D 1f},3c:z(C){D m.6d(C,-1)},1p:z(C){D m.6d(C,1)},4N:z(e){q(!e)e=1A.29;q(!e.2i)e.2i=e.7l;q(1q e.2i.9x!=\'1C\')D J;u A=m.2h();u 1P=H;8Y(e.cq){1I 70:q(A)A.6k();D J;1I 32:1P=2;5B;1I 34:1I 39:1I 40:1P=1;5B;1I 8:1I 33:1I 37:1I 38:1P=-1;5B;1I 27:1I 13:1P=0}q(1P!==H){q(1P!=2)m.49(R,1A.3q?\'5P\':\'5Q\',m.4N);q(!m.8V)D J;q(e.4D)e.4D();I e.9W=1f;q(A){q(1P==0){A.26()}I q(1P==2){q(A.1g)A.1g.ad()}I{q(A.1g)A.1g.2S();m.6d(A.P,1P)}D 1f}}D J},d5:z(O){m.2p(m.1x,m.3b(O,{1H:\'1H\'+m.4V++}))},d4:z(1h){u 2C=1h.2t;q(1q 2C==\'6q\'){K(u i=0;i<2C.S;i++){u o={};K(u x 2T 1h)o[x]=1h[x];o.2t=2C[i];m.2p(m.4U,o)}}I{m.2p(m.4U,1h)}},86:z(7N,65){u C,1T=/^L-Q-([0-9]+)$/;C=7N;4o(C.1O){q(C.5F!==1C)D C.5F;q(C.1M&&1T.19(C.1M))D C.1M.2j(1T,"$1");C=C.1O}q(!65){C=7N;4o(C.1O){q(C.4F&&m.5L(C)){K(u P=0;P1)D J;q(!e.2i)e.2i=e.7l;u C=e.2i;4o(C.1O&&!(/L-(2M|3i|5W|3O)/.19(C.U))){C=C.1O}u A=m.2h(C);q(A&&(A.8c||!A.55))D J;q(A&&e.T==\'aH\'){q(e.2i.9x)D J;u 2H=C.U.2H(/L-(2M|3i|3O)/);q(2H){m.2I={A:A,T:2H[1],14:A.x.E,M:A.x.B,11:A.y.E,1b:A.y.B,9v:e.6c,9u:e.68};m.1Q(R,\'6o\',m.5V);q(e.4D)e.4D();q(/L-(2M|5W)-89/.19(A.17.U)){A.43();m.7R=J}D 1f}}I q(e.T==\'aA\'){m.49(R,\'6o\',m.5V);q(m.2I){q(m.4I&&m.2I.T==\'2M\')m.2I.A.17.G.46=m.4I;u 3y=m.2I.3y;q(!3y&&!m.7R&&!/(3i|3O)/.19(m.2I.T)){A.26()}I q(3y||(!3y&&m.d8)){m.2I.A.5s(\'1s\')}m.7R=1f;m.2I=H}I q(/L-2M-89/.19(C.U)){C.G.46=m.4I}}D 1f},5V:z(e){q(!m.2I)D J;q(!e)e=1A.29;u a=m.2I,A=a.A;a.5T=e.6c-a.9v;a.7o=e.68-a.9u;u 7s=1d.ck(1d.9r(a.5T,2)+1d.9r(a.7o,2));q(!a.3y)a.3y=(a.T!=\'2M\'&&7s>0)||(7s>(m.cX||5));q(a.3y&&e.6c>5&&e.68>5){q(a.T==\'3O\')A.3O(a);I{A.7C(a.14+a.5T,a.11+a.7o);q(a.T==\'2M\')A.17.G.46=\'3i\'}}D 1f},8Q:z(e){2d{q(!e)e=1A.29;u 6C=/cW/i.19(e.T);q(!e.2i)e.2i=e.7l;q(!e.6E)e.6E=6C?e.db:e.di;u A=m.2h(e.2i);q(!A.55)D;q(!A||!e.6E||m.2h(e.6E,J)==A||m.2I)D;K(u i=0;i=k.1h.3J+k.80){k.4c=k.4v;k.E=k.7X=1;k.8a();k.1h.5S[k.Z]=J;u 8d=J;K(u i 2T k.1h.5S)q(k.1h.5S[i]!==J)8d=1f;q(8d){q(k.1h.63)k.1h.63.95(k.2F)}D 1f}I{u n=t-k.80;k.7X=n/k.1h.3J;k.E=k.1h.2r(n,0,1,k.1h.3J);k.4c=k.41+((k.4v-k.41)*k.E);k.8a()}D J}};m.3b(m.1E,{3k:{1n:z(1E){m.V(1E.2F,{1n:1E.4c})},96:z(1E){2d{q(1E.2F.G&&1E.2F.G[1E.Z]!=H)1E.2F.G[1E.Z]=1E.4c+1E.47;I 1E.2F[1E.Z]=1E.4c}1W(e){}}}});m.4O=z(1B,3V){k.3V=3V;k.1B=1B;u v=m.21,3L;k.7h=m.2m&&m.21<7;q(!1B){q(3V)3V();D}m.71();k.1V=m.1c(\'1V\',{cr:0},{1e:\'1s\',1j:\'2v\',cC:\'cD\',M:0},m.22,J);u 4a=m.1c(\'4a\',H,H,k.1V,1);k.2e=[];K(u i=0;i<=8;i++){q(i%3==0)3L=m.1c(\'3L\',H,{1b:\'2n\'},4a,J);k.2e[i]=m.1c(\'2e\',H,H,3L,J);u G=i!=4?{cP:0,cO:0}:{1j:\'8i\'};m.V(k.2e[i],G)}k.2e[4].U=1B+\' L-16\';k.98()};m.4O.5o={98:z(){u 1G=m.4p+(m.cN||"cQ/")+k.1B+".97";u 9a=m.4u&&m.21<6t?m.22:H;k.3d=m.1c(\'1y\',H,{1j:\'2v\',11:\'-4P\'},9a,J);u 7T=k;k.3d.64=z(){7T.9b()};k.3d.1G=1G},9b:z(){u o=k.1k=k.3d.M/4,E=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1m={1b:(2*o)+\'F\',M:(2*o)+\'F\'};K(u i=0;i<=8;i++){q(E[i]){q(k.7h){u w=(i==1||i==7)?\'28%\':k.3d.M+\'F\';u X=m.1c(\'X\',H,{M:\'28%\',1b:\'28%\',1j:\'8i\',3a:\'1s\'},k.2e[i],J);m.1c(\'X\',H,{5j:"cL:cG.cF.cE(cH=cI, 1G=\'"+k.3d.1G+"\')",1j:\'2v\',M:w,1b:k.3d.1b+\'F\',14:(E[i][0]*o)+\'F\',11:(E[i][1]*o)+\'F\'},X,J)}I{m.V(k.2e[i],{9e:\'5O(\'+k.3d.1G+\') \'+(E[i][0]*o)+\'F \'+(E[i][1]*o)+\'F\'})}q(1A.3q&&(i==3||i==5))m.1c(\'X\',H,1m,k.2e[i],J);m.V(k.2e[i],1m)}}k.3d=H;q(m.48[k.1B])m.48[k.1B].5x();m.48[k.1B]=k;q(k.3V)k.3V()},3Z:z(E,1k,9d,3t,2r){u A=k.A,cK=A.Q.G,1k=1k||0,E=E||{x:A.x.E+1k,y:A.y.E+1k,w:A.x.N(\'1N\')-2*1k,h:A.y.N(\'1N\')-2*1k};q(9d)k.1V.G.1e=(E.h>=4*k.1k)?\'1D\':\'1s\';m.V(k.1V,{14:(E.x-k.1k)+\'F\',11:(E.y-k.1k)+\'F\',M:(E.w+2*k.1k)+\'F\'});E.w-=2*k.1k;E.h-=2*k.1k;m.V(k.2e[4],{M:E.w>=0?E.w+\'F\':0,1b:E.h>=0?E.h+\'F\':0});q(k.7h)k.2e[3].G.1b=k.2e[5].G.1b=k.2e[4].G.1b},5x:z(9c){q(9c)k.1V.G.1e=\'1s\';I m.3H(k.1V)}};m.6r=z(A,1m){k.A=A;k.1m=1m;k.3m=1m==\'x\'?\'ah\':\'au\';k.3G=k.3m.5Y();k.4M=1m==\'x\'?\'af\':\'ag\';k.6B=k.4M.5Y();k.7d=1m==\'x\'?\'a5\':\'a8\';k.90=k.7d.5Y();k.1o=k.2z=0};m.6r.5o={N:z(P){8Y(P){1I\'78\':D k.1K+k.3o+(k.t-m.1S[\'1k\'+k.3m])/2;1I\'6Q\':D k.E+k.cb+k.1o+(k.B-m.1S[\'1k\'+k.3m])/2;1I\'1N\':D k.B+2*k.cb+k.1o+k.2z;1I\'4n\':D k.3W-k.2P-k.3X;1I\'7a\':D k.N(\'4n\')-2*k.cb-k.1o-k.2z;1I\'5t\':D k.E-(k.A.16?k.A.16.1k:0);1I\'7M\':D k.N(\'1N\')+(k.A.16?2*k.A.16.1k:0);1I\'2f\':D k.1z?1d.2y((k.B-k.1z)/2):0}},74:z(){k.cb=(k.A.17[\'1k\'+k.3m]-k.t)/2;k.3X=m[\'6S\'+k.7d]},6X:z(){k.t=k.A.C[k.3G]?7L(k.A.C[k.3G]):k.A.C[\'1k\'+k.3m];k.1K=k.A.1K[k.1m];k.3o=(k.A.C[\'1k\'+k.3m]-k.t)/2;q(k.1K==0||k.1K==-1){k.1K=(m.3S[k.3G]/2)+m.3S[\'1J\'+k.4M]}},6P:z(){u A=k.A;k.2k=\'2n\';q(A.6H==\'4i\')k.2k=\'4i\';I q(24 5X(k.6B).19(A.3Q))k.2k=H;I q(24 5X(k.90).19(A.3Q))k.2k=\'56\';k.E=k.1K-k.cb+k.3o;q(k.6R&&k.1m==\'x\')A.6F=1d.2X(A.6F||k.1a,A.6R*k.1a/A.y.1a);k.B=1d.2X(k.1a,A[\'56\'+k.3m]||k.1a);k.2q=A.5q?1d.2X(A[\'2X\'+k.3m],k.1a):k.1a;q(A.3A&&A.30){k.B=A[k.3G];k.1z=k.1a}q(k.1m==\'x\'&&m.4R)k.2q=A.5c;k.2i=A[\'2i\'+k.1m.92()];k.2P=m[\'6S\'+k.4M];k.1J=m.3S[\'1J\'+k.4M];k.3W=m.3S[k.3G]},82:z(i){u A=k.A;q(A.3A&&(A.30||m.4R)){k.1z=i;k.B=1d.56(k.B,k.1z);A.17.G[k.6B]=k.N(\'2f\')+\'F\'}I k.B=i;A.17.G[k.3G]=i+\'F\';A.Q.G[k.3G]=k.N(\'1N\')+\'F\';q(A.16)A.16.3Z();q(k.1m==\'x\'&&A.1l)A.4K(J);q(k.1m==\'x\'&&A.1g&&A.3A){q(i==k.1a)A.1g.4J(\'1a-2D\');I A.1g.3T(\'1a-2D\')}},7Z:z(i){k.E=i;k.A.Q.G[k.6B]=i+\'F\';q(k.A.16)k.A.16.3Z()}};m.4Z=z(a,2O,3F,2Q){q(R.cs&&m.2m&&!m.6I){m.1Q(R,\'3s\',z(){24 m.4Z(a,2O,3F,2Q)});D}k.a=a;k.3F=3F;k.2Q=2Q||\'2M\';k.3A=!k.cp;m.6Z=1f;k.1x=[];k.Y=m.Y;m.Y=H;m.71();u P=k.P=m.W.S;K(u i=0;ip.1J+p.3W-p.3X)p.E=p.1J+p.3W-p.B-p.2P-p.3X-p.1o-p.2z;q(p.E(k.x.1z||k.x.B)){k.ap();q(k.1x.S==1)k.4K()}}k.aG()}1W(e){k.7D(e)}},2k:z(p,4C){u 4b,2l=p.2i,1m=p==k.x?\'x\':\'y\';q(2l&&2l.2H(/ /)){4b=2l.dh(\' \');2l=4b[0]}q(2l&&m.$(2l)){p.E=m.6g(m.$(2l))[1m];q(4b&&4b[1]&&4b[1].2H(/^[-]?[0-9]+F$/))p.E+=7L(4b[1]);q(p.Bp.1J+p.3W-p.3X){q(!4C&&79&&4q){p.B=1d.2X(p.B,p.N(1m==\'y\'?\'4n\':\'7a\'))}I q(p.N(\'1N\')2x){ 2A=2Y*2x;q(2Ak.5w&&x.B>k.5c&&y.N(\'1N\')>y.N(\'4n\')){y.B-=10;q(2x)x.B=y.B*2x;k.4K(0,1);3e=J}}D 3e},aG:z(){u x=k.x,y=k.y;k.5s(\'1s\');q(k.1g&&k.1g.2g)k.1g.2g.4G();k.8f(1,{Q:{M:x.N(\'1N\'),1b:y.N(\'1N\'),14:x.E,11:y.E},17:{14:x.1o+x.N(\'2f\'),11:y.1o+y.N(\'2f\'),M:x.1z||x.B,1b:y.1z||y.B}},m.7f)},8f:z(1t,1L,3t){u 5k=k.2Z,6M=1t?(k.Y?k.Y.a:H):m.1U,t=(5k[1]&&6M&&m.5h(6M,\'2Z\')[1]==5k[1])?5k[1]:5k[0];q(k[t]&&t!=\'2D\'){k[t](1t,1L);D}q(k.16&&!k.3B){q(1t)k.16.3Z();I k.16.5x()}q(!1t)k.67();u A=k,x=A.x,y=A.y,2r=k.2r;q(!1t)2r=k.aT||2r;u ay=1t?z(){q(A.16)A.16.1V.G.1e="1D";4r(z(){A.62()},50)}:z(){A.5v()};q(1t)m.V(k.Q,{M:x.t+\'F\',1b:y.t+\'F\'});q(k.aD){m.V(k.Q,{1n:1t?0:1});m.3b(1L.Q,{1n:1t})}m.2b(k.Q,1L.Q,{3J:3t,2r:2r,3k:z(3j,36){q(A.16&&A.3B&&36.Z==\'11\'){u 4Q=1t?36.E:1-36.E;u E={w:x.t+(x.N(\'1N\')-x.t)*4Q,h:y.t+(y.N(\'1N\')-y.t)*4Q,x:x.1K+(x.E-x.1K)*4Q,y:y.1K+(y.E-y.1K)*4Q};A.16.3Z(E,0,1)}}});m.2b(k.17,1L.17,3t,2r,ay);q(1t){k.Q.G.1e=\'1D\';k.17.G.1e=\'1D\';k.a.U+=\' L-42-3Q\'}},5n:z(1t,1L){k.3B=1f;u A=k,t=1t?m.7f:0;q(1t){m.2b(k.Q,1L.Q,0);m.V(k.Q,{1n:0,1e:\'1D\'});m.2b(k.17,1L.17,0);k.17.G.1e=\'1D\';m.2b(k.Q,{1n:1},t,H,z(){A.62()})}q(k.16){k.16.1V.G.1r=k.Q.G.1r;u 5D=1t||-1,1k=k.16.1k,7c=1t?3:1k,6Y=1t?1k:3;K(u i=7c;5D*i<=5D*6Y;i+=5D,t+=25){(z(){u o=1t?6Y-i:7c-i;4r(z(){A.16.3Z(0,o,1)},t)})()}}q(1t){}I{4r(z(){q(A.16)A.16.5x(A.cz);A.67();m.2b(A.Q,{1n:0},m.8p,H,z(){A.5v()})},t)}},3Y:z(1t,1L,72){q(!1t)D;u A=k,Y=k.Y,x=k.x,y=k.y,2W=Y.x,2U=Y.y,Q=k.Q,17=k.17,1l=k.1l;m.49(R,\'6o\',m.5V);m.V(17,{M:(x.1z||x.B)+\'F\',1b:(y.1z||y.B)+\'F\'});q(1l)1l.G.3a=\'1D\';k.16=Y.16;q(k.16)k.16.A=A;Y.16=H;u 4s=m.1c(\'X\',{U:\'L-\'+k.2Q},{1j:\'2v\',1r:4,3a:\'1s\',1u:\'1F\'});u 77={aO:Y,aR:k};K(u n 2T 77){k[n]=77[n].17.7j(1);m.V(k[n],{1j:\'2v\',aM:0,1e:\'1D\'});4s.2E(k[n])}Q.2E(4s);q(1l){1l.U=\'\';Q.2E(1l)}4s.G.1u=\'\';Y.17.G.1u=\'1F\';q(m.4u&&m.21<6t){k.Q.G.1e=\'1D\'}m.2b(Q,{M:x.B},{3J:m.aL,3k:z(3j,36){u E=36.E,3U=1-E;u Z,B={},6N=[\'E\',\'B\',\'1o\',\'2z\'];K(u n 2T 6N){Z=6N[n];B[\'x\'+Z]=1d.2y(3U*2W[Z]+E*x[Z]);B[\'y\'+Z]=1d.2y(3U*2U[Z]+E*y[Z]);B.aJ=1d.2y(3U*(2W.1z||2W.B)+E*(x.1z||x.B));B.6p=1d.2y(3U*2W.N(\'2f\')+E*x.N(\'2f\'));B.aN=1d.2y(3U*(2U.1z||2U.B)+E*(y.1z||y.B));B.6f=1d.2y(3U*2U.N(\'2f\')+E*y.N(\'2f\'))}q(A.16)A.16.3Z({x:B.2K,y:B.2J,w:B.58+B.3C+B.6O+2*x.cb,h:B.5a+B.3z+B.6W+2*y.cb});Y.Q.G.ct=\'cn(\'+(B.2J-2U.E)+\'F, \'+(B.58+B.3C+B.6O+B.2K+2*2W.cb-2W.E)+\'F, \'+(B.5a+B.3z+B.6W+B.2J+2*2U.cb-2U.E)+\'F, \'+(B.2K-2W.E)+\'F)\';m.V(17,{11:(B.3z+y.N(\'2f\'))+\'F\',14:(B.3C+x.N(\'2f\'))+\'F\',4j:(y.E-B.2J)+\'F\',4L:(x.E-B.2K)+\'F\'});m.V(Q,{11:B.2J+\'F\',14:B.2K+\'F\',M:(B.3C+B.6O+B.58+2*x.cb)+\'F\',1b:(B.3z+B.6W+B.5a+2*y.cb)+\'F\'});m.V(4s,{M:(B.aJ||B.58)+\'F\',1b:(B.aN||B.5a)+\'F\',14:(B.3C+B.6p)+\'F\',11:(B.3z+B.6f)+\'F\',1e:\'1D\'});m.V(A.aO,{11:(2U.E-B.2J+2U.1o-B.3z+2U.N(\'2f\')-B.6f)+\'F\',14:(2W.E-B.2K+2W.1o-B.3C+2W.N(\'2f\')-B.6p)+\'F\'});m.V(A.aR,{1n:E,11:(y.E-B.2J+y.1o-B.3z+y.N(\'2f\')-B.6f)+\'F\',14:(x.E-B.2K+x.1o-B.3C+x.N(\'2f\')-B.6p)+\'F\'});q(1l)m.V(1l,{M:B.58+\'F\',1b:B.5a+\'F\',14:(B.3C+x.cb)+\'F\',11:(B.3z+y.cb)+\'F\'})},63:z(){Q.G.1e=17.G.1e=\'1D\';17.G.1u=\'4H\';m.3H(4s);A.62();Y.5v();A.Y=H}})},9E:z(o,C){q(!k.Y)D 1f;K(u i=0;i\'+s+\'\'+k[k.5b].2R}}},aB:z(){q(!k.Y){K(u i=0;ik.x.N(\'5t\')+k.x.N(\'7M\'));u 9Z=(3g.y+3g.hk.y.N(\'5t\')+k.y.N(\'7M\'))}u 5H=m.86(1i[i]);q(!ax&&!9Z&&5H!=k.P){q(!2u){1i[i].5A(\'1s-by\',\'[\'+k.P+\']\');1i[i].88=1i[i].G[Z];1i[i].G[Z]=\'1s\'}I q(2u.9X(\'[\'+k.P+\']\')==-1){1i[i].5A(\'1s-by\',2u+\'[\'+k.P+\']\')}}I q((2u==\'[\'+k.P+\']\'||m.3v==5H)&&5H!=k.P){1i[i].5A(\'1s-by\',\'\');1i[i].G[Z]=1i[i].88||\'\'}I q(2u&&2u.9X(\'[\'+k.P+\']\')>-1){1i[i].5A(\'1s-by\',2u.2j(\'[\'+k.P+\']\',\'\'))}}}}},43:z(){k.Q.G.1r=m.4z+=2;K(u i=0;iO.1O.2c)O.G.M=\'28%\'}I q(O.1O!=k.1l)k.1l.2E(O);q(/14$/.19(p))O.G.14=5E+\'F\';q(/4i$/.19(p))m.V(O,{14:\'50%\',4L:(5E-1d.2y(O.2c/2))+\'F\'});q(/2V$/.19(p))O.G.2V=-5E+\'F\';q(/^9H$/.19(p)){m.V(O,{2V:\'28%\',9M:k.x.cb+\'F\',11:-k.y.cb+\'F\',4g:-k.y.cb+\'F\',3a:\'2n\'});k.x.1o=O.2c}I q(/^9L$/.19(p)){m.V(O,{14:\'28%\',4L:k.x.cb+\'F\',11:-k.y.cb+\'F\',4g:-k.y.cb+\'F\',3a:\'2n\'});k.x.2z=O.2c}u 8g=O.1O.3f;O.G.1b=\'2n\';q(4E&&O.3f>8g)O.G.1b=m.3E?8g+\'F\':\'28%\';q(/^11/.19(p))O.G.11=5C+\'F\';q(/^8h/.19(p))m.V(O,{11:\'50%\',4j:(5C-1d.2y(O.3f/2))+\'F\'});q(/^4g/.19(p))O.G.4g=-5C+\'F\';q(/^4T$/.19(p)){m.V(O,{14:(-k.x.1o-k.x.cb)+\'F\',2V:(-k.x.2z-k.x.cb)+\'F\',4g:\'28%\',9K:k.y.cb+\'F\',M:\'2n\'});k.y.1o=O.3f}I q(/^6D$/.19(p)){m.V(O,{1j:\'8i\',14:(-k.x.1o-k.x.cb)+\'F\',2V:(-k.x.2z-k.x.cb)+\'F\',11:\'28%\',4j:k.y.cb+\'F\',M:\'2n\'});k.y.2z=O.3f;O.G.1j=\'2v\'}},9J:z(){k.a2([\'6z\',\'dd\'],J);k.a3();q(k.6z&&k.7v)k.6z.U+=\' L-3i\';q(m.an)k.am();K(u i=0;i0)4w=0;q(2w>0)2w=0;q(2w<4w)2w=4w}I{K(u j=0;j0?as[i-1].1O[4f]:3M[4f],7x=3M[4f]+3M[2c]+(as[i+1]?as[i+1].1O[2c]:0);q(7x>6h-5z)2w=6h-7x;I q(7F<-5z)2w=-7F}u 7r=3M[4f]+(3M[2c]-6b[2c])/2+2w;m.2b(1V,3p?{14:2w}:{11:2w},H,\'7n\');m.2b(6b,3p?{14:7r}:{11:7r},H,\'7n\');7Y.G.1u=2w<0?\'4H\':\'1F\';85.G.1u=(2w>4w)?\'4H\':\'1F\'};u 51=m.3R.2N[m.W[1g.3N].2t||\'1F\'],1h=1g.2g,4m=1h.4m||\'ao\',81=(4m==\'bi\'),3K=81?[\'X\',\'7V\',\'1R\',\'23\']:[\'1V\',\'4a\',\'3L\',\'2e\'],3p=(4m==\'ao\'),4e=m.1c(\'X\',{U:\'L-2g L-2g-\'+4m,2R:\'\'+\'<\'+3K[0]+\'><\'+3K[1]+\'>\'+\'\'+\'\'+\'\'},{1u:\'1F\'},m.22),57=4e.6l,X=57[0],7Y=57[1],85=57[2],6b=57[3],1V=X.b7,4a=4e.2L(3K[1])[0],3L;K(u i=0;i<51.S;i++){q(i==0||!3p)3L=m.1c(3K[2],H,H,4a);(z(){u a=51[i],3M=m.1c(3K[3],H,H,3L),cj=i;m.1c(\'a\',{1Y:a.1Y,1X:a.1X,2G:z(){q(/L-42-3Q/.19(k.U))D 1f;m.2h(k).43();D m.83(a)},2R:m.9I?m.9I(a):a.2R},H,3M)})()}q(!81){7Y.2G=z(){1J(-1)};85.2G=z(){1J(1)};m.1Q(4a,R.c3!==1C?\'bB\':\'bZ\',z(e){u 3h=0;e=e||1A.29;q(e.9D){3h=e.9D/ch;q(m.3q)3h=-3h}I q(e.9N){3h=-e.9N/3}q(3h)1J(-3h*0.2);q(e.4D)e.4D();e.9W=1f})}D{6s:6s,4G:4G}};m.5U=m.18;u bC=m.4Z;q(m.2m&&1A==1A.11){(z(){2d{R.4l.bD(\'14\')}1W(e){4r(9V.bF,50);D}m.3s()})()}m.1Q(R,\'bL\',m.3s);m.1Q(1A,\'az\',m.3s);m.1Q(R,\'3s\',z(){q(m.5M||m.3I){u G=m.1c(\'G\',{T:\'bM/7U\'},H,R.2L(\'bT\')[0]),8k=R.6i==\'7P\';z 5e(7w,7W){q(m.2m&&(m.21<9||8k)){u Y=R.9S[R.9S.S-1];q(1q(Y.5e)=="6q")Y.5e(7w,7W)}I{G.2E(R.bU(7w+" {"+7W+"}"))}}z 5f(Z){D\'bV( ( ( bN = R.4l.\'+Z+\' ? R.4l.\'+Z+\' : R.3x.\'+Z+\' ) ) + \\\'F\\\' );\'}q(m.5M)5e(\'.L 1y\',\'46: 5O(\'+m.4p+m.5M+\'), 5R !c8;\');5e(\'.L-1Z-B\',m.2m&&(m.21<7||8k)?\'1j: 2v; \'+\'14:\'+5f(\'5l\')+\'11:\'+5f(\'5i\')+\'M:\'+5f(\'8m\')+\'1b:\'+5f(\'aK\'):\'1j: bc; M: 28%; 1b: 28%; 14: 0; 11: 0\')}});m.1Q(1A,\'3O\',z(){m.6v();q(m.1Z)K(u i=0;iHighslide JS
    ', + creditsTitle : 'Go to the Highslide JS homepage', + previousText : 'Previous', + nextText : 'Next', + moveText : 'Move', + closeText : 'Close', + closeTitle : 'Close (esc)', + resizeTitle : 'Resize', + playText : 'Play', + playTitle : 'Play slideshow (spacebar)', + pauseText : 'Pause', + pauseTitle : 'Pause slideshow (spacebar)', + previousTitle : 'Previous (arrow left)', + nextTitle : 'Next (arrow right)', + moveTitle : 'Move', + fullExpandText : '1:1', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing + +allowWidthReduction : false, +allowHeightReduction : true, +preserveContent : true, // Preserve changes made to the content and position of HTML popups. +objectLoadTime : 'before', // Load iframes 'before' or 'after' expansion. +cacheAjax : true, // Cache ajax popups for instant display. Can be overridden for each popup. +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +skin : { + contentWrapper: + '
    '+ + '
    '+ + '' +}, +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + + 'width', + 'height', + + 'contentId', + 'allowWidthReduction', + 'allowHeightReduction', + 'preserveContent', + 'maincontentId', + 'maincontentText', + 'maincontentEval', + 'objectType', + 'cacheAjax', + 'objectWidth', + 'objectHeight', + 'objectLoadTime', + 'swfOptions', + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +swfOptions: { flashvars: {}, params: {}, attributes: {} }, +timers : [], + +pendingOutlines : {}, +sleeping : [], +preloadTheseAjax : [], +cacheBindings : [], +cachedGets : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + if (type == 'html') { + for (var i = 0; i < hs.sleeping.length; i++) { + if (hs.sleeping[i] && hs.sleeping[i].a == a) { + hs.sleeping[i].awake(); + hs.sleeping[i] = null; + return false; + } + } + hs.hasHtmlExpanders = true; + } + try { + new hs.Expander(a, params, custom, type); + return false; + } catch (e) { return true; } +}, + +htmlExpand : function(a, params, custom) { + return hs.expand(a, params, custom, 'html'); +}, + +getSelfRendered : function() { + return hs.createElement('div', { + className: 'highslide-html-content', + innerHTML: hs.replaceLang(hs.skin.contentWrapper) + }); +}, +getElementByClass : function (el, tagName, className) { + var els = el.getElementsByTagName(tagName); + for (var i = 0; i < els.length; i++) { + if ((new RegExp(className)).test(els[i].className)) { + return els[i]; + } + } + return null; +}, +replaceLang : function(s) { + s = s.replace(/\s/g, ' '); + var re = /{hs\.lang\.([^}]+)\}/g, + matches = s.match(re), + lang; + if (matches) for (var i = 0; i < matches.length; i++) { + lang = matches[i].replace(re, "$1"); + if (typeof hs.lang[lang] != 'undefined') s = s.replace(matches[i], hs.lang[lang]); + } + return s; +}, + + +getCacheBinding : function (a) { + for (var i = 0; i < hs.cacheBindings.length; i++) { + if (hs.cacheBindings[i][0] == a) { + var c = hs.cacheBindings[i][1]; + hs.cacheBindings[i][1] = c.cloneNode(1); + return c; + } + } + return null; +}, + +preloadAjax : function (e) { + var arr = hs.getAnchors(); + for (var i = 0; i < arr.htmls.length; i++) { + var a = arr.htmls[i]; + if (hs.getParam(a, 'objectType') == 'ajax' && hs.getParam(a, 'cacheAjax')) + hs.push(hs.preloadTheseAjax, a); + } + + hs.preloadAjaxElement(0); +}, + +preloadAjaxElement : function (i) { + if (!hs.preloadTheseAjax[i]) return; + var a = hs.preloadTheseAjax[i]; + var cache = hs.getNode(hs.getParam(a, 'contentId')); + if (!cache) cache = hs.getSelfRendered(); + var ajax = new hs.Ajax(a, cache, 1); + ajax.onError = function () { }; + ajax.onLoad = function () { + hs.push(hs.cacheBindings, [a, cache]); + hs.preloadAjaxElement(i + 1); + }; + ajax.run(); +}, + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else { + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + else if (/highslide-html/.test(el.className) && hs.focusKey != exp.key) { + exp.focus(); + exp.doShowHide('hidden'); + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + + if (hs.dragArgs.exp.releaseMask) + hs.dragArgs.exp.releaseMask.style.display = 'none'; + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + if (exp.iframe) { + if (!exp.releaseMask) exp.releaseMask = hs.createElement('div', null, + { position: 'absolute', width: exp.x.size+'px', height: exp.y.size+'px', + left: exp.x.cb+'px', top: exp.y.cb+'px', zIndex: 4, background: (hs.ieLt9 ? 'white' : 'none'), + opacity: 0.01 }, + exp.wrapper, true); + if (exp.releaseMask.style.display == 'none') + exp.releaseMask.style.display = ''; + } + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + hs.ie6SSL = hs.ieLt7 && location.protocol == 'https:'; + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + hs.clearing = hs.createElement('div', null, + { clear: 'both', paddingTop: '1px' }, null, true); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [], htmls = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + else if (re[0] == 'hs.htmlExpand') hs.push(htmls, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images, htmls: htmls }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (exp.releaseMask) exp.releaseMask.style[this.wh] = i +'px'; + if (this.dim == 'y' && exp.iDoc && exp.body.style.height != 'auto') try { + exp.iDoc.body.style.overflow = 'auto'; + } catch (e) {} + if (exp.isHtml) { + var d = exp.scrollerDiv; + if (this.sizeDiff === undefined) + this.sizeDiff = exp.innerContent['offset'+ this.ucwh] - d['offset'+ this.ucwh]; + d.style[this.wh] = (this.size - this.sizeDiff) +'px'; + + if (this.dim == 'x') exp.mediumContent.style.width = 'auto'; + if (exp.body) exp.body.style[this.wh] = 'auto'; + } + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isHtml = (contentType == 'html'); + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +htmlCreate : function () { + + this.content = hs.getCacheBinding(this.a); + if (!this.content) + this.content = hs.getNode(this.contentId); + if (!this.content) + this.content = hs.getSelfRendered(); + this.getInline(['maincontent']); + if (this.maincontent) { + var body = hs.getElementByClass(this.content, 'div', 'highslide-body'); + if (body) body.appendChild(this.maincontent); + this.maincontent.style.display = 'block'; + } + + var innerContent = this.innerContent = this.content; + + if (/(swf|iframe)/.test(this.objectType)) this.setObjContainerSize(innerContent); + + // the content tree + hs.container.appendChild(this.wrapper); + hs.setStyles( this.wrapper, { + position: 'static', + padding: '0 '+ hs.marginRight +'px 0 '+ hs.marginLeft +'px' + }); + this.content = hs.createElement( + 'div', { + className: 'highslide-html' + }, { + position: 'relative', + zIndex: 3, + height: 0, + overflow: 'hidden' + }, + this.wrapper + ); + this.mediumContent = hs.createElement('div', null, null, this.content, 1); + this.mediumContent.appendChild(innerContent); + + hs.setStyles (innerContent, { + position: 'relative', + display: 'block', + direction: hs.lang.cssDirection || '' + }); + if (this.width) innerContent.style.width = this.width +'px'; + if (this.height) hs.setStyles(innerContent, { + height: this.height +'px', + overflow: 'hidden' + }); + if (innerContent.offsetWidth < this.minWidth) + innerContent.style.width = this.minWidth +'px'; + + + + if (this.objectType == 'ajax' && !hs.getCacheBinding(this.a)) { + this.showLoading(); + var exp = this; + var ajax = new hs.Ajax(this.a, innerContent); + ajax.src = this.src; + ajax.onLoad = function () { if (hs.expanders[exp.key]) exp.contentLoaded(); }; + ajax.onError = function () { location.href = exp.src; }; + ajax.run(); + } + else + + if (this.objectType == 'iframe' && this.objectLoadTime == 'before') { + this.writeExtendedContent(); + } + else + this.contentLoaded(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + if (this.isImage) { + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + } else if (this.htmlGetSize) this.htmlGetSize(); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.isHtml) this.htmlSizeOperations(); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + if (this.isImage) + this.correctRatio(ratio); + else this.fitOverlayBox(); + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + + +setObjContainerSize : function(parent, auto) { + var c = hs.getElementByClass(parent, 'DIV', 'highslide-body'); + if (/(iframe|swf)/.test(this.objectType)) { + if (this.objectWidth) c.style.width = this.objectWidth +'px'; + if (this.objectHeight) c.style.height = this.objectHeight +'px'; + } +}, + +writeExtendedContent : function () { + if (this.hasExtendedContent) return; + var exp = this; + this.body = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (this.objectType == 'iframe') { + this.showLoading(); + var ruler = hs.clearing.cloneNode(1); + this.body.appendChild(ruler); + this.newWidth = this.innerContent.offsetWidth; + if (!this.objectWidth) this.objectWidth = ruler.offsetWidth; + var hDiff = this.innerContent.offsetHeight - this.body.offsetHeight, + h = this.objectHeight || hs.page.height - hDiff - hs.marginTop - hs.marginBottom, + onload = this.objectLoadTime == 'before' ? + ' onload="if (hs.expanders['+ this.key +']) hs.expanders['+ this.key +'].contentLoaded()" ' : ''; + this.body.innerHTML += ''; + this.ruler = this.body.getElementsByTagName('div')[0]; + this.iframe = this.body.getElementsByTagName('iframe')[0]; + + if (this.objectLoadTime == 'after') this.correctIframeSize(); + + } + if (this.objectType == 'swf') { + this.body.id = this.body.id || 'hs-flash-id-' + this.key; + var a = this.swfOptions; + if (!a.params) a.params = {}; + if (typeof a.params.wmode == 'undefined') a.params.wmode = 'transparent'; + if (swfobject) swfobject.embedSWF(this.src, this.body.id, this.objectWidth, this.objectHeight, + a.version || '7', a.expressInstallSwfurl, a.flashvars, a.params, a.attributes); + } + this.hasExtendedContent = true; +}, +htmlGetSize : function() { + if (this.iframe && !this.objectHeight) { // loadtime before + this.iframe.style.height = this.body.style.height = this.getIframePageHeight() +'px'; + } + this.innerContent.appendChild(hs.clearing); + if (!this.x.full) this.x.full = this.innerContent.offsetWidth; + this.y.full = this.innerContent.offsetHeight; + this.innerContent.removeChild(hs.clearing); + if (hs.ie && this.newHeight > parseInt(this.innerContent.currentStyle.height)) { // ie css bug + this.newHeight = parseInt(this.innerContent.currentStyle.height); + } + hs.setStyles( this.wrapper, { position: 'absolute', padding: '0'}); + hs.setStyles( this.content, { width: this.x.t +'px', height: this.y.t +'px'}); + +}, + +getIframePageHeight : function() { + var h; + try { + var doc = this.iDoc = this.iframe.contentDocument || this.iframe.contentWindow.document; + var clearing = doc.createElement('div'); + clearing.style.clear = 'both'; + doc.body.appendChild(clearing); + h = clearing.offsetTop; + if (hs.ie) h += parseInt(doc.body.currentStyle.marginTop) + + parseInt(doc.body.currentStyle.marginBottom) - 1; + } catch (e) { // other domain + h = 300; + } + return h; +}, +correctIframeSize : function () { + var wDiff = this.innerContent.offsetWidth - this.ruler.offsetWidth; + hs.discardElement(this.ruler); + if (wDiff < 0) wDiff = 0; + + var hDiff = this.innerContent.offsetHeight - this.iframe.offsetHeight; + if (this.iDoc && !this.objectHeight && !this.height && this.y.size == this.y.full) try { + this.iDoc.body.style.overflow = 'hidden'; + } catch (e) {} + hs.setStyles(this.iframe, { + width: Math.abs(this.x.size - wDiff) +'px', + height: Math.abs(this.y.size - hDiff) +'px' + }); + hs.setStyles(this.body, { + width: this.iframe.style.width, + height: this.iframe.style.height + }); + + this.scrollingContent = this.iframe; + this.scrollerDiv = this.scrollingContent; + +}, +htmlSizeOperations : function () { + + this.setObjContainerSize(this.innerContent); + + + if (this.objectType == 'swf' && this.objectLoadTime == 'before') this.writeExtendedContent(); + + // handle minimum size + if (this.x.size < this.x.full && !this.allowWidthReduction) this.x.size = this.x.full; + if (this.y.size < this.y.full && !this.allowHeightReduction) this.y.size = this.y.full; + this.scrollerDiv = this.innerContent; + hs.setStyles(this.mediumContent, { + position: 'relative', + width: this.x.size +'px' + }); + hs.setStyles(this.innerContent, { + border: 'none', + width: 'auto', + height: 'auto' + }); + var node = hs.getElementByClass(this.innerContent, 'DIV', 'highslide-body'); + if (node && !/(iframe|swf)/.test(this.objectType)) { + var cNode = node; // wrap to get true size + node = hs.createElement(cNode.nodeName, null, {overflow: 'hidden'}, null, true); + cNode.parentNode.insertBefore(node, cNode); + node.appendChild(hs.clearing); // IE6 + node.appendChild(cNode); + + var wDiff = this.innerContent.offsetWidth - node.offsetWidth; + var hDiff = this.innerContent.offsetHeight - node.offsetHeight; + node.removeChild(hs.clearing); + + var kdeBugCorr = hs.safari || navigator.vendor == 'KDE' ? 1 : 0; // KDE repainting bug + hs.setStyles(node, { + width: (this.x.size - wDiff - kdeBugCorr) +'px', + height: (this.y.size - hDiff) +'px', + overflow: 'auto', + position: 'relative' + } + ); + if (kdeBugCorr && cNode.offsetHeight > node.offsetHeight) { + node.style.width = (parseInt(node.style.width) + kdeBugCorr) + 'px'; + } + this.scrollingContent = node; + this.scrollerDiv = this.scrollingContent; + } + if (this.iframe && this.objectLoadTime == 'before') this.correctIframeSize(); + if (!this.scrollingContent && this.y.size < this.mediumContent.offsetHeight) this.scrollerDiv = this.content; + + if (this.scrollerDiv == this.content && !this.allowWidthReduction && !/(iframe|swf)/.test(this.objectType)) { + this.x.size += 17; // room for scrollbars + } + if (this.scrollerDiv && this.scrollerDiv.offsetHeight > this.scrollerDiv.parentNode.offsetHeight) { + setTimeout("try { hs.expanders["+ this.key +"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}", + hs.expandDuration); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox && (this.isImage || this.allowHeightReduction)) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy( + (this.isHtml && this.preserveContent)); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (up && this.isHtml) { + hs.setStyles(this.wrapper, { + left: (x.tpos - x.cb + x.tb) +'px', + top: (y.tpos - y.cb + y.tb) +'px' + }); + } + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + if (exp.isHtml) { + if (args.prop == 'left') + exp.mediumContent.style.left = (x.pos - val) +'px'; + if (args.prop == 'top') + exp.mediumContent.style.top = (y.pos - val) +'px'; + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + if (this.isHtml) this.innerContent.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + + if (this.isHtml && this.objectLoadTime == 'after') this.writeExtendedContent(); + if (this.iframe) { + try { + var exp = this, + doc = this.iframe.contentDocument || this.iframe.contentWindow.document; + hs.addEventListener(doc, 'mousedown', function () { + if (hs.focusKey != exp.key) exp.focus(); + }); + } catch(e) {} + if (hs.ie && typeof this.isClosing != 'boolean') // first open + this.iframe.style.width = (this.objectWidth - 1) +'px'; // hasLayout + } + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + if (blurExp.isImage) { + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + if (this.isImage) { + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + } + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = this.isHtml ? e.height + e.dY : w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + this.isClosing = true; + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + if (this.isHtml) this.htmlPrepareClose(); + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +htmlPrepareClose : function() { + if (hs.geckoMac) { // bad redraws + if (!hs.mask) hs.mask = hs.createElement('div', null, + { position: 'absolute' }, hs.container); + hs.setStyles(hs.mask, { width: this.x.size +'px', height: this.y.size +'px', + left: this.x.pos +'px', top: this.y.pos +'px', display: 'block' }); + } + if (this.objectType == 'swf') try { hs.$(this.body.id).StopPlay(); } catch (e) {} + + if (this.objectLoadTime == 'after' && !this.preserveContent) this.destroyObject(); + if (this.scrollerDiv && this.scrollerDiv != this.scrollingContent) + this.scrollerDiv.style.overflow = 'hidden'; +}, + +destroyObject : function () { + if (hs.ie && this.iframe) + try { this.iframe.contentWindow.document.body.innerHTML = ''; } catch (e) {} + if (this.objectType == 'swf') swfobject.removeSWF(this.body.id); + this.body.innerHTML = ''; +}, + +sleep : function() { + if (this.outline) this.outline.table.style.display = 'none'; + this.releaseMask = null; + this.wrapper.style.display = 'none'; + this.isExpanded = false; + hs.push(hs.sleeping, this); +}, + +awake : function() {try { + + hs.expanders[this.key] = this; + + if (!hs.allowMultipleInstances &&hs.focusKey != this.key) { + try { hs.expanders[hs.focusKey].close(); } catch (e){} + } + + var z = hs.zIndexCounter++, stl = { display: '', zIndex: z }; + hs.setStyles (this.wrapper, stl); + this.isClosing = false; + + var o = this.outline || 0; + if (o) { + if (!this.outlineWhileAnimating) stl.visibility = 'hidden'; + hs.setStyles (o.table, stl); + } + + this.show(); +} catch (e) {} + + +}, + +createOverlay : function (o) { + var el = o.overlayId; + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + },this.overlayBox, + true + ); + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + offX = overlay.offsetX, + offY = overlay.offsetY; + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + if (this.isImage || (this.isHtml && o.useOnHtml)) + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + if (this.isHtml && this.preserveContent) { + this.overlayBox.style.top = '-9999px'; + hs.container.appendChild(this.overlayBox); + } else + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + + if (this.isHtml && this.preserveContent) { + this.sleep(); + } else { + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + } + if (hs.mask) hs.mask.style.display = 'none'; + + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; + + +// hs.Ajax object prototype +hs.Ajax = function (a, content, pre) { + this.a = a; + this.content = content; + this.pre = pre; +}; + +hs.Ajax.prototype = { +run : function () { + var xhr; + if (!this.src) this.src = hs.getSrc(this.a); + if (this.src.match('#')) { + var arr = this.src.split('#'); + this.src = arr[0]; + this.id = arr[1]; + } + if (hs.cachedGets[this.src]) { + this.cachedGet = hs.cachedGets[this.src]; + if (this.id) this.getElementContent(); + else this.loadHTML(); + return; + } + try { xhr = new XMLHttpRequest(); } + catch (e) { + try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } + catch (e) { + try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } + catch (e) { this.onError(); } + } + } + var pThis = this; + xhr.onreadystatechange = function() { + if(pThis.xhr.readyState == 4) { + if (pThis.id) pThis.getElementContent(); + else pThis.loadHTML(); + } + }; + var src = this.src; + this.xhr = xhr; + if (hs.forceAjaxReload) + src = src.replace(/$/, (/\?/.test(src) ? '&' : '?') +'dummy='+ (new Date()).getTime()); + xhr.open('GET', src, true); + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.send(null); +}, + +getElementContent : function() { + hs.init(); + var attribs = window.opera || hs.ie6SSL ? { src: 'about:blank' } : null; + + this.iframe = hs.createElement('iframe', attribs, + { position: 'absolute', top: '-9999px' }, hs.container); + + this.loadHTML(); +}, + +loadHTML : function() { + var s = this.cachedGet || this.xhr.responseText, + regBody; + if (this.pre) hs.cachedGets[this.src] = s; + if (!hs.ie || hs.uaVersion >= 5.5) { + s = s.replace(new RegExp(']*>', 'gi'), '') + .replace(new RegExp(']*>.*?', 'gi'), ''); + if (this.iframe) { + var doc = this.iframe.contentDocument; + if (!doc && this.iframe.contentWindow) doc = this.iframe.contentWindow.document; + if (!doc) { // Opera + var pThis = this; + setTimeout(function() { pThis.loadHTML(); }, 25); + return; + } + doc.open(); + doc.write(s); + doc.close(); + try { s = doc.getElementById(this.id).innerHTML; } catch (e) { + try { s = this.iframe.document.getElementById(this.id).innerHTML; } catch (e) {} // opera + } + hs.discardElement(this.iframe); + } else { + regBody = /(]*>|<\/body>)/ig; + if (regBody.test(s)) s = s.split(regBody)[hs.ieLt9 ? 1 : 2]; + + } + } + hs.getElementByClass(this.content, 'DIV', 'highslide-body').innerHTML = s; + this.onLoad(); + for (var x in this) this[x] = null; +} +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +hs.addEventListener(window, 'load', hs.preloadAjax); +} diff --git a/html/highslide/highslide-with-html.min.js b/html/highslide/highslide-with-html.min.js new file mode 100644 index 000000000..7b4a3b8a8 --- /dev/null +++ b/html/highslide/highslide-with-html.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +inline +ajax +iframe +flash + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",previousText:"Previous",nextText:"Next",moveText:"Move",closeText:"Close",closeTitle:"Close (esc)",resizeTitle:"Resize",playText:"Play",playTitle:"Play slideshow (spacebar)",pauseText:"Pause",pauseTitle:"Pause slideshow (spacebar)",previousTitle:"Previous (arrow left)",nextTitle:"Next (arrow right)",moveTitle:"Move",fullExpandText:"1:1",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a"],allowWidthReduction:false,allowHeightReduction:true,preserveContent:true,objectLoadTime:"before",cacheAjax:true,dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",skin:{contentWrapper:'
    '},preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","width","height","contentId","allowWidthReduction","allowHeightReduction","preserveContent","maincontentId","maincontentText","maincontentEval","objectType","cacheAjax","objectWidth","objectHeight","objectLoadTime","swfOptions","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},swfOptions:{flashvars:{},params:{},attributes:{}},timers:[],pendingOutlines:{},sleeping:[],preloadTheseAjax:[],cacheBindings:[],cachedGets:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a.offsetParent){a=a.offsetParent;b.x+=a.offsetLeft;b.y+=a.offsetTop;if(a!=document.body&&a!=document.documentElement){b.x-=a.scrollLeft;b.y-=a.scrollTop}}return b},expand:function(b,h,f,d){if(!b){b=hs.createElement("a",null,{display:"none"},hs.container)}if(typeof b.getParams=="function"){return h}if(d=="html"){for(var c=0;cc){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{d.close()}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{hs.previousOrNext(b.key,c)}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},getWrapperKey:function(c,b){var e,d=/^highslide-wrapper-([0-9]+)$/;e=c;while(e.parentNode){if(e.id&&d.test(e.id)){return e.id.replace(d,"$1")}e=e.parentNode}if(!b){e=c;while(e.parentNode){if(e.tagName&&hs.isHsAnchor(e)){for(var a=0;a1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}else{if(/highslide-html/.test(b.className)&&hs.focusKey!=f.key){f.focus();f.doShowHide("hidden")}}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){f.close()}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}if(hs.dragArgs.exp.releaseMask){hs.dragArgs.exp.releaseMask.style.display="none"}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;if(d.iframe){if(!d.releaseMask){d.releaseMask=hs.createElement("div",null,{position:"absolute",width:d.x.size+"px",height:d.y.size+"px",left:d.x.cb+"px",top:d.y.cb+"px",zIndex:4,background:(hs.ieLt9?"white":"none"),opacity:0.01},d.wrapper,true)}if(d.releaseMask.style.display=="none"){d.releaseMask.style.display=""}}b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var f=this.exp;if(f.isImage&&(f.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);f.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}f.content.style[this.wh]=a+"px";f.wrapper.style[this.wh]=this.get("wsize")+"px";if(f.outline){f.outline.setPosition()}if(f.releaseMask){f.releaseMask.style[this.wh]=a+"px"}if(this.dim=="y"&&f.iDoc&&f.body.style.height!="auto"){try{f.iDoc.body.style.overflow="auto"}catch(b){}}if(f.isHtml){var c=f.scrollerDiv;if(this.sizeDiff===undefined){this.sizeDiff=f.innerContent["offset"+this.ucwh]-c["offset"+this.ucwh]}c.style[this.wh]=(this.size-this.sizeDiff)+"px";if(this.dim=="x"){f.mediumContent.style.width="auto"}if(f.body){f.body.style[this.wh]="auto"}}if(this.dim=="x"&&f.overlayBox){f.sizeOverlayBox(true)}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isHtml=(l=="html");this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];hs.init();var m=this.key=hs.expanders.length;for(var g=0;g(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(c){this.error(c)}},setObjContainerSize:function(a,d){var b=hs.getElementByClass(a,"DIV","highslide-body");if(/(iframe|swf)/.test(this.objectType)){if(this.objectWidth){b.style.width=this.objectWidth+"px"}if(this.objectHeight){b.style.height=this.objectHeight+"px"}}},writeExtendedContent:function(){if(this.hasExtendedContent){return}var f=this;this.body=hs.getElementByClass(this.innerContent,"DIV","highslide-body");if(this.objectType=="iframe"){this.showLoading();var g=hs.clearing.cloneNode(1);this.body.appendChild(g);this.newWidth=this.innerContent.offsetWidth;if(!this.objectWidth){this.objectWidth=g.offsetWidth}var c=this.innerContent.offsetHeight-this.body.offsetHeight,d=this.objectHeight||hs.page.height-c-hs.marginTop-hs.marginBottom,e=this.objectLoadTime=="before"?' onload="if (hs.expanders['+this.key+"]) hs.expanders["+this.key+'].contentLoaded()" ':"";this.body.innerHTML+='';this.ruler=this.body.getElementsByTagName("div")[0];this.iframe=this.body.getElementsByTagName("iframe")[0];if(this.objectLoadTime=="after"){this.correctIframeSize()}}if(this.objectType=="swf"){this.body.id=this.body.id||"hs-flash-id-"+this.key;var b=this.swfOptions;if(!b.params){b.params={}}if(typeof b.params.wmode=="undefined"){b.params.wmode="transparent"}if(swfobject){swfobject.embedSWF(this.src,this.body.id,this.objectWidth,this.objectHeight,b.version||"7",b.expressInstallSwfurl,b.flashvars,b.params,b.attributes)}}this.hasExtendedContent=true},htmlGetSize:function(){if(this.iframe&&!this.objectHeight){this.iframe.style.height=this.body.style.height=this.getIframePageHeight()+"px"}this.innerContent.appendChild(hs.clearing);if(!this.x.full){this.x.full=this.innerContent.offsetWidth}this.y.full=this.innerContent.offsetHeight;this.innerContent.removeChild(hs.clearing);if(hs.ie&&this.newHeight>parseInt(this.innerContent.currentStyle.height)){this.newHeight=parseInt(this.innerContent.currentStyle.height)}hs.setStyles(this.wrapper,{position:"absolute",padding:"0"});hs.setStyles(this.content,{width:this.x.t+"px",height:this.y.t+"px"})},getIframePageHeight:function(){var a;try{var d=this.iDoc=this.iframe.contentDocument||this.iframe.contentWindow.document;var b=d.createElement("div");b.style.clear="both";d.body.appendChild(b);a=b.offsetTop;if(hs.ie){a+=parseInt(d.body.currentStyle.marginTop)+parseInt(d.body.currentStyle.marginBottom)-1}}catch(c){a=300}return a},correctIframeSize:function(){var b=this.innerContent.offsetWidth-this.ruler.offsetWidth;hs.discardElement(this.ruler);if(b<0){b=0}var a=this.innerContent.offsetHeight-this.iframe.offsetHeight;if(this.iDoc&&!this.objectHeight&&!this.height&&this.y.size==this.y.full){try{this.iDoc.body.style.overflow="hidden"}catch(c){}}hs.setStyles(this.iframe,{width:Math.abs(this.x.size-b)+"px",height:Math.abs(this.y.size-a)+"px"});hs.setStyles(this.body,{width:this.iframe.style.width,height:this.iframe.style.height});this.scrollingContent=this.iframe;this.scrollerDiv=this.scrollingContent},htmlSizeOperations:function(){this.setObjContainerSize(this.innerContent);if(this.objectType=="swf"&&this.objectLoadTime=="before"){this.writeExtendedContent()}if(this.x.sizee.offsetHeight){e.style.width=(parseInt(e.style.width)+d)+"px"}this.scrollingContent=e;this.scrollerDiv=this.scrollingContent}if(this.iframe&&this.objectLoadTime=="before"){this.correctIframeSize()}if(!this.scrollingContent&&this.y.sizethis.scrollerDiv.parentNode.offsetHeight){setTimeout("try { hs.expanders["+this.key+"].scrollerDiv.style.overflow = 'auto'; } catch(e) {}",hs.expandDuration)}},justify:function(f,b){var g,h=f.target,e=f==this.x?"x":"y";var d=false;var a=f.exp.allowSizeReduction;f.pos=Math.round(f.pos-((f.get("wsize")-f.t)/2));if(f.posf.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(b,h,c){if(this.outline&&!this.outlineWhileAnimating){if(b){this.outline.setPosition()}else{this.outline.destroy((this.isHtml&&this.preserveContent))}}if(!b){this.destroyOverlays()}var e=this,a=e.x,g=e.y,f=this.easing;if(!b){f=this.easingClose||f}var d=b?function(){if(e.outline){e.outline.table.style.visibility="visible"}setTimeout(function(){e.afterExpand()},50)}:function(){e.afterClose()};if(b){hs.setStyles(this.wrapper,{width:a.t+"px",height:g.t+"px"})}if(b&&this.isHtml){hs.setStyles(this.wrapper,{left:(a.tpos-a.cb+a.tb)+"px",top:(g.tpos-g.cb+g.tb)+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:b?0:1});hs.extend(h.wrapper,{opacity:b})}hs.animate(this.wrapper,h.wrapper,{duration:c,easing:f,step:function(k,i){if(e.outline&&e.outlineWhileAnimating&&i.prop=="top"){var j=b?i.pos:1-i.pos;var l={w:a.t+(a.get("wsize")-a.t)*j,h:g.t+(g.get("wsize")-g.t)*j,x:a.tpos+(a.pos-a.tpos)*j,y:g.tpos+(g.pos-g.tpos)*j};e.outline.setPosition(l,0,1)}if(e.isHtml){if(i.prop=="left"){e.mediumContent.style.left=(a.pos-k)+"px"}if(i.prop=="top"){e.mediumContent.style.top=(g.pos-k)+"px"}}}});hs.animate(this.content,h.content,c,f,d);if(b){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";if(this.isHtml){this.innerContent.style.visibility="visible"}this.a.className+=" highslide-active-anchor"}},afterExpand:function(){this.isExpanded=true;this.focus();if(this.isHtml&&this.objectLoadTime=="after"){this.writeExtendedContent()}if(this.iframe){try{var g=this,f=this.iframe.contentDocument||this.iframe.contentWindow.document;hs.addEventListener(f,"mousedown",function(){if(hs.focusKey!=g.key){g.focus()}})}catch(d){}if(hs.ie&&typeof this.isClosing!="boolean"){this.iframe.style.width=(this.objectWidth-1)+"px"}}if(hs.upcoming&&hs.upcoming==this.a){hs.upcoming=null}this.prepareNextOutline();var c=hs.page,b=hs.mouse.x+c.scrollLeft,a=hs.mouse.y+c.scrollTop;this.mouseIsOver=this.x.posthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"));var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;a=5.5){c=c.replace(new RegExp("]*>","gi"),"").replace(new RegExp("]*>.*?<\/script>","gi"),"");if(this.iframe){var f=this.iframe.contentDocument;if(!f&&this.iframe.contentWindow){f=this.iframe.contentWindow.document}if(!f){var g=this;setTimeout(function(){g.loadHTML()},25);return}f.open();f.write(c);f.close();try{c=f.getElementById(this.id).innerHTML}catch(d){try{c=this.iframe.document.getElementById(this.id).innerHTML}catch(d){}}hs.discardElement(this.iframe)}else{b=/(]*>|<\/body>)/ig;if(b.test(c)){c=c.split(b)[hs.ieLt9?1:2]}}}hs.getElementByClass(this.content,"DIV","highslide-body").innerHTML=c;this.onLoad();for(var a in this){this[a]=null}}};hs.langDefaults=hs.lang;var HsExpander=hs.Expander;if(hs.ie&&window==window.top){(function(){try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,50);return}hs.ready()})()}hs.addEventListener(document,"DOMContentLoaded",hs.ready);hs.addEventListener(window,"load",hs.ready);hs.addEventListener(document,"ready",function(){if(hs.expandCursor){var d=hs.createElement("style",{type:"text/css"},null,document.getElementsByTagName("HEAD")[0]),c=document.compatMode=="BackCompat";function b(f,g){if(hs.ie&&(hs.uaVersion<9||c)){var e=document.styleSheets[document.styleSheets.length-1];if(typeof(e.addRule)=="object"){e.addRule(f,g)}}else{d.appendChild(document.createTextNode(f+" {"+g+"}"))}}function a(e){return"expression( ( ( ignoreMe = document.documentElement."+e+" ? document.documentElement."+e+" : document.body."+e+" ) ) + 'px' );"}if(hs.expandCursor){b(".highslide img","cursor: url("+hs.graphicsDir+hs.expandCursor+"), pointer !important;")}}});hs.addEventListener(window,"resize",function(){hs.getPageSize()});hs.addEventListener(document,"mousemove",function(a){hs.mouse={x:a.clientX,y:a.clientY}});hs.addEventListener(document,"mousedown",hs.mouseClickHandler);hs.addEventListener(document,"mouseup",hs.mouseClickHandler);hs.addEventListener(document,"ready",hs.getAnchors);hs.addEventListener(window,"load",hs.preloadImages);hs.addEventListener(window,"load",hs.preloadAjax)}; \ No newline at end of file diff --git a/html/highslide/highslide-with-html.packed.js b/html/highslide/highslide-with-html.packed.js new file mode 100644 index 000000000..401c8e420 --- /dev/null +++ b/html/highslide/highslide-with-html.packed.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default +inline +ajax +iframe +flash +packed + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){u m={1e:{89:\'8H\',8K:\'co...\',8G:\'6Q 2h cA\',9s:\'6Q 2h cB 2h c1\',9Y:\'bX 2h bT G (f)\',ag:\'c7 by 8g 8f\',9F:\'d3 2h d6 8g 8f dg\',91:\'8n\',8W:\'8e\',8R:\'9g\',8V:\'8j\',8U:\'8j (di)\',93:\'dj\',dd:\'8h\',d2:\'8h 8m (8l)\',cM:\'8k\',bR:\'8k 8m (8l)\',90:\'8n (6L 1f)\',8X:\'8e (6L 2G)\',8S:\'9g\',b8:\'1:1\',7h:\'6Q 2h 28 2D, aR 8Y aL 2h 3I. aH 6L aT W 1M 8Y 5n.\'},56:\'U/aN/\',5v:\'bG.6E\',4E:\'bB.6E\',7c:6j,a7:6j,4j:15,6m:15,3N:15,6f:15,4l:bt,8N:0.75,7m:J,71:5,3g:2,aZ:3,4M:1h,9Z:\'3E 2G\',9U:1,a1:J,9y:\'b2://U.b4/\',9E:\'aO\',8C:J,7B:[\'a\'],5D:1h,5A:J,48:J,31:\'4K\',82:J,7b:J,3O:8Z,4s:8Z,4I:J,1x:\'aS-aP\',8A:{8B:\'<1i 3n="U-aU"><92>\'+\'<3u 3n="U-5n">\'+\'\'+\'<2p>{m.1e.91}\'+\'\'+\'<3u 3n="U-1M">\'+\'\'+\'<2p>{m.1e.8W}\'+\'\'+\'<3u 3n="U-3I">\'+\'\'+\'<2p>{m.1e.8R}\'+\'\'+\'<3u 3n="U-28">\'+\'\'+\'<2p>{m.1e.8V}\'+\'\'+\'\'+\'<1i 3n="U-V">\'+\'<1i 3n="U-b0"><1i>\'+\'<2p 3n="U-3q" 2u="{m.1e.93}"><2p>\'+\'\'},4P:[],6n:J,P:[],6s:[\'4I\',\'2K\',\'1x\',\'3g\',\'b5\',\'bc\',\'aG\',\'9e\',\'aM\',\'b3\',\'bQ\',\'9c\',\'9K\',\'7b\',\'K\',\'M\',\'7f\',\'5D\',\'5A\',\'48\',\'bD\',\'bC\',\'bH\',\'2f\',\'82\',\'3i\',\'3J\',\'31\',\'7I\',\'78\',\'3O\',\'4s\',\'5X\',\'6N\',\'8d\',\'4h\',\'2g\',\'an\',\'am\',\'T\'],1Q:[],4y:0,bI:{x:[\'ad\',\'1f\',\'6H\',\'2G\',\'ac\'],y:[\'4U\',\'18\',\'6q\',\'3E\',\'6a\']},5R:{},9c:{},9e:{},7I:{al:{},1E:{},ay:{}},3t:[],3G:{},3C:[],5b:[],4o:[],5J:{},7k:{},6h:[],26:/bM\\/4\\.0/.16(46.5V)?8:6t((46.5V.5x().2Z(/.+(?:9f|bJ|bK|1L)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1L:(N.4F&&!1y.30),4X:/bL/.16(46.5V),7V:/bx.+9f:1\\.[0-8].+bi/.16(46.5V),$:B(1j){q(1j)D N.6F(1j)},20:B(1P,2R){1P[1P.1c]=2R},14:B(9b,3h,3l,4r,95){u C=N.14(9b);q(3h)m.3e(C,3h);q(95)m.Q(C,{6z:0,ap:\'24\',6V:0});q(3l)m.Q(C,3l);q(4r)4r.1G(C);D C},3e:B(C,3h){W(u x 3A 3h)C[x]=3h[x];D C},Q:B(C,3l){W(u x 3A 3l){q(m.2Y&&x==\'1B\'){q(3l[x]>0.99)C.F.bp(\'4C\');L C.F.4C=\'97(1B=\'+(3l[x]*2A)+\')\'}L C.F[x]=3l[x]}},41:B(C,1a,2P){u 3S,3Y,3P;q(1t 2P!=\'6W\'||2P===I){u 2S=aE;2P={3w:2S[2],2g:2S[3],83:2S[4]}}q(1t 2P.3w!=\'42\')2P.3w=6j;2P.2g=1r[2P.2g]||1r.8M;2P.5d=m.3e({},1a);W(u 2z 3A 1a){u e=1w m.1C(C,2P,2z);3S=6t(m.79(C,2z))||0;3Y=6t(1a[2z]);3P=2z!=\'1B\'?\'E\':\'\';e.2O(3S,3Y,3P)}},79:B(C,1a){q(C.F[1a]){D C.F[1a]}L q(N.87){D N.87.9k(C,I).9i(1a)}L{q(1a==\'1B\')1a=\'4C\';u 2R=C.4u[1a.2i(/\\-(\\w)/g,B(a,b){D b.bo()})];q(1a==\'4C\')2R=2R.2i(/97\\(1B=([0-9]+)\\)/,B(a,b){D b/2A});D 2R===\'\'?1:2R}},5y:B(){u d=N,w=1y,58=d.5G&&d.5G!=\'6M\'?d.44:d.V,2Y=m.1L&&(m.26<9||1t 8y==\'1X\');u K=2Y?58.8Q:(d.44.8Q||5o.bv),M=2Y?58.bu:5o.bm;m.3k={K:K,M:M,5T:2Y?58.5T:8y,5U:2Y?58.5U:bf};D m.3k},85:B(C){u p={x:C.8x,y:C.6G};3T(C.8p){C=C.8p;p.x+=C.8x;p.y+=C.6G;q(C!=N.V&&C!=N.44){p.x-=C.5T;p.y-=C.5U}}D p},53:B(a,1E,2O,R){q(!a)a=m.14(\'a\',I,{1O:\'24\'},m.1S);q(1t a.4V==\'B\')D 1E;q(R==\'2Q\'){W(u i=0;i7n){7n=1u;5g=i}}}q(5g==-1)m.2q=-1;L P[5g].3d()},3U:B(a,4R){a.4V=a.2M;u p=a.4V?a.4V():I;a.4V=I;D(p&&1t p[4R]!=\'1X\')?p[4R]:(1t m[4R]!=\'1X\'?m[4R]:I)},5m:B(a){u T=m.3U(a,\'T\');q(T)D T;D a.2v},3z:B(1j){u 1D=m.$(1j),3M=m.7k[1j],a={};q(!1D&&!3M)D I;q(!3M){3M=1D.61(J);3M.1j=\'\';m.7k[1j]=3M;D 1D}L{D 3M.61(J)}},3j:B(d){q(d)m.7g.1G(d);m.7g.2n=\'\'},8t:B(7F,A){u 3r=A||m.3v();A=3r;q(m.3B)D 1h;L m.3r=3r;m.4g(N,1y.30?\'5i\':\'5h\',m.4D);1m{m.3B=7F;7F.2M()}1l(e){m.3r=m.3B=I}1m{A.28()}1l(e){}D 1h},5k:B(C,2w){u A=m.3v(C);q(A)D m.8t(A.6B(2w),A);L D 1h},5n:B(C){D m.5k(C,-1)},1M:B(C){D m.5k(C,1)},4D:B(e){q(!e)e=1y.1Y;q(!e.2j)e.2j=e.6p;q(1t e.2j.7O!=\'1X\')D J;u A=m.3v();u 2w=I;8T(e.aI){1J 70:q(A)A.7i();D J;1J 32:1J 34:1J 39:1J 40:2w=1;7N;1J 8:1J 33:1J 37:1J 38:2w=-1;7N;1J 27:1J 13:2w=0}q(2w!==I){m.4g(N,1y.30?\'5i\':\'5h\',m.4D);q(!m.8C)D J;q(e.65)e.65();L e.aY=1h;q(A){q(2w==0){A.28()}L{m.5k(A.S,2w)}D 1h}}D J},b1:B(19){m.20(m.1Q,m.3e(19,{2F:\'2F\'+m.4y++}))},7S:B(7C,5M){u C,2t=/^U-Y-([0-9]+)$/;C=7C;3T(C.3a){q(C.1j&&2t.16(C.1j))D C.1j.2i(2t,"$1");C=C.3a}q(!5M){C=7C;3T(C.3a){q(C.4c&&m.5W(C)){W(u S=0;S1)D J;q(!e.2j)e.2j=e.6p;u C=e.2j;3T(C.3a&&!(/U-(2D|3I|2Q|3q)/.16(C.1p))){C=C.3a}u A=m.3v(C);q(A&&(A.4z||!A.4e))D J;q(A&&e.R==\'7H\'){q(e.2j.7O)D J;u 2Z=C.1p.2Z(/U-(2D|3I|3q)/);q(2Z){m.2a={A:A,R:2Z[1],1f:A.x.H,K:A.x.G,18:A.y.H,M:A.y.G,8J:e.5Q,8F:e.5f};m.1R(N,\'6o\',m.8a);q(e.65)e.65();q(/U-(2D|2Q)-7s/.16(A.O.1p)){A.3d();m.7p=J}D 1h}L q(/U-2Q/.16(C.1p)&&m.2q!=A.S){A.3d();A.4a(\'1n\')}}L q(e.R==\'9t\'){m.4g(N,\'6o\',m.8a);q(m.2a){q(m.4i&&m.2a.R==\'2D\')m.2a.A.O.F.3L=m.4i;u 3f=m.2a.3f;q(!3f&&!m.7p&&!/(3I|3q)/.16(m.2a.R)){A.28()}L q(3f||(!3f&&m.8O)){m.2a.A.4a(\'1n\')}q(m.2a.A.2W)m.2a.A.2W.F.1O=\'24\';m.7p=1h;m.2a=I}L q(/U-2D-7s/.16(C.1p)){C.F.3L=m.4i}}D 1h},8a:B(e){q(!m.2a)D J;q(!e)e=1y.1Y;u a=m.2a,A=a.A;q(A.11){q(!A.2W)A.2W=m.14(\'1i\',I,{1d:\'22\',K:A.x.G+\'E\',M:A.y.G+\'E\',1f:A.x.cb+\'E\',18:A.y.cb+\'E\',1u:4,94:(m.2Y?\'bh\':\'24\'),1B:0.cD},A.Y,J);q(A.2W.F.1O==\'24\')A.2W.F.1O=\'\'}a.5q=e.5Q-a.8J;a.5r=e.5f-a.8F;u 6A=1r.cU(1r.8E(a.5q,2)+1r.8E(a.5r,2));q(!a.3f)a.3f=(a.R!=\'2D\'&&6A>0)||(6A>(m.cR||5));q(a.3f&&e.5Q>5&&e.5f>5){q(a.R==\'3q\')A.3q(a);L{A.7x(a.1f+a.5q,a.18+a.5r);q(a.R==\'2D\')A.O.F.3L=\'3I\'}}D 1h},8c:B(e){1m{q(!e)e=1y.1Y;u 67=/cW/i.16(e.R);q(!e.2j)e.2j=e.6p;q(!e.6l)e.6l=67?e.cZ:e.cY;u A=m.3v(e.2j);q(!A.4e)D;q(!A||!e.6l||m.3v(e.6l,J)==A||m.2a)D;W(u i=0;i=k.1N.3w+k.84){k.3Q=k.3Y;k.H=k.80=1;k.7Q();k.1N.5d[k.1a]=J;u 86=J;W(u i 3A k.1N.5d)q(k.1N.5d[i]!==J)86=1h;q(86){q(k.1N.83)k.1N.83.8v(k.2k)}D 1h}L{u n=t-k.84;k.80=n/k.1N.3w;k.H=k.1N.2g(n,0,1,k.1N.3w);k.3Q=k.3S+((k.3Y-k.3S)*k.H);k.7Q()}D J}};m.3e(m.1C,{3o:{1B:B(1C){m.Q(1C.2k,{1B:1C.3Q})},8z:B(1C){1m{q(1C.2k.F&&1C.2k.F[1C.1a]!=I)1C.2k.F[1C.1a]=1C.3Q+1C.3P;L 1C.2k[1C.1a]=1C.3Q}1l(e){}}}});m.4L=B(1x,2J){k.2J=2J;k.1x=1x;u v=m.26,5O;k.6C=m.1L&&m.26<7;q(!1x){q(2J)2J();D}m.5N();k.2m=m.14(\'2m\',{d7:0},{1q:\'1n\',1d:\'22\',d8:\'dc\',K:0},m.1S,J);u 7W=m.14(\'7W\',I,I,k.2m,1);k.29=[];W(u i=0;i<=8;i++){q(i%3==0)5O=m.14(\'5O\',I,{M:\'1H\'},7W,J);k.29[i]=m.14(\'29\',I,I,5O,J);u F=i!=4?{db:0,da:0}:{1d:\'3K\'};m.Q(k.29[i],F)}k.29[4].1p=1x+\' U-1o\';k.8P()};m.4L.54={8P:B(){u T=m.56+(m.d9||"cL/")+k.1x+".cE";u 98=m.4X&&m.26<8i?m.1S:I;k.2X=m.14(\'1v\',I,{1d:\'22\',18:\'-3R\'},98,J);u 36=k;k.2X.3H=B(){36.96()};k.2X.T=T},96:B(){u o=k.1s=k.2X.K/4,H=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1F={M:(2*o)+\'E\',K:(2*o)+\'E\'};W(u i=0;i<=8;i++){q(H[i]){q(k.6C){u w=(i==1||i==7)?\'2A%\':k.2X.K+\'E\';u 1i=m.14(\'1i\',I,{K:\'2A%\',M:\'2A%\',1d:\'3K\',1W:\'1n\'},k.29[i],J);m.14(\'1i\',I,{4C:"c6:c5.9M.c4(c8=c9, T=\'"+k.2X.T+"\')",1d:\'22\',K:w,M:k.2X.M+\'E\',1f:(H[i][0]*o)+\'E\',18:(H[i][1]*o)+\'E\'},1i,J)}L{m.Q(k.29[i],{94:\'6X(\'+k.2X.T+\') \'+(H[i][0]*o)+\'E \'+(H[i][1]*o)+\'E\'})}q(1y.30&&(i==3||i==5))m.14(\'1i\',I,1F,k.29[i],J);m.Q(k.29[i],1F)}}k.2X=I;q(m.3G[k.1x])m.3G[k.1x].5l();m.3G[k.1x]=k;q(k.2J)k.2J()},4B:B(H,1s,9a,3b,2g){u A=k.A,4A=A.Y.F,1s=1s||0,H=H||{x:A.x.H+1s,y:A.y.H+1s,w:A.x.1b(\'1K\')-2*1s,h:A.y.1b(\'1K\')-2*1s};q(9a)k.2m.F.1q=(H.h>=4*k.1s)?\'2l\':\'1n\';m.Q(k.2m,{1f:(H.x-k.1s)+\'E\',18:(H.y-k.1s)+\'E\',K:(H.w+2*k.1s)+\'E\'});H.w-=2*k.1s;H.h-=2*k.1s;m.Q(k.29[4],{K:H.w>=0?H.w+\'E\':0,M:H.h>=0?H.h+\'E\':0});q(k.6C)k.29[3].F.M=k.29[5].F.M=k.29[4].F.M},5l:B(9d){q(9d)k.2m.F.1q=\'1n\';L m.3j(k.2m)}};m.5t=B(A,1F){k.A=A;k.1F=1F;k.2H=1F==\'x\'?\'cd\':\'cc\';k.2C=k.2H.5x();k.4J=1F==\'x\'?\'ca\':\'c3\';k.6J=k.4J.5x();k.6P=1F==\'x\'?\'c2\':\'bV\';k.bU=k.6P.5x();k.1V=k.2U=0};m.5t.54={1b:B(S){8T(S){1J\'7R\':D k.1A+k.2s+(k.t-m.21[\'1s\'+k.2H])/2;1J\'1K\':D k.G+2*k.cb+k.1V+k.2U;1J\'4b\':D k.5E-k.3y-k.5F;1J\'6K\':D k.1b(\'4b\')-2*k.cb-k.1V-k.2U;1J\'4w\':D k.H-(k.A.1o?k.A.1o.1s:0);1J\'88\':D k.1b(\'1K\')+(k.A.1o?2*k.A.1o.1s:0);1J\'5u\':D k.1T?1r.5Y((k.G-k.1T)/2):0}},6v:B(){k.cb=(k.A.O[\'1s\'+k.2H]-k.t)/2;k.5F=m[\'6V\'+k.6P]},6y:B(){k.t=k.A.C[k.2C]?49(k.A.C[k.2C]):k.A.C[\'1s\'+k.2H];k.1A=k.A.1A[k.1F];k.2s=(k.A.C[\'1s\'+k.2H]-k.t)/2;q(k.1A==0||k.1A==-1){k.1A=(m.3k[k.2C]/2)+m.3k[\'3s\'+k.4J]}},6u:B(){u A=k.A;k.3X=\'1H\';k.H=k.1A-k.cb+k.2s;q(k.6N&&k.1F==\'x\')A.5X=1r.2L(A.5X||k.Z,A.6N*k.Z/A.y.Z);k.G=1r.2L(k.Z,A[\'7l\'+k.2H]||k.Z);k.2E=A.4I?1r.2L(A[\'2L\'+k.2H],k.Z):k.Z;q(A.2o&&A.2K){k.G=A[k.2C];k.1T=k.Z}q(k.1F==\'x\'&&m.4M)k.2E=A.3O;k.3y=m[\'6V\'+k.4J];k.3s=m.3k[\'3s\'+k.4J];k.5E=m.3k[k.2C]},7J:B(i){u A=k.A;q(A.2o&&(A.2K||m.4M)){k.1T=i;k.G=1r.7l(k.G,k.1T);A.O.F[k.6J]=k.1b(\'5u\')+\'E\'}L k.G=i;A.O.F[k.2C]=i+\'E\';A.Y.F[k.2C]=k.1b(\'1K\')+\'E\';q(A.1o)A.1o.4B();q(A.2W)A.2W.F[k.2C]=i+\'E\';q(k.1F==\'y\'&&A.4v&&A.V.F.M!=\'1H\')1m{A.4v.V.F.1W=\'1H\'}1l(e){}q(A.1Z){u d=A.2c;q(k.7a===1X)k.7a=A.1g[\'1s\'+k.2H]-d[\'1s\'+k.2H];d.F[k.2C]=(k.G-k.7a)+\'E\';q(k.1F==\'x\')A.3D.F.K=\'1H\';q(A.V)A.V.F[k.2C]=\'1H\'}q(k.1F==\'x\'&&A.1z)A.4m(J)},7j:B(i){k.H=i;k.A.Y.F[k.6J]=i+\'E\';q(k.A.1o)k.A.1o.4B()}};m.4S=B(a,1E,2O,2B){q(N.9r&&m.1L&&!m.6Z){m.1R(N,\'3p\',B(){1w m.4S(a,1E,2O,2B)});D}k.a=a;k.2O=2O;k.2B=2B||\'2D\';k.1Z=(2B==\'2Q\');k.2o=!k.1Z;m.6n=1h;k.1Q=[];m.5N();u S=k.S=m.P.1c;W(u i=0;i(k.x.1T||k.x.G)){k.9W();q(k.1Q.1c==1)k.4m()}}k.7M()}1l(e){k.7w(e)}},7d:B(4r,1H){u c=m.4d(4r,\'5H\',\'U-V\');q(/(11|3c)/.16(k.2f)){q(k.3i)c.F.K=k.3i+\'E\';q(k.3J)c.F.M=k.3J+\'E\'}},5S:B(){q(k.av)D;u A=k;k.V=m.4d(k.1g,\'5H\',\'U-V\');q(k.2f==\'11\'){k.4t();u 4n=m.2I.61(1);k.V.1G(4n);k.cn=k.1g.2e;q(!k.3i)k.3i=4n.2e;u 45=k.1g.1I-k.V.1I,h=k.3J||m.3k.M-45-m.3N-m.6f,3H=k.31==\'4K\'?\' 3H="q (m.P[\'+k.S+\']) m.P[\'+k.S+\'].4x()" \':\'\';k.V.2n+=\'<11 2z="m\'+(1w 5s()).59()+\'" cq="0" S="\'+k.S+\'" \'+\' F="K:\'+k.3i+\'E; M:\'+h+\'E" \'+3H+\' T="\'+k.T+\'" >\';k.4n=k.V.3x(\'1i\')[0];k.11=k.V.3x(\'11\')[0];q(k.31==\'4O\')k.6S()}q(k.2f==\'3c\'){k.V.1j=k.V.1j||\'m-cm-1j-\'+k.S;u a=k.7I;q(!a.1E)a.1E={};q(1t a.1E.aF==\'1X\')a.1E.aF=\'ci\';q(7D)7D.cj(k.T,k.V.1j,k.3i,k.3J,a.ck||\'7\',a.cC,a.al,a.1E,a.ay)}k.av=J},76:B(){q(k.11&&!k.3J){k.11.F.M=k.V.F.M=k.at()+\'E\'}k.1g.1G(m.2I);q(!k.x.Z)k.x.Z=k.1g.2e;k.y.Z=k.1g.1I;k.1g.aj(m.2I);q(m.1L&&k.au>49(k.1g.4u.M)){k.au=49(k.1g.4u.M)}m.Q(k.Y,{1d:\'22\',6z:\'0\'});m.Q(k.O,{K:k.x.t+\'E\',M:k.y.t+\'E\'})},at:B(){u h;1m{u 1U=k.4v=k.11.6r||k.11.52.N;u 2I=1U.14(\'1i\');2I.F.ar=\'aw\';1U.V.1G(2I);h=2I.6G;q(m.1L)h+=49(1U.V.4u.3N)+49(1U.V.4u.6f)-1}1l(e){h=bY}D h},6S:B(){u 4k=k.1g.2e-k.4n.2e;m.3j(k.4n);q(4k<0)4k=0;u 45=k.1g.1I-k.11.1I;q(k.4v&&!k.3J&&!k.M&&k.y.G==k.y.Z)1m{k.4v.V.F.1W=\'1n\'}1l(e){}m.Q(k.11,{K:1r.7u(k.x.G-4k)+\'E\',M:1r.7u(k.y.G-45)+\'E\'});m.Q(k.V,{K:k.11.F.K,M:k.11.F.M});k.4p=k.11;k.2c=k.4p},aq:B(){k.7d(k.1g);q(k.2f==\'3c\'&&k.31==\'4K\')k.5S();q(k.x.G1D.1I){1D.F.K=(49(1D.F.K)+5C)+\'E\'}k.4p=1D;k.2c=k.4p}q(k.11&&k.31==\'4K\')k.6S();q(!k.4p&&k.y.Gk.2c.3a.1I){4T("1m { m.P["+k.S+"].2c.F.1W = \'1H\'; } 1l(e) {}",m.7c)}},3X:B(p,3W){u bW,bS=p.2j,1F=p==k.x?\'x\':\'y\';u 6R=1h;u 3V=p.A.4I;p.H=1r.5Y(p.H-((p.1b(\'1K\')-p.t)/2));q(p.Hp.3s+p.5E-p.5F){q(!3W&&6R&&3V){p.G=1r.2L(p.G,p.1b(1F==\'y\'?\'4b\':\'6K\'))}L q(p.1b(\'1K\')2d){ 2r=2N*2d;q(2rk.4s&&x.G>k.3O&&y.1b(\'1K\')>y.1b(\'4b\')){y.G-=10;q(2d)x.G=y.G*2d;k.4m(0,1);2V=J}}D 2V},7M:B(){u x=k.x,y=k.y;k.4a(\'1n\');k.7z(1,{Y:{K:x.1b(\'1K\'),M:y.1b(\'1K\'),1f:x.H,18:y.H},O:{1f:x.1V+x.1b(\'5u\'),18:y.1V+y.1b(\'5u\'),K:x.1T||x.G,M:y.1T||y.G}},m.7c)},7z:B(2y,2h,3b){q(k.1o&&!k.3g){q(2y)k.1o.4B();L k.1o.5l((k.1Z&&k.48))}q(!2y)k.9V();u A=k,x=A.x,y=A.y,2g=k.2g;q(!2y)2g=k.an||2g;u 4O=2y?B(){q(A.1o)A.1o.2m.F.1q="2l";4T(B(){A.aC()},50)}:B(){A.7A()};q(2y)m.Q(k.Y,{K:x.t+\'E\',M:y.t+\'E\'});q(2y&&k.1Z){m.Q(k.Y,{1f:(x.1A-x.cb+x.2s)+\'E\',18:(y.1A-y.cb+y.2s)+\'E\'})}q(k.am){m.Q(k.Y,{1B:2y?0:1});m.3e(2h.Y,{1B:2y})}m.41(k.Y,2h.Y,{3w:3b,2g:2g,3o:B(2R,2S){q(A.1o&&A.3g&&2S.1a==\'18\'){u 4G=2y?2S.H:1-2S.H;u H={w:x.t+(x.1b(\'1K\')-x.t)*4G,h:y.t+(y.1b(\'1K\')-y.t)*4G,x:x.1A+(x.H-x.1A)*4G,y:y.1A+(y.H-y.1A)*4G};A.1o.4B(H,0,1)}q(A.1Z){q(2S.1a==\'1f\')A.3D.F.1f=(x.H-2R)+\'E\';q(2S.1a==\'18\')A.3D.F.18=(y.H-2R)+\'E\'}}});m.41(k.O,2h.O,3b,2g,4O);q(2y){k.Y.F.1q=\'2l\';k.O.F.1q=\'2l\';q(k.1Z)k.1g.F.1q=\'2l\';k.a.1p+=\' U-9T-9O\'}},aC:B(){k.4e=J;k.3d();q(k.1Z&&k.31==\'4O\')k.5S();q(k.11){1m{u A=k,1U=k.11.6r||k.11.52.N;m.1R(1U,\'7H\',B(){q(m.2q!=A.S)A.3d()})}1l(e){}q(m.1L&&1t k.4z!=\'ce\')k.11.F.K=(k.3i-1)+\'E\'}q(m.3B&&m.3B==k.a)m.3B=I;k.ax();u p=m.3k,6I=m.5R.x+p.5T,6D=m.5R.y+p.5U;k.6x=k.x.H<6I&&6Ik.x.1b(\'4w\')+k.x.1b(\'88\'));u 9p=(2T.y+2T.hk.y.1b(\'4w\')+k.y.1b(\'88\'));u 5c=m.7S(1k[i]);q(!9o&&!9p&&5c!=k.S){q(!23){1k[i].4N(\'1n-by\',\'[\'+k.S+\']\');1k[i].7q=1k[i].F[1a];1k[i].F[1a]=\'1n\'}L q(23.9v(\'[\'+k.S+\']\')==-1){1k[i].4N(\'1n-by\',23+\'[\'+k.S+\']\')}}L q((23==\'[\'+k.S+\']\'||m.2q==5c)&&5c!=k.S){1k[i].4N(\'1n-by\',\'\');1k[i].F[1a]=1k[i].7q||\'\'}L q(23&&23.9v(\'[\'+k.S+\']\')>-1){1k[i].4N(\'1n-by\',23.2i(\'[\'+k.S+\']\',\'\'))}}}}},3d:B(){k.Y.F.1u=m.4l+=2;W(u i=0;i=5.5){s=s.2i(1w 5P(\']*>\',\'aB\'),\'\').2i(1w 5P(\']*>.*?\',\'aB\'),\'\');q(k.11){u 1U=k.11.6r;q(!1U&&k.11.52)1U=k.11.52.N;q(!1U){u 36=k;4T(B(){36.4Y()},25);D}1U.ak();1U.bO(s);1U.28();1m{s=1U.6F(k.1j).2n}1l(e){1m{s=k.11.N.6F(k.1j).2n}1l(e){}}m.3j(k.11)}L{5I=/(]*>|<\\/V>)/ba;q(5I.16(s))s=s.az(5I)[m.2Y?1:2]}}m.4d(k.O,\'5H\',\'U-V\').2n=s;k.2J();W(u x 3A k)k[x]=I}};m.5z=m.1e;u b6=m.4S;q(m.1L&&1y==1y.18){(B(){1m{N.44.aW(\'1f\')}1l(e){4T(aE.aX,50);D}m.3p()})()}m.1R(N,\'b9\',m.3p);m.1R(1y,\'7o\',m.3p);m.1R(N,\'3p\',B(){q(m.5v){u F=m.14(\'F\',{R:\'aK/79\'},I,N.3x(\'aQ\')[0]),a2=N.5G==\'6M\';B 5B(6U,6T){q(m.1L&&(m.26<9||a2)){u 3r=N.a3[N.a3.1c-1];q(1t(3r.5B)=="6W")3r.5B(6U,6T)}L{F.1G(N.bb(6U+" {"+6T+"}"))}}B cT(1a){D\'cS( ( ( cV = N.44.\'+1a+\' ? N.44.\'+1a+\' : N.V.\'+1a+\' ) ) + \\\'E\\\' );\'}q(m.5v)5B(\'.U 1v\',\'3L: 6X(\'+m.56+m.5v+\'), 5w !d0;\')}});m.1R(1y,\'3q\',B(){m.5y()});m.1R(N,\'6o\',B(e){m.5R={x:e.5Q,y:e.5f}});m.1R(N,\'7H\',m.7K);m.1R(N,\'9t\',m.7K);m.1R(N,\'3p\',m.4Z);m.1R(1y,\'7o\',m.9u);m.1R(1y,\'7o\',m.af)}',62,827,'||||||||||||||||||||this||hs||||if||||var||||||exp|function|el|return|px|style|size|pos|null|true|width|else|height|document|content|expanders|setStyles|type|key|src|highslide|body|for||wrapper|full||iframe|||createElement||test||top|overlay|prop|get|length|position|lang|left|innerContent|false|div|id|els|catch|try|hidden|outline|className|visibility|Math|offset|typeof|zIndex|img|new|outlineType|window|overlayBox|tpos|opacity|fx|node|params|dim|appendChild|auto|offsetHeight|case|wsize|ie|next|options|display|arr|overlays|addEventListener|container|imgSize|doc|p1|overflow|undefined|event|isHtml|push|loading|absolute|hiddenBy|none||uaVersion||close|td|dragArgs|xhr|scrollerDiv|ratio|offsetWidth|objectType|easing|to|replace|target|elem|visible|table|innerHTML|isImage|span|focusKey|xSize|tb|re|title|href|op|ajax|up|name|100|contentType|wh|image|minSize|hsId|right|ucwh|clearing|onLoad|useBox|min|onclick|ySize|custom|opt|html|val|args|elPos|p2|changed|releaseMask|graphic|ieLt9|match|opera|objectLoadTime||||func|pThis||||parentNode|dur|swf|focus|extend|hasDragged|outlineWhileAnimating|attribs|objectWidth|discardElement|page|styles|groups|class|step|ready|resize|last|scroll|timers|li|getExpander|duration|getElementsByTagName|marginMin|getNode|in|upcoming|sleeping|mediumContent|bottom|ieLt7|pendingOutlines|onload|move|objectHeight|relative|cursor|clone|marginTop|minWidth|unit|now|9999px|start|while|getParam|allowReduce|moveOnly|justify|end|images||animate|number|Id|documentElement|hDiff|navigator|cNode|preserveContent|parseInt|doShowHide|fitsize|tagName|getElementByClass|isExpanded|blurExp|removeEventListener|slideshowGroup|styleRestoreCursor|marginLeft|wDiff|zIndexCounter|sizeOverlayBox|ruler|cacheBindings|scrollingContent|htmls|parent|minHeight|showLoading|currentStyle|iDoc|opos|contentLoaded|idCounter|isClosing|stl|setPosition|filter|keyHandler|restoreCursor|all|fac|block|allowSizeReduction|uclt|before|Outline|padToMinWidth|setAttribute|after|preloadTheseImages|on|param|Expander|setTimeout|above|getParams|createOverlay|safari|loadHTML|getAnchors||cache|contentWindow|expand|prototype|matches|graphicsDir|mask|iebody|getTime|showHideElements|preloadTheseAjax|wrapperKey|curAnim|gotoEnd|clientY|topmostKey|keydown|keypress|Ajax|previousOrNext|destroy|getSrc|previous|self|positionOverlay|dX|dY|Date|Dimension|imgPad|expandCursor|pointer|toLowerCase|getPageSize|langDefaults|allowHeightReduction|addRule|kdeBugCorr|allowWidthReduction|clientSize|marginMax|compatMode|DIV|regBody|cachedGets|anchors|pre|expOnly|init|tr|RegExp|clientX|mouse|writeExtendedContent|scrollLeft|scrollTop|userAgent|isHsAnchor|maxWidth|round|hideOnMouseOut|overlayId|cloneNode|offY|tId|offX|preventDefault|heading|over|preloadFullImage|fullExpandLabel|below|thumbsUserSetId|ypos|sg|onLoadStarted|marginBottom|os|onReady|maincontent|250|xpos|relatedTarget|marginRight|continuePreloading|mousemove|srcElement|middle|contentDocument|overrides|parseFloat|calcExpanded|calcBorders|cancelLoading|mouseIsOver|calcThumb|padding|distance|getAdjacentAnchor|hasAlphaImageLoader|mY|cur|getElementById|offsetTop|center|mX|lt|maxsize|arrow|BackCompat|maxHeight|thumbnailId|ucrb|Click|hasMovedMin|correctIframeSize|dec|sel|margin|object|url|fitOverlayBox|isReady||numberOfImagesToPreload|ie6|panel|doWrapper||htmlGetSize|getInline|wrapperClassName|css|sizeDiff|dragByHeading|expandDuration|setObjContainerSize|credits|contentId|garbageBin|restoreTitle|doFullExpand|setPos|clones|max|allowMultipleInstances|topZ|load|hasFocused|origProp|preloadAjaxElement|blur|getCacheBinding|abs|onError|error|moveTo|run|changeSize|afterClose|openerTagNames|element|swfobject|getSelfRendered|adj|resizeTo|mousedown|swfOptions|setSize|mouseClickHandler|string|show|break|form|Create|update|loadingPos|getWrapperKey|location|fade|geckoMac|tbody|types|getElementContent|Text|state|connectOutline|cacheAjax|complete|startTime|getPosition|done|defaultView|osize|cssDirection|dragHandler|direction|wrapperMouseHandler|pageOrigin|Next|JS|Highslide|Play|525|Close|Pause|spacebar|slideshow|Previous|thumb|offsetParent|from|timerId|orig|transit|updateAnchors|call|replaceLang|offsetLeft|pageXOffset|_default|skin|contentWrapper|enableKeyListener|htmlExpand|pow|clickY|loadingTitle|ltr|detachEvent|clickX|loadingText|focusTopmost|easeInQuad|loadingOpacity|hasHtmlExpanders|preloadGraphic|clientWidth|moveText|moveTitle|switch|closeTitle|closeText|nextText|nextTitle|and|200|previousTitle|previousText|ul|resizeTitle|background|nopad|onGraphicLoad|alpha|appendTo||vis|tag|headingOverlay|hide|captionOverlay|rv|Move|preloadNext|getPropertyValue|getAttribute|getComputedStyle|hideIframes|hideSelects|XMLHttpRequest|clearsX|clearsY|hand|readyState|focusTitle|mouseup|preloadImages|indexOf|Overlay|addOverlay|creditsHref|ie6SSL|getAnchorIndex|current|toString|cachedGet|creditsTarget|creditsTitle|_|nextSibling|Eval|setRequestHeader|creditsPosition|XMLHTTP|Microsoft|showOverlays|anchor|doPanels|genOverlayBox|gotOverlays|sleep|active|fullExpandOpacity|destroyOverlays|createFullExpand|javascript|fullExpandTitle|fullExpandPosition|writeCredits|showCredits|backCompat|styleSheets|destroyObject|htmlPrepareClose|ActiveXObject|restoreDuration|awake|offsetX|getOverlays|reOrder|rightpanel|leftpanel|offsetY|preloadAjax|creditsText|KDE|vendor|removeChild|open|flashvars|fadeInOut|easingClose|tmpMin|border|htmlSizeOperations|clear||getIframePageHeight|newHeight|hasExtendedContent|both|prepareNextOutline|attributes|split|correctRatio|gi|afterExpand|script|arguments|wmode|captionEval|Use|keyCode|button|text|drag|headingId|graphics|_self|shadow|HEAD|click|drop|keys|header|htmlE|doScroll|callee|returnValue|outlineStartOffset|footer|registerOverlay|http|headingText|com|captionId|HsExpander|xpand|fullExpandText|DOMContentLoaded|ig|createTextNode|captionText|forceAjaxReload|urlencoded|pageYOffset|send|white|Gecko|Type|application|www|innerHeight|link|toUpperCase|removeAttribute|responseText|blank|about|1001|clientHeight|innerWidth|Content|Macintosh||dummy|GET|zoomout|maincontentText|maincontentId|Msxml2|onreadystatechange|zoomin|maincontentEval|oPos|it|ra|Safari|Trident|With|write|Requested|headingEval|pauseTitle|tgt|actual|rb|Bottom|tgtArr|Expand|300|nodeName|insertBefore|front|Right|Top|AlphaImageLoader|DXImageTransform|progid|Powered|sizingMethod|scale|Left||Height|Width|boolean|allowSimultaneousLoading|onmouseover|flushImgSize|transparent|embedSWF|version|htmlCreate|flash|newWidth|Loading|static|frameborder|oncontextmenu|blockRightClick|Line|alert|debug|onmouseout|lineNumber|message|imageCreate|cancel|bring|expressInstallSwfurl|01|png|paddingTop|200px|https|protocol|1px|linearTween|outlines|pauseText|StopPlay|removeSWF|caption|useOnHtml|dragSensitivity|expression|fix|sqrt|ignoreMe|mouseover|attachEvent|toElement|fromElement|important|default|playTitle|Go|eval|SELECT|the|cellSpacing|borderCollapse|outlinesDir|fontSize|lineHeight|collapse|playText|IFRAME|clearInterval|homepage|splice|esc|Resize|setInterval'.split('|'),0,{})) diff --git a/html/highslide/highslide.css b/html/highslide/highslide.css new file mode 100644 index 000000000..cedd6a94c --- /dev/null +++ b/html/highslide/highslide.css @@ -0,0 +1,889 @@ +/** +* @file: highslide.css +* @version: 4.1.13 +*/ +.highslide-container div { + font-family: Verdana, Helvetica; + font-size: 10pt; +} +.highslide-container table { + background: none; +} +.highslide { + outline: none; + text-decoration: none; +} +.highslide img { +/* border: 2px solid silver;*/ +} +.highslide:hover img { + border-color: gray; +} +.highslide-active-anchor img { + visibility: hidden; +} +.highslide-gallery .highslide-active-anchor img { + border-color: black; + visibility: visible; + cursor: default; +} +.highslide-image { + border-width: 2px; + border-style: solid; + border-color: white; +} +.highslide-wrapper, .highslide-outline { + background: white; +} +.glossy-dark { + background: #111; +} + +.highslide-image-blur { +} +.highslide-number { + font-weight: bold; + color: gray; + font-size: .9em; +} +.highslide-caption { + display: none; + font-size: 1em; + padding: 5px; + /*background: white;*/ +} +.highslide-heading { + display: none; + font-weight: bold; + margin: 0.4em; +} +.highslide-dimming { + /*position: absolute;*/ + background: black; +} +a.highslide-full-expand { + background: url(graphics/fullexpand.gif) no-repeat; + display: block; + margin: 0 10px 10px 0; + width: 34px; + height: 34px; +} +.highslide-loading { + display: block; + color: black; + font-size: 9px; + font-weight: bold; + text-transform: uppercase; + text-decoration: none; + padding: 3px; + border: 1px solid white; + background-color: white; + padding-left: 22px; + background-image: url(graphics/loader.white.gif); + background-repeat: no-repeat; + background-position: 3px 1px; +} +a.highslide-credits, +a.highslide-credits i { + padding: 2px; + color: silver; + text-decoration: none; + font-size: 10px; +} +a.highslide-credits:hover, +a.highslide-credits:hover i { + color: white; + background-color: gray; +} +.highslide-move, .highslide-move * { + cursor: move; +} + +.highslide-viewport { + display: none; + position: fixed; + width: 100%; + height: 100%; + z-index: 1; + background: none; + left: 0; + top: 0; +} +.highslide-overlay { + display: none; +} +.hidden-container { + display: none; +} +/* Example of a semitransparent, offset closebutton */ +.closebutton { + position: relative; + top: -15px; + left: 15px; + width: 30px; + height: 30px; + cursor: pointer; + background: url(graphics/close.png); + /* NOTE! For IE6, you also need to update the highslide-ie6.css file. */ +} + +/*****************************************************************************/ +/* Thumbnail boxes for the galleries. */ +/* Remove these if you are not using a gallery. */ +/*****************************************************************************/ +.highslide-gallery ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.highslide-gallery ul li { + display: block; + position: relative; + float: left; + width: 106px; + height: 106px; + border: 1px solid silver; + background: #ededed; + margin: 2px; + padding: 0; + line-height: 0; + overflow: hidden; +} +.highslide-gallery ul a { + position: absolute; + top: 50%; + left: 50%; +} +.highslide-gallery ul img { + position: relative; + top: -50%; + left: -50%; +} +html>/**/body .highslide-gallery ul li { + display: table; + text-align: center; +} +html>/**/body .highslide-gallery ul li { + text-align: center; +} +html>/**/body .highslide-gallery ul a { + position: static; + display: table-cell; + vertical-align: middle; +} +html>/**/body .highslide-gallery ul img { + position: static; +} + +/*****************************************************************************/ +/* Controls for the galleries. */ +/* Remove these if you are not using a gallery */ +/*****************************************************************************/ +.highslide-controls { + width: 195px; + height: 40px; + background: url(graphics/controlbar-white.gif) 0 -90px no-repeat; + margin: 20px 15px 10px 0; +} +.highslide-controls ul { + position: relative; + left: 15px; + height: 40px; + list-style: none; + margin: 0; + padding: 0; + background: url(graphics/controlbar-white.gif) right -90px no-repeat; + +} +.highslide-controls li { + float: left; + padding: 5px 0; + margin:0; + list-style: none; +} +.highslide-controls a { + background-image: url(graphics/controlbar-white.gif); + display: block; + float: left; + height: 30px; + width: 30px; + outline: none; +} +.highslide-controls a.disabled { + cursor: default; +} +.highslide-controls a.disabled span { + cursor: default; +} +.highslide-controls a span { + /* hide the text for these graphic buttons */ + display: none; + cursor: pointer; +} + + +/* The CSS sprites for the controlbar - see http://www.google.com/search?q=css+sprites */ +.highslide-controls .highslide-previous a { + background-position: 0 0; +} +.highslide-controls .highslide-previous a:hover { + background-position: 0 -30px; +} +.highslide-controls .highslide-previous a.disabled { + background-position: 0 -60px !important; +} +.highslide-controls .highslide-play a { + background-position: -30px 0; +} +.highslide-controls .highslide-play a:hover { + background-position: -30px -30px; +} +.highslide-controls .highslide-play a.disabled { + background-position: -30px -60px !important; +} +.highslide-controls .highslide-pause a { + background-position: -60px 0; +} +.highslide-controls .highslide-pause a:hover { + background-position: -60px -30px; +} +.highslide-controls .highslide-next a { + background-position: -90px 0; +} +.highslide-controls .highslide-next a:hover { + background-position: -90px -30px; +} +.highslide-controls .highslide-next a.disabled { + background-position: -90px -60px !important; +} +.highslide-controls .highslide-move a { + background-position: -120px 0; +} +.highslide-controls .highslide-move a:hover { + background-position: -120px -30px; +} +.highslide-controls .highslide-full-expand a { + background-position: -150px 0; +} +.highslide-controls .highslide-full-expand a:hover { + background-position: -150px -30px; +} +.highslide-controls .highslide-full-expand a.disabled { + background-position: -150px -60px !important; +} +.highslide-controls .highslide-close a { + background-position: -180px 0; +} +.highslide-controls .highslide-close a:hover { + background-position: -180px -30px; +} + +/*****************************************************************************/ +/* Styles for the HTML popups */ +/* Remove these if you are not using Highslide HTML */ +/*****************************************************************************/ +.highslide-maincontent { + display: none; +} +.highslide-html { + background-color: white; +} +.mobile .highslide-html { + border: 1px solid silver; +} +.highslide-html-content { + display: none; + width: 400px; + padding: 0 5px 5px 5px; +} +.highslide-header { + padding-bottom: 5px; +} +.highslide-header ul { + margin: 0; + padding: 0; + text-align: right; +} +.highslide-header ul li { + display: inline; + padding-left: 1em; +} +.highslide-header ul li.highslide-previous, .highslide-header ul li.highslide-next { + display: none; +} +.highslide-header a { + font-weight: bold; + color: gray; + text-transform: uppercase; + text-decoration: none; +} +.highslide-header a:hover { + color: black; +} +.highslide-header .highslide-move a { + cursor: move; +} +.highslide-footer { + height: 16px; +} +.highslide-footer .highslide-resize { + display: block; + float: right; + margin-top: 5px; + height: 11px; + width: 11px; + background: url(graphics/resize.gif) no-repeat; +} +.highslide-footer .highslide-resize span { + display: none; +} +.highslide-body { +} +.highslide-resize { + cursor: nw-resize; +} + +/*****************************************************************************/ +/* Styles for the Individual wrapper class names. */ +/* See www.highslide.com/ref/hs.wrapperClassName */ +/* You can safely remove the class name themes you don't use */ +/*****************************************************************************/ + +/* hs.wrapperClassName = 'draggable-header' */ +.draggable-header .highslide-header { + height: 18px; + border-bottom: 1px solid #dddddd; +} +.draggable-header .highslide-heading { + position: absolute; + margin: 2px 0.4em; +} + +.draggable-header .highslide-header .highslide-move { + cursor: move; + display: block; + height: 16px; + position: absolute; + right: 24px; + top: 0; + width: 100%; + z-index: 1; +} +.draggable-header .highslide-header .highslide-move * { + display: none; +} +.draggable-header .highslide-header .highslide-close { + position: absolute; + right: 2px; + top: 2px; + z-index: 5; + padding: 0; +} +.draggable-header .highslide-header .highslide-close a { + display: block; + height: 16px; + width: 16px; + background-image: url(graphics/closeX.png); +} +.draggable-header .highslide-header .highslide-close a:hover { + background-position: 0 16px; +} +.draggable-header .highslide-header .highslide-close span { + display: none; +} +.draggable-header .highslide-maincontent { + padding-top: 1em; +} + +/* hs.wrapperClassName = 'titlebar' */ +.titlebar .highslide-header { + height: 18px; + border-bottom: 1px solid #dddddd; +} +.titlebar .highslide-heading { + position: absolute; + width: 90%; + margin: 1px 0 1px 5px; + color: #666666; +} + +.titlebar .highslide-header .highslide-move { + cursor: move; + display: block; + height: 16px; + position: absolute; + right: 24px; + top: 0; + width: 100%; + z-index: 1; +} +.titlebar .highslide-header .highslide-move * { + display: none; +} +.titlebar .highslide-header li { + position: relative; + top: 3px; + z-index: 2; + padding: 0 0 0 1em; +} +.titlebar .highslide-maincontent { + padding-top: 1em; +} + +/* hs.wrapperClassName = 'no-footer' */ +.no-footer .highslide-footer { + display: none; +} + +/* hs.wrapperClassName = 'wide-border' */ +.wide-border { + background: white; +} +.wide-border .highslide-image { + border-width: 10px; +} +.wide-border .highslide-caption { + padding: 0 10px 10px 10px; +} + +/* hs.wrapperClassName = 'borderless' */ +.borderless .highslide-image { + border: none; +} +.borderless .highslide-caption { + border-bottom: 1px solid white; + border-top: 1px solid white; + background: silver; +} + +/* hs.wrapperClassName = 'outer-glow' */ +.outer-glow { + background: #444; +} +.outer-glow .highslide-image { + border: 5px solid #444444; +} +.outer-glow .highslide-caption { + border: 5px solid #444444; + border-top: none; + padding: 5px; + background-color: gray; +} + +/* hs.wrapperClassName = 'colored-border' */ +.colored-border { + background: white; +} +.colored-border .highslide-image { + border: 2px solid green; +} +.colored-border .highslide-caption { + border: 2px solid green; + border-top: none; +} + +/* hs.wrapperClassName = 'dark' */ +.dark { + background: #111; +} +.dark .highslide-image { + border-color: black black #202020 black; + background: gray; +} +.dark .highslide-caption { + color: white; + background: #111; +} +.dark .highslide-controls, +.dark .highslide-controls ul, +.dark .highslide-controls a { + background-image: url(graphics/controlbar-black-border.gif); +} + +/* hs.wrapperClassName = 'floating-caption' */ +.floating-caption .highslide-caption { + position: absolute; + padding: 1em 0 0 0; + background: none; + color: white; + border: none; + font-weight: bold; +} + +/* hs.wrapperClassName = 'controls-in-heading' */ +.controls-in-heading .highslide-heading { + color: gray; + font-weight: bold; + height: 20px; + overflow: hidden; + cursor: default; + padding: 0 0 0 22px; + margin: 0; + background: url(graphics/icon.gif) no-repeat 0 1px; +} +.controls-in-heading .highslide-controls { + width: 105px; + height: 20px; + position: relative; + margin: 0; + top: -23px; + left: 7px; + background: none; +} +.controls-in-heading .highslide-controls ul { + position: static; + height: 20px; + background: none; +} +.controls-in-heading .highslide-controls li { + padding: 0; +} +.controls-in-heading .highslide-controls a { + background-image: url(graphics/controlbar-white-small.gif); + height: 20px; + width: 20px; +} + +.controls-in-heading .highslide-controls .highslide-move { + display: none; +} + +.controls-in-heading .highslide-controls .highslide-previous a { + background-position: 0 0; +} +.controls-in-heading .highslide-controls .highslide-previous a:hover { + background-position: 0 -20px; +} +.controls-in-heading .highslide-controls .highslide-previous a.disabled { + background-position: 0 -40px !important; +} +.controls-in-heading .highslide-controls .highslide-play a { + background-position: -20px 0; +} +.controls-in-heading .highslide-controls .highslide-play a:hover { + background-position: -20px -20px; +} +.controls-in-heading .highslide-controls .highslide-play a.disabled { + background-position: -20px -40px !important; +} +.controls-in-heading .highslide-controls .highslide-pause a { + background-position: -40px 0; +} +.controls-in-heading .highslide-controls .highslide-pause a:hover { + background-position: -40px -20px; +} +.controls-in-heading .highslide-controls .highslide-next a { + background-position: -60px 0; +} +.controls-in-heading .highslide-controls .highslide-next a:hover { + background-position: -60px -20px; +} +.controls-in-heading .highslide-controls .highslide-next a.disabled { + background-position: -60px -40px !important; +} +.controls-in-heading .highslide-controls .highslide-full-expand a { + background-position: -100px 0; +} +.controls-in-heading .highslide-controls .highslide-full-expand a:hover { + background-position: -100px -20px; +} +.controls-in-heading .highslide-controls .highslide-full-expand a.disabled { + background-position: -100px -40px !important; +} +.controls-in-heading .highslide-controls .highslide-close a { + background-position: -120px 0; +} +.controls-in-heading .highslide-controls .highslide-close a:hover { + background-position: -120px -20px; +} + +/*****************************************************************************/ +/* Styles for text based controls. */ +/* You can safely remove this if you don't use text based controls */ +/*****************************************************************************/ + +.text-controls .highslide-controls { + width: auto; + height: auto; + margin: 0; + text-align: center; + background: none; +} +.text-controls ul { + position: static; + background: none; + height: auto; + left: 0; +} +.text-controls .highslide-move { + display: none; +} +.text-controls li { + background-image: url(graphics/controlbar-text-buttons.png); + background-position: right top !important; + padding: 0; + margin-left: 15px; + display: block; + width: auto; +} +.text-controls a { + background: url(graphics/controlbar-text-buttons.png) no-repeat; + background-position: left top !important; + position: relative; + left: -10px; + display: block; + width: auto; + height: auto; + text-decoration: none !important; +} +.text-controls a span { + background: url(graphics/controlbar-text-buttons.png) no-repeat; + margin: 1px 2px 1px 10px; + display: block; + min-width: 4em; + height: 18px; + line-height: 18px; + padding: 1px 0 1px 18px; + color: #333; + font-family: "Trebuchet MS", Arial, sans-serif; + font-size: 12px; + font-weight: bold; + white-space: nowrap; +} +.text-controls .highslide-next { + margin-right: 1em; +} +.text-controls .highslide-full-expand a span { + min-width: 0; + margin: 1px 0; + padding: 1px 0 1px 10px; +} +.text-controls .highslide-close a span { + min-width: 0; +} +.text-controls a:hover span { + color: black; +} +.text-controls a.disabled span { + color: #999; +} + +.text-controls .highslide-previous span { + background-position: 0 -40px; +} +.text-controls .highslide-previous a.disabled { + background-position: left top !important; +} +.text-controls .highslide-previous a.disabled span { + background-position: 0 -140px; +} +.text-controls .highslide-play span { + background-position: 0 -60px; +} +.text-controls .highslide-play a.disabled { + background-position: left top !important; +} +.text-controls .highslide-play a.disabled span { + background-position: 0 -160px; +} +.text-controls .highslide-pause span { + background-position: 0 -80px; +} +.text-controls .highslide-next span { + background-position: 0 -100px; +} +.text-controls .highslide-next a.disabled { + background-position: left top !important; +} +.text-controls .highslide-next a.disabled span { + background-position: 0 -200px; +} +.text-controls .highslide-full-expand span { + background: none; +} +.text-controls .highslide-full-expand a.disabled { + background-position: left top !important; +} +.text-controls .highslide-close span { + background-position: 0 -120px; +} + + +/*****************************************************************************/ +/* Styles for the thumbstrip. */ +/* See www.highslide.com/ref/hs.addSlideshow */ +/* You can safely remove this if you don't use a thumbstrip */ +/*****************************************************************************/ + +.highslide-thumbstrip { + height: 100%; + direction: ltr; +} +.highslide-thumbstrip div { + overflow: hidden; +} +.highslide-thumbstrip table { + position: relative; + padding: 0; + border-collapse: collapse; +} +.highslide-thumbstrip td { + padding: 1px; + /*text-align: center;*/ +} +.highslide-thumbstrip a { + outline: none; +} +.highslide-thumbstrip img { + display: block; + border: 1px solid gray; + margin: 0 auto; +} +.highslide-thumbstrip .highslide-active-anchor img { + visibility: visible; +} +.highslide-thumbstrip .highslide-marker { + position: absolute; + width: 0; + height: 0; + border-width: 0; + border-style: solid; + border-color: transparent; /* change this to actual background color in highslide-ie6.css */ +} +.highslide-thumbstrip-horizontal div { + width: auto; + /* width: 100% breaks in small strips in IE */ +} +.highslide-thumbstrip-horizontal .highslide-scroll-up { + display: none; + position: absolute; + top: 3px; + left: 3px; + width: 25px; + height: 42px; +} +.highslide-thumbstrip-horizontal .highslide-scroll-up div { + margin-bottom: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) left center no-repeat; + height: 42px; +} +.highslide-thumbstrip-horizontal .highslide-scroll-down { + display: none; + position: absolute; + top: 3px; + right: 3px; + width: 25px; + height: 42px; +} +.highslide-thumbstrip-horizontal .highslide-scroll-down div { + margin-bottom: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) center right no-repeat; + height: 42px; +} +.highslide-thumbstrip-horizontal table { + margin: 2px 0 10px 0; +} +.highslide-viewport .highslide-thumbstrip-horizontal table { + margin-left: 10px; +} +.highslide-thumbstrip-horizontal img { + width: auto; + height: 40px; +} +.highslide-thumbstrip-horizontal .highslide-marker { + top: 47px; + border-left-width: 6px; + border-right-width: 6px; + border-bottom: 6px solid gray; +} +.highslide-viewport .highslide-thumbstrip-horizontal .highslide-marker { + margin-left: 10px; +} +.dark .highslide-thumbstrip-horizontal .highslide-marker, .highslide-viewport .highslide-thumbstrip-horizontal .highslide-marker { + border-bottom-color: white !important; +} + +.highslide-thumbstrip-vertical-overlay { + overflow: hidden !important; +} +.highslide-thumbstrip-vertical div { + height: 100%; +} +.highslide-thumbstrip-vertical a { + display: block; +} +.highslide-thumbstrip-vertical .highslide-scroll-up { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 25px; +} +.highslide-thumbstrip-vertical .highslide-scroll-up div { + margin-left: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) top center no-repeat; + height: 25px; +} +.highslide-thumbstrip-vertical .highslide-scroll-down { + display: none; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 25px; +} +.highslide-thumbstrip-vertical .highslide-scroll-down div { + margin-left: 10px; + cursor: pointer; + background: url(graphics/scrollarrows.png) bottom center no-repeat; + height: 25px; +} +.highslide-thumbstrip-vertical table { + margin: 10px 0 0 10px; +} +.highslide-thumbstrip-vertical img { + width: 60px; /* t=5481 */ +} +.highslide-thumbstrip-vertical .highslide-marker { + left: 0; + margin-top: 8px; + border-top-width: 6px; + border-bottom-width: 6px; + border-left: 6px solid gray; +} +.dark .highslide-thumbstrip-vertical .highslide-marker, .highslide-viewport .highslide-thumbstrip-vertical .highslide-marker { + border-left-color: white; +} + +.highslide-viewport .highslide-thumbstrip-float { + overflow: auto; +} +.highslide-thumbstrip-float ul { + margin: 2px 0; + padding: 0; +} +.highslide-thumbstrip-float li { + display: block; + height: 60px; + margin: 0 2px; + list-style: none; + float: left; +} +.highslide-thumbstrip-float img { + display: inline; + border-color: silver; + max-height: 56px; +} +.highslide-thumbstrip-float .highslide-active-anchor img { + border-color: black; +} +.highslide-thumbstrip-float .highslide-scroll-up div, .highslide-thumbstrip-float .highslide-scroll-down div { + display: none; +} +.highslide-thumbstrip-float .highslide-marker { + display: none; +} \ No newline at end of file diff --git a/html/highslide/highslide.js b/html/highslide/highslide.js new file mode 100644 index 000000000..f1d645b29 --- /dev/null +++ b/html/highslide/highslide.js @@ -0,0 +1,1891 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if (!hs) { var hs = { +// Language strings +lang : { + cssDirection: 'ltr', + loadingText : 'Loading...', + loadingTitle : 'Click to cancel', + focusTitle : 'Click to bring to front', + fullExpandTitle : 'Expand to actual size (f)', + creditsText : 'Powered by Highslide JS', + creditsTitle : 'Go to the Highslide JS homepage', + restoreTitle : 'Click to close image, click and drag to move. Use arrow keys for next and previous.' +}, +// See http://highslide.com/ref for examples of settings +graphicsDir : 'highslide/graphics/', +expandCursor : 'zoomin.cur', // null disables +restoreCursor : 'zoomout.cur', // null disables +expandDuration : 250, // milliseconds +restoreDuration : 250, +marginLeft : 15, +marginRight : 15, +marginTop : 15, +marginBottom : 15, +zIndexCounter : 1001, // adjust to other absolutely positioned elements +loadingOpacity : 0.75, +allowMultipleInstances: true, +numberOfImagesToPreload : 5, +outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only +outlineStartOffset : 3, // ends at 10 +padToMinWidth : false, // pad the popup width to make room for wide caption +fullExpandPosition : 'bottom right', +fullExpandOpacity : 1, +showCredits : true, // you can set this to false if you want +creditsHref : 'http://highslide.com/', +creditsTarget : '_self', +enableKeyListener : true, +openerTagNames : ['a'], // Add more to allow slideshow indexing + +dragByHeading: true, +minWidth: 200, +minHeight: 200, +allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight +outlineType : 'drop-shadow', // set null to disable outlines +// END OF YOUR SETTINGS + + +// declare internal properties +preloadTheseImages : [], +continuePreloading: true, +expanders : [], +overrides : [ + 'allowSizeReduction', + 'useBox', + 'outlineType', + 'outlineWhileAnimating', + 'captionId', + 'captionText', + 'captionEval', + 'captionOverlay', + 'headingId', + 'headingText', + 'headingEval', + 'headingOverlay', + 'creditsPosition', + 'dragByHeading', + + 'width', + 'height', + + 'wrapperClassName', + 'minWidth', + 'minHeight', + 'maxWidth', + 'maxHeight', + 'pageOrigin', + 'slideshowGroup', + 'easing', + 'easingClose', + 'fadeInOut', + 'src' +], +overlays : [], +idCounter : 0, +oPos : { + x: ['leftpanel', 'left', 'center', 'right', 'rightpanel'], + y: ['above', 'top', 'middle', 'bottom', 'below'] +}, +mouse: {}, +headingOverlay: {}, +captionOverlay: {}, +timers : [], + +pendingOutlines : {}, +clones : {}, +onReady: [], +uaVersion: /Trident\/4\.0/.test(navigator.userAgent) ? 8 : + parseFloat((navigator.userAgent.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]), +ie : (document.all && !window.opera), +//ie : navigator && /MSIE [678]/.test(navigator.userAgent), // ie9 compliant? +safari : /Safari/.test(navigator.userAgent), +geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent), + +$ : function (id) { + if (id) return document.getElementById(id); +}, + +push : function (arr, val) { + arr[arr.length] = val; +}, + +createElement : function (tag, attribs, styles, parent, nopad) { + var el = document.createElement(tag); + if (attribs) hs.extend(el, attribs); + if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0}); + if (styles) hs.setStyles(el, styles); + if (parent) parent.appendChild(el); + return el; +}, + +extend : function (el, attribs) { + for (var x in attribs) el[x] = attribs[x]; + return el; +}, + +setStyles : function (el, styles) { + for (var x in styles) { + if (hs.ieLt9 && x == 'opacity') { + if (styles[x] > 0.99) el.style.removeAttribute('filter'); + else el.style.filter = 'alpha(opacity='+ (styles[x] * 100) +')'; + } + else el.style[x] = styles[x]; + } +}, +animate: function(el, prop, opt) { + var start, + end, + unit; + if (typeof opt != 'object' || opt === null) { + var args = arguments; + opt = { + duration: args[2], + easing: args[3], + complete: args[4] + }; + } + if (typeof opt.duration != 'number') opt.duration = 250; + opt.easing = Math[opt.easing] || Math.easeInQuad; + opt.curAnim = hs.extend({}, prop); + for (var name in prop) { + var e = new hs.fx(el, opt , name ); + + start = parseFloat(hs.css(el, name)) || 0; + end = parseFloat(prop[name]); + unit = name != 'opacity' ? 'px' : ''; + + e.custom( start, end, unit ); + } +}, +css: function(el, prop) { + if (el.style[prop]) { + return el.style[prop]; + } else if (document.defaultView) { + return document.defaultView.getComputedStyle(el, null).getPropertyValue(prop); + + } else { + if (prop == 'opacity') prop = 'filter'; + var val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b){ return b.toUpperCase(); })]; + if (prop == 'filter') + val = val.replace(/alpha\(opacity=([0-9]+)\)/, + function (a, b) { return b / 100 }); + return val === '' ? 1 : val; + } +}, + +getPageSize : function () { + var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' + ? d.documentElement : d.body, + ieLt9 = hs.ie && (hs.uaVersion < 9 || typeof pageXOffset == 'undefined'); + + var width = ieLt9 ? iebody.clientWidth : + (d.documentElement.clientWidth || self.innerWidth), + height = ieLt9 ? iebody.clientHeight : self.innerHeight; + hs.page = { + width: width, + height: height, + scrollLeft: ieLt9 ? iebody.scrollLeft : pageXOffset, + scrollTop: ieLt9 ? iebody.scrollTop : pageYOffset + }; + return hs.page; +}, + +getPosition : function(el) { + var p = { x: el.offsetLeft, y: el.offsetTop }; + while (el.offsetParent) { + el = el.offsetParent; + p.x += el.offsetLeft; + p.y += el.offsetTop; + if (el != document.body && el != document.documentElement) { + p.x -= el.scrollLeft; + p.y -= el.scrollTop; + } + } + return p; +}, + +expand : function(a, params, custom, type) { + if (!a) a = hs.createElement('a', null, { display: 'none' }, hs.container); + if (typeof a.getParams == 'function') return params; + try { + new hs.Expander(a, params, custom); + return false; + } catch (e) { return true; } +}, + + +focusTopmost : function() { + var topZ = 0, + topmostKey = -1, + expanders = hs.expanders, + exp, + zIndex; + for (var i = 0; i < expanders.length; i++) { + exp = expanders[i]; + if (exp) { + zIndex = exp.wrapper.style.zIndex; + if (zIndex && zIndex > topZ) { + topZ = zIndex; + topmostKey = i; + } + } + } + if (topmostKey == -1) hs.focusKey = -1; + else expanders[topmostKey].focus(); +}, + +getParam : function (a, param) { + a.getParams = a.onclick; + var p = a.getParams ? a.getParams() : null; + a.getParams = null; + + return (p && typeof p[param] != 'undefined') ? p[param] : + (typeof hs[param] != 'undefined' ? hs[param] : null); +}, + +getSrc : function (a) { + var src = hs.getParam(a, 'src'); + if (src) return src; + return a.href; +}, + +getNode : function (id) { + var node = hs.$(id), clone = hs.clones[id], a = {}; + if (!node && !clone) return null; + if (!clone) { + clone = node.cloneNode(true); + clone.id = ''; + hs.clones[id] = clone; + return node; + } else { + return clone.cloneNode(true); + } +}, + +discardElement : function(d) { + if (d) hs.garbageBin.appendChild(d); + hs.garbageBin.innerHTML = ''; +}, +transit : function (adj, exp) { + var last = exp || hs.getExpander(); + exp = last; + if (hs.upcoming) return false; + else hs.last = last; + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + try { + hs.upcoming = adj; + adj.onclick(); + } catch (e){ + hs.last = hs.upcoming = null; + } + try { + exp.close(); + } catch (e) {} + return false; +}, + +previousOrNext : function (el, op) { + var exp = hs.getExpander(el); + if (exp) return hs.transit(exp.getAdjacentAnchor(op), exp); + else return false; +}, + +previous : function (el) { + return hs.previousOrNext(el, -1); +}, + +next : function (el) { + return hs.previousOrNext(el, 1); +}, + +keyHandler : function(e) { + if (!e) e = window.event; + if (!e.target) e.target = e.srcElement; // ie + if (typeof e.target.form != 'undefined') return true; // form element has focus + var exp = hs.getExpander(); + + var op = null; + switch (e.keyCode) { + case 70: // f + if (exp) exp.doFullExpand(); + return true; + case 32: // Space + case 34: // Page Down + case 39: // Arrow right + case 40: // Arrow down + op = 1; + break; + case 8: // Backspace + case 33: // Page Up + case 37: // Arrow left + case 38: // Arrow up + op = -1; + break; + case 27: // Escape + case 13: // Enter + op = 0; + } + if (op !== null) {hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + if (!hs.enableKeyListener) return true; + + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + if (exp) { + if (op == 0) { + exp.close(); + } else { + hs.previousOrNext(exp.key, op); + } + return false; + } + } + return true; +}, + + +registerOverlay : function (overlay) { + hs.push(hs.overlays, hs.extend(overlay, { hsId: 'hsId'+ hs.idCounter++ } )); +}, + + +getWrapperKey : function (element, expOnly) { + var el, re = /^highslide-wrapper-([0-9]+)$/; + // 1. look in open expanders + el = element; + while (el.parentNode) { + if (el.id && re.test(el.id)) return el.id.replace(re, "$1"); + el = el.parentNode; + } + // 2. look in thumbnail + if (!expOnly) { + el = element; + while (el.parentNode) { + if (el.tagName && hs.isHsAnchor(el)) { + for (var key = 0; key < hs.expanders.length; key++) { + var exp = hs.expanders[key]; + if (exp && exp.a == el) return key; + } + } + el = el.parentNode; + } + } + return null; +}, + +getExpander : function (el, expOnly) { + if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null; + if (typeof el == 'number') return hs.expanders[el] || null; + if (typeof el == 'string') el = hs.$(el); + return hs.expanders[hs.getWrapperKey(el, expOnly)] || null; +}, + +isHsAnchor : function (a) { + return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/)); +}, + +reOrder : function () { + for (var i = 0; i < hs.expanders.length; i++) + if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost(); +}, + +mouseClickHandler : function(e) +{ + if (!e) e = window.event; + if (e.button > 1) return true; + if (!e.target) e.target = e.srcElement; + + var el = e.target; + while (el.parentNode + && !(/highslide-(image|move|html|resize)/.test(el.className))) + { + el = el.parentNode; + } + var exp = hs.getExpander(el); + if (exp && (exp.isClosing || !exp.isExpanded)) return true; + + if (exp && e.type == 'mousedown') { + if (e.target.form) return true; + var match = el.className.match(/highslide-(image|move|resize)/); + if (match) { + hs.dragArgs = { + exp: exp , + type: match[1], + left: exp.x.pos, + width: exp.x.size, + top: exp.y.pos, + height: exp.y.size, + clickX: e.clientX, + clickY: e.clientY + }; + + + hs.addEventListener(document, 'mousemove', hs.dragHandler); + if (e.preventDefault) e.preventDefault(); // FF + + if (/highslide-(image|html)-blur/.test(exp.content.className)) { + exp.focus(); + hs.hasFocused = true; + } + return false; + } + } else if (e.type == 'mouseup') { + + hs.removeEventListener(document, 'mousemove', hs.dragHandler); + + if (hs.dragArgs) { + if (hs.styleRestoreCursor && hs.dragArgs.type == 'image') + hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor; + var hasDragged = hs.dragArgs.hasDragged; + + if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) { + exp.close(); + } + else if (hasDragged || (!hasDragged && hs.hasHtmlExpanders)) { + hs.dragArgs.exp.doShowHide('hidden'); + } + hs.hasFocused = false; + hs.dragArgs = null; + + } else if (/highslide-image-blur/.test(el.className)) { + el.style.cursor = hs.styleRestoreCursor; + } + } + return false; +}, + +dragHandler : function(e) +{ + if (!hs.dragArgs) return true; + if (!e) e = window.event; + var a = hs.dragArgs, exp = a.exp; + + a.dX = e.clientX - a.clickX; + a.dY = e.clientY - a.clickY; + + var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2)); + if (!a.hasDragged) a.hasDragged = (a.type != 'image' && distance > 0) + || (distance > (hs.dragSensitivity || 5)); + + if (a.hasDragged && e.clientX > 5 && e.clientY > 5) { + + if (a.type == 'resize') exp.resize(a); + else { + exp.moveTo(a.left + a.dX, a.top + a.dY); + if (a.type == 'image') exp.content.style.cursor = 'move'; + } + } + return false; +}, + +wrapperMouseHandler : function (e) { + try { + if (!e) e = window.event; + var over = /mouseover/i.test(e.type); + if (!e.target) e.target = e.srcElement; // ie + if (!e.relatedTarget) e.relatedTarget = + over ? e.fromElement : e.toElement; // ie + var exp = hs.getExpander(e.target); + if (!exp.isExpanded) return; + if (!exp || !e.relatedTarget || hs.getExpander(e.relatedTarget, true) == exp + || hs.dragArgs) return; + for (var i = 0; i < exp.overlays.length; i++) (function() { + var o = hs.$('hsId'+ exp.overlays[i]); + if (o && o.hideOnMouseOut) { + if (over) hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: over ? o.opacity : 0 }, o.dur); + } + })(); + } catch (e) {} +}, +addEventListener : function (el, event, func) { + if (el == document && event == 'ready') { + hs.push(hs.onReady, func); + } + try { + el.addEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + el.attachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = func; + } + } +}, + +removeEventListener : function (el, event, func) { + try { + el.removeEventListener(event, func, false); + } catch (e) { + try { + el.detachEvent('on'+ event, func); + } catch (e) { + el['on'+ event] = null; + } + } +}, + +preloadFullImage : function (i) { + if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') { + var img = document.createElement('img'); + img.onload = function() { + img = null; + hs.preloadFullImage(i + 1); + }; + img.src = hs.preloadTheseImages[i]; + } +}, +preloadImages : function (number) { + if (number && typeof number != 'object') hs.numberOfImagesToPreload = number; + + var arr = hs.getAnchors(); + for (var i = 0; i < arr.images.length && i < hs.numberOfImagesToPreload; i++) { + hs.push(hs.preloadTheseImages, hs.getSrc(arr.images[i])); + } + + // preload outlines + if (hs.outlineType) new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} ); + else + + hs.preloadFullImage(0); + + // preload cursor + if (hs.restoreCursor) var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor }); +}, + + +init : function () { + if (!hs.container) { + + hs.ieLt7 = hs.ie && hs.uaVersion < 7; + hs.ieLt9 = hs.ie && hs.uaVersion < 9; + + hs.getPageSize(); + for (var x in hs.langDefaults) { + if (typeof hs[x] != 'undefined') hs.lang[x] = hs[x]; + else if (typeof hs.lang[x] == 'undefined' && typeof hs.langDefaults[x] != 'undefined') + hs.lang[x] = hs.langDefaults[x]; + } + + hs.container = hs.createElement('div', { + className: 'highslide-container' + }, { + position: 'absolute', + left: 0, + top: 0, + width: '100%', + zIndex: hs.zIndexCounter, + direction: 'ltr' + }, + document.body, + true + ); + hs.loading = hs.createElement('a', { + className: 'highslide-loading', + title: hs.lang.loadingTitle, + innerHTML: hs.lang.loadingText, + href: 'javascript:;' + }, { + position: 'absolute', + top: '-9999px', + opacity: hs.loadingOpacity, + zIndex: 1 + }, hs.container + ); + hs.garbageBin = hs.createElement('div', null, { display: 'none' }, hs.container); + + // http://www.robertpenner.com/easing/ + Math.linearTween = function (t, b, c, d) { + return c*t/d + b; + }; + Math.easeInQuad = function (t, b, c, d) { + return c*(t/=d)*t + b; + }; + + hs.hideSelects = hs.ieLt7; + hs.hideIframes = ((window.opera && hs.uaVersion < 9) || navigator.vendor == 'KDE' + || (hs.ieLt7 && hs.uaVersion < 5.5)); + } +}, +ready : function() { + if (hs.isReady) return; + hs.isReady = true; + for (var i = 0; i < hs.onReady.length; i++) hs.onReady[i](); +}, + +updateAnchors : function() { + var el, els, all = [], images = [],groups = {}, re; + + for (var i = 0; i < hs.openerTagNames.length; i++) { + els = document.getElementsByTagName(hs.openerTagNames[i]); + for (var j = 0; j < els.length; j++) { + el = els[j]; + re = hs.isHsAnchor(el); + if (re) { + hs.push(all, el); + if (re[0] == 'hs.expand') hs.push(images, el); + var g = hs.getParam(el, 'slideshowGroup') || 'none'; + if (!groups[g]) groups[g] = []; + hs.push(groups[g], el); + } + } + } + hs.anchors = { all: all, groups: groups, images: images }; + return hs.anchors; + +}, + +getAnchors : function() { + return hs.anchors || hs.updateAnchors(); +}, + + +close : function(el) { + var exp = hs.getExpander(el); + if (exp) exp.close(); + return false; +} +}; // end hs object +hs.fx = function( elem, options, prop ){ + this.options = options; + this.elem = elem; + this.prop = prop; + + if (!options.orig) options.orig = {}; +}; +hs.fx.prototype = { + update: function(){ + (hs.fx.step[this.prop] || hs.fx.step._default)(this); + + if (this.options.step) + this.options.step.call(this.elem, this.now, this); + + }, + custom: function(from, to, unit){ + this.startTime = (new Date()).getTime(); + this.start = from; + this.end = to; + this.unit = unit;// || this.unit || "px"; + this.now = this.start; + this.pos = this.state = 0; + + var self = this; + function t(gotoEnd){ + return self.step(gotoEnd); + } + + t.elem = this.elem; + + if ( t() && hs.timers.push(t) == 1 ) { + hs.timerId = setInterval(function(){ + var timers = hs.timers; + + for ( var i = 0; i < timers.length; i++ ) + if ( !timers[i]() ) + timers.splice(i--, 1); + + if ( !timers.length ) { + clearInterval(hs.timerId); + } + }, 13); + } + }, + step: function(gotoEnd){ + var t = (new Date()).getTime(); + if ( gotoEnd || t >= this.options.duration + this.startTime ) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + + this.options.curAnim[ this.prop ] = true; + + var done = true; + for ( var i in this.options.curAnim ) + if ( this.options.curAnim[i] !== true ) + done = false; + + if ( done ) { + if (this.options.complete) this.options.complete.call(this.elem); + } + return false; + } else { + var n = t - this.startTime; + this.state = n / this.options.duration; + this.pos = this.options.easing(n, 0, 1, this.options.duration); + this.now = this.start + ((this.end - this.start) * this.pos); + this.update(); + } + return true; + } + +}; + +hs.extend( hs.fx, { + step: { + + opacity: function(fx){ + hs.setStyles(fx.elem, { opacity: fx.now }); + }, + + _default: function(fx){ + try { + if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) + fx.elem.style[ fx.prop ] = fx.now + fx.unit; + else + fx.elem[ fx.prop ] = fx.now; + } catch (e) {} + } + } +}); + +hs.Outline = function (outlineType, onLoad) { + this.onLoad = onLoad; + this.outlineType = outlineType; + var v = hs.uaVersion, tr; + + this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7; + if (!outlineType) { + if (onLoad) onLoad(); + return; + } + + hs.init(); + this.table = hs.createElement( + 'table', { + cellSpacing: 0 + }, { + visibility: 'hidden', + position: 'absolute', + borderCollapse: 'collapse', + width: 0 + }, + hs.container, + true + ); + var tbody = hs.createElement('tbody', null, null, this.table, 1); + + this.td = []; + for (var i = 0; i <= 8; i++) { + if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true); + this.td[i] = hs.createElement('td', null, null, tr, true); + var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' }; + hs.setStyles(this.td[i], style); + } + this.td[4].className = outlineType +' highslide-outline'; + + this.preloadGraphic(); +}; + +hs.Outline.prototype = { +preloadGraphic : function () { + var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png"; + + var appendTo = hs.safari && hs.uaVersion < 525 ? hs.container : null; + this.graphic = hs.createElement('img', null, { position: 'absolute', + top: '-9999px' }, appendTo, true); // for onload trigger + + var pThis = this; + this.graphic.onload = function() { pThis.onGraphicLoad(); }; + + this.graphic.src = src; +}, + +onGraphicLoad : function () { + var o = this.offset = this.graphic.width / 4, + pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]], + dim = { height: (2*o) +'px', width: (2*o) +'px' }; + for (var i = 0; i <= 8; i++) { + if (pos[i]) { + if (this.hasAlphaImageLoader) { + var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px'; + var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true); + hs.createElement ('div', null, { + filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", + position: 'absolute', + width: w, + height: this.graphic.height +'px', + left: (pos[i][0]*o)+'px', + top: (pos[i][1]*o)+'px' + }, + div, + true); + } else { + hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'}); + } + + if (window.opera && (i == 3 || i ==5)) + hs.createElement('div', null, dim, this.td[i], true); + + hs.setStyles (this.td[i], dim); + } + } + this.graphic = null; + if (hs.pendingOutlines[this.outlineType]) hs.pendingOutlines[this.outlineType].destroy(); + hs.pendingOutlines[this.outlineType] = this; + if (this.onLoad) this.onLoad(); +}, + +setPosition : function (pos, offset, vis, dur, easing) { + var exp = this.exp, + stl = exp.wrapper.style, + offset = offset || 0, + pos = pos || { + x: exp.x.pos + offset, + y: exp.y.pos + offset, + w: exp.x.get('wsize') - 2 * offset, + h: exp.y.get('wsize') - 2 * offset + }; + if (vis) this.table.style.visibility = (pos.h >= 4 * this.offset) + ? 'visible' : 'hidden'; + hs.setStyles(this.table, { + left: (pos.x - this.offset) +'px', + top: (pos.y - this.offset) +'px', + width: (pos.w + 2 * this.offset) +'px' + }); + + pos.w -= 2 * this.offset; + pos.h -= 2 * this.offset; + hs.setStyles (this.td[4], { + width: pos.w >= 0 ? pos.w +'px' : 0, + height: pos.h >= 0 ? pos.h +'px' : 0 + }); + if (this.hasAlphaImageLoader) this.td[3].style.height + = this.td[5].style.height = this.td[4].style.height; + +}, + +destroy : function(hide) { + if (hide) this.table.style.visibility = 'hidden'; + else hs.discardElement(this.table); +} +}; + +hs.Dimension = function(exp, dim) { + this.exp = exp; + this.dim = dim; + this.ucwh = dim == 'x' ? 'Width' : 'Height'; + this.wh = this.ucwh.toLowerCase(); + this.uclt = dim == 'x' ? 'Left' : 'Top'; + this.lt = this.uclt.toLowerCase(); + this.ucrb = dim == 'x' ? 'Right' : 'Bottom'; + this.rb = this.ucrb.toLowerCase(); + this.p1 = this.p2 = 0; +}; +hs.Dimension.prototype = { +get : function(key) { + switch (key) { + case 'loadingPos': + return this.tpos + this.tb + (this.t - hs.loading['offset'+ this.ucwh]) / 2; + case 'wsize': + return this.size + 2 * this.cb + this.p1 + this.p2; + case 'fitsize': + return this.clientSize - this.marginMin - this.marginMax; + case 'maxsize': + return this.get('fitsize') - 2 * this.cb - this.p1 - this.p2 ; + case 'opos': + return this.pos - (this.exp.outline ? this.exp.outline.offset : 0); + case 'osize': + return this.get('wsize') + (this.exp.outline ? 2*this.exp.outline.offset : 0); + case 'imgPad': + return this.imgSize ? Math.round((this.size - this.imgSize) / 2) : 0; + + } +}, +calcBorders: function() { + // correct for borders + this.cb = (this.exp.content['offset'+ this.ucwh] - this.t) / 2; + + this.marginMax = hs['margin'+ this.ucrb]; +}, +calcThumb: function() { + this.t = this.exp.el[this.wh] ? parseInt(this.exp.el[this.wh]) : + this.exp.el['offset'+ this.ucwh]; + this.tpos = this.exp.tpos[this.dim]; + this.tb = (this.exp.el['offset'+ this.ucwh] - this.t) / 2; + if (this.tpos == 0 || this.tpos == -1) { + this.tpos = (hs.page[this.wh] / 2) + hs.page['scroll'+ this.uclt]; + }; +}, +calcExpanded: function() { + var exp = this.exp; + this.justify = 'auto'; + + + // size and position + this.pos = this.tpos - this.cb + this.tb; + + if (this.maxHeight && this.dim == 'x') + exp.maxWidth = Math.min(exp.maxWidth || this.full, exp.maxHeight * this.full / exp.y.full); + + this.size = Math.min(this.full, exp['max'+ this.ucwh] || this.full); + this.minSize = exp.allowSizeReduction ? + Math.min(exp['min'+ this.ucwh], this.full) :this.full; + if (exp.isImage && exp.useBox) { + this.size = exp[this.wh]; + this.imgSize = this.full; + } + if (this.dim == 'x' && hs.padToMinWidth) this.minSize = exp.minWidth; + this.marginMin = hs['margin'+ this.uclt]; + this.scroll = hs.page['scroll'+ this.uclt]; + this.clientSize = hs.page[this.wh]; +}, +setSize: function(i) { + var exp = this.exp; + if (exp.isImage && (exp.useBox || hs.padToMinWidth)) { + this.imgSize = i; + this.size = Math.max(this.size, this.imgSize); + exp.content.style[this.lt] = this.get('imgPad')+'px'; + } else + this.size = i; + + exp.content.style[this.wh] = i +'px'; + exp.wrapper.style[this.wh] = this.get('wsize') +'px'; + if (exp.outline) exp.outline.setPosition(); + if (this.dim == 'x' && exp.overlayBox) exp.sizeOverlayBox(true); +}, +setPos: function(i) { + this.pos = i; + this.exp.wrapper.style[this.lt] = i +'px'; + + if (this.exp.outline) this.exp.outline.setPosition(); + +} +}; + +hs.Expander = function(a, params, custom, contentType) { + if (document.readyState && hs.ie && !hs.isReady) { + hs.addEventListener(document, 'ready', function() { + new hs.Expander(a, params, custom, contentType); + }); + return; + } + this.a = a; + this.custom = custom; + this.contentType = contentType || 'image'; + this.isImage = !this.isHtml; + + hs.continuePreloading = false; + this.overlays = []; + hs.init(); + var key = this.key = hs.expanders.length; + // override inline parameters + for (var i = 0; i < hs.overrides.length; i++) { + var name = hs.overrides[i]; + this[name] = params && typeof params[name] != 'undefined' ? + params[name] : hs[name]; + } + if (!this.src) this.src = a.href; + + // get thumb + var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a; + el = this.thumb = el.getElementsByTagName('img')[0] || el; + this.thumbsUserSetId = el.id || a.id; + + // check if already open + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].a == a) { + hs.expanders[i].focus(); + return false; + } + } + + // cancel other + if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) { + hs.expanders[i].cancelLoading(); + } + } + hs.expanders[key] = this; + if (!hs.allowMultipleInstances && !hs.upcoming) { + if (hs.expanders[key-1]) hs.expanders[key-1].close(); + if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey]) + hs.expanders[hs.focusKey].close(); + } + + // initiate metrics + this.el = el; + this.tpos = this.pageOrigin || hs.getPosition(el); + hs.getPageSize(); + var x = this.x = new hs.Dimension(this, 'x'); + x.calcThumb(); + var y = this.y = new hs.Dimension(this, 'y'); + y.calcThumb(); + this.wrapper = hs.createElement( + 'div', { + id: 'highslide-wrapper-'+ this.key, + className: 'highslide-wrapper '+ this.wrapperClassName + }, { + visibility: 'hidden', + position: 'absolute', + zIndex: hs.zIndexCounter += 2 + }, null, true ); + + this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler; + if (this.contentType == 'image' && this.outlineWhileAnimating == 2) + this.outlineWhileAnimating = 0; + + // get the outline + if (!this.outlineType) { + this[this.contentType +'Create'](); + + } else if (hs.pendingOutlines[this.outlineType]) { + this.connectOutline(); + this[this.contentType +'Create'](); + + } else { + this.showLoading(); + var exp = this; + new hs.Outline(this.outlineType, + function () { + exp.connectOutline(); + exp[exp.contentType +'Create'](); + } + ); + } + return true; +}; + +hs.Expander.prototype = { +error : function(e) { + if (hs.debug) alert ('Line '+ e.lineNumber +': '+ e.message); + else window.location.href = this.src; +}, + +connectOutline : function() { + var outline = this.outline = hs.pendingOutlines[this.outlineType]; + outline.exp = this; + outline.table.style.zIndex = this.wrapper.style.zIndex - 1; + hs.pendingOutlines[this.outlineType] = null; +}, + +showLoading : function() { + if (this.onLoadStarted || this.loading) return; + + this.loading = hs.loading; + var exp = this; + this.loading.onclick = function() { + exp.cancelLoading(); + }; + var exp = this, + l = this.x.get('loadingPos') +'px', + t = this.y.get('loadingPos') +'px'; + setTimeout(function () { + if (exp.loading) hs.setStyles(exp.loading, { left: l, top: t, zIndex: hs.zIndexCounter++ })} + , 100); +}, + +imageCreate : function() { + var exp = this; + + var img = document.createElement('img'); + this.content = img; + img.onload = function () { + if (hs.expanders[exp.key]) exp.contentLoaded(); + }; + if (hs.blockRightClick) img.oncontextmenu = function() { return false; }; + img.className = 'highslide-image'; + hs.setStyles(img, { + visibility: 'hidden', + display: 'block', + position: 'absolute', + maxWidth: '9999px', + zIndex: 3 + }); + img.title = hs.lang.restoreTitle; + if (hs.safari && hs.uaVersion < 525) hs.container.appendChild(img); + if (hs.ie && hs.flushImgSize) img.src = null; + img.src = this.src; + + this.showLoading(); +}, + +contentLoaded : function() { + try { + if (!this.content) return; + this.content.onload = null; + if (this.onLoadStarted) return; + else this.onLoadStarted = true; + + var x = this.x, y = this.y; + + if (this.loading) { + hs.setStyles(this.loading, { top: '-9999px' }); + this.loading = null; + } + x.full = this.content.width; + y.full = this.content.height; + + hs.setStyles(this.content, { + width: x.t +'px', + height: y.t +'px' + }); + this.wrapper.appendChild(this.content); + hs.container.appendChild(this.wrapper); + + x.calcBorders(); + y.calcBorders(); + + hs.setStyles (this.wrapper, { + left: (x.tpos + x.tb - x.cb) +'px', + top: (y.tpos + x.tb - y.cb) +'px' + }); + this.getOverlays(); + + var ratio = x.full / y.full; + x.calcExpanded(); + this.justify(x); + + y.calcExpanded(); + this.justify(y); + if (this.overlayBox) this.sizeOverlayBox(0, 1); + + + if (this.allowSizeReduction) { + this.correctRatio(ratio); + if (this.isImage && this.x.full > (this.x.imgSize || this.x.size)) { + this.createFullExpand(); + if (this.overlays.length == 1) this.sizeOverlayBox(); + } + } + this.show(); + + } catch (e) { + this.error(e); + } +}, + +justify : function (p, moveOnly) { + var tgtArr, tgt = p.target, dim = p == this.x ? 'x' : 'y'; + + var hasMovedMin = false; + + var allowReduce = p.exp.allowSizeReduction; + p.pos = Math.round(p.pos - ((p.get('wsize') - p.t) / 2)); + if (p.pos < p.scroll + p.marginMin) { + p.pos = p.scroll + p.marginMin; + hasMovedMin = true; + } + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + if (p.pos + p.get('wsize') > p.scroll + p.clientSize - p.marginMax) { + if (!moveOnly && hasMovedMin && allowReduce) { + p.size = Math.min(p.size, p.get(dim == 'y' ? 'fitsize' : 'maxsize')); + } else if (p.get('wsize') < p.get('fitsize')) { + p.pos = p.scroll + p.clientSize - p.marginMax - p.get('wsize'); + } else { // image larger than viewport + p.pos = p.scroll + p.marginMin; + if (!moveOnly && allowReduce) p.size = p.get(dim == 'y' ? 'fitsize' : 'maxsize'); + } + } + + if (!moveOnly && p.size < p.minSize) { + p.size = p.minSize; + allowReduce = false; + } + + + + if (p.pos < p.marginMin) { + var tmpMin = p.pos; + p.pos = p.marginMin; + + if (allowReduce && !moveOnly) p.size = p.size - (p.pos - tmpMin); + + } +}, + +correctRatio : function(ratio) { + var x = this.x, + y = this.y, + changed = false, + xSize = Math.min(x.full, x.size), + ySize = Math.min(y.full, y.size), + useBox = (this.useBox || hs.padToMinWidth); + + if (xSize / ySize > ratio) { // width greater + xSize = ySize * ratio; + if (xSize < x.minSize) { // below minWidth + xSize = x.minSize; + ySize = xSize / ratio; + } + changed = true; + + } else if (xSize / ySize < ratio) { // height greater + ySize = xSize / ratio; + changed = true; + } + + if (hs.padToMinWidth && x.full < x.minSize) { + x.imgSize = x.full; + y.size = y.imgSize = y.full; + } else if (this.useBox) { + x.imgSize = xSize; + y.imgSize = ySize; + } else { + x.size = xSize; + y.size = ySize; + } + changed = this.fitOverlayBox(this.useBox ? null : ratio, changed); + if (useBox && y.size < y.imgSize) { + y.imgSize = y.size; + x.imgSize = y.size * ratio; + } + if (changed || useBox) { + x.pos = x.tpos - x.cb + x.tb; + x.minSize = x.size; + this.justify(x, true); + + y.pos = y.tpos - y.cb + y.tb; + y.minSize = y.size; + this.justify(y, true); + if (this.overlayBox) this.sizeOverlayBox(); + } + + +}, +fitOverlayBox : function(ratio, changed) { + var x = this.x, y = this.y; + if (this.overlayBox) { + while (y.size > this.minHeight && x.size > this.minWidth + && y.get('wsize') > y.get('fitsize')) { + y.size -= 10; + if (ratio) x.size = y.size * ratio; + this.sizeOverlayBox(0, 1); + changed = true; + } + } + return changed; +}, + +show : function () { + var x = this.x, y = this.y; + this.doShowHide('hidden'); + + // Apply size change + this.changeSize( + 1, { + wrapper: { + width : x.get('wsize'), + height : y.get('wsize'), + left: x.pos, + top: y.pos + }, + content: { + left: x.p1 + x.get('imgPad'), + top: y.p1 + y.get('imgPad'), + width:x.imgSize ||x.size, + height:y.imgSize ||y.size + } + }, + hs.expandDuration + ); +}, + +changeSize : function(up, to, dur) { + + if (this.outline && !this.outlineWhileAnimating) { + if (up) this.outline.setPosition(); + else this.outline.destroy(); + } + + + if (!up) this.destroyOverlays(); + + var exp = this, + x = exp.x, + y = exp.y, + easing = this.easing; + if (!up) easing = this.easingClose || easing; + var after = up ? + function() { + + if (exp.outline) exp.outline.table.style.visibility = "visible"; + setTimeout(function() { + exp.afterExpand(); + }, 50); + } : + function() { + exp.afterClose(); + }; + if (up) hs.setStyles( this.wrapper, { + width: x.t +'px', + height: y.t +'px' + }); + if (this.fadeInOut) { + hs.setStyles(this.wrapper, { opacity: up ? 0 : 1 }); + hs.extend(to.wrapper, { opacity: up }); + } + hs.animate( this.wrapper, to.wrapper, { + duration: dur, + easing: easing, + step: function(val, args) { + if (exp.outline && exp.outlineWhileAnimating && args.prop == 'top') { + var fac = up ? args.pos : 1 - args.pos; + var pos = { + w: x.t + (x.get('wsize') - x.t) * fac, + h: y.t + (y.get('wsize') - y.t) * fac, + x: x.tpos + (x.pos - x.tpos) * fac, + y: y.tpos + (y.pos - y.tpos) * fac + }; + exp.outline.setPosition(pos, 0, 1); + } + } + }); + hs.animate( this.content, to.content, dur, easing, after); + if (up) { + this.wrapper.style.visibility = 'visible'; + this.content.style.visibility = 'visible'; + this.a.className += ' highslide-active-anchor'; + } +}, + + + + +afterExpand : function() { + this.isExpanded = true; + this.focus(); + if (hs.upcoming && hs.upcoming == this.a) hs.upcoming = null; + this.prepareNextOutline(); + var p = hs.page, mX = hs.mouse.x + p.scrollLeft, mY = hs.mouse.y + p.scrollTop; + this.mouseIsOver = this.x.pos < mX && mX < this.x.pos + this.x.get('wsize') + && this.y.pos < mY && mY < this.y.pos + this.y.get('wsize'); + if (this.overlayBox) this.showOverlays(); + +}, + + +prepareNextOutline : function() { + var key = this.key; + var outlineType = this.outlineType; + new hs.Outline(outlineType, + function () { try { hs.expanders[key].preloadNext(); } catch (e) {} }); +}, + + +preloadNext : function() { + var next = this.getAdjacentAnchor(1); + if (next && next.onclick.toString().match(/hs\.expand/)) + var img = hs.createElement('img', { src: hs.getSrc(next) }); +}, + + +getAdjacentAnchor : function(op) { + var current = this.getAnchorIndex(), as = hs.anchors.groups[this.slideshowGroup || 'none']; + return (as && as[current + op]) || null; +}, + +getAnchorIndex : function() { + var arr = hs.getAnchors().groups[this.slideshowGroup || 'none']; + if (arr) for (var i = 0; i < arr.length; i++) { + if (arr[i] == this.a) return i; + } + return null; +}, + + +cancelLoading : function() { + hs.discardElement (this.wrapper); + hs.expanders[this.key] = null; + if (this.loading) hs.loading.style.left = '-9999px'; +}, + +writeCredits : function () { + this.credits = hs.createElement('a', { + href: hs.creditsHref, + target: hs.creditsTarget, + className: 'highslide-credits', + innerHTML: hs.lang.creditsText, + title: hs.lang.creditsTitle + }); + this.createOverlay({ + overlayId: this.credits, + position: this.creditsPosition || 'top left' + }); +}, + +getInline : function(types, addOverlay) { + for (var i = 0; i < types.length; i++) { + var type = types[i], s = null; + if (!this[type +'Id'] && this.thumbsUserSetId) + this[type +'Id'] = type +'-for-'+ this.thumbsUserSetId; + if (this[type +'Id']) this[type] = hs.getNode(this[type +'Id']); + if (!this[type] && !this[type +'Text'] && this[type +'Eval']) try { + s = eval(this[type +'Eval']); + } catch (e) {} + if (!this[type] && this[type +'Text']) { + s = this[type +'Text']; + } + if (!this[type] && !s) { + this[type] = hs.getNode(this.a['_'+ type + 'Id']); + if (!this[type]) { + var next = this.a.nextSibling; + while (next && !hs.isHsAnchor(next)) { + if ((new RegExp('highslide-'+ type)).test(next.className || null)) { + if (!next.id) this.a['_'+ type + 'Id'] = next.id = 'hsId'+ hs.idCounter++; + this[type] = hs.getNode(next.id); + break; + } + next = next.nextSibling; + } + } + } + + if (!this[type] && s) this[type] = hs.createElement('div', + { className: 'highslide-'+ type, innerHTML: s } ); + + if (addOverlay && this[type]) { + var o = { position: (type == 'heading') ? 'above' : 'below' }; + for (var x in this[type+'Overlay']) o[x] = this[type+'Overlay'][x]; + o.overlayId = this[type]; + this.createOverlay(o); + } + } +}, + + +// on end move and resize +doShowHide : function(visibility) { + if (hs.hideSelects) this.showHideElements('SELECT', visibility); + if (hs.hideIframes) this.showHideElements('IFRAME', visibility); + if (hs.geckoMac) this.showHideElements('*', visibility); +}, +showHideElements : function (tagName, visibility) { + var els = document.getElementsByTagName(tagName); + var prop = tagName == '*' ? 'overflow' : 'visibility'; + for (var i = 0; i < els.length; i++) { + if (prop == 'visibility' || (document.defaultView.getComputedStyle( + els[i], "").getPropertyValue('overflow') == 'auto' + || els[i].getAttribute('hidden-by') != null)) { + var hiddenBy = els[i].getAttribute('hidden-by'); + if (visibility == 'visible' && hiddenBy) { + hiddenBy = hiddenBy.replace('['+ this.key +']', ''); + els[i].setAttribute('hidden-by', hiddenBy); + if (!hiddenBy) els[i].style[prop] = els[i].origProp; + } else if (visibility == 'hidden') { // hide if behind + var elPos = hs.getPosition(els[i]); + elPos.w = els[i].offsetWidth; + elPos.h = els[i].offsetHeight; + + + var clearsX = (elPos.x + elPos.w < this.x.get('opos') + || elPos.x > this.x.get('opos') + this.x.get('osize')); + var clearsY = (elPos.y + elPos.h < this.y.get('opos') + || elPos.y > this.y.get('opos') + this.y.get('osize')); + var wrapperKey = hs.getWrapperKey(els[i]); + if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image + if (!hiddenBy) { + els[i].setAttribute('hidden-by', '['+ this.key +']'); + els[i].origProp = els[i].style[prop]; + els[i].style[prop] = 'hidden'; + + } else if (hiddenBy.indexOf('['+ this.key +']') == -1) { + els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']'); + } + } else if ((hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) + && wrapperKey != this.key) { // on move + els[i].setAttribute('hidden-by', ''); + els[i].style[prop] = els[i].origProp || ''; + } else if (hiddenBy && hiddenBy.indexOf('['+ this.key +']') > -1) { + els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', '')); + } + + } + } + } +}, + +focus : function() { + this.wrapper.style.zIndex = hs.zIndexCounter += 2; + // blur others + for (var i = 0; i < hs.expanders.length; i++) { + if (hs.expanders[i] && i == hs.focusKey) { + var blurExp = hs.expanders[i]; + blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur'; + blurExp.content.style.cursor = hs.ieLt7 ? 'hand' : 'pointer'; + blurExp.content.title = hs.lang.focusTitle; + } + } + + // focus this + if (this.outline) this.outline.table.style.zIndex + = this.wrapper.style.zIndex - 1; + this.content.className = 'highslide-'+ this.contentType; + this.content.title = hs.lang.restoreTitle; + + if (hs.restoreCursor) { + hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer'; + if (hs.ieLt7 && hs.uaVersion < 6) hs.styleRestoreCursor = 'hand'; + this.content.style.cursor = hs.styleRestoreCursor; + } + + hs.focusKey = this.key; + hs.addEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); +}, +moveTo: function(x, y) { + this.x.setPos(x); + this.y.setPos(y); +}, +resize : function (e) { + var w, h, r = e.width / e.height; + w = Math.max(e.width + e.dX, Math.min(this.minWidth, this.x.full)); + if (this.isImage && Math.abs(w - this.x.full) < 12) w = this.x.full; + h = w / r; + if (h < Math.min(this.minHeight, this.y.full)) { + h = Math.min(this.minHeight, this.y.full); + if (this.isImage) w = h * r; + } + this.resizeTo(w, h); +}, +resizeTo: function(w, h) { + this.y.setSize(h); + this.x.setSize(w); + this.wrapper.style.height = this.y.get('wsize') +'px'; +}, + +close : function() { + if (this.isClosing || !this.isExpanded) return; + this.isClosing = true; + + hs.removeEventListener(document, window.opera ? 'keypress' : 'keydown', hs.keyHandler); + + try { + this.content.style.cursor = 'default'; + this.changeSize( + 0, { + wrapper: { + width : this.x.t, + height : this.y.t, + left: this.x.tpos - this.x.cb + this.x.tb, + top: this.y.tpos - this.y.cb + this.y.tb + }, + content: { + left: 0, + top: 0, + width: this.x.t, + height: this.y.t + } + }, hs.restoreDuration + ); + } catch (e) { this.afterClose(); } +}, + +createOverlay : function (o) { + var el = o.overlayId; + if (typeof el == 'string') el = hs.getNode(el); + if (o.html) el = hs.createElement('div', { innerHTML: o.html }); + if (!el || typeof el == 'string') return; + el.style.display = 'block'; + this.genOverlayBox(); + var width = o.width && /^[0-9]+(px|%)$/.test(o.width) ? o.width : 'auto'; + if (/^(left|right)panel$/.test(o.position) && !/^[0-9]+px$/.test(o.width)) width = '200px'; + var overlay = hs.createElement( + 'div', { + id: 'hsId'+ hs.idCounter++, + hsId: o.hsId + }, { + position: 'absolute', + visibility: 'hidden', + width: width, + direction: hs.lang.cssDirection || '', + opacity: 0 + },this.overlayBox, + true + ); + + overlay.appendChild(el); + hs.extend(overlay, { + opacity: 1, + offsetX: 0, + offsetY: 0, + dur: (o.fade === 0 || o.fade === false || (o.fade == 2 && hs.ie)) ? 0 : 250 + }); + hs.extend(overlay, o); + + + if (this.gotOverlays) { + this.positionOverlay(overlay); + if (!overlay.hideOnMouseOut || this.mouseIsOver) + hs.animate(overlay, { opacity: overlay.opacity }, overlay.dur); + } + hs.push(this.overlays, hs.idCounter - 1); +}, +positionOverlay : function(overlay) { + var p = overlay.position || 'middle center', + offX = overlay.offsetX, + offY = overlay.offsetY; + if (overlay.parentNode != this.overlayBox) this.overlayBox.appendChild(overlay); + if (/left$/.test(p)) overlay.style.left = offX +'px'; + + if (/center$/.test(p)) hs.setStyles (overlay, { + left: '50%', + marginLeft: (offX - Math.round(overlay.offsetWidth / 2)) +'px' + }); + + if (/right$/.test(p)) overlay.style.right = - offX +'px'; + + if (/^leftpanel$/.test(p)) { + hs.setStyles(overlay, { + right: '100%', + marginRight: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p1 = overlay.offsetWidth; + + } else if (/^rightpanel$/.test(p)) { + hs.setStyles(overlay, { + left: '100%', + marginLeft: this.x.cb +'px', + top: - this.y.cb +'px', + bottom: - this.y.cb +'px', + overflow: 'auto' + }); + this.x.p2 = overlay.offsetWidth; + } + + if (/^top/.test(p)) overlay.style.top = offY +'px'; + if (/^middle/.test(p)) hs.setStyles (overlay, { + top: '50%', + marginTop: (offY - Math.round(overlay.offsetHeight / 2)) +'px' + }); + if (/^bottom/.test(p)) overlay.style.bottom = - offY +'px'; + if (/^above$/.test(p)) { + hs.setStyles(overlay, { + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + bottom: '100%', + marginBottom: this.y.cb +'px', + width: 'auto' + }); + this.y.p1 = overlay.offsetHeight; + + } else if (/^below$/.test(p)) { + hs.setStyles(overlay, { + position: 'relative', + left: (- this.x.p1 - this.x.cb) +'px', + right: (- this.x.p2 - this.x.cb) +'px', + top: '100%', + marginTop: this.y.cb +'px', + width: 'auto' + }); + this.y.p2 = overlay.offsetHeight; + overlay.style.position = 'absolute'; + } +}, + +getOverlays : function() { + this.getInline(['heading', 'caption'], true); + if (this.heading && this.dragByHeading) this.heading.className += ' highslide-move'; + if (hs.showCredits) this.writeCredits(); + for (var i = 0; i < hs.overlays.length; i++) { + var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup; + if ((!tId && !sg) || (tId && tId == this.thumbsUserSetId) + || (sg && sg === this.slideshowGroup)) { + this.createOverlay(o); + } + } + var os = []; + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + if (/panel$/.test(o.position)) this.positionOverlay(o); + else hs.push(os, o); + } + for (var i = 0; i < os.length; i++) this.positionOverlay(os[i]); + this.gotOverlays = true; +}, +genOverlayBox : function() { + if (!this.overlayBox) this.overlayBox = hs.createElement ( + 'div', { + className: this.wrapperClassName + }, { + position : 'absolute', + width: (this.x.size || (this.useBox ? this.width : null) + || this.x.full) +'px', + height: (this.y.size || this.y.full) +'px', + visibility : 'hidden', + overflow : 'hidden', + zIndex : hs.ie ? 4 : 'auto' + }, + hs.container, + true + ); +}, +sizeOverlayBox : function(doWrapper, doPanels) { + var overlayBox = this.overlayBox, + x = this.x, + y = this.y; + hs.setStyles( overlayBox, { + width: x.size +'px', + height: y.size +'px' + }); + if (doWrapper || doPanels) { + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + var ie6 = (hs.ieLt7 || document.compatMode == 'BackCompat'); + if (o && /^(above|below)$/.test(o.position)) { + if (ie6) { + o.style.width = (overlayBox.offsetWidth + 2 * x.cb + + x.p1 + x.p2) +'px'; + } + y[o.position == 'above' ? 'p1' : 'p2'] = o.offsetHeight; + } + if (o && ie6 && /^(left|right)panel$/.test(o.position)) { + o.style.height = (overlayBox.offsetHeight + 2* y.cb) +'px'; + } + } + } + if (doWrapper) { + hs.setStyles(this.content, { + top: y.p1 +'px' + }); + hs.setStyles(overlayBox, { + top: (y.p1 + y.cb) +'px' + }); + } +}, + +showOverlays : function() { + var b = this.overlayBox; + b.className = ''; + hs.setStyles(b, { + top: (this.y.p1 + this.y.cb) +'px', + left: (this.x.p1 + this.x.cb) +'px', + overflow : 'visible' + }); + if (hs.safari) b.style.visibility = 'visible'; + this.wrapper.appendChild (b); + for (var i = 0; i < this.overlays.length; i++) { + var o = hs.$('hsId'+ this.overlays[i]); + o.style.zIndex = o.zIndex || 4; + if (!o.hideOnMouseOut || this.mouseIsOver) { + o.style.visibility = 'visible'; + hs.setStyles(o, { visibility: 'visible', display: '' }); + hs.animate(o, { opacity: o.opacity }, o.dur); + } + } +}, + +destroyOverlays : function() { + if (!this.overlays.length) return; + hs.discardElement(this.overlayBox); +}, + + + +createFullExpand : function () { + this.fullExpandLabel = hs.createElement( + 'a', { + href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();', + title: hs.lang.fullExpandTitle, + className: 'highslide-full-expand' + } + ); + + this.createOverlay({ + overlayId: this.fullExpandLabel, + position: hs.fullExpandPosition, + hideOnMouseOut: true, + opacity: hs.fullExpandOpacity + }); +}, + +doFullExpand : function () { + try { + if (this.fullExpandLabel) hs.discardElement(this.fullExpandLabel); + + this.focus(); + var xSize = this.x.size, + ySize = this.y.size; + this.resizeTo(this.x.full, this.y.full); + + var xpos = this.x.pos - (this.x.size - xSize) / 2; + if (xpos < hs.marginLeft) xpos = hs.marginLeft; + + var ypos = this.y.pos - (this.y.size - ySize) / 2; + if (ypos < hs.marginTop) ypos = hs.marginTop; + + this.moveTo(xpos, ypos); + this.doShowHide('hidden'); + + } catch (e) { + this.error(e); + } +}, + + +afterClose : function () { + this.a.className = this.a.className.replace('highslide-active-anchor', ''); + + this.doShowHide('visible'); + if (this.outline && this.outlineWhileAnimating) this.outline.destroy(); + + hs.discardElement(this.wrapper); + + hs.expanders[this.key] = null; + hs.reOrder(); +} + +}; +hs.langDefaults = hs.lang; +// history +var HsExpander = hs.Expander; +if (hs.ie && window == window.top) { + (function () { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(arguments.callee, 50); + return; + } + hs.ready(); + })(); +} +hs.addEventListener(document, 'DOMContentLoaded', hs.ready); +hs.addEventListener(window, 'load', hs.ready); + +// set handlers +hs.addEventListener(document, 'ready', function() { + if (hs.expandCursor) { + var style = hs.createElement('style', { type: 'text/css' }, null, + document.getElementsByTagName('HEAD')[0]), + backCompat = document.compatMode == 'BackCompat'; + + + function addRule(sel, dec) { + if (hs.ie && (hs.uaVersion < 9 || backCompat)) { + var last = document.styleSheets[document.styleSheets.length - 1]; + if (typeof(last.addRule) == "object") last.addRule(sel, dec); + } else { + style.appendChild(document.createTextNode(sel + " {" + dec + "}")); + } + } + function fix(prop) { + return 'expression( ( ( ignoreMe = document.documentElement.'+ prop + + ' ? document.documentElement.'+ prop +' : document.body.'+ prop +' ) ) + \'px\' );'; + } + if (hs.expandCursor) addRule ('.highslide img', + 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;'); + } +}); +hs.addEventListener(window, 'resize', function() { + hs.getPageSize(); +}); +hs.addEventListener(document, 'mousemove', function(e) { + hs.mouse = { x: e.clientX, y: e.clientY }; +}); +hs.addEventListener(document, 'mousedown', hs.mouseClickHandler); +hs.addEventListener(document, 'mouseup', hs.mouseClickHandler); + +hs.addEventListener(document, 'ready', hs.getAnchors); +hs.addEventListener(window, 'load', hs.preloadImages); +} diff --git a/html/highslide/highslide.min.js b/html/highslide/highslide.min.js new file mode 100644 index 000000000..44e11b9c5 --- /dev/null +++ b/html/highslide/highslide.min.js @@ -0,0 +1,9 @@ +/** + * Name: Highslide JS + * Version: 4.1.13 (2011-10-06) + * Config: default + * Author: Torstein Hønsi + * Support: www.highslide.com/support + * License: www.highslide.com/#license + */ +if(!hs){var hs={lang:{cssDirection:"ltr",loadingText:"Loading...",loadingTitle:"Click to cancel",focusTitle:"Click to bring to front",fullExpandTitle:"Expand to actual size (f)",creditsText:"Powered by Highslide JS",creditsTitle:"Go to the Highslide JS homepage",restoreTitle:"Click to close image, click and drag to move. Use arrow keys for next and previous."},graphicsDir:"highslide/graphics/",expandCursor:"zoomin.cur",restoreCursor:"zoomout.cur",expandDuration:250,restoreDuration:250,marginLeft:15,marginRight:15,marginTop:15,marginBottom:15,zIndexCounter:1001,loadingOpacity:0.75,allowMultipleInstances:true,numberOfImagesToPreload:5,outlineWhileAnimating:2,outlineStartOffset:3,padToMinWidth:false,fullExpandPosition:"bottom right",fullExpandOpacity:1,showCredits:true,creditsHref:"http://highslide.com/",creditsTarget:"_self",enableKeyListener:true,openerTagNames:["a"],dragByHeading:true,minWidth:200,minHeight:200,allowSizeReduction:true,outlineType:"drop-shadow",preloadTheseImages:[],continuePreloading:true,expanders:[],overrides:["allowSizeReduction","useBox","outlineType","outlineWhileAnimating","captionId","captionText","captionEval","captionOverlay","headingId","headingText","headingEval","headingOverlay","creditsPosition","dragByHeading","width","height","wrapperClassName","minWidth","minHeight","maxWidth","maxHeight","pageOrigin","slideshowGroup","easing","easingClose","fadeInOut","src"],overlays:[],idCounter:0,oPos:{x:["leftpanel","left","center","right","rightpanel"],y:["above","top","middle","bottom","below"]},mouse:{},headingOverlay:{},captionOverlay:{},timers:[],pendingOutlines:{},clones:{},onReady:[],uaVersion:/Trident\/4\.0/.test(navigator.userAgent)?8:parseFloat((navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]),ie:(document.all&&!window.opera),safari:/Safari/.test(navigator.userAgent),geckoMac:/Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),$:function(a){if(a){return document.getElementById(a)}},push:function(a,b){a[a.length]=b},createElement:function(a,f,e,d,c){var b=document.createElement(a);if(f){hs.extend(b,f)}if(c){hs.setStyles(b,{padding:0,border:"none",margin:0})}if(e){hs.setStyles(b,e)}if(d){d.appendChild(b)}return b},extend:function(b,c){for(var a in c){b[a]=c[a]}return b},setStyles:function(b,c){for(var a in c){if(hs.ieLt9&&a=="opacity"){if(c[a]>0.99){b.style.removeAttribute("filter")}else{b.style.filter="alpha(opacity="+(c[a]*100)+")"}}else{b.style[a]=c[a]}}},animate:function(f,a,d){var c,g,j;if(typeof d!="object"||d===null){var i=arguments;d={duration:i[2],easing:i[3],complete:i[4]}}if(typeof d.duration!="number"){d.duration=250}d.easing=Math[d.easing]||Math.easeInQuad;d.curAnim=hs.extend({},a);for(var b in a){var h=new hs.fx(f,d,b);c=parseFloat(hs.css(f,b))||0;g=parseFloat(a[b]);j=b!="opacity"?"px":"";h.custom(c,g,j)}},css:function(a,c){if(a.style[c]){return a.style[c]}else{if(document.defaultView){return document.defaultView.getComputedStyle(a,null).getPropertyValue(c)}else{if(c=="opacity"){c="filter"}var b=a.currentStyle[c.replace(/\-(\w)/g,function(e,d){return d.toUpperCase()})];if(c=="filter"){b=b.replace(/alpha\(opacity=([0-9]+)\)/,function(e,d){return d/100})}return b===""?1:b}}},getPageSize:function(){var f=document,b=window,e=f.compatMode&&f.compatMode!="BackCompat"?f.documentElement:f.body,g=hs.ie&&(hs.uaVersion<9||typeof pageXOffset=="undefined");var c=g?e.clientWidth:(f.documentElement.clientWidth||self.innerWidth),a=g?e.clientHeight:self.innerHeight;hs.page={width:c,height:a,scrollLeft:g?e.scrollLeft:pageXOffset,scrollTop:g?e.scrollTop:pageYOffset};return hs.page},getPosition:function(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a.offsetParent){a=a.offsetParent;b.x+=a.offsetLeft;b.y+=a.offsetTop;if(a!=document.body&&a!=document.documentElement){b.x-=a.scrollLeft;b.y-=a.scrollTop}}return b},expand:function(b,g,d,c){if(!b){b=hs.createElement("a",null,{display:"none"},hs.container)}if(typeof b.getParams=="function"){return g}try{new hs.Expander(b,g,d);return false}catch(f){return true}},focusTopmost:function(){var c=0,b=-1,a=hs.expanders,e,f;for(var d=0;dc){c=f;b=d}}}if(b==-1){hs.focusKey=-1}else{a[b].focus()}},getParam:function(b,d){b.getParams=b.onclick;var c=b.getParams?b.getParams():null;b.getParams=null;return(c&&typeof c[d]!="undefined")?c[d]:(typeof hs[d]!="undefined"?hs[d]:null)},getSrc:function(b){var c=hs.getParam(b,"src");if(c){return c}return b.href},getNode:function(e){var c=hs.$(e),d=hs.clones[e],b={};if(!c&&!d){return null}if(!d){d=c.cloneNode(true);d.id="";hs.clones[e]=d;return c}else{return d.cloneNode(true)}},discardElement:function(a){if(a){hs.garbageBin.appendChild(a)}hs.garbageBin.innerHTML=""},transit:function(a,d){var b=d||hs.getExpander();d=b;if(hs.upcoming){return false}else{hs.last=b}hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);try{hs.upcoming=a;a.onclick()}catch(c){hs.last=hs.upcoming=null}try{d.close()}catch(c){}return false},previousOrNext:function(a,c){var b=hs.getExpander(a);if(b){return hs.transit(b.getAdjacentAnchor(c),b)}else{return false}},previous:function(a){return hs.previousOrNext(a,-1)},next:function(a){return hs.previousOrNext(a,1)},keyHandler:function(a){if(!a){a=window.event}if(!a.target){a.target=a.srcElement}if(typeof a.target.form!="undefined"){return true}var b=hs.getExpander();var c=null;switch(a.keyCode){case 70:if(b){b.doFullExpand()}return true;case 32:case 34:case 39:case 40:c=1;break;case 8:case 33:case 37:case 38:c=-1;break;case 27:case 13:c=0}if(c!==null){hs.removeEventListener(document,window.opera?"keypress":"keydown",hs.keyHandler);if(!hs.enableKeyListener){return true}if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}if(b){if(c==0){b.close()}else{hs.previousOrNext(b.key,c)}return false}}return true},registerOverlay:function(a){hs.push(hs.overlays,hs.extend(a,{hsId:"hsId"+hs.idCounter++}))},getWrapperKey:function(c,b){var e,d=/^highslide-wrapper-([0-9]+)$/;e=c;while(e.parentNode){if(e.id&&d.test(e.id)){return e.id.replace(d,"$1")}e=e.parentNode}if(!b){e=c;while(e.parentNode){if(e.tagName&&hs.isHsAnchor(e)){for(var a=0;a1){return true}if(!d.target){d.target=d.srcElement}var b=d.target;while(b.parentNode&&!(/highslide-(image|move|html|resize)/.test(b.className))){b=b.parentNode}var f=hs.getExpander(b);if(f&&(f.isClosing||!f.isExpanded)){return true}if(f&&d.type=="mousedown"){if(d.target.form){return true}var a=b.className.match(/highslide-(image|move|resize)/);if(a){hs.dragArgs={exp:f,type:a[1],left:f.x.pos,width:f.x.size,top:f.y.pos,height:f.y.size,clickX:d.clientX,clickY:d.clientY};hs.addEventListener(document,"mousemove",hs.dragHandler);if(d.preventDefault){d.preventDefault()}if(/highslide-(image|html)-blur/.test(f.content.className)){f.focus();hs.hasFocused=true}return false}}else{if(d.type=="mouseup"){hs.removeEventListener(document,"mousemove",hs.dragHandler);if(hs.dragArgs){if(hs.styleRestoreCursor&&hs.dragArgs.type=="image"){hs.dragArgs.exp.content.style.cursor=hs.styleRestoreCursor}var c=hs.dragArgs.hasDragged;if(!c&&!hs.hasFocused&&!/(move|resize)/.test(hs.dragArgs.type)){f.close()}else{if(c||(!c&&hs.hasHtmlExpanders)){hs.dragArgs.exp.doShowHide("hidden")}}hs.hasFocused=false;hs.dragArgs=null}else{if(/highslide-image-blur/.test(b.className)){b.style.cursor=hs.styleRestoreCursor}}}}return false},dragHandler:function(c){if(!hs.dragArgs){return true}if(!c){c=window.event}var b=hs.dragArgs,d=b.exp;b.dX=c.clientX-b.clickX;b.dY=c.clientY-b.clickY;var f=Math.sqrt(Math.pow(b.dX,2)+Math.pow(b.dY,2));if(!b.hasDragged){b.hasDragged=(b.type!="image"&&f>0)||(f>(hs.dragSensitivity||5))}if(b.hasDragged&&c.clientX>5&&c.clientY>5){if(b.type=="resize"){d.resize(b)}else{d.moveTo(b.left+b.dX,b.top+b.dY);if(b.type=="image"){d.content.style.cursor="move"}}}return false},wrapperMouseHandler:function(c){try{if(!c){c=window.event}var b=/mouseover/i.test(c.type);if(!c.target){c.target=c.srcElement}if(!c.relatedTarget){c.relatedTarget=b?c.fromElement:c.toElement}var d=hs.getExpander(c.target);if(!d.isExpanded){return}if(!d||!c.relatedTarget||hs.getExpander(c.relatedTarget,true)==d||hs.dragArgs){return}for(var a=0;a=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var a=true;for(var b in this.options.curAnim){if(this.options.curAnim[b]!==true){a=false}}if(a){if(this.options.complete){this.options.complete.call(this.elem)}}return false}else{var e=c-this.startTime;this.state=e/this.options.duration;this.pos=this.options.easing(e,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};hs.extend(hs.fx,{step:{opacity:function(a){hs.setStyles(a.elem,{opacity:a.now})},_default:function(a){try{if(a.elem.style&&a.elem.style[a.prop]!=null){a.elem.style[a.prop]=a.now+a.unit}else{a.elem[a.prop]=a.now}}catch(b){}}}});hs.Outline=function(g,e){this.onLoad=e;this.outlineType=g;var a=hs.uaVersion,f;this.hasAlphaImageLoader=hs.ie&&hs.uaVersion<7;if(!g){if(e){e()}return}hs.init();this.table=hs.createElement("table",{cellSpacing:0},{visibility:"hidden",position:"absolute",borderCollapse:"collapse",width:0},hs.container,true);var b=hs.createElement("tbody",null,null,this.table,1);this.td=[];for(var c=0;c<=8;c++){if(c%3==0){f=hs.createElement("tr",null,{height:"auto"},b,true)}this.td[c]=hs.createElement("td",null,null,f,true);var d=c!=4?{lineHeight:0,fontSize:0}:{position:"relative"};hs.setStyles(this.td[c],d)}this.td[4].className=g+" highslide-outline";this.preloadGraphic()};hs.Outline.prototype={preloadGraphic:function(){var b=hs.graphicsDir+(hs.outlinesDir||"outlines/")+this.outlineType+".png";var a=hs.safari&&hs.uaVersion<525?hs.container:null;this.graphic=hs.createElement("img",null,{position:"absolute",top:"-9999px"},a,true);var c=this;this.graphic.onload=function(){c.onGraphicLoad()};this.graphic.src=b},onGraphicLoad:function(){var d=this.offset=this.graphic.width/4,f=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],c={height:(2*d)+"px",width:(2*d)+"px"};for(var b=0;b<=8;b++){if(f[b]){if(this.hasAlphaImageLoader){var a=(b==1||b==7)?"100%":this.graphic.width+"px";var e=hs.createElement("div",null,{width:"100%",height:"100%",position:"relative",overflow:"hidden"},this.td[b],true);hs.createElement("div",null,{filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+this.graphic.src+"')",position:"absolute",width:a,height:this.graphic.height+"px",left:(f[b][0]*d)+"px",top:(f[b][1]*d)+"px"},e,true)}else{hs.setStyles(this.td[b],{background:"url("+this.graphic.src+") "+(f[b][0]*d)+"px "+(f[b][1]*d)+"px"})}if(window.opera&&(b==3||b==5)){hs.createElement("div",null,c,this.td[b],true)}hs.setStyles(this.td[b],c)}}this.graphic=null;if(hs.pendingOutlines[this.outlineType]){hs.pendingOutlines[this.outlineType].destroy()}hs.pendingOutlines[this.outlineType]=this;if(this.onLoad){this.onLoad()}},setPosition:function(g,e,c,b,f){var d=this.exp,a=d.wrapper.style,e=e||0,g=g||{x:d.x.pos+e,y:d.y.pos+e,w:d.x.get("wsize")-2*e,h:d.y.get("wsize")-2*e};if(c){this.table.style.visibility=(g.h>=4*this.offset)?"visible":"hidden"}hs.setStyles(this.table,{left:(g.x-this.offset)+"px",top:(g.y-this.offset)+"px",width:(g.w+2*this.offset)+"px"});g.w-=2*this.offset;g.h-=2*this.offset;hs.setStyles(this.td[4],{width:g.w>=0?g.w+"px":0,height:g.h>=0?g.h+"px":0});if(this.hasAlphaImageLoader){this.td[3].style.height=this.td[5].style.height=this.td[4].style.height}},destroy:function(a){if(a){this.table.style.visibility="hidden"}else{hs.discardElement(this.table)}}};hs.Dimension=function(b,a){this.exp=b;this.dim=a;this.ucwh=a=="x"?"Width":"Height";this.wh=this.ucwh.toLowerCase();this.uclt=a=="x"?"Left":"Top";this.lt=this.uclt.toLowerCase();this.ucrb=a=="x"?"Right":"Bottom";this.rb=this.ucrb.toLowerCase();this.p1=this.p2=0};hs.Dimension.prototype={get:function(a){switch(a){case"loadingPos":return this.tpos+this.tb+(this.t-hs.loading["offset"+this.ucwh])/2;case"wsize":return this.size+2*this.cb+this.p1+this.p2;case"fitsize":return this.clientSize-this.marginMin-this.marginMax;case"maxsize":return this.get("fitsize")-2*this.cb-this.p1-this.p2;case"opos":return this.pos-(this.exp.outline?this.exp.outline.offset:0);case"osize":return this.get("wsize")+(this.exp.outline?2*this.exp.outline.offset:0);case"imgPad":return this.imgSize?Math.round((this.size-this.imgSize)/2):0}},calcBorders:function(){this.cb=(this.exp.content["offset"+this.ucwh]-this.t)/2;this.marginMax=hs["margin"+this.ucrb]},calcThumb:function(){this.t=this.exp.el[this.wh]?parseInt(this.exp.el[this.wh]):this.exp.el["offset"+this.ucwh];this.tpos=this.exp.tpos[this.dim];this.tb=(this.exp.el["offset"+this.ucwh]-this.t)/2;if(this.tpos==0||this.tpos==-1){this.tpos=(hs.page[this.wh]/2)+hs.page["scroll"+this.uclt]}},calcExpanded:function(){var a=this.exp;this.justify="auto";this.pos=this.tpos-this.cb+this.tb;if(this.maxHeight&&this.dim=="x"){a.maxWidth=Math.min(a.maxWidth||this.full,a.maxHeight*this.full/a.y.full)}this.size=Math.min(this.full,a["max"+this.ucwh]||this.full);this.minSize=a.allowSizeReduction?Math.min(a["min"+this.ucwh],this.full):this.full;if(a.isImage&&a.useBox){this.size=a[this.wh];this.imgSize=this.full}if(this.dim=="x"&&hs.padToMinWidth){this.minSize=a.minWidth}this.marginMin=hs["margin"+this.uclt];this.scroll=hs.page["scroll"+this.uclt];this.clientSize=hs.page[this.wh]},setSize:function(a){var b=this.exp;if(b.isImage&&(b.useBox||hs.padToMinWidth)){this.imgSize=a;this.size=Math.max(this.size,this.imgSize);b.content.style[this.lt]=this.get("imgPad")+"px"}else{this.size=a}b.content.style[this.wh]=a+"px";b.wrapper.style[this.wh]=this.get("wsize")+"px";if(b.outline){b.outline.setPosition()}if(this.dim=="x"&&b.overlayBox){b.sizeOverlayBox(true)}},setPos:function(a){this.pos=a;this.exp.wrapper.style[this.lt]=a+"px";if(this.exp.outline){this.exp.outline.setPosition()}}};hs.Expander=function(k,f,b,l){if(document.readyState&&hs.ie&&!hs.isReady){hs.addEventListener(document,"ready",function(){new hs.Expander(k,f,b,l)});return}this.a=k;this.custom=b;this.contentType=l||"image";this.isImage=!this.isHtml;hs.continuePreloading=false;this.overlays=[];hs.init();var m=this.key=hs.expanders.length;for(var g=0;g(this.x.imgSize||this.x.size)){this.createFullExpand();if(this.overlays.length==1){this.sizeOverlayBox()}}}this.show()}catch(c){this.error(c)}},justify:function(f,b){var g,h=f.target,e=f==this.x?"x":"y";var d=false;var a=f.exp.allowSizeReduction;f.pos=Math.round(f.pos-((f.get("wsize")-f.t)/2));if(f.posf.scroll+f.clientSize-f.marginMax){if(!b&&d&&a){f.size=Math.min(f.size,f.get(e=="y"?"fitsize":"maxsize"))}else{if(f.get("wsize")c){d=b*c;if(dthis.minHeight&&a.size>this.minWidth&&d.get("wsize")>d.get("fitsize")){d.size-=10;if(b){a.size=d.size*b}this.sizeOverlayBox(0,1);c=true}}return c},show:function(){var a=this.x,b=this.y;this.doShowHide("hidden");this.changeSize(1,{wrapper:{width:a.get("wsize"),height:b.get("wsize"),left:a.pos,top:b.pos},content:{left:a.p1+a.get("imgPad"),top:b.p1+b.get("imgPad"),width:a.imgSize||a.size,height:b.imgSize||b.size}},hs.expandDuration)},changeSize:function(b,h,c){if(this.outline&&!this.outlineWhileAnimating){if(b){this.outline.setPosition()}else{this.outline.destroy()}}if(!b){this.destroyOverlays()}var e=this,a=e.x,g=e.y,f=this.easing;if(!b){f=this.easingClose||f}var d=b?function(){if(e.outline){e.outline.table.style.visibility="visible"}setTimeout(function(){e.afterExpand()},50)}:function(){e.afterClose()};if(b){hs.setStyles(this.wrapper,{width:a.t+"px",height:g.t+"px"})}if(this.fadeInOut){hs.setStyles(this.wrapper,{opacity:b?0:1});hs.extend(h.wrapper,{opacity:b})}hs.animate(this.wrapper,h.wrapper,{duration:c,easing:f,step:function(k,i){if(e.outline&&e.outlineWhileAnimating&&i.prop=="top"){var j=b?i.pos:1-i.pos;var l={w:a.t+(a.get("wsize")-a.t)*j,h:g.t+(g.get("wsize")-g.t)*j,x:a.tpos+(a.pos-a.tpos)*j,y:g.tpos+(g.pos-g.tpos)*j};e.outline.setPosition(l,0,1)}}});hs.animate(this.content,h.content,c,f,d);if(b){this.wrapper.style.visibility="visible";this.content.style.visibility="visible";this.a.className+=" highslide-active-anchor"}},afterExpand:function(){this.isExpanded=true;this.focus();if(hs.upcoming&&hs.upcoming==this.a){hs.upcoming=null}this.prepareNextOutline();var c=hs.page,b=hs.mouse.x+c.scrollLeft,a=hs.mouse.y+c.scrollTop;this.mouseIsOver=this.x.posthis.x.get("opos")+this.x.get("osize"));var g=(k.y+k.hthis.y.get("opos")+this.y.get("osize"));var d=hs.getWrapperKey(e[f]);if(!j&&!g&&d!=this.key){if(!h){e[f].setAttribute("hidden-by","["+this.key+"]");e[f].origProp=e[f].style[a];e[f].style[a]="hidden"}else{if(h.indexOf("["+this.key+"]")==-1){e[f].setAttribute("hidden-by",h+"["+this.key+"]")}}}else{if((h=="["+this.key+"]"||hs.focusKey==d)&&d!=this.key){e[f].setAttribute("hidden-by","");e[f].style[a]=e[f].origProp||""}else{if(h&&h.indexOf("["+this.key+"]")>-1){e[f].setAttribute("hidden-by",h.replace("["+this.key+"]",""))}}}}}}}},focus:function(){this.wrapper.style.zIndex=hs.zIndexCounter+=2;for(var a=0;a35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){u m={1F:{8l:\'6P\',6K:\'93...\',6L:\'6b 1L 92\',7T:\'6b 1L 91 1L 8Z\',88:\'90 1L 94 I (f)\',8e:\'95 2t 6I 6F\',8b:\'9a 1L 98 6I 6F 97\',5V:\'6b 1L 2h 1Y, 96 6O 8Y 1L 3c. 8X 8Q 8P S 1A 6O 79.\'},47:\'1c/8O/\',4l:\'8M.6A\',3S:\'8N.6A\',84:5c,7y:5c,43:15,7J:15,48:15,7N:15,3L:8R,7g:0.75,8j:G,5U:5,2R:2,8S:3,3V:1a,7z:\'2S 2o\',7O:1,7W:G,8x:\'8W://1c.8V/\',8o:\'8U\',7e:G,5t:[\'a\'],68:G,3Y:6W,3K:6W,3N:G,1h:\'9b-9c\',3U:[],5j:G,N:[],5i:[\'3N\',\'2d\',\'1h\',\'2R\',\'9u\',\'9t\',\'9s\',\'6R\',\'9q\',\'9r\',\'9v\',\'6X\',\'89\',\'68\',\'M\',\'16\',\'60\',\'3Y\',\'3K\',\'4X\',\'5q\',\'8h\',\'3b\',\'1J\',\'85\',\'86\',\'1l\'],1v:[],3F:0,9w:{x:[\'8n\',\'18\',\'6c\',\'2o\',\'7x\'],y:[\'42\',\'W\',\'6a\',\'2S\',\'4r\']},4B:{},6X:{},6R:{},2A:[],2Q:{},6m:{},4a:[],1R:/9A\\/4\\.0/.14(3W.4V)?8:6g((3W.4V.58().2X(/.+(?:6V|9z|9y|1P)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1P:(L.3R&&!1n.2r),4D:/9x/.14(3W.4V),8y:/9p.+6V:1\\.[0-8].+9o/.14(3W.4V),$:A(1t){q(1t)C L.9h(1t)},2e:A(2c,2v){2c[2c.X]=2v},Z:A(6S,3a,2F,6f,6U){u B=L.Z(6S);q(3a)m.2q(B,3a);q(6U)m.T(B,{9f:0,9d:\'3r\',5h:0});q(2F)m.T(B,2F);q(6f)6f.2g(B);C B},2q:A(B,3a){S(u x 3v 3a)B[x]=3a[x];C B},T:A(B,2F){S(u x 3v 2F){q(m.2Y&&x==\'1o\'){q(2F[x]>0.99)B.F.9e(\'3P\');K B.F.3P=\'7k(1o=\'+(2F[x]*1V)+\')\'}K B.F[x]=2F[x]}},3p:A(B,Q,25){u 2O,3h,2M;q(1m 25!=\'5I\'||25===H){u 2y=87;25={2Z:2y[2],1J:2y[3],5y:2y[4]}}q(1m 25.2Z!=\'3g\')25.2Z=5c;25.1J=1d[25.1J]||1d.6Z;25.4c=m.2q({},Q);S(u 2b 3v Q){u e=1S m.1k(B,25,2b);2O=6g(m.5s(B,2b))||0;3h=6g(Q[2b]);2M=2b!=\'1o\'?\'D\':\'\';e.2z(2O,3h,2M)}},5s:A(B,Q){q(B.F[Q]){C B.F[Q]}K q(L.63){C L.63.8B(B,H).8s(Q)}K{q(Q==\'1o\')Q=\'3P\';u 2v=B.8L[Q.31(/\\-(\\w)/g,A(a,b){C b.9j()})];q(Q==\'3P\')2v=2v.31(/7k\\(1o=([0-9]+)\\)/,A(a,b){C b/1V});C 2v===\'\'?1:2v}},4N:A(){u d=L,w=1n,3D=d.5a&&d.5a!=\'5K\'?d.3i:d.4J,2Y=m.1P&&(m.1R<9||1m 71==\'1Z\');u M=2Y?3D.7j:(d.3i.7j||4H.9n),16=2Y?3D.9m:4H.9l;m.2J={M:M,16:16,4w:2Y?3D.4w:71,4y:2Y?3D.4y:9k};C m.2J},62:A(B){u p={x:B.7n,y:B.7s};3m(B.7m){B=B.7m;p.x+=B.7n;p.y+=B.7s;q(B!=L.4J&&B!=L.3i){p.x-=B.4w;p.y-=B.4y}}C p},4b:A(a,21,2z,J){q(!a)a=m.Z(\'a\',H,{3q:\'3r\'},m.20);q(1m a.3E==\'A\')C 21;1z{1S m.46(a,21,2z);C 1a}1C(e){C G}},7a:A(){u 5X=0,54=-1,N=m.N,z,1p;S(u i=0;i5X){5X=1p;54=i}}}q(54==-1)m.2u=-1;K N[54].3k()},5r:A(a,3J){a.3E=a.3x;u p=a.3E?a.3E():H;a.3E=H;C(p&&1m p[3J]!=\'1Z\')?p[3J]:(1m m[3J]!=\'1Z\'?m[3J]:H)},5l:A(a){u 1l=m.5r(a,\'1l\');q(1l)C 1l;C a.3y},3B:A(1t){u 4s=m.$(1t),2U=m.6m[1t],a={};q(!4s&&!2U)C H;q(!2U){2U=4s.7f(G);2U.1t=\'\';m.6m[1t]=2U;C 4s}K{C 2U.7f(G)}},3t:A(d){q(d)m.5k.2g(d);m.5k.3G=\'\'},74:A(66,z){u 2G=z||m.2C();z=2G;q(m.2W)C 1a;K m.2G=2G;m.3d(L,1n.2r?\'4R\':\'4T\',m.3H);1z{m.2W=66;66.3x()}1C(e){m.2G=m.2W=H}1z{z.2h()}1C(e){}C 1a},4e:A(B,1W){u z=m.2C(B);q(z)C m.74(z.5m(1W),z);K C 1a},79:A(B){C m.4e(B,-1)},1A:A(B){C m.4e(B,1)},3H:A(e){q(!e)e=1n.1G;q(!e.1M)e.1M=e.6x;q(1m e.1M.7c!=\'1Z\')C G;u z=m.2C();u 1W=H;7u(e.8F){1q 70:q(z)z.5M();C G;1q 32:1q 34:1q 39:1q 40:1W=1;6r;1q 8:1q 33:1q 37:1q 38:1W=-1;6r;1q 27:1q 13:1W=0}q(1W!==H){m.3d(L,1n.2r?\'4R\':\'4T\',m.3H);q(!m.7e)C G;q(e.4F)e.4F();K e.8E=1a;q(z){q(1W==0){z.2h()}K{m.4e(z.R,1W)}C 1a}}C G},8G:A(O){m.2e(m.1v,m.2q(O,{2a:\'2a\'+m.3F++}))},65:A(6l,4u){u B,30=/^1c-V-([0-9]+)$/;B=6l;3m(B.2V){q(B.1t&&30.14(B.1t))C B.1t.31(30,"$1");B=B.2V}q(!4u){B=6l;3m(B.2V){q(B.4g&&m.4E(B)){S(u R=0;R1)C G;q(!e.1M)e.1M=e.6x;u B=e.1M;3m(B.2V&&!(/1c-(1Y|3c|4Z|2T)/.14(B.1g))){B=B.2V}u z=m.2C(B);q(z&&(z.6k||!z.3C))C G;q(z&&e.J==\'7o\'){q(e.1M.7c)C G;u 2X=B.1g.2X(/1c-(1Y|3c|2T)/);q(2X){m.1U={z:z,J:2X[1],18:z.x.E,M:z.x.I,W:z.y.E,16:z.y.I,72:e.4z,76:e.4o};m.1D(L,\'6w\',m.6D);q(e.4F)e.4F();q(/1c-(1Y|4Z)-5W/.14(z.11.1g)){z.3k();m.6B=G}C 1a}}K q(e.J==\'7i\'){m.3d(L,\'6w\',m.6D);q(m.1U){q(m.3e&&m.1U.J==\'1Y\')m.1U.z.11.F.2N=m.3e;u 2E=m.1U.2E;q(!2E&&!m.6B&&!/(3c|2T)/.14(m.1U.J)){z.2h()}K q(2E||(!2E&&m.8C)){m.1U.z.45(\'1i\')}m.6B=1a;m.1U=H}K q(/1c-1Y-5W/.14(B.1g)){B.F.2N=m.3e}}C 1a},6D:A(e){q(!m.1U)C G;q(!e)e=1n.1G;u a=m.1U,z=a.z;a.5b=e.4z-a.72;a.6o=e.4o-a.76;u 6n=1d.a7(1d.7q(a.5b,2)+1d.7q(a.6o,2));q(!a.2E)a.2E=(a.J!=\'1Y\'&&6n>0)||(6n>(m.al||5));q(a.2E&&e.4z>5&&e.4o>5){q(a.J==\'2T\')z.2T(a);K{z.5v(a.18+a.5b,a.W+a.6o);q(a.J==\'1Y\')z.11.F.2N=\'3c\'}}C 1a},8g:A(e){1z{q(!e)e=1n.1G;u 4C=/ao/i.14(e.J);q(!e.1M)e.1M=e.6x;q(!e.4v)e.4v=4C?e.an:e.9C;u z=m.2C(e.1M);q(!z.3C)C;q(!z||!e.4v||m.2C(e.4v,G)==z||m.1U)C;S(u i=0;i=k.1w.2Z+k.5x){k.2I=k.3h;k.E=k.5E=1;k.5C();k.1w.4c[k.Q]=G;u 5z=G;S(u i 3v k.1w.4c)q(k.1w.4c[i]!==G)5z=1a;q(5z){q(k.1w.5y)k.1w.5y.77(k.1Q)}C 1a}K{u n=t-k.5x;k.5E=n/k.1w.2Z;k.E=k.1w.1J(n,0,1,k.1w.2Z);k.2I=k.2O+((k.3h-k.2O)*k.E);k.5C()}C G}};m.2q(m.1k,{2x:{1o:A(1k){m.T(1k.1Q,{1o:1k.2I})},7r:A(1k){1z{q(1k.1Q.F&&1k.1Q.F[1k.Q]!=H)1k.1Q.F[1k.Q]=1k.2I+1k.2M;K 1k.1Q[1k.Q]=1k.2I}1C(e){}}}});m.41=A(1h,2P){k.2P=2P;k.1h=1h;u v=m.1R,4Y;k.5J=m.1P&&m.1R<7;q(!1h){q(2P)2P();C}m.6y();k.28=m.Z(\'28\',{9V:0},{1b:\'1i\',1e:\'29\',9X:\'9Y\',M:0},m.20,G);u 5R=m.Z(\'5R\',H,H,k.28,1);k.1H=[];S(u i=0;i<=8;i++){q(i%3==0)4Y=m.Z(\'4Y\',H,{16:\'2l\'},5R,G);k.1H[i]=m.Z(\'1H\',H,H,4Y,G);u F=i!=4?{9Z:0,aF:0}:{1e:\'6j\'};m.T(k.1H[i],F)}k.1H[4].1g=1h+\' 1c-19\';k.7t()};m.41.53={7t:A(){u 1l=m.47+(m.9K||"9O/")+k.1h+".9N";u 6T=m.4D&&m.1R<7v?m.20:H;k.2k=m.Z(\'1f\',H,{1e:\'29\',W:\'-3X\'},6T,G);u 6E=k;k.2k.4S=A(){6E.6N()};k.2k.1l=1l},6N:A(){u o=k.1j=k.2k.M/4,E=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1x={16:(2*o)+\'D\',M:(2*o)+\'D\'};S(u i=0;i<=8;i++){q(E[i]){q(k.5J){u w=(i==1||i==7)?\'1V%\':k.2k.M+\'D\';u 1O=m.Z(\'1O\',H,{M:\'1V%\',16:\'1V%\',1e:\'6j\',2L:\'1i\'},k.1H[i],G);m.Z(\'1O\',H,{3P:"a0:9U.9W.a1(a8=9I, 1l=\'"+k.2k.1l+"\')",1e:\'29\',M:w,16:k.2k.16+\'D\',18:(E[i][0]*o)+\'D\',W:(E[i][1]*o)+\'D\'},1O,G)}K{m.T(k.1H[i],{9J:\'5T(\'+k.2k.1l+\') \'+(E[i][0]*o)+\'D \'+(E[i][1]*o)+\'D\'})}q(1n.2r&&(i==3||i==5))m.Z(\'1O\',H,1x,k.1H[i],G);m.T(k.1H[i],1x)}}k.2k=H;q(m.2Q[k.1h])m.2Q[k.1h].4q();m.2Q[k.1h]=k;q(k.2P)k.2P()},3A:A(E,1j,6H,2p,1J){u z=k.z,9E=z.V.F,1j=1j||0,E=E||{x:z.x.E+1j,y:z.y.E+1j,w:z.x.P(\'1u\')-2*1j,h:z.y.P(\'1u\')-2*1j};q(6H)k.28.F.1b=(E.h>=4*k.1j)?\'1X\':\'1i\';m.T(k.28,{18:(E.x-k.1j)+\'D\',W:(E.y-k.1j)+\'D\',M:(E.w+2*k.1j)+\'D\'});E.w-=2*k.1j;E.h-=2*k.1j;m.T(k.1H[4],{M:E.w>=0?E.w+\'D\':0,16:E.h>=0?E.h+\'D\':0});q(k.5J)k.1H[3].F.16=k.1H[5].F.16=k.1H[4].F.16},4q:A(6Y){q(6Y)k.28.F.1b=\'1i\';K m.3t(k.28)}};m.4W=A(z,1x){k.z=z;k.1x=1x;k.2D=1x==\'x\'?\'ax\':\'av\';k.2w=k.2D.58();k.3O=1x==\'x\'?\'ar\':\'au\';k.5o=k.3O.58();k.5f=1x==\'x\'?\'az\':\'aA\';k.aG=k.5f.58();k.1B=k.2f=0};m.4W.53={P:A(R){7u(R){1q\'5O\':C k.1s+k.2j+(k.t-m.1E[\'1j\'+k.2D])/2;1q\'1u\':C k.I+2*k.Y+k.1B+k.2f;1q\'3o\':C k.55-k.2K-k.4I;1q\'5G\':C k.P(\'3o\')-2*k.Y-k.1B-k.2f;1q\'3Q\':C k.E-(k.z.19?k.z.19.1j:0);1q\'64\':C k.P(\'1u\')+(k.z.19?2*k.z.19.1j:0);1q\'4h\':C k.1y?1d.56((k.I-k.1y)/2):0}},5w:A(){k.Y=(k.z.11[\'1j\'+k.2D]-k.t)/2;k.4I=m[\'5h\'+k.5f]},5g:A(){k.t=k.z.B[k.2w]?aC(k.z.B[k.2w]):k.z.B[\'1j\'+k.2D];k.1s=k.z.1s[k.1x];k.2j=(k.z.B[\'1j\'+k.2D]-k.t)/2;q(k.1s==0||k.1s==-1){k.1s=(m.2J[k.2w]/2)+m.2J[\'2B\'+k.3O]}},5B:A(){u z=k.z;k.3n=\'2l\';k.E=k.1s-k.Y+k.2j;q(k.5q&&k.1x==\'x\')z.4X=1d.22(z.4X||k.U,z.5q*k.U/z.y.U);k.I=1d.22(k.U,z[\'67\'+k.2D]||k.U);k.1T=z.3N?1d.22(z[\'22\'+k.2D],k.U):k.U;q(z.3f&&z.2d){k.I=z[k.2w];k.1y=k.U}q(k.1x==\'x\'&&m.3V)k.1T=z.3Y;k.2K=m[\'5h\'+k.3O];k.2B=m.2J[\'2B\'+k.3O];k.55=m.2J[k.2w]},6h:A(i){u z=k.z;q(z.3f&&(z.2d||m.3V)){k.1y=i;k.I=1d.67(k.I,k.1y);z.11.F[k.5o]=k.P(\'4h\')+\'D\'}K k.I=i;z.11.F[k.2w]=i+\'D\';z.V.F[k.2w]=k.P(\'1u\')+\'D\';q(z.19)z.19.3A();q(k.1x==\'x\'&&z.1r)z.35(G)},5Z:A(i){k.E=i;k.z.V.F[k.5o]=i+\'D\';q(k.z.19)k.z.19.3A()}};m.46=A(a,21,2z,26){q(L.ab&&m.1P&&!m.5n){m.1D(L,\'2H\',A(){1S m.46(a,21,2z,26)});C}k.a=a;k.2z=2z;k.26=26||\'1Y\';k.3f=!k.ak;m.5j=1a;k.1v=[];m.6y();u R=k.R=m.N.X;S(u i=0;i(k.x.1y||k.x.I)){k.8p();q(k.1v.X==1)k.35()}}k.7U()}1C(e){k.5Q(e)}},3n:A(p,3l){u a5,a3=p.1M,1x=p==k.x?\'x\':\'y\';u 5D=1a;u 3s=p.z.3N;p.E=1d.56(p.E-((p.P(\'1u\')-p.t)/2));q(p.Ep.2B+p.55-p.4I){q(!3l&&5D&&3s){p.I=1d.22(p.I,p.P(1x==\'y\'?\'3o\':\'5G\'))}K q(p.P(\'1u\')1K){ 1N=24*1K;q(1Nk.3K&&x.I>k.3Y&&y.P(\'1u\')>y.P(\'3o\')){y.I-=10;q(1K)x.I=y.I*1K;k.35(0,1);2m=G}}C 2m},7U:A(){u x=k.x,y=k.y;k.45(\'1i\');k.6e(1,{V:{M:x.P(\'1u\'),16:y.P(\'1u\'),18:x.E,W:y.E},11:{18:x.1B+x.P(\'4h\'),W:y.1B+y.P(\'4h\'),M:x.1y||x.I,16:y.1y||y.I}},m.84)},6e:A(23,1L,2p){q(k.19&&!k.2R){q(23)k.19.3A();K k.19.4q()}q(!23)k.8v();u z=k,x=z.x,y=z.y,1J=k.1J;q(!23)1J=k.85||1J;u 7A=23?A(){q(z.19)z.19.28.F.1b="1X";5S(A(){z.7B()},50)}:A(){z.5P()};q(23)m.T(k.V,{M:x.t+\'D\',16:y.t+\'D\'});q(k.86){m.T(k.V,{1o:23?0:1});m.2q(1L.V,{1o:23})}m.3p(k.V,1L.V,{2Z:2p,1J:1J,2x:A(2v,2y){q(z.19&&z.2R&&2y.Q==\'W\'){u 3I=23?2y.E:1-2y.E;u E={w:x.t+(x.P(\'1u\')-x.t)*3I,h:y.t+(y.P(\'1u\')-y.t)*3I,x:x.1s+(x.E-x.1s)*3I,y:y.1s+(y.E-y.1s)*3I};z.19.3A(E,0,1)}}});m.3p(k.11,1L.11,2p,1J,7A);q(23){k.V.F.1b=\'1X\';k.11.F.1b=\'1X\';k.a.1g+=\' 1c-7P-7Q\'}},7B:A(){k.3C=G;k.3k();q(m.2W&&m.2W==k.a)m.2W=H;k.7w();u p=m.2J,5u=m.4B.x+p.4w,5p=m.4B.y+p.4y;k.6q=k.x.E<5u&&5uk.x.P(\'3Q\')+k.x.P(\'64\'));u 7M=(2n.y+2n.hk.y.P(\'3Q\')+k.y.P(\'64\'));u 4j=m.65(17[i]);q(!7G&&!7M&&4j!=k.R){q(!1I){17[i].3T(\'1i-2t\',\'[\'+k.R+\']\');17[i].61=17[i].F[Q];17[i].F[Q]=\'1i\'}K q(1I.7L(\'[\'+k.R+\']\')==-1){17[i].3T(\'1i-2t\',1I+\'[\'+k.R+\']\')}}K q((1I==\'[\'+k.R+\']\'||m.2u==4j)&&4j!=k.R){17[i].3T(\'1i-2t\',\'\');17[i].F[Q]=17[i].61||\'\'}K q(1I&&1I.7L(\'[\'+k.R+\']\')>-1){17[i].3T(\'1i-2t\',1I.31(\'[\'+k.R+\']\',\'\'))}}}}},3k:A(){k.V.F.1p=m.3L+=2;S(u i=0;ihJj+H8mCW`E%#b|Eti@(VnNFqd9+`mY$aG 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 VItx{kmQK84z_OZ;(?S0KO#rUwvhe@_ literal 0 HcmV?d00001 diff --git a/html/img/item_clickvideo.jpg b/html/img/item_clickvideo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4ddec156c6b7307db9fcb312df6f4ff42c34fbe GIT binary patch literal 1992 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 literal 0 HcmV?d00001 diff --git a/html/img/item_description.jpg b/html/img/item_description.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb8540901ca9940a11532acf79f08845070ee35e GIT binary patch literal 946 zcmex=ZEP||TLW&H+B8H-Y>|#nrj>?J2g^fVf5F;H;f2Vp~_iy!~rV&DPlWD;Z+WUyzL_x3--X}h!gHqBZc@vP!^WMFU`n~@~v zx#B;6_pJ6^R447f?!v8&8C6rG!!p9>>bnTg0xs>%9wmpoAcKwIXu9uCN zR~@xBGcw!ycekO6*JdNeUq8yiuLK>IWjG?-Z*}j?&0m$l1ux9S7ZxCh-%%NwnO`hF~@n|!>m)hIAu%c zeZJmVKg(2fr{9^vs~wlRDi(M=I;7>5qGLG!lbPM!%KZiTnmVC<>!wC&HN3p?^2X+u zNk{he1UBv2R50f;OEOD?@wbl>ORt~!@XN(hZtl*n#RIl8BrJUH>%S&@=g~O_Z{#NC`bT#tWe1!S9 zPPUSa#4nrJs(&`~&EMIH-I1C*H}1pE{PtB_A2t-k@EN*nRR8;^+5Y}P-QWEkCXHE~ JESLV@1OSBxR#N}~ literal 0 HcmV?d00001 diff --git a/html/img/item_extensibility.jpg b/html/img/item_extensibility.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcb8dae6094eddc81053d5c0b3212b1bedac985e GIT binary patch literal 1687 zcmb7;dsvbQ7RJAii{PCP?v|%`(DUvfk2Ca~!bEY9fZ_d3K-uci;0o=Z|yF?|qMILNyCu0(|^^ z01$)$w(0^@F99-ugd-3LI8xn^NTdcz2aQroUt3#K2hzu4A$= zISyxOX=z|$O|-@nE%283uO^@xMQNb)&}copA!LaEzoqI2AT(eFM8iRA00x0@2viLK z761sq;2;PB|B(g)1%soJz}M|Q3;@DmNEl25g+l&u0K(u1Bm`)nummSB1Bs!L^-kV% zv`H{MFaL%yaTk?V!u3u~&;3~qo2Xs?$5)MiWz`E31b_&&FY3RcUw?pZAg}}jCmXL| zdd$taUsY3p4qQEl;1J*m2)mwAUoS>9nI&xZVXSoU17yqrqrzNvJEvaAj=lhsoxSh3 zH}7~{C+__2=RX>y&AI(dWcN~txcQnr`E-2g)|A)ZYweB@MlQ5YR9I|h>ap&Q?G26zMYlziueuOj<*AJk$Fu|umrF(M zoTj9leMQNd#OU;^1NDjlH(c_5x0axHwL2H|hzvas<7MhK&^}RS{c4REyr3aU6H2a&PB*f~(%Elq9`)CmHQYUZv9dQYf8iXb0UPTs&gZXPXwvd7 z5k7P;(B7P%pBUFnd)VcO%JaFTbTduCy^#>?3`(9Dp zkmBh|+Uk*zFC9D<9e;F3R2a24A!5&G#6?qFSyD{qn{32Hm!0EJA@n^8%IX>Wtib8N z){V^}@S4l9=lALqzMP2h;1XU~ zzf~4R3cFh}M&8jspcPJBX4c8IDt?V(?V~A1Mv1#EfL#utBadH-@(!4GblpA@Lh#r0 z`1R;$?8BV-56UMabuP3He8I_swGx7h(?n7HK(i}lY!T^Lz%pR=0@=g*I+ffj)z^@d zkNj56hQj#_hcgwqcS7lHOfLTk1~uhdSejifa8B?PRJTh?EWRt3qKkC{Pa`;y#RViK z+a2$PNPD3eJJl?0pe&FxVl1-W90^Em)t!`wi0r~MET<%e zCJxpTH_E=ac~%sYw|(=Mmb6CEvUg%#+(_Dq^J{1NYnJwKCQ>M~@zTGS?v)nRP+r-l zJZ8siN!(_YY)5Ri(+lf-=Vw}Sa5%TT5iz*DGm1Z2nSnKoyCRWWggo>+hMqP_D1+q) z$SHd_UyjOrQMY^KZJ&qz&-yVj%%K@`@zY|)^QvFWD6$4z<+s;&(XQe)52LA@d96!6 zVa+RaWz{~dL`FxfY&yujsowMx;=N7(j{_yxx|v2L;mD)9r~U^o2 z??aW#PYZ!N-2)kGS>5Yn%C(nWT$o#B~6P zO;eNu4@{i%g7puJg#C^&o18jIhNab z!fLD4V!gG9fKA$Ej4PY}rWLb|LsDLKui{m|A7sR}p);JPMtMacuA5pXRg=F1_%6;~ literal 0 HcmV?d00001 diff --git a/html/img/item_file.jpg b/html/img/item_file.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eed619c095ac912a59989c2930e4c37232d3bcae GIT binary patch literal 659 zcmex=^R4xJZFseb!Oe}2dKpAyG21XzoVGaW$(0XPe z7DdBEVI{}HiGe{24}SQ6i-8BIA1EQnV9yZh_<>L4o|ad~`ik3!S2#_(##XNJ>OJ2D z8O6owQLoi+3JLvo=B!;jW#1Z(#)nylRbH(QkWt@M+PA58qI>I#A6XlOZ)#kdVzOpm zftu@OX8ChLn>+2(e{^uxE_^Gs$SBBEGQsViRfK?W%r&DH>)*empE1s8V?XQGaemp& znk6P@_bfTJY5L(AC9kH4PFu5pDfML5WX;ZoUI}6c7wf3xO6i$hJWNV_e2iQxMISCdsjMTkU|G;)_Fdmr2rs^ z0C4I8RBr%xKm$S|k&uSEX=rF@qI9)TYAx5%(bk2R8yLXLVc5`Qg{h$t+8Bn-tj*9E zjHRWep{b3n4c2xA))M;_0;*S0nkYRjEj_FeY=r&aQq=>n7Jvm95NHD+U=V^qRU?1~ zKmY-Oz`sI4njk_8srKCT0T4n!5DN7T>hB2<0UVk^GZ>I{}J!zD3lhoW`$?V<=@D_c7(7E@naz zAYd_v15>bNi}?NN<|#h9A?%zv8gq?<3EEdA22+eAoHkef?o4uXr2VtYS*`L;yDH&W z-kroN)l@%H4{?&PG1uO4m0p8JDz|DMi>Se^!8(~h2c;3(SqSib+y^EesybQKWR>^5tc0aFS{K_@?l{*N(MovawM_<~?N;}EI4WB44Ji9H_QM2$`P9&i> z;@0}i#NxB>oM)(*s{TWImN8CY$?V0K)=z!o# z%=5HR$?+hM{2yQC!v(k+6A7I&B6$pY_yIo@Y#ZwkWJY8iD0_w5vEZfcO*vKAi`!14 zT7CTGv2D1!Kwg6Ds(JK^8Au4{p6@Ajxo$7^wJ`NJPkjzVr`M7mW*_OwZ{_xw>^mNo z-fnUOu9r9Mrfz#C@y$^I+5`2|Ncick>2~o#g(ZKrUhbt7ytHvHJEURpQ_03GQrqDZ z!+y)I68pHDhg>kPPj>8&Z0!Dyx9QjXnMwVe&-8?BLRbYxC{D;~tx9aylSX#!H5+Yx z*|hcBom2d+OToVnGWDsI?;?Wpy|}w{m6H_~+VWnPRg$*ZygfCEL@CPWScoyUdY6Jf zg|An{CeBQLi79pVe|x&+b${nblQki^+w%sIyfa{_tHqSLw6o%XC;!{|fHC z`O!1Yivgbb-st%EA4AzG^|K9?jI%(5j5a(^Hh$3fgrO6^fQxaq8y#f{a6V*@6B}yX z*+&a=&T7=}&5U@FyCYCaDR*EdHC3!Tz;w77i;qrZPzv&TjgAeJ455WladSZlggoK! z#oG9Q(7~xs4ZV-nV$nI7V<*ysN$?VIMuA8|xTZguvzIaWs?PL)>ZA(#Ib|z0sz`hj+BRHAtUjJl3Z}I#1JQZLT zSN)_(FgRK+vpjj~zD>#CtgHLkc;;4TGt|?TyQtQ@ns~9J5ku?D@4opmdu%o7nGOJ1==YYF>l_>O!X@=C>5K-=L6X+sQIEl z7XCbI{FD`8y9#KXdq=5p6hEY%adimqE9Ur+s9zc- z;S&wsb; AdH?_b literal 0 HcmV?d00001 diff --git a/html/img/item_genericity.jpg b/html/img/item_genericity.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3b05c76663912d0c3d59bbd48005cea6c09a6b7b GIT binary patch literal 1376 zcmb`9`#aMM0LH&xySpzV$taEU&~ZItX1O;uG8@aSl2R_GTw5}7>*TmRl37ygF=AP6 zN44oNA&H@K8OpuO4k;2!^UL`M&gXre_j#Y^eVt=KAP55g0fE91NEoQ_y(OpvAOr$J;YcVP z^6vsvfIwkzG=M;E+pU4o)N+<;8(1Fl=kSM7RRvM4o+xEQLpIsbnt-pW!!#YAL|DH+Y~gr zFt>=OMz`uV-;|cF#@H^W4sRHx_PZxN;I6ktr4%`aSF}t#`!hu3K<3>aoIW%Am-#pk z*FW}d$!0Ze`y!PczVJDbo79%KR@L*<8q5A!%gmEaU)lA|{n***m^WK@R=l=KoBZL@ zuQx>64BF;UUPx~H8|Lo=6$0ow8)90U@iss5;FwM8^A`(=QB>DxmE)!Fj#pssd8W9X zG}}X5_XB0|&d>yzxA}|~--!E=AvGhkAC&bi5-u`z@+}$o)3?~Gg-XtfK|Zpw^TBbE zB)UcU2b?ka2QUKDn{U>3FkRenjb7bfUSBiT?|g;cXTleo=R{H1_(vWTC)%t_cDpe# zF|f$(;EvppC2UPrN`#bK`2}$#()3|RBbO-?#MXKE_#?G}R{|_0I>P#taoh`fi@j={ z!E!Y{BrZ3h{(ws$^B4Xu470DZR#VWbJ0Sqgsn_5v|Uz(|=whb&IwIjXWh3 z&Ps-)!v~V`DPgF}M|xordaRc)Jd?%heIeX;3}ATU^&XXqs!v=H3S#Wev5|`E*^;%( zmF**zH8!e)bxqmjUg96;nI==HtP@Xo@LB_uN`t%0wFzG{7$#k#lg*|B#ICcmq>*{1 zB$V6wl4mKAo+M}fVI>qCMqc?g4Ss z9(Gy@Y(sTf6T{|xw7i^l&2FxzcddYQXX30R5i6oy_p6jjz4J`4k+eW2M?q(POhq6l z(>=MDSoK zP}CW32gAD=S&iYZi&bqhQyg#0f%n60$x~BNV)xqnNr46KiruJ!)&ywC4l>ruQ@OaU4UCub)B z1YrP4Ie_9l-~b@u2m}I-R4ybEi9+wdpp{ZrRsC)Uq^_w6sY8&~PW@e4+ImpWT8`8%A-%@k{5C$Ls0dUY5fI%P}0u|i= z4gdiV2?GBW3JrrJkeF}g5e)!@!;l~nj=`Y+ya2y>5P(8!8j-b(j|L55E8k$WcO8z; z%(_k_nbDZu`Fy979-dx5b}93EAOM4d{|kpBK$x-trALMU7zk6gg8B~`06-W7DCtII z&7<*JCxf}KQQC)tZgiT_JTo%+%L)mw1Fqyja0s9RMU7(S><7Pk-EdQFVC;U)bq zj?~MsuU-r>8^cAmudj{me$|5P+9{gtoK%GI>R`xDevo3yr|LfDfvS$zIs*dUJRPj}9aEDvj$ND!mP#6@%l33B-vqyuZnjUC2`iRm zn>u^#KK9rdHHKLdy!K%)#4)tHY9h34B$|1(=LEKkUT%a9eO;l~yu0x4!v2fjPYG*F zZcEY0CDB%iavllT5C;1%`Hi)Y{1kOS(iOPw{mx7ynmb@V=-=!qX=9Jr;KEpUvP->! z>NtF1zXp2a`lukVkTk9L4AYZO2$ zuXyI{!@mB1be!(CG(gLi2bkBAUhG2=b;rbeD_6Ge4L^X7@8K5`gjag?xFZ$q1#!Fm zSlt3r+t~s$F`721v;HY4#X@ef=_YWW zeuCNJPeq$WGfA$wb)g$ZH8Yaib zEZ>FSJ5cBPbC&f&DAK~%ujBM(E+Vt}x#LprvFC5i(@ru|Lf>y&QboDUh@J}7g+BYh z?S(W?WJyZJe!u9D&t(B#IxkJf>Br|(O{{xn#c~T=EANk)@a_FuhTH2ZrCLL`{25q# z2j{=stYz&qj4pIr6FEfG+Pm8KxjH7(h(nNCIK=6HX* gng!bCe8A?*oLE`ST$be`D(p&*t;U7KM~cyZ1JX+A#sB~S literal 0 HcmV?d00001 diff --git a/html/img/item_simplicity.jpg b/html/img/item_simplicity.jpg new file mode 100644 index 0000000000000000000000000000000000000000..470682481e56e9dfbf6de2b7753aa21b9abea362 GIT binary patch literal 1572 zcmb7=c~H`67{}iqH=cn9g$4>9i9o3%rfZ(%nkk#NNoF239c!#;ij{6!>z1vgqLpT~ zsY#TpmgUi1P@0+{9*IY#lv#>-rD>VV&hG5&zx#b>-g##}^Zh)}yh}YxufZ}OuZ>;+ zf?&X0eZW#5@B~OW0)c=d)fWNDj98 zA^apswe}SoL3`2>$<0r;4O9v%hkExYzi?dNA!a4!J$>OJxVA%+aYgUWYqI&Y7GJ zx~XrP?Grjq+_hS@Jh~$b6`ByA_Jy~=RRRPeqm=DIE=l66cCJDXTDCO4a%p?DYkOMw zp*vb9{dK0@Nw>ATf~bxZSc*e{NdEHMX9vIBt9xMY0&M7=Esv;-Zp!q0PRbkpFFIU? zDJ^7tf<5AoWf8gu!lQXz$v1~nC8I>hTJrXrCo}cjJ=ue=H|F`$H)GR^*2KvP;oH}- zS<<=mVN4uHX4Ph9V120mGpVw+^Bi}MgTHbsm9AnjLiFc-DQ-DEo?;*UJ|wp%3)&AlR-SRuaIV0g4)Dyo zC>4clo~aXKi>cy*3{?@+djI#Ea)hySF}W^vHpgb(Y2}}`tQN_8?#i;K@`WD<%#t~M zM_7sTgtq5VO3S%6Sc%I6CrnIG>z7SswL54v8V9`z0i38B(T!~B1&JZ6Wjf0)Tbmcs z9CmhPR0E^@OC4o!6?zL))`CZ9DBA4ckkf+! zuDa+jkV>UB@7Q8~3L&o;96RDp@IX2I+%JqwZF3t(@TWv1~J8p^1*eKJhi)i;__*Oo3-%dA~$Xy@j zPZqj~U2SQSV?6rn-UyR^F03~z^*wb_85_JO&^sx@(YfZh7_DJ^ox3K_+fZilmC02t z_ilSOT@rV|{@(5jB!?A>S*~A|cU|kvA?b&nva+VUFx{L5&s-l>Ve$TqnXbE}4cK;I z-M;4KZ>Yrvwmo1d(t3`@(K$`WWX)3nJE)%E^#bMs8X4vPp2laxuVcCGvDJnsU8-isnE5*GJ7dCl{^JXhVqBpwC9lWnBF68M2wieJzeKVt`(vNASZ|_V5nR0aK z2I|LqbVsA_o{gJ{WOL|+Q+L8TwzW>5VUH%dp%cpw@w+mqEdNt-PT<4^Z}+hg#SuXX z)HM3|_Ds~L8bZs@FOY(k1W6^L$ccl#A@&PP)3791wD5Sm{o3&ZDXX95Rlg}H?LufG mMD=^CBHEn7P~?DuO*XR2gkHw2zM%sP$9MV%J6O0bDgFfYik74R literal 0 HcmV?d00001 diff --git a/html/img/item_sources.jpg b/html/img/item_sources.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dee423bf15828c7eb5da211cdb81c24e8647a1b4 GIT binary patch literal 2928 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 QgnppcOl`~(mf^knH~J>=_W%F@ literal 0 HcmV?d00001 diff --git a/html/img/item_standard_package.jpg b/html/img/item_standard_package.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed745ccb7f1dceaf7268ecf688ca9a07bffe30e4 GIT binary patch literal 2711 zcmb7Cc|6oxAO8JjA2McaBfGK1MYf2tk98nX-Y)*HYIJkNVs$F``*v}`+d&mIiK%2&pFTee!l0s_jGR&z&hGG*a9F30aW+{ z*y94$02~T~!Ju&d1c$>B$bBdzAHsry=zTb05fPj)4ks!hgBKN(635{r6(yx)W##4N zMezh>f}FC9oV?s$CLsSR5`n~^P#8HeoS5AIjXe&4LjhVqB@`q85F7}_fqVUc3;=*I zCcpk+f|(?Ib^*Y^o@)`S7^t zZC9BJo%68ABZZG5<8iwNs-$+$ua)E7%|eMj5OFdcRL=a8>#b5eWiGudTy*^NSG^Hl zQPwtcgUQUXq2Ai>P)laL~xpx+iDQ4#Rh~lXiy~9wOgp%W+n8-i|;? zz`dTqZ>g`RzKMZBL;CEOO7ge}cIca;SbrK-p?4i2@ef0KZ zgPE0at^QXH3Ii-AnIiL=QnR4)96prhTrvL^3u5P@61p}Fc9iZ}XBSRxye#(ds#?YXg?${jNC=>r#HE^JAJaRh1f84d6^#Bd@-O5?6;5Ik~W5nt?d058rF&L;fCn$+!+oPg z(KoJNZx?oN_r-x`sW1=9pSu;q<#|G zgnbhS`IQv>4PT`8q)JWQ%+|s6pkdjM>$J<7twqlHM4pjJntjJ3Nq`gPQg;B@DH%7K zt#PPTUFDh6iyvD{E%DL4{N7dQEdPi4u3Wwl@H|DqtbKDj{)TZ49?Jyx{ ztvU>T`k;2@lSaRTb!PY#HGX*Aem-am?f&VFcL@84yTbFj0FlmX+0kXN1vt0|;08Yd zZ*Ru6ER{N%ve%+ooFyIV#RPClw*$)6vO?9Zp$+@BcOOLSKy4irp054X6yYRZQR>d$ z?VVU>FwwgQB)^{e-i2@w$k7hGsvoXAX{P?suA=wcvHAipd*qC|o^(Rp0S4py00)(Y z@e0qq^W`yN-xglL@J;`*;w$@XL^Up#K@){&GIgAtHjylow2_YZp!Xs}xg7>vscg2& z+)ANpHkEXcF*{CbPE75Io*LUS>xz@l*e{b7xOIVxcdyK`Of z4`h*Z)JPn2Yo_4MmBqD)W=%E+7`ATk^SfoLC;jf|d9AwCVG`?;R zXe@B=Z?=tbdeaf;5zZBiW!;C1Xk75jw-7s!uS3Z@_w!$QU9grFV3%Ovpf%tUkvjCu*#P|GH-A# zapkX~zC^1_*4%zqjn62Vw>ZSeK0p(@{5GxL#`)XeW=IC<{HryzkMnVjQ4)P=ZT~Uy zagAr~Qdv=*%;Dv}hvO3hrw{%b-O@gq&eSUFyKg*A8}huKpT53GZ(MeZU2c%-NS;Ih z08G!o6tCx9{g@nxaYfNsM-p|i=^97i7PUR;1h~+5{lRL_sKqt)zwC!eF^g-)W-hx_ zCyWgBl?3~fY;|NdYtbFGrCyww@VLgmvT;UL;rR{$Bl{jsNUBbSpoB%5Q1 z72sMmcGc9j`&3YwmYT0`)5G?4siFu?y52xsVztv{FVpkN!f(%LXk-sSpP1S}qgL!|M2l;-Q`%CU%dDT-P1D)C#rKs;yQR81KCn{G3l^#;c%{b7?6hwn zyg2g)RQpY`jxh{H2BB%N!@u2{Yao1H$;%_=4MVRmI=#3rs<>HJXI7RcslHCI zx6}Svo^y_dRudcMda#%Hw7gdMIsDgaTvlh2dmd%@wmjT65hH!7Xj_yK!;Z!50S=Sq zE5m!hcLj0YKj&d(6u%oR2`|-TmB@{0@u_dCU{8z=-XSm5c$a98 zX;o;Cc}+0zZ!3ikQa6L9ej>G!_;fd%fb39~YWdqzXL(V7OcBrl9!4J_odBoB-7y(DH6q}oX) o*N^(zNezHoc1J#a4`JS|nXgyP2rm0Em9s3~H>;^hi{G376A0X#)Bpeg literal 0 HcmV?d00001 diff --git a/html/img/item_standard_package2.jpg b/html/img/item_standard_package2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28b4e43d6186d83b9ea37f053e7fb95f9c4237fb GIT binary patch literal 2623 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 Bude_A literal 0 HcmV?d00001 diff --git a/html/img/logoCNRS.gif b/html/img/logoCNRS.gif new file mode 100644 index 0000000000000000000000000000000000000000..155715a556f11a5cbf939aad1e90085922617457 GIT binary patch literal 3273 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 b!!t-26Z-X?KPR!sK15lv$luDw67cvBOzj?6 literal 0 HcmV?d00001 diff --git a/html/img/logoIMAGE.gif b/html/img/logoIMAGE.gif new file mode 100644 index 0000000000000000000000000000000000000000..94339a8eb373df5b51ee6ffca901073695dc9591 GIT binary patch literal 3473 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 literal 0 HcmV?d00001 diff --git a/html/img/logoINRIA.gif b/html/img/logoINRIA.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a5bc6a4d9b951d46648c315d20965408e90d798 GIT binary patch literal 3095 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 T0U#NVq0eFcLR=391FZQEds`mJ literal 0 HcmV?d00001 diff --git a/html/img/logoODYSSEE.jpg b/html/img/logoODYSSEE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..875cb464a54b8237819f51817d4e43389bc9d06d GIT binary patch literal 1639 zcmb7-dpOh!8pnS>zqz@T`OW2+Ff%U0Xh^5A?x)6#;|K}UgrPb)U6=-AVpI}kD6CtP zkvdpuMp2~PhLkSKr9CCLCxocU?jdwJG#%~ioZWq%efH1&zR&ai@%_Bt@2h>GeFb3s zfAISO06{&#TsMGr9PkE^5CVaKkh+CLB2j1~3|c2+LqmNd*cgX{jbRx7jkyV)U`m8x zk|oKMOr}z)coQp{6@_L_p;G=R0d-L{3cVJCSxX_n1j_#{?L7d-03;v}0<8c&7=&O@ z+XavTKo3NMAn;$Ikf0ufKx6cE*cl6e5Tu8I5c-8W%nXS- zMX=)BpVp26Mv#ud5Dc(@`PBnmOGkftd4VZwt&l{JqR?aF9~;QeM18Ws8RXZjR@)@u zA#2r%5|rY)^dFCQi>Cn7-Cw+R-L0J|vE5aqd=QUyKuG8j&1vr4)76*fmye6GzkPQk z>`MLQGdc&?V6fHC8r?s%;85|=n^d3uVNjak)%( zTb4(YZ?mwRcJ`q}u;}SRgz#gI0ymGKzP95ozxx_b zUTo}8-{r0E8E9M&`i-DK&xJBcP~sJFAajFB%q`MEV&AK`Z-n-2u=B$@J2$r%&`q~3 zPuK9Le;;)Guh zS4@JwWY|M)WZby=3m<*BVcR(y*LCO3xdXgR;@^fd5}ZQEZCgF855x0w+v|{gt76+@ zKe`@qH6hSwGj6?9=*!OQDs>COKG#{0!W<3tv`?kZD)%!p7xwJ8<{tyyA6H$qx}OYX$F_|lrP;loXqh68dTI;=CkxGcvouy*Fj8h{(Dtdrw1oEHBc_C2?s zrlCjn=K2?nR2c`ZERIz8;~&PiOn=vk>yQjwpQ%@*QQh0vJ2tw=uTu81Lm1@WqC3?= zg!_Fyg0BMOIk9jyJt@+DaN*PEm2PG9IZM?$)m&RZphcZ{g?f z{<~JJ`Tl2C-(LK@Qixq7wcf)YeZw|=a_!Yc;DMq^6R(-E%170vvHgHI&*?&8%3`)bmI&i zzY)Cs>nRI~`=>{#Zw@Bic7A{U0q?IpIPM(=$xhrHjh@8Zs4CHH_~jI3pYIn@)A^94 zU_@H;Z<8C9iqkRq)?Ok<&s5QyS>7v0i;s2%Zqot2B)*C8wo{E~NqNw?V9(_h@?0q^ zs(mTXC6;5Vba7Hw6y%prReRc3PdPmIIcnC%4EBTWI6mfNb+xpo^u-I%$!D*Wr3*zF zpShak4&RPvvA)?4FEQfT9z!^`1+6fc{glO+=Y{MFHB2J#q>9ZE^>fYyUel}YyS2HX zm(mNHA`LJ7^SUge6S;aQrC4ELckR%vYiBR3W;Z=Hi+G>!V{tKGHJUdXNbDJeZ(;V* zV{`44CwCYGzU3b?B@5QlpZoRHV%}@MtME?kY*Xx0`w#|p9`an{5-BL@mkzJr3JjA9 z$$6*4;~MJQxu}?`Ov}>e7xN(($+=WJvheRA*C88gPT{tkRxnQT=`nXuws zOx)5BD(rCel{i7V zQ)rRTl5lix*0;X$6{|UdS BoH+mh literal 0 HcmV?d00001 diff --git a/html/img/logo_header.jpg b/html/img/logo_header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdf9e016df98841751c65cc9cd080459bd9741c8 GIT binary patch literal 73325 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Ø+?awNj^{UL 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 %eX&L^mILK~7 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 literal 0 HcmV?d00001 diff --git a/html/img/menu_issue.png b/html/img/menu_issue.png new file mode 100644 index 0000000000000000000000000000000000000000..ad876574699e469d0a4b5bd296bbdc0b75dd3529 GIT binary patch literal 404 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard10.jpg b/html/img/postcard10.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d782e9e5e289df859eaabbc960eb9c89509f9757 GIT binary patch literal 47516 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 Z%91{M8g0vBC;tF+{{Skddka?2|JmwxXSx6Y literal 0 HcmV?d00001 diff --git a/html/img/postcard11.jpg b/html/img/postcard11.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98e88331756ecfbc66a27d4ff2767ca0b51c5f37 GIT binary patch literal 114479 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 B_MZR% literal 0 HcmV?d00001 diff --git a/html/img/postcard12.jpg b/html/img/postcard12.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9007050d6d3574b5db015ef3222a684ed7f879d3 GIT binary patch literal 98927 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%0A7M9~!@ouwydnCb~ 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%0A^xei+b; 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

      0OFlY~%i8e+y`XRpI}x6^U7m5q1UdWNM{) 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 DzikFB literal 0 HcmV?d00001 diff --git a/html/img/postcard15.jpg b/html/img/postcard15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..efb6827135b8ffc113faf2fe06a56530059cb7d5 GIT binary patch literal 92032 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

      *b$R{6kU}OWH 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

      =Yw^c{o|uc5WSL>I7!`e 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ñ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%0A6>rNk>U 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 B|E&N3 literal 0 HcmV?d00001 diff --git a/html/img/postcard17.jpg b/html/img/postcard17.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06cbbcf8aa2a96ac76cf1f7f57674d85f239dc29 GIT binary patch literal 100482 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

      2Rl_IQNbzY(u7ltps(#J z(}P!%j*H^9wz>L_W#J!(d0t&C%M+huj-4t>ag_6V6(-`-l9XXete+x_<-C+-XTP#XxVE2Nu(b13 zt-5b{8H6hKy}?>B}+L$W`RW#X7QaRO3!E zb4^-J$tbwl$wegFeXOpI4l2nq2;pht_-_;JFtq8_sfd;;r6($Cq!Oa3EAz=mo}|-? zmolEd^e(<_@YFM`AxbZn0!VUqPK%Hnh8Pj6#~{f4*%<+WV;ph)3E=NP?QpaR!zCpF zNoibzkT^y;DA+z^s-UZE+!cZC{uq1@wtZI89b`!Mml7$JB`N@pJjUWjjY#>K1Zlr$ z=&pk?Z~dhGn!X48Fz^?N^j{Nc{u!{myp2p!L#o=rsM$*m!Z!D4F5-BSc(*ZG8OuWC z2-qsB4_oWdqf(p|JI50%LR02Sn{i(B(`oYaCa#pNyIi`z$?MjjsaBu0s_N5+G~+>1 zZxba_Ez_sZ2NgI)OH~-F*>cKA_zU5yOXt|e!eG<9Op7w9XpCVK5lJ7Ii?%XwU0VzC zJ|r7Q^^f3E&ESs*GiPz|w};DRw;Y`&(44l_&ppbiKiwTG;*B%GzYL)GuOEotz}_CU zmr#Z~c#_`3M~2u+pcT1}-QrlIok>M!0talC%#E>M@5mJv2v#Lkjbe>sRK~?XfFh>f zmuOG|?c)Grisa6&mKG9>Q{|kb;-hY7%Xr;8yDKGhu9f<>{hl17C07xNX(-mCNz=UI z=G3JrOWcaIVHT2$Z8(H9n zq=~|nc?fYRM+J#Oa51><-Go;P3vXt^#1m-Dy0w;5a6GgGHq$Ek!@CiMRXf@6Tjwgd z8x_$NtMEzJ_adrFQ&75!ce1)pPTMQm&f5OJ)=KacyH5 zEF^C*G5MMzs*Hs`eC{DhBo<>{-Dzd=D}10xv8oX34#U0EX^lsh7;sfo%&Jv*0LII+ z^ez^_<@n5^h9?n8IZdN(w56uY7C{A*VfX@GDMUf9XgS1#!_}^*mwBb5%x>YK4Ygsx_)xF3I2Q@kjPx5TeKAvXS)so&fltX|LXV zO7VY*G`⋘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 nIjUTci>nmeYE*8`rJ_&t28wDNkD1 literal 0 HcmV?d00001 diff --git a/html/img/postcard18.jpg b/html/img/postcard18.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d240261183bf32f6d1b954517afb4c9e451c916a GIT binary patch literal 105155 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

      >!4@yk5{W2@UVAId?Z$Da- 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 HKbim8RR9*G literal 0 HcmV?d00001 diff --git a/html/img/postcard22.jpg b/html/img/postcard22.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a84b4f4723ee7864bc35642389c923e9b693b360 GIT binary patch literal 15553 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard23.jpg b/html/img/postcard23.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4ed6053da57bc293b6050f459833286add5e2d8 GIT binary patch literal 16614 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,b2BsRWP>$MP@Ly~p{kWw0qNtk*;dey-k9u4{sd# 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard24.jpg b/html/img/postcard24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9753f7e2585ddd36b854e0bebbbba0960084cd29 GIT binary patch literal 21545 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

      xs(CZ5IWIYg45F z-K2)Q1k9HmsbAawN@_ko=2e94M1V&az=qPH{{i^+&}6X|(nlWS|dnliAm*F>@G zjzk6v7Up{8kQbF&_6G6f>WyFrybR?kPtdIN^?TAaJ`|(h+EpE2g2+9o9A2Z>JWQ9w zNl1XI11%C3>Wo4HYReKv>`sY9L!}GfCd8N>F#Cwqgz{OGuN3QqEThn~i9iTVLVo;J zM}X4Zw(FyUe}HR~S4c$idJ+F>THz3ds!(vo1{2ib9F76e~banabUYKFwA!Ys=x z*2CY>;xA>I6y08XsI*hdYG{9Hd`=L)+7As5S=*U*k@wb-zrb}y1}${xJ%K}%U0Zre zE{x2S;S0`QUWC$FTi$Y7bN#afyVyz4Lh=z-kcLlUe9eScC`oSq^nsq~9-XBZo43cS z? z9UHC9r!5M~4?9%zW5dWB)(vXtrIJ?P2@AR_8=Tx#Xy-P@avr~O2MUSOC@E>pH9l}) zzt^9dU8Z*7hcafd?3`H=h|~3;rC038d6P$zG}*s&JYp%ImjD zsEsc^zs?q3yZ(Yre~@m6HzClV6c%Zn9jA=jN1)%K9_k zjcpoA`R{@x43WX6B&!eZ8oy-_yKo=o280>^ww#pm9VDz9>Q~8EQ7lP4F^K}P Mp zX>+X=A)c~LIL_17{l!BWeR|aT>vQ z`0qA*n59f*{suHTtvw>iS9bHS6m}u;m8y0F-uC9a88H=1E^r=NMC4x`VOSxVCVyt& zxF)8eJcUF<(x1sUfAE@Q%mQ3mAo&vB=~!vUlNdWvz>yy$BanaK?svtp>;nZc)nXxQ z2}1c(*HURjxD5ho;H1}~#cVb_13PG*toxB-cWsTX?Isb1ma3ckuymyD#v{Pov&~pf z%ed8udfGNA*o6uZ@l9jaBRjN;j2G5FtR-_W-VANsE^}g|!>!t0WnNh1D?N}zmc&Ej2pAsCqQ-ea zT7ATTFwb@8!i1?m2IPARK;_8S_FGds?c&?m4e$n~s-*e|2@D+Q`d=Fv&KcBN3iy{O zumbi{l)O3(Nr$n%TNu?6?IcT7sP=(B7I3URD3y7}w>Im0ZlI^4DZ0aBml|X^vR{G+ zGd&Zd(N}$CfQKQ!?AJUq9>aOQ+k4?#9cV-~yw$Gg@5DUF0jFBz2JYBD_!QU*xf4}# z4f`>!jUbDT=;jzMwWu}dRXlVra!z|WY`D;RBhTd=kok=feXQbwtLOhxSi0*HD4MKa z%`5B`n%gAuvwKL-&-=D2$kf^*L%fBn>sj}W%%TjU|1Fj$-vJ*q*c6Dwx*XUti^7`& zdLJtqGJdaTc_46UQf%QbCo~GrdK{d%M_ZvvX!2O3$jn+o_6ww!d^aAv3*`<_;q^uu zE{Bu_(tS57u5;a!8M>1G3S*ic1lWasVW}cRlYJAvs>FD2pfCo82T1C8y1S&%qsEzk z0A-;P_+!zxpLB0w@e`TZe_fhes>Rjqcsa(ccs3##huK6`t*_1Dj+_$D+#{Q+rP^xW zrjz7G){EM-g+1PK{4JQ~qNbRNE-Jb6D(8vdG|p*E7%Ou*({?h=j=_%>`D^=IwE(-* z&+XGDV0B`=3ffSe^28q56>p9^2nqc+xu0 zIy#eDGSZ%Kl4rUsB0s6&Y3nM`-!5BE6z6r+{_K3?Uq&CUaKl`k2tK!b_M+pXT9Wr* zV0T=P?o*=Lfzmg`)?|J>1-f=^!0-zFV5)i6IP3vyZeEVmj4cX)&_?>b6P+%5 z-=NLb={8sI2&dO2J3`Vo3^@{%uA)tOL6(D7(4i!rlqn5)S^v*PWt{3sCG(?u>iQ3+Nv!7Z-ZaoFOl4!iQCmr4& zb#9=yhzoMEeCD&5e%z zx+rSD(8OG6}RJJ&d$IQeq30^bfBiqER(5A+KH`(PgiygzwT^>*EydAX@S@h#D<$Rth z5+~`T>hwIVqWKqzhVL5EWHfj=qa-7u-!+X2yF59r-iuruGc4VgfIbINPro zP7?8D<>&sPiFUjD!2nEJ3f=ft#p!aTpZbvU&!Ecv!Y7&%FLR%WV!g`R9sK13IClCw z?)xc$#dBp(qig2t>fee`UG;~)T;b5)yt{{Ls!|GAhQhjDP*0+H5^|;89YJTmkS3^I zG?N3kD)_(*7GNvUZis!wJgyVQ$+MLri@h-jf1{B;Wm*lAiqP?|jFw(V7 zEeXPdgumJddq||Y1~n~fPJLPfM2-v}D#a;Qm_Y!A)8e17~?7n2N9jaji3eCCR zh|T@!b6yeZtV{^s!ORQdJy|KKZM^u#);`O(=Zqrg{(YR*aprA0lDipWDymk9`xBK@ zcRUW1akS!yOsyYA^zc%BooSEbu#;E+@IYMc)8}o|PfXkThl?EWrA4*bvnx;MrkKCV z2vzB?0?RBHNJ%#Jb1ly$Mm&diI-Bdq5evT$&v1pk6Y;YXxhyuA& z!Bu~rtBp)YD58|k^kZL~^FJZjXl{)6RuWELUh5ZSy?n+cGCGK8Vcgn$6Sx zw6a7U-xLMQGc$ENeO*=29|?QPz_Oogk>xY&#dB5- z_i&lj88EO`5%LV1-Iexovulm1#p~XypBa4X$IyRKU&on{23PL_6Noeo^_t+9S6B}g zjBG~JOUE~dqP+C20$i22F%7^5g^N1Z_(Ar4>5mobs&1lF5*um72IdU{NX^$SW<4`P z!W5VGv3v9@>K>&JUT5h?+w`=5r5sy4`tqzt74k55UbpY&^YU%^dDMF;$C5xyGGxlT zaO;#uUi-p+Td>$yy4caUd+h}trvJxgwx>SQQOkU-?l;XwWg0O1n%6=D`R(lGcP{NNaP)M;-w~I`CZ}m4&D)Tku-M5 zn*Uf;V;pNat)hPM5wrF>dd$I^So`_J7DdEnr8C;HKhCldVsWMwX-B|Eg5M%7&Xid6 z%KtG{H=#3!?mvKaM%Pl7q5ARzQK=5i+E;~1!751B#SbDSF_^_$#0@8;`s0?oW{fQ= z#xB_!Xpyt9RrM`<8~|1a#KPWiIg<4v!)C5yT)j$<{o|*I65Pjx5dQ!=kw>cz=R9?_ zXM!FKKZBbh5`;A0OMq>YUxWwlwX?+woNgJv$-zTG&~ccy)Y3x#=B~|f)n}|m*~|!F zWqdBkji=q>XO`KZrB{y0r#I%6_;RefKEWVfh}o9On-UL=E)8>Uz7qZg^D}=VbbN0s zj^EWmE&Z&&CHz-6wbH$bVbxD#Kgs2s_x14HSotolAF>d`sjwm2?^bhOwAm+!`67Ot z^fRe0b@u`;-E`xlQk<@WmugqcU~N^f+sWSSc4q?x#}`>24%KgFH-VKlyn|zk@EPOu zN#tlcM;ByZ`;Etoj_8&y#dq^^@x698%>5R#J-Pr#L8E^F-6w2%StG)C+Hx*Zu zlIu2aW{O_Fn-`pW9eQSh>zx)Hr090O|-f6*f9Q5JtD%C1JX z!q61Rm&EsrkZ=Dvlzp!?Sb)WiHz>#v3XGPpm#!@JuL46j)bY0y#RK0-FGk|N2aWCa zPq{ze@s<10Cbg>rZNA`{u0o4BD3W3ahyq25MxbT3;-Ts~$6%Vkq&YXd0I45sCC2+D zuT%im{Qt>oAjS?am2Ml$y-56Go~oK@xsl?aTj>t}U-~`h&%n#; zC*v|fQ}Kn7n*2%+zi!Ev#(6qRBq97uEmXJz9Dlr2fE0q|w(?8wxuvI#YXhfsIzOmp zrn*wv#lBuTR1ms+V{<{qA+#*g7$Wt%ve`Xih3F z#Cy;O@GV<dNq+Qf9O=(BfF2zXB^ z)SUiU1{0i-hI|b6k=G#`fAWO6S^B&B>)mjS)tpY!(2op|1G|yL(yB!?gb*({a4)Y^ z74GHeCt$kNhywd_mCfS%+PzhVc^EA9bDUP1%aCy&)+*h|zq@)(GFP$vlKl$FY$dek zKDMGv|GB204XO?r?a0$}$=4nWYO*p7DzOzTF*Jnth`B)}2Xqexe0HT76F7N$*+JN+w?YWEbwsjY*#z z&Fi^;I(iwGs{=aHy~e$XX0>Ub5&5V?Nl!9Zb2sjM(zPsI9rd~rYZMDxN%(P{9WX9) z*9Rzk^FQUia+}a1GIkVxWH7pUYRC&uN9`IvSc!ooED}Xwn!`l$vus;kcDzy7EZY~=mQf6JPlR&+9GAs9 z{bD??o7fTymRqo2J->a=n&{G4*C}9qE1yRWZ_bc8UrDMR31bUlom!~jX=-au;P@>0 zcIVzCGiP8mMXg!qH>swPzjVe&xnmv7-@U|X(zA~ASV=-#>qZ6&f#VL zu7FE{7^EKls3TXXEq=imVgR}VRWBLst7btG8|<0n3?E6$Y+QvHuMNc;;zwd>7{};? zD@^IG^Rd|G*jIxr#RJj4&ZRCwrv|w>tgretRW2zB7{hP6xi|8XpyaXRsR?kSNM;{@ zjBFZ3saeKnX@hU1Imr_8kc4`?`Fz4{y7%VrQdO9$D64eb|fYMOVMVZju^3*T=a3p7~cig0;rP zqOKZn=~VZdMR@=(sqqcHRXnJFdfHB zf@f5@P48S(R;o0~vYM|5q=&w)G!;8kO8gN#ORPFFcm3qn5Ot^4i<;B@)*xNx?(P7o zZ)lcT#Md6?M@NnH`Qd^Y6Hg9IKr9M>rDGd3YRBr8DLNiZwpGd*-}f_$sa4T{WVhO& zl`=j?Y4g*ybPf{K;<-&JWkgYs402PqW0S3v-L%1Vg@xc)twp4U+gbr3L4r_W6{x_$ zR{3q3==fJ^+KUltF&t*#JhC{WMR|gMjr6B*FZ(aZViZ@pz@u>h!MNSe-oRsxr8goW zD=&{Nr{hpMZ90-zZW>xP7FNeA zZ-&-SC@ZR0n+ZG%`sn3lMS8UuDUiz)#@S39WMTq!bYx-xNG1gSZ5lNf{^|mKh))LU z#vMFmRb|7K0w~!j_XLRnofEW#n)8(VP!$ZC)Sq#Ytp+k zzQ)uh0wa;!*~Q$uIw_Xd8f+(CYFM2*u-o!DN{j6bv+SvDQ*NU>Bbj zJw%Z#f36wym9JK~DCbD6)=~-vvdtyE!makUvU;<6*7G%*e_Y=ABr@}z@0@WQDrRFi zw(=)Zm+=%Y2O2v|38ZRo>{Rkk|HS*6nk*e({BXE}l_6^Oubp`0+$+mzEUPcdMV*hD&!hXC=16zqXr9c%ovB4j1dyck-D<(gl-Wm$8I+A7F{d5< zWVW*lt=SG{-&qo0!t0v?_M049-F7~J;gY@SYQv9x9=-hogRbZ*ja+S4?})Ef%NopE zKp-Dhxg;BN7!uOvGShScMux?%;cCRQ$5!kyLPbRS*B}nob%nC5#kaPD9KkT5B)%+^ z*Qw5$i87@g8NFhMxYOO8ec=l8(@6|f398< zimWS+yW1&j@*yL8FB$PC>|3Tgw6!JdHf%kjtdbN|WXi#$%HDdS>S`43^L zt$#~D5OGS$1jBf&Lo`As8G8la`x`p+;xju{tW9#@I#bk?3n?)ZR-^H#cypr^V-y$} zzJH8KXa7C_Us{s_3!I?Ty73~lgX$W{{hTCNDfQe z-9WkZYO78E0q70{6S7|9Jw{UlW4JG|dkJRy-lE1N3Vzkj-s4Z#D*geSsDAB1c@*j% zHX7a3ouII&XHRnUHFjO}XYrl1M^lbt+v~s^A-{~w$<~FjA?m<)R;=5@(4HX@9(L9l zgt}FBKSEScsE`BPPh;q}j^$560lX?lM&4ClPi4(Un)MReI0V<#MY06x;PwW; z3^h{)r_*@u_evVuni9k)P`?)R9WaXLwoy1awW%b$-xVB?jq>s@=BsR@(w$M_?P%lg zNo3!ITA)`|eW9NtDjXuh!-V~)bFQj#QV!f07Y$45987)7k0JH|h)5Mun85xr_iyTG z{Hx)SVQ+>-63ns`Ixf!jsH%J4_P_EeRt0gN5?9cb`a7ywvEqB=o@N%Se`$aWJ94Js zH@sZCY^{hGkH=aE#9R$)3F46TEj)2|xf$tW-=S{3#+kG>#!y@N5yZFEy!bKE-Xe2? zSfVE0t5{i#%bhjMrEszJpZYOIt?gCeVgDI&rATPCn!zix|5+Lf527X5u?!5ehJIUj zaszLfIZ^cauY~<~^Af4Fp0s@*;K8E_%pV4`JVDJNKEbI5wRPr2ahV8lb4Wc{kCrj^ z(yS>cE}-$JqnMmkj{~m~QE>Z0*G2<%O3|PXr!zSTUftY6U7pZ9vqtbt zEQnjjfWueQ4d)UHTmMK7q^GP~yquI%_+8jc4fowP3PNVFNGz{TNLmD$j_}9GZW9LkJRuhs| zQ)BmKt3?^NvE&i9{f>uIqt29Qoz~5qgq%fHWB`LC9_P@t^he>?^)CfV)(7*(8G>3{ z>SWGK>D+1lUs=l*&`?=l0H*mG{AeE7JU$0CDOUAN8h8>@?mV7QL4f z01w5^c09Foh6mVt5lBzM7O8|?I4lUNSFS`P7P^-@TUIKCjHsa6K;-Ua(F=X znY;Z)KK}$WL|U{k3&-+=FY9@j-%YfZ?l92lXrB3ZCj=5w3d-`D8R*I&D!(Td@Px=3p;n z!T2Ey;2E@#5$;nq>&~YRxL9&{6lnNpG@Y4o=(Gr#M&MUorV129m~g!1fql8SRwPmR zBo~pNl>z06oqm{EO{2DGq5huh6zLiWWZ`OeleDg%D-~bu@F0+N6v~_Ex|iNI5GZ|H z`h-Hx5Q?L64b&^jg+ekEE0L*ehgu-MNWR!~BU790*vt3Pa?=4+;ZzsZ6zH|Z!U-IY z1Xmrzk&|wvb7Wry+@3U|mDsv-znGU$b=a#@hE1P|*T~3FrXl!NElT#H_YWLyN_i=m zaYrIA_>_8?!eTk?fye0Nq4}&udRkm)qWO71wkl441;U^fnykWexkQ~-ZmijHHE1rf zd2zG3V{}n1Qr!K8o27Vt43u{Es%)*e`Aa(j%wGX%?qP0Dw?U|XDNOH*ywflzusi*+ zsvY=f>Dn+qJK-D>+N<;%Ai4vfUh)yA!+?5RT&k5|q; zn3ibV6|KnCs%G>9PohkM-^ZzuXJ*cA0Y#?k#k}Ysq{(l^Eq$i=8!sj{o=D1oDmcky zE>xCqNcT;kcbPA6QFI?!c+Bcnf~wun<;NZuXNrqUY_?C^T$rBiH>z z75Fs7SDo^lc^kc~N*OXQ6#Q@?SQlb(%x3pG-`PW_lYFE?*8nTe9X^BhlEYFGY;%{0 zVoR;pYLka(qdSwlV%sRizW4=k)JMcP_JqzM`2c^?y9 z{}xD3dLg@GV((0$>A{HWtq-%jGN-!21WmNir7Ew{eekkkN*G%SZa#7LfJJ|@*TA^K zSCr|<#=Xp!xb=JOsW7KDnXc|H`w=PTG6faw!%xyzmS+Pz#yMid=#e z%;?WtT>DoNiu%S*t{4(bQk(y6j`&s8n^=QnTRk0_14G{;zt=p+w`X@Y5vRn}LPzG>U@`VQ@q zRD0}H`VKc??OzK@<+`Ix4K!Mo29TawMJ~OXu-PD zE!)R~J~O1gfU&@b%h>Ot2Jgv#+6;s+wer;d1B9|0zBTcnTya3CA*OZ)RI87kP-qM) zSC#P=Z20SJsxu_C8h^nF#o%qPv?US_y_@)zC=Y2VP5Mu6_~{XHS*Lj$pKG#}$iVi3 zcEhac(?KC#eU}&H>aMt>;n!<=Inif;fUUMS>{{IC535<2vuJ5wR_FDiXrcy4e%C#@ zDzXk@9p)wcmA19Wl9{+ZoCw})ZXC^P?0I9WpJTI_X~zF|v6=iOVX|l7V!0_t^I@XK zM(V1sSf3%vcvM2}1Kt44lq+_&RjzX$w*v{d<5=-`N#83tTa-s$>d{H zFHL!8cq5tjz2&lu8glh`0KP3_*=7(r(YsRT)8S|OB~+pJ8t3CW%LDjex=D^OrFqOk>!dsJwIyBbGdjORzqBKcK6OO1m?6FAD`cK zoW+D^-;u=b+2?g#c`K~Y5JKTg_}@d-_Fp@5dmiEXsvCK!Ao-Zc^41MEcvEMcJ z70cRHg>jExgAPdeN^<@8&>GwLSh>5E@NkEM=c%_b-0zcGrWUZ)#1c@gDRdv^ZA1tq zkekW*r<~y8aaK#EgM*QIhg$F1kGwXSZMhd8{egJ^b#B^(2q24fhyH^$@W{`C8C5U8k2^eic%*ei z=oz9z18hlDWKtzSQl4A;KJRn}+Ru;H&I=5$rT6Q71-(Kym(D4=EY4IO4#&lq zJnA)Mk{v_g@8<*eRZTwv&&sgxHonoMJd{}42TBR>ehEHp=Cz+f8oM!Z^GHMh&=%%q zV0Et#uaJ-;>^NT)M2Q|H%$aDY0-1L}i;k2624R9teEZyXlp&j!=1wDKj|I(ca{Dmj zwa<;(4ur~Lj~Zp6|G-SnEl;J#Qp_c?V_xTRGla;$Ya;5T zOY90mL;BmrHpz9U4m8Tshk7-yFRMAGGsc3uAI{_K{hX?``$jUY1?5-OYCoGB*G5E* z;cd?p>Ze$i4Cw1-mS>z-=OG`hyt~r0Q)U^UNUm(w{_$< zr3{<{X9x-U7{wzxxX>}%I3#+Kt_zLP!?X0kHLzKk2UrYkvs4XC+bF*hc(Tx#?Ast& zCTfDvC98j$3%uyK5W<}Ao@Cr(BW(Tq?A*NoBtKtVyso(Sxss_k6?*7N48plI{Zcy} z2|0Q95uQ8KHC6 z&eu3+XryXI`72O*@8S50C}hV*QGU{t4XW}svf^}@@yly@qph8UxNg=eNnvzDDBpay zf>ZmjLyg>zK#M$DnSR1Tb`u||(sus0e6nfZ*EaXlL7ghNm_jprWgtRwY5pVg)0es%|<;d*=9a zJa!3;|3JPj)YO_IiH$83#eqXxeB#gPYaY`b-LqLBPFl7oN}xWO!E~Nkfn=xah%*Qg z>tjc%BXashUKEu704#sKk8K%gRP6d+ta++;lDa;$FUf8 zY~G9*2#?mR4kpml}4rXz!IOdL?V= zQ0CH+Dh(80N*m;{Yrp|#cnJiTC*a`2&f(2O&@lTu>8aqzwQ3d;_ORI9!a24U!)e?j zm$Z9|%@m1^-}|2XhgL+VeUg@)hN1%`fE%e#Obub4E-e8c&$SmDZyrcU5DZUH!6CkD zm-#h%BXd{R`oFr#bJIrP=7#JFmgT31R+crAU+U_W1Lx!EH{|2e)Kh_zoVV4cbFg>E ziVuiRYIp*wAO`$|0>81hG6>RJAoq`&imJDd3Yr?VZ4J%k+N7;1bu(Sam!>Pii7>85L}gzRPz`p2qp{*x{ zTb4aBTMD%ZQ_f<3q%k%lUHV~DRni^xBWSA~*u=2TyZ0OXK+5b^(l2gqq_b@fs5HEy z2+4K}3Koj=WKm_OPRrg3)8~|7>HuQw0R#_ zXX?Gv=q=MnGA{x#S2zme`q`6Wc#JVOd&Y^7i>j55ZY)H$OH~!qvu@iN0Sp-&kz0Hr z($tv%9&MSu_>t?w~5gey6mig_CIMS&;NeA5-CBvEa)#sR&bQbEPGjkkl{u)mdZVZ-bc)ei|^|yvc z`$WhjbNX(6zpBx*8^h0GIJE}3J2foJzv6)fiZcT@{4M$f0-i4K4r~!q!_~n3bLF|^ z2P`tVFqTyBO3C`dj<%k1o|Gk%?BlUB==O{nCW`0-ORv{kEma3$T9x z=d9Yz52V$Y%^yK_ZNJ806GEY6DI#APeR$h=9T4xhF~QFtfNlKFG207&jcn`@B&G1? z^OBZT+>8tLEe6dpP?sVMxC#Kczv7HGrN%-J-{yZdUeA{3!+wp8Om zCX*ufhy-l@@_2|_fd&?(KUbWnhY<)#7V{@5uWsoH6jFh*XMH*R@S?=QKT1X2!|K=m z&!CwazO)H*^Eq)x%yOziFkAUm#ezH9iulzAt~#C*{Dt#|2jYP4YV3Yy-Lx;TQZjwg zDqyJixtA4%JoL)q!JD%UJvIFVItQl895bjDJ15ad5BFBB9R^B|@9?ug6dwHp7zgxi z@VCy3-mIAy)&2JvIn){j2Z3)Cu-{gE54@lH0mqNk0er-Yf`9ryXj2>6)-BXF26O!b z=zr!K5GfGb5g$-__;}&Fa1EuJj9d4AdX8Z74c7FaL}fZ{W5DgS6K!1%T5TmiJsDzR z_Bgwio`f!cYNFR^v!8%LOIp{4c<{x$nfICs*Nn3U<1H_z7VBd{_VK3p`H-4yj?TCB zvHdfCRrrc1ueEcCyDMK>3nlx71l-~XVRkKX4eDETT^%d|7Pi06{EPQfUsJhjcCzt! zDfDsVHYUYv-V1*qhoIk~7Y~)J2!COiwiLQ#q$CwMo9ZxISD2v(j{X&sp|GfH>*W`K z_e(n87Uf}Y{oX!Hl-BPF@ThsAMFzunl^xRYA>!DwwGCl<*b6?)oGi0m?cdj=b>x;e zN)UQ@zmJG-vkt->;+*Fln=R{!9Jdt%O&+~F<@8({X_k!jt{Azom4m8u09AU6J0A*t z`Y}+O482g2-=^q&uW^|ndu)D>C(J`2+wc3#O;;4Eme&V4{XC&;rhX)EsGz{&Jjwa% z4@~5ZQEOAX7$50iDHJ19#M^%+#z@@=J`tVM)oksch4${8ELAI2leAIZ~$(TGzIQe1K%ah9LhVQ!1`iZ=R%2Q; zsT*tyVY5ilo!&}d;}2I5?N;5jd=%GI>p|&uSuX>YgJ8iz_VGv^Usb0X9Q zqA#7=yO`eB|9o$PSJ0qa~~-kd23KU{;qP{Y;542ebc4l(BiyT=RidqI(sDyPGp9&|p8zq|UNF z4$626PeGY^CrmQK4%KctUrdn9&FI@9PhW!I9RAb(g z4g2w>vC|X(GH{UiMVT|}V_;I}mA{cuxBqN~@$s;-i9)5op%q6$xlL`XfW%o`iysd9 zGfc(e1)-%jLs)=^ue~shywae?<*De_QGlbepBoktWo(zqx1L`5x1@4ZiiXjvUec>W zdc?{Fr|`*vKFxh|{#Q^Nb!~G)tFh~aie|<54b}eR%s}$-h2oD{Q?=KaPL1ZewO$G( z#Ix#||2|==z@H|c<3Ff@#lD~&m+H4-#OwDsRF-dj`zvyp)KwC1CPq%r&vir!uB*wi zA{sB8EQcEbfAgz83%@tkHt>+JN*3j@rdjB45s?C^$=v6jhqc-lR6U}T?h22^KEhN< zwk9+R%(@SUl^87Uf_^!!ZOnH#mq~z~^gGeB96~bvGe-zI!uN^5!(6Ja*~W2+Eup!D z0G>^DXZ)D{;e#F;bkL|_cw^)EYBBo%2qqKR?0n7BjMe);4O~enXHAMvT#D<%X_3pm zA1Mz|SXR6$o?1-Y#^Wk|Ye-UpT+)$+O7m})5ivAR4oMpU<`RdouGdV_?QK*aEHnC^ zYcVxAqhN}|Be3gNBh}(X21g1Haxq#b4~i!w-B+ZJmL~|HF93Q~>uaQC^5nrCi5ae4 zHJc(w`b2p>vsNS2?YDrlrcYpLsri}mwX!<+yrQFOjC)r%t9Vvxi>J7;ylC0E*m`EH z+Uk&P=2g$uwQY3>BqR5!?ae916Iz-=q@vDwbZh0cMY@SvOyIKj6~_3A#bDGG7;QD| z(M+Up!2JzW)HJINNpp7sG5+^M`PZLU1s3_D&r*&trDl0$<(Sd$xcD@i zTPbHY-B|Ez)BIK7r<&cK#^mIG3;I_Jb!#P;$vDAYwCPfnJsT#aWj1tH+Ln{1T3gL+ z5jUYQ=O+fa9~QNSqO#n14wJHy3iK5emoXj;gEXFec>e%cIjfa4^+JVtC$6PW2FoGS z8Yxa$7=Xvpw_rtfK0@^52u9g(QqKpynx zy|#<*PJ{8R9a7rv_T54@(!Gaz#s0y+cEKQL)YQ2(q9QPhS8VLgv18uhD6TntEqRVv zD5>_6>}l-jcR9O!FeLJ8A6ASBIO$qYE2}U7{cAr`RxN|ctz&sBolZ$eZi#Cow`kF! zJ5EkJSE?I`PK;vSrPVQt^PLZJup5XS>tg;_jxZwJ0q^TrVle*J%;=$taF;7vnyWg% zh)lp7epSj{Hs+X;7#7Gi9QQ8#6O4YfS(%%G#Y8afGP%=Ix|A9jDux4!>AWu#O9?Eb z``0qjzH`a0hf1BHw*v;dnz`f6w2ZG65BQohCm0nEhhZXiZoGe5n_32Y!zMb4mqrFR z9{s3{OS|OM>|(W3Vy=1P(y0lfhV~{=g#>gsq3`5daSD%IaHR%?)uv|eKbZlD^kbd#aI z*BemM?DXRDG)6=P8Mv#-;pV-$k~kz0Bt1%u^ISKd9A#M?h6jq<(Y#-KrNt{LSrNHA zyPC~LJDN2&q)wXt_WH`yTC9aqHOB1n)xv6*o@LPlcIWF_ZF#8pg(tk132hI|cJcTM z%hRmlySRcDapv4e2S30w)YQ2o>}v=(?mJGqM3gL#f$3MJyIrdiU@M-re(S+E_g*1; zYb8bz#u>Ko2dCp)uZXQ~biGOJ?ho&x;ea^;vi3aA=Uj0s;VtTn*1#+>A9AL>8^O2t zOYrLYHEbu6k#1SF>_c^CdN-ZWVO+I*C z9WJABJ9uMFw7Qv`JdrS6-3BWc#)T|(m5S7#^>}`A4P^_XsG$LE{!(@%-JrpEX}KlqXZ`K zK^~PptoK*Ch05DR(khM3x10*G1(}&qTP{e+0h+7LC$j-KVbj{ZQ^QvpOZaBVFHjR4f8$;XZVN9ax*IK4{OMaGQcw&7 zTy7GCbUNoHQcIUZU&l95L40P?iAeL<*P+;6X_tNwM44iFyrIb)=DvNs)Gr;`Bw|-R zJ?o=gWni#?Be89`G~}mF7LQU?BT`=W=+bLZE}~2_6^$CLT1;#;WVw}C!i~xG6@{nX zJKA1Ijh0?V*A$l8%U)@ZZsCNfpP2WpD8Z%gGYZWqK2&=3mZ77a8cjpZS5R@~n#a4> z^m$oVXOcn5k#H->Y;|dE(nuWciQjfT>AHpKkw`*7J*%a+vN@d|r@cY0!(fq2(}uNR zPVDnj>ApA9uI~JsnNVAhaz_TdF2Sy~2o?z4+$j6Ll{3R8o}@@Nvep)qUgt`T8rbx| z9C(gEQVR>&*37sH`8mhdvL}(*qKz+1>_$%d;BGITL<-JG&PO#ho!!8WS6NAAUJhzo zm9A*%K|KzS`z7@o$yI!`bUjB(Ei?<8sick;Lec*Kc;d12O-kZBdx@G?5(XTO^*nm@ z)x46uyv1F|Bv94Jvb#pci)>(;WS9>!Hrv;=Z%ZeU<$(_U-u1=k{{U&4U$o0P`~Lti z^{&q08RxWRlL?MRX*sw;=;U;xD%NGod`k##ETPUhr?ad>p=R$>sQuW$<27pH2$~4V zKpLghm$K&SOQR2M%h0Hdr9ouDKJ-?8uOzWu1wsJYD6UVe)H~J=pJT|@e~^$#II8U& zlAMmUYT09RlhUsN8mQW%>t4d`W6yF)*j*JG)@6~CIQ12=e|7fA!j;+wYNc*Q+OiO0 zt+#6lG@bgHk7FBDe_~E+QP;g!b^zd1sC6oJo6xAXpdP$cl~hE+(+lIKDeLno^{s7V z7Rqy52^*Tdrdp_#M?u`wu)g z8{}+`!mCRWl(Wp)C!i*rnk7Y?-SWtY8?hW3#+XXn@@uHLfn}2gxB~!HX0u-1D?LpV z(m94l1CVLOkCn97Le?nN8)>nT&{Vs!qgiz#wAEVQOct<$12*U9gH#~9dwoz{fHE8~ z2c=n-#K*gCJ*t%OKiwnprj?6QQq>-+Jawj8s!J1prO2bqWgY9!d|Pz|{;c;Fpp}yZ zlhmH|pB00;=WrPHsn*X7rQbO8p{B@6oE`6}(&*Ol*l2BZZln821bJYL;G1jK2d-$WZWCSJu94n z%wXcIUEWD_=vx_83O<6RN0(G+<;|md1+Jq#t=w|Pe&Mc(BuC7FY1UN%bX45$H>2G29$E zR#TBu-P}two7s*)>rIB#1I1V{j8lXfCR2>Hu}n=V05K=r)yrw!P^sh^jibQ;Q`L5g zCk}1Ks#{cv3yh4{MQ?nTwm~A{Na6AH>NgSXSMH;-7RWXXuijqZ*F9%7`B16DRh=B0of7(yvXjb<+q%$NlMz0IKjxPTJ@vH zr9&D-KGEhJg!HMEIdw!T@NUVN6KU5863)oN5^x%l6!JsvZs?zE#2Co|U0H5p5qhtXJ?*HT(8eyjb3B zvE&RAPOtbRPfBF!SysvGSM8T_;rvs%z%1iOmrJzz{Oez;Rq>42pO0m~y431RR9e$DB#L$OGme$gOLD(s zXFFOlI%BPHDj3KB2Q{(w^9`qyB|=uw7l@0g@AXFBks^O(U$wf0^&g#b(^|;x#a9Bl zFAd?e%d^liACFpN#8x(O*i}M3&MDR9Z6lqE+@ydx#%f8DNS`pV4eGT8Ausd*Vwr1@VmA@L01*%~Psl=FkyuwWBSbHcN?(~plDatSI}5)k-56X%olYv+T*mP*5`Pa$?yfvT zr`RO%2)y0Es{jTo&t>6@pqGhcKfM zuS##8F_2%+(|UL8+r`fH7AM zj4H|o?0sr`dq|78!Qgt;soYMRMMzkQJ!?`il&b##W<(^6{&jgH9zg5Tj$lw`Matr1 zQQSV*G7m#j-Y5XKQ=D^H_io)Y#b%^wC^m;lATA9tr0tr3a|<_dLl3%gYPrbvYUPEK zAB|nNlP3nU)j?rX!pyJ1=y5`*L!@nquz^(YJ65H;!6Z1&)&r5AD-J#+81L4rJFuC6 zVmZZVrE?ilI*U08Nb)iWsP4#j#{&kr*l%t!6U;kQU{j)ZV)2&y_dDUcj;1#P$t zyw)>Xl;-baKgz>o)QEPraZ>;@j?}KB9V;nYW@!mFDwdf1rv%lX?7P-o!0%8!YMP8U u1lE*=n0>(;I3e))bA@K{GfTLXZF1pr_@9Dw^(fGPkV z7Y`o~7at!FpMU_LkoYk%F%c0l^&@i9$4{tfX`fKj(9kn+vCuPcFw)Sl3b1l;^MLq3 zbS#3xg1o|9ydd8HG=fDyKtN1LOhrsg#Y;~^&-?!@_q_lLLM#ES8XPQk05$~{4h7cz z0D$G8pLkgRC4m1aSlBoZ{UsnIA|`oIXnqX9#=^nD#>K(I!^M5j4u5zKz@@;WWD`-w zr!saRU`J4kMy3`Ma;Vhz0ZnGkImH}(UlS42JfWqd=i=t!1@Vc4B_yS!WmMJFH8i!f zbxh67Eg+UwP$y>>S2uSU+|NHCFeo@AG%7kK_RZTkWLkPgX4bpx9Mt=g(z5c3%Bt#y z#-`?$*0%PJ&;0{~L&GDZW3zMf3yVw3UskrZcXs#o4-SvMUHrJby1x1O>-P75aA5&( z{u|aq`QO0)4_p)vxUg|?ac~L#g9{5g=;6enz{O(|!KYLAeVV@R>?Jvl(ByDvd9QL+VB{rs@ zng33bK0oWN&^*LKt^b#|sed~x>MwTTNBbK7{3_1?am>QNr#NqNC9I$2if`+Zi>Skh zNLHC9zt8E0LWmw-2mJaoM*R4v+pj}2I=lJPDZ8dcaIZpl$kf>@otW#@xmi=qkIsLb zW+cgtwX}wzm$6GvUmes}PBsTCg*nYu6QSK6dP@6y3H8cj{T?tCsF(ml!cYR|lOHGQ0LNDL41a)Zdm@f4-G?j3!&L-2E=Q_GkW5kjPojvh!@RdQ?Du{gupS&jRR9 z;_o+!{84GYsqUvWMdqhLUUICy$G7v`-vF-`pB~sq=L}!aJERs#kYT0~M z`)o2Q+?!nV!+{N(Zz$?{&PuX<)T&tb-AwcF@7>b7>1K|9@VkJ%vr-{Lx{_tKFxRB- z-)P$I0X7+5PZ*3|Euwvf3}j|Qa?X&2_HRyd)|qtXUyZvIeanift+4^U3=xm{cl3vv zc_#nhrtISpdtvCa6J3-4RI_s>uv2Jyt;gI}@`W|P>X71F%R{r4e9upGpWS|IK8WM# z*52O?C_Q4UPPk&LS~>U!pO3GyrW&ZR^V`qcr7A@0d$5T;<*6)L9+3WWG}2qix=a63 z-J<^4mHX&bjkUV(sE1Q<%gncL+06;zuksy&6B7cdfIGw?bxB$`tDgyQlRUC6;;CnO z`VPE8g*7?P{3hyzN~QnpybLftWyov)`;D#@8(!j#3Ahv*mXCif&GAk#Uu_OCT3w5t zg2qH%mrdNe2khB ztGm<>Nx1?(>J-1>+6gRAZjPL$FTovc+mkd)Mo=(v6IKN*FK`-o_lk#q45hDL;w_?j zvZDpY9j3t6Y}Q<){g)=79W*@l=w&9$s=W&vsgObXw}~gmHzPvH6!8MA#EDXm)KH&S}XF0)9R1YHtMK$)sxmh=YBv4qOqH8=^ zfbch1p+`m(M$MWhU0+_R>?E6)9pMLJg6UnlrDH6{ALUeF@AVv&tcE0~(vYUdjGmcj zxO(qgRR5q8Nn@ZMplo!;SJbillAQX4)2eq=x_V0BSjWN}YfYhP{X=1Pp7DulDnX72 z6NVS|_RNqXzqAU&H!QIhfzUR0f>F?M+Lg`{l^&ryM|yWraae+j$?(43CY}^0REi-R zlfDI?(x1;UoR6CFEr?}k)EWYLz>Z@u+~d4!U_n|+=t8a)i9wFMR>_L+u4W?)lgn!$ z9JtVhDk*3Dq8c@{(u|6gD){>9$-8FhEswVsJ&Fx3*LC**3+cRsz&es)PN6&v8PpX_ zPzYfbT3{}x_CphFUNY#RAC+oWp46cyH0DKH3FWNO%cLq(b+OGH(;!nDBv3XLrH{)h z-{XAvWRVtL=+eBudFGyv{S34V#D1ikNTkB|$Fz1_rFoVu1mZ!SUeajgSHiSw2;=bL zc;`seq>e2~LYkOMV~)nY6wt!^NhHQg@6H>?Ok+{PTgJjmYf&sNy68YWaSBJe4#h;P zhlPt}e%2(>n&IitROe@V*U56d)G#5z&X-9`jOkRufF=2 zv3gL>+m&@ZVH$HOI*g~X0~I!j%NuxXSYW~?`D``jb@N1i(y**PYh04S93)FaZwJWr z;p~8Lm^gISz4Sv>!AGsl6Vu3zEHn3Wa_BvWwCrcu3mLir=#p3fa3Bme|b!yZxwAAfJyN%8lu+g_C2ga;UcK zck?UJH1>OdkMkcBaf8BO3TtB+#Ar8`SpKlBp)FIo52puYt^CXss}W^GKhruVt3kM`mTzEuIzlX(8IrNMEcpcQZLdKn@wjAQ!_WsL>lsrD6{8X4z=OQn0%xW z5Mpg5b$P30sCQE{Y}R5XE0|G#8fKwt!x`xbA%!h0|Lw*CKhFDUff;{{Q8pd4!unmtV(fakaZ(H!p&N9qO+cj-Ze-4fb1ozxCR|V>;EOWx7-72Uf!0` zd-Vi`Y(A}eKOy8CGK&?lTza{SgO|h)4YTH9V@(ZmN-t98-MSfiBqsbj-5?w<;v$wjdI1wCIf2~#O$B9nIJ|niDTM&&J!uYm z4BRaMRi>@V=W2T{D;e5m`hhjId+VbLw`!sb=wTkcrCzIm!IzwtaJytEqMhu@ESV#%~16X!L*ihA`ALDw-} z2{^$>O>GX?b`F(g16Ak2h!^mU4`X;TwTstkP-v*}Bl1%N`LRJNLqeq*42yB)lYv9bTs;q;m zUfv$SpyH&IkeVs{GF_&8n@4}mHQVgJKGg}yym8|$@v}37TIw1|wrEzBc0`A$C5apv zTdo!5znGQY!EZjz2MSlx&UIzCn_o!}{ZSEK`HpAVaH%kz$dQI;_Y|OFQ}^A6pIJB7 zs&Q3%yZm&^IRNHcV6pH*vfIs0+mAn`fwEvB>m7Gk-q~_Rg8AR-pHY|_8sKZM$p#gi!jGdPbv@u1=N02iy%TMnBAf*$p4IhN2^>rv_#?F5UchDQ+g zp{g=$f|Q~#)Ub^8?wf!7MYDs0M}Wr!zWQE?6k7X+xhrLZ@g3^!euX<$77;=(4H(t+m1Xv{y3j81hjg3AZiyFdir%NS11C@ z>})~JKF@C!Wx?=b0Bb1E1YTOkO&yH0{Mo zLHPJ4^Fvcb`75R5Odq`6_S8G4(@-t{I-V|TDUZxN= z-hnilp-)t)KW2xnZq9hRA9JAbM~jIc-~5e7S+DFH{AhH&cAj`-e_k5wdvqk~C{Kw_ zO@ypwZPB&#$%FvGGo38dypWr?EVV>P^$(q`HYWp=$s;^YCmsPYEg|tZPI(M8SwC~0 zhSjz3IbYNWuyhH)%Bukz0-cWR!!lXxgXdp|{xKha^S1gk&=+u|*Vb(w?GouIYax}< z)!ANt!t|zOZ6Wuk#h@|42c3~Dn2dcSlq9gaYqv1;10s;yArn9jPhETY?z#AE9k8X~ z7y2GhPyH-MSy9I&tN3w@7O@1*gYd62yD+Am4_I%3 zB@R_h95^ZAu#H23)Y&yS`wqVV;Va^ydBK=*Ql<$18jBxIU&Rq;*VH!p!dx$>n!^#= z%dTehJ`nDZw(opXX}LPp9AR_b+_qf{`9edwO)xgxm=jbiat1CUxT7RmWV&nZ50I&v zDii%pXDrd>O&hvsI&yqm7@C1@b02RQ^-jz-g;i~#)cT!1G&_aVGBQ$GuY@1wh_GWN z$(ZbUt-JFtZ+c&BFD|Ct=tE+=df`M1U6$k&r`xdRu0gs?X_GrmJp~zzxTga<)RFC1lNJ^jq;8-P^`Z1HT0F z4!W;d7&8#$Z5LQQBF_8AhqA#I4mF$Zf(!FYGSHW6eZ$Z( zHxCEr>e8HpXWK`;mFqCie6MP|Lr2fPPw*$hW0887FmD~rVd!MmR(|`LZQ0j1C%w`+)1V4DfzFJmC7@taGgF;W64&H`+`^0}hQt?tqJmW#xZaxCpD(#x|QyHje zl-7Ue)sA@^?^?nZH*#c+2oAhc&WuciTmEv~aXU-F4o8?3{UI9VcxUoQWVTlMIpW6{ zQfmr&WZmxw@&hqHD*~6c6!q_^KB6WihCi)r@1*splB0M$69 z(w3iZ_C>U#PM}b)wHsl#1Dm|f3tRQr61KQkE1`nHBH4J)s?J;s)hI;&RioifAc{3>67d+jHj zEk$&wnZFcV&_F>MWBx7zJ}``5t+UZQ{e|eU^!9rm>ISgVDcl;w8X{s$M^whi+%&81 z=F>c~n^g=0o#Ml30RF`d^z{t&V7eW&7F=u!nqtuJcVxhLp#>=0eAF~8(rc2*+_X@( zjuFLmrk((V&c~+Xh-dR7law|WD!q|;RAw@iATeZCA_w<#)sQrNKgd=dBb7~;=vK$V zFK==H3RChP_$ZDWU{BAPbCD^nkogWbCOfF+ydb0!Az{LmotAZH$9{hFM6Nn1h!jYi03cf^QOc}%7avr1mNJ3kLBEu z_-c#P8NM+4af2sxkpE0O;Q8gmpVpvS{;G{YuEd}o{#j;!jaJi?PzVR26hot0wI&VD z?QrpK68Tz$v7Om<=`>})RVYstAI|}}BxK4TwmxgLahT2mmO2Hhc4&Hl_a=PQ>xT$O z;k8Teo(ki;kQ`afZQv)8XS_6y5Hq`5XVAX<44IFz_7~GSX8RcOP%NDvj79X_>CcOP~a`yt!WTB(= z^4#fm&N(MnHVJO6*Y{~G*YqtH~GTXOzNyVIKl3>qxobuxkp6hs{NIa=ylYh-w zBeuv7R18|#DPb;)E5Qk^v&QIc*&+Dy9?(IMbWMNsJtBw9sx_PS*35LnXP6B6+^898 zaU*a_k{~El;S5w&pZ!2N)|tFs1NB!q)sJ?j*oYyiA?k$tNd!?^>v1Ne^j_GK#nvD= zKlSjyZqRXZU^mgKJ;Gz8cX4@c7*keUTk<4YeIRx|`j4k!ztmqCCyEk(nCz-f=McmA zsmlVIHTzeIkU#Hd*+jwKY9_-EuT$Pw+Ku41JZIzw=ICo$7XUNA#_(9$zJL^qup;`| zQ%C8XLyMBf6|-gK%8~SuMe%if$}d0Q5H!v9gA~F}`DoNv!WL`emoX`!=0SGwzi+WB8A-3IoZ9u@0C5h$ z0Za0DY8RKYMUZ;^WVHB4pxBV#Z0@cb`UzJ-Y-udlo)zj$T_Fd@?a*Y1rF66+8SfWYMeoRs#FsU z75MuIK{_-g71jG%F9=P@Ee*_-VV&uCWMn^g=cvR;JQeFGg0bQpYqJwk&gS)}}B;u%F$Ytb-^GHVO6ucm;5}iTHw2}FudWrk=M!0OI zfR(711)3=EPOM_*K2&sA*JBdK%oKi|%HcB6%bol*2lJyp<)CjVR#HhtWSeQ4b zd8{ze6%cyoiduVI98%q4=j1$DaNV0{f*5jvkd?Ytq zqKwQkq2>&mkUl<86LxzfK-nt26p!t+d1u6kkklshOeBKPwKoo zL_B9mnn$8r_iNG>8O=2_E}<=Mt|QJ$U!m29Vv7}No`KcrS|NjMmGvy}d2(LrCC5GIow zpd#1TTVV^?&If3xxKXg29}6@q9UNajGsw3|{E6gZ&@XEVhl9KMeM*Y3heXm_ttHLT zN!YC@Wj6uZtu&gs*%zctou|9c8NuchnHRcfSMOOP+Qnc#h2PX)EyZ~bPrPDrPsvVN zlE~(eM)kheC zvslPTp`xu$99|7=*Un2S*}6@5t+o1Kot;+&ESWz5JK(Q!Z(d2Q9;5m$oH)KjCKSS< z#T9iGVr0uEKy%BV;83M^ocvAzh*WxaZE5t>yxEVhTD@MM3*m5`mAJtxac^Tm9}XkG z`2~hiy0OiLkh-#fUQd*>-E)X|Ueol8ZYy`~4zeWa>*`jD#!BJ=EQ3J#DoMt`N@!-w z0KbA5Gi^HLghS-T=Hmf#Gd61}x|)_#7Pcf%S@^(ubQ&Fx^bl;$nsyuC03S3X7bmgC z)YF{*!BFJZyzR{5dn(Dsbg`eDFeU@*qeoDGP+UOeYMpRU5`Ut75aTs^im+WDKJPUu z1gJ`ghgse%-yQBS8u_7olQTlM(*+Mf+G)uFg{M0!T_wXjcRZx>G~E_2GxwM!53FAO z^k^a6%{ma_39aG*!&O46(-5fX3`kndNHEw@CvuR~1wvPuO&*%lfr=ZZj#e4t>xx1( zn57!apj6t;BZduNF&cd1pvq;0l1_~u5wgj_REa*$T0HyM5L((GW4Iw z#`zv{#smb&dOAiE_sW*U8jq9%-0eEfH^1~92A1W_+sZkLE5Qkg#{4t~sD^}6M87$q zH^oOnx*87LztLt*7_&MNLEAdX`q3%q!fQO$w(IIts!mh~Iu)6(0RlM39IRBSc$3Yz z>Vc-f&Ig!LIbx@EymY`h2+QXNgV$RfA6WZ~lQ_!?yZE_*J3-O@OR3tLc&q$TDq(_V z%h%VO1g-MlhH>4R$w;aq0~{oXE_W3^H#C#HGpb>wWwc*%G!25I!O^0H8)~)TgY4<` z{p+PcpePE)0PK&aI}|PRBfpm_we2GS)gs^d(=UW#c%1|Q6i23l5`2OZh^^AZAED-l zd0IW!WSGnWcio{rO|+`(qu=ov<1r%It#ZVv5Kh+*%CN2|?T__&UdzH$p^ene8>-nIZ-Os!gidD`UkL`+WrTbd4W75Jc6VW z|LqUrFBhnI(5%z%A*jT6V8k3MF+B+nSHjGHyV!Xf{jpqhnms2uZ`KRwl40heR20NE zEZ)=(HNq-V(@43lBA&CcpT<=SGY#A?FaX62hbp(_s&kK#%*Kus1#!rk)cEPZ-ly2S z3y`-#M(k%=Q`2+XXlu#CC;VI+aihR;Cd8_GUt+3Pv^3YjsieK;%XKsfSvZA?q)woaeh-9_COI55*3XWBcK7&qWO={K6Wahg0@Tyu@^KRCVc8EAh0LWLv+|1vOgivpMHY^5t!wcR=ZgD!Xr!D@F zjb#%{T`bLJ^sl5}+wndT@@|b&FlWNEHzZi*>Ie9J1sI znyeI&6V%}gB9cN1Ysy-{S#lXvO|tm=h$z8qN`?5ZAtekOt<<12UGGnA0{pJ@p&gms z62={L=8(!W z!g3wRh%_(toGX>C{sCscRSVpIFR0BCRH-}1h1Qg=j4MtA=OT%mh%g!lNubF!Gv^DX zIx*^Q5Yavgvl7vEGC%95hXJFq(51LJRk**HVB8i%B@@F^gBn>X&vI4?RvK6Cqy?S1+Dap-VRSz=GLn%gu3^MQVIz|xsCX`s6!>MCL~3#%YArs~jW-J8=P zIdo|u01Muygf|7xn(0}1>`C#BOmH|b8MJr>`|hF$a=ykXbB+&TNGZJoo&*INcj<8v znWh<;9@{xZC$i0chV4(*ukLp=Jt zMW$+4TlzJ~IC6ydRKw_JtcvByc94l3X4pFkoAkK7^KT~>#f>Yq(n3Bk zJPiO>IAOI$b4YsziC=r7xP9Jg%kwrctxmgqd(xU}dIsEXbH73>eFNw}a$3*Zg*T#&%%CF>!-bw9gtE#P7cG1Uy03kxx?5_crKp%X?dQ44*3-abPqvFO$J zT>2uxwF!A)6~t(84}h951}MDFIQJNN;W}{acR36^mL%BYJm(*gvmgHB?UZD|Urivd zZ#6XnFU=XnSbF}f{=uvdcZR%}lbBon5o$_e!c|X;FyF1R>R7OXMzE#TC_=L|_KV@p zqGF3B@YLH%?d?brv@r!nehNqdcU&XWn5Ws##%LAOXAfhePK-MdO0^sXaBguCFoW~7 zEa6bP_y$Z9N;^vZdp-gg)vc8`%lS@xud=<$h#qe~oZ2zL-h>xxKOdEpmnl%H1sd0< zKFyQ>i8_Dd+um`*ZtSa?Rl#GQ)lVMBDSnBf~Q28=V67+FH>^9=4nobkN*DxU{E-ueH@WJJ#^Sq=*gA zE|VhugxscvXXzcYQgSt{OKA4BXitq2yK>^kZ4)F@@Gy3vA6Cw+A) zN&rUqXAQmY-Fd-0&hpHVy8Ty~_;&oT#e0A!M5I#TDHrV&Sd`fNUoLCF_MRRIx#MU@IgY+ z{Ff&D6j}(Q&h0qn8m(LLQ$yAU?a{tUIt(c+ub^po+&+lCBK1OeOeYeA+qf1i-P zsX~Wo&+4~Ji6>IEyR%+Z$+a+n`hwRg#EWl`27TzE8qvJVK`Y&^$F$~}>D(nkaNP&m zoF1*SQRCx~TGtMdg#A+Fc?!{f=Fq~mq=}2eXayy?swGUesrMd0rY}E%G}4@sn<)Y2 zllD&%@_a>YDpJOJS1)L!h$J z3^1(6wB;Y=t6gb}l0ZOTQbs?mW+(SS?ir<&g(DqUsIk$w9-bVrTWFAudfF_~{@8%Y z9a{;ZBYmb<;a|lo7G*l<>ojPAp`}J@ER<8>J^F`IjMTPkt z>kRraDdn5}+tQh%3Gms$Y4OO-(?JrxK*p&R7<-~HV}qrIrggE${yoieFaah>2tkn; z?WnhbN9**(ULhK~WGc;1KM+BN2)=cJp7~~No@ibbkxQyO;1{YiL({1OJsgZ#YWrwi{a>nT zr^2U~id)7kxNx`Rb+>;zcR6N4RbS{okxoT&V2HPdSTT)fLL`? zUR5sp(^<(K^}xm(O4HeNZ@eIa-k`paG?8D0=S9Kzzpk?sFMpY;F^VwHPdGz@?g4~k z2O;SXn*+xt$pBl5iEjjR_W-n>fR8L}`KIpj4)||KNs|8;`CYSIFt+jH1J#o0Kf1tV zMH1bXZnBpw^^9vy=l@;(G79nA6qs`m22)uoc^Z+kE~?)^sjocH8zVCgFV=uTz^_?LhD;QEZ@sD!rFW^Opv zzi)BfefmYhg?{^?nC{1=mRFyp%dzeO%;N_1`1uLpIZ|LjZj*R9Esd}1ikVVs2ft_^ z0>~(}xj)twa;Tsi@Y|#3v}MlbrNPz8pd*ID-f6b%!t00O`xU>t-oF#f^O#lM0EA!Y zN;CkvHTh^&AS_sMLRxVLaF3jVWjQt8;sw zqFe6WKUC=QdY(wH{{Gb^+CT9XpE0hIlRb;Fsk5xuQ0%)G+V=p>>{q>H9EU5Z zbh_FPm;T5b1f`p-=AMCz`ZvJ)5#SV4l;-@JpBwLA@?Yj}uLSiN(T&ME*FG0Fs~SdE zeeVxD8z<*fdxCq@z7iZ8t^LwDH5+3}kag_lLPo9B7$T@y-|?JNyK}C{-LMcp%UI=B z=!Sp(rE~JmEj#`ixSX#-`DoC|WY8xma%zkmt*V_>I;k-A8A3Db{lxNS_#R-_q0c^~ ztA!l9bC|L*pOI5L-<(H=-Mn91X6V`B+GHt1ypz8CDnua9-}vq{?>FR$m@8y6pca1Q z^g?Fsw~U`Toi8~sykukw8o9IGNhS3~J7Z3Q@v5dwzDfe?NPQW20}#f?6GmG)7&VKt zKV)(09#~8+!(b{>*KEr=Beyc)N`f+jetA%tdz)oM9T^*K6>>YbA#+FtBEH@%LLCE( zgql#$<-Siq?Ke%)Si&V!tq0r0qpPW=Q*8ye_cx61MnBMVC2)XaijU~LNA_qVf9!fMy-snbNm_D`3t+_ywHAc&HcGM44QrwGaka{3PV|WCI$C~72xGB{cl9Gx) z$?O;=me6-Xk>89J)-|y9K$r2hi`mP^14kAQ=Qofj)bx z7_r?XPMD=g;1QqP$-{AXTY3uNtDjkeuOt>muNvj_Yx#WBET*e@Nw>tk@bn8)>=ein zYx%;8O4WA*%dDL(^|j{>?UB)or}u!AvU#sXFyJmDqjp9}Qg8WJOs%c^1$5MNz$L=r z8@~_>rLF#Um=ulS+K6axIN#4fLb*dUq@7fAlMGQnL&n`*G0yYz?cd6Y97`0X!erf&uD>@07CLTEQi zlV>YFes2*}uUv~4biS>9(faw1fAvfHj(JMirJVI*_g1#&HYO2d$!{gDE?<4FbN`(u zcKD9Q0g%Q2(s~K$F_9a{8?5nTtN8>iCMuI=Rv3C^JlnO@S91@by4tz3x(68BPM1QI^Jo_VN7 zeNPjU!$?v9Zq_Aq3;C8w6&nZ!t?$(``1`qdkO4*_4?K1M8Fw2iBR@6Ec4oSTo5i zY9?NdHY-xX_ef%159;icFt!4ZPH^=_$3{rwd!6P@p&Q&mu1Z$1MAyYbhj8zG#VD)Q z&%Yf~wH&aq$?X6iz}-!4=>w3*oRpL+uXPw0?S;s~_}B*`DO4&C@r14WKfTK8>^Pu4 z3CAs~>a)oaP~g({J=eO>B_5*F1nk}e5@p6G>VL((0=-rRj=ithiCp^Y(H-pMwlPBT z=qi?WJeH3nbjG0_?ijo{rh7*EOqn<=@COrC{}Vl} zX*Xg###X|~b#n0;f1;~@ZrbfgZbC2Qc)>sw&|p}l=Z$%5>ib)hs}Y}9(Jg*<=;m+& zMq=V*9UU4LSvQmiGks@AXS>6LGfZwy2}^9Np$Wy?4K-+m8}U#6DLF_$+yM_+Nee($ z1Qk$=C$dsuUWz8|=N*6cXMHt^Tkm(*6zj6u!yLtoq_Z=mag z113*Xr8yH!1-k^rWojjRyqSn_ohrdAk^rLzYQHwL-#09;R)KCnCPCoVx?G6-r~U)2 zh|_${gRu0dhBpBk3;#Ss>=E2Bgr$wfq46t-?D3KStcX_i8?{5ry}>x z>dH2hy!k@V_3xuX8%;c#?Y67IzoQmEauuiy3&067FBcnqT?_5I1A-tLaK5rF4jtIm z1SJ+W{?HzOChX}A% z)F%+|skovM!Ss07;pzN0ZJxmI_C8po~K{YMlpC~}W6)^~56xEeDt?ZK8H|Xp}=fw4h zcivm#?76}Uxm@d`Wls?Kf}=iLbG>WZBbf+A;e6H?s~>Ye@2GnR`idz(tr_#M=CBh~ zpRFxz`x+=bT}^aa7%j2`i{yePY;KoBVNjnP8~5NSK3xSF>WZGNFHG(MAml!a!J<{T zfZLk^lXhk4mUt4Bs`mvae3L=`Qu>^A=lW!W%I9l@l~YBX9Ze}&9i3skG{7f)2aVf? z^LUxs>;5iN^IQP(NhGXx65u4+Fmc?a?Fl2=xr~y0|hEiS`>%gGmJjT+r%HadU$dtWttYu zKieRz4*RxufRD9qn3sgc3E9iloSoe;Idg?rkZD|BQ~ zMCve#Ct!wnP)rD=_^0tcdAl=1(RY{MAHrW=AwYC;E8^V z6?_8&oXiv@X#}&_O~#KUOI-Lv?|+(_Qq_)Fqfv77T$!fZBCk>S*L8yz&7AeFApIU{ z>SdkT2~UD`CjL5EHA?HYtULi3Y#=-S{AyTK&t!4;4Et}bD(+%Xm|aJ6v9-@_p-N7V zY=_8BoOJH0_`jB$qys;?OB(7D^*GCuKP-#Ih-GvVrWDszW^}iDBZQ3}(Uo9!rs;1> zTvCWx8}b`bRoU-*QtC@33P1I{XAibH9mYmtOV0C`A+dOrhNk@CVE<`D$24> zLk*cxmD^LjPpXLh{tBNc#h1=~jt}Z@0G~h;!!Ny*4ibjFRw*-wEG>;ie)hTdze6sb zzrEu}Zt?^AQ?rj5{d}d;V&#A{9E%xAyo))*q6u- zf!#vL&qD4p>}>u4%}B|fV6#6v2SLY~@Fy@b=vy1U}@)48~Y)5r2`yNPjn zP3tVijd2Q#U92P!JbaKW2%4B2(>HRc% zO(7O-H)a(TAL(|M{4&}bf>moeQ78=G0(KhPKQf(T3rkcIRDV?M^KjOO^o`Kg3E02m zX!Rz^YtGg_b~*LlWTue$cY(BGdl0I&$B+dy+EgOb+U-7*^kB7-`YXEvc6w{SM90Cq zq3r6*m_=+H4yO|;C;}T|)l^P>DYi;K`#Vd9S)goYLUD@}I==yMb*b1RtDJN#akNpn zRlK;z1o#b{ot97vX1W;fASTAJkSiFf0d?k0xq|pP>qz>2`T;(q=P%U35m8uK*3<6{(0k=k0cjb@H<{cEgO9 zslpk;F?xAQf)y>eBeB#{bo#{Q( zH?D&FPgxPvaPhJclZvhc@h#TWkh~yC*rSMnuH{-+(hr1_@-}W#^C&D=)%@FVD;V13 zM}`K2`$CIo_df0Yh^-$|pFKf~KXNPX}P`vt>nw= zcU1ZK%_F3NrzRhh9X1ZKg;Nq$Iq3}&6g6eE+5rQxed@7(&iQLp%>UpA`xgk_e8&zY zwdgrA0hCfpxAXQv#xX1jYZ%ZD&;_4vG2d5J7I#Oseni&R1i#e7mE7s=?5APb#>u6} z^Adhk^4Eaxc8Tiv9jL#d`=c3Y8R}?X{U(C)Ro}-vY}QL5=puQa)s-!AMx69AMHaqK zgQq)(KYfX!I3w+9V8yNRk|}kxH-?GRo7E!jh$j68)QE4$4J?i89!K#wpz>vK%4l6P zYWdNV)vbI3`i&~Wo&hP;yQ=GX3=0_NA861%UxK?dU-*;lAH=1hdc2nf-3=X)XKQXK zn6un$e7S!}Sml(k$5Ri9Ft$o|L!{Ps7S&qX-)m8u!@2k;7N`3tz5%S7>ES%Ql_-u9 zEm=h(1n_fz2YveF{i&K=W(}5 z)u%AqZ+YK<%gT4&DcFj9JPOYF+JvajQq?n@Ugy4SuQgbnPsf7Rwv)+MB~@yYr{BV- z*#b(vvPs{7I@wf~sBDX#0n1++?^4W9X*$mzaTv`^0x(0sftY_eRpY(^33>s49E8+% z{qZSgPUiz2PXTJ#d&Syg{4te@r?`1*XqH=_BV%h?L=gLNp>a=k79<~Mo1IGgfz3dt z?N?1Tk}o%M)ZiAbn$$towF;($h&rfLw{HN&!KH9a+$T!t`j&Az$>XGhkJ7#*F@X>< z$uoO^f5ML>=BuOnr$NFyLJgds124>v%OA0EwuCleFiN}o-vBr6=aU#M5EE--^PGd0 z;_mU&a{{6NdY?L>9dMbrw2FLz{VJpS)=tv(ir^2T$&=*kzVIdd^z`Y=qBu}IJwr=T z*YtL68jmP8XJGqC;q&a}sb+Y`zRc-J@SNr26p~N9iLlsTh!xSg?roxb4Ly)i8#c+(~tOAA;p_) zEhzDC{sRY|YqrrPd{gZ!VqWtUzuI_!D#RJ%#+O^cC39SY6O(JqCxg;+g?_5h1X1PI}>t?IJ?+hCh)pgC8_G|;2i@k5jHvwujUyU0Co3w62UXWXY@0IdzHIk8tz zck02}Z|JV*T+fq z;er3E&yyaMZLP!b({;VtvJ9hJeo}h_NZic-pW!n9PAk04L%CGSR}43TtCg}QsrkaUD@Ukm|xM}S3%%fV4?~Ea^o!n@X*tNrYBN1$67TEBM z$rb#)xO+UdqR8r2Ov2l*XUn&p`dp)e!=5&e(bRGI8^A?hIBkxZkn7M~s~`lsk|OeN zUVEC(qp*r0um8AG6IMPok99p46X-SR9k1sgV)wsR08Q69_m0;xJ9PD6;&I~srs4TX z{lNLI^&+_G@R5AJNw-7*x1zINp}le-19hI_<7~>O(KAza|Cxt24lQb z`)L%bj&{=Z6JM~C_p0{28Ks)k0e5kJX*l4EK#N+B(yn}XxD)Eaca5ny__^i>$q6TL zldO)v`S>6~Dc5OW|J+FOB-OnIXdu>eAd~sCGsp&5*vdj0t;R3FHDW=m{vU3Xy#ZE+ zfRp*MOvk#Mh=5)uS@USSyGoKgIyOuRDj5SUJv(LSesp>%BQaRLQLK&Q!puHl^Ae8? zo}i8A0&;V4lf?(3G(Ne+92pEWizF(Cr#oF&^QISXSEb0rRmsIfy#UScyhoFVA^W!y z*nSAi(R!o>lOA>^)=d0SP})O2f@9&zg&B;{zDDjmY3Q=rE@qtPH$a!z*tcKhqw=7L zKeUqDM&7R~%qtdHDOI#Nnefv>&oqpJr#>%*dB|aIS)#5PNJBsoDU3 zxs+ZfV`%$}T^eK98@|p)vq09^z2Z1m7B_rj1_y~R506rXn%q``Xe}@^d4w<`a48gd zPMCHrrYUo24S0z#)nk&9{RO=X{v$-$t(r2Qi&e3pYu+pgt)CdBd@F4X5l1&UXPd!B z*j2UrvPZm)@^|flzB%;cV|1X=Q&oa4K{)zjAw*X4UWQJVMceH#i?p~_(i}Zj3zC1G z?>SOE++>T5k0DC4#u;C6B6G)r zvmiT@ULtsv08CoUgQL)^)VIQJHYT8A46em9!;GKhu)k;;&bC3Mwk1f~KRgH9YFz&~vTkUcoQyG*v^8#QY5L~PHZ~F#=h$BC z)=+|uQMzMp@V>6~2K~@mZsJ=>d#oHJqOLgg>fw|#>s47r538=cu3O8HrluG{?n@qg zcJw?iC$AW$7+q_z-r0wErF5ya1O9Goe>M%V&e+Q=q0T^;!T?`RXiQM!of8ZJS36VM82kjL;Cm7a?O3*YmvG;P zT(xy8{vU2#Gp^K&3HnK1Rn~=v$`Pu{v_u1prWG-}#n4YAC>OJami0)#L4DpDD;!#= zkA}t$n3y8FDik-m+^wB_2GQxB%uspz*u6eJeG>9jQhhIV1^mFdXj|D8{J={GseTuc zoJ<5MtX?XjUsHXu>470lnfsg9pWLoSB1EFZs|s}3E$S zycV^b%x=WVG5FZgYexAePp@XdfakN+PucdIw$&2Y6KbipbNsGVOOx*&{RR}teihVm z7Ky=1u?rxL>fu58L!#vs+|_OZ@oWj2c?U%QefUZ&qdvX!G+f@`>c5C}y!4LUzd0Hh zDg9(PYSgm|z$X^p9%v)rBRsw@x-=D{3bi`cFe$DwGxIr>jCtTj3u|0xUul6KKaA@O zy@jXgEDAG^mthZ!Du0c+)pd#T->df~5*I+^l|2A18kx|!n?*R=)ZcL=ar;nAoQ2P`D%eUMiWb@K#T7S_MU`N1(YU#YQ58nnMwMwVo?; z*6e3}x-qE#b1a~E7mfHh8{2?(0BKyBEJzogdi)B%a^qq18*2DzIS-{dTz^c>He~J* z(WSn{J3H(ZLdset&%VnEb>C?2H6_Hs0KdCFs$U`3)}Z7DkH}xXzLd&U0_O~drI+1A zc#j{Vvg~H6*s}mlCs`}ELuMhG2=i0Rs}d&6Z3w~Ie}-67c^f}XId|&}6}&P}03OAI zjL;KcpvcO^r$*0f+)kY_G8Hdt)qSMqO}-}7#zP)HXDdmb`OD*0Dowc2zMQ@wZR4mB za+(YJL04zzaGg_T$P@OUujaBiWh^E#Pd9N1CNSg38P~F)@WB5Rh`N=3wI!l6byToC zW=)aGQGcJs0zoPbSO-cZiQrx0g!T(hXx zf3XPRbvesd#vitSr&}~-fRO(YZT84WMiOGltY&3h?##45b{JN_4jmXS&~WhHuKx{a zq+^=GS9ufKmN8?PE1CKRJYNNqkkW=>o~C)Hne$mBS(6Cd7n5m~vV~E8uq)q`rnr?n zvAPwHvODq4Ky6cwBQMrTR*05bt|LtZC%E%(t^=pf^+wEF=NY#wH1t!C1fp6yh20Fl z0WwxGi{Aivqaa@oU|lCzqcA>1*o&$Hf$W}I%^C53#B$mhDg1NUrLuTp|Nex0y}a}2 z+McpZiH@@VbBNlKB)YJxo_OjzbjZCa4oH#s+di&xNh@hh-EfU=y^Q1oU1mFuh$_Pb z$MXX`5vJF>_y&XBU9EabX+3oZC1Hqn*WTvtY(RJJ`WsN&5^99DPFkhvj~KKkGz`KW zRM?hfD8L~|oC65sk7YI`j}+0^TbZv_!+z#jyRZ=6PM{wX>t-7Kju#$yKhE zLrgza2GCvc#l>p!*7DbuZNyYlztq!6UqZPkavM6Zb(^@8!3@9)ZyNBS^7rds$B`fG z=}-|wsAF7FIF7d=7cpulthvfuCoL1r?L;f1>m{2Yf4x~N>(@%zo~QII7ailVT*VII zH0+HZAT?q5L$@axZi5L zc(TugU-~7O&E(y)JkD>#vaanHlp~KFzJmb2S(%@KSGeWWvz!QSagR8dda}LLKyRdq zVJQ|A4$A{5ZKO7c5-Sr(<66IA5Ooa9yJ5)rXj;drVRx49oJf-HEEAUEe^xVmT!KVw zz5420Ye!km7i8^Mn*r{U6o;A3Vh)UXxl3L(W9OT^`k!=+Vsis(zUTN{85M~`(TVHf zCDgcIjY4XVkaI4zD*+VoDbDwOEpQsUOq7rT=r0Z0K?i2Ld+`D2glMuJH_62aiXm zkE&Wc!V`hzb0s_V(#|yv91;p7@{6j^QLdNhJ9kMJiN63o!F29R3g*tj>;K{V+@AK=7e#1;+H-6QIN)w60aZ735@fY>KyrINMNjTIQd4VaZ*h}^MHS6iL^qZLcdrluxS%^{7_N4ARR_Kj9gtgn&bZ3Hw$LqS$>s*=7nkJI^;h>36bfu+D+);gt9sVzL#>0|*M zf>`qIB=t|LW%0GJYbbyp^dfY_poe!htGExP0;WWY%syDZQvATj3lT05hBHZrqy1krM>`UkrWYD~d3O*u~l}gw&g?E`OJ&C{q zx(u+PNW5^NJ5a7d;XPIEif#EQ$aCwBJPl=1*t41+ ze>7DKD0XUHuM-rb#5PC(i|mqDEXz(r{ z?R-gDKA4x3XkE>^J`N42)wK9^48nje5#TQwtU7GM*EOIA*^p`aZ>`QUxvua=AjP>c zXDR%_7+-x^6n(7dyHz0j2GA_e-ttQ~j#h6)qudqSoh}tr-WyLSMp@$DmLU^|xLLve ziizVkIIr3=Yk>mxz%31zjbsbjl&gw*>c_jU;VHP==JO9k?s;E2|CzHC4d$e|g!qrw z46jm{h>ROJ?s3cWK1}ya!YqWO?%BbaI4sRGK8ms(H`N1NJgzeF$bs@_cx1Gu8DDy= zdZ?>srk=8B#b)fpYt8Ue3ENaBfhD3ZFkrqYhImnMIh7i2>G0s^jV*XN33AZCR7p|m zk(6Zhz04%al)u*dN$AC1#Igi8aj1Lf%mM{IwO_!Amnq^dNIz8*Ej3$jPOQ#US9;RX zg+N?WWc}Q)s8ZId=_*wDa-`OpfQ89E`cM9}5~MeZQ&0TDY)*w^aM0aSA=6KU!^5RE z4PJ&$ZX)6?JEv40?Gq1`DrN2c>=E90=I@i$R>-J`*BLu#)&joVJAupw@ZQv6-Kmk!12H2c-p znyK_HrWnP4E%`|fC!!?Q1y{s~&Ll5Vk8%^Z4kMOhnt=gDx(EJ!#@j+&MK8 zx|F~eG5N{^Zmq(|hF`^P7)nb_mA0%cC+J$ht_LeYI>V^Tj&7FPCRK}&pZg(n59z1u zv1?1W0sjap9w1bcaL|h9|10^6Wab9|0s`Y^*) zhrSHQgtSBVILU(~>NA)Yz@mJhIfsY=+fXjGjs6?J?K#T(a0CccJ>pfKAN2uSrD0Fl!{ww9SH zqB_z|;SXbH8h1!!5HSzM7((s)%pEII934yG%*-;{oASC$OBRL8-)8(uk(O32x^jz~mHDF3CG#0;tzX7``AGph&?fge=(;9=@ZVYQ({|twJV|zJf(3rD(dQckXdZ9aM0kdIFP~12O}a_eK)|ZU z1{LIPk-|~6SenClV{2KQ*_yB>`OCL8i|w(z4B2i};DPrDV`Nr8=PD-$$j_5_s-j1c&o=Z?*#PIk2GGH=E^QAG^qq>o@%mbb9V?-Q;0 zpYq@Tvu_;#+d|g90Wdd~aA)ow0u+M?mFt@@*9lA%8NZCZ!E*$jgi>rT-XlFnLgw#A z-n7j1Jxq(Vfh|#k9X@(;;QDeFCmMel+ReuxEitE_L)skG|Hui2I3!w9$(f@G`97=k zPDSntI$wwR2siJ+K8!w^KN;@HIMhZf4~L74uEaV7Z_B#Y&VXVxm)BgsVE*X>Sx7%( z`jVw{UOkBX-E4?r9fOyOiw^W$RzV}a1ab?VRdxXyp8Ufw8|p|MUh1kRpJgY!agv?w zT)&A`ES(5Vr&(K9-_K^P*RZ2wF*IjEp8`m$NAtyWfb))EX)9mHf^z|hn^PQXqM*U< zjU;SYs^r|rVu-+xinh69Mphl&B4YSfME7J*XA+aWSidqcfob5y;obqC=KQ$X@2DB>?@k0I}g{3y?(CbnQ1;J{K(sHovN;BA!&>IiSb#oVW>w& zAE>NUA=VD&@vLDu9oxpQd>Hv87XyFIV|At67}GT#{kgDO*p$i28S@D`kY}rd3=DjU z&3_Mv&KMc3b(Du%R79|fym}cO3@N$aY&fB*Afp(aX_WAzH{={ynMyu@e`Y?`(HrL1 zniEk<5izBmi);=QI+A6$jMGKeS+$WungB^tn$;TEB8Lxd&-2kIs)V0~p|HZqX;E2zqz*ZNHj6?<)$xP@10a&6SR)7ZlBXNiOjb$MU; z_UmKw4+qIen4Y@HTg>4J3Qi(azuVrWZC;g(0y2d{W<9GPe)!s+y*$)`NO+(+M%?!| zY~nn%Qzs3XdIo%v)aoz^mr5a)rd%o+n|~x@h>ezEPO0~wiZ@Gkz;FC{Fdb$#nX5Tf z6~!3)%|;u|RU|}5W}>bN7?Mn5v~upqi>Fy%9lb@jDH*YcxMl3z)a`d8>~MLZiqJPV z+7f(pwe_vHsdkUBftre;0*tju*&!xuhCzHnJQmwq7fJnD2%rD`f)egZK;6A-&qs?- zM(t;b+me)C%cjGkr2k=?DmSdp{jXbIc=CbbQp>=WuDQ2&Q(p5<`EPMLBrXKYTplp^y z7@fk0t2T(X+|&2RGEv;*3EKJ*y?$y3+o#^>RP+r%^~aj_(c%IEeWD1G({ba+DcY{p zg+ay?Xit_4nofACu(2`kn&b8HDTnQO+)vXWNXCZ#HXUI5bQ30 z=%)*3WsaT-?Idv;GOsM-Y>6GQGD`1XvrQpd-KRhISr@x`w)mIZn75c+^aENYuIuPE zHD@exzpE9OX6qqw`fj}~&+Zu6f40i(gXZlDWTYAN>+9H1fWy93_9&9`JRXw4Qgh^1 zm%k>kUD7h8Hj7=3EC$RDaA#STOM1B+(G%x$f6%uQScrE41# z(Kv}LdL+cnOu^0fI!(;til*h_>`4KfkT-QP@&F$W7QI%GP5U6rt z-#G<3{zP^QHB+21ZJklnE}(Qk$C&)~%M6m!c&It-F|FUqPdt-1gHOSGPijL0wNvBP z;4cD$=%qR`V*kr;%iZzXi@+jP1zJqoWRy=9n+nosWqO=Us{Fi1i#3&(Vtd6&voh7A z^9szIz1%;UHT`Gv*VtW_BkEyTKz2AEfacxvOX~e%0S@DrwczfEbC_jhTEBqN3xocq(2Nu z^FGXKLCyhIw#P>0X5IEgN{XLLAppR><9#5?3Q?_~({;8YZ|8}75hkyM>BmB3X zx)u^Xn08|57Y(UHU#Xg9l3zVo8g1f#ZKaXUEnrmj3+(by=)%$==Atr%bUNxEdZdR4t8IMlEdgjVT7V@hiYrg!h>T)>=n(F3z;fRISKyUpy|&E{#4TFCTwbFzMOLd z-F;TwDjDc0nInD@WcC(8k11Px-vrsRWF7exYQ`;>{mtw-3{#bZ&KtuFTffz%3KvS5 z`89bRBZ8f~FI>kO!*{-U*Bp{RWcUinns;^%; zgaZ=Q6a@R61y&tc)$Cr#DW!v-nR%2}Z=xhjVlyt(Tq{N6LEUsz;vYQa)besJDD?JX z0@5x@RN-iCTfv#+&?1FpM3{P*9%h8g6T5afC&N*GLn624F-p!%Nu-_r?-RHW`NeUV zgF{#4TP#WnRg8_YK z2Q7hX5+ay^-8QDu+vK30z&|#xC$_XW7yXkzljQFsXK!1?xH-!kH3`&5%a(06cojji ztCSMPzqjSxg@}fXt(kjPi$W%l!)z9|xVhNHJ+y-=^M@L(*@Ac1IU!D+YgeW#O6N8+ z1MBn%@b7viF;4pATr6e}ML5V>lcS9nL#}p(9RVLS)()mf@z8X$qj~LG5)w*wBhQLf zUZmzQbS_GUM=buMAR=*uyMG?ZDMtEYgFu*NTD$%YLk%e#*Id|X4hK&`_V2{|nII_bxesDGYz z%|bZFKFoT846{K;aAJ0q5w?nzL0#70sk@^$Hceg&%rv_(A?;dyp5clPHAnP4jT!un zY(~02`dfNtE_Ezg6kRBfGPN9GPykw_)EGBTxs5U=t^}pDu_Qs|Nhb=as?a)Hq5nxR zcGG&fX^p9qjzgu|U1D4oI1WK)41l{IX4gMgI*3xZ+W4(b^yT{JVC64z(n_;Le-(3b zJ=c~5BFackOVeTBIeTxpxAX z2C?3f2*9-h2U7DVJf&r0cPIt@L|b($8L>vu4pJoxP;+bAJx><*q1+Jap-^;u!Nrn5 zUCwNn23(us3qP=Cz8tsk;E2e|3qga#NiyGyRHcQE9h`(rui;mFc}|?N?d%nG5FDv~ zW{{p6M2P}JG#yStR*l@MTfYCH$P^vkucH+e6eMW95BGpPMYA<1+9)g%TMj^TQb5cf%p?5CgEVG2WGJUk# z)w4AY{Z=P|zQ(&M2eCx3ZNJ-0rL&~mQ1htr3kMT;7CLtPeeXj>@Bpj~CnlCT0vDKP2fi}yKGrktU0K#=m;Slixz zTa{N%pVQ{KC|Uy#`7xf%C z83MyHhJ`Q-#(bQ`vXM(Ov@2ny`B*9aPXV9rs;Lu!m3yxK!*d%3I*ran6C5X3aFoAe z^L-orLC*x%6aD&n=H9J!3|eY!GBm1I*nvJPWaZV-&%<;Tkw+Frf zAzYVf;T)4jVoeQW_G(Jqo`*;&=K3hi0zt@ri&?IjnKPb4JWXYCu8mTO^qvOd@X^zM zyRC5`&sb~(h%9{sBH)K`+%G9YAmWV^l|);0=SB8%AoM%iTIQ~zhf$h8+BETo)nDWM zTwmH{HCz57W_xTsgq@ROC6ONXb2RBLHs|2aY@TT~{P+7V@F^oMAHrMiQ+SuUCw9?s zB@OSIzw~N(Z}VSk-jT2EJ+j(M*kpc+eVH>BIGHI;jdio9Lon}O3OEFV_m%MW{-|*I zclBZXqfoDuxDa||sp=Vi|4Q$)^fM}RlvS6Xx%N@7X+IaQGpi%^awaglW7i)f)LXY| zbp%IEPyUmAHy#`&VaVG+wcF9GTGkiI91pWaXGPKUa1HdYlfbQOiOn>a4|xxE{0(@O zb6a2cW7=QiL`Vsx7D87t3em;8$y_rNu%<2zRW-gA@3fCp@6s7yf?;Z~&y(`SXZ!DN zS?%|R_6FrGJr+aRuh?cQ3(c)0iqpdz^K9b96T-Vg)3*aQIY&9VEq1T3?D0)ZwRlMQ&Rtp<4~4>& zHVvISbf6xm!wWEYAW3dxtW31?xBgaDx#LuQip?#tGYIdDtc}Em9RAA7V-#i>?7|Es;3IAyOl?`?NaHh` zRdDrXrB!wElX=#_f7jm&hG}j^-7Mn|(2T&3OU1DvSb5~NCx!spl(e8r9qjng@NzJk zJ55&Wbdb>I4Eqz{D|&U^4WADz*W0HoH3ay^0IO^S!b>tmDOd@Jf9LjwXfoAZJu+%o z^mg|4%CHj^JCDwJ7$?fAoVoP&sSQ{T-mE`!q19Y_Z?5Xe5Njz*@phn0dpEdqZBUop z{&|Z-J@fu&D=E`6p{cbzOw?I<>^~pRf4H|lrEh#sgIF|u>iK!ueGK0{-9TjFd9BX% z3md(u3ZO*0g48wTzA@*gY53ZBp}h~m$<*mqh|IMF;#lHXk6>aVq*O+~C`&&`n#pOU zusinF@u@hyt+37bOT7j} z1vM^s8j}0CEP3Q+X-8Yef0B@>9C7r-k(Jz(@0Ih>5uwfevUv6-GFd5+*~U8yEf_ql zDr6IP*FCn{o?3Barku}Uw?B%J+hi@84qr`qNm%uy3xR|lXgo7l$$-9ye#IiZVW}_I zu6V04^8HnYa?Tg9_!q}Qy6kj>RAoh%9w)BhmFGF8Ikf#t3~g19g#Dy*bj=N#j$RaC zZ5ma9DQ7dc78>Cwm$?>XilC6Il4FNOZy_-5e7%Nhmw|a}Yi>0jj{o$P_h+oC@4|;~ zh4sMQipGxu&Q2No;#SJ^gFf>+3ct8cZ>G6ZhB2;^!t`kLGUyV2{Jl>h43CPN$IF_I zGJgJHX}Y&~4=m*+2Zzt9HTzOC4I#ZC*3-Fe0)h`US~H9TkgWd?Myeu;Nh;^!tAI_F zwFyhtA({Tl#gtPAHG!dsGX;rf9E7Sn-Q7n2@fIl|@?c(>Y8&~M?I@bsL|E-naPx2i z2pLd~A^|Tt8UeQ7*d2Ja`yK2>A^I3WnxRQ$-`$5F678M>F_Ls=N2uaO`5`I5pCm`K z^La4pll_St)bU%YII-{bx6-cKId{n#1j8i_!XL!JyExHPb^g^HP7G7mzq5Mn3L~pS zf~iO2`%0!z|D}b4jVq#*E_g9ycH%WuuDB%Kh1 z1QvJpAeZH#zt~Al9ndHR*!A7b)h2_f_IyE1$r4eN*ahVZ?088 zfu&t*>Q0=^Q7kQ2o2z4VAFD?MjxFnZ)!rl|Cuv>GOhpwpG_9R6@syUuUE5Z*9)0WQ z8dfhwI!Ojgl!VONL$2-f6e1KNLxHzRtzum31pxaS-wCcJb zUCRqCqowz9z&&pxida|K2~ZQ)HRl({NNYtD?81BQ3Q-lZ-1%Y6rmi)DFL#k zc6P`F?>?RJOmx^ABv&ayZzgrZ)5 zqF<1%RKdo|nI0xpca;@{y*8QYV3K%h-P=tuZ5_wc5?fx7;(PvGfKdyXqmo0k z9IuO8C^K{4FI+MnM$x0Ulv`i{AI1!h7mq8iIhf;wBSjLtNHjhWyJI*0n4-Ph+z@>q z-Pe#h$xnn?_C~ul(9cHx$-OlBB4Q|jlR&uUH_AgMLaeh@lsVfEksKEy;3vV>7!nfr zx!WzZ9I2KDUiX;v0&^mA{tYM~_t4iGx;>^mW#t}tD)x6f;hm1{dVeEOB#8AaCmnXR zy1&b!>W1RQ69OgVxt7=}y&xFau&#pA|Nd9fZg7SGJ-JqwP*kfnWF+t@`c<&-FlGZ| z!XK>~=!A=1`lty?%Y<~)fc&JtxY890h;NDaZNzTL`kL&8KVUA^X`Y%d#CB&`wR2EZ zaFactQ0gS*l0f#QpuWh>eY-d7U=L}_cp-ieyX%zns0BK&jF4mV&{eh%!=CvLKiKRY zbw!E&WKJqtJ89vDNnM-b56+G3-ksi-BtpWxBjTcT6#u6T*0NXV4nS2g@JU1W;SFQY z>$fjj!uv&j*n23o#e?@OQ~GYSZ#*)_ zgimkFUU)`@LsjWgquCTrR88T=j;8W^s8TQTt6r4ejl^bEaCRqCX1dVC@`j60@yeJ@7B3j5ZW%A zam=#Zx=sma5;r+H$;$(iy(~+)EvAa<&eHTuj;^viPQa14C)8{@)|768gIWOVdrxPt z_}_-Ky%(`=F1ThFR~Fh^qL|MlF*hbK4sdrpYs|l+Jj*X`yeQES{I^WIHZVkQoY7oW z+J_tJdPG`It;B7rX-xUJvt2qnNF>8#0ue!Bw?atwRy2Mu(_Zc?m`dpvvHh7M9ovKI z7<_R^T`6+V-Dw`};}a>+r&!B^#X;pAMnzY&y)Fo?%#UXSyqIP$7$@(qDb1_vH!iI& z6zdnkcMC3{(x^VTB#Kq9>fBEvh{nCG7#IX-*6Kxw4uD}uA1cS2vAqmJ2_w)Sq$R93 z8b*mdu(7xHTmJwMTq{a(j!}2I(MjLzl5y}EuOq`O%uy~U znp_==$Xf^JOk_`L?v2gO&B%-TuJ+;NRri3zfkK;{R+|afn@t|F?Z#~!@K&OidcCcz zvfH>o(hRsAa5L|(4xL*!kz2C?Zb%Y1@nhkRw9||&i^a(!NZDI{ zvC4_c5;fazI%^K3*4Qb&)!JLd#iQMTihGbS52^K|VV=%wVz%&dc$04 zaNC(7!JKm-&p}zz?`2?BT(3Xcz@pnyYiO9srd(sVWwtI!z!_udN-nP?njn!kc^kI; z<2<`{8R_z-8Y4WBO>cnR;^PEWUyLr_Pchp-+^>_~0sEk18~gYAQgy{Sc7}6lY!^{< zNs2^6kKz>^GPFz>9Q&zcH&1X~i*MI+xinR*rQ>45EIL+}rlVv55eBZ%kzSeaKR|*s$7*Kb>^rbTyq#W-1^`%-z6j|%m(%jey7AV}Si2wz5 z&yhQSBT02W&^T_<<+hqzn}lA zp@zi~ROf$p-&Ky!;k3H8nQxsgXN8p$nqF{6DJN|2Kwt4+3~Oa$z0+=B?!$6CkCDDS zm(Sz2)MpLJqFL%5(`711>^V^c{ZGTEpQSZ5KTWA3^};fHOt|vF0+oW^ID!5Z0=|yj zrE$;peQJAcXF|L&+NHJ1-pPP7o>8`Xd&cxt&8(>gM#8yFxymxo^fA|wboSAp@En@@ zB?2;-0GcAk-bqt0*RC%WMbT~n{QTUp+>b;!t-lHq7oOpKfc!xWPbtPhp z{hVZH-(2iO_I>kS&2Q}qAx1$aPJH@-o&3c=kBGP3FCis26{NT|k`oqQV0qZ&^L3~v zNZSos++L*Z;(X)ZLtI>ii#rf2K|(_Elv+2rj5W6^o`*EDR>9?V@bseLx<(EQ0g>lQ z=l-#Rw=f=bdh2V3C2L+$nWOHHG;Nir9zf&ma@O%UU{IPC>;aIbj-ms&?th_3XYB`x zBIf&g8}IRz0Q_swmmg^FUTFOYWXEY*@`fax3Q`BIC5pW#bl78A+3?ky3m5pJZ7`2) zPoLpUCqv9>MvvpvVgUJ{!mKjKmfpU9*W>x4qUrP04yRPxCLYTfAHY8fxgCKuNVFkf zMIK5A-Ctg@_&AG~0n)epTXx=%IsX7e*OcuivWfXw7rg|ja=Yiu=DkwP4x4yC^m#wk zHRD@TGfyyS3$T^<_j4L=8*KC6pBe#${AB|J5t)3WtqfffNcYFp}$d!QjH!vS6Q@V1O40DYR_^y2#O<|V9 zRQA|oP`&YwkQVa*dSsdoKJ9!ez+`=@tlHY#UCA_%hJNY5le-zgz&ri*Z_qe}4XKCwHo zmej^0NLR^6Fw3`@Ame_NX;&X|BPZ-f2Ndd-$^>a_a4-uYC-I^W9P0!6xGfXk$&>QQ z$K6Tpt#OkXB~*2wKx`a}8=?~Of_KS#jjp(#Qn+ahj1{Rc69_rnyM%r7-h1UTgtY7uAlH8a|UMysm@VWRPy>Ipxog z*mR|AgG)#}G~U?nSK>wCd+?`Ao$c6ii5(dOu-}zQURJ>CgZ}Eb6Y(vcyKp9s(Aykg zv%YHa+Ba->Jb%F2e+TM3J7cEWS+s1^SxJ_elK^Z~a*n?J>zcitv{3?yjQY^2#)|x! zIo5kP;*q24mzGy) zDyzkHZh2#1eL*CQ9QCSwtfzbeC*k8GFaj4~5k4%ynm5K1=hR@wy0!zCoWn>a$dSKDE_xAC! zsFVb4z0|xflJbvA8#zs$mBm)rOK7j69wGZDDlotX+#fIoeigJlC#|^V_A;Y5Jj?}k zrj;;x2r7LjDQ+Wy9ZO|MCnWTuEXVARDn41xuJ}&&2-KELvgh0mPT8&W?iIVWyS2Z# zk~NQ;I8skCoP&e54l`D{H6eMWN0{(Kwh0&~e12bzDZSKglF==EJ=!rUalZav3L?my z)|q8gW61Zs8g%hr*hZewjJ%DO49Bj-kTIMLc>zec$BlS`-WbKb>54`CLuw6vLa9c3$T*F=xje7MO zQplGQ1R2geM{0Ay4aD3xufCC!1EdFFdk0 zJFX8Y>z%gACWmyOrsjjzr0Yffl6C&(g_ z+Q%`KbC3_6OjIWwpfi-KdSfOE2JKmlDcEBspt`nXezFxlU{oE{G2RHJTlpg8&SOv; zKgy`!zCb%R7d%T0m}wA_GvPVMx`dKMb}QDIX;X0WU6s}BwTUgc4h$}fCVaZ>irzE8 z!&tu}4kl|ZSk0n`gh&rB?E~ZxMtWn)p>X*`u6@p-`V^3zu4-zBW1-v=@DCBMOWggV zUUU5upNH4A`IkifX0l16T`Zo~6By@*9X;IH+tR%cbmyFr(zCPPwx|7{YKKtJ{f>D#?yQK7vUg5-Rl{}4yR{>G z4{E)gnZC*RRTA9uM6KjTYV|3^Y<&T$1(E*%fvG)7}5DBMCAt{vIYSB4P0W;^wbN>5E$#7^GLYb(%u+giq_o{ zCv3Ya<0N@~^|xnCoM7a|D$k6i+J*0^_jfMVliOjiWCA4sij<=&lPuy*5u8B@H4{VYM z&_iTMv3O9Wc(rpXgD@tE6S08qK}B}U`twM#z{rK^dWV|y?d3Z#V}5=Y^h zsYxt`HH-yNzF}}r#MCBCjAoU1aL~`H^jo6i{Zbo&J*A8m(u0ucGh}?%l%J@ioJXx( zYg(h~+K4k=Nwkj7k;*fGGnPA()S6WJ8-rL3t}sniV@4dLc}=nRX1qweCC1i#MJ<)R z>RYUXxtcQT;!-oqk&-&^pM_g{VeLy#;_WuyOVRX83u)w+y}Z1J-@7G3t`GtSJV29= zt#h*)tO8{!MtO0}GJaJP+LIZZ9ETa9N}lJo6-}k1Xs=_A7K&siBd?WQcmqJ}>s~Ir zO~%cm6pS+wA1GENWO$VG06g+HBdt_zqOogWTb4-(<|jXOZuWXg+8HEeXL1L23G*Ot zj-NWL<0QBX39a&2c%y^364y;zo*LuftKK~Pi3f1FC;=sj2P5fO&^tNP^*HYDZ+Od3 z)2!`Pk35P4%0iL?D=^N$(tAg?vy;DsqRLRH=x_+d1wG}obIB}+ykXru`aDepR^b(t;(^uy=;&SYB~Zz+=KG3thgJBt|4I$eub=C*PU{-+u6{Yd;OS#^@1WP$EAaUa`fUBUJiQ@RwQ2br$NXVVKD923a*l|RqI0XW z2OBWXJpNyKuT+T}S%AefI(k|w1Ir|826yS7iJ;$t_(xTkyo+j+#yN8kL5{nPz5f7( z8Fji>lu~^%ep5WPdRN+{1;HV=_|?0B9R8uyqAiHza53w)_0jc?%lI{JrI{kQn7b0q z-xUP=g5rhKxGO=jj$2zFX;CQ!u`_4o=}rC4n<2w9o-L4{B~IB;F?L*!Dk2dPa#=h+ zm2FNCv$l^3CBvxw)^2aVt$f-gs0B)p2=el!ey$I}GOkP5t1SG5)B(%n2bC?<&Evt( zYmQ-@gYerGcKu0Z0xW2%s0KDrr|ttZGiXpD$#Wtf-N_$#saMB)D&*49OtZDQn@5DX zUh|pz#m|Tm?AbpY)H2veTq~*CuCJ%X3Su&knZ za0uwka4A-!p=xrwKX(z6uZ6nR>R9De%PuK&=3ZqW07Ns3BVH{hdM+v--=QMt2| zAoOJ*8nnKvCG0<|^$jjDZ6{VnCPX+O5OOirx4C(P{er@Td&LrR^6%y>j2 z5*Q;k>g-o11n+^Jg$Z+Sj|g0;>qI^0U)l8Ys9N})f>4)uS94&k8!Sd32#@%DstC__ zl@Vt>3G%6KwKrDfFm3B!CFBy0Qt2BJ)$@uQ zID5E@sL2DU&$^>)9X?3bM&b)7iwyD**&gndJ(>?L(BI&B!SuEi~+V^*`byYAy;Aro*A;*#nb6l{Q7BCCIn=O2NlPpj$q@n2gh z_sA*-)%4SxUqVRhhOCP!rM>MMb=zuM(NdnrQ;y}~j?q{GS0t%c9W#UF@f1DO9l$Zj z0CCo=H(I`$vU7>~zp@Fl5eZM2gfHD?16$wL< zDVWpsmis(AuD8QYoBOpN>TV-|`KcHPYO#T%|6wAh17od?&M@q!f+#HT}E9N|@ ztUN!(k}wOx97IQ<)1(LRqQ9b?VnI>CJVwOy#e>y7G+(@|^Rf&e#WS2anz~<@NTx589%TCm*QA}KD92TBi^oxPk2B+ z`ug0XTrYXD=W|yHdn@e}xe;)7tn1`NK%cnOW3rypOJO({T6}dq&>xAQPOj7vHf@P) z8r|>YjNJ(B#t$=XU4Hjmvar%L+dEl<{>#2x9A&(|bA!}PTF|uV^dPT<9wC!5YiD4Rz!1h5I?-jShV{Ok* zFJGN+4{K4~TwOe?42%*rD8mG>>z#nc zYR9N+wwAYxX>T7j#Cy82UkJb>*L~}h#n~TfNp_OK!MFVAd4?p2ox1dF^rny5mud~D zNp!pusiBtyg=o+XfWXTSK~p}DR@WrQsm;aha&#L$FSeR^?VdSQN~M(wu5bw*N5IgR z99N{+>g)iy1zT{*vG^R-R@Z|2TDRIR5!B-=8I4;Ik`$cv=JoTSF1QD^tGOAa;Z0IT z{vcx~?rNI)Og1k(=FYRE@qUwa7<*S8@9(Sld237UO4!|%x}G?g`1cve`1BtWT#6pf zdt!n)5-t+eB3Vf0W8LqLgC(hz-v;)?_-S}oRRg(LxrvRs4agz9>XPXSGTLR9dX#k0 za@Tb$7*-)@IPx_ z%Fs!|n)TQ?$V7b)2p=8~aR047az^Gx+pCd~7p^EdnTef*6Q0lvK zk>!J(%|j;+apFNLrvqzj(HO3pw4y_C7%y*?XAg@4h`ZS@J3_*0GLgc$i~DB z}qDjizFLV^Qjq#iUPQV_xq<1_c z$Cp5fI5UaeiQKlEIVazqTElRkXgDEPr-&rE=SIuh1Jn7nf%M#J4%mxen-jB`W5+(b?Q=3O>c*nAY$2M_Vwk)D1G z;x2G7ai!1w+9#sae1ZI1GdkEp;f2$K<|I+K%zrA4r?*abdC|~xE9XO8aJLtT&$Mu- z5XYZ3(`Fy+(2(%&6$C5&8rGS5XV@kF?MkC-mQK=qA?~Mj!`HTHGY@BzL9fS>+8(IC8%YP{M5`7l zX-Sb~yM6BMVuD*ORxy#M-hAM1gkzOaG6( zqDa40BlD^xY;l8K&9c)ti_>8f3u&!owY!En?dC#~#URSMo}iCPTNe&+JR=Lj8ZiF= z+0_0tY>UsgO3*^R4)qn}%D>vgon78hh;-f+hXOts(Ug0w5dKs`TJYFEv*G!$t6eJc1TRna5+8ZMfr-Dw~4sp6MS1OEUf*pL00Ka~cNDLFMS zbhQsMeq-+PvujtuM()_f)IT>r33DzsS@stQ0@(aBM$Qz)oqkw1Z*PEH`jN#Osz$Dh@`cLB8 zm-l3Skz1lRHwLTUB6(qk`b_L_Dn-A3UbF~IgIew~Dw3Rwr6d(4?bkPgQU|4cF78Ol zkdsg@;=YnZiAiE9TdeI|v8rJ?@R2{Y+#lb?M<$~xeW@uO{;GM5aRaxWDMiK9@-gum zTk6-d8(6k{7HReAS1Kf5n4pglUIYDN{DoIvygQuN!5`mJ^0)4JWAqhWWsr3SvEu{Ii42te!Agnz7HBoQp|PBiQhvO>2g7o}d<9iioF6)n zO8E1u`oG9ON`D2L_1>Y^+S}+ql}9eSe#^>k-{b(Q@VIa>iq+(EY!L3_g)c*kMl6)`r_P7Ad8rJ?5^8|$ zc>8;WX#7vBbvN^o>6%nft9s_5b>A4OHhFgr2NY`oa<|g_-M^iDIG zuPEBJIXhJ}$?lRI{{Tw0wa8of27kq0tHy13 zBXVQK;|+C2+Lgfgw>RUO)Ny{g7`tj$4el;L`-r4WN2c`~0!?4leMmXzHvmRXLr|&s0+#=}s{{REoHKbGFwf8{n#*qo(;AS5wks zWztSkF#3&D(-+$lsBlK5s&Nkp&BdHgZ66Hiox@KTcX7=#!T}~$Y5D#y^#Dztd{wTaMm4nOHJgX;#Y~ z-2vuf_mlOmQ9b?Cx^xy#A?_h!$fIq}bDv(d=+O^La$L2tV$*ycqq_YiE>lIC_TPrA zRzb_%nJ(FoD)7|Gdz})+}tm)yh1F6c?$xrTo62us6Bgk2Vcjo z_HP!wh~&L6JIwadcZkw1N#tSSbv{IGgSCEa-+?}qUR73QAweU{JwEeZtN#G(+`PDx zg?Q6Sc{68ke+1FTf#G=()y{hEBTuKslfIb8k%c}rqqX*Nu3qZeX1%Ox%M5l_Qk!dK zjawvy4$eVQlZQc&NZ5}fnr^knY}W+Dc_RJN?4v&{=kBMxX&36g%FVT$k|b}aTqA;W z%sHf7AD}-P;P*31U4fDDpR>$y^sY;+SlrYX8ap0^gIuF4CG-CP!FasmtxK5qMhtmn zGeAwpy6^-e+Jo+g{q<6jm?v7q8=dPODX(*Sc(wc%h2y>_{n>2~_TbOpMN1bOaXXRC zC6b>!BmMz^`>ML2a&)O<`(mZZf%+=nv2BBlIFb6BCIhBpKb31Q8F2zO8LfZ!KkubB z#}Vd(y=Lz^(4lmci$0%LycT5REnkzGNG({8FrWc{w6g4o@pYG5Durpb?|GYZ<@v~5yJqm6W17HJ$P24(;fag*UW zA1b9xJasLY{{W02Ad$-~Uwo*i?qfog%`kH5m3#>go%h(!WwMt~))^RY^G>(*FRGit~&FyzI@?oSNR`cyV2wcvU6f`Q-8}dwc%?gnK`+ z&ev?aO^Wu^Xff$}#hhkQZ57Bd%^&eEF%6OCFh)12^e^aNc1MXdD`xuZEeKT_ewxw`2_k%z=j2u3Mx2(}$tYkT-AnB~+%3a7HRP zA%ZDamI$)lSguVZj!{rs$vwLhBrj99($U;Q!enJ^kST literal 0 HcmV?d00001 diff --git a/html/img/postcard27.jpg b/html/img/postcard27.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6580d5ffd4a55b067b7db7a6f2d45b9a58d44d46 GIT binary patch literal 28887 zcmbTdcT`i~w=Wu0KvD3EfYOoPQA(&HDjlQ+5+D?no*=y=hzeLjlMbPm0BIm4bVN}) zp@bxKP^tt3X(C0q{LZ=Oy>rexf4qBl#@xvmdykd%S!=JkKA$<~J{>>(2KdKF&rlCQ zM+X4VoqYhOQvhwiMFs{&2KtMPjEt8qU1Yk#&V1$a?4 z7tYhuU$}5~cjVc1zy((NYl8Ck8Q3hIFbesxE4)lDx+wgh`ZEV;sTv2Mit%7!({58WtWM6Z`tj z+joeR)U@=B%&cr=aY-qvth@q^sj00a)HgIXHFtdZ+S%3J)7wWHB~z$l;}etL=NA^2 zmREkP(zdpDcK3eo|2a7P7cM%$`G1FXcK&x@{|y)G8Lo2|E}Xx>_%B>^=R(fxJnIE| zL3xI2_bnKo_^}Boyu8T%Ai1de^Ce+L&@T=r{}HC^B1+#yxBdm~-;n+P1NQ3w3fcby z?El3z3Al2e?rieTvjVgLzo8Pv^?+i81f4{2O4e7UvFo&UMWkhVgpL#!W1ut zEa&}BJ~6pY57O*cD*@Wr-)dMfW4ndF?i$d!-diIHzXgocUovjxrz`#(G@TMZ8lVTe zrlsVTjZ~2MaFxha=9Z}hSRX-pNB$rJG?d(O3c?jP@39pB+qVIug$a?X@Ly*+*o(TR zvSkE=thiFvic(DOUU{EJVsTF63Q9an)8j+sJBd;v7wXAnT`>tgVJc|GFQoOXw?DgIepz7l3s**(vs2K%Xj3c!&K~uD|IAl6 zD4=6{6yh+Xpc+0)QbL=w?7|QE?3Gz_d}}J_!_>seUrlO69C*Hn>^%umh?irQ4JDx^ zy@v>~OjbYp`K%p_M|3%|okn!oW7sWp0sqzR7hWhs1}Tkl(SLDLFC;=Xl6s_~feb(u zzK;nfd#p+`;trhlm*dE3Xt!)v=OWJsJL--hZm!#RQUecTy zh6=P+ikl5TdL9^A$ns?eqw!-#clcn@;mGLld0iwbQVUuPO%0MgkJLQ{5ULvZcjxN$ z|1O;ZK4LOxmo1yub}kKL65b#2j}z-t?v&hn%jSkihpiZJg+#ni_1GX z1>kwwhL&Mv)^(ZAc7sW^&(n%^HJP0^h9EviKSq{WkM*~dHe!Fej!*R5-F-araP-Iq;Jm*TxDtBA36m%=H4n8 z+vPCo@-BWRmTJ^1j4rS#{O zlDfOhB%7h*E0E;acyULCiPR>dRb%>1&;i%^BJ}eSw)1a5kqS~6+rPy-#4wh@{vopp zd?AUd&tYJdmkta*1zc6wBP6tL;Rah8uEfh9|4~)L)9c=UIjFH$R*dt*6n4CPX-f1X z=j3S8lmzvZ5!P$Vchf8bjFAJ?9_(oZq3Z~V!uz`H=5+tr?iV8fMzC^Alk<|Zk)4Og zL1(B+0WG7Jlfq@@S2}7~h=eJ1J_)fvx^k6iT%FN_WtS-7u8S~a2I(U0M;=$p(d@}~ zO{f{8&rbHF<>DDVn#^^v8RO=nGfRKtwCQlX4SkRTkUL?SbFXgntCX=^tCS%DrVR}}=H+JY7RmLUPA9n~tx zu;o-D@H(t?n76dca?QY1tVk@UIm8+qIDDBBSb*FBJ=`wmU$mAI7yg6!8e-P6Y1Kw26$j&s@vaeS&W#=(rM-T? zw7V;^xb%hw|0^;|;hDg9vYY=8Lw+{==PXUskse$|f98RQR7>P2nT11Iln7PKm}fIE zQ9?eX*!;6jVlxp#nq22RCb?yuEhr5-F`5H~h2}uExzqr9U7-!yKs^?n(K}2E5~Il| zJSP970N@T}+=VH0fO+)U;J?TW;=#z0y^B8?Hoqq*1}PD)bIH+6DEu@Pi^n1}hRxZ{ zNXIxjLAWRI-!5LhxPpvn(1Z=b8NA^nHtl_oTgjYZtK|o_>t(4H8)dbm%U8v6S~z$# zmD)7ufC6tF7{1!opU^+-mol@=Uw;f*>nKfM9Mlq8B@ z>U!L>&}9ewcT0Pn@qSoQ3v>#Al+&cS#vvao9&|PB17k&^k)+GoYFeSeG#EUlPx20B z2-pVM;a z-zgflAl+!*8y+9lA97~~>2N2IZDbyD=QS5G8zUj-Ovp_YwfEr=RzbKoE&i-^4f@`Y zk!I{c?#OZgwLoG|e9q(+QTHQq2%&bbAW{$>J4>`9w7?^_2PXj-*Dm@ zS2$c9Q{P^X+cK{WDho^N@-t2|eEVg2DEz@+Ddq4d5tbh|`u!TQti3z3?)sv(?@q$s z>5y(&w*LAZRr5~+X!8_M#7)5!umlv@sq8lh9EVZ~{#|lX17L1{FD8j%gxiz<>>&R4 z?{gq-sP?^q$R{VR4|lmLpF<9ssmnF-BD2poqzkgK@Zjnk==)kqNE%6lpF-ywS{Vc5 ztVAVg&1SEpW7f%C&L&sWntn(BrTI*nSWZj&OO6|{%KWVuC4DC$Nqe3~-g+S~Zsj-S}Moq||1PC>UNT zu)JpU2&ty)HqTJkR|HkVUq(KPNL zwtRue(h8{cp65S%i~K?*@6NWTemF^Qw+G4&NryybEj89z=-&S?Zu~!HiJO@r`rZH$ zcE65!7_HUUcre?-?D6t(*ykaRPmhdu2tK+jGkV5AtFYf>g&{CEboE1(|CIgcT@pMw zB{dT00-n0{xA>(RZU?Apd_pmfL?Fl?MU{5bHZkX*NELx!QuaTn@;_jurMuVpP-OT z{f?NUHdi(BT~3=c(}NN(4{aS;!PSQf$Y(mnpsY`i!f!pU7RWIYuYf9796+(fVFH%- z#juyO`fV{LruYW-^|yq${3xQq7zY@MByN*xxOGVOR#!fsxK-E^^&Tyid%tQUh}+ha zKg>iNd8!c0OODA%UNg@>&pTWB;I<6{3Qr1-JSd}MlE1#Kd{%yQf+U^-N}$cnztHP{ zA1x1NZ^*J+K-~T-#rt>4$B>dnGH1B@R!m4Ug>TYXt>lb41tY~D-?cXP_8>JgA zQ0w?JCDRrIz!Qy12a4v3kVNPBdu>XM$FQQ*5Tyww^d5WD;?orN_NSxK^Vl1VsLO&g z(T0PQEIq?X0mv4ZmvB$JbR^9!{_(R|ThE$kvsXY)-66cQS`Q5ooSahPNp5I)n@bhh2j!{e^-`&q>C{v)`;6!Ew=ZA<9y-?DD+cBl zxijLq_R0)8>K>L~yP>7RC&egMzLsm{FFBQJ*WuCSOIo~eNb;V4^XZVRL+$xobmGDO znwA|u%B8=LsS}%ZDe%x}MALtX3daCctg;_Lxnx5`6%>!_M(E(+WbpGnGmgGnTe5DW zKkV%xO95_s=cj52a6>`=IjK4?55?*!WYL2u7J2J;cbnd-I#P>@$9MCd=#&OoynaclH>L5|A| zc(HrLeYi@j*{`3d;OhqcYD(QR&^S03wJcKUjxc=3QqsT8I2I`CGU%fPG@x7H0CwgG z6ZE-{PXR!WyglLc&lCA0zs94#J$o3O@$?ihN3E=Hd=z`eR67&{-(Y6jPhOR^V7Aok z1EVO!(v8kDt#$Lv7X$vgF^irpaNePJKTDGrT!sb;A3x(oes`fU{aq7RqYqZKOxaI-z$c%xDd%z0&vJJuNak(aK3t(X$!H}P)8-xWpi~IY znX5}p={>r!L2Nqeu# z)~S2#p-IQVv56Cp{@i^OgiSZ9D&p^ZMY9@NFL7w{s&cS*hrjS-^%iW1njx=ZI~$na z!_(Y7Yt>0{!HHcTX_s)xSV8-Fl!KnKeeKOtz)Q-ulC#qZOwmfKu4tw~DWRfE3sE4= z7Z*>to7&yiKV+wQqf~+brX};{BXWFUR8FI_*i4=q! zH^gyejG>Z%soBI~tJ(=suN$HtF6VO7w|`>#K!$!-^K^uDkyMhG!xlWfH`usb1nuwNMZ6 zk*chzouJVtYy^42Cpe;x4Biz-P8HkyY;C|_v|}paKmcVl?Gpc*PJYz)CbSNWb~R%Ffujr(ZK9e-^)kGBs~0=D>5L;QXj4`;_dQAS=PJ_C#9+O*yNI+t&ZPMdVf-}`6uEq>@$ zbs6W@1BB_1=M!yQuc(YsM(*Pe<{RSg?NvZoC($+|;HHG%7NcI`6WN{*I|&sYpMQb} zG)iu*6OT1v%(Y&Fp7*U7mJ627ksZG*8w?mUVb9S~^On9>BT`J+5Rd1an&R^nE$ZZ? zT-ChO75(cTRVd02MB}Z)c!FSeuFQP_yEXW1kdO3z7e991NWr$^2(Wpd4N91^)(m#p z;lgSS*1(q5*;bvp?9&3~3vM?Wu5XJM!bT7XoL$~sZ2REuq1%a?gf~HAD_(?Qdpnuc zCcB^~W|#C2sBIF!(Ex-+=GWf}c|@QM<(;`J<_Z%&JR3Hg?fB|4P#!*TsfiYClFf3l zl)laL;lxJC`sFpt0TnY)yonsG{gTGraNh)Bs7vB?ltWFX3^-$9#)4YCxiB8kTy<%X z#|P!=&^ILQ4X?D*yp*=dqfqUPOcxdAV5)>K)iEuFfaRR?#)oU%qgtTD{Wp)M&>0_e zuY_@UaWQMBWjB{!{L$~%XX~r`kSi2uqb^0-nNi6^<^Z_GKV3j z+TAzLz7_q`^l^MTYhENgKs5MVqZ$3fXsb|=p3Lv1nX68mSJxcItJLeD6&osYUb@8y zX+e5+i+lec6O|POgtaHFXifHWo?N_lykoC1)Di+5JJ#+Q`+N#06FwZfBuz~YXP(i# z^n7-hnwR;ueoGuUU<|y+wUZ7X!5%wYit`K6M@{_6XGndTeR(atvh0#`{>`nLn*12+ zclx2d`&gr?uOX0}7`A^3R{mnT#{<0AJ*BoGkfybPRx8(l&z0hOTTT7=gJ~7tK6Ptn z&x#4hmy7m#D@TPp2M|!X1a?Z>01_8$X3^qJj#;*%{hh8XgWxE+`Lv!9av(b6v=1puewr%#8Vkqp`Qyp!;z zHE3wUjM)V%UE44yPhNfb@VL8!4`c)C~4$=?QGd+?=GEt zT<;v|=AiSW67kqm=#ZIQB4-_7O%HU_FQGB>&f4R*;6-yCI4Y++0Wtr#%d3EOtKen%#7XoQj@JRRg;=6E#A8`_5f)NQd1+mj8~^* zp(giuv_*V&WF;{fSM?giN6nIM5G2$)5Y{yeU>P+$7Iw;wnPO{5V@-vVp>9Jrd zHSF)-M}4U}E*r)PySMBdS`u)Sig@L}w4v7n<>B>!NAo3q75+3RM5YaH!K1K;I|Zm& ze00P9ntdSr*_)yepVF)pQ}WC}ZyIkh8xmkBIxXC$z0xt)tz(rf=ld~!?GA@jRELF6 z--d_iqxM}bQrm;ps17#qW6{IMa~ZdU7EUIbPSV#oKF51bicUPoHLkIrZPn6g|C40; z7eQC-JAQWau28z!ui{gHu)WTfH+;R-ZwMjxCPMt=6``MVTxCGDNGYM|S=RQX)-1H* zQx&trg+{YB+YmVJD073FoOMg z!u}1^7UxrLsb(9UylKh$5}8me`fk2deE%6t#qYz;r%i*Qmf1r2lmMb3cVgXCqv#VH z0*aZo^WnsPbJ?vZy>JztksvJlP)&(QF{OPjGU@FMXvBp z$TZI;YJuXdX?O})Dj#S+TfKpkw!B+b`I9;)OzVjXJ|O{#p(6F;lXf{=AFVycP7bgF z6UsHk$KAh90lz(SFRuMP%-2AV{>eE7@Sg(av0!L!`poFIyf2ndMK9)%ZT;`)2F^GR zRv3vR4BOJy@7l8HW226&986%!>rZD+0d$oZZ@coqCqOQksGI*Y1Lx-Cg;M~WAb0b{ zUn;a*78ln?J)RMXZ_CJEHB5O?SCxK5x#X`7!I*n|?lSmr9Vc8v_05X5)K{ig?UVh{ z6GHRS4y%hGR|O`{h1X=5ljB!5!Tv&FrFFV3=a2mfhLwM{E9NJ8IW4bVJY6N& z=E!+-kd`4`qfT&VBhtMEGNGcA`3hn;?8O;c{ zzDxQ>^IYxQseWIV)^hU3MC}=fuO9mftl9VL7qnR3a7B;w%~nef_VrS+VRmS5_N2CbSoNE$+tg+e zw-Sw`&MaJZ>IOBI&?pd|?d;dGT83_zi`Gols7lY%=cT324DEYbHC;@8nwxH>{vC( z?L4R+VOj92JD(4~Ycouej|eW>zJYv7`XT^VQR+7DUMkj=X{pr_myLJJSlHneKG1_- zhdg{CwQz+c6q9m$hJ?JZagit3%qVg1Mcmn}3h`g<^E>lYWNl~Z9j44cRcsHI@5}X7 z%QrpC74Ixh=ph$gy$NZmCG_@Kn)mv!-I6wCDQ^QV(uEIGzM`DssTJ^4yL3F`dn;2t z32URCkdI5}P_RV&v8-jUxduh7H_dW-=zR}hEs=O>;8i|apVgzpt`SnW#5>bS?weT)wxuQx=f`M4$4wH71hu|F1sA> z)JI7QGrBsh$wZi4E4)AhRGaYyV)y=HHdDjCfltpEMHm&)dFO|$oAj}i=W64ig;@nh zcYMJY#^qCh=plEfv;zyO6jgcqEE@IVKkUkgq3-Ro5O(P~ZVNI9lvvjl`Y6FQaLcji z%y7&qQSS2xva39zn-GmyE~pPTQdY9T_{A2!a~8PSvoc!{Z?1|W z!hJ8DWpYO8;^ACZ`CuD<;8JgcQW$4EjGc{myU}}(O~=?hNGcw*{3FmG%bc#VHCcF_ zR+0*_p}?|Vc7+y?$;qxGrtUtMl5UW%8VEZRF}T;@N8u&@+z?HzO-$LOwH_97pRZ@8 z_i0p{wO7p3F9PAU$eZupbK{{#Q-?rJYDJU2zMEasl`o4NX6pm}nQKsEnWyrJk)JS@ z*(^qtjK@s1-jj-|D%Jlqe6b2CR*G4yGD4~iN8tLKYkhJy6?zS6l|x^IycC95El+{YJF)NtXipUS99B>=|;4J!0UeHjM&;!z&Y#~WQ53e zet4{`+$Uzi&VOJ>*@*|~%sok6FRu5iU1In!B~%B>oRrT6Jzs0)Hc?S66)TYiP11DV zfob4>i9?KcFPilQCVsXjhx`4D-#c797(yhlWG1pjx4K1`;aTWn_fg-~y{e3B{?*MJ z3k)B#e+8mdqLm=p?`7uAI<3whB33#{ljZ%J?FZbWnJs-@Bob)sV#j}yN*9W=sxrD@ zdnPt)W{**&#qT@Pf{tPIszHSw2UVRfdgo`HH7l0{{_H(bVW^MLS1;h8E$+9Tb#7t# z!+yj}C}yl;=H2-SN-&YL2XB?Gld!!7RS$Dbzg}jhZDiisn%H98kQvUQ;C@2y_!8BB zyWT>1A@OJK31Q$5>{}SvC`|x^TA6lAB>T)9SO#R=R&2epNxG|@zeS~s_w_Ubrk?^?w%XygVn4tgzC9q)jYu!h+ z2@HznVONeXzX;C%RwVY zZ-BD~dkRRRMo=pY6lGx(Ch3y{S=gGX(ve;0LRy$Zs)n=DSZm^=^#jzA+~f#yplfc{ zel!@=?rbdA$?z5vLAd0$i&u{4#)_zwm1@Th9B^(_h&n^cP1+#nzK*)Kfu)jahjB7X zC{P&rc0R^g++PTOXFi|&#p;PL=2us-`5l?r`G)ewyO!(+*g@fZ8?}T9vudF_FT%w9 z_r#_Bp+94_4+!e-#MXzD36f|B>0(Wzu+k(t9d^wYSFqXmyQ@o z|0{f9@RyMO*TfPg?cIC-l*o{O0fTOMXg(1N?jI8 z06>#V&ApHsSTFSm@F3>}Fd&s%A;Q?PTa-%M1 z#LpWuc;!Way-Cclqg1Pci?wwLwk!MKcm9hpdbN+9io;(!Sn@_yVmUa&9Vq0mV0N;X zsaT2gJrZX}i6(3vu6)N5r~~3Fu3d3Y{^&3TKl%sGXs*`jM*Ox8G7i2&Fmf@dVT3{& zS3IC^?YuQ|M~$YCZO?`B)>9t(a@14U8~nsYPXU{l$>idOxDBj8M~!F-%+>3~)j#yW zpjKR5^dmR1R{7@cSMb=y`@9K6WXd4SoKB8%C~PS=7MShMS%h7e*pc)svJmoa`GXnz zUAeV=Osxxn^t9O0E+xDB%zThO`O90A*nEtzj0+xK;_r<fih6>(TgY?C-`Hbf3&C~c28r*38J5%X1P=ffD z2Inkm$jkAbGS@Y$GHpKB$-z^=>?vRv>)^DLxeSaUnQ0fNO+m*oHlr7Zz}Rb0h3%_L zNX(<@y2HIm!~RI0Grtzh=>>$Oerh6_bX=>fTvghXPmDSTKiV-Xz;r#N{)q&zVRAp*hA zIE@Od9$F=#bjaW3!gmY5jX{wq`?hg$f`wMGmsU-t66>H{-ZBiHvv)7CodPa;ecL6U zNg3U4$A1`&epkKR*R5-F9R1^zCn^8|Y5l%$0lEsX_6JsB}@esC3DvR%XfGujO1%0THJF^_bCRk-k%arG>lF>|!-shj^Q* z`r0{<#s!|5le|bEj^-S~v6g>hY@s#gzM5`Y;8NHzwi`dn?C?B6BO*G|)%q-+Fkzy? zZ%O_0yL5)=0z`QGceIvTtLM1iunWn!rzmP8M5H* zlb=+dAi{im)7ALNK&K`s=Q=yt^q~9(~!6rdRJz~m4q>xg;st$o^F_o_h-J*MgrKeB9*3TjOXiZ#@pCjj$XbaC zm1Tt=yw`vGd*e6ml5ksg--cKDU)o$E-&)(0ZyAAD=kwNQsUNPK%Z-`~JZh}0 z6q$x#d3b8$Hwj;N4Y{ozAY2J|c89yle1eGANU;K|Gz+1mlz*xCk@y_+k z@I#7C{fI34r%$^|O{E63SHHh|1s>(RQMD;{7awQJ0S<*O|C$IDhGg-w(cO!hJ&3|T zq|A?4%vmmrt2ra@HQh0K(k`^tl)(P_yBg^k!8gR0HE<_H0mzvgYbYV#w*N*KE1U_lnt(f?rTJ-TX zx*m7$yZLUJE8U=4x$5+DXY+wx?uc<*-fUN#Me6i9T%oe3hD(j%u?<>0{k$s+Eo1WW z-1d;qlF7OcM_=U|T{q<=+U4@sLn%`^q`ZJ2$@#nK*`jp~3h1-45ngm$M#+@6DW9Rc z1EzIY=4(~!h_iFuxloSq?bnI+w`xqE$Hf>lelKgP(8y{vy1JqS7-Qc{#Xab! zOxpyl7s!fo*%8MPU5DOdVy`Gdbk#N$&dT70x5eX2BEOp)1=anS5Dyvg1Tzq-qw&{& z4tU@XZyfbnFEp~`axV$#g&f$O0tE2=7j40|$aDkj4O39+m=pQ)0VdvbBb=K1@=igU z{odD3H|OT2(U4koWpd-<9%e_rSR-LI)uJchA%4VmYI)T{{WUaeRAcmd+rtB|5HOca zA9aB#mK<1QWRMMto?dYj!dtxe^f&gMp2un?p&n@kAZ^@#KP;9k1*4x#b>8dqv&tKU z>6Sf!Nqz-6y}D3!|Bpt#Ym;b`lII@Qwth!k0_)oHXo zHlb+!^E}xyc6N3_Al5ni-HOtg2bxVyf3u!I&U;i;sXbrXa+jZ`^^;xT&mpyVChh6j z&}-%SM{xvQ@VQ`r&um~LYh~o+-tY1u)X1F##ZMPv_z6zZWqQ06x!uAY=qitSROFeQJT{TD=88QCqq7TF|dZ>CA-XNI%^Mz zf=~C~cKw{#$LfqSFdErY6J~M~W~QCJ#V3)WyrUB@Dtd|Mb{-qb=H+5)jC)u24DSfva3CG^vmaSzpQsF8M2$x^uC-YGyqZf;*v50}v!(cQ~H@L4o|65{JTCA4$0ayDxa zZj~mV+=x2y_XTp+CkJIi!K^&}K*RchpHfb)cA#5cZGNnlj#ImD=H$4?nTNkQyTuWm-RJ*N;tF^0 zS6&0F>f`GlQ9Aq(?kursi&?a)Sftnp3iYd&-8fewLb`%vBB%N)krWM7Q4BB0CdFBh z^hG8q#^!U07SD9AU4HvgQz}P?09%+`>9^kQcZn+o_ek3D!!FwCuu z`xv9TTo-8frQ8!5^lQz>KSjXzB2e20ct^^%dX>maC0o2vX^wPf9til9()B%=d|SA& zJUcDwaP8Hv*Yz&Lvd$?FYi`yvqF zxi~>i&0ehq2QLE2^ab{u=36DBJEdfly6LFyXWg49+`tg<#`>cSth{~Zq4nLA;~7uW zOVT$q&77=AK&pk2=sw0+qFg3jYWYrVS>_UOMSxw-CH3Ju?TCDzUEplXF=2V`+CHJJ z_G(k>NnpYK?W6b|qY%zQ7Rg|0!yRfC3&H8!`5?^r&9m}sAujTS+%5#0jEfVS8M5Jy zT+{i)pH8vKs(f`g2Go_%*wwUGDuRwY%d3n=U$18!oJRb(_T*+??$}ip+256i({-(( zU0dIzyZzAvt~BHvo% z8`#!4y@fp8*m0CHZC|KI*X1eZQJP&dIJZAzBHE(iHDjv0t;=tSTRaplyQEW=A^uSj z0^$k1u_B#p-v2D2&k<`d>ob#*DNF-T1-B(!3bM0F)yOQbzDd1U< zU6P?$=4B$2(JdYAl3B>@^eXQ;8GG-uphW`?UnVc{zU7EAj&n9^RkuoU(DsfIboc~* zW|T5o*dB8A<+U%ce+1Me;fb5;8PzFM>^)s9^FGkykT5(pJVB$NK&iHrB;VL*ec{|dM&n1^%hrw?3V z;Kj3aTo_@^qrpqc&!%~!Y~NZ&IBF)^Ci)p6aI~DgazOlTDoN%?*_hMpcoJf?nkt*O z)y^?631hS8=$UW8DTTyT(xi;iap~D@+~BF!rJ}Y#os4du0qNL}2!mxW%8%P$mFa=m zIM_%po%p7#zhp&A-X%Tbx|*T~aOrgUk5cqe$mT%!kENCv+#@!Y-7N(wEC8g} z^@d%Q>NP&Rqo{45yatwH+S6H8@y<@eD2 zQ}I^^*{&8p3$|o~&4*W!GTQ0mr8^+KZs2)-*j8#j+@+3B4XR)I$8qa*F1yyv`DTFz z!@oQB?yt+vgpTXX94hchBeq0Znm=Yfr^$82eGrNW4=+fI6E$KIjIqHkybrhsxz~PFWR;FPsm&H-Ok648)QF=39+es}u zYxep{X9CH^>*UsLr+4e>&$m5$woC7?SzeCVuXyzy9w@8*bPXiDsh!+n) z1lgm4t+&a+%UNs450E0~M2W^!sRKHmV0cE^l3)k2NjL+Os=FMyVB6pp_~lv8O3BNm zw1Q3U@%j(+bnuAatrEAmiF~E08;{`G8izb8_(FwMJg(4fwh$k%{ipPcc+Xwv8}rv2 z-w%?{_6u4Of2?r(ptONeE_fpT$5{TmahgnoA@gRBp1?`7tkKp%f>j-!_W^qq^hY7V z%D!E!7?h;ztdlOfsZo1ty{A3wIXwBFD_)naTJJ~HJF_+ncxG`g^%=GV!I)s!8h6{u zH=!SDqnORuujCQ})E~vMqHHSfpQWH=168d1hNCYHey4a!y-y1f1M=>^B|fr53=+2& zLQr9YDC|&x^m_7FuSo*I*tj3$`cp0I$QW#3DH|u3fpOwV32>#l8@*PWM zTj9s*zfS?{SkBMnXR%P?v#!MQdCv7XorKrRwbqZ0Tx+rQ{7pGci_N($K|r@IlHMK2 zadJ%1?Rc7Ld9%ofp>&2cn9G(?82M8+knBOp3&U`C6?n0Wex967e?!>Ed$Ftz$JT}C z)|*CRLbvLyWB{wiyy>;7B^zzV99Ix_?@Ic8Zt(5srx zGBKSEeV!BhSu#cMB5J@A73iiu`rsRRTY}kwAD;M3I-&E}a!E*?uoksPAND_fZY_cWSsa+UCoqWhYDLdFG0P~NK-e+Iwf-f+5i;WzF`T1~FZ z!0BNvul2KHkACNWQp~U582N&CRTtgy?m^;x8SP`=^n`G*&vOBw$y;IT{s>3V8 zZR;BgDNs&*Hz&B1@dLCrBuV`u+$y0_bsi_hqKajeTHxRx&ibCdFZkAK{#GW3lKFX2 zJG+QrbP!9{lN=r858m)mJB4tBEPill$^nvz3L9o{tqdm|1Zkk3phshAynoxW#g`r- z>+ylTSBdq6pGq&;r>Z-j>Uyyo=e1$;!Ar7ECPrlR>IF-Zw`;?J{B~3bshJ~>=e+RU z^!NOeyvIG#3Mb3Xs>WgJQT{C-_Hygc4FQ8#vq__0`c@P+M3uA5w%x5sEvj>_oK(mi zKL=*9fYQ-wC>TI7Eafq=O@D_mRkZEpQyTLxG5C&7X=y))3M#r+(efh@)|4$`c>|4K zkeLH2pR8*S2iW#j7`bFkbL zu*wU%8S@~Q)H|nu>of~L6NmS!rY7}H@EbLAMuSmOUS&C&qm|O(b2E zmGiM@4CQBv^y?}6T^!2I!J~o2qlK%bT}nZN8|+B_&dSj2ok-868OOT9JG%3bmq{VO zHZSDEp=1+#Q=yzXaz+w%RT!yjU!)Mw36Zugvj;1y-rY0I9YvT~l%VANOk_=DBskWC z_}Sj~Mwp)hLV!~oonb?-H%b~PPhjd-5WC7*h8_QqDJ49$n4GkAiGzfvFz!2tY2)$# zyhtETQB( zUxPF(T=!!hQ;fOmq)Nkn67Rw<{H-TR9XV%j=>)0!z3xs1m6mM^dXy4nZQsqW9g-1n zc{4`7HL)ZM1#{S^9gFBrRfxZmZmhR->XxA`zsN2z2=L4E&6d{}-3lG8@k%(&L?kiy zPRXSmgQ3J;heq~^z!h3?6wpL?xVf=FmA z^B1}l&dXG`@eGVMg_oe*#ho#in=Wy60^gcP!VD{Ho2hP8c>G`|td6 zLUdHZkLnVZ>gi>x-igQ5GT=U=24~>J`dFE~(8`aYD0Kh2XYcgt&ts6BlgA?O;gYBN z_T`+ZcywgCkLfT;vz(XOXNS8d3GE0-_)BpMv_$pbRRZ#(zpMvu0^xi@62b3tsdL%v zQC|sc_MiXmq3x+{M72z(wBV8M__L}42-Y~nJ0V)=c@P`?_Fu|bF}XhvGTeSFsoxO~ z4w403=H$6WbfKxR-LcW@KrR98usIojzZd7S&z5l<6gDBkE777$Q+GF{a0+U7%-?%I zO6m&U0m*WBU;K=bwO(=P^HjG-FQYlZBh&HqQVQfm zGLZsN%TZ}ndE!?=v(SASzhT3Soo$=@GRvCS>D1chrszd~zh`RSY(^NcXdM@!HRe2W z$0%i5iqN9hr~Q=o_foSp0q!V1!!Q-GAr8~@`w|s+1OauZCrw&C-!%3<&MxWd>%Xe2 zu@}kQpWrmusbi7#`TRL0mkWi`u!5>&FBV)ZQfs z&*l?=BmfyVkS|DN!<$b&bKF!KxXQI@Bx!^M;3hRMwj^1avQyZ9NptbBj{8>L=sKfP zOYKJm)Rs&pw@>+LL0dU2x7a)*lfgeDLB+i=?M3|s|l%iS0{{Q*lg?O71Ta+8ID zXYcv3iF)j63fz40%*u35)@^lc>u*87+c$7rT#W949dZY(oR?%Ox|{737rX&qDnn;X zH8)Yx`nzZ;x3{QNoxzk8GL>9;?_CzbzibzG;I0H8t5wR;K2ArFuET%dCKnfnHsW+r z7md0DP;m5eG3(A5ODf$F1`!sOt#7gSXdhE(&A>_f2|>o?4e9V|L$P?UK5)|;_R_>V z?S$N|io1Z=zCuw8u;z;erIBmPvcZXJ6(Y{0vghGs5vH%JI$+w{EV+$`eM z;$*Ae708I?oc17q*w>*M^gJNAA}zoYuMzEf6asMPummANZ~AAD{>qcCBUiFHa-JGV z=U8U9w6@sZb@Ky@wB==H3k2D=r`y-W9JIkNd#dED+Le;5Z8ft{%?cTYK1q8p;-1QVX56oi!Erhj&N={53Gq}jp!-2HjGQfnDQ&aX3# zLj?+2AW!us?(Ui3X}Ci$$E*`+{?=syA#APF?J{rn70lnt3`-kUre z>b#xHBKfi=3{9aCH%c~&ec>h@*hI;L1-!AYm!t}IX$s5=pyqWYxJWY|+r2F96<*>hRdvU-uGTHE$e%F94j z7D{ExM&PUIlo@PFW6oJl!1*ho4!(oa7)2%)CB@M zaNryThH}5)mL;J1gHsmCb2&un?^}%xc!q?9D$%wFKn+^Sx+FyoP+sqTCVQDECACdq zA~t=5;4D{qrduHCh(_Tc754N|A%(PjObzN{fM z#ptsJB(SOJ&0SMSX@JU&tHOLlC2Zy8L1ed*q1m1p!8pp8S%(!;w7m#;+1Jr$-eG8WM`zF z2#CM)6@|xuS#e+wvoXD*gtN@CyR5MCUaG`u*^~v&7QgiXqL2d;hX1dM&N{BCw+-VM zs9+0-($Wk8K}Lrl4WqUZBb0Wdq(cxDsln(R9RtP~Jz#{WbPR>D(I6?Ul!(Od-TVJJ zpA(<+JkPnW`?|hQ9C@l(dWa^zt>rPL_@@?sNAK5CTRRx_n~XG$fUp0eUMb4>RUq^t z0BTm!ej>M7q@4>NV3UiweKPR#?tcHk^-pM@`{p?J#U0?}nz2;R^u=X?E`Kmy&g&`*$RP*wRb^WbO3j7|@{v)UL@ z)F6d5_2XRLvAA{Jud4d1%qDQJ!=|YDv!ScDAw`Jnak-X*ZRC@avjPjV5J|vihELI< zbYKv~X9qP~Cc5RW;7d6jXve zx(5x|#Y88)n=z;6ltU&nIGkAPPluE8iu@l`J_vz2D4kpfoMbE#lnxS|*nuC{2gHZg z%S>5R?u#}lLH+s3gKx$hsj!K)=hs$KUNdu$Eu1lbM7KWWhRb`181TgN-SVbk1bD0yn1bIUC55{VVi9VYQ}-JI`{m+^0r0Q=aPhY06; z&ylNw>2c(-Q^{Uf?R<)H30xxF)tPg3hB^7LyRObXRkwYtc{OFTJ|$Okl6RRHrw z<-9B``h7n4n82uvUY2ecwknu4Gq4>p<16=i-#EX`?|$-=7ig^O)1uFvo~pmu(4#hs z6&oi?>7=0DgbwEfXYV8S*xFth*x|2LC`tgSoPy7k?W8W_;_{0 zcQ&qEt|F=nS+>hZj6Nj@lca#%2F%o<^$BleE-=&kUaLi;SNSd4iP87+0wrS&T z{q^313%^XuOL$Dsk(HhgnZn=OLU%Rf#wz<~YkIu$vPi-4fxuN&CSr4)P!+Xuc}hJ8 zl0y7BiDeQSEymv2mam-rMqiGJmR^2~kaa^pd!-&Mwef@(!=mZPTdGT39)1e7}u1j*fZxW;OrM;Jb*BNy+tQa`csA(Q!T`MyB!67nx_nU3(y5 zhxpRGk$_Tn9thDI!+yd3Hf*$>D()V68ISDa4<`xkqs`&3U}Z^NYut2{?sf(|Z&tf#~$(iY|RZ6o%*Jyq^CL zfE5vOSEqrUIVjC!mA7agCH-*_B>{_AQSCH|d1^SkQC5KW)n$$greKC=&{!^d%Ud!@ z#)tGyg)CjW1wTDmVwGpSRrN-Q@A`re{ph~ZSX);8#C<^um20-&hB{K&`I~?3b&M z?qAAD`aECCQBQ@6*+GJ-WQJ1ESEQaWUAONXqdhR)ko54|y7jDQpl+jUZOB9)-$9|G z)DMF46CM`c(qPkDh#|=o8`d??Y7@Hz{tyCrE%^EHCZF(K3GYn)$O^Q0=C~|CFZbPt zc|rPsC(jZ!$_wbOh~6j81E#SkL|e(WWBxxkDnR$nIj^eS4r&bo`_URt;jO?=7r|f#2oa{cT^%*8iV>xLmiTIVo=c*Op51P zSU1^#!Gh(@Xy^|nqJD4on^b=Z~&!`=o5FlOb zYkdp@af)YQ>vbE=@Lx|dR;sv$4RmwHpS!;ep_r{(j?ElAAs+!JDAK93v+J_dSDWs< z#$UsE%CD0j?n9oZM^r08a6lIiAg}Hwv`|(;DPPP5= zs3qtKg&58kGkvn!Qm~aE-sU87w>y!7b$#8RfG)4R3=ZEyfEzyKu5XaYyoSw{Zw5hK zX`7~<5+{&#j({pBF73jZ6}H5qxWIXbeRGBZ2&?3~>4-ZjS~JuH8$+1;SL-;(&rlcM zD#Is$6mksE*U^#8u$lvULdkqWx|obq^IB|FQkdVB`4~)aFiVf+i8UuU%W=It_Y=dp!itPI_pjQFMXs3t#i__S zxtx%`olu+=!KWZtOUx-?1zaZ7$~=4jq+$6+5F#MCc2rl%giq4%V*PR|A!+=U1-){1fG#ZbFx$AJ^XegR+NkPlYjNY*$v-W#w$5%J8&JiS7G0)gdX|$*Bu#DlSBETb z1GrpY*_r6-qx+UvrHQ4Z-!Ii0Uda@Jzvq$u9aJ8n#AYu5HX^CtRAO_wO(T(HJ(Iqc z2o&E)kj}1P6O&vf>zguxlo4*yiqbQq&WUKvLLb8ok)k-XrqIjbo8lYrWmDtJBRVE^ zfUy9Vq08tZk);m+Yp^s*SJRR+qJ2Y2H~ko8)C}~N9QqtmTKyc`&m|l374yYcp)fAY zo&C5pAAw{~&6RzGeQM%>*VVPT;`Pi8d{gih%iu+8F>Ss`mb(bJ8(GItL-rvM5`s5p zM^|ppyFc`mM`+vHeSL;#Sc*f2>2cp^phkMPrDa(P3I|grR_|2<~s1t`7YcJq~JB+HH69cyH_Om5bs0vy-tRpP0KeSEbBd(X6tMfhdkO|~xG zo}&7hAtye(7Gine8W5Tq4ioZ8_p1Ny^suC;e0Y&EE8mEaA+7V~Q?X`|v4BqegyLB@ zF|LXH8k@FV=sUHlyA`UsK;m<6GkFO>@wEGt}n7c zRdk1ypLPc~WUxctkFzX=-CKeC4cZ3>ai2&QevbeKR+TA-XzHPr;{ixvth{=9a{9ab zsivmiFGa|)y)0vVsl?_F|Bxa5`7Mop6NDjM;zk>gpX#Fxm^je}qb8<<27Us<#Vl8% z)eNtr4Zx{ONQ36-@`0O5cxmK?Le_A@D~XK8!q;z`b&DWgVS3#fT13DQw$Bm?!;m#gS(mK5y}$C9e(VR$5lH*??( zxLHanu%b?dody2B!W%n_F0W^6eWkvabA}L1JSxi^*dMu+dn};rg#CM^df;4@U*~dIByKO0;n84t8)-@WvY@dV4yB*UTJxgtO)pqRm5(9ix4kJD;4GP6)=G{|KXuWl1(J;EZd zYkIqoq&O(udX0np$9qe_gxk@=`g*&<)WX}Xk;mb?4{^Y#ACnq$4BuyDejPkeQ(2%> zEyoW`YG=%b-k@w%F*h&@|DQc}skg3Uwk(DY)+bvSIIAZiD>P_>7a%h9*IOIy`(ZB= zPY4-I4f+1n>QMnCOCQZGUroggqeRG#him^ie~r8ScZUZ}|ItmN+g)Bx+k$rmjQ)_S zAN)tB%{@c~j;?TIzj5<=P|UntnqgPvnq}c6E^=;pAiZ!Y4+*!qot9*}Sf+28v*2L= zHVv?TBsTi+_9@-SP*mT*haAA)QIBt@HK}3KPtA&cubjT)=GFXG>3+`aQ{NjMbO3E+sYuYnrdw!ituQQ2bU@fJ&ho;_ zm=BYFiqal444{;LPz_cP%ehujTXuSj=Av43RdE-j6`bkt|LES5Y4?iZ5EOjj*aQ&8 z{>%g4>d9U1uqoTC8aWvBJO1cOJBC`|s>8anmvVlFcjsumD@KX46-=I3F}>n^Qkvs7 zU!e7EwB?a2qx5n7`eqA09 zVodrOtA8V10oYJSZtHNE#!7mR2j-^oV@G9N@m|ysTtgog=BRtt@%h_kY>C0;(PfX0 z{*JFDHiFNjjMnBCtTx%hu9d}FhW*TaRTqt4)uv9rV0aE9^TV%a-|3fu4NXmFg05G8nUTSOlXq!?CN*(Tcp4&< zfcObEQ_k>BkP9$%_M83xvqwEZU0C2ZsboE z4K@+dukvRVe~yWK;rMM6*qY7epN0{d16a*_(yn7AxgPAT)#?y;(oCDRh_BMO<0;xz zA3F7kiJn0=ZdvS9^28*dz((2&VAA^zI!8IvWimKxNS!B zfB%BIHfIk`)d-!PR4!c;3M@7^^*9~=c|j~GZZFNU$YiR;6&EyTl+Jw`WkH4wTz6vp zkM6T*732L84svRBMQtX8F|J&&s)64t$w1~aM{>hiYF=NwD|44)&INFo^Q^S3ednVW zHfc|$@($|eByDhe)dZ%_5`sTHxbIuwpTkYigbX?}IduIZQ~2p-))(fI&_};ZJrx&* zv%U#Cf&ZfmgSG1Ihkb}M3KvhzCx-EGAARNCv`w;gs~+0%)m)?TQB0rwf9(I%Da^|M zISaeMv^9|+qncWvjIm3-2%1SE zTE=7$SbX;bBw@ch_~J`HU}xZzk<{X(Hh>xZNDF9F(je$(?JuWRR!ED0ebW958CmZe zjJtiZ92Q}99W1Enr+q>FUsvZQi(*-ht0FRglV1)BwhGrR*V9{x3KskqlWAafy%oHKUhL7-$J3~P<6-% z%i{*`-Zz)Br!xsmH|PBj8%Yz;!1Tx7h(-D>R}rh)5-V3P;#GpggLNYwMpQIbvs8@80wysPH)r-1>?kPI%X?{5@{k)G5ix^#5g7eXMzr3 zUHCS5gh(B~c`62tn_M?;_((;f)%+(PCo_@Md!@fFuc9w;eaKA~(YSV0kYn8UH5;j$ zs{8XjNGiP?nbKc&VJfZHZW{X;eP1cEP*KGC_Y?St-C&m|lBq7e6o zrMJzq-k0B^{<6}BVpB18G-of?BAAu)^Qq~v7JJD7UJAP&mq$;2$Fz8X-wa4K78-Df|^LiShx`1vQ<}o zOkk_0dAA9|WHMOaux`~|0-PSGk?%*FLnoP9JUVFu+q;Ezv@mu@z!c5O4WKckj`pzM z@*!KYT(%kV#BG>R=M@%ca+6Sm#VM)1BKtGzNrRkBWlYPbRcFbmRHpAU(iluk z;E%XEe#@*3!6?P5eR$^RtTn^mMr(vk%0m9-pN_kRg`THUmKmy0KU&;d9k}DSJl@d| zpnz5Nr4c%7AOGJd{u`9WuXlw;+Y=USJ+}A3vO+4LB{}rRuF_9>VQF01NQtZ+I77m& zxxnJ9Dfm*Do7qv$MXEUNlcjb)%*1w=g^e&WT*(6HJf@__M9mdkezCaPnrtSY(*t14 zlV*9~B(~QGFj5e(K8{7>{aMCM?YIDe(JbjxACNA8l3uj10<9CUtj=V)UwX~whcElf zbhTAw4VLTMCjh}L=%k~`)1ei-rGm$D3ISh@Ot5xN`s0U zTO`ONJAh>U*B?=T$9WMq`9+LzB_)7ZDiL$e=16`BppUMeE4x@!-(*ku7Y6`6`3l1q zUPT5OD~t>c)DebOV_wIxL32A)jM2MQlL_zQ}f$U-W}^n>114{adL+U~MI}s6lIR+yZf&v0-D~_2H_F zYH(&hlAO%a%K{y{QiAc(W^NRb0xQ*;eH)a_?qjJ zRAb#Cfe+vAQ=*!aJ{>-DbUvX}I=H-vMV~QN({WlNE?o_w)Rl}LKlcL<`* zlEuJ2H`+q*jEg>BPrigCzHwj((NQ7rAU*<>o?z_B{FR&@yG2=dRbW%I*45FvvbyKn z?%K0yLlupqI^{=os%E93*mgwe##0+)utjegZ(nX|N(wWHcN!Y#?v8jETYY zZgDP0L`dZshG?C+z%XKh+7uv|)sSl9`X*U<1pToVD`9gC3BL@2yvqBKRW((iu zAxUOWVPwo(Bjz4+ zP1M}|P+Kiursi^1*<*YhbifNP=(tYnw*mX+SDe3KOPbA(agiTZX;yI&yv3oJ#UFyV z9@2A0HbPeuX2tHjuD?A?QuOjj(-K+mTs*Frv728(1pu87fZ?W-Gp;x`lu5VE8_Q9# z?Yq;P#&J71l;(FKqn4Vno4pvzr#Ew1Rd>Mhxb&8g@h~rTu7)x>yrVEUpusYi|DEqK zLNHBxjs@6d5I>T3oQ~CLLyw9)mEYGeU7Ht%;>@P3%^6ykD;lZEGpcj$zogc!e@ z8?M%Lk;A&oChQ>&yee+`ccIA|HlV1D>sQ{rtYmdV6?jT`nEo8?W%9Ra@ z08PgGy;Ag6oEfSm>T~K1FSDo^tP9PbZ#sX7+7Yqx3TK>|j=fCkD-u({a z-CMs%#D~5o8eu$H*>RV;Zf4o5^fVNlEds>i+(ufmb#1JvJc(?^6fU@y4+Jw|#(x!i32nLprOxX|W_y-h-ckk=0=W?1MC? zzdxGL%Z z(6_eRP(VK~vxmo*00yHu=GpTz9hdVJUDl`(H@1ZxviE;qrt#7BD;lHJEOEofOW&X&O&@kFC zYc?2KYi9Q^Y>6;51K+dywxY1G$rcz*BGhYZU~QGYr;X&c`9hB?M4-vaLxhl?#=6IG z**GHdYp40>Vxsn5&G!5M=n9ZfFO{C*aSifE0U?G#@ZjLksC$ex!DWs;HN|aU?fh_F z5OqJhdb;5cqcTW>OE&)P3n%Onx731e43Lux&bGKu1CGbp zZfXGbaT#*u9e%S+k+fbkqjX*6E2*K^fQl4YupIYPW95?QYE_s*$neyiq*_mAm`0zA z8h?Ip5%m{OGtn&kq+@H`aw+UK>2>;1x*mz(FUO5}&Fz#KR;hi8Q(##T1$n?tb8Xn) zuJhW^sz6R(szPk%OOHI+sg8i1Q_Ar4`ZnLvTsynosC#wD6Dme)KQ7;EG)_x^KRfE}u0ga?#vr}*bkNx2Ik+;wjf=u?yDNt{gRO(*O#=w}wy(1{v zd5r{ClW_HIcs1-{d`5oj)OQGZ(awDyZUZbWYNWpIkGtaD(MfGC{|J(*pq{NZv0&O> zYkbLqz6QJ7@`_A}+%+x!P@ghh>(cf6EYGn`ZBPHpzj1ki0fH~}Uw2g*#@fo}CMK9x zSa11QJC5=yx^J6DcxEJ96{Kk@>Pb-iUDQf8;4XZ%lZ1@Fxvoae8Q2-AowKE271e{g z)_J*aZUjWTT<%@})Zpn^DJD+eo$|8!H*Uia{EY%=P{Wx;Zr>pGHWgK?%) zlXEj?UBVqZKn?L^*HZM0Hd0H|7QryQ&YrRcHmTetzg~!Y{aBl;Lh?+spKJ(8%CcIin*Q<+37aCh**w#F%o3`qkfYtf z{oM0|Zr1_lVk*Z0Fg;`UlO!(pp-nyM^sGbEU;BDxj*)R^J@L0ODi$s#SR z@PoZp3(4@qi?5`J*}1B$PGDb``Da%3VX`9t;L%%HHR&d{qh#ex z5)?Fk2wpun#eLju$58U4`K`j!yjq@aTW7vC=l|v6-io5)W#Rf+p6km#SwGQR=Uka3 z)I1S;RByV4ho;==Ch~GX)!@SR&!p-gen*{;{#D4`c9}|p(jUZ>T5@38FL!|~o*E;b z@RP1aujbi^crTSbB)J?ek@slUyY|GrH%;0w*nDoAG zo!9}}ujivRfk~x!5i+_@V!#kl`{1o3e&!q6TzAu_aTI9fZlkVu$GRuz`3Kkd-9Hq{ zJC|cUUm63f=~J$E3T_*SszP{TUo;F+P&Z@+4E>ty3(dUGW+>ZZ!_9YbcTnhZ658jU zku-@|l?D69zB%R@Yz+6$`*nGi7z18G8j5zZSYK;8*CTuB(VsBE9e%H~RZ&ZYh?P%; z>YuIV(Q^9 z7L3jZYOY`;5XAeqy*=VTa_+-vVkL&b^LkK*AE(*I>0V*jjNZUCTKFHkI>vX<4NhLU zecB*&e%0if+@$Kj7nW;y&Ux=;1bB5;Z*Y~gsw=qh%{7A0pC*)qj)s=g5~3La_HbEW z*Ir@NLsQfI-wM$sFS;mb!Ed|yCmRW}XDuU|V!Dk@X5vq^^8G3pR&F1CLcHsPxAw}H z1%?)^ygB4vr9Uak{gZBccx7QK?e4N1bOtf&D*B-;z68+1B2LJzX7FY26u^D={L_h=M%buYW{DqrwnJB&XjPTbsegs$c>^7u+U(_r zMlDwQ+m-ib`*bvp3*2)Yc(M5(-L|-KK-6A;Y$=a3@Ke*T5iNf$(}?0445m6p6< zYqUD(2^&MfvYIvmPOCihr8VABl>MS6?au!odbZ5o62#XQjAtCF2VBd8zK%Pq?M9z7 z`~%R}*Z19q8EcgHZH+@Kw$sbRVm)Ji&;Oijz~1s3=mzJ)jAz+{dm~my33S6tTPyX% zB}XHS$?p9czlTdGqn$;Yq6&lprKh0xjo07*=upls(%?2|cI(b9E@}}@c(N+|3x1w) zUbAeo)_S1tBF>xizOO2TEx6Y9fReWYiITPk*HY&L3$wd^n#AQIbr`nI+gum*L5P7l z;nauFI!pg0maka(O{2#a`|4%vLhg-EBZL@yH2)pPb5N_If~VeMIKSSL`A2(|lQ>Cj zp#2j%IbdsS@U0Ta;^OeeN%!w>j~>VHg*ACTJooFGw`Rxn3r^vP^%3g^09~c;Ozn4y z3QM5TADy_7pntXRpeLe}Zu7n_@PGNc6`L%2HK#Ms<_$?Lfp})(`-ec+tO4e z#Zb7B@^>1sSe>DN*&d72NY%cF*ZEjI;}5OqZeLegOq~VtI{i`&y6;HyAAweGng+e^ zB{gCP-~DvA_Wf=q#uIbC56&uz+Ue^!nste>G`dQ2P}SRT+%GCc{zwVFV{0S*Yac2! zokJxIr}HGd(GeBb88MWFsFhaRZxt6_a^D8=2QzvZ(@QU=wM@LcT~OwDCh|VYPCsP= z{Iezs%fD~7oz5rdK**`&V_n#uagHVk)UcBeO|_YD33v!t>I1aCEKUBkIl90P*yu4C0~UX%<2N8 z-tbcI20T&eRkcBx3gisGzKe6p3KjYAj2(IZku3>j$Ln;K{POi@e+HMjoDYe?@_J~ z>7QuE6&+2f1m`Kzknw|NIL5=+fB+d?3oKe4-inpI4O=JvD4Z-!0XehS>VE!Z>Uz&5 zxEPClRqVA1O5Zk@mmW`@u@d3DfPcNN2f9_7{l!i|A+itD?9B2Q%J`*ZXVno-joIfxvMVsn^=5DVnu)O^>=;)#P>IcN48Qle%Us)` zfG5V*N%0J@BG>I9pl9UgfQESL1#A3AH(QlwbDu{=vl9|F$#qZ+6GM&E#;0$aRw}|8 zne;EUTYv;)4}nEpYRdh8z>*geV4=PY#a|UxD+RL{-TT%}ca5#?*N}FGUnG&GsYu%} z+MXY2ev89*PcNeXjBu6br#>RbGzv7Yq z3;O8Co=p7^d)WivxF>T&xBcc=D9Ax8xo$;X`gfe@dF>IcEu)?oXiEuv)bXqOyr(7k zD^Bl+nKvFxtb~)#!TGd~$lDRscL#@9zELsoxg~PUpXIt7O9mm|M_BDq|885qH;&D*Q1WBAp8HwJLM0~70#6ED&)HKdkcTQmjM@i=uv$A#ed6#=G!k5=OP zzUqe+rn9?yIq1q!>ByYKdT!WiuK7sr-BQ_~iPY{Qp+9fB<~N^TdFVm0z3z5P(-x^@ z)~ws&?d@6s`H)D6tktJH!YCu z1G!{hde0FOglc6CA*-cQm?TSBuT(7&1N;0bLHwl;BeZrD&AhiDwgt9DVsn{0012r= zHrwtGhYC7+)WDS06N<;B)^(WXg8`>QZ%sbQQtVSxMt*F(eX%U< zfV*L%M-m8w&LVRs{3=G9nP(;6SRsVzgo}ygX)$ilcei07$bVTasKj>d1Vqgs8WqKy zqx+MG2jX_qaB@u~0=^eBRAEfMw!LmPz=gPov28F>|H%~&5c%7EH_pq@&hYE%L$t>) zbo?vk*yb$h)Zb;J4bt29jv%Sp?hO8?5h8|?=1IDGFuuoPwl$+w)hia;3jt#5Han=_ zKUyo%u{DNI?-;ALo<3KJY@Joqs3+Uq?c`G2^O*=f6HQta0PC5Y{EJg_xHLAoR(_C#|Nij z#1y#M8sgxW-Fonqe50j08F7s9mXf7Om(6;4t27yY*kg1yx)6XRt>LW%Wce*<05>rT)-_+I9T*U;=5%ZJxP-t%vIp~ zGD)Y~c*8Ov^rm61E9B$kOJk5U+r#Fvmj(;oqUx9KG`1p%BeJ~pLL4QA_BqAY z&i7Z^wxnjsY{>qAsG-_1B zawc6fgfX%|25jB)uO$5pVDY%GDuQ3)yrr!YS*Ih?T@U388Jn&{pdWz_nQ8fhzHT|R zT_L~uQ>P#)1t?q!G5y}SWdVVo$autOlnqq5s)v;MI+oQ}oERlL_I%SM2i#x62b5^G zj`EalMc8o@EW(YNi7AeftSS^%U7NHAL`B|r2?4N(g=1Vp-S5zYX#-?=PFTQM{&~9x z>@VX*HMIS#6l2oayt=aJ)!32-SbdRPP-tn=s>t0XYMH(+M$uF%jPVb<>J@nUR+XKW zUA&s;`kFG%V;Id7r5)(pCiC+ypz*rRco9rXrEC(&|C(4sbF#guZmr z4Q}F;q$4j7r7CgAGCFNBJ;kGA&q#OaI4r`ls6y_QPylZKX)b)w@WX}pu?7~$U literal 0 HcmV?d00001 diff --git a/html/img/postcard28.jpg b/html/img/postcard28.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ac52990bbbcd59e53e6b8afc54b2408dce6e373 GIT binary patch literal 107344 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%0AZ)rbUDHEX4-_@@$bdtyI#H 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

      fxjA#t&EZigAK(mR}d|n^wEEJ#TjYZ#{)& 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

      3}%oRLczcoExVoRb0s`vc2yV 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard29.jpg b/html/img/postcard29.jpg new file mode 100644 index 0000000000000000000000000000000000000000..548c76de2b935b986c128a79b6b3a6d9c593fe29 GIT binary patch literal 111353 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%0A7aNkk1@Q0eweV-*FN%C!;}41d0JNur zz8m<4=f&5PSi?TLmQuUw%>!CG=`&nB@}IMZl&FUr2rL4S8}!#o{g^L2d*Fz*4LkO- z_?xTf+Kq^s*5||8_2sUR(M@R5qogrvHu0F=3#D-r2=W#_GRD5^3yjZjncp7dxSWp{ zEWeENtk$L@8vTY}nc`{7GNFi_Iv5PqQG{tzcuFpDa#XXLN;o)|TGz~JKTZmFLk%=zO za7MzdC&ItkOGEgLd#UN3DEQIw3s=+hJwh8u?QAvcw6?rv)AYSa{i1celuF_os3U00 zxLu?cCpr64!}d@3C!uIEX>)j4^;>L56W`s;_jdj69oOwIbnA2%FMW9jl46kxBynqO14)ttuGM1cfN%gKIX>=VmGKAqtC3^4hXIwt z5rV-PW4mso8JVJ?cq)6;knJ^3B1{h4^1mK>X2=oAE zzIVOxMxgqhp{?pSJLHDt#CEDlkO!La@SAuIz6jm7gOGzATRx9-;wZ0tGYp<_M_`9x z-~v)(yyONvBIBOG_vhrH8AmczWl1R3lS&OhB=xndnrq^1Y|}qQm3lQYZ>z$5 z>kR6ssY*_@96l0M{QmBWek4{5HU0LWaOzoO91obLIXt z)F9Pv{4;JQSGQ=b5>bqiwjE3`!5IMTj1oN;C!CwUJ1J$T=t*vdC}C;Js>VvlN@)ir zi7Yu)0DBA$PJN3;H7ZJsVy9DtD^i?Q;}uRythpoAK6u7SX%>@ry^-S6tyM;ZY9`?x zI;Dz*M3YXpvZALc-CokC2DDPNt)je{_fN#T*#7|G6xAYC0DrogYkOFuA$KnZ28^Ah+a+9|n>qd*SEb_-NY;_D zWhVp%y=DM5GR08{B=81!&3soEVwM{>$})LHeNzvChAN!lep<4`HmvAU$})^TDvXykrOj3ts@(IHo2a6> zr3k4n&Tk&;QWTaIV5z=c!;Q>vc)%WodUflAUz)x%zPYvWHlra{0F@bF#5hF?N`e4i z?{H6C^ya^0yle1&7_Fq#mQOw+zH2Hj92X$6uq};~bMR zRIv2rPW7;Lu@!1ljO8v`RhE;RlK%jgiL{cvn|I|(=biq~Ic4bi9YX1hDc zULbtXq_d&Gj%4Ena0rlt&JK9wSLj#lnJ%)3RYv(xs04`OqS-nW&AxT!9Ck#Z}gj?mmBdH!(#a{24t4iwJ*J}R&dEowM zDtNq$2~!I^T}o839^Vg6jB7Tz;I01dQmAPHOMR#He9#(4Xi;U|PXA5Y*-H&3|m^wNnS$ziE#h|I0FGEe$b zCK$GG6bxW`n*7=L^LgX{01WDSVezJn@!G=CAiLA|O$4D{#o5*34A}Vsg)Nre{Yuy9 z55Z50J`I!M&XXijU(2aMY{?{X#VfPE*rY&Ik~Z?CNN<~tFl+JL@)@lfTscvDO0cGt zIL-3cp;1GXCmBi9R^7fwYo_|?`o2^BjaLuG@S#z-M;@wsEG=59qak0wo^Q2%-M^V$b=~sWSG#F$7Eu!-T zLwfHHI3+W+vQ(T7dHgVIhw)#GE;W5r$7!eP=#M0_2YVNeGNU0BxX0ZEy?yw>tHV~2 zWSM8Txl5H$tV%E-V=4#-2b_{f&)`LVm%-IBu%%vgT~BLHr6nqg%h{>UF-rdKmU~*w zZhjHPv@q(VCgnKNYNbU^wMx@dn~k}mt4dBb?5*7=)5pJQJ9uLFZLFkn#RL&SyUEN* z2n_NwJdC+gfE>1dU%ikkd;O+&$H?` zkt=`zEY~`#y-TKF`_8RWf`QCz3qUaae3hl#}OHX~yX%cg=L#R&UNfXpa$_j}dr!aONQe^{5Wf z6=h`9bi&yxp#04dAQvMJJurPQO7XSyx?YYDwvrM8DO*6z;h1Gz%tPKlgkWC5Ny4d^mOc_ppQ)SfK9j!9hkaf2Hp5EM39 zfK(tI%ol^4Z~(!shUVtvrQNsMQdFASMRbrcDqTon?#u1Qdt(*(7Ix}X;wt!tsnde1 zMar6Xk0e}FnocTCtnF`!t6ip#={_5T7YAjuBT}{@&KR{$tw{4!o*Ju^>C>#~MI|aw zN*wmS*PC}fC%4qD4~n&C*&C|gNI5%rNTP^^B}V4`(PA<>fN}vQzm4w9`jwO0;akd3 zRNxKSg$`5_4hxg_j&KJA;<#Ji3u-a=qfOT?O~uOTHyJ4P zTce`W?_Sb3^OMWo31;XB?gwSgK_q8@Gg^^r8fTRfi`W&*ZNQmH$T`|U1ED7$L!6w~ zo$D7xOVyqp8bBPS$|*%|BC1arrpSJou@IlSS*IgQq zGHaIF^?IIX@rmu*#TTm_%W)$Xlx>|@4>IQGfJY#Vx zdLWRZ&EkCyIXC2hN0eKPF7c2E!LK*?wFD6Ogv}amA7_PFp+#c(R}4wRwhXRMCzi?R zG17bu)H8E>$N+15?H1tVxFId|NbescaCZw_4EN|eA6lw}urwuB4r)&U7|AI`IMtWc zYmZIp!oo0j=Tlz@A9PeQklkCWyKZxj;8 z<;WalSBm@!zF53=BarS%C6X`5IgTc>jXi4NWaT1D@=|c-u zr)OzL1BAypa=+c(R-H***>l<-3Q2jnbLHYpULH+*C-s^s#U$kz<{11fIK3CybacLv zQj+(czrR25Lalp4@Yn4X;@uxg)vsr|@gA9X6~&rqf=F%DKC!4cX{3RI5&fHOGdygp z6s|BAbAMhx7;V3_ejE6P1sjW6%oR5rt4VaQfLj?n@^YY`yVs}i>Hh!(hVdZq*X_Xt zub$YsvejdqBXeX=k>HJL;E^FK9l%o}x0V!gr0>Z!{nz-K%`W^ity+>t%E7ZAm9!tTyDWbVmby$3vSIL#>#hhQXxjPQ5$&pq&ePtUD4RkDKA zL6Zk;!O6JPSZ=` zd0t1;Z7ycEecDc!%yJ_D#F(UQzzh=KFb4Drh0Ai^tKxa-aYcF*mLYRF zEG|&6G^q2q@=}CdSW}GWTAe<2pE9~f?70vUrS_E}ePOUdo&vCo`{@ zOBKr%h;xjgK~7SIc}`G-9%$r3bRF)8>p{{RIz_=RcXkJ}^TzP)F4b$x1lRi?vh zadk9up@thMWq-14ZK5_ZWMezNT(QP$`Um}s_5T2e9~*yY?}~pO^xuV1cnZhDUL4V^ zqO=y`)Li(EZCgR{Mx}dsB)W#7CA5+1Iz`-ZC{phW%95;X%E$RF`1z|1YvOmr9at@q zlTq+S@X61Fi1>NqBILMRCiX9^L;+dGLqc}XiSMtOD2z}uD{{R(uE5Ua*nr^Qx zu8Ss(EZ4TSWZBxh)*ljd#>Lx4%98&8#MTF5OMHw5EA*rGknrr%e%HP)yNcapk4^Yt zb|za8_ZL#1?Cnw5P83G5NsBGZBE=yLFgI=jzZ>9uEVDeP#OyPw>0v75xqd}nzq5o? zWtjMfi>q3UXUz_2#+D}sQC-PKHDcu{Ib8m$@eXw9aX*6an&zzxMk6?-Mp9hyjC?lw zttzS6%A8#AN-4T-GEG|1lBq7=RrtZ;UmyHB)VvAsf$SSz@i&Qd2&C4p^*G^6D?3@d zFzInDD$OBAg4XoNzGP9ru^}^j?X%{8_$i<4_`W9iOYn!n{yX@CtJ?UlN4V7WZ?||@ zTuzU3CY7zM(9H2HjEo;rl*WAG%jLk~ACq68zp^*%eek*b6Q}r+=F7zP`o;9eR=HNW zxzbR}DnV$lsA4CY7kw=xiC9F99mLT~5Dy!UoA%n#buA-7(kJlViT3EUn@weF#N@bx2zgR5Gss5(_)MlPb1BBK8Qja$#!Q{%V7ZD#wx{yov}z9@Vuuz2lt z3x5&mk~QJ7c^zeAaRaGPj0M^o)qSQ5o}XxtAJHG#GxinuMf+V?$?>~P_%GtGg|`}f zGTvwqTin=NTWcD$2@G#`B^D7RP(^cc<}KGw>m&@A+Z!5Z?F;dj!XE|y0AlZoo;~q( z?|>rluaEUR`wtCi`rwXTesgzVJds?oF$p)8V}k*djMpLm00e#i0D_qO zQ97KT4!$t>pHS33AKo^jY2me7Jv>?IQ%$JaU)x5HBiqdq#BB8j`6QM90ODeb6^T_} zhvHiFa*P&NnbgKqmj+^ZqcP$9eghh-1ZwT$t2e6o1jl_=sU;d2;J zrG~>}F%bR9(YO>{6N8QhFQe;9w5PDY2=c}=GmMoVz9VO(xw81 zJO)2Mp@FAPwicEnWBv(@-nzz>F42RgMZ--@P3P-eS=8TH(NOlE$j5qKAxo^%djGq;LBY0v9D10sAJsmW=n`f5KTKhX) z+)o#kYZ^NFHs&=l+D#j#^31H`JGu=20EK_HkHq`i`(Fq6mh#t7)f*ApUfK9|2bS_p z&l0pt8$lARGeaP6HW0$xMhuMMq;FR|$?}dJ#$fY$HSuwwEFDZO3=SQ}wojH|adX4s zu=TLC=t0t@hMgL8A&09P^KgQ6=NP#)9H~6#iSqjSEHN2fY;wlbuUi?4h9?W2X4R>w z(y4^USFakCD`GHp-X+w-;$uovsaB?BDxnc;jBxbWeo8 z5iPy}{?FE0BS&)=gS<(n_)dL9!DOFnlI9IAF>?0y_V$+mTY#?77~jqYAcyo?@8X}u zBWWyeHl|FdRVRZ@@a3yS&BD5^#lsL(oPsmSugP!Q6G-^0)`X)*T!c&O- zho_Cg!`f1p)-sBD8O4zFMyeX8CqelVoofg@#3vynSbr zM;VHFc4s=$obecJ);L#ArY^d8n%Igy-u~0r#+NkVN-%@JW^V6xU`X@uH>+UeS0GisN2Fv4Uq*{m`Nrt>kodOKxL?9amA+9$w1Hqct)Zxra| zp|-UWyjM|8Z!8xfBes~#g`)z0G7l_?8FL_B2sr*|ej0e|!CxA*twZ3q#ptdk)byKM z=yZKTZO+!$AyZV-j1%V0e0lpie%PO~myT>aY4Gb&)x2r& zzVlT#mYy8Czq-5oR+f^z?wFf37$tb4j!={NX)!)hxCK-xOgLty7dgmrSgfxJkIeIo zzc8s=i*hMukbFUa##U*|7nESD(yfNa<(TSmmN%aS@N=b!oa0-aN}Q+lJWW>*Loms* z-2VU-f}z70?6(O+fw-#ymQ%yzF9l9f_IPa5F`-U)ybfc8sXt*?1&hIAsY;Afh9Zre zm-GYw00nON)8Nf7_Fuh+M)4|MU1}|-&1Sky>=U~|9sEpo?2~jcd2#P-enJkB+C_w%UL8p0EXazGmlS7{aF71f`We9{{Xf3jeZOGYetLq zYVeQ3?}g6|lsCR8)L^`AT3cZ@jd-!dq9JCoOJ#8pVk8R5AYiCZABcW9zr514od;Fb zFAHC4?W&!&>Qzv^uC;E_{LDgwa&;|zkhFKteB!r`~cPS0Gj&eLceOFS|HTksbFE$%NZu0DZlx>A?BzIN}!ElMkA9(SFuW!&b zEk0j|{x1^lTZ^4(-0o29BJwr)!(_h<)naVlivoRi5o=i%tWo+gHPqb1Kz8IGeDQ8`pmg>1i>#YH_iRd%ms7t0=+{dOXA zz~b_Xbt<{i{?5WyoM9&f>bPSpszzTFZ601_Z57qkuifiXMW$+6LyO5K^4c&RfWh_E?@ zI*^048B}VMq}uxpIHujSQt0&ilf_q-R(d$Ii)zUyhovlv7tC^J)yWtu8@bp|E}&%f z?_V0(S_!Rn2g0gHs@xDs3dkE#kgBlg7$HL2NdTUvz1PHkAdc}Nx8^IMqs<)go;={M ztL-~*gUg7pjY6Oyw-#fOUL~X-Gf38eCkIiv0BzldH?aYNK|jFR$vEeen(?IJ91aGg zW&6i0o*Fk9-R1RZ)VfaB=BDi4yLYkeREM?A^93llQKu~P*v9EoRNlCo8hg0LW*ms;y24{w<#Y0v>69- z;BxKQ^aS!N@4XKC*HO6f?ajQ8bPtEF+k9X=V1H@29%7jQOyuKY9l#z2(Vw2l>q`w* zyq!L2PFY<_YNAOyX81Iml)GswB;Jc%PqN~SJTa7TbtuioRH<=KwyR1vbn4Q|YSxV@ z$~?+E+=}V6`CHW=2K*&ev;Clc9avu6h(W)-w3p8;A)ZK6Q;3-re8ywuERGnI2*eGH z22bv{#6N|P29I#Q9gNPG@JP1p7)D}G+TsCD)M5#eGDzwH7{~zr9{f9k-s|?9@L!i2 zHauOed4?cmnS8nYMCG~gru&<5q)^%yrba4-f z>r>}V$~CFh$nv^1sn3<)l2D$>%F;>OO@Ae|zX$k(P1CNS)->tFF-0=7ykxH>r2w!5 z6SEoQ5_rZrKLhx)L$+J1@oh83D1Y@q$pDqf+yLwkA5KkwOnxfxc9E)SGr_1>$8!X* zxtDNZAT1eIKi+Z|j0_H#0Or3kJ~MvG_SeGiQSfS_%Izab04^DJuH_7wJ-TuEcIe1( zloc*q4l?y0BUlRaP?TW=uQ*NK6?xLPFEk|<)vnqy;%setn7V5pgK>p8sueMqX*sCW z(m%YU;--?*nYAdSmGnpBR;lp+08rFoH%S`1;~|7&a0KTW3zp6^*VJHV1L_~y8%{nJ z@t&M-&_ylJo)TFiZQwLFC~$b>u2;w?U?0s9}nI}2~i?$2@weBs`7@BnM;__KzH}lvq#@l@H}3XzhNYDuP>O|Iv*_`>h)7QtC!5$BI42p8`LAYdRFS}?Ctl8UX% z8`-HYXi4)$CY9Ys9TT!|f5ABRu2!=;RPeQM^7mi1jT}0HO5GZvX||s5oVDKTf0Tb{ ztudzXPN!=GY(#o>&A=#CFvi|gS3&{C)F&%+jxmBorz6m_~j5ZJBFdEf~e_|SScsw7zA<6e!Yj2qm^^iR#;r#kFuwA zIJU5Al;sXq?P`^4FEpa{<+1r3r$!u8m{Ww5;a?zen^2ToBC5r~*+E@$>nVRvk^Q2c zX!K1y+{|4d)Zud)0t<$cHqPzKwEpSxKc)GH_QOu^VLl;F}_lL5ot3u66>eW8hw~Dp8nB@^( z%ZYhps#Jw+o~#~;O4MVAOPM8jdn@TA?$!GqS$V8JljCT#`EBRSu|}(MQOt7S+mPnQggSfr@p z85kB~R{`TtI0Ovjl6dCZRk?!kQs&sSDmHILAgEjhC5gcR4D9G ze3Y<}tNYC*S*Xgio!-u;!mXljWA}a$#m*T97KLhxtQ|~cJT51eF^j`gv}s0hO3|ES zc*|Gb{STe)e9Lbe-K4Q9E8V*(Im0Q693Gwfa0hzmJ|RhKZ*8W_I5B^z3c<0T-mIMG z7~HY8G3uv)c=4|t_@`X({{W6}bvdlk=EO7$3<26Xiuo`rxd(cw^VW3=K>1a9Bokc6 zjy@{G;`<1ph6{^H?Z6U8a=0O)R|*lsZ6J?sN9I1C3zuU4zk;pom(}M&l5?ixI&~aj z7`HA~1D3nS99R7n8-sksVGaDjc7-eCGgZ%a!$`x{JJK+4rk)T z&nB&8+h6C2yvG>8Dwc{ri#&{EcRz@${{RQC8VyfVfgfs{S>-N=Ew&9mQo3RW04}Wx zY{>uVPc@6SUdvC~8lOclJ;FFL&8z8UJ zI@E#e{2M&#b2X;1Y{(ItESkN%Xs+Ys2pdiesxV0{$jBq){{Rd~`hUa?0^vzf9J*-* zcW&U#G0GNv9)u7E0LM}*zY7;zCB@;T9(&>L;^)fMDmAK5l5Hn=s(5;8Hr?H=^yHz5 z`mYt>>q;-0wlznV(r~F$5ez0Z!u+yLdrHp#01CC?(KGau_7m|Z{35@$?}jf6#}qeL zx7K1ykYs^{&xd2M+7dKZVItj15gUSg^MU?`k14p)^+!^yvszs=Vl={S7KUNv7GK?l zR|=q#GD?%)zs=X+rlQ^&{jI(h-6WGFmtH9Fv$H|W-d+5fTp4w6stH!%h}v8DPa?n3 ztHYNGsd#5ky$)S3w0kSC)5Ico7g}T&F3+|{-f-+m1#$rG&3#XYRUCN#06BFh%PiM} z_;)ajd41ZG!DDOFt5It0B^+G^E6Vohly&fYK%(n-F@mC!am#qui1LVYH)t$f2rpp? zdpF9QusD@UPO4niv{RBlGCW78te0Ayq^~SbX*_nJWN_FkZEY#o0N@6c=Zuk#1`cpz z)2;$2SsB0p1}Bq_{XZ{i==^_i4x8fN6(pe*{{Z13xJ8UBt2|J_Yj3?(jzaH+@$32y zO?B7`gXMwklk4npU)@>Msm~Egq@<(maM((hQMKJnJ|1toc5-Ros%P?N3{|TvlP^@1 z+lC$#=LC~f-8byiTT+_lvPwxkHg;=I=-=Vr+CJ5Kk{|(6AfOB!hH!GkVB;f@PgCz* z&y95pZ7ae)Bfh$3NFmZMQbtv0!%q`iC(5CV6C|hr0|1^#UBq%<4(1Y>K1VD=?sMM( zADrVoah^|4$1C=P*X;Z?@Mp)m?x61-j-98&ad7D)E2`F;?XCIeg++xyi+g77V+ETnzcXo2Mp6B&OGNnu>4cDtp({rPi;_Jdv zYE;@vw33^0Nu;AB<86+WEn;*DtJ%xw(m;ySkQZ4-Z?&(OST- zaK)p(w{pz86ih>5gMs}c{2q+he#Sl|cD0hlBk+!;DtYh=sgXR*Qh3R?mB8}}WMxu> z<;Tsz75w9PJ5v3hwGw!fT(zMHnWAm=9 zbimSFObB(2n+mxf(Z%16{1b8e8~D2O!E;ZkY1)R84V&rK@mSwoL3cb*M#*m*ZX1K3 zK5IZ2Tet}F7I7+GRGd%)%~oLnh!UlU<*n9A7v6>2rBLls7q7lx&Wtl+C*sH`+9 zO0;K6ahvvWb4|zg9L}X|FVWX9%lSE>Qy}4dMJVC0)gbUxR!fdmBaFn#3j(U*F*B;L zw7r~tl^Dh~sX22^{u6(}K5h<|@Tc~$@usbEq2F28H6^&XR=1o)FZ@zBeSsLj#Cd57 z2#3t51`Yy`XY_R zxNRHY=f|YeG+k=u_VdDe)}Ugfv@Uff_T~Sxu~Jk;`p+ zsozB^Nhs3{vQC#N99NfH=Z@7-%>jr@9H>M7*mxsJve$oYZyjCgcFC%kG<^$AlkK*^ zTgL>_c=cqB7Gk1hf3Zft>dc1=yoJa=E`PxvJ|y@T;pgm);Hf-Qu6TdL);eyABe|A) zWUyg!{wMJSCgOXQgnh1SmzLNC^WD`EVgb0v+aCrzIjL)(8FlZCT36cdJ|B3N9Wzza zwP{sjwY#+4<7w7a6SQ{;1aRuMjlJV|@i5~9HSwGqN|g8?i>qK^96fyRi1I49e5w(z zQmrZ&J~PUpjjc-yUQ(}7;vs~ojmFoZ8Z;;@OlG6WPnx&x{BW^YZad-325CzP&%=Bd zo70|p>8w5@9W29yarAPfi>%>JGKCq{d2U-$pR<#O7Y$COTu&uRv-%hIqxk!ze#+kl zd_(bCPYhi6m2_mXip#_Le2Zx&p?7_#S?RX08??2&7O^$e?W(gh4g!WC5HdfUzm8w< zRG*1IwC{q&mWS|{RPeQ-igBoD8V;#{s^8v4aI@_fbAM-P{#x4|9?_Vsym>e1RIrLq zFZzD*e}_IF{AKW-qv5?`JtM^$1;~w>*;+fhce%H5b7suYvnw=r2^8^#au!(QW3|@2 zcS`UV!GD3tqi7x(_(Py+cK6m-0iQv)KWj>Jp^3xRbDc>k(&lz`CgCr0^1P1^ zmSd`CR5*(+$7VILbTaqD)aX|B3K;KaiK&SC>}pP&@l>l(RO0ALIEppnE?P>JOHN3@iBF_+jyP;(x*K9(Z3-@e6A@2EXCEn|qj= z@La~1P}`ei17nAUqY_!eGDdu~X`+mcrLsS=uh=v8t@v&GVQD&UzvA6m+e-0gg{`jP z8gxeH(A`gIByuU8gof0{OyVNxDiYS}#xP|IAIIhR>@FXM@!SQ)6{=zBeMW19GrHd1 zr_{07iPVj56~$s2o1=xO-0`_(dbMLu4^Nv9I8&7v)2sXTBM<(t=a>%>cvZs@iNfYT zS>s%n2Te*i{H_j^qs7>KJvwzKEM*wVmJ2t-LUiKmdpgutv8dEPMiaw2swKbLY##3E z?W1!ow}js0p?ITNF!S6iaO%S<#NdGK^8=H$xg7;@o+j|5 z7uPY(CE$`*P?1Fji>*c?R6@Io-Mo;f10eDgo}kxm0}t%*4wV|YeR{ZhEn*`_6^XBj zmn*!X?I7a_LNey$lG1vYV_?12_cy@HReJ=Y=ZA#WF#ol04lHkhAX&TA2MRwtyM4tjM95&on z-ygCk?RDYL+GD^^;GY)i@o8s3(5&sm&vR=v{lnPXeU@k=j&T!tiT0SHk&-aPMDhcI zTD`yaqWBdTiS)~@Dl1(^?hRcbv@zR9r0MID(^`iua~GSqMRbq6N%HvvkDDv}-0C_% zi9cq~j=GnCbjfaXtsBI8js3dbKA{EG!b5WG@US5*=d?YvPpGt#6=^^qulI`Bya>P zgj~iC;(x{{HJ0#~fHgU6gb?4we>5x^NeSopv3L1vxiB6V&R97pP6-1)Kz`AmvW=Sj zUe^3eCy3TqUfw7?%X3guWS8Lx-6Z-`pwiM4q2 zEk|23=w24I)$R1ip#?2lWEzdj;uR61AGGS1o?Gp1Bo03A58v^Ic~>{3lj1VW4GJ79 zlVCGEW?x#YqgNRjafI<%-3&e_9|=$Ea#EV78gb>Pgr<~SVN!J^FU>fAB*Wk<@kBEm zOr^&BMVe%^G1yzwrI$vJ2jl7Cr&gUPQl~sT>S3jaok&(ys?Kg{H5k)`I^7q;CB6{& ztHjgX6-f0PQX-Z11~SLu>vzCV&yX!n6pU?EIO$&?{6Lx}zk$@9?ed?Su$od>oczU9 z_5T2Crg*QVuKpqE(|kG9{0js!8<}t04zICiHt*tTgS@E7WQ?6kIJ~zTRkC@@3i$`( z9pr0$XsQ7rwy;9VGH}OeRVcV800Kw374o@9x2HolRkfGbvuXPndzEJjmFPM#os?U3 zp&Q1|O|EGu*)+ZU<|=uPQS50?>T4~?qU&nu&a%Q*`tKuZE=qK{xs+a z?|^H^w5?fmjUw7ufec301mNJPBa9s98&6DUIXJ~=qO{k)ZMP;V@*S8RrB3E{2cd3Q zf_q}QXG(Q&@~Il0#=UEMK19=vD9$Ot~|S`913#yrhEZGEq6{X_8=QPAvlYiP8#UpieWgq~3h6(;`LxJ1ZSP{a6+ z?E0M7m1q}enpU+0itMX(JicLlgb{ogU;&)vh|gRcdRA70so31y-AAZM&vcgU611N? zaSVusOLPh5ISLLA{!bj&uzQ%a?PB;LdsV!Y9!QT3dT^zJl`X>Xa7bamz|Ivg_o0Wv zDk)UMRLgMtDNe0yE*5Z7T#=77YEf=&sJqQsO7E2GrBTBZi^Y9m&kc>Eo8py4%<0gh zh{RB=sifC3bn3MmHKZi2n@&sLJPIv!eSbxg?ny19w}KH1#Kl|8^KAC-Cu)TtpO_wc zgn5~cpsC2iZAYlT?c488*~Ir*}GGHpC%Z={VX z{h^RsDnuF63IdO_43IK#pl%+&m3yCsz98wkf$<_MJdt1M_pn;OF6l5?@WVL4Ax;J1#?;_rdlL;)AYTC}cNJjPh$x7VaX(F9G(Jn~AY1;Y`^HT{M7F68TwK$fBx>U-e(d-?s(gdv$GA;D&StivplalrXcOr%-fqZFFjWeUbX!*Nmk zL}cUvz+C5ySB-_IR*oK>TCKt_k}-8~O>y;xPnV%8l-rXr0B zb=?_8oa#z7Qk3Mc741|Le9jJ0idU(0n>=U7zXr6Q7p>CVTEi^JJhhbp45bPAl|cj& zPbA=z#(jQwKeO(k;d{9zvqhHKPnvL~$i=d8oS)$s=YT=aPJZx$=XSrSM3Q{68Cexc z*h4dI8DIujXBgd&&b3CEw-cLYWBb4vOJJ!3owzvQoPsm%2Q|-$#Vl+wm`qIxVyQxL zqX{_4R*Yu{da#^g;??Yua%tZ7Y}W;amQ{$t=6QWjVeOZ52_Rjtv66h!(cwJc%Pm=&3xwlTOwK*G)2PFCvUYFrbcfxklO<}5Q);98> zjZ!)8;)`Jjs^mt_2+0aP$Ojk|^f$#nhq_}lciNmr-Ww3pz2Zd~5Ts|!GJ;Na#;8sa zWN$@0n)eTbzwk>h*~j*S&@DVwsC;nO?=@TKlH%^q!;?d5Y@J;Lpf?tQ=g*uezI+PULVTkrL?4>D2a)PTEH)rgcc2{v)vzIgDsyTjLnPRb6 z3{6OXXjH^kt%jvn6Hb$_N|he{rZWc^Sj4i8@?TQM_tf-J$HX% zUssiuE8%dv6sq4!ts_XgS1D}aaKMrgKqZhLcDcK^ztXK_w4Muw*b2)W$tLUoK+G(_ ze6OC|liXL<9wYw%f(!g7(mX?J;%zU+o-*-mwX{M=>@}T685-H+iZX!m-a5xejd1Gmr%X8iRSZdeE$ITXLL*Cn`vY7>C!Z1>oB;e}BLUVVg2{`^8jPWamGpabM zn7n-HVrk|Q`nDRj4!t_`aQ0S(YBf1zs=e<@RUp>UTC?+);ys+v_(NStk#1ytHuNZ1 zmQAeI((T(B7?i6Y^=-jFD`O1`*QX?h`&8JIj1#|(lMjc|fDlL45OAU6aa zbNP+%-{EJ*uZLR4#LZLT#;0!&nHnK-mnEb@bMlznF?jeG z1pVF@f%9w@SC=f#oTl-7NtRTphrwGBiIpU$B`P%K8cMZAPMoDULQ-iY?JMBV7q5Ud zcGWy3tLcK?;L9!D&Yf`#J0OPOv}Q?S0JBO|95+8JbmUU_O{Ix^DWw@6G|jZ(nDtg& zLg<~tB!U8g$OnK2O7?%+E8}m+9}s*u@dto>RbeDHGK-SRY^JunX-$;&h(x7@v~A~4 z1o9M26Kf$X`-`WY{4Tad(X@xOkQWi${jM1f)eJ9g_bvkhLbep)a7R!xik>IH<#juDn)X#=W$?J&^7AY5@Wo8RrCuPOBL|10 zhQ(lVnb5^yv0qt@SkZX86)H*+rA}0$s#T<~IJmxLB;^>nF9GHHGKqCW&93DDm zyu-+^(Z_2dt>kdH zKuIyms=qGms-4Y&-A3Xvag&dc&-h+$tTEU+imb6zqUu6*6r~%*E?B21rE6)szV|;u z;I22Our+X5oE{pU7Zl-2ae`Fs%%klmD7i%^9kq?ydR?B6@v7g;*52hxlJ_v90M1c> zjSeyiMgg~;r=0rNglllT77up*Ola|w_pWl zr8;tjMHfzba>=MkMlC68cCD?NZ&cEH_&LIbPwlK#8GT}!s;g3|6?j55RA!`{F4r~h zcHd;W9v%IsJ>=mYbpj(QvZ|7Vvo-)Nw4S2`6O7i4jN2}qT^RoAC3h}a)Q$;VzzlmX z;5p>=9D)L5k}{-842L^PjAVnHk^^H0zd7TOE3LGH%DOSKx4deM~N=*76ktR<%`T53^IllZT%nm&68I7XE@%|=Vv$}(`DJX(^Ey$N#0 z+^<_nHu`zf@t>C^jBFX$DcYr&@fl`Ju)QmmDrO^i^~8onL$!;7#-5?1K*GVBaU)770P%n?8mL?4w(xjrt#6|Y#g zzcTnrO>9PyLXcjeKih@*>Bt3PbMyH!ofRDX2pVrNd9gnx;3QW5ugQ|7*j zJ9+ro)Wc?Ze4M51-FzgcA84V;8D*FpJnBKI!fK={(4Cd}xuV}IQceA%;i#=7`1A1l zTAx_cw6E;15cn?fp}L+(&A_+Tbg1M==8Md7Sz?j4^B%#4 zjK`^X3&9tDY*YQYOU>Zz4tE5|LX3xIDhMR8$jLeX05xA3YJX+%C&R67CS?zGr`_4o-;t$!Y;U)Yt+s;pdd?jq&MYNX6k7wZj z01L$Nm1va*302bZ4q3O38>cwN zgz70(ydCN&d(A}b;%pzc@Vk#F!=1-0Po>7WY<&GmJz&AMZd-9DMQE8-_PB!IsOI;dl{w(2K zLXKHpoNrOl&2uVEE>+7Pui_;X)D%*F^|rEBd!N$x!zgAJB0{o%$HmeX+5uo9wcC>X z9ENSU>w+?Iit!KlC=Jrve#u`L?aaPFyzr&aQ-*0nS

      $HQ50$N-8bJe)ElYB-~w^ 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard3.jpg b/html/img/postcard3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1fa6e6d0b52e7607c6b83dca5a87b32f2601c0c GIT binary patch literal 161009 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard30.jpg b/html/img/postcard30.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d6caae13babeec3f0e97055fe8b8066acac0534 GIT binary patch literal 20984 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 z

      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 literal 0 HcmV?d00001 diff --git a/html/img/postcard32.jpg b/html/img/postcard32.jpg new file mode 100644 index 0000000000000000000000000000000000000000..827304a744834eb85503a810a82914aa885ab49d GIT binary patch literal 88699 zcmbrEWl$W^*X9Rz2m}odgG++D2N?+N?jGD-f&>CX7%X^@VQ_bMcXt`wEjURw|9!XK zt=dmpySJ-9blr1L_3w7otv=6r{x1LB2E0*}1IYmp5C8y#e;45I8bIdX)BoT2Pm=$? z4F6XD?FQhZBTyrJM?#we*Rw~ zBBP?e#>7IBl2cOCexzsQ7ZgH^V8tb+wRQCkjZMuht-XEy1A{}uBcro(^9zeh%PXrp z@ZG)rgTtfalk1z?Uw8Kpk5AA4;X(i){r8sr7uf&7h5wHW5g8c?8SOt@2#7xaZX|qU z6k0A+0x5MgbGNs2++pa1(usLBJs9*n8dpRX?lYLgK;9jO>;ItrPqP0zu<-vUvi}DA z-(0HzY$Sw#9}fv1AOTpZNgjLIa~Eg^l<`O z45JkZ2L*o_ec#}=^G&tUDE!{diX;w|RfC6~J8y&|F`*AY;IJ5fZP=Seo?dB{;Eb*l zCE24Q#JbYMBnG%gY;XNuLfRy#+)`;cC^|aZuomEddLyBy8IkGXmb`fF;#9SDu{7ne z#rw1F`#_R5UPRswh~6YrH?pSt67(;m8uoWdfURC5BW(R(8+r)`go1ZSb5LsIua z2TXj>T-H0tB8%~HzWrUD?k{1OzOV{zeq2FShZhTzqu}6@Psgu^`ZbwlQ3kP2sLOqE z-{7Eh`-MiIpL91f)-CtTVI>~vdE*4Oh=z91=*P^j)GQ}3Gew`-AJ9j-Nb zm!MiE3nZXMIAWu_8tqFH~{P)6ZWm%P?=CQsrk?c3>mMq?Q;sB5rX#&d~_oD|wO=zv`jM z#8_ry zkWwQ8)-;24_fSw2Lp|nSTj;wCYM8#(7c+cqsMztNmA%=mO?X z>v+r11-H38Jai9Wa+=X{zmH(#Ft4JG&-U0;oDmG4ohf@%)HCAkgjTsh`b^%xE(?NT zg|vxD_+dcR2u{7QNim`G$CvrP0GnL%$TShmR&Hk|O1I|Q?lV=YC&uP7JffAg9yg+i zj(J6)k1xEXulUoAsPg7nUb_`u8MZO!ag6rt7pn{!0%x=eH`!sp)U{M?l!Ove%B)(^ zJ9k;@r!V&qwS*TA6Wsv&i7~6cfbFf4IVJ9q6Okcq7!zqrgXUY6`E@53hfJe{hK+}y zi5F%VS1S+v(*?5|2Efj^U6_^e_k5@d*eq zm%vDXyS@zp$Bx+qeZ1`N6c*mFv3$oq=lpSZ!Flt_i2+k?iR!edKvohIh6TyhCGjS1nq0pj~BT zFY`wWlCRo{-ghO0TMFirAbBHSiI~&TOXfi+GnDaIDK~?~*qwLHM+fwvq?9MlI9y=h z8B*_B=a5x8(i$TxWvDRHCcPDvFkEg>BwE_2L~>3^9-l6wxePrxC?Tu_)a<+P*J&o=~T3CJ_qJe>2!H9 z6lII7z7MJw$|b#;e3u;5X&sS&!nnP!ZYodC+f?7Ae7txsf_Jv&nT9V5%)_5YH3}yI zen$?Anoe3{7UsNXmTNnP479r4-;bnClPgc=RuXcxBx$n!ZTWW2Yx>)5<( z94Icx9JlNLM60cjbV1hVDz4!}AhK;c|4_E8(yT8&+r*$%tfRxs|Hf}*(p_le^gEvV z(7VjlGtL6IGWQ5D1q*~KdT%`Bp8r&tmuv}Ox$NPK*`@Sn)0^mk#nD=6uj+qtlTiLy z^VxGyie6|Eu26C0t2(F`TNB|vy6Cdu?!fx&aM_ssCphp&F8-q_hUzIF54)&&t-7<* zE9Yz+VaDvGR?4rg5XlZXnmrNR5>^_X`RLJpPUv(#An@*z^xn430H zJACWw4M1@Co8{X$3adR=p4pDlV9e_ZkgzHW$Q{~Vz*w2|m@@avxWbXjT9x=wIE!BQ zl&eI}+g>h3ZcfKVF6pshfniS9a&_N6u=!^S{b)LZT0wS%x%!`@Kmy?_-yXrr5be1I znhZZ+IBybHxdwO47YcLGlxFs_m>8&vEGIzQ4ZD-ME796qlx9nrJAv0M1^ed>k{K~h z(nI5y?3cAF-zoT(Pio>&T)~{YraT z5jK~OPXDzaJfX*-K0X#Wp*7#x7P}wIC^y8rwWEzgSI636=4g?NH%-9%#OR!B^g6tS zZ2f0oztbe1yBOQlUgxw~3wx8!1*q50nfyzR0ve4~VwPo-!!%d|v2KiSm;48<>nzW( z5BFf<6DW%PjTfyvQwdw5(PSMw1W}$QNJOqFTo62Ofdy(Y^iSJZnJ?DRVi_i#bZo5( zGg6v(7rX_iLSEn3XySIs*Ww`eFTAtwNIwYa*WLM5V8DAi_~)XctbVD(wxVONp>bnn znz7B^fikkUXpxj53iS-Xr)Q97t;^r!iOuNMibPVHWg@gYufK8w#JAknwczniw_G=8Mm7Z~m3={bedMDtnkXQ^|i{XfK zIqje6dAb)M_OedO2Ta;Y&~l-tgn$ZLUEQ^)_lGeT_P0i4p>eE(&`=}1Oix>?erl+@ zL8+rSL)5D>N@sR~VL?z4{Ll93pLMy)EEY%rxLQx)xw^xzGbhk|Lo24%c5%$zy#-)%%9glS`=rEO6|uS8H*m2KQH{&UmTq;)$x7Og6i1Mz=UVwvOLu_lwT@Vj71EdS8}1L zA&u10m4VvS5f-z?0-P%@7kpUijuf>qjjTU3q{+S7OSjLv`;vyMO3(PdzOUb#KNtNL z<4g;-ie;+i1^FY0;(WbTb?6Fb_7B`PT^|#pPJ9 z?W0?r1YTOrjab;CYn$?jT|-O7?o`5aQ?zw!^&Iav^08uTM^~E+O?!$=fOdxG&3GO) zdB5a#)zwnZU%;CX=dO5h%oYebuLK^gU524ZRn7WnSctvVQRE0NSMkN@0E~k zcWsTmiObi@Z`?FcSlv3bL`Tmx3B_A&q?thE@L!QW@fU!C_xLMN9(H`c`X?Tz{=xgy zGk1AWfu4kb*;}1wjK06Xy>gt0og0sIuidZ+7Ip6Q>+9C18cm|%It32%OjkDwM_^p> zR5NL(#btAD*)Lq$S>}v&H;bOnT;LWkjPGD(?~e;Y8%{noPmShj7Tm9L?@~ks>Y*5#1u=X1bFufy z8y|mp$L$1wetDn5?s%^L0{S73X}!TzOO@6w_J{XRojz- zRTZi)T{xH2akkK+-DFVqIbdBmGB0eBtJ#5Y0n;tnVKCWv7eyzY#icgM`8*^;-189% zcYKfYD5tb`w3{?$SYj4sexoo3GZK!*-ui$;W&xPg%27cHT&VKxJ#jRazWrD|OQHrw z-zR=kC&hAG0maxK)GIGz=+_YWUMNe5Qx6ytuXxdxHw(nTo+D9EzdQ`e)KPzTth+z& zm-qx@8}Vs1{&L*H9D+i^YtNcWSUn_;oZq^KQEX?OEVP1hDw#kOXLP@%o)=8LD#72!q&Ddg2h+Fdaa8P+gs-w$ zDcQ@&J-h)X5hDDVbk-Wx2CtZ77tr!7+jWXvGYo%wS3ky3e_j4PU1A18f?|U%9ZLK0 z=}FWLtT6ic1+EeUFZ;o?z=2#r;AfBQ{R6)~veE{^0*Iqi=$6E;xzv+}^CKpK{sJN_ zb>}NMeuCkIH;Y2~w~1Cf^3GHt-%ArXcP!aUhaj0Ao1GXoRrtd0sbad>@3>(m8ZZe< z-}#7K_9SKKIfwVgD#+CKnfl&4KuF5$N?)|-nhUC;mZ5CI-5`sh<(7PjTnXQ`SzRk_f5l1&NE>!FRI@n{kaa@k(cYZV4aJ0*SuBn%y=#VY$+rlEH!u2J#b(7x_ z29cl`a3dDL0uQQB9IB9xdO6B(L=eOk@MnPI4b%C&3TB5-*hL-re@qX#x=zppiYk#j zi*9uo5$GOhSq}+Oen54+_zMW_e1CONfy_VW>-dKNt71lh_C~v4*#^I^4WZe|R>wuH zSqR>VvgqZg+trX|*Z9Ej`eRUGjiB5i-GiS(p5xxKkf zqDEaqbZKDdUb9VTWr!c{*{-uuxZvS^IVyX^b?|KBA!qz+G1iC$L9g za6(BpR)kFVHz_fuZDO$7et&_8`{^iw*4~YZ+fv(1@cT`Bf3_6^BPj4QJ!l%?aUa(N9VDJU5gDVE+aDu-8&>5nG}A4b`7wd7YA=S&n8u~?S!g% zqynu~J$fW$jA7A#_)q+0yHjzTC&gOy-}-(G1ZTPip9VHl2FV+|7%UeLVII$oxHdS5 z7$~7B8|qa$_Amuh-e0r@E)s<6#k%`7_-oD9m;5%r(b6&5Ysr57<>;d24|x@I(kj?m z=`#;LiYsG&L&$`pU0tku;6+LS-o{>>r$*)E*l+BbcRtr())O9jH$rDd@E5=v*2sM| zzWxfMr_lX+N=;g2;MLr@xb4?Oy}34u<;2J!pG+Xd1_s`StMumnp%cO@r zbF-ph$FC*bil*Ou3xQ;LcBuz0xQ|&5KK<#&^exH-zPN-R!Tp~nQO_*F-Ag%ojcp~y ziX}LEkb%ScDxmX8>G#n{DRDD~5wt2&oN1eKdmn$6tIo7?Jrz!ymL_{nMzFO6x6uem z>JDiXCYhXDH|4FNFv&N*Y?b?fAb#Wo;s@!Fy8cq^c;`4qr=drB9diG-5Iq9NGWyEX zZRW*DVbYkF2!>@N-x@_yrYD<(yh4tumf;6*oQR6czds>?#_t8ZF06}qO-P0d9U-z*Vy z_bGBz5M+KVs?5&orWZ|IUbqgNgVY6{Hymu)1S_k4fOFa{<Q-{jIj+_P}h{x#)ti z6w3Wnv^#9(r_+5_qDq?Y`&er;-1GBT7%NvDDV;sA3GM6x<7hs5$=v?p>G7d{3u>8w#9$ z_9NU{nrSa{;+aqHlI>+t`JRAIO&i;Zb&3uZQ_wj4TJlI3e?7FM{yN_E1EbH|u6jKq^!``keOX9G;(|+-)G58fVFPx3v9s+=ZR%(>5zlr)F?j(o8P-<)LB)MG? zseA=DAUqSYEGPGd`y=9w#T|Ar5#1Bl z?Jz_8{N&BCjdm7hMnnlnyxn?Ue(qKYRq-qYG9iDiMDQXgV~;JbL(@Ta@87dz8!~CP z%;lj}!Wz-}5J`Lh6A^(-}SB)S@- zyL{US$^;%Ky!{GGn%>s=#NQhIm1f>^ z$*`>0gfY1c^rMLoGgwkvFUopn(ihp5==AxbAm47=5Q|)?Y>T~Oeq7BdQH=|Ub?wUc z4~4fNYCN?`?8&NMd4*Y>4_M~IS5DH>pI@O48m&I417+_mEMOPyXi#(}Heg_KmWO$E@JfgU8eiQgTrlWYz>F&q z@!v>(tN-{VREC+$RccqPHEu&hVV>Q|fPDCn81G%Wu@vz8VFHi++D$PsQmEvG;ERi4 zi_&o-)haE;r+48Sy`^!DySYNIB*UXy~_=vJV-yYIY3qmIjP0lT#5!& z2xtqm3^S$fUuTPif98S4b*pEnWUJU@IHtfZ+Uj2~gK*1}cv7VdOmzpC&i8gF_?V@J zKn9g1oxzT5j=>M&l1rT=N5YeNUT)^>WxPAf2H|R4f;TrWUz|w;!vSZYV-rwuAVccl zo$SC5yLmGF9HzhzlNf>${0L87Jgc22t+VWR`j7`@g`G@)a|>nYKP87;=I!t<49)}H zGqg|aU8ef!jqvRAMU6K3YRY(-g}7v!}+jre>9YFD$;G zdgwT+V5bWG@rw+oeuJMpNSes+(?|mYhz#G)yg^ci%8b~JW&Tlrt531O}FgBr@GNx-gp5gQG_U@?w?gHk^4B%kXCMHiduqG4&1 znqcnw{Nqth-MvUODqF!7{>6+kwu%ssVNuyWThgU3DW>+ntH|WCvLU_NakMWd_q83H zX*#uvOP}_={sN*m=@vFjX(pi`rRXJ(N?4<~10z^dsF`R=aI&nHrcAh-Tc+=TF*=@( ze)NsaPoj%HxMRSYawb=XWOv^ork{KdDw(is<2x2!V+S(lin+0t@J-VXgH~F|?4{$l zpGK0hUN@eq=&vRETw5tt8}`3V2@|0&hwv>ojNq}+dOu~W$jyXJs`$QkaZGGrJN86#kxeCX#?K*` zRvy3VOZ#2y_UY6N50NN?FeuzkKA>r?J!|%Tk}l~LWc6H~ZDh?BAU-QlsZ+cR=(Md< zl5K>=4AvLVPr}qEdbInj7s?oClTUPerc2oDYn=)!e>L8>K6c&r)+hXVL#}7}Q9HvA zo+`P**7a$=42b=0p17fieRrgvTyy+#f?Y1Kx<-zcjA>xOH80cELjwznhvt~s&`M{DehD=*AtcTBUwgmj>sxp(9kQP9?2sdP zo*+}gP1e$aL<*LGS`@F7E%tW3C*P|*YTK3`huG9ANtMzrr*lnO#3Bu7M$AhckrvQTa1)Q3rw0|c zN6RRS%6;{Zd7l#5qSquwCC8zK?k{2PfDxkcRF`*Q%kv`^Xvvnp)FMVo5q+aTdTKiT$VoNn{z}R2 zjD{h@Rb2fS(B5}^UfkR~qMatet^rYolGz6^VMV?%hd9OMR((sTE;&RQ+CK6jS(!%gYzR>$X2dmWF`Zf)q3Fe?eGev)3c1IQ z92|6lAT)IvxK(R=cI>rtTjlFGn2SMc7XN<5i<}U0BZE)i=ZLix{iG=Bi;putF1VMF zdQnkubk&KS!NW_I4b>i@t#$fp6JHzJVyjH+wg_ubv2wG%=mW=@5x*Q#%= zt(aAS{sLkaAmh!?a!}-P>L93F94TAA-Q6B^lmDP^{kb=H(V9qyG{8i&X!hZ_!yI^L zG@UxqWVze(BKfLkPC51%Z754qN6S43jUGLdbC+}`%mEFbInwR!KJ+W>xG}}@S$V{l zb5hiX%h+P?hW7c0Vw)}fv;N>$ipo?T{{^fxvOuHK>6)zPe!Woh0X}o58hW%8I_qL% z?o!-8QV(q+T+1c6F|_HOyfr4aP`8k&=Mo&2CEeQ&n=(mRNb_A#2Nhw`Sa3 zVDr>nU<(eQ5S7}|@kw@n5!C7*U>IZ8ba#M498R@npZqCP{sPX?uF+`|+m%Zdw%fP_ zG_sG%F>BNrXOg0ZfdM*PkH2@Lq$l8FIv{oJPQ%nA!YjP=_#t-5(IKJ4CCgY={Ju>}t8tpE0+@mM;n7u_64 zY?R`q$%0Y~pf;j%Gtn=3bQ!omnjOnKxj#T3;c#=}wOeNUF2KBwZhcrpE*9?^WvsFJ zOa{AkD!iqOOPkbs3T;;7nG*ye-4)=&sW>a&5=jd-cR5MtLzyQ*ZN0Ch#*M8Vxg$K8 zSbc&&EM2`E)UsH290vV+m?za|Szv8WP%^Px%@=~-F@eg(feMeBWXdYU%?&(*@PL$c znGoA`8o);>o7+83Xc#iM9qIluoYPs9rNT(wmo^*Lkb{QlgF;XoZ}`2Ly;)XJ=t!t) zIOLI`KBKS;u*xg1?ChzSM z?-%Nd=;-LoSzb1uB3`xYf7i*2Om?)aJ z9#3Q2`+s8dWPnH^t*0HSsfT!G=8K$KN0 z_}nt_Bf*+X+4^y}GZ{9V@uE({-&qn)RpAoUqLu;MAsB`Z!nVs60ihom z^$Nocf6#_-+Oa1$&Njx-KMgVnILCEYs@{r|AJb=CqkW@L?VZzlH0=9BHqK_w17@j^ zxX&8VU>%fU)%;n7gb7Ak z>Z^C4S9(WmsiAAKdhPD+;jFGCJDSoa5#32z+jU*k;31y(8(Kn`ygo#jhJ(%7DtZO2 z6SNYyW2Id1LG!kI9y}2{v(xC+5rnJ9UoWWCh;Z~i?<%Pdb{xIIULoi zXMW<_dpEVl&kwIzr_d0H#?6uLLu4r4)ATTOn*H=r?+(QHUHXUo)oUS82IlLbx=4K5 z$1ecLL0g0S zhS0>SrNr>u(J8iddp2qR0>X>_OsrDJzRK)Wn4L6!x6^G(#q%Tl=E;;X`0R+mFXL!s zqvglGDZ44>^F}&r*Hrc2lAnJ@HJAAwm+lmF_?u#AgSc-%r0ZsbyZrszoO-V?QXx{I zstd(UpzAq{Zl0!4w|c*Nzc%!1fi96^wu5HGlPzYPGzKRBiEY~GO&z}L2f994zv|K9Tu7jIn+6S6=DCu zNEuU2IZ+>lj0km`B=on;>0sMGrG8|#JxlVj#GZYX1uu`+)PSA%eNboo@ z)gz8Tf=bLlR2gF^Hz&(raVE>tfD>~05X?mMDM}-&WH4^~=y#V5eBaU7BcS5h)MUdn zY+~oJV1vB!Rp?BTZ40L1g*ZVmL$XNDBsxjZsF>9|$JYsIdX zPB;|aw~ziv6V|*7Gs)VGyVcV*5QQLK)6l9ckPTyP(cb|Ox&7fCq_&&0_y;9SWPDao zmVsA^G2fF`u^#J^N<1Z)Xra$=RyOUe(2lseDDp#cAgd z<9pg{3EQ(va*zn$L}ffuG)DQeTTvJlv z9$-Rm8to~PWAD_(LAc#sYwQtnI!S8GOw?RBsTIYGWzrNHymbCx+)<7#l?Reh_qguV zkrCuvHD`Imrjboi8}Dzggs&*xt5Uw#<-wmduhZybcwAXk@k*|CwU|=uGLLiK6UU>F z|Dmu3tNP2J;Q_hF`gPW|N!L|VZw}VH(_xUofp0}cp0{PM zxNPHv*EpRiz>Gkh5W6~Dd;(dK-pkEH)(BgsoB+!#-CAGGflkb5`PLVkINsw*g!pus z3-_Tty8^wNGYS@MBLX=dqo;|_gT4l8NfnA|4T{_aY>FRR6;)Fzbf=6f$xulU$l#@O z@ffl@Fn{fx2`0ldB^7n29UK; z50*E}hxYxYt~v_SI2&sKTf}A#6LJpjrIA=*m)dx3x>F3g_Z>ASe;sA12iTADbhXz; zD+N=lqy!FoXRo?uf_o3X*>rvuGYz0-h#4(a(RiLv*x3~V4M@E>Yr)1VbGbomhN-K@ z`pZvLlh3y@c3WpEn5n>XPN-rd1{zodzlZFgmAveT&r$3Yc>>t&B7@$;&W&!OK;E+L zy{DUZ(y3Jtm|@Y{yz=HNueAUhLaQj_zUKUX6yB(+!FDBTgTp&!I!8}3t|#?k9ZU>N z(7K@yQWeb~6EXXtwbGMhJ6)so8jl3_oYAR_ORpdaWG`X2GWnAQEHR&to%|I-FPdXUF5)aGoIpXk}##y0%^$*!20jbd0fYaD>P`)NRVtDDK_(JRgVd zz;{`mt-eAamt0_3W&~Fxa#H+R>}axHjv5LMF6_~4*0fPnLSHf>y{pW=ED`=RYcape#fZss+r zL$&4M-x!Z&6^}}N(;G%7;w+6F5ax92C`Q&6y%E+g9xP--WAnx4XCXpfWg8@L5-<~_ zccqedVGVnZ<0`C>VGmR1gDwCAK~}T9Xk%26=&|Wrb9t#BBX@)SC;?Qiz(cD_DSbc? z<_nt$*a})`ke|7-c}sPh#ZQd`(#fI6my0NF8O>C52YF~mR2Fb#Z`3ay+P;YT60v(J z>+FK&GnDa}qPUQ&<-PcJh3cC!{5UDU%e#<;gX$8iDc5n?X8$m7q$co}74{*?2LvIc zuEO_t-&qKx&cw&3y6{_^l~f8A?It-d(L9p0qznpzlBWC;9qqAL+vMl}AP< zU>Ay@PRI9A56T=OR2?tWnWruhi#kh}P98x2Z=oL(=;)Qa%EPZAiN&8Ke~9>rNKJ(l z!^G`buS+=5<+}TQck^g)1D=;gO>1pBenYoK+QRl_K4-+24%k3a?QY$w@VF&2b=}O! z$%$P3)U)u4D~n=cAVR3qN*{LP&)1lcC{;pu)?Rpe*0ot*squVP_|k1K@ssnDEl#AM zj;l-l#%#eMsn->xGF;sgObnWgqkD%OMhC^rxB4$5E5Ij+w^H6U>^#P@c&l%Rl3pp+ zyu|3=Z|y%tDr{ljCkE7vOE1-Vj$q0CnvRf`acdf75V(cCt@{`Tr_?l^F9JVpUsa|Q zV?hOc-Waz#dU^S9^y4&slsBhH0IR(rck+KY|H4rb1>0$HVd{?A)n)AO?cu?+Og0dV_|{7<8Rq z`b(4NYxU+!3#7rQ3BZhG1_PphHNU_Y%{V8eO|>*0jV4~z!mB3ouOro2re9O={&iPG zS99>*)$p>w=`r1V1{6(36=8MRxo!Dwsk4ST*HqB*$M9J($AJvo_?>U$%`2WideNON zB|mvjxLWj!O1%r;Wu0O+0}Kka6`#4!_S}Ouc5+GV_Z1>Y;~b-~B5CXDfVPRJh9*o` zXfb!HcC@fuNe*9VF)I2C#QBJt+)=r3bg z6lfVuv+uawwCq899BEiLtN8U44MJAzP=xy#zi<&%BhvDXa2XD(XMqMQcj?hc*XBZ* zMgfR%pT#l2F2CyOeXQPkD%5|T`$QG}Xy;T3_iD0=t!O@Z!`b#iD^o)!K0iPIeC9QB zckJtVpmJG5IT%Rt5C*;zu>qeiWH|wF$->q` z3)oLjYY1OzKHG-6t#$@pd(9W<&S$B1g1pF!ylIW)tRZsJTN}8eQq%!Vq%^wf+kXLs zyqHBIz4(Z!bn=sm-#Y-kcDTzZ)MZq}{(CzXAW8 zzgiGbbbd~5l#o*2nmaB2?r{lX+wftXXXsADqqM}#W4SN22p{BL>Sax(qQ~@3J(^EG z-+ALtt?BaIr>;ZOn2{k7y1Muc zF1Rz@kbZ|l1NuytYfw+3!Pnlqk)5GOR4{qGj~T{8;Tkr$DWM_$Ch+r>z)%p0YR7EB z+#PZ}flf^hGt?IbrJ`UKT%hH1Dwv%vN)y(vEooB!H8Bwq^OehSXbz zBZKy>ZxU+Y$*P1eLlRk8Iy+uHTUQ{w99vpgKv=#ZEczXy!iuHy7eJoY)2P$x!7vo% ziD47^(F!sR!d|i`gtVdAU`l$&V8vbjhDQoc_=;Cq@5q#{D~J3{uUvAM=Qvo-17!_T z_=gvx0yxx-k;J@GazcZxv>+F2s?mzg++1;N^1Q$)4EFNzk|qj-F9U9t;uYcU&+9e5 zKFoujj?)REpWzu^1X)G|1_n3w4JCyRaIVJ~>6CX~LGf~>=BsMSN%rEP=CKTeV{*<1 z@%M|b7~76*H6_Nr_O==Nn+lb5P4*f<%}Bj8280cW4-2Vy0pIbTch>^Zyv7n|-Z`iZ z+4Pb91S8f+t<|agIzDVK^$6?YXOI;dPriq)zP|vpK$7;^g8JrZK1$AjHG5!F+dSum zH4abrHnKiU`=DEdmHCFF)B(z_^-|sy`anvNvEv^FhFjE>cLLaTW z5AFuqk6VWy3xVS1s`%LKaF~=F^=|zuh z-8n=pi+4fX${H6Ud31&Ywxo7C4EBgzlCyFG__yyTdT6ev4kW;@=2uMv2EU_YtY&{U zm=W|1XPzgDFPP=Yj8LdwYK6<8z;Gtfk;q=y%f4R!s)kgaj;f@v%QF(Ic@a75z4uZ% zO;zTHCsP%_PKoaXrdDzb3d%*esrQ?6@j;dKHG5T{$66~)EQKvQo;yyP(Z>R>Z@DjA zumY*)XFk*6dT~far#oPPeG+7-`N@(?eAdy8r~u?{re$3?uO8(N&nXiP7uok?OmkHp z2fZ`$?|`2uQe`*7-h5}GL6lN+ysf+Ec#JH3g!QfdZi@IdX6VGdY0=}fD?r?R&|Mp& z#OwIdod2nYq46g*50YsBQ_TAcj!W8l1t+rd%9+)5_K&Trs`Yiu>m-iDJUQq?GNy}E zh&#mx?Rc4kg!ID8n>6EFBFP13zw3(`p;Tak17%|Yr@mO zah3xK!})xnhMg{ISeHVKoM!d+WZs%7StY+ufj?_s6Md`Um&VTw_%M#mtrC-Kw%2-)EcOH}xS1&;uc$LOELzZA)DKg8<^BZ^6-I>oxZ(Ps`t?xM*i_ljkdq|8e0 ziGqx7Qa)4UKk!Ze01df`3l}# zvB~#b6Zx->9tvf-KZTTXT!Mx3yz9ki&mCThrm;AgW{{ zC`q(_i)(R5tlDduK@t?Yx4g5GLH8KT6T`IQv363!zTQT2i+}JNv=4OTODIe(kHf#IfP+?nT(OCB&cOAjmIZ~@mGzkyem9bX{qUV*V>FC z=6JO0m7DBE+Es5q{%RkOKyXFDV>JSZRy zATh|wq2%FQf8~PP~r(?cnrGHvG5oD1-n3f>Q36Bm54~&j6oCEbfDAdDK;_OvSJX|4-qVpbFG-;^H zc&k;LkGUq-v~p_hT01x2{QB_IgtHuf4pyaERi_-gG{t2+wW?L-r}bLWrH1CUc-l21 z$sT1D%dL~OkA*MqHEb=@ss#-cXg0j8tu7EC4$q8%k%9m`k2W&&4r zJJ0&oLKRAu+G333ckqGhU#xTg0KqywC|YS6HmNLjx~0X|qoeK8^!8bWsvSlsP}~jZ zrPe*hS7tb0VOpA({1e~eqUh5+_BuU*7I8}*thd%tvn|Xv(ngGnJcLT8P$}h=Br>*g zR=xuZnN!5NE0(i_;UzWfsp!>~{?B&)U3Ge|(d%$FXP42$IiSaYU)}9$gu<;LwEabNY#SAysF+m*b`?QT!Zb3p3ak${*gPp)* z>Hh%PpZ5O%`04Ot#6s|RgHqRQ;ek@#$5y+R?hKQ05?e2yGm^3yp)HEbEZr--3b5lyx3 zO5C*P3U*)JhPyP~+wA_&$K~%0n0;#viH;)(sLGBj>XqY7@~F3Trr%%rdDi~!%kRGk z{{X>nJ}K#Of#P2TXj+EmUo=D{h2ev8Gc-h8+lF;UDnmPb!~nPikGsAQ{{X>b{tbBE z-QxIxrAy&U&AC$8cp|qGUPjVNTK47MOj|;tIK~^!1mv8L=jy}uHu#e?B27!g-V(E( zVl9@^d$}dLg>z{$+(=?c(_^%<7J7Yu-Tp?6H1+UDbd7WJ*_&F^it9>r6|hjT3pge zH}12*c@7GUajzMK!MVkbL8Wa^?30F!2J)`X`M1J$n>3={>{6sN1+mn4Gf}U=*n3 zk5liED*|5|_$ySAptA8chkVGSc~*L*lby`K1u3~$5*Zr+{{RhmnNXP{v={;c2?Gi;To<~lEYQ}0& zii2^Bp>+h?lIHihRo=QUGZ&HN*nH-OTm7?xP^(Tgqh4}^qZqqOmQUKWpDNL&?)0^p z{c`x5#R=h?2GwotW4dVInmFTGkRzNp`P~~MAA99)K^XS=PgMP;FIM5>eLBtKQ!=`i zW)C!AvC8Lwqz_|^?pxAJ;yesRTEirH>y3@tkJF&G-tof=hWO-h`-otu=btryWp znWnY7vGzsB$BT>IOU{Ey(>%iQ%dyeOEKo?}0k(mRf-#KpI#nHC@QiZeh9PXxyH_^-z1{V*|MFUr%XY1uoM{`)%PbBDj>8fEh+r0T_Y^?hkxt zJeu+`7@Q6lk~OME6;!AVlC1M&A`QI-J+-RXhI>T$+j>Yg@+7Y%$KLxU5$$iYGAxbpzX zJ$_Z^ur>D2gnSvLB(HCAX&iz>A|Em!>;i&3uz4!EZb&019l$l6;xB|6dd>EQi4qb? z+GCI}Ipk%B13rSjUmKd>m3YEXic4wRo==+2`=p+!Z>5v+J;-qGB84nHM3kjkqJ>HF zq>^bhblX=+sPEC)uD=Fqej@P&oLRcQJN6kKPc(o@!789JeDVOu#s|2sD%AXMedkR* z#<4O)krW9f#t<_N!x=mRJwH186XH+8jWO&TM(G2Sf^s@I}nzegg*ED=rs>R|Iy0)88(_`FNyvAkoLtFt0vi|py z1Kk%*g>br9yE(vxO8dfFvg`Mjbxfd*u>#w@=4wwlZ+3K?YeeSy?z#W3Ox@@7W!SNy+=q!>6%&mlrX*u znGB^#DuCdH9YDz@zl%PUxx{c;b~^!w$5f@y2~=^X?ngzom)))Z0N@|co&@F7#NzPz zz9$ZpCmC}>a^`g>rz=u%P7V(5MB8nx5qHL3G<_q)FzFf<_Pc)5g^k?L7`KRdB2g%j zytGnXS{5E#Zj5pBVTUI^nc{yE-9w^1)5jgjcexWRva>)}%rTJ>0$AEriwt<%xlhXE z9<#=Fu*)>1tRZbm1v^+r<+4u@9zZ5MU@idN$@TT9d>wsxrC!H(cETA{D1ugzWRY;K z8WXsZs!>#Qz|SL!{{S`dIGQ+o63lSeXwMdvr6&EPr#g*74o{ZrStoX#zVrIO145-r zlEdazYD$!Gj&X-Q9QqrI? z^5g9YjNV%AELP#kV%Y@bobr7dV2?IdBv7G1*~2IRfC~&U#xu$5z_07y0xH#fAu3qP zF#6PSb+MIGPNkMAaj2mkQnWU2?RHxql=19i{j*Keik&#oqe4@?lZ6+{2N)~aDA_cd z^}gN#`(b!?4R^$T4Y7Ph588xl_L(x0Z&>7%v+ddmi6kq&HW}(TCcKAF(x%e2i%2~5 z5kr182c9{6rFMaBUMN~n24Y*AXPMSNEnDp~@Cz>AS^cymiS_>g3fkT3Gim4~d0OrW ze8+}IcrDX&NTdf?E*)3q+qp@vlC_;;Z7WBPD?LKvSFn<00{Sr1-xMvEW{M^rOFB1~ zfzhNwRBicw{{W7#s~4GM^s9Vy@_4AzO6ruYCZywS8giEE_iXjND$Fo>ZX1hhPZd$( zD(3X3ODvWic!*Z1JRD;g;vJ-*;@#q!T+JnI&!{yoiP!e+29u~P8lDJd{?B(%8A&Lo z%?ufWl>~rt3Hh;tI_b4tJ5unjrzOUkmSyzW_HQ7Sl_8UER46PMw;`B=#{&e{lzcAm z{+n~9nXin|Y6W9;I*esxk)|e4AKIZNTWQQceRR4}lkXvIoAt}1KX_`C0W+Rv|H*P6A- zceS`jSww-^WRq&BOa>@jTkjmP1aqFe*5041v@r}7DhbZ!7(4hRk%RQ(s2p)z2ur<2 z{zi<;DamOXRVpxW2bRMDvQHqM+~*wc#im_A14tjsU`abz0928WKy%b~ImkG#*RVN* zsTf{K$;U@{-t8{Q?ykK(56fjc-YijVX(Ro_lgPef4DD0^jF89rkN9cg%`?QhUYT(V6E~9@ zw6U~p6~Yt&Bw_$RKEhiivc#Wi{t3JVt6gZi?w6`*^Uodap(_GL#i5y<$IB`Ja(AKx zVZq(h08M{ZpRw=6{bYDE!xHNK|T0Cz4Nwhn%7c@_L+^nl>3 z9v2w6lL<9OrY5B4QVZXWS*uEXiVe8E8`t4(@@ZKA07ia|{v+aent~C+2W8_uJY=j_i5!a?2vS(V^4TITxCKyd zAf3m8P7Qo>*sFYnb7<; zu(P&=O9NfY5&(S0!eOF9rBM|&;5!f$?HT*Erz{%G&|7KIz>-?T?j=c7w)otZ8(8Im zKtirDwN!P*eGTHT25Oo$%iG+nt!T_z8^~kYjUMa(;O^VB01r+81B?pt?M}*FKINJ_ z){-_(c8$e)XC^Q}Ac5PC{lN2UVP}V~>CTtc{ zJDFiJ%C%~JW}8(pkWr2z5VC_!dp7DTa;Ueawq27x#Qm1PXZufrJ`?e0hkP+D)!n?e z0_IP)e)3$~-@$PuyezoNm@R@SAKg{;2k8lPTln-XcUYFr;v;9L-4+5J##Wxz=_1+~ zWB|+yu{;INMk~fYW1kmzx5hpYxYcho`;&QXKiS=0DJ4s!iW@6}ZWU7@#CKDytTDXc z{Op7ezU{7K@dlN7qNFyF3+p$A`5H4Eu;MAf+2$2-wVhOM$6THPBl}~(9LiWe6UJA= zQiQPe^PE;HwD0f6ysA?6tt$Epi%@S8_{7O>Z!hlduMAdqw(PcQZl$@p21(a;axNhZp$IBU z;F2-xp98!%f8(fhj{xho*8U6d{ft-o?zt|QkEa{0lj-)JU6tc2te1}z?qZ0fZ0L>y zgj_G_lz#y{BdO}TwZ4~Y2B~@GvNL0K+cCL&R{4}LPb^1>+iQhX8B(AFm#Kcko+|MK zDFv0zzoJ-!9D(cwqF>7>j6|qzWV1&5E3Ay}rAuy%WMqtfPvShY{P&9SxsG4OxOGzr znqunG%c<6Dg;xr4saA@q2PnZQB-A;QNY8@v_C@ekp{MvWOzcq5Uc2{K|L#SlYlrb@@k z5|v^fV+Yy;50<+B0EhZF!Ho;VE2HTD01*68y5)>_32|>Ib-A}vKE%&)3DObaB^;Fm zVRA;$NUxN~;d6Xe4vaJWch)eJ9XU#PtipyCk2OACNa={=oSILSX!~C7-qr&$$}u^H zDvkr&QN&{*RuQ3rz~W_AaIF~AuCMH1>A}T96SQpCTdjA0;Gq8i4rKVh;ypiIJ~6TI z){CXWl3UtMeQxpIwxTPlr%H)!ASF?AQRCpGp`yFb!Wxa$NZ;$l> zZ00s)y}6nx5=e0D$gx2nA2hqcc0V$y1A-69-xz)w_{YH)w>BHKJ#HA~k8Rbmw8?sL z1;l?dh=V5Jk&t$rMIa;)2>n;re0HxIB5ah~e8BV@C1`_!NDZB;aqKX9V!SiQo+E8& zpu2(yZS7>=8I8b@Y+_WlRkt=eHh!`7gHB{e}VOTS;$!n8$lQ@g>oOul<-*qBjp=O#tF#mq3~CaJX0!3;tvg7N471B zjR`KG41!mYwD1SadW`xX&=KMtI%F=Bw(Nxf6yUHdLF0~`_T$#JZ0_ThSmkMt%&LGe zQ}U7WoGRld)BH_;Mr5=zh}Xl)uMw#7#+#_9;Baa#OO?tp_VndZIXkD!{XN?snC3Wa z1H#UQ45doZY7>?}69k-+cZ@xpRpQ&a((P{9`Om3-&$p2L>34RsVT%l7X)1(}N)h*t z0PMl>#}&ap!EJuRNy2J(QN->^4J(YP80CDupb~d>$>*(pqiePnj2OiDX8^FqGID$N z2R$>!dT?vX^*tgP{M>bI8=E_Mk?VubL)K3)L>p4c1=@_$1$ z9Rg)(V@VVfxPyVfJZA*-Ipdu3+PG~?!gKFtHw&@U90QM=&+YA^t-*UYu)I6e_r@k#CGv{ zEi|nf1u6+F?7>OHWe6iV>T}NrgIrzDg!RUeBuL-Q2jyp9l}_yB9i*rPGR(KASG!3kYx!-| z;{O0zf+N+7)S{iOWdq<$yRbfJ+cb86=(oUUB*lt^Up0X18N4+*&)z zsA5!2jppPz1gePJ4< zygDS&jf$!(Hr8OyHiq2UC4dcs(xq6OB8k7_`)Hq*U*w=_Z=pJ1gArUmW~BON)Dm);BCwv5fR$N&XOh zyW<@6uY>+1coNUUb{d83)`;Q5q22RJal0?KVt~A0jGmSH`>p9|acwlE!#P}#qz(sc zbCaJ;j%(phj-DG^?JDXwa;cZX?gIlXGD!pP9Q8h#=rLI?HfplMxlKZEnWc1{MB`-p zt6uu-w$Si+qbP%<@ll5~;iBh@(iV40>&ahUx-;-w;unh{)Ai})wt@)?%vuO%7*#Qb zj}kEDR2A*{oL6JvPue-O?K&i7g2qcgk=+Y?GR~}^C`_35?AwsUcOwJ};XXe2I!!wE z>7p4M?pt;Vll^jz9D0!bvyV=v;mga7S~>3R!|jP=bpeK3Ad#KibO7V8en>d4i}72* zntXkPoUt6R_O#R-mot;T_qM+BYW{0YQS-bR;;n8JtnmKMq@zl#lp_^*#y;w@_j+si z>voURseUu*TC5irVAG%9y7C_&uJ3Z4iIae_}_)K^n$ewwMb zlJYQ&tgjvh+_QX~bSLFJ5zu6GJpTYNucF=_g*nlkJVT>rr5c|1x}xIwozh&&Jj<$j zYVLl?PseJQiqz`iE7FpajHL`rT5Zj8ww8})XuYrGe&&A4o;A~aQE=B**7oq3(%=PL zs)kADi}!fk&GMilb7Z!0*8}VsU{sWt)8%{<->!0U2kD-_ujc3M5p8#J=tZyZ-4 zWmPIcH#4(2Y@Ffv`GSLz0Bs#A{{UL?2ZpTll6?D_g0e$f!1-5+LpEdL6$#rV6 zvm<$g$fG10IR3R?ujLf65sxSKWjBYEB`8;})xGIT$!PVGa@NmBqCUUFz7@h}nMV=T zz-AS2*{pb$F|8R!X~u;raipPWr+3V`ud<6;-IR4rUfTA;%I8M#^tvRm2-m99(K(XB*q#N-q&C!NQCxMlg>urBd!n7D*+iyxZ$@^M~TDlKyOr*3hT#48CGJ zZ^t2-_Z;N01oa^HJ-p9H@WO~8l2W8Q7X-+i2{_||PhLH`4&SD__w4znc+Mxzt#f6x zq%#z=hEk?UGUT-80?o9E0)kY42_POij|_gtJ_wN@ifpNDMpbB1QaT@)7U>~ZlX)x}B!eSl zXXPQtIT!-Mc1up@=8(vvhoz3f)v1My zYf_X|Y0{LdMsCe=w+#|@(La&=>}mQuIu5;UZ)PAyhDaER?qW^FBq6q$8vp}_$T%cp zj1yne7wnzltp~)v3H&{4c$N>XSx0F)tamowJP4|?N+c}HhA5<{ISc^DO5?P@*eBrM zihNd=GWdGx?dF?kOJsLgLEX6mrtB3ZK?lCk!LQJbEA~tHHSi#jJp95SsBXH8b6$qJP< zYAs3X6X&M5oC@8BrJjPk+hy08OU5?@af0UIwjIus>EF~pza50IUwUFIUJmJ_QB@AIQ&2H z4SX#a)AXxJVUvYvUE6$$K6MPAay$$YtMVoR2N|zf@b|>sUR^>I)U7ACf=!P1D(v~U zAYiJFHyH>3jy4{+&OZsleI7hVz|w_GRSX=PZc$Y66y*KsDQg%D#4zq2u2QjXL&2U^5(m$@hZ-jQdY~=Zx*gJethbeluv=ZlEBvORJ(>#_aF36TC0T zK_ejKVYuvYMRq#h#2*Y>=uutyGwPF0S&AbfwYUlkERKFasKoWg0p|xb^gr({Ux=YT&% zJU^>=AH{R|NvBP3D;66aQ033cM_NI)t(7x*QTD#Iy~%K{gP- z45TuJZaekr0LFRO(dRhBRdMHwtffkBnyFKrQ<}4JBHGNs?AZA-mSFLw@qzh%YFm+(@pqW;aPNxEiNgpXPJD^AQ^4Jk)&2#ys%&x z4tAhiu>e=HT3oKJKB3}BtS%t5w}8)mFPAbDjzyO$u$(y|m2rS_2|2(S&$RI$!%J(q zA-C|`q>BqnZ89)+^OhBTfee2uBP#$4aLwv)eM7@OFw=ZvqiS9p(v~eUdx*p`TsV$N z6kw5x{&kQ!A&JN@_}Ka-63)@>Jz=pMPlO&35!lmsEZ~ zpYa7QG~%2#Wbs`7#m&)CQG`;bqNQb{r+c)XzVo`&^Dls28oBWe=A%1ZG&VQ7h2)l` zqlua^sNM(Ng0g_}4i(7Sq?~oH(tRQ=BSo}|3yX-9z@ToNs*Vvr9%JCK1Y|EKl1@AP zVerSmdbfkV+Uu>$e=JknGOF6g1W`dH%&a9Yk1H|5ZXlInd*tG=J}LOaTE4UzeX{Bo ztrW{U{h1v|cv4i`wl)$HOAKUl#yVjC03FxKG5JpraSm&W%JJ(FUoy-p;bRqw#6qMi z;$>2klxaqG{np7v*|pJKe*KSFP9VVKbYYy~aF{GMRfVI;8A6RmUX3*CD8=%*K6fPD z*ITBKramZqR?xJ4Hs?yRNOc>#sDetd$O6Y4zas3IY*4|0%BvnZ>TzG18mEGMEvR^l zQSk+)oR;^xi{|F%m2=M- zo>Pydh3CCGRPgoO>Ttgs#LL0AA|bD=_xEtY)vj@86>2Y z<;|v-Nnb>+&o=QY{{Usee$M2gDIr=y+^a4CQg8+U7{SjSMR_i*;^}T#VR(LM&d|Yr z@$1fd42%v)_UT^5t>_xYrjsSTv0_2n zI^PY3ce+wbuseAv%5#uF$9&?w92W%fjoVo^b?(QOoL*m6QTAyoCn%>U6trz!`8U5d zVZ`|*c+Lwr%9@o z(dI`hmfozsxd*OTFFD3~9CkV4zNXZ_XRi^#XqQ7$&?HvDAYQQ{ToN7rKnFbsLyu!z z9ml}Udgln5wv<=QWCA9dP|5}f+yDTU7&!0K0D)g&lyH9*N}U=10Ac1&nKq)ZIE2$p zEnMlrYtqm1XTs)L-bYfir##aM%>{U>RpC{=61!2^c6a>`m+e%;DUik%G&$vP2?|F{ z5%u7YPAgj9U0uqt#$?(G!1fsYS+4JgKcL?3%M%Xwy6#c5jnm=*JUVG@`KbsTyi&w-oHYD=jrv zYopuC#jUQEu8dW9yj)c?ui99RC3I zzLW5;!7;095nCN{IBle8(PzcFu-}Xf9jaS68(84yrh4}&`!#*1SUP0-%d{+5L2&{@ zBRT(MpOBc~^+=O3Okl(X=V?J+`vB1xCPBRpNhsa66Av4J2 z4r|t}zhO^@sJAf3JH*mp1=|Z{quk0^u))idoMdCL=LR9>m>RO6>Di?iNlD$Q>2%$t zrrvkIYn)4mFqphNs!pU;OSYjUD>$beY?kj`R-Gd+-RzI zOK>7Yh5>*Xt=bhiDyZ%i$WU@lITiU4;}48}AMoA$@Tt96)DW^dOO z`di3NwXu216)Fe^Y?}w)JOP3i?+W=lRsF5}5v5tQH)3gS14tNcQVKf-QIdEn%2f0q zW2S51zZiUAlf-UaAzN8xF_rSk7*KLa=Zu1w`ZqzE_HulpN;ulssuZZzs-UL%+|=Z? za_ZH!SMTI`S&tRh%HfBjfyPy>K{~DxjPDpJN)}CC_uoYOpS3ri@K#@oX=fyIT|~3t zcE%!}MLT35Ws`b?j<_U@oQ#YQAMpqL6vN^st92d4&Yx{8(#p={stl`ngpgUdB)2&^ z$m5FqY?s9sFUgaB?wQMD<|GbJW7CoJ&T726{oLC?xP9m_21z9L?~*=)9Gdpecp@w(Wk4$sawA<9tO$8P%QYMJXrzvsSx$uDZJ|FMV#$)lEzG;?%X5d#!6v zh9K)30vijJCvf>B$;c`R$2jT62gn~3{{U_u9DGReZk_O>!O0VNe(zS(^qofaCHn-n zH#f7Tq^N$<_S4-cTY%YsO&R5P4z=>)YAJg%T52~wSdft$hWUbwWmQ;(Bpm0s&my)w zJ@D(odVa8)#-FLraj#z9Lv?1enB#$UMVUUx7{*I^e`r`)k6u`wYvOqGI>%%=b!wPs z*PVA4N}TCKo^+j(Z6{=ule2faO6gwb)o?~496_33XydW5p@;g-98FqkDpc`KoYbR6 zvq{b{yS$WB=2En@KT|vn@Z($X_KT(8*=ntQE&Pff%b2^Q-@Go2#QDBjm10RHNmLj+ ztMrHA8*8@$!ru5u(QJ(!);yf;P)WkzobXO~C$DPZ{{Uj&+3x$qJ`A<-2Z}X_luc(3 zk#4OULboPJ%M^JClLjT)a--)UE^i-+Y%Mjf6lh7VK_8iQr(Rs!#9@Nz zVw&DW@}=`wwY$LJI%GVc;O-gxcYyfXzCBMXd0swPsMN1_%~GUc&t7w!=Q+05Gn1Q+ ziZ|s=#UIoBZNnHGqO}~y5t`tsU@PIMVkyy;IMC%zjX&MfjVQL#mDF2Wu3Oo=9S!A! zLt!$i2_}XnlWB0dRRNf8d?>Z#;{E9CD+9<}j5I z=WYNJM#FF<0(dwTH^*=ID6hgj4@ADV@O|X^&a7Ktf>wuj*%(T<5-^3b3NMmD&H*lD z0mdu&_5Gv2X{}4*-l=(Yro|Bs9e`MKloB==Ug<7ItY^0Kx60GYVsiSUwjaCjQdaj8wyZZYL)J>?eK)iq`0+D9Yt zqvIZ*tLhiF*2>SiYlwuHbCQiJI9!|+GA>k;^8=B^e2u91l3y}OLZo5QI*gWY;yj#m z!RUG8>6fkEPb|wb&OFG&Zpq-BbtQ=;@_YBkdg1jwLT6LI%8+d(Npb)juNdPv&Pd~s z4;Zg+7nc2>atOM+HJkG>)*OR6{S*?Won8ltY5n+E4jz)$=dgCR_(uabapph zHN1v3ju|6m+W1lse+lkE7$@uPo&{CXykUDS{kG&n14Lv9>M@rY1QX6agZWpHUTSZ^ z@{v=ZA(-RSZ?8D+Gw)QawL@=sBpbQlDsCqsfx*sjK^e#6>t7|9V{vd&geP{>O{=wL zmHzg9E?E~kwCYX}i}rrSJ3dv-X!BdiO6k3Bud}=UhJWCky2hcX{{X^4r>n;ad75h^ z<1ZL_UQ%TQ>^s~5rG`iuUT{BB+^*2ls}tA|TcA?J6Y~A$-~-4R`hF?@0KqPGv#9v8 z@)nYKfPspHUBUi&PSymBWQ5K#Nx}55+qvBV*xp;O7{CLJ5P0NgAOnw2di(~BXNk>o zT9vAD&W&doMep$?d+onlyLq41OAiQe_Yb-dNS-?d8bQ zDuy2+cx^3BeYn|HKoH*G{Db$l^w z?qYoZ0Kzf&H&xT@uQYv5>s8g%McsT^aD*w& zRjJ7?NHzdSGwKZ+^;N=nG(`T9iu`K)67KMghko{l^6_8ah#tG z@V2XBx{Q+A8>rG-u+H$aqPA4w7?KMExbztH?Opea?X?Tk)@IdpT`oBi)+nLSw1XAc ziF}8-lt&Jjw;N-LdHj?I!+`O%;wta7H;u)V(u}f=aHj+mYOTTyw z`!<$g&zSh=#1Yeu)%53t?oIrb)>isZf=Lo4Hxa?MQGt?oC{vNpmLz%sUm57E@oM(o zW%TleiZ|NZ8a0`Uh67*$l{XHco-ldo_RqupW^0-4WsTuaCIcAR9vq1mh9jmhq-3uI z;=f+uc+_<%$tNn`SHs2fdy$*86q`vcWoGZ({GW{TJ`1H&8;8S27>vi-RD_f;@U=Qo zPEn~!rLW4|Ri%6K@44$bMxk?Qc@4F-q10xGnBE<}Yd#6VWMRiR7~F7p7#%*e_+Q}- zUs=7kyVWdTO0)$GfkMDcUTFm|LIMX?UD)Id8u$}d@j218Mtc{QE2oqa#kT<4@XQE1 zdEk+Z4C5VZx6ytnc#YXoJy!B4{$DmY<|B4acvpw>%vKK#JUvx~ zr&630U0FVDQs%c;>(a|z?fj#S;%t`>iFGlUO8AEg)8>Ryj9P@_%cOZ#t$W{pKA+JS z!AoBWXr3C>e4Q^zdzdY5!rk0j*$K?1BjvKn``k!bRF>clF@s+r>v#Sv)_h%i9-(w6 z)8vt3NUmmC5-2>@-myl~7}sv>or{30z}sJ)ns3FA6k5b$O?OmSU0HmjyDHdjp@w?r z*F0kw=Ctknf2zkfn%b4?IgfT4W@q_`1QJen44j{Aj-CLQk-nLT{PQKYENXf*{f)C=e{B2*|f5Eg~Qj&u(@if3}y*Mdn{6#N)=|dO>Wv( z>V3K5PltAp-I?umD_!yrG51b~VRAuS1Hs#s!1;c)=$;0HPO*Wl^-HMSJbqZ6krx@p+c);Leio0p!yWpyyZM!(Y$C`1R zj^vZyjE~R(Urkeo^Gsa|RIxaz%5+lYYSC7*O6mzW>fP6#=ZQm!vYa(~wJBlMSXWKO zJzXT)eDH5n^-;REj@xhdZoS|y3Q2M1*lRJ*A<5l5;m{4)%8X=4M>+0C<5@Cze%96l zZZ&IJBOfxWNs*QqY~@JC2*~H2I@iX~_|o;y&3|;IN6Ef^ILyk9?%8&6FdZZ1yi;z|43?CrMRUvT_9@aBbQu77K4I<#p7Kszf;p*Q8QR1&HN zNN-*+2Q{JNyUz-18mO8*bx~npp;G9wvWx-=3~&htpa%z@Fl*wgUmdhDG);GNBC_Kp z@Guks$?Jj62=zX-j@stwWOll^Vf>r-CsH)(do@WV z7_W6&&ieFLyXoZJ{TjSkf~S{Za@a?nh8nxBoUbcYowsc}ujNwrR>=FDcz?k+R+iU4 z+iM)lxwb9R@wkD(-o%nPJBNOG#dn?-{{Vys!;#G@>$dR8aTrbFoIVNTZ$5*ML%}&X zsKju-XNhi))~6^*YOiFy<#pEmo%ddPH-zHs4iZqSPCm}8d9352wC#6ft>0IBAEox5 zJMgZW_Y9iwktbDB@!k`F1_&e^DK2+|f&nI%{t~~3cCkx$CH1}B(h%g!D4Ft3a5Alv z&pk4FXQ2GjJ}`i?#;tl35Ez+)sxTM>3{K$PIO)ziRrBLZ9fl3pZo79gn}NX!cmR{_ zz#R9lCVn3|SAv9U%}Qz3lxd~!q`8+huA6ICn!3Mx9-sU~C@M};n)Z;3jR#TtwAAFU zYkV!my;8m1u6}_p#@`HS-g@c6D}0d{5N?T&KQTKL0uKixAJ)0+pNiTg%gWP$$vYkB zNp0J?&wO_zV+ZxGfg$llrUR^#200`a1Ot)D#~k(O0PoV7apK05lLW3FA&hQT10OEz zci)~fkiMBX9t$wdRYZD9Tc4xg@ns+1>8CtL>{eaXfnJrB0NgMMd*LMr}AnS?L{= ztorrseLm%%;>Cp4M%f_B#<8y;e99StAhL6T+-Csb8fS&I>9x!Dw9+l@Zke32g+yn9 zMr`bmeo$67E6e&fr>9WR476f z3`=f1fdqHt=NR(ei(VR@^H_Up%|2M~Bf#ARSyzKDA(tpl?5Z5U)P_t=eH#c(H&ho}f zl#VvsWZa1vC0G?3xfmwDFU4bX%&u!Tt%a#m3x`S&`n(c?Qb}FO$;xRx`L5Hov`6aH za{RYBg2}LW+EJ@1O0@8mr#h3XDA~?Yl$(?-Yo!*w50ktp@ZN1A{{a3fE33UK-Q!n| zDJL;7J5l3w2v`Gxq#iN2@m=)xS9Z4>JSnLCu0=AP^3S^HOd<-tRE_gSxGZu9BmGxI=HOy)YOr#a_oEK6KcI{Qc$-sO8z{i!tXM3Pt+g-zWWrjo(yh2j$ z3xHH}pSqF-!0tK0#dhFv^|7n#Sce%(tP+M5(~m5aQsqsnZ2thfpG)d^m1*Jdtzhu~ z0PK|M)a3f@H!f;(n^$q@u9Hgo-Duxmqr$3KWcd*v3J}D09;s=kWCv@&5qB%kK+VH21oWsTQ3$FLyNe zmkAUxyt!gzW?%qjB;XN_zyNFB^p6~PYUe&qy{E|#QT~wka4akb1gY}|PBXM~k&67M zjp#!Wn5xw9s|e=^^HPFwk33uEao1ffdtIw)&)E28aE4t=3s)6S5ju43PPJ*LI+UH9 zWh-}XR=%&I>T%z+lzt7@{0FM|f5m@hF-v7V!MeMQIv|4Hb}EuGl>{z$2aI*ie-mG} zfbd_2yl1OvdKRZF{{ZP%K1_aak{IJ6U7l2GNKykR2XF(9y({{-{k#7FX`h6j4E`SK zmiqUKbcppk?H5zDv9?S5f3)05d1-fV3&k24Byz693mjyebSIJgGJJCQi6_Kg9qT&n zqE41_Ni25jF_HZ6jkL}KMHiMB#{U4i%aM>+fwWiEaD4}c$tzXFsCzltQH4aME^c_I z%G+&vD$g*hY~b|CcQ*PPazF}gym-!nUw!5G@C zbB=fz2k#z-lTzI&|eqla*SPBTh7-cC8(znpSNqtv1)c zq44sTEhs`Y-CkJT-C4p`R#$uf0KhAmilGXuzcIikoacf)Gm($a6=^3>sr~cSnBZh! zWRvNSa(SwfLo$X}PDd&;lGz!-=dVtkJ*q!0WhxE|N!@`?ikp|3M{c)#8+|hWE)Iwgziu)`HlFK@t4HE7ko>q zc&o(zBk>lYd8p3Qn00+;QM)lDTOqWyV|6sSiqZ(u2%`%c#SmzakaYDl>7RN-=PRQ%c^^wyxaynr*F;Mg2y3o@coiQh9|68RL|h zj8X*#J^ON~SLMJ25y{Esytl*wFe8CR$sR|U$7f~Q8IA#BF_LkTeLMPzwof7CxP61m z1yB%oaxsix=Lgp~&$V!Ry{6=6hBpWSY!Ep);~jY?BxA2%diw~%YSE3~HjzqAZ`WI2 z(_PQcv7XkX+^bGgidT1&U6XfO`q{mAXM^hYMh0+QB@9^YEyxEMJdEIb@OohNuQ=3U z^5k~ikO2V!$nVZiPIJaF#{>%Y9dg~Auy70Il)@MZ03C)#IN*XvI63cw<~p68*#uF> z$IT8%k@qq(1C={YIuXY?$ovY?RN9Q``!~w3Q7s#G*6(Gi{;YWMjHpyjm7lbe^-E8+S+0D!GLIqJpayV98SZ+F@$-1f684jf z9g<2>mASRjYkgkbbkzF19xD+leAM9@wG)a_Nkv-mQZ!C$qW<%uH5G%Bn0oe!($S+rf6tzVj?+Okf{$wleWJ9=)9>ntT{)ZuO!{o0aL=ljK?le*@5JA1D2 zew}RD@-OXu;pM*ZzKdahC9>JL9&orSB3OyF4(%GS$y7xvfWzioj!k&Xx@Uwe^qV~= zMAhe({gDZV-9^2kmX>MoTg%HRlq(!D`AEPgueyHOdWD^*kMz5(M#1$fdrMafZ4xX% zpo2k>yOALz1_cj6xto!mJO{&?ovyiOcYEROItwWwSZ(Ba(kWz(0<-M3^O&H<)>n~t zFc~-)1pFU}F>f7}QTCDclghC3i>n{qCn;JnZ=~=hiJZ-O4vUGV%G5^9s$ z!)0Y@6hi7po@^4*W^Gm!iCRUIFDk1LNdRYa9i(sxUc8Vi?H`2JG9nW)J3p38TSn(0 z5wZ^MdK{eX^y3xqpTa#hNUk*Ni-(v&aA6ARmh%Hg=3yJ=1b~F@0YM!wIj_=x23cHM z>ECI!vzqQCu$n^5zDtKlB%G;i@`gB@Jc4*R#eYQbW(N&Z5lPc=t4G_?p+-%ly_{-B z6jHwFr4@ZIeG&Xwo?>xQuZYBAIsLk$h^Z=RIZ6;zr8g-%t41+SPEVq_;~p%ySJiF_ zmEsXha00GavB~M4277bBr|CMSoJCkp>~{uYB|C;YfH^qNOpNsHUn%&<;@er?c$#0a zw2xz`T|kftB=si*e(o(4k@%E5$_oFyD zH5p#}H*}v}do+HjTKJ9?@>Cp+_#`ncwSXm=ah}7R5%0z;rH907z!@Y9y@IQplDIkf zff)dSj+|$a*nU$%`%`Kt<%W>$hnGHG!mHtS`FQzP<>#N9B!UJ84Qi+DO|1xwpV;#j zW+*Xm3}|`f@(YZN^bB`$c*(E6rG&ywIn%9eFUXp-ZPHzp_t&ncit+fC;-^M2=UT3K zUe4FkN22L#yXmcu)rhtDS%V2d=U`MPZv&Sn0~~>a`c~byi1#o+LWr9$h6gztfzN(A zobY>|-;);q0JUzh6sA?sgLzS*br-Az!PqC9=8jn& zNZcLd1ZWY8fJapr=bT_ucuX{;qY98uRnHm4JuP(9nrhwcZTqWKvG|CtX;7~Va<>;3 zIcv*iLRK25(``aC6u3c$qo#W<+ICwMhVsaxwrI z9{Bug@?k$|uN_>)`;8#WCgMEAvzf5FhSKbK&NGr11F+_|?S4LdPq|~{_;&hW=n%YG zRs4&*ZQ28+yD2OWP)=|&>T+0IJZ1b^TW`+`X>08(r~PcT(Po(aFNDQCz12=pmHpjy zT{V5QU60h!;uP9TT!wPHv$+P~azNzg<;UPL^r=_G5$t`_!X13mOaOA$0}l@W$nGC}Q}i~t8D_B{`;!nW=E zN>0K_yalUUsmkxTi_1md%H)P2aGa7(0Ud`;c=R8SK$eom&KTWQq({90kjW}2&&#(V zSneCL8w6x=T@aRA$eeQu683Iai>SJ3Yc1NozjfIY#AE8gb7i=iQdWX>X3~7FDZ4u+ zou01B_IqvimA{CfiZ?%KQz0Q-Gj1Du1wOp>Jay=LNhgRP^AJTK1%?Z8$>XU2AJl=* zwS1o52l&zC!v6qo@Zt#q4X0MQS3tyq&KAX&fChH6bDp`yOBaHED6UP$zoPkQtkM{D zE5<9Zs*r>GJLbmh=aGTX=ZOw%1o>bgg~*y)4I0S)}IW95gM4 zUi_U{+7X?d+fREfESu5lne~)<$~3ATP{b(h!nH};+44C~HJmyC)%>U=g;ivc)h1o44hTcIleYjcETj=@ zP56|pd8Oz+8SvU@n(n7}_F&S*3?@iJ2#ZT3Q@n=T?JaD?#|)V$GPwgji{fo>#=Zd8 zJU?l#!=q}Kz91njqtd6lySaiiP*mKuU0ha)Tvd+oxx4=)^UuvW~7tZpVb&oquy_mW3t-xGb|<# zImO|zIE*zK^h4N=9DkW($y>c-SJ+-#4W5eo3&BpJZT65f~KS#5a};0NFh8gYpKY@Sj`PEgM0zo)zITSBUo3?h6}`4E4_Y*&s?tg~ zN-Cr|qfygo%GT=t064?=ahgl(nCRp1^P@`}QC5v=)SPEDr9MX$DNB_`ElNo~R+M*V z&408eqo<#Oy7lgta>rI{Nu(kdXyt}BwYWtjZbxvYWeJRB&pcP*$Hq^J9~j`Yu!l?W zw}@<^vl5XOoqs$)Fu7$uYUPZI!b|`O#!1C~?EFdib*0_eY91K1@eZG>Yd1D0%+c&8 zp5pQq5~*anx02E`7(%584A^oyovVUkj<+EHFjE^Z( z9-lZqQrpFx^m)|n!wUKw*NM186@{ZY=9p>Xvaf4T7f%t0r|oc)#ZsoHMyz8wa=6Ep zsLIk!yQO5`%`O__XyWR}0fEF&j$`$CVBv+OK3cSB)ti*zc&8-Nc9pEsw@a_*PvZxO zymRB*xFzvcudZruYY0(ssNGFRr(F1r(e16Q;kwi%6Kb-DOB-Y-NjdXn zmew#Z3YTu=W9BU{{t1D3Vd9uq;zja!Z%hn=%J$}6L_t0Jv|vJvG_1K;OtRx>`BOaY zCcbA2$2=n}B;|$A@~Po+>Pj+88$mj9l}N#vwMUt1k6)WLF)J;wXvcLYKR0C^)16_wMh zzE05@Dt>(Y*kCJcpTy1v%xhGkh0pT3wW-_MLO9A7PU%|S(|fzFx-E1^o1XYV$2nYZ z)5T;NofInhV zZQshdUp6f=LeZqLTq>~Plq=vUAnBWUo58tOBkK69_bjJUQiK#`i=lYAw4=(SHrrZW zKDupwY`ei;I?XWi#o;m>eOd|=s;3%KeDQ)#(@HJDyFDb6R@EQPjJg!)>boBu5DkTk zbB~l|fjIQQ{OXO~jdka3@?`Te0UHYM+5-hS0B65A$sBQC(|xD>60hODo-Vb0TgILr z5L=aHM8DKb_+^p)M12}O<7$9QeAsSqMivkFCwIU(B$rdT*I(>9X*c(?$o~MlYfC@h z-N=QaB(IedkXboBKpYPbI`Maa@OTul98HxkZKXTnX+=rJCem(EyR%wb@X++~PXM_8 z02@`hc`iB%l%ncI;i^7;sc_0o+I! z=dO75t;@dzi6llv`$9(K@CbYW3CjlB+erb4&nLb!U(>bc?3w#2=$;z;PLr$K>n_{Y zctSH6(PNSKfXJW_^^Sq5QVl%FcA96X~wbP8WX{C0XT^ao9Uw9_wQpVFwXIP@# z(X+;(N)`kvy8=(h%y2zB*O%*l54w?V3l>7Vio+iOx(&*^K^+JqARk`f*YsH*?Ah?+ z$J&g#FM=$M?zYg}U951bw1UzGkIr_$V}#xnn+JB+IUOs`JV*N;_*db^mvwdHjWpZb zy~EtYW*c?Uvy}qC;bvHX^CgPm0m%e~#xTJ9^n6(0iPQSm_MRTCI7w5CpruhYqvlE} zw$-hwwXd�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 OlAk+EMJVaAX#d&s0s5N& literal 0 HcmV?d00001 diff --git a/html/img/postcard33.jpg b/html/img/postcard33.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a42fe22f05235ed2f86677a26d0974b8fc617d37 GIT binary patch literal 27590 zcmbTdcQjmY6fQivAVdwKBnX+&qDJpMO3WzHMK=AjNXF5sACL<=q*~JM(-t} z_YytY;QHNr*S%|fe|_Kgo^{SY`<%1h=e+OU``P8(PTwv99%!j)ssZru006wZ191Br zpbQ`)AS5ItAiBE{5fKrSP>_<`4JvZ-dlb}EG&Iyy)YP;LEDvevnCYph8J{pRv$C?Y zv(rB0;NoE8Vqs%v`|l-qcaM?~lTeb9QnJxe)3N=39=B}(YEry-d?^Av4gfwi9sxDp zZ3lq;Zk|MV|8oHT_rSv^AiSF;={+*?yBlgA0Pyh$2=MRbe+S_1?w~t4fRLJq=82FZ zF|Ga^5)KbK;n0L!Qck6cc6#v00hfr4=f`_w3=bKZn4fa2HjnwE~p%P&9`qKh!a zl~vU>wRQCkjX!>Nbar+3^!^$h8=sh*nx2_mT3%UQTi@8++CDrwJ~{n&c7AdBA1*uq z!T*AFcl}?${vWug?{MMYEej#Zf4K1Q-`|}C)PzJ&gotSr^-11%&~gZelF}(9j+a= z;G4uF*9*V${b@7VkkxZf`H9G&g6Xb~tWva3f=Y&JWZy26d}2>AIR?nXlKbm-AiIfT zYdU`t_=|n@FARF2`C0i#1twiWh(yUQe^Jl-swX@VPt94#D%K*pqzvtog$AL18?U4m zC%?tOJz}DO==`fh5YU^~nUpeY0q))cQe#{+=qpNm>B>>3C97@0i=~bWSn_%N-OL8Z ziyW_hc}|z?zMyEaV)e1UN8U8nWGTU2VQ4ffXV8BsLk4lwwJ9m^i5+IA-yhYzVi{L7 z(=L@%Z7dXmz7WtV>U;xcjeSp|=ly0krAYj*Iv@1>6{XP2>i4DoGvW=Id|iKap&dp` z{w0s8v|dSKf)6G$?yI)5K-y4r^*My(^T`x7(naej9;0zWD%#*Z#vR?Z9K12QzxsWC zCpLpDLhRq!JK>AoM(nc>q8Ydq_vf2wyFoeykJ(pF#Wr9XgV?uJT>T_vl4sa$-ladW zGSaoeH<8~c(ph#vFOUmbe)KHt&-v7iU4PD^3E*q_2gpL6^XNFXaq8F;oPHc^vRk4b z9ICsesXWXlRxeS&tH%-Vh-Jxr)8r0RK*>7m(IHnf-V8kQ8;}T7mnb9vbdtb*fuv~b z2VUx;In2Z&a7|KeW+mW4IGyQ`{@>@LqX;cNjhIXiop$u%DCPI%58uWVShq~PhT)de zJ;fS)LJheJXle!a518us_{p|SV9qhvR#tr!K~lp?{3qi1X+ftFRaH)V7^Basgilao8i+e zuJpnd6h8F*QQyxnOW$`*Q>DeUw`{+6L%`(Uj~g3?YF040ZXP&8EnBTCR`Nd~H9BTL zqlv|${&jLP6}(_=FWja}se2K#)J0%0Vv%jy{xV+AG(`X)3zbBkfqFJ6t|GZH3-OzN zL-d9M!a@l9{%Ok^E$s~~-ALw&aFBC>7u@jOH0NY885p+dFC3FLLDI~xkw2TtHr}F= z0QaL?jE0fHem=P&#$gIBb2v6V5bh)`AfKAF>*)g9-G-7^TT;obo?X6|YEG-R`fhfP zaCiDD_6VPK0*6#j#alq3Iu0~vNpUC=m!$sP?aC(P2jUZaHDl9%BZk(eKqldMquGBj zE%M4}q@f!ri3{49Ki!YGdHy|uD^j7^f#=3w%o8EsF8`VMa@OJCbUROrWnEZ;WWMfQ z0Iz)iS`0AA;UC|0^zT^zW3#bYY-p!1%<)GEBMQOkEaFBZDXG7}cw?AP@ioXPNL-WekUCvCM9sgKaZinR-1hv%vN5Ok(-5)-s&-kA&w|`TZN^$*F3QMxrz1WO zHR-8p^#kcwoM)*y!T4D9gD0VnYP8vZ#5r<3gwJan^fTWnIQ*>RoYns~98 zeSTjX`DilJ-uvn!)fN3e@a8P|`j0r?EdUQ)mSvYuZvWtt-}Do~j(3yD%BO?W&*r#B zi{4wn2ZOD}Y+898w$)oe8}F`aRUIUyHkutJ`7WO26Tv}lmn>sT17(6^_s+ppr{0)a z!`(+$)y}^E-E`rYB>U!q{&XaY1yA8iq*92Kd7&P2(kS1BxO_NLFo|)r!2EIr2c5Gb zl`-a_a;)1{4br7PKKp%)0xitTXNjhog;+hmJZBi7I2!53M{hUUJ z=0@z~>(A?zi_yImq7uD7w*a6ZyFh~a;0TUl-0OJ$hy2iJY4-uhvU0lu^N$3_yU_1) zy{#4#Tpf^idAA5DAyy(kAdA{uF|$9sHzIBUWOeLqSz^ZP6Uo`<56_Kj{9TYA6Y>>t zfKh$;O#&4=q*BHwm}Julkfbko3kV7cw}@OUk9bJfKd_f%iRNp@?P5PbZp`3bJ&`fJCCTYp-Q&JN8ZU_CwxeRLwx)VK7E!nV0o%`Z9`)BY$ zpwvO;TPE)`N?DWEuJ5;i*|vaOSqWYKd!Urtj*uOw->^t(aIrj%i1+M_k%7!F^-N8c&JbRODe zu78so_h>J?Mk94}hF)f1hQ-=tw_hZAW_8$9*fuz(I`y8==OOIp+D-ZdV27O&+<(Fc zOVzm&%GFTtJrbf~r)tTpmv4R_vsR7CZtG(8ibg!4r)8dhoT^2d9i}dX~n+wDYj;DKq>Or z_gs$brcDB6qcGeceRsN3?h<7;zDTkL>>lk;=CAnzJ&SK?;j&TNR+C&O8mRl@(QWE% zA=vl9l;=UE=h+k@Zlok!qBcyYRLPzmb#lwiRa&Ea)xTBi>Hq*e&e&oi z183cTGh`?yu=#|TW32N69`<{VtC+K4uPn!mRi?t!jTW;S`Qc&fnj8}cF@ADj70G$k__TbP>U>HY(8>SO`EQIZsB-@8&&Z$5ELL6` z)mG>C?o37#Ln>PRhl!bhEKL~#^tS2IGqLaKR5REQZ4pmS^mVC~q(D?TXatePbaS#= z+N%@%j8(ibcs2o@O{&Oqj2a<6pSNg>{>>pqqhLK-M94c&eeD)d?L-~BI$od8mfVmA z(%)5ID{mJ3ntXGTsqf2@u*==PrSS>|IgoW~%UhG+5Mn$*9Zij9#c2tt&Vb0jWssnr zvFO8}0l7ZJLAA+zoh5SkKDFiJe@zmlwR=K03S1o1r0aFQpHJ67=cOI>1bClt)Gixl zCq!kc1<5=S4Q9s*GtLD$bpkmj5w8Qrp5%I{5xwv$n3GlC(CyD6c}Hh$lYjj1>PP$l z+uXj@U{+dL&}#^asJIV-M^Y*I&`HL{8R%V)=P+M z%3h}b^R+LPmSjCvCeZxbQNf)^{t2^ek5JQcby^d3X7L!r^IO|_lWM)oH~bqjcbkK z9Cf@igZ{^RT=4ZKGq!9#J@s?xypSL2%WvLs|0!V#$&e)(Hl8%fCO-)uv!(cwPWFO) z8nkgaH6&m8u^I`?#I!MZvXwU90%ppq-_m6;k~{ttJQTX2-ZB1=bUBwX!)gBeOoCM6 zRKob&BZtq-i1B#;LGeR&a#77M*7(^@oiKmJXpi%;Pa)5G*i!;3IwVRsSJplk&2Pl& z9E9n3CHvk2T0^d3L-prk45XS=*N2vym~QqIHX~S~JadRi%hr7xP#JnCF_0lMJHC7w zNYeiDyI0jwdF~`vHv|EpIg`gKms72&l{|!09G_Sba`((ZvY}&@=T8_yf`sGprs|1U z-?PbXEeiPa9GCtv9DOz_(fdzkO!HhbZ>F+(IzI08e*`1qBum!7bhZnyU&mTuruw+~ zEf?>%g^iE$;t_3bj85c}7kVQ)YBwSW+p(^VM`tCJ188d=mbzMqE~Y_eUjz!6<)X2vi*7L()iGTv*8Z`=lKvjanaH@OklK=^n8zW4Iva#{j=8fW1-AgEzj||ZQS8b$^vTJ#hnh6s zUN>gn7Z3RIMzbNvrQPAYw< zjuNY~zJ6sNb+vL_p3ZgtWm$c2=cCZplOnFe?$1_9ek)s?M&QmjslQu$MrGvFpomx9EGiwLC~w&E@ZQ7e6ScH^6{wc)s*waRNp%vm`BD{(kSII8SZZRO^$Qk9^a73o`nMu z9iH{=g|m^Oo8LJt-Rs~bCZD1JTsAH4dE|}UQ~3j`n`Yyr<+_MSP5V2RcTkB(z;)yE zi0G`aYMcDV;)W0PLuf}Ixggk?MG@4tu?=cCuR+s4<>1*4xtv(xWUaawd!I1n&Ta}G z!knPb5dt*%xZTqWIsP_cqZz%4*2@Vay{LgvX_Y&+7I$v^)s@JTYF$Tdqwv1n@y6)0 znjdNQO^)b+L(i)`Q{|*Ffsh}?y@!sk_ujePQJ?ICa>;p*`S=Ec++4>AhTfo_njhz4 z!~6E<EEwBXPW+`84)52VukK@K%+URi}DK!j|4C%|qG_ z%4teEc1@~t0};Rd4vN;p!^f9eE?;?gn697k;8*%z`-lAGbUXDTOc}p_A!D^nva&Zu zb>%vtgVV%Hv(AQhU*7_ty*%qXI{T38hA%fZD+$(lErd>**zH|CoVKgREud`R6)Ob7 z|8-oTb^q86#zR1LXiH5u_tHv@k_B68T=7zt4XrM?6*FY@^oLPY+|y>N z;&i$ZI~-;ny)w|2>ZB7v7lcYhx9zUz76DbecJHycDZ~)*+u^QLw$>Raz;VO23H^4}yNSYOQrs|yf?8-D!%{O%%$nPtdL+FjR{YDqHrzf9Ezf~KkT0N}f8#^&{ zp3!M)6h`nez=!5t&u?VN5It2aPL=XYq2?2BN`t-LZjKhcL*vioIQ^35@#DJq{z_0J zV|(;n$m6T@2{_^hzoY$wnGBR=a;+7pW7%xu^F2qFLTOT&HnWfVtxbqu*(+a*+b-Od z(BFg*ht)B*hK!peN1d{ix-K0Zj^r6~XG8q++TW~HKb(X9reS=u`u6l0xB znES9V7F32QB7dzxl9h8)Secl!NyMZ02IH^_gP~xL>(n_6*mO ztEe+$CzdBVHKj%7(Gf4rs2myZs2?MM1gm7$fP2Q@Cc6XoK?$I}fdyK7J^ymKB#Vy3 z*FVgS2WY;31aFY^boTVTuM#ai`cj%2*iDR*WCcn}zy8%ribgswMvpN%(&2^aJIL8-2nf!G&E>at1ECNEOYpRBNae#mXDot!E0*z285s|;Fn@n<*0!LB0yyf&BctJRJxc%%d z?;76UV-Cgx3$G()$UCL$av$1~0><4CerhrZN)jk6c2&hggIG0{ICXK)gbr!SM@)}rHI$kW^b^!C0E>qyN zvwD>r@8?m&JXh5x_K+>Z)3syo^i)>&fDk{}7&h%NRIlY05ch(RYKZlEXEv@$6gLF# zRG)L~z6H?GI>N;`W3~5(?!2B%>SzO#BBA32{BH|SSIIK@vW2Ge>Po-f#kwq!`>12| zdXva>i;uu&-xIg#nUlv*XY>n*w!G=Zd#_Ex6;W&0n4YOQGqFFS%#V|9O;@5*gE+td z{@kz3zBx_}bcx)%0x6kwXyMalIIH>6P9wWo2FKz*b6n`n>5p9}SUtM=<#A6&Ez(+k z^DeaNdmiwjIVc@1@Hj5?%=kQHhQ82@cQAJZ`SLmz0p7a&I_}#}SII(g30{$H)r#f5?0WpxoPEe<-t|S^IB6EVq z5Vt(d&Oe&=9ESs=^uV&tRyn(!M@IqU2^bR5&w8+U&-*&zzTp(=qNkEOuV~xpHqD9( zq|H;^S&Lt1+9FRWrl(2ind>+a;E|8UVtb^LomQHJP}venCMFnjrR%|S=;CRENYv(A z@(u#71bF+Q>LSP&DNeQS%vEoT)F^FsFt`#oU;N8-X>7=+&Ns5L;yynbT{Z~ae>J=I z-VqV}1y=6&Q)W+o@LTy)tLO2GgoufQKLs)Fqq`Enqi;BxacWPbUO0BIojV8FtMaG+ zG1Ji25*arLjRiHg&gsW~L@|}emB=}ZoM@z|QIGnIZ|DHqLg^Jgz`b54e^m zoUvNro-AhWF4}#C$DJ~qm9{!4N%yx|4JdvbJ=R<-h!JRqn^Si=D@bhVc0o1Xuz3yW zQq`!1A)$u&DVGn1+0;=y&GIa-iUZ*H>M4_3!zHLpU$uOU%43``|A)Q^9$zHg26_g( zI(ZT^EyXO3H|&rd9qYU;()r}U9$RuGQKLbpe;dk>5X==G0YrICqV4|`hO^$+r?U7= z+9pw$yb%li`K-Oj%`tYCW>-P>nJHW^*@2i677gA5ELVwMtTxsQ6eQad8ujSu4?u<+ z6uVwL1_enJJSK=XjIb2awv%K5n{GP}s`Pa}7sQ%^g!EHbffyQ;ud%hdR!pjF@t7bh zNSF$xZ_Jz0wxt82yhm@}=v{O;q!p0R?{f>F?0xuxkpTZsq@KBP@#`|yW8}R(_>nw* zg;^9*;)v?)6xP%>0QOb>r5?vaHwX!(^BS)stP-#VWtrC|WNNmdc zBx(Rl!Vdh5rywq-Lsg6KLT?4X)U=~OLwK}5WRkM?q+B9xHSA;1&ZL}lzIp(ytE8=v ze6#!?xrsGe@A8*2maAN;D*iL%b)xUyY3=Q3bIv0F06$IjzQCO1Q?V8e)$p>w-IjFQ zF&ib($6x_+N@#&6?c6d7uFAu*UcZb;88Q{LU^?O1EzG~6A-z$&1+X25;3EgNU3P=y zuMPYdFO0w4Y?jB#+tcxMJQvcAs~Q;R$%jo%f0dZ7HxDe?x*jpJ|Jtm+?vfqS2sybn z@xq-HPuYcw**6*nv~cjuHfy*BivDvPv|>$<*=rrtxEW({b^EJ%_rXruzYq(x-572y zu*@JX0k2oCRNmi7&W+R5)W3#Jhk(j}ruw&lduMZGtzPo_?P|{qNHRx#&;)}n%O~;* z#t$goqu61|$DZ6S1PZD1QHi8*#W+wC6Uoow z_Cc1wSdjN&V4|003kex&Uz43TW1Z^U-L|8_qkf}2aLQw8CLxCtE$i}uFdMe@o!{pp zhwc7=ukDr>q*CHYYs*IVFWNWl6=1!9NsPW>URbCHlgu*Jr|DuB^wXJ=T$kMsOruA) z%KmJ~^ku)cpE=^WVgb{Tsowx^c)MD_Sc=)-6-_ld{d2#XIaO))?#iHh;&-g9%Z`L83JoS1@OapkUguy? zv|diB(2aUk-43v+=4hio@p&%?YW*>k+3G~c>*Y4Mkmwb&D<9rWMCIJS^$`<3!lnf>XBEkvD7^N7s6S+@m!b7s;!Iw}AVS-J(COxEr(e z-ZU4XI+-qCB@&3U-*euC+d0^%OF&y)a-3hq8~uJio@9{S5#P;-FUBA1U!?w}K&I4* z_nE4X)S4-3Hf}ZO{*{#JY$sNw;>VZIPdAN+FORKsW{Q5q3e|+1P+L6Dvi>8;?yVSS1u0;^g!+-67T7d>v}_-`~>j$-?hoRHvHndynV@@QGtx1ODXAv zM7h$VY)&)GaY(n&Er6Chm7ZN?Kss#u?Z$9Bgq7~mmG7*_b&llpon(Q2 zZKuOy1xa#*mB17h-2y&c%@bDU%Ig;ccC<+7>W8>f{OJ#c<&_9e3P2*dtj_l^wvX!Q z9%!IA61>h0#G^Ff58*oP{tf`LkN;MB!qZN>>ASaK9i!6EY=rjAUj6)4HN4Vgi&-*4 zzY)lP$8LNL%Dh~wq)NU^9N>v{h>gbzo5^RXjY<+^Pd01$gI(qw!;C+-rm*JwMLbs< zC%M6gMxe^86Dl#}*|z2l36U^cnz=>CL+r{|C7!3+m!)|lP!oiagTu~WXcK#;enUNL zOS0`+?~Y}R#IvrR12h*88UP(H%VX3NJEaGY`_Z1l+M$ZtZ6K7oIb^*nc`)*k8 z_AV{33W#&*=WKBILZrK)2m`ws>{FVY2J0QQ%#eAByg{Qvrx=6i%WK|&#Yq8977Z7* zz7EgawW@PtmZR;8>HP>>E$EbVC)0WXSmdP4wYwvsg)oi9sJR8@0>rap66=KrH(wU6xr2(Z1#d9eG^?kbuwASaGA<@YW4Ady3xsCo2y2iw= zeFY_!jCd~=U24d?rwufk5t_|&7a7G+WmN`oMxiXb%k_3F+wB(Tem$4Fde2s~GD*R( zrt4wZgzjNleSGTsS5`GhoHMFA875|>yH#S8tpQG1LbSf#?QK4tGhTQ%Hy|(N~^xjouLMv zEJu$rL}p3HmQ0Q29mg&*ddn6AtRX5`?<_%I`6luvzztE1vOo{hG|vdxO;>fgdRd^JmQLXdYPhPbr(}WtF{Ew1 zuv1k?5%UoHcuOmNK)Iq?p92Z}iBKHPB$j9X`i{CS(#Hw(?)w4 zVK4{oF*lZeBk9B6YAm8Y6V6Wy2B1Dxzq{jH!eK0awuM z)X%e-B{ms8>FqW*E^#X3it?AWxCKPb8K?ZV(?)hr(QnN&*<8LQ`E!-6Z+S=AhfCt3fbXEQ14_utL09Mn>z7_K)xTly3^W~99g&>#JYe>}0hgbOnvLEDqf_Nw0 zG6Z9r#Qpq$p6fKm!VCM%F)gQ>JTP11o?cV!%kh&(`?Eek)Iq zx7YRIz4OD`gt_ME^zKN+n(pNzZdJ>ad!-P9Cwn*H$m*#xT$@SWA9M?kv=8muDLgs&yX#rXC2?DGiQvp(I3#yo`e>xIg2AnlXLMgudDxXpj~OWr&-Fnm3oqu~7@}|ni^47% zlgVQ0vgZ6!#iQy^f|e?JBgujbE6YR!((w2QY)6|JbMDe=WHEaQ-TintqW9qbZRO?h z!$YR~z#Ud9fy8^9@}h5vL}SCySQuqFs_oqu@&S(*lRtRF>Q2k8?nlM=2CfU@@$rrq z)A^#%l$p!X4vkr363eCG`kfjn%y7S@mM}5t-FI{{j-o3)>*0@MMJ^x}**DExZ}Z5b zJzmC2jpm$oZ|Kg7{5~$7`EK)=71##eyA1YTo3;yY(?$~uN?mobh%W_|? z)pp-in!vowNpQ2Qag5|!_?NRFs?j=}XzIRu%d2$?H*!bwQtNKL}~12&N7`J33VT>*)RY^T2b|>uC>!KGVJ;rD{+n zSn7VmzL6G$OB?=X&=A0QzsKVAyYkQjK5HFG*If-gc^!hw|~MH}!~ z1+wwKXzpB(u4nw_WyY-c)fNKaSyS*hS4!w)1m?4FY$+vW(9Wm~_w;DaYW8U)=G62! zq0ejV@Fr!G?ZLZQJAh+;=J9sT?kc!en0-olU;xV}6Z@+NSCSdqe7$4CrcR$^r$#c? zI$2}QMRrwum3`mLg(bB!O=f`96{n^j4M8jQ`a$GBuWIEcww1k> zL2mD3HbE0BY2Q{N4rVN)jwBF^(XqME?U(0+mf7Cb06xJ+x|D1~cea%M zOl5Edacz^xP^mdH++Lz$_nKKkC{i`>vfZ^mjZ{2(>k$aoxJxEaWA7yaVnf;oJPMm8_=VJ5Z7OLij* z9R}tHoA$GtUmp~v6*tP=ia%;Xvny+=#H+QkyBp$=9rr#W(+w# z5>vxrr29v+g3A{1Ev(S5$Y#sPmP}2@;kR)7DLsf{%(e^Ubco1ceBn;seu^$yLAZB0 zcQc|l--!Pu2Mb!Nic+d-!!?VbgX_Yqp|hD$d%EOEB8`$*;ESMWyRN*uwCo-I{e_(^ zRFT+%_}X)S#y{4jUOmA~%0tsR|K+XIB!Wl}{8`A<6kvv9>@_^evd@MGdg-(vroutR z7oT7dQ<=MP6m0YF^Pp3Y7;WyQQP>a7tyjI&R!ajWTE6e?xgoJoV$+tbZ4hxZ45Hm) zH=~-$w4CEHq&4i#C}U_sOrnLtlyV!o3k@ipcbnEcwrDxENaaMC8%1CeY-Ol+EcU}< z-{vb65UKNoZP)yGOL%fEVo@HN@vJv2CA2m28dd%hgz1Hc9ZOa*9=}IDR$HIsb$c+sr`nlDVpq-N9T}XvXi5;fv^&G<@WNwE0`vhPYuWS zRs1mA5(zDZxwZp=wNFgnUY<8~lFpDwh|XmzYkBNzb~jt=_gp9(5V`olcn#B-l0_Vw z4IT)8liiws6COniZy$4Ib1XtT1W8^=GsfoQtF=Ch028-`gg5VOz2tjm8MbB~tkj}) zo#u*o2mPbY*^`=84C93%E=N0KI~ch>S^C{hxo4U8?8&0~!Tu-`gd=xWENtp$&ow=_h8}*{ zC;~X$gRw`y`H7V&huI`#t``i^^AixsEN4X@>aZ|d<|Pse>H<{(9s^_&gU(`aa(@Xs z|73wXu~Itkfd7G(kttziTg8W>Kg(TtLs)!@&)UQ)2;E7sPUGII2uTm`e4`Aodd8fR zZF2PcPM33sb^&f9chbj)aVW_6mn-F@ZI_Vt9uIcbd*!)UBdtiuBmW@MA=+R6__n3! z^Z-I1NMHG}P5hcSll>k|y2yNT!W5U#PH}YY-rkQ3MkVA2@?LzTOXrobcLbN%sEhXqW-@2X)g5>J7Snw1ZX{0wF^=!E7rFRZ;_qJ5a8MAyXck zzO}P9==%t=m>J@dRA&V_g?4M%P=cJ=w;-r!E-ko(L_0<)cAR6C;uMn~he-C)(lF4K zGB_-AK2*^taaUZRdy(4>c7CAF5Mb~HPb`;?aS!qtk6tLsk#2|SonWA zXD>6K;*buTjzOY~qgbo#x7Fn;$IsEYYVN@_L+xL_1dqwE&w5L$xF_ZLjgn#~T#RiS z`Cp^Cf@^36qzp08CKeiAm3Is?CZYE;X)UZmt!RhFqVAfLhQBtvf7G;cSQgdR5tV+N zDDzQX+;q3S$tdht?KRd(lP$r%ccW167+Vtj5WV%fHqg%cdSz?J%&651an06nf%}8Z zTfn%etxk1YG1v<2RIYvD=jz_yI5)24-EBx_WU;L?y`Ww3tcHCzk@wS`o|})_gP&CT z4Cxjh$xyha!FB)W31#nlOZFD;Ld}xCP|0`3))25sO${vX?NODXN*~y*U>`MaWpvF! z-cy;bIfRGsd39_3nxISkm7ipmbiY_n0ZPux-IN*FDkw9VSZ(X=>v`O#JQZSJlqHrC zSkx2o_5c~PV`cgJdYqMVVpqPAcg<>Ml)w!u*w<5++IY!sdWqJ%1sF2%B>tC4hlEB& z7p6~S^<~`C{qu0!iW7|tpmP7XOOt{M5^xG>w4+i>VZBSX7VC+PHoC8%kl zwf+_m?l<~?e_8fFrJt3Pj^!I18`#=im<##w9sE3a=&s&v9Rg~3dUKy$Z~Q8lDDisP zc+TC`5A7)0iQ3@YvZ8(J8=M$hQD*11Q)+yHtHO-b}*I$4}pYV2o#0f{6!tWziAODJ(MG?8?VF)3F4xP;V2 z-h%M=b1SzEV@)2>^ayVA>I{jdDH^SSRm5&JV_~HEG3$TaP1vU)zH`*a zKIM+gbI#9@#Ck-a#Dt>#+PRImTnZ*#Tzfaf2*>@33r{VHWk12DEiLD$( z%3m~UGFwuG08^`DXAnkbJyfl&` z5Pp?XS&-@*1oN)4-Qh;F$!CgHL=k%^B>w=!kL^c$&ORH2>PH(op@>U4@oV^5Dvfxe z@d5jg;*}l4mF;_&!tr`EtZ!ua21Z8JN-7+IF6AhE`_e( zg(VqsfrLq*^)21rHpmW@6`r`RS{%!oD>u{Qi`VjJ!=?8g0VdJm>%V4su5IzvDby8r%)Vyku#bM*Be_%wkY?(FMwOg;CNluEl6E-0(^RkhP zt`moNc!yV!D}HP(6DJdqm(`N&9wDDYyp4Y?5bP@+(mrvQcfV$5A8kR8nVkuxJjQ*& zS?$6%bN0c$JR(tk&xCLMZUH+J0WE6s*w;h#xb5b?z{18S4M!p}f-664q($oDYLLD! z&K|XRShC}>+sEBBlpoRWwz3yeU&nc}pW|E;HqIZ-e+PHjCw4KkuXD*n`_k9ZC|;XJ z9fhR-3nVfXFtiOuMK6wRKhV{q>)m(_3D{u!(ZZnrZZkODJ7wmrO)9*Xxw++_-dfMg zI5$}f57J2!7P|=?6k~7fBiEy6&NlUvEs?7g8wUet+6q{mTuBEQSa+YfL1CF=c&1jU zmlaydmk9Sx6=hp7!n64Hv)QN@-%$GeeFcYxVnU76<$-Y}b^71K=Jy zn&K+6$riEv@z}pYI~GWUUUL34^XgnkVT9~4Vuz1ZDB2glna{2vC+-oqrk2rPD~Eo) zld>23OfC9Vjb~@{Q@?)py3QH1!nWN~zA*Nby}du46*U0%hzc64Q~CA#*(^!_!mrwV zuh^9Eyq-AxrB-+?eS{KXt;0nemV66{XeL)k1a50E7SUIXW>Uf0_@}d8-xzXeCXMEN zshUK7BE~p#0HwgNq*Rzi0LY~w}t}$3>$3pwfV?7KwlIGDSch=J-vnooUoVZj;kzPss ztc3dc5KM;?ssGny`u-T+UtU%M2-s;a3iw9Qes6vMMGGdfejM5 z+D7%uenr0#;Gc}5qkcUYxBBt7PoOT@$+0Im*kd|lUeq*pR|UCvsP%N0Z~^?vguUnJ9j z)48jA>Kw8lMCymXXMrOz_8jJMT@dj8n|vIdgjrW4gMdxWJ}f;Wp+Iw-^ov5FVu6i5#z~7J-ATRRb0DrUYOXfYHo7jz1&I__D0uAfQ zLz<2yI`*`?7IWiHtE#|K8BK2UxD(?|laLeUD?PP76D4IfefiJ-wVr7pGev3t! z1hU2mWkW8;A2Nc}p!S0!Nkfx4^^0r)Q~9hzkww>IcMY$z_6iXrAMsWDGB2$EtB03o zi}Gum{Z^`^B-D=uu>auQw3;;}nc4fIf75&+lzT(FW5svzfrB!e!~2zd-d4fK!4Lw$3`&jpA{iJW7AU5ZTq%D+Sy(V#3qI%FEJp~)yVVMRigP_eNjB318ytU7lR zBd;I3CR}j5W1P>m6bD<85qth)5n0%{`Se%$u<^k1W&m)8JtVYKMn_EC!ieppRB^{( zy(#v|*Ff9hNsI2!HfkXHLAl7w$>%7^-5BUHaP)kpjt}#oFO#hBvZff{vwJJL=f1!8Z5S;%$K6$;5S`*DSGm;VFZfU(ID%hlx-9H!r#~AYCCjQqn{lc zc2F?rkqJN9wB8z(q0n^!H_eUIw0@=i>2Zp6;rCUj_m$`=vyPV@o8rtx%kWD!P5T9o zHotH|ynhkCHg|6eB7l*bc!dKK4mi2r3j8vq|` zT6caCGkFbZr-S@dV$R#PDK^s7%xKgto?N7atvB+r`aDf?q2c|cM$oK77yallV!gvU z7h(W={q~plZUHR%;j?Q-HqfsI&Z06Bl~xa+kuT4;0bipjynI%F`lYF#jk^7p=CV$c zal(R}jx6J-Zy-cHJx6b+m&A^jja?E8ErhreG9)>mQRx*1UYY(Hm2uIjkuRoWCA)2( zK|oaGoc@ciVys!xYQ8w#;Dkr?qdu})OUk@2xuv{^UP|-WRt#B{!|vy}qm}xZk{sUW z>CaTo^5H#ZB^fp;yr7)js>>YxGLegJ+*COE{$>GNjl(_NzcqtpSp2e=Bi9Z1Z1=>3 z!*<_D@t;WlVR+?A%O}(vlI8PU=&@}A;;5Ou<7=-cYQ_McDrC!IJ*#}{s15rs`IP~i zW|34=}~4-Gb4L(9bVShw1ilrygkX#9?b@foOCR^) zWRAwP@5X%5(2CBhu-e7&{Q*;yh+&G&(|>waf}xq?ZlW%IQgN8_huNK%)sgJZ?(*}c zeQ^(~FA))^m2onqz5Ds)`uR^u|?b6yx;iRKMoXZlv0 za>sBl4%HuXp1A$nK~>6RCQR1vQ_fw~R(#{x*UU@|iJNciVe_f_ zD&wg*;D1WJV`y+0$>-2|jMnA+2=ZqGzIgSnzruQTfU;?2wnuL zGLxrwx-|a)XLXf4OyET71-pF2H~!0CYUrf>jvSxhPMg2DE9I|-B`x*IRyffY%fJiA zabHvEU-9n_G6vM_f4D1J6k|^lJ9hm|ad?GSE{fLaztGcO+*DUQij?O)DhrZ!p5KLb zM|0!qJsI=Q?IxMDwquSZfBEPA)9YU)yJ9%UZHejq-)j2n_L3W{;84mwcRzhSJ?rEd z*ci|PIE^_3AK@OA^|XA1Hbs2HN7zPI*s;j! zY3g{W3-{|zSN5gKYYBHWwClIGa1`{dvEm7WZAUrBU@Ml5i03@ih{twoinb1&NADh{ zA2Y2&Jg||oaj4u*GVXs6Kc!MKob?Aa0CP_R9MwY)3URbijcjdNuij(BoYS{vquuRG zp7nOI&&?;e{)U~AO&p3T+T%{c#W_thbfq0J-l3ydwnzx;igNO~+f5k7PZ0qsR;KG= z02uV86o;Bs&T1L7T5D11j&o8e#xdTZJ!$dv`c%DiHjBElH1u)>!js1}+1gwp#xlUy z31t5Oy%^(~-?ov8b*~>EOPL>2lg{yI=>^hf0lLul;XCHA!@hHxcH(;1p6M$d!rsQg z)PUf1q#BcLtb@rM(tv$x6*Ov+HO`{rpyGq5$a)&eR{sEMls9eE`64G{OlmT*`_$8a zE`Ie;1T6uFr9MdX1d({&NJ06HMlPksLp4_naYpJ~h!b5)BI-ghywZ!89bT%b7&z-n z$BvY8Aook3X<|CkiCfmFtDcyt100G@D0VL_j-+9+S0lZcARcU({{VXevb@8_Y2rdg zGg9fqo>bFK8s_#~{{XFj`|g+RZhFYyon;3-%}A}sTF=?8rV9^G`B9`U$o?jzYmD+( z)^_8%oFwN2;)Mv3=*2yYhJJqbXg4OQvoEbMzD*|*l{L_~ZcQiJP7V!HcEvM!^`_x) zk@|uO-oXiD6lWmm1CL+n&1aHFAk~c>@u0^9TpCOPCtasmGRce-or`9SIZHTKzd zxCnY5nrD$q6+csQ)a3y7HRt~T9^vzR5vVTQmWyxj_s{pZuKL-y99Jpvf*(7=7Xu(< zfyq(p>s?p}%ZrDp@foUep(MAl@VAMOjYe_D`sqKr{?Dayo+DrMCMr2BGhLUA(;CIv zf(|B^qbdIHrE;3m?z9R9dFHw^+D;Yh&djDtSTxzi-JhEthN1H+Tg58P&Q9a}>aXBG zI`AcX?s|0gJ&#V)?zKzRx3@xA^V2!6N3`(O^`(*d2^d%Vy*RHr@cyNDVKPl>%ehG- z<;gj&lG9q(CPC)i5`X}HLOs1}icX`cduWeUL3=AhR`)xfhmg8!?5uKpzJO=Auc|b( zKV^$5N6MX4kKh&Zhr@|vlUHV$-N;Z5@0<9AeO;sgEaD+H{Hf6~`~%**aP7L%mvl}h zGL8jBzNVr9#Yb_1I#i4J)K>%LGs)iOxVM>R5YRqz4pQbygWNn2r(lS(OuoKK}qgqt1@YH_BFQ>ZTDuN>2c zGnzmKGfo)CN|sz(9EY6LifSeLREwU&H4Pg^L(uxu)aANRtC3PDTz08ZHd3%)W|sq~ zpbn;#a50*EsMam?9Rb@QBi6TU-L{Tv0X|j+v~BK!fCYKDs%}d|-pcV1rv2t@2R^kX zjyz1a~se$jB@_AZ%pG_K(n!HIt;+?zRqE;TX?E6ymHIuR=T2YFO91dxB3W8H5 z1X8Xl9o&j>VU8)-vSHJ$IAf(i7}D=K6s#+gi~~vt=M@2CpREeSWKyun!0$`D2BHjc z)|{+6(9m6zmgsX%3_4T<=cNot=9eg&EbgZ)fK@=|oF1X34oI|R=97PX)nfeSl(uks zQOjf&OtM&-LdPEU0Fa78=dBjGD{@wTIqOW{QL__G1mNbKg5-?cQ%jS@MqA#RNfh}) z_atUMw8DL97?LTO;+?Ke%pIwwk+Vp|)vF>{j%kF@#M3f+)8!$sV~UcjqC!JL0vaK1$J-neiCtbHYgYm&O_uwEE5ayx9K$N|MOT8=dDwjSa~#~PYoEq^E`Sl2WU>& zdslYOe)s|giIc{H-g)m+Y{ zzpqo*c!vV;Xt56UYa#n(2`Tf7iPtB?rC9ml0&-T320vWO40d91^t zr%LCi@k;9#ujKAT+kx-Mu9zhlJF@3ibDE4^hoO8tRsPr9R2-&akXBQvB zpTY<5FQKoH`~z@5w9u21!AJ1=iu&V3A*`c5%l+T^=DwB1LEfabJzQ#Q1?X&!-{VnF z^vy__#}vuV0M0)nTdmKGsIPOyKWGq6l%z?FB%kupho_*giEsY^){Hr0u{hjM@cY-? zKOU5w7~rtPa&wmU^sk6@U=n2ki8~X!e|O%#zN@}fPt~4oU#2>y`q%|~^8UgP~q*5#)?^C0$GEX&36OIi{A14N-tqo$!D}ve0 zOUDc<1Q=2(NQomAn?-XIFEruDYGRyIf#A}(`G>7OqXwi0ibG6t^rc+pkaJ48rDD{H z0T`(jhAI{5%{)-is*y6c6y!M-7I>!vQL{CRCtj3{aZ!dexhJhBb7-;Zb52}?!KlYd zdY&sblQ)cu5X#Y!^BT~#yWBuElb>p_YS@$$T$O0W>tofz;_5}HrfvoY1XI|YiiQ)F z6)4H;UR2_gtbHtI+D(hQCX||P1vm~pY8pu1I*L!sIi)>%(+DS}Da}K;$rRJFDmCJt zjzdz=X^KgsCXk$(a!@;fCY}v5y*LU@4&%mi)|`H|9C`0g!6S+mf_jR*Y2B$5A4*-m z^(<^c4KFyPIp`@qY69cAG?{7!O*Va%+L&8Cs?s5murwe!rxT9U=upWjqIF|c zZ7fS?y8I||+Fi2kJXr&sgS)4E=Dk-=TC@SjPu8FV4cCm-kjsklqbD5^?cGTE ziry!Y$p~1J#(P%gm2GhgD}^KQu0GdNxsR29&bF;QL3XGz$&u9Mv!`@IVP0M9k_uY!IY>PB619mE%BQrI~DAzyfSPC(jJ zUq0iN95SEzX1;>CXnVMaA0y~1%2jgbHgu7nmm-@vZJqk|r$y*RCBpomft*)j-1wQ^ z?D9X3$WDsn1OBQ`&+X}74QmQT%QJC=jB*e6J?rmJjTWyygEz^XMEnF|dB>rzg?vqI zCB5S#p+Xisf~0>3y?t8uvbgy(%fU4qe3x{LObk;1%W!GVxbH}VZ#>t{%{0%gi%gTC z=A>2xVxi9N)cA)vH99>DOppv5RfOwMjylxw5<64ewEL38YH0hKjWdo$De6Hu6_Z8W zcp0aK;~AzcNGf!(L5x$!N7M3vWr~E*tgEn(x+3JhS+?WBNbsl^&g#hwI9BHg)4F< zJ08?y+MUO!{OIEyN9S2Ijnf;7PD!V>Jw*$Q@OVSoLx6GCm97^WIj64!G@>UhfT!}Q z7T$6=hC}pIMd6MuzMqduvN+d*|R2^qy5xUHn{uD-`V z*>_z30MjG>6*71?#81f6u1Ec{H42SR!uri6_Ltssr||sg0Y2ZIbm`!YeU1%`!~WSC zu$}sUA>IQqtFbog(o5rZxP z{{W_Sv~uiA+6FSru)p*1edh#ndJ1Xl>0XB)!&~Oy-5~z}wnzMGSpFGHlfL+mq(-z^ zMlt<|{d~+No8Xr95$4$Wsk~>BE7TL=jz`a^F#1JOr^5?yK5apd{j;n7$i{!qwqo>D-PTIsPz z7>WpEhBXHPLC++Ag>+NM>bAY3NpAo`!JYTH|2U~cJM*T%QYal`Jmh|) zS2oud1&I#W&3THNTb{F= zG9Dd&kNu(TU!pz+m_Ck=ytmH3^3WgoWWLq;$MC_PKN4H>kKQN#hAZ@Ez*3nsPQ}9a8?(N#%VF}2<3Fw%v zVEh5R$;ImJ2m7YE>)>Xc;i~z6neX9ov8uIpJP1Z{!Ocq=uodq^;46T4>KOVdsiOE3 z2ydHFZ~N!}0IyvC08^~><@{IqorfT-v;P3sr0})>0GIMDSERR*^Qh;Vn`Z!u`aU0m+7MvPaO_9>KmB^U2f_aU z4}+F2f8aGgRIL8UeP);QA2O;O)ApMBmLG)v8cb#)-|!JvVEAL<$n%R;KU5WK0X8>` zqulvCAvGdK`M?C%*6Hx?!{`AP5P#nStwZ2V3}+g3zI}Gpe`m=p*Y)xz>$H!Mgc7#_ z8l_t+l1A91{HyFJd>x}l{{S%fKku5cABFU_`Q#(%nNPyP^Xf9z`*(>Yd`6+!ylKX#v-f5+j50v5f zZQ^$s`wXK$?3%d`!oL%+&)KA3_zitVx^Yr|L(M&OypTxdq2MWhH}&_9ImDOPK4gpG zCy3hw#^cxItvf%2ny^1PeE$H~JpTY%`ZaW*8z;Rg>4Pi)ABd@VDh*oy0N37WOFgSj zS5ZfSLGY&hb+~o^0JdNKdbc0KtCD_wLPh@owtxM4_cYT001&_T%{g?n51bGC=CS_D z!Cvy$@BaWZzx{2+rDT!fQT!@$er-li`}h9<*Q+r6DvKmOqc8pYALCxn{gy`|Y2!-( zebM<;nCI1f$BxDDuEhQQLSz2`Y{&T3h`twT$_O`e5&qz>UR^L_g&&nU zbgX{>ss7Kvu8;3Bd{d96BK`F5zRJnBTd2%Ir`8v-2VXj>$Lj{0g7L+$BI9+3HOdM zw7>>NKRQ*@1~Y{@_pZzAYC2MjHO47_Xfa+#7@BSY9142ribhX0*o#FRVuNU>wI`S` z*RjZdW@j8OKD9b&pb>yDE2>*n9R)aBfI$PLL&r&tCUfxE_XDL}hRX*aR=1QhoKw{+ zo_LutsL8UVR={H-tf~bZQ}IjMx#c#?Q0_;H2;kG{tS;&7? zuNS&-vp5<1&HU@#ziCSqk*Aw(Hd&FJd)LnTgi<8(l#u=A>-Dd&sqbJRFC)XsJ<9bX zex+S(ZVbn{U*;+tk6LW0bukO~xya{=jM`sh{J;41cyh0852lSKj~hRk0>9Y!VY+5Z5RYhRt-1vuC2{{ZW} zfBF!w(65D$zd_DW?w5=M{{TGJvx2rNA3wL@%mGLvs9i(KT7P)f}X%ox_b8lx<9lHZK21mnZ_}X!k(H~81ML3UbZXT zQ^k^hbW}XSiC?M7E|?GSkIJN7Hv<7hb*W~9_(ePH(U0L3o5!-O&Q?7y*i@rVe01Wv zMvWJMnfg*JXF1t{Qt^^to%BaMG{<5xqXXKd8es=JMQ@KR46@>$He=-(sCc=8NWon! z9;u3V_DCm%6}+Gy;i*Jovv|3dsktko0W`2a>L{m;FXrV%ZuwwSSjMD=U@=kksj~fy zlGMik>VdZO>>!zj-SDJ9smji)Xjj>HRHn7N~ z>&$VW+qKNU?DgY;PhCDd#+#qL9fUxvG6xi-Aoiu6M1mscpzT!PX1mOYeoO)lN=>WuDoG}ymDzP;2A}0E z5ez65AvKe3=Vdw&YUF-crSio(lp0rM{azzB4@zB&PR$vj?4?3IhU{84EjvEcW{a`= z7@@mG8y20KGey|FltyeGlx!5NNgPubetA4oS2L7h5!(l)8yC`?4n-TNyBntgy9FBs zC}H%Z^HPG?(VUitlYDWsNp#!BU=Cma<#X#^8K`M?=4o>jWNvTa9<}s0#wfRF*JlmP zU~oshc$T3L@8#Q{zQgseuEM^23Qwo}1H{559BoDDaT7~nXt%NL`$-=rMmrjrK+QzGMM|Bk=aSI$*}dS`*{@mPANA?m{h?o= z-v->bhXHNh>zf%|f6Fmnp1v1ty4|1scTfEYSLh$W#t-3qupkNF89(d_!Ylo%9*^=p zyc@m-s`Nc7+pc?6kTK0wfDypyR+pgkuKDhKRK6)ErE=^h-1emd z+MFmfu2PB+D5nJ;lnQn@sky9Tgutlf;x;(wDr{0RJcnj_j+JsPin~;26`u++%F7XUT=%QN;({{rVL%xq))f~-TC`iY-cJ(b z=BDG?s3rVTDP-jaGHN?bRy&y;V?%^}tWWv(teq*nY;@A81@5g)8J#0d%)v*gHP1lT z8inweBtjK~4?~fU>qe`3_qQu&Z}%8yccB$5*O6(k`A9>`04zJ2>8DB4j^6VzomkYD zKiOZ4HKQd8#uo~sgGJTSL@|+(*PfLN-UYQ1xWQrak3)*dwUMV|eQ-)A%&fk+$o`d- zDRW)O(si6=$e#ZIf;J+|gE`~Yt;D-m6_KXj8^!Y>kM}&`y~iKYv?7~02mb)oQBo34 z%ycCb(=7rq){KnfBCvHmXUUXD56sHpSPs1Z0Q#!cqt49FAz%+9Bc&&Yl8-Ysjww%A zqf;Y2MF$=6T>aLoAiPMRUEjPY{{XEb-`vZ89B8>!am2D!=?^J+CsHb1wTv^zKLAp^MPJL;tG_0)mB3QV|Hr9yW+%flu z=RkBl9Z%y}cXx7HY2ss+W+RV5QfN@kwVr1u=VGJVJXE?Ci<4%Q@iLW8OM06J)N@c@ z#$L`5(y0-7a%>V zjmOrmk&#teqIQgSL}8=L2Hvt_778*>1y(wRzE}rVWjMe*=AqUM#s-QXzRQqmu9v0x zd74II@?emA9Dntwg*b9^NrS6X+HyeBTgY%XFj7W9Clod0L4Y{qXRT#6n=5J-@;rxR zWRg8aTe`I`00V+K{5>hUbkkas^@`k%MC+(SBZZ8I^})?RbwT#8Ay;!0$iU4*r)lQa zDY+$`$zN(sGf#LQ&Xu<~+@p@f)pAl-7q+bB6yBXpIWCqscak%V<26n#QDnDi7X*y- z_NM9rM^fr|m#|&|d2-`nenQTC`@_GSO-5Y2MRg=?OBCU=5_g6Co8Hix34&tn8 zx`NwVvxWhH$OpYT!o*v~6%QD}sIIity0}9jBq`24MJv*CzeFePeVU5uQIlAk?7naW z20+RP>+4btPU0I$E~Q)pjev^3KA#iq`Ej)hsO^d_ZBkeSP6p5b#b30f?e3Y$RF5}% zXi>JhxMh;!aupS@0phcCo13fcL=<-NlXAbO1Y)gf&^(IP@e;WJiqg`o7Sb{}%W`pA zxxx@{t23sZN{ah0%)bf5Y7bmgl++vwb$P7x)4t$ohMak%#R!=pr==x4(@jyELQzEr zr7{FGhX#_2WMY{Yxx;)~h&PAsTLbQnryjN8nt|Iqpb&p}!}YJAz9dE@&?G`f%)oy- z@Et}xU0e+Go&NxxeO_7bVBe|YM$yMVGb&S@{b~+<4P25loQh|Z)ts+$*s<~QWYp1) zJ?a>}bNE!lftvYSGt_3Uhq5)BK7Zx1b^40?{{Y|%2k?w%2s13Ff&RsQe`qAGt7yZt ztNg`%^ZPqWWbkw>S+ZrDg1G()$uHl*`kvMUTqR}Xdfl=8-{DqMrB}8eC#MxrP?-ZK z9Zgl%tz@`Tfr_gk&OLEj(Zr~mMLeKjGg7MZ&zTBXZg_I+bJN($nmD$D<#QOz4y4tK zTPL@&b;&Y01h;;Iwmh&-Y2I3zr-^M?wTG88mz9iND^D=*X2JRLr1c)O!Kd%PTd8u` zR#Fd4WMlbO=#588tEtLu?e{9~EOzltSDdA$?3rQIV;26&&g(K=-Q9hP+>k&Ht@w}e zt%R|EvaD?W=N_l8^`>aHFBk7;=0zn``)0NP0AjASYg!TLIv9RxZO?fbwiZiiY9Ue7 zllhvSOKzUPU-04_***?}rMV^xscXHfG`^S@SQPUa!02;kAN4-tWToYDhWwU@B>|FZdrC5-56(%UfQ=5HE)d((v z1r($V8d?oWq++A6!ivNapyHQk9R)2Jr>Jr(+-OxjsdlgDN-1c#a!0Vxsyb1$dQ+&S zaO96+r9tgR(Vmp*D7bR2!*D3tI*N4^TuvfjdQxC|Q>dVZkk;u`%#K)$5Nhe>not(c zdbr6Wnzbi2qbbF1GnVAlrCurE0ZBuXWK*P|vi8}uPy9I(sJ6GgJ(;=W^Gw|J zoTQu3_EKlY@#8$2oO7Q_h9C=KryaokE9I7}L)4Qm=;W@WY`}lZMgDd7r|i_u{tC5y zt%Ee!%LDu;-o6&_=9#EpU%)MGB$EyfK=-e^e`gyDn-2(BLvn#z%$b-I*n?S3HC7EC z)>@jw)xTrdt;ZgQryVg-+Q*JM)a5>E>XX#@8j*a=K~4gIrkoViHaNwIDMcNPEgVu(kEI0%<4lzUj1Ubz zlOlznrOMTq)m(jZPNO21B7v?^M@lI(M-+`T=q(h4(rzB2iw~K19Z8yQ_4O2QUr|oN z_K@y7B9}ED^c}?pWF5s8VCzA3B*>)5sEpB$^q**t9cl8iez8xvHbpK)LFb|ANYkk8 zMfCKiw48yKc%T_H0iVO?541imCRe z{@|qhRG-}x{hWz-%4N|;MNw;+Jp~}Rl#armvSRx6GX6yz)dMu8I6Txvr(#c-XjHt( z`urb5Qzn5~L(XBtvHWNrY2dqY{?$KY<_{Yl#;!#hm)5d~kpBQ1{{Y`q-zkVWk;nWB zpRrxc{=ToGHN3?B^*7Fs`{J?8Yz92X{{X(Jh9&^~?f9CdLOsmhIlhL|Ttc|af|_pa z!RAr<8prbUkC^^+jTpxy(^MnekFH5{HCs@#UbBJt8i?waK;zFJ_sRbN3dxoT$sBd} zrVD7n>C&}WdVO0X>uvNl4y$HA<*@$%zEAj6ZLHaYgD?I%f5Ni-nDfO3G#p?WrH7^F zCy0@x+SQQge}+h-=L>{SHjfT{*h@~Tv+E`s*5eOR)1hTwhMB7YjIKZx}J50|Hm`?XF)exIc^ zl{3nU)-j^K!JMi{&3_PU%nr*ahdA7r#N@HR~Fz2x0rVHNk2s1kIJl%-_zv zs#EsV{R}C|LRLt^7K%yYoAy=o6@9P?+fC!pS2K>fo!rd$>%%?|*EOb5Yh^GQA2~yc z^^XhuA+)uPW!7bOb^|B~7~?hTFvV|ff;&refiOPkr=(ktIVaY>dX`@)JI_Pdc$#qd z70gX9M$>e}SgdT-RWJh)$>P1I;YOttHWv1>91tWtkF9ysaV|zw99MbZXNgfuMlun{ z=xefAI%+mZtTrxAPn&BVuWxm3{H%cEtyo)#Tb-E!u)kYmRtbbUdk4 zX}cW=o*!CKEPl0sw|VcyOt*t?2C{f&gs~FrZ7i`Kgj0-*?O2O)7o77=H;2}z>g|>F znRYf_by1U13&bZCkZ#KyQX7MwwQCRDhgxR9x*n9G=i0G;(0ysb<*EH#pKUW|?OxP| z=bFkF8KJH{>V1JuwMJ?iqwPp;&1D(Stu)V6s3Lu=-&0^+aZC1tSmJT(N^W?@X!Zm4 zlU+?mxgc>&YndxB&T-b0&-XOd0dvc_r}lr3aatz`x@?=x*LVuqV$i%dIH44JI|0JLP{lh5Y>(^N@u zY|!%*j!hnDJPOY9`OPSw6<)|(tkYQl>qyQ$4QF}8o((9Kv(~5C4I=lNDMX_cL8K;= z%{awBWEMsCn0BblnKeVrIqE4)y|YbHu=z{gXz7}Fn7*}?Bs=<=k!B~oQ=}%1AnQx! z4C1qvUwU6R(x=%CK+xVXO)~&0kdV?dvEq`XOD=i%=||c)?ODuQIPFQ66@JMM*G7T3 z;+yu7R5Ekkjl!R@Lgi(*oRh^du02gvX))5P%b7UIts_YS)Y9`o0E5LfrpJ1t7GoI6 zG>;}}`!#XOD7N#OX`9s5IVKsvp=1Qrs$%6XiAE{QC>2P!6nUPsy_gqTZ%`?oc=Q;m zzGxzodXYk=ClbTU+*E#Z6U|pHxdV1NrWrfrXMcDXXh140QM}j zhpk3mBPWWCNC3wJGkH;F{sJ2*XN92k$rYuE$Z3h{yofA*ePOkbO_< nUbYEZEa!J~Rx%`43`X8FP1*j=1_^G#2L=f~xWn?_ zch9@$?591u)u%u7>8jiP-0rHn&r`Qv{=UEf|0&BW$pes(005-d1Mso}kbS-S|5yIU z$p1eJudQEt00bCFS#LCuk=_B`5FjBFAiWF#XkXtG^?%t0{9gs>4KfNU8af6h7WQj} z#{U3skdTqzpdh27qM*Fi{`PtwfI@&u_?A}&jY!i1{hb>zUr6$A4EhhXy(C)G2nK#j z_fSkMQZjN1N=7DT7FIR^K_OugQ8C$%a`Fm_O3K>WHjy}W&V z{rtniBO;@sV`9N6scGpMnOWKS1%*Y$C8cHMb@dI6P0cN>ZGHU%gG12akrtB4rTRWIX#HX#Xd&|98Mb z|34x7-@yKFT+09)WTe-RhfDyF20Z`T9783D_>3kUSIUs{6Iwe7zw7lOt^|Gh++w4H zh0ho#Ot+o424#gMw&#A|YimSYa~7npW~4>#YRG`>s^4oY!KHmc9e@%}&e!lbAV zpXut^NehaX*Vl)3Rjfgb>0uC)z!A=!hN8eZ(?LZoG?E+S<|7^v1<-(I-*laCY%JJ& zT3K%qp&y)e|7;&!l4ik65pUS_36Hdx&0%gim1R&(Go!KL>sFrKw~kKsJ~RCJKy`7h zEb10LSs;;#QlrXKwsA{Z0j)S;hzegF8g2uiU+{?Z1%MK0ObWBDIbZSBFrANe`5bjp zw+*dnmiEm-1>*nNxMgC7(o#QaH>PNxkvwLHzqTN>M2sZU&oL&fOW*3yke#u{(@ae2 z)yAir28w+v(Tn_$NOP$1X58!Hpr|k3Wv%vuyeWmb1IXEOIBTt!O1s)0Ib<73`Om8U zYk3i+3qgu4H@cZt_*MzaOpzX6_6aezt&b+{0d@*LBw;V<_ztH{rIyS2!+P zb$u$UUWFcLs{pG!$7)ipo#hZyUg;pvy&GM^6d0W^F0anN$13{p3(pVqxaNNr-%2rV zKZYn7hRS!k!$Xsz6`x@C7=*T69L?ZB#C)V0`?M>QNp(a zlRuwVZxeoVtrdZm&|MhM56V}8oe~DtJsGc!WPf$&o{z@ZPrF+H7qw@EOpz zh<}iC4MB+F82qC47~-Er&c1)_R?j9nz#d7g4w_tC&NPfeH9)EK7x-HF%m2SaBDYC# z#h%0LJQqwI&^jfrrW!)mfz3tEc5eIXAlu)6eW9g<6x@Z61)g7HC%KR-6T(C9}-7egcRpU5uNdToy>1BZF%3CLSIivjehqfC9T^ja3IQ2Oj3&xpdm)6%V zrvpd3@Xp@)XqK3~OP6Mi|AD>YOdfDGSyp8r!Cg5N+r6|%%d#vJo#eLqU1m~!3yw^3 zxY$i3LHh+bQZc%MM^RPj!Yq@xX&bw&gFBUEAc8{uorDS7B~A*X1qKKEg>ZQ5W=Sd*ejrwB2T~+8AkP`50XLlrj{S_!9-cO zs0Hk@=BEJQ6#bzhl03er6KL8cS|Erva!mep(1NaZQ-*#Sal^xdr-;KDlS`E2q3Fj_ zCDTSdl6_M{;lizqw#$HjGi$j-_)%9BhU>=SIVm~hcxoi?CG6+{$g3B+8}eNVs%17l z-4u6DD^y7IzeG8qrPKgw$A70B_*rvKl5Y|MT-6Nh@-*k%4$9vJ9>-^((@OFAPRLK8 zN#pFjt4(10Dbi57&K;m?cJJszZM1)TB?2E3317J{Vx|gYa|h{-*gLjg&3^Nox?A1P zm?X!v_XWGPdvYL&T=!DkUmxnx&pK0Jbv911iCQ2#uie3s_j5a}$nOFDR9>31)aVyO z_Ib8Z58cB-K>X+KP8Q4kq37+B%l2$+8KvOMErA^B!F6(*uWq(H>vU9ze z^=L$Ufbkw9bENIZJ7S4XcxV`K5#*Fy-keKG%_Blq;WovN%P(1ppS=-ieCoiQy;6w) z$dbi`H~vU)?&@8kxZx@@U$QbyW9f- zF!w-2W=$NNGQ%-JndG!Gv3~W9lAmAA^(Z)RWY8*4Tb0Qf@s_7F&hL+S?z0%(=y$bc zcF~ng6eDKa9F%86>zlgIPxaTX&i6O%zn&cKY~zGPqN<^b*SM>jcvH9QY|Y61z%!PV zpZX(Bo9gbdfxgiBYrn}j%#StsNYZ1KQ2Gt)#^;6?KrX=xV1xbfEN?QKKK|Fw9m+J) z>(noUC0;K6#Itpa-P@ijF|h0Yi3y?Gtz{oo2e@6c)i6T?0o`XlrNf$(Pyn2ocd!y1Amnx5!5r*@&EkR@}onm!FU4)2@R|Jr$h`t2{0Q`~Q3T_agJbiOkQOHxF60kG-SHM(@7I1Pzv z&LSSwYnf6#D0vg<3s_~^8&Aycy_z$E(pNlNBAAOPF1tI?p4O^-JF92*A+pfN%q;nj z97s4ytD;bP;5MEgyc)Bdy+nRCBi>|KO(y;Y;4L}~1jwAmFAa%8zEXO{UN(lEfoS)# zWl9VyoE7P1|CRpo-aE;YQ8{eUXKxdvR8brmTAXI~t@xLr;#Y5Q#$Yi%rd+;jYFl}w z>cKdxn*I}?B7M}EqT|mSz%xBm?boKC2u9qFfpAh!whPsb}8%!wAc?2F5z z^Fs@ve3FZ~8=L!@F96#mg0MHVrLxq|cF}7oi4n%< zHo4hXaaB2qcgwAq19g1&3W$aAS)nj zZ?=(tL|%r?#n$3RH}Ystv{&{BPkb9M?J%*x{v?DFpo3$DeV3O}1{D~Xx}1BcK{_2$ zsJZi{SrfZo;HHQ&M{i6hKeHEUXgdvf#;zJOk%<6l#becio!SN949A^21+yii(9{*G zC@Py5fF7iIN1lV&>0zL0?JqMOOHXgF#6pTOL(Gox@WEg+KM7UHe#q2k?+Fa%jXarP z{Qat&k0U85wV@Y>@r8C96i{k5LBw?)#i+ttsYPpY=soX>l9Lo(!Tl<4&_e->_k z_p{UuVQ`nnAg8lx6fza&VB!q@b*!TygPvrZ&}s!O={8qS`B0nWfr(CzQzVQ3n-2c? zpo6>lKmtHbeX^#VLK>NT0T|_zgV(+gmzYz~}0#iGIcS!#Q0LhM2$J##!n+Y+1 zzHKAZ-W)v_E;uw1IF45syK|{!-1rrpUpD>QFBgK z|MxK#|KInZpAm|=l(kxFBUB7I65kVl^(COYEDFZu(*DTOGh#~pmYcouFv3{ka?4II zkZClkq+F@3EMzYHdfKh0;_lE%ilXCUArZT+SYC@j(h^0N6b6Pt)$rKowR_#l7$&)Y zA-MwJAT;3KddBmAE#7rc#V|C69F!A4&oF~0^&y2AVPI_;mfQLPzkRp+NYV6uQ{-ec z0ysX@o>1FZI&x*|6jWhWl62=T0wDPu=IBg^+n*AW_<=Xn_v#oM%4?o0@GTx%(*w`R zEdk}YyY<57w-F4oPbTL`VIv@3iQE=z%^`Gv6}6iZSxCO_=f#htk~j+FLt^YiS9k66 ztTILDW;qr`d#GGN=|=L8km`G{)>#^cF~Z&Jk);Z58_f}B$AbnV$Nc3RJ&9DdRz9x3 zJInNp*qu7-rHjxFZ4Kx;%x-3l|g9JPY-gl8aGU59{W$$1efcWu4aTF~_O9mDvofpnQ4j$+{i~^>r z$n30-9UPtnf}-LS9Is0mI9Y6|4BdmQ+7rGh(1hi-0@0|vYjV&vEGDGhyDI^HLYZ^l zivX-hj`k6q`OG$lpa}8@sk8Ii&oYK&C@GhXHoD>}TJl z3Mt2xbL=RTt0;P0ki3%P`;B)Qt-&-N4vuzgG0%cxicti{>NtAXusET zc?Btw(}YqFEw3Ft5DyJsJ6reGo{zt#U49Mv7?4Da*W+?EfiE@hRiRa($Eg+@t~dU$ zc;n~QoZUA2XVA9Q#MIG>#eG!MbIyK2m6HoHeDtspP%w_#SXlYpNlr1w)&wu239Kfs zG^BI#xzVS0w*kGTw!oyQicVf=t#9PXJ3Wiy03ps>YQOoq44@113;&HGufPy zvrQ-iJJam$&u~d|{*4_n_7RrSGqOAwfRpq2Vg=wiJD?HR3{mD&QBqY_VoJ|u+JIZJ z?k)vpaJYG%+_%i_G-b@sUPy4+Z?8kXSA+h_j>5k4C*W73DTr3oa@2*h5hPpv^+9g; z-nA6@%zJ^iG-=|>zNp@hnVPOrA%6p=pv_aiih(x6Khfes`bi(0>b$XmT%`&oN!A|i zIYcdQ0OYXUH4~{SOV{yzM48Ox!OU#ItacW>hJ7QFEshnT@?(!secLw#sW3#hmd*sAy z4fmET(ht$E{kQ3Ga@@G;BU5)(T$dhDecmt@#7>RcpXrHHO{Kx>h_(_tw+Ou zuMB!UXEK(2i1^p&+S(vR&szVnogefT%xR5 z@RkeaL7Qnu23h*qK)BUgP$B7SKr9rYCC{UiBqJV8hx=PjFEF`Et=!uuUQx8Taz;}< zt7Lv@i8+8$cW85ygi$YEMVVJiTg&0tv%PsI7&>{n6SM5}oz%DQ_mQ8AT1ifTTTi9p z(PK@%Nv<%#5TDXMG!Wqbu+>C5RarC0d)JGn2*XKJ$(j(Bi55tU%!{FWvO_rCErs<~BRcGDBVf zfH=H|ZfD|6$ut?awbL7>zkjS8iK&$6%fy@QKscB5vnY$hd5wA%Kxy<2+uGG}D(1)z z&9nz)C{D%el-blmVIvc4{RaT#D;1^li#jQ^zJvpVu$(p3$g>G|Qg)Oc6o+o~o*nJm zx*Z9IOd5S1qu*+$d#-CIyn1Z{AD@xs=BBzby;Bc5yn#>{ww{xaEZa~*(Pzhpwv$Kv z5h64h2!9?A##Sjeg%&z?y&pv*kdEef_VIq8jKOK9ot}*K^4L7ZzWp(PRr`A?P_q0` zc05v(K+HMM>sw>CdEJT=6DlFH2idS+vM@)~-O>vnRM1E+0C8|~#aYmj_)K<^Q{m3B z)A6M_Xo40ej;>Rc-qhd&n8NCt^YELM+CX zjyB>-0e3I0K3;JtK<7TY=9nt~hNAcM}L8Br1|U>6M;|9y!wn>>h##nDBEY?)XerYH((L5F3Jb;k3Pa z3;IE=f7d1z=@tYC6d}RnXR%>w@d(;{g?@|7)PixO(W*i+5yqn*fcdkq~u87Jsu@`$v{ZH`TJm_A!t{w%m0hAsL zt&?cy*aCh%qfkQ^E(z_~Dw3&`_sh}!si3ARYMCz1H)yd(n)a0PYj-}?#B}LtddO|K zLu_-E6hEP+g8;Zf8x{Gki5s-b@_Qxsn!p8~nfD8l1$-(j6` zE>NyqsoXckU|z7|A!}jFIIdG)J6)6)=vEoZD#)Jp0p}yY04cFWgmd~|kbnwuso{9j z*2M0ZraPlt)}Q>5s;aGvJbsK!lTYL1Nw_0arRM8?c~u?dU} zs)w?+wq^#in!%vixSZq*Ad?@Tti?>LB61j!*-@)qq&o|>WV1NX_R23ff~(_4>68u; zf!lV&chnXBBsM(CJa`37we5^`LEzBF_KpNn-%8JiaVaY6^aZN)SPa;FaeNvV<4-+% ziq&6=f0M~=VvO`rO2-ku8oh*!*I!p_?LOaune*x=_?W@o)ZutVLj! z&mqKv*PhW54#`yFpND@bjaGJjF#)e3Sq;irxB+Q7a!8mYLI>dDbt;5PjL}Ct=oBMT z^EfF{ys4?RcgjDN1YdP!v4nd^|5&xdfa2^m@x0s@z<}QwKc=R3@0pyx&i=)D&_VdW zhKA6*#@}(pTMPRdyN+@qCqaJ$>0XD!l-n^G#aE4tTGnn$oar6EV4Gy;aI_Pfii#K8 zw*sH6HaR(23ORxbG~0)p&Bfyf#L8fE?I3Zp6k$s$`HbV(iea`wq{y~y0zVayfDWrL zxzoft2{o8&YVuv%*EC&kG_0U~3K3=$>eXQ1&!0n9FPGJ0uQ=cBFgNAMpLOXL=sI=# zFdE*p)dP?%zW0y=wtw37im=tBjPjcV88fPu8yL;A!g+8T@)&CVW<4+zSwpau**BZj zYd0qgC&Y+KBH+&C!z~#rbDEG$3pOjhKo^Eqde#kGpdMPIPJXrlC|Bn|DPW$JY2|tB z5`S4+OH3d;H}uT6%4|W~%E>Q)G}jI+Qs_HZsJHZXNryt#A~g*I>qHv+(cslNjgQ}M zrOT*xnq5GfR2@;v4_M}s?g2Ms&14JWU5gMAILr}j%^Mr1kV8=w7Tg`&l zS>4#J^;gl6X0h+U8De2R5Z}zjo-iPddq13ai zxS7|Ws%=ETKRsPfp<|w|9UHqJb`M1dd-WLbT{s_Cv7w4-Ky`Y>evK{3U_i43tJ=SV4V1^dOqz!Ngyq0e}`fZol0WvBGd-c!xAwC7zd`Vh|LW{uiHlvW24~;IJy8s$7B!Z>p zaRGz{@fzM{Fa5&CEh?(4Z}8wrtFnGy<%GgfeSMP=@*&fRG4Yt7t(?_*FW@;QXfhkW z7ee;Peij@Xs0(XOhxc7eF@MY+So)QDYux9u6>zu`Q!RjNw7k9`-&z+c3UO%|vtDth zgo$$`-vxdHBOu7G$3cwa9yFY}`r+x+`U5t8QgR6u%7VMUeg<+;F;(fW1_L+oy-Y{` zK01cAEJu;=W_BbZZJML13-@nc;3)U0MBkQ&L1ei~*yay4QYNbJ?B#V$1y*zDnbJY` zq1?CJ{}Gh6Jf%I#*M;N0lRcyF|0HY^!e(0^@|_M(NQ9i(kJ(|r_XU8uI=#c|*IiE* zcifyr9lR-tsN8G*QyoM3-496_%nNpPys+EEkCDQD)H}O|z(%BK9q;k7Xv|d?8jc!3s&W?hr6Lilbg|QeyWH&%SA`* zm;wKIVBM)ooN~jtm>?vHzgc>x2B!RSnTpAlm6f#90wst~S{bqxpRCkxxqKopUwLeO zVtl_{zVBGy%o~wCIsl%>>)Oyo_FUXEc0A$*5Ycvv1pmh%5pGW8>+rSg-^${56*Tgp zAd^c`NN=VWyQlB6e5+C}dDe8HwdzsqWUb8b`+@T9^qyV`y?pbrU9@Jf)~`3gfq!4c zcu{2Z*}STtGj4$WkY7sC)m(@C5G;_?6uoiPbS)6K+( zHk-p!^+g)iw1H}4V<<)N_$eX|mMAWt$_4{w7`~ry7lMBmm56<$Yg)|ONf2ddmD3w} z=O=VBfq7?aPku#l#qe1_z=A^<91*4Exj|XMt_H_ZA$*U++Y3AoR_<&5p6RdQ@d7Xt z0Z-Svr8^kym(n6A`^n?BId=&>6c7E>4zk#ewd&>bix*VfYhvmia zP}rQ$2}b5BZmKDgnS`~6VvL~gn=n8NC-ww3CVqmkDEW;p0i zvIBHAqanx@#2gR8Y$^uB(rL(1((jOiM7kZL#;9 zQFCpMU0BwNw5YFj{2Mm5jyrFTkO&e~QNcB0SEAum8(qKrm_ewBqt6@DF@#I}o`-81 zR$yWEUIn-~2D{ad@WA8w(?ZV$Z_7-e8)Yf~`-eI(Utn{1CUEX>HiKbVU6+Ef`p^B> z{zPAGmR=jfbo!u>?;G?IkHY{ir*7u7HR3mV>N^d}$aYxXyva zG3L>OHc)Pp+6ZR#(5mtoC9LA@Hmi27Z#UT^3H+Kb>21nD7k{%YpiUJQ?`6dQv^ZEs z)xr$8q(2BI+CB5m%j|7THq2w(G<&D@eq{M~;OZV@T9-x``WuL9*%zPKK9OSgq{?&U z4`@D&b5T$0m`Dm(=;W7>)~GP@Xl2el5r^6|@O2C2u`s*g`3%&;W>H1=DsJjbKdy^n zzW7j~|5-poJ*`~AJgwD~nUlnf#(tkP?Z(^G@WEsQq0jv{oi{7cZ7Z_{C;E!-aY_G=Mm0a!n>Uqh33j+hKiWue85%QAE-;gjGwfXX0Czph1*(rJOfUa^3&NM){N${XafZu{d;4S~ zn&uPUx3xiLjYl}p$CFyBBt@-8LYV6O^Jw`bXc+oBALu;AS$|o4CY3LuQXx;4*g*IF z9i;WAK>CbbVnCk31<b3WU_HIV>`ot$bpsuqa%Pakke7~3ir8lf)9xaio0B9+IXMXe z+D8Fik5%}$tcgb^1}wLe#qPgjobU(AKwvQ`aG~eT^`yw7RMcjALBOxUtuF$R-*_o} z1cZe*%|t(Uv>M)Y-i#*6T8W$NC@xQ>S&vNe+ZTTEaW)u48l_`C&X_r6B*`jxcl1@) z_6z8%K@7dS!8X#RKp^=uViG12%}r?g?AAW^*j)x@bsxF^(X5>*h<&w2$Nr9 zhXKL`bI#Y#!{R`E=%*a}sD6i*!fEvXMAFZL zJ323bzQbwx%^aZ&$ZzBl`I&obn&48AdfG=~murC(k=u>Ud4Qc~y4V4i{DnS^|9pbEpAN8mZo@%U?>y>0l zP?}>)wc3b_HZ8A6-|F{(b9cp) z_oXR4ZGB>BTQm~Sugj}90xmv=-^6M-D>mufe#%9eND&onLyDQe6O7;}{L zdct!sIj8nW`yvT?w0*J%I(k1L;`aql0PG;sdcwqOt_iL2aOuhhVEhkBqk--$=9I-88-~eK!{z#p0&gdXWn|;rz?SiW}C}_Msd% z*A=@$^DaE_a37kmSNYIlcHryCJK3+>LuY!qK3kj z)6x{^&E>1Bk4>pgpr*O|BfChekz6OP1XDb~pv|dp?$qY~itO0yL0}by=g|%!&yXOh z?OmhvWhdTRVe7BcuuGeo4v5AbHSMWV+K!Y$9kh;2M_p-dh#k3H7}EAOc@kal&cf+I z`jJN8IH`_UsNUI4(*@4^P< z@^GECZ$Mm1I7EV@3)e0%BF?q5vlO;=wWNOQDPsw>hEwG6c%EKv)eb&g~?shRE4&Pl%0syyhvP-u`S5#jB z_SUm13Y309?0Ll%&m=baj;7LjhYwWWQ&Vjc;VjH#Tz=NA>P+dg*`jleK6QGF!%x!|1m%?P3SR?eQ?Ao)-|S>OliqwEV>_jPCZs~YQ=$W& zKs9_RB+tf!Wbl`?VGY)HJ^t<$e|&M>l4<7qtyMsK^dj^CHz=pelH(?jPh18@&6+N> z8s4}uQOG^Q#YILhDq`9haPhJ3>q5#RRfdw$`ZYd@3{&gd z-@VhbA0n7%e*sw9fWL_aJ03f2s2)xJ^?E7@LRKU$8HBtMf?>P>VxA&JZ&rCP=_MuQ z)VdqUdiIZV7>kf4aPjR(uwN5_CBj!d;6eQT<4KZfweVy-PtWU*A!*!!k$elBjVZ`?{QkKm`#q36GB#hpQ~K%1i+K5q zD=LC+cH~F5PHD_v#r!7Oz`s4zo-G0VKg0UUiP21RynUtv+YS#r z)4LWshVzwYK3cQRj>!#y+f9VqXzFblEK1+>u-R-@O`pNKri)D!JroK0)!mwwstb?3 zQuR!_=a?ZrdcH%p2+b-4Dhx-S%E7}odJbH<=DXGUkpEAZrK%?Z*H|BmsP;8l&zB|2 zxd2&xcXz;$wlWWIa_7&(b07?1ci}s@uV=$81Gl!U;y+^Bsiy+>iV)Sd;N3s&o|g_> zMK;Wcqcr06$uSpx5iP{J+n(VfWglzdfzD=SHjnD^GBnzxaXvWt3Fmdj-n*4;oqJS7 zytfuNz$dWhKnK9-H2^@GCFmAw37or6HoluMkXU9L|5j0;D=*@~`sy(D+2=}qi5@n! z!a)O^f2Z^9NZ)9_C;c^megPE1ssZHWqUgI&!HK*jz7eMaNAl!nFUpBJO%V!$ zns$v}{z6-PYOeD98926xy7<5@wb8L31dainri@SiHJ%+pVX-DkgC5Rf=@Q~;D*4@y zlb4Gpb(hkGy0`s^oQqcmMcZp|bB32%a_;!}oO*g|LW@;LBE{e)wd*iD2 z=#I`{H+3oaxT^X<6UcF~L@P7@q0}bPyS*yXslb)l=^r^`G|Vn+vM}nJ_0~qRP}pt% zzNkH4oP2SBa;y4glu#FfW5h)^W>Xx~eMhSz=h(DpEZq9^F1T;~R_`x#0D^7}0v#HC zM)jj^q}A|yTjusD*_1xtN5wf;6I*Q=;@gOyWQE$PchG=vQ8A|kM9j- z#+aiU(}xV2Fv;lL+DlBVL>X-3H;$|jUB)uR%me91f0QgBhwnX+CDv$sp(dX_C%!!Q z{h2SUU6njKNm~%7S+5qVdmcPV8}>EFw>*AoA3Pa7hDMx^u&kuDuZU0YFE%dEJ^zs2 z{2IuMj=rT3HY6|abxa4ePKeUj@7-GjY30QQW2e1xb8PzF0h~~^=Av%;8un78Tm|6b zIV9kLE>NgW|J>zKmA~Lfyz$BCJr5H7Q;<6nIt5fs4F1k#NqY12q-pK8NO$Gtx7V== z(kz1|yjncxVNq+dW5!u%V0*g6v9&`@^sos0IuzNo&)lzl+XI$tLioac<6`&3mxd&` z)8(p~Qzi)y=kHdUuL8SCyU1Ery9p)UCL9TN@&FV>M7!y{&}p`k0*!7>j2#{o5RNr_ z%mb8`Fi$AiSN@@(Yqtr}@nFWA?z*V&YYP~VKy4sZuYF>)V3Ics$J!)c#e| zbd9|9#Amdbg3ZgflTWRKd~r>yl4)K|Clp5;qYLV_PtJ*P8`uwl9}ymbD|j3K*~drr zFa$$;kNPE&_$2qo&pb9mn-*>(VB>49>vXd+(5Dx`Ue4k;|E`y zrteWGU)#Ly9|uYJwVAn$k2&Sizk3~?Rb(v*#6(N3rg6(QMbHnIuUiL;i^I>|>Vq2* zhaK9&cV#UT% zN`HECt&`PY3~fdW@)oBid9J*xjk5?jJ#r}fq&aLSF{(stu&KTJeLDZ(yQ zs$Cv!&AFZv#;Bw{@!7TDI>1D@#N#BZD6-Qhk;b*rKar%&C<qno|CPyX|wu9JaAkhdywDA zFJp*&B}z^^nW0K3ek5cp zYEaC*e~jpZGGBq7j^7@JvPQkVvPspy4fO;G8M}9%W+LM~-i6leD1MF>s#dYULqcW- z`wamGS6(+0rK(mRVKM+yP5x7mZE5n`Ply%2Hd^bR_++ezlX)R!=^B%Ao(31CMhDoH zNC>VdPu3rk-(7Dik^}Hlt$}#{z?&OL*HABqjc4_Kg?O{G{IPG*!Q;dF_O$AzWeT_* z>&E~PtjI?%V6X7H-3F80x>~a{DN0G-yR41DIbkq=`*iA=_EqCe=+Ez zw0(v#BB8G6cY{6tvJ|E-&A4GvTT|B5jLRZ+NQaTcpK!rW|2oh=JTD@Dlzx&xD6*Vf;GbMYl_LHaT!D zhf;Tr_mPFtHt;4lacrriA$@Sdq98==H9-{KWZ3nL541Je@P_&qP7)G22NlHQh&OCJSYa!_ z%#NbNC_;o|mWYx!zOYO!3}j=&zCTvntm=9E*xcJNPeVEUt90gfU>m6HK~$`^#7NLV zx5A#egg-;TtjV7#`_pBnppy}S56*Jc;9Aa2Qu~TZFk4S3?mH(oS}rngEWPFD{SaE_ z%sVV%F{$nBociCs-t4V5c=0IPvMp@`IJF`Ma6GH{523YeZw#Ax&yoC5An%4JtWAro zmq&TmT#3WJi-Fk`UAPF}Ykgw*he-!a8Nt$_g?vUYkw`^knuul0|CW!-+0im-fMbk$ zQF^4N5~^u^GxC3yw$HR(s&)bjO01AY|JjHAQ^1YzZM$-u@1F|mV3{d1^GLOqSt}1* zEqfLEWtS}4&)>1`ef%I3sT*5xQcL?iUrr(i!u(EtrgyBX9!l=?BC`>P^S|}_ywkZ zsgBTpJRs+&F+`~YhSvZdHLKzPas3eaa8cJ^~Fy@F(h zV@mG77(Lj~FE+48qpoRf%VzWEoP>d&PQs?MD4cZlp&n_Qvw!5)-?Q;Y!T|5rdPPOY zy)}Opk?19)zcM5*ZcI+<QcK$9vcoQgH{hC zA5LVcNX<&Nndy^3Fpr6V`G2R7W8$ivhO@69K+3#mnmHGFEjp!8lkM%ZsK18`dSq_` zzU0TsMCxLY;OSWZ*RDhX51aC;STy6z{l~W|XWv-JhnqBv$-qLv$?g_$oLJ=}D-gjU zC+5~WRD^1~BU(H+->L=bI=noYlBQq$e`B!O$46S+8TCDl^2mQ?#vlrELVVFl zxBb{t=-dE&j&-Uis$WS?P0&GE=tk5yAx7H&-oYijLK{;}z<#E}JX?un6v7Ys*?GCP z(cV?Pt}tuV6|t#;mhN~FnADKxXi&KqHDKlD12pJspqm{EZ_~ zfaU(v=qy5*k=l;N7DCo${4Z$n(xabw%bTgtf-*J_+s*r3qnaG>Bb)ZHn=@9tnZCW6 z`cj2R$+&Yt zZHN38FVP_c=nD-L+>q+aH8WFrZmx}fbNd>x>Q?7Ugs+d1 zeU-6y;SJha*63)YmrNY zek}17+$W569)@8lB)yf_haoB zfm!jT4=WSoZJmL7RFn zpoOuVSZ(ocdh?eH4{7Wc?hyhM3tN6_gLcV9JK0!?mDQ31oxQ$vdO*{pAhbmCu zU1#H}&1*I&^>q+S&?MjETLe?o8MgizG-`LML-y&XM@hL*b#t)w;+113egCuj!97iw z?aca!Gnh2?F@}Jdx35L3%ccB_zjqj{ihF30MgXy`;gI}~09w+pICX&S2f5pw;K{Se zUdkZVcQ)lJRIM}qey49QwRCHC?{kcfAeF{+OzElfm3jfFw$;rP@f$MSoA-7{8daA$ zGQ{N<<nGfERJ8YsKBT`3E7QkSp3sHsFEwik$92ZR^RRE#>4!GYL{&MysR6gvDSB)r zn6sW7h&Lm~+4V{y2X}6lm|0bbLMpJT8`i+rUQQ%bG+DoIe`vSVT9i0A;~8Qa?u`mS z=#2^A8j_8XPP=4wEo=;9{E)fg#$WfX*P1TwZd-7wY!D&UaZ=YX-VLSr6~jfX_pv_n zZpNst!@S+=Ybd>lXw}w6VsM>wp9`kRKN=#$>+Yn1#OV8kv@LOsI)!`*(nW42NQpfd zEu+6?GTMstqS}`JPu5b9c8#Z**sb4|Icd-zDd1uQC)%RIoS@3&_hz4ark~WI(NqSA zl4xTyCF}ay1RaB&x_aT#^M*V-y7sVI=H<Y|+s6bc04z~oF?~1P^mfC%93~zoI z--}y!j`u;)bi;ErcDt`w>!~ER;vpTaxQI=0@VCLeW_@44S`MdWZxxo7nl_(jE~z|z zeWK5CX*J?Tw=h1Uk>OQ}K(8|_0w&8dmVcyv1nFPdzp~c4*2t5~7mdClMGGbM#40VU zeg<4yw3FQ1h;<*aM}H*0XSa&_7(|Nl6fW-1mEkWATiAZY{sC_f_&ZJUCZzh;!#VHK z*3w5|FT>4M^@-=Ydw0}Y7-h7zC?5AH(@xSCXHvh+wLD49xEIC_H{xz2sf5ijKT*KW zmK!dkUkwEeWMb&XtX3-z8A+)_-uCHkxn9TYS^oeC<@`;<`~>h7t6_2so5K8O6W60v zMy?|eo_9iou-IoO1feO^l&RL2@Nk+*U0i}+0m{A*9yYM?CXue_^4w^aPTE{oGEEKU zuV<>>n^`TcY^-E?AcIVKnt1m^Qc|=)Syk$Z&$k{Hz7jnEv=*Xs0 z;bSG3CfvIdn(?T=Xs?L2-wrH13E?jZ*=f2z_OaHl;GS`CB9M4XQ}Dl`LQIfK8I`6Kg_ml`-_x8cSHF8|%0hVKywn~q`$J#NZ~H>{qE9ksn%l#xmAWXHP#|?rR@~z(^G=xR#056K6TR9Z|JcY z40Z#+?578dPL!XCSm@An>f&MSrz{;FYLuen?afg}R_1Y5+eDA4{{UpK8C+ZVmr&6z z=C}gqLb!uZfo7ITjsCMXm!m@zmhdI*(_2dnZEYhZjBB!2NbZ9dRnPeS{jGWNqgK*% z8%Mplyzy6$CYIjM%hV;39}H_Y`bb-gJ2>xkDB^(l;4RLhJh9rtcQvX{=M6(ou=`|CT_pFAiS1r5 zEX^N>{3Y=&_rOQKA!{NJVfDqnlj8(A(8R63xu)wbwUdng~Dc-iC`#VX<{6Gqj9Z5qn#F%DbC3& z%T9jV;Mc_jzPZyiJ6n58yLG*mYg^y#7;Xw_w~=Z0kjHMCe5}qcr-5UAz#ZjGWPr!E z@Snp!5Voax;r(kxO*Z#Up7!4Qc`fx6hEu2cX5}qJ_9-Wt1=XBOm6b%!N6ok*c$M}3 zyQ}`%SMXhGH;t!D@qfo29*a)1miOheKM*`4h{!iDY8fL*pKDu~!7N%bgdoxJ&a15J zpSEv;bep|W>K!6)iasyUWV1s$O*M_L#qA+tib)L5X3{mKq%bjSGQLF9s6`JKmGoGD zrT2+>wOooAUJ~KR;dqk^m{ZGfD;te-!e*Em)KwlL6xXtz7F6k8lrMNm+1|&Cg78a& zX{Pn3VRdtBG-7EW^Q6-Raq6PlJE&4Z66REf0tAW~WL9}x9l7@UEvw$ozS=3I z7PHP^NhP_Et+Ph08m+afk1|PbEg_9dZw_SKrCL04o-Jv7LHkp9Z$iDDR={|J;vMzW z21x$^(pf$*SXnixc;ZOP3td`tF-Z)Qh~cu#W&B-E6Lu zIG;Af<8U}Uu8tnAK7+*NRU9kSe^#ec8B#c|SL~@MuVtg0m9G4pM}hbZ4rh&?KQQ{f zQdri&$m83oPopWbCpQym* z87*$$o*6A};ED+@Bb{f42^|sSU^LSp>^^X!>y{v^E_Vu+*b5grS zx{?_h3`Ju-rM0|E5=$Ib>E=9uhOe`KVhvW~QuxPxb0H}h_*wA^HI0g_=ziJYi3x4! z*#tuv4S)t;Ae?ReCyBV@GUERL1#^t+HOey%8^%ty5}(v@xNJoXLaj>~L!PZCUW^mN z)c*jNRP3crHcs|Ej|O;twpHTwYz;YKv2-w0v&h3V!n%IP8HHJ1DN(Bmah#nRjcHa7 zn^n42XY})=0Ja)(f>}+p7*=*<1V$JYiAuzz9FWM1#xOtt55*4`S^cl}ukoMSuN@jM z5&qB;z%D1hUVpJZ8`-35_Uo&~OI2IBTt{w@!X*XLB>muj+YKdDY5I8#&4?iY0;d2e zT%D>8NEsj=2q0h#AIL3Y&rXZ>q49kBmBqAEN#ehc0?s{?L|7X?gxi{9c5jwM0f^lR zfe%p{jm5tuql;KM#Rp9JEI0y-1G6@BaSp1-S*lde5QFQC#DaF+Hon=l+QA?KT zN)k`X+TTm)k@5KcJIUiUJi7}fsoF84Ir~a-wY}*(T{UewT>INo__g4DKH@ke5#Gx$ z?!VFJj4W-I^^BZ@)SfU$y>Sx!U(l~FZfxO_J7if5N=9D;0k<=T3%{HkE(QS}mGMM6 zgsjB1z*b?OF_jFe{q_>1V*qso=O;ZVYtJHJeA4dAxVQ=n62xwOpaR@rkO0OyVz2#N z_ASf%O0`+E?y9NIl5dx2Nx%Db+e631_=#4$VyfWi(Snp$xyu`?ts6^3`u?Zhns1DB z)pcX6*|KBqO(L!b2RmCVNY7k=dSf8goxhFryX%QzhWg!=3&$kU%Nayap_N8Q50)h7 zBWVBtYxCNDR&B`QNp`3N?Z!#TyAduZX1{WKm5d0zeCtW>+jTlaO}&zyMCt zPTXguaDS?}%8pe(wRszsiBX)APR*`V?b};hy43Ea;x-nSB^Q9FQZ6@YGmkTpO47ZX zR_d>9Z`}P6e;@c`PqhMjqASNTy|p(6-3XjzI%)CzFmwIPYHpN2yC8k(xk?7=S{kB;Xv9K^^c$Gw;-hBi1fM zvWEmKF;!(Be3F*5hDRn(HQeA0|k(?ru&dvCe64~{*9RNPhfvex4;{t|hT1WJ70*MouR=~e z4_tsNa?i%v{lF1Lsa^blsQvV+0M6_Xt^qudJL3Zc3i*6b4pyU5^ro>Fmb1jvs^XJ+ zw4(0b_IqD@Zhd}T$M`z*r$-Tml?t+imn{iGG~8^j??ooM_1C%gD_f+2g~iB>V=Edn ztc?8R?MUWQodC%UNMLXPH4xJ+uJI6(J&x1_JO7O=W+=HDGgYk}^x&+)FBflY&4N zpzS!|=NZU7Iry>scj7eV^=(8KbMvOBsqWZ7>P_hx&Uyg8-E&3!bFHGuAl0>5Weijo z)bCCP0Rx+i=O;aIeF5b3)WGp2ZeDC&5>kzneV?_uw=U{di-wPxZ*7iv@fQg~oUcP0 zCpo6zs?m+sn)BXIPS)4%zuFi68IMkgnQnCHAYd8Y?k7b;Nf;-}$Y1~@kU<1-T=m|o z;LBJHcRJRY=S3D4HNEqYC}!$RFtV^avY;Fc62~}SiZ8rRtlqO3^<7tSTm?Fv`!3v* zou6qac_ebA_Bj}?Q|&kN%E<2|`|!KvV)7_G0B6Yyl1>glEO_R#SuSro)WqZPk(x_d zG?f@AY0RdlHF-7HO?op5++mZ_{l;CERB@?j^I|8>c{?Q-sKvQSy%nsle?#oY@ppu+ z8cgf99$O~!6mu~dC6|ww^$W+a_X3^&01Gq0hSFGVZY^2Lb0Y~HD}7c(!Rg2I;=Wqx}yOiF^c@?UBiyxI7Gq6<+ zxRVP;L1thMz&>1duLCimlhKo@iO#7;r6tW$lc^iYD_+#&Hz_`zTb`C*jnAr6bTHgK zh>FB~5|tSz%F?{y%>=nud#x>Ntq(_!#5z8yDnl*pfww%f?iVD8L;KF_L)h zb9{TNd_U8?J$%}9$v&i(qEsz&m;}+msH!CEXf0XcEajdu*(5K`jt?8F_%!H*p-H2R zFUs;fFCz`iGTUKX^ymQSdID?DHGc^;-kqr38P~~**6L}D(aMqH-XddJT_a`K#(6h^ zhd5HKpmW6>eqA*}y)4pD!*j;;>9UV$Bc2AB9TB7%Z(2%KjL>ob5K2&`Rih z!HFl5YlhG7CS^p&>F%>WH2A#0u3F;SB-~z1nGctiF2tNGu^7P47>p7t@?-u9r!u#~ z?*u^p4yet=wYmd(F1h(tA7D`A1wSZ)*(FB0H3icmRR9&^f>-I0g90 zCm6{%IrEudj#+~u9nU8GH{Ae$4+8{y^O2G7UZZxk*&uaa58z(GPc;4`8H^0NpXtd9p!oT)R zG^xj$QjD8cyOLbG>D6?y`CD!|7C9sg1dFqvUIs^Y3>zfy2?P!XJJ-oSw*1k@@Jm$^ zsPgVEX15Ho~aVwQRPV9mAmyo@_>0f?&_2l%g zjDK&7mWSY}Re?yKU9+|VXl8qNY4nYJ%92SH#34$oQI#E6doweJMNU2&bE}`_P?Cdx zTcqtNB&``myESc`Z@)!;ryq$A+3+6~zF5i?vTR*0SE6pD61}w7t?sSzH-F%aRw)<2 z&jsB!^^)Vj-wXAZUC5TtCFjC_3hsC!mN{+&1-GJR<%rpW*;x#qs{a7A!-f5xK06a6 zVBLHo_>~hYB(f5>9t+muaETPLK76uv;rKZu5^M86{s{$WE&c`kJ4OaCH{hSaTc0f@ zLjs9@8E6ZbcSiFf7L0(eESqpnPtBjvZ`!)-+J4Ue02oTgZ0#?@Ux+r!ZWeNczk$3) z%B*0X-T7#T3ga2>NF%}Fi2ZYk>s7m-*0|R&lv_!;QjT)t7&P}@;7`Ed@b=lrDq1UVHK_C_Qs9y-%|49 z7dGss@8Pe5Eu9kH_V(^}+P11u)^&`QDibQ@xh-SDJ}1)Wcy9EWE!-9*W@Vu(DZCa;TGAd_C}>WlywEbt=Xr-ZqIq z!r%aRvt!SwUTWt4I6P5#b-HOHm+cn?$jA~Hw@Mm868V6Di~we04oT1HoI#%E7+mi% zQjQfCHM#u9kYOs&$+9@$+-hN}=4TNqcL1D%u|SudgIuXuH_LmZy4>~gRBK_SN-&eG@pR=;#tW8Mc|k?;Q2d4-68t#Z~Sg4+=Wm2#X`cyzSa|7}`f@ z&j2yx9Adq8Ux>$AvyV@{uuIv51}P@Hx>DI|n~R)+0s=$M%B(>?SU_@AvELh><`nUi zp@xk*xF;6nPTZ4HT)dB&-)}yfbvtTdp;IoUTMsu+9|=WPqg8XM(vx1+YC1VJ8#QZM z<{P!$rM!0%G&3x!3Xy_Dc{^0@$jIcJ@Nziy*R|F`g<~i_aHAnm5wzq1uqys)P6-+4 zD;8Z+)g9JdJ`XR;9$azEWKF=4$=rH{0H`@0ynrZ2a4ybchwR&1?m~WC4tIRT&PX^s zjxoo2^zfPFrunKt!lHw>zM5A`_FF%@MP_033XY~8H0e0Tv|OC!O~-3Cxm$bmY3bLY z=~mY-JCQF8z%)&`0fhh%;O-l7_i$A1&ujs#_tBM)3dS~26yz5ikU=90)MRm-es#&{ zx`mMv+Fqd^XoX&R7ztsGBqVtx0HCoftXUs$`BVZ4t9r%uo-ZXfcPf_Nca~KF0ZPRg zR$av4l0hexJ(P2wOD@e7dag5ylUI`KYbCGC?&@&n*mZ@KIyS2{Hx}m!Stq8Jv(vBR z)aj#wHe@+JFbo*CBP8%UU|{wnXRl0j*0P9-vx49N0mAZqI0L7+&nKGTye5mN-#w-7 zptkY(PcmFL3Z)J_w#gs>fHnXJEu8a;^pR=dnYCroEOnd7-7jrmmQf@IKPpAGHx9VA zA2J!v)+DGH%C-qUmM1%QFmjAz8(-c}ORvA~Ipcw-ojAq1l`1%@aiteJ zoXsmYC1jG_w!bpuH{xTlS7zB3L6I2AMRge7j7~(2o^Wua0fV2QbZ^?5<41!$8*$)Y z0_$34iKS{bx3*Wo^j5nwMR}u7q1~~WbxTxPt}HGBN<<`Xx3+PG4;y&ayWlA_YfB5E zJojF2+N8RYA&Bklqtq`gt(l)-Q6oieuOK9X%w1Ix)kOe}@{pr$;0YujnByFWhB)^lsgq~4e!Y|C4wA1);%nifDN~eZ4{1{l+~T7& zot3Yp+CGzobG|0v?9Q$)D4W7#-5S&b)C(Y>16%h#EyMWQ35#QL|DfE0F^*e4mUTTcss>;0IowXp7?Xaqg2!`^w-rPvoKj* zOKv}Qe9OTls#?ZGXoJglo>3%t^9rJEl|VV{ZvGs2&rj6m)9fs7bvWa>Hs5TH+CgpR zCAKZJQYDqL6DIPPqxDyRRIE;^dEH-hm zhyFqFhz{$3E{6;8H{+khe~aEBv(`Ll-Wi_bP0{XjSneXyZmq9U3-1x#_^JG-x71eK zneSF0(p$UvMnraV<+OEd{up@b;vsYWn3m{$!Hsx^~$1N)QD>u#n~Y9aB#DiwB1Wi)Uf0X_i+PcNZ5+bz>}6 z^1Sv9VR9BlaN!=>QIWWhGANs(vcEs3=-Q5*YCqyzdkj!pBFQQ&*D*3iTQZ3oAsw4` z)O={JfdLzxv zIF`OQgSclRr&ZUXlvT{}{{U5~``VZ~*{zj)H5Qt1!$E%X?)H?QFDq=-j(bRM<+*D? z9L^C<%fTG;tAPP7lS>?qq0A~>bFi0@f~!79)7}RCuD&DuFYs;WhqTCH@g1C(FL4c> z^@MjZARZlG4%-JmZL^bot+A4LLXjMITP09b%M1LX+MF%1zSIi40Ag*iy5I%*gDE-V zo`Zk@2Cj*caLF55$)A^T@>!H{b`Z$SNX~d5VBi39Pw1Ruz`P;HnKm~f;ykfpvfO7R z?T3``Ro!T{C{~Up5L1JUz3+BPQqe0O7YuQ?6L6M3zGsx?F!q)3l`uG*HZCJ~8S30o1%3r1(3++C7G?eX2<%j9N=IzuC19 z3EFsG;zJ+y`MLA1ppI*+hFgV3y<;Lr93`M_4}>4Jcf`MkJ``OLTWPmCQ^MCn!|Pzs z>B(}sJ->$HfnmA7zPSnx!tJT?nA#?;2r!^R3K5QPfzoH=1+ zleOb(MW&B}%`@kk;#GV$4-b=6s|W2Pm8XNDL0vaWlqoo+PNQ~|BWT%eZN7{6OYwRy zgqQR9k}VQlYW8hDeLG|~w$@XvsJgJ!qKezhfxwgPwq>_A^ea5zMjWh&c+=zdqw#B9 zo5p@3_&{wXlH?jk>7Ar0F|wcak+wGmH~{V}n?S+?l76GG@d7WvO)af0wD{$?__JrEO?M@gqs#Vd zZw2cbkX4pgor+lLyK#0&rPsl{N%3dmH;BAHf8g&4>C$*ZLBEP$?ICd`z0Jks7k162+(Oqj zx0bFWp2BBlfDC!|w)1CanH;^(!R>Ef_$1ALp*_qtdXAbcH5QPxQfgLBacSh4*`<`r z9m&#dlHt|SBta^qakkeUaq#m=zwrxc_s2+*?$#!bTiLDbt=bo4h$)OpN}whQrjVmX z=W@dPw(gC-pZLM2UhBHI!oLgnV@-P-ZFk|n!O-f%_qei_SVGc)l;%Up8 z4_K*Q#qjPsjIlTf@m51i`yyN~9J0PqK~t$-H8BZjhm36XJ%0AyEkZ3LM6>d3wHPe#yium>HxUM&?&%-N)HLM~ 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%0D_bJ82B+`;td1ER@U~mSK4>OJvPQ0 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 z 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

      %;GM}xeh&qqJTIC9Ct5~YKu?B=GU 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%0Dw5#0W!g$RPaq+N;1h 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard35.jpg b/html/img/postcard35.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76999c88160bb70054cec879f68264a821291a2c GIT binary patch literal 30788 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 HR>%L@XVo_> literal 0 HcmV?d00001 diff --git a/html/img/postcard36.jpg b/html/img/postcard36.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e38bf4ded4f394578a04baea4acdd54fb019d8a GIT binary patch literal 41640 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 YXOaBB3b9^)g+@^c41E$OqHKl#*;z>b1^@s6 literal 0 HcmV?d00001 diff --git a/html/img/postcard37.jpg b/html/img/postcard37.jpg new file mode 100644 index 0000000000000000000000000000000000000000..42d0c3dc1bf5427799ed049745870b5ba8149efd GIT binary patch literal 125786 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≺zus?n8qQDcXpkeiva&`<`4~p>E6i0=AjB{q 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

      BLjt$Jx8Xk& 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�@lWx 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

      >7{CtvXF{2;z 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

      spFW?1D*HzPQ>u^%02@dE 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 F{{Y(ybzcAg literal 0 HcmV?d00001 diff --git a/html/img/postcard41.jpg b/html/img/postcard41.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b3e0668cb45307dbf1804a62dab87cfa599200d GIT binary patch literal 13553 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard42.jpg b/html/img/postcard42.jpg new file mode 100644 index 0000000000000000000000000000000000000000..072ef600001a45e91f19b8b4b35591a45c279c8a GIT binary patch literal 16241 zcmbVzWl$VZ*X97hEfCx-I3&mrTtaZy!Gk*l*Wi{6?l8FP;5JAC!5s$I;O-iHdB1OK zw`zaw?&<3O(S57CpE`B!vFE(ZzpMe?%1g^h0}v1Z0EE{A@UjGu1fZdyprRn7p`xOq zqoZM95ny9sVq%fvzr!VSn0wzKn5&|6n5f1?g58hlk$O!)> zfd457h)8dcQBcv)F)&{jG`2?m6O-d)Y1m& z=<1o7TUc6I+t|9gxqEnedHaNfhJ{D`_z6x(OiE5kO-qO57Zes1mz0*3*VQ*PHZ`}v zTK{zS^!D`+3=YAkre|j7<`)*%H#WDncXs#o56&+xudZ)y|J~jH2NwbW>AzvUUjG}| z|A7nd6&K>0H%M<#|APww(ew30!h3^E%Y}k3p@wSW{Em)02#w%#d|quAIz5m28KJ4m zBnA-!@A~`m|3LdMWdC=-g8#pe{V!nu8`mNL3kl&>c}REwF+lfOySctp_MpCAXf$$W z!Uru1ZOdT36V(OPkF3v)ed(WC%2z^TzCPn)7BNted7Wd=F4{7 z=BemfPQmftWyIVGe`rt!uuAm%h-CVp6#qMCXnDwist|RsNBrntH#p$b!I;Ix$+CWL zPb7k@IBlx#0I||dM^R*=%Fp|TPw+6gk+OP0Ug0Ee5D%|&e;@V11U$wU590m3&aUbm zwUPA#K({xX0B>5fh9SIhRK&We(%(pi#%?S6PY`t>X zwUBJPlJgIPMS4L?)I(teD}j@K{v@d)uKS8A_)8R4^k-G#UxS)iGPMTGV-$I$`DPOe z3`()Zj)%p)<21rymNNG*2e(4E)Y(-nN_=+vlny_&Hg;V{vSl zYwri+ly2DmSKA0A&W7K%fiD2EXZKy{d&`G0CF!}k8&eimjvClL-Nw7gxyzz=l26;! ze8f{R3DjemK=g1PdaFaNBc!ye5C)xthT};Oy7r|9`L(O${!P6UPmOlrp`IsON}}Lh zhgLCLMVVs*U&GONSVNs;HJpxUZ{(G2y@54Tg3#IrwMLPORN_?37XSw~%Ka{doJ<{3 z$$WU~kRpi1rgXLA(Yf9N6KiJFOcmDLA)71warC{?YL~0;ki5!!R~^3F=9Z@u)^Ep{ zVIthjPBka?cNn-u)K>C?WTC5pGj=Pc8!OzU=%+IDm>GYqG$!DFSzbFZv43*kP*E_< zy#9RI9NPWO`;>v1z}eQB&qVn)xK#TUnD^dR=2ng2Hi z7nm;ERK_h0*3F1v9X_xjC0&DWCt{{Vq0XkA6ObM&*S9GYz31xJOYjHmtIvQ1o)}8f z)`@K>Z4K??i-)gDue=s8PaXPabE?jZ2eYr$>dj@>f84=J(325%!BAKJ(5S1*bk2qJ zB(6o@xi94mm6pk)jW9WK1Xx)TqAPg&`)qUE#II|8 zZ4fC+E9cMJdYr-vw9f*4tc9OqQjvd$LW)s4WYY?gIX>@xX)c{K|Ay>_T~;Y?dU@_Ak{P=(1IWCu6P{?thpd?aQLD^iRb1 zl2A-dc#ugU^Nh+x;Y?@P6eICnN>ANs+{7%an{_a4(WX`KH9Me4yRhQJij%v_|2pwf z9a~al`e=u>S<<*J!cKxq6kzlepQw^?kQDd$MXc$;y|HTXI*vQgs?xNbg5Nms!Ba`JyPIPLP;*No69{M@q z<|$es{SIzjJ&n}wJB?0w69Kk#WpolT*YXaM$FAk!cT%Rr{ebH{29`@4Y|$^_hHbyx zT) z)xko`u@)~hoNr!YH&d%Eq_ffrX1&`WfN$zh7Nc~IfNg||r z1NOy765n~C$d_Ap$MY8JqUK0Yi~8d(AxGD6N-06msLik3HyFE!ixN4QSq-o6402HFYSkqre!P_(0gKgC-LJj7E(tLC`mXJpn4Wxr;>=WZ1BtSC(RlN&s!$q}wFSAMPl!5FpUkEq zUh={dw}>tVKm&#A#y9_xHs+a(zs<>(sAThys3JQbSAkU@$g(Nz^q z-xT9UrGx6|8gs?1r@*|L!(*PPbJ;QKtrkfTboS9zor+EW$jKgyI04z5f3e3$dm_V9 z1N`}_IMWAi6}6Mmjs$Lke{qQ!6H@marH#=DX*fSt)Jh7#^w$DcR=M?sZ93oW#BCI$ zsJwU4ye?+1cJARy@XgeYDVG)JQf9G=}cY5 zDX0W@va+X-G$Z$R2`--Q(8w}E*=6Tmvwz}d3Sy^Z_0UcWEmm3ji8J^mq+hIBKyGwz`~juwy=I%sZfRKB60DF(C0Fzi<*@-l1Em!4UvgI=)iflMWbvPv)+lP zC390)D^h5wEigXZRIR@2P!k58KHP#s^9_e~Pt724A7i&kXs8-TtC!MA4Fr&Hogd3L z6*yN-CeT=GNVXxZ#grV~m^-%eP#PT5y zma!izGq0qu0-G$#i5>9duN^|m?u4e(0jNgL+iZl%X(@g&AtgAz=DX-h;n%(bL)<|a zSXWn9D}pdt><8xtJ_>{5Ljk;iiXlbrx0gx^S0Hnnbx3P()3Qkbt4;WPZ0ql2m)~cJ zOTj3!NVCOX@fR~K21LV?!>#SKQ%22uShuKhwf#dVoH+(N*KLbSswH{p7({#^A@b9? zp~JtVFgkH;qKKfes)?uJhAa!L&*nC(|>z>v=d%?XXrd-3bo;q+g~39ek-G!_*N)z5 zh$&w)m=bmC{tR^bM8S*ySjQN*4M_CM>#UpdtJ`|97iK+6nX(m4*`p?5_D4Cnux_(i zOGV?NSMmNzyNlMJ4nZB}*ZFg)-S7_|O+L4iiN73D&-O9WaWe|MlQ`XAyvKcPg!^V% zRETD8I6K?8)J>aKM&uxX^vfLC7YWUrG%8kAo)I}!CuBy6eb8T(M5J4#>_-jhoR20C z#g7%z@XyT20;2+|aZWsXa@G$uCIa_bv9-xY^fZ1f0{9EbH#Q`Qg6fe1===I9e+WM_ zYL9t!R-8-PPLd*KTICha$7t%xDx($gsaug&l?*guCuR$2Fa%GRvG!bV6pe#w^_K`Gv!KhjMGwICCRFsKuth;_ z)SIL(-^<19*2>OJNO5{8WF?aiP7~!MC8X2BPNi(4_!y^vxU5I zd;wVK)%0yJlTp69tUA#ZetWE`*_*W{bbC$R)o$w;eY9VbbZo{folp)2N#mZJ3{R*k zawHMMg^lMY`&lp6-;&puG7Li>moXF^;M+I6SWZO%O4Au0O$~yIqvAvnG%{Uo+5-Vq}HeHi=WgvbY+H zI6ge8yyeM`)UDr2l>%RxRg&elxDZM)Omk2Sh1*!a8hUps38ffo)IZ1FV$|8H7r-}p zL3p%#x?H8m*6=pBV}o6!`SQQc@`?S#F_QdXVyMmEgJ|css{Esj8U8g4KYFmPfIdG8 z-4uSgbfDPagt^EfOUsVBNoxH}kC9pF9?t^c9Tdfj{Xw(hwjY{J;xIEQ9g2pM(x-Wv7 zI}|6MuLc4Ty((FUj%FD-Tl@!Vv41mF`OJ(m4t{`&PSQIf<(2~f=_y!Krf~-=Bdg>Z zLVsmX%3VZVmqvO{Fu0M~a}~Z}4demU0Qy*?h-=tc3C@qz`SKhKcH#pBCyT9Ijh3E3 z|7Nf?e75?;?cGI_9sg)%V-LCT%$C{~vR57{^KBC5sK*cOlm2_gpV6D0wvWy9n!wfD%^w6Eu6Q1r}S?-CYN-P zj=J^XCDdlL3g&IFQQg?xVR+9q9DSd)3prv-qI9x>a~ZJgFUDFCz~8u2FZrk)nv0!6 z;(=MrvHz}KJ(~v%XLZJM)){95L=%NI)5?W!e}Ga^5I@>Xm0=^+&>)#}6#%aZTY;&Q zv0wJGt?2y{a}SYIi`+vwU2+-d!OE+e1O7QrJBvNrtLwWAEWHtYy*bY~111@T~Jrk@#*ZfM+T z*8Wrc^0A(JsMS?`UoxY{V3+=EsbF_(;9mWA#E#{LRzJLzOJ-joqs3s0@hr3M-NVdd zd4(6FBjQNoa{M@fF;1hrgFW{0+EN#YvQW?Jk=9dZePS*kMx?Z#U_}mjT=*NZ5#CII z;14g>J71PZJ2+rmO9S-tQ?)HUdA^{2O0ML+u_cP=UexMJh$9hRbha0fLK zO8ah)*)!9-oFWIg)h~Qz0Bj}uVT!%cp|VkFzqZLJkQ|c$ZpK+zBBrRhnNk&3DQ*?(VN7`F5J>wOkR#(K#BJFynul)Sb5B% zxYzlcJ`Vj*Pea?(V!Jh2Gr9*s@zQXd-3AS?5oJE7yknK;Wu9{s$^-)vReNJ7P6z?E zT|Q~9k}KM9T^{N@v()k!pvOISx`DX5b3le2^DGKA{9j%D+f%f3It z5VJ7RH}IMJq4Fb&CNdxYv`m7@2A|p{bXo(d$Y$TIXmmOaxnmhhuZ1-$FnW57`0rgzEsS0;x>Ne zcr-s+R(&;hXJMm2OyzoI-Qs2C2|+(Qf4@HqLs3mru~13FaB$++9R6;{a9z~Zeu-5}2<{O0+&W@`+6N~>UshOX z%mjM%2y*+-FHPh$gFkN6TfAKwVG1(`1a{Mq`PN9WD+3N8rh_;e^z_x@uHf+d3ry?r zMRW|AV(S)yYeT8r+D}CDiDp<~yWk4XG6MyU5dFSq{ic2XJ&_lHU<`?U!-Mx}f}C(Z z`o%njzgE&JOQyh*BOV$6>2aTrHzv(?vZ=I*3mcA*N}oTQ<(hJOlcu+;3ThP&$NMnGHcMv;15u#;>a&ws?WqfPzSCmLQ!-dIYk9J!FcY4k=MA9@+E=aBVF&xt>_2-s&8BiZF^UUS!O5M4-tkvLcLR~w|FWZk-&oRVx+(o zY=e}k;U8lBBK**8b(V$nQobtn&9j1P36(Ea4&~^K>F%t$3Dv>R*-6WA{77QdIYNSF zHJL8^_<3#nxzkU8vD%0;ziAF>(m)U;U`$u1NzrM|^L(OJeZsc=nA9E+LcqCiaEut1V!6k zUR@UOZZ>P$S6e#It8Y6GbOGmGp~v~vspV^T2kGnQ^i-f7rapX zkNzNuX;CUEWw|X2)KU6<(%)+?f5*Sw1<+2xz;PMHf zHb8Hx*;{+zdsma9+b9;ARh@qNXvaezqNs9rocOc*_+hKkQS)8}fhm5rPcpzn1xYkV zzV*gszTdrE`S^VwChP7tQcbD(jH3zMxE(Ujn^2=o71AgfJ*?c98Qibf{F5OxZO(SU zjES3iUppT>EB9;4fn0|Cf}ocF@sI|3<D2x&H4C-doE*bAm-;RP76v^zdRts} z@~+;gU_<{?`IYOflJ{%nqEYw!>0m$qnqef{>kESC=C{>dNWuF@Y4za*L1&d2w@k^M zK79_|$wk=|wOi93Jh{P3gNDct{?31{OV}^b=^Q`yn5`Bh42FJ;kBXBk`e_ca?#3@8 z1t6_P@Xg<;O?rjVKM&1!+eow_O>eY35Nfq5tsP?z_PS@&WV8Jc?tR0$W*()Ddt%-U zicS^SB@_)ZlhKm$qY@Zrr(lh>?fsZ!63Wml!Uocc@w#d;`hrP(7IoowP;!&D82DKZ z35hZCS0F>}fEr)5#Hf-5rf`@!xeNbphx8l|pK`C-^n=FclYa5hVq)<*OF} zHf^j_n11Q_W$86XG+Qyc<8Qs%^(~hCr3#8B0U%0gA1Rd-X8d%HJbeW%ftwWKB#w~w zrzrm`YDxW8LDNyu+{{X@M4OJO5Ik*75#D`;*tjEGsr_F|1S(`Odi0TD;&A3fBl9uDME z7;kj%BeGP=$R-kZPm6ViTm>zGFLN*u-IMOgu1pNBpK0@)rKNo)r;5xDFNbYx>w9D^ zoTpk&b&C9u%*-g%I!ljt-su1=y^Ve>w=DtZ{uTB z5Oawqy+12|PFdtHtHHSUYfnti{y2VM6QS5-ox=T_HLKG{t5e1Reh%?OOrOd#++pw2 z0eIYF_(79Aiqbua94nQTbYB}_+%^WLK~kiYQXDk+Nilt3=C^p_J5kT>af=m_P>!Th z!~t&T>Aq(2pPgC?Z4Lcp;6u3O#eBFnb$85+&xKVu{FTaxEl|ZQxA4Z}v0# zQVJnMQ>}r-wjg45vizYu_eeEG6zn?;H9>^AZ5pzABP3hEaj^x#;Qa&0^&l|K|AdzD zCY0@yxRN58Nt_Gw+o@Z-f$J5y&AF2V`b%_-&D9R~U&mhAbsqo9x9j1iuKQYe{mu-( zrx`v|JVy2+SlRh)$M8&GSS=#3d-W+x`^*$)OIV^I0bZ~I`hJpJ<9xeal8 ztd-vEOF^jc)>vW_&q|uDJ`~UtaNK5Noi-}TH0X&1ip~cN`u(L5H%=2F1P(h3tQq5q z)jI~JZKQqqrIEYm_R1&U*id3XPCS&zx^4JnfGo@eNDzypm z0rqE0W9BL5c(;;ChV>qij???(DMX%psfVzB-pNJm7t|MzxYZcy(=FK&+hp~p`CVbN=U;fwgH@5TFM!xDZ#=48`%s@a@t#L*WH#tzxJ8rj zvKx*NJYtmV7AgDd*LOXW}a371%zAJWmc74-5g^$k`%8T!pWv6`@7nl#Jbnv)(|dR=%=Y)qpY>m+!C zNRk;gfxnuhu4>tkH{mtM&uh>fkLNy&!uZTgkE)^gfA%ArYzF;K+_J^~1i!~pqbyq! zJ|?!o+Sa*V0Pm7t0B&;y2=PX~>sXWq0j+iu56%WNf7{hf@pSK#=yr$0U|1^DK~Sn0 zWsQtInOrm75@QPyL{qm@+UG|sGqDKyqOxfCk^%KbtEy;l<^?&n;{jeLOnmV9Rz5>F za;Ux@>7S*_uJ+IOvy_{B8I-BthoB+T+Ua56qZ^Ye*M8+>hr2@)d#t7iu`F$Lank93 zl8EsO6i%KNCdt{k1i(#SRn;IwmP&ojCMNlKP+Z}7bBa^sDC!l?p!TTnc}|?OBJISA zbJvuaA4nOMaPaY|uvT{dG0>B$(a0NlChVvtGa@orH2It4(o?iub4dzwV;rMw{Ic{# z#P?$Ek`9RigJE~a3;Db5y4YM`5!14meD?&tWsPYJfLrX1FGRtZ-LL%H@!z_Wr@zU+ zOFB??JZAMq_%Z1JX8KOQWe@2&VW5cz^r3dVkzHj>9qyz6ag{Coeq=~Yjos$v zBE1^dvo1}GOVtfOk7E;GZIdPrET}EXXcH|i;rdWoTNb1 z={}qm3P~LHT6uYF=+g7S<4BdIWf-)^@jmM-Hnn26l<)4`5{~b|g&~Cq=7Zxv!#D0e z%eEZ!&S9Oql!vkL!-hoa9`~R;TcW1ouEI?G(zaM&_mb`G#b0j+`$$X*L_u(No(o%K zM`wvJ7M8l6P$52{3p)S)Y^9y6zMe8ovv?0y8(DKndpOub0j^0fSb7g9wX-*+_f>A7R0Zr z6neLwIs~3EX2H`xDQ@M(y^43iKJB*MqYmXhkOLn&HT9jfg7RVr^e>@6Bg>Z9gL`oxb?Mu@c|J!rNJISRGlt*(tKBCL7bO_bry47e^^ z2B}YU?tQ0#&B(m~jOX%@dY!0nUI1}D}?Y#_x58sf@zSi^|OR&Z$;4F&ihC;ncjky;5a17hhRv;+VCu zr&>w_*6F7D8Qlw>@kKs8`>R8u!t!i)`j54T$#b&MEKKIXP73)!=;DGzgqmIsP$0`M(-(l3+D`Rt7?THW zkJ>+t@4eRqZFAG=)1CxiY{u(r0!OL_hCdr}x47_jdYz7dtlx%i}+>MFd=cu2TdYv1!wl^UAiCVvyC_*RqVdV@ryod znjimt1z~P?w3WYu)vhL~vu@ot?yT_Y57VZnVG-`-m+JC*d`w@*Fu>ZHNpHYbs`DS@ z;|XlpW0m8@{LK+Cxie0RVBHa~N5tvwyEMwM0n`B>TaLO;EPa8QF^%D32+bC)rk4pL z@*nS@sjxLn+7uY{Eu<{WZ?-}lSI~JJ=f+{4iy#sJmF-Ce4o5LouRGpAe}O6P%LLEy5#d*eX(b6{T74cd1Yu%)5v1y!Nb_=y$1M##!v%8Wtwg z=$!pQY=2K|p=y@)q39m;Ze!}zQNE`>0x!n)e2H<*^sMlBt1~F@>7+{tz*<9TQbjIt_joDM>#*T z6hy&y!7GlIF&SOm&x|TZ;pGPj(vaSMcE%Ws=H zW0Vob~Kq-C7^iHSb>6QJb-3de*<^DYw_^Y9?p^nU=qJhO0QI=rlW~!*}Y;}#GVV)sz z)Vwp>{s7KpmVG_x6{`luxEG)1L(~YMuZ^EY$GP7at0niBeqbT zE+>LbdP-a9YHm+p2r5OQWJ;6d_Q6=ipLfEoiDgU(*s61u36$F3>zUb|)&F6qSMOMk zegA!^_75zTa-%j;LFQbaU6?-XbGN>9Sq8sR_lo~5I2tYc-Ate=QgVW9M=M3+N7opx z&*Jw|5G&?>YVh&hbYz*bSoCkfsdJIA#zNV1S{!BmeFJ#q2zR-Xe3V`bpY034W=w3m z!0J%Ey*2%Zez*ayQDefFg@=-h;*&TkbkxPNFB$b9kCHaT?SXN_>3k(kMC7IO@zu)C z%lNEg@XF+sZX=o^)JfBWK#rlRPwVnJ5D7C~;00ita|5*oNOj}=g*5x-FVByXUZ!u3 z@nlO`FG-@SLTB>^_4Z8vnciINjz1_yb;*!cso(bMReC1mFTc(EL4m7x#l}w`jQ++L z0eoRsguiSs_`LA!o~hTd$U*?F%}ij+Nw8mvuU^w+p#eLRQ00B-3Y%X|DkOq(12S>>Z@ zsgje~1#z4fHN_5p=E}U3EFs?$q7?jBtvYY8P&{s+j!V3}MpUn;jd5@pMvob?L{Omd zJ)lBz+=mi4FMa#S$Q=?$580rxNk1*dm&!Js6lgmnG%%d>b%lT6nTCSIHs0)#+r4V-jrE= zme~7A62g~Retl$@H~rd@GKHJ%7)caK7nG>4kZKthk!RLY1xJ}R^53f?1sUb@lhscD z`|vDQ`~q;Pb1!1jYN5}`oc$df_(>z@hK(2${{m=qbQ0UnD+{kT9zqeoMNAw_6cKIY z9y;(hx!25h@?sgYv&utui24O9o5qU~oa!0ed3(MFuBVvY4Mvtx2%^%AQ2~aV8ocjG^TU4LODM6^cK-JUDV{hiU_+p_iA`2D2$JirLycSy^!x0}$VsK_Q>W_ML*@kPHt~V^57Bub0bI#m$AYLFg|AcEdt@!f}8%c_vUrkhwqKQ)6?F1W(SZl zpY)8(qsBX@cJ(@RLj}3ZGZFT6L3G>;Q8Na~!esk(zUiy|8f8Y^e&*WJcM$@WBp?>guWweG(`mpKbL=41ttIZAAto^D@+-;`;5{ocd-inI69WE`Z z(An%9J!^@C0RNg@gf| zIoUS5G)GJ-Lc4))oaPE;Gd{#j*VSrgtvR)ZyYTj==T)7PBK8vUSYQgAH@Kx{CA`xS z+s((X!NH1++fwpR;v!7{J%=X=RpXR`yVywJI^tuY&rEB|#3Jt!i(&tbZlJMz;#{N1 znU*Z2?J$xrYGQ*B!tzFKwj6XDokr{f#dP_wai&Awchjr}CtKt=02;$iKFrUW zgD5)FO(8__0j;b8f^+oCvc>H*_n;iF%GhI%*ZdQd$B7YiY~;C7@aktHNRQYI1aE&> zG7r*cmq6WGz4`8WCq@ba*t0iax(0ng9cWce>aoRrvUjpH?@o0$w#)en8-(vY5`2GB z!c4u3%da*&tU1yj?BlZe5+UYnq%l(8enI2>$~BW4fT|z79RKTC zR<~a-$FB>+2bb)BSyGgaNh!~M!Yi*er)||@{b~JWZD}Hc6?f<(D=B3-A%c}znA-Bp z=mh#3hi;r-$-JIKgPf{}!xNK&gB++B>h{ST+KU8W&}yPWd#+7jPQ5%x!qY+dbbUg?)vIg)mDlzY&GIOT#BD6^X@odRD?RBVx0IwO zy6@nR=euWjr~q@@KuUG(m#9n#pH`mZ>h!ri?m2T+tiwAo%b_6jPO3(?d4~ibKFYG6 zpoY3gs&$cP)Vo02q2(x9y)o6vs7+73-5#y|clpT-DTTG&^kcI_2Lzl7rfIbU&$cIq zwF%t5(`IU+OS~@t%a%KRn^*P@vW&uiq<9K(4OA)bs;JqHGf1WX+yW`(%4Kox2hwBy-8ZOg9SQ$CXhA`R z?K1sWGXG}^{@CL(wB-}?b*ML{ZK1Zn|G_Q284AHm(} z!}Y%wETyZ@4PVDOo2PHI?qW`4l^I_KeX(Uc8c61Aq^yT{-BGGkAZXBOSVZDW2P_e~ zB*&v0W*1nuH2est5lfb&d+dWQadH%pJmaYfUf3mU9jO`-fHMD;P%o+bA{fO07L2}a z1ikJJFz+j<^@$`G0|IpGx}UJk^7o>k)~~}TRwm5sjhYM&Qotr%nRN3HM7CscUkc5+ z0+u5OWqBqkucq0#nzs_^NvHi&P?NEEHWU9F7hC9bLS<*|``TAhCeB7r?bdDOKHPb^ zOzG;Az2jC8Vt=5Yoz9_Na>IK)#bEw{eS_@+z$Pa@u-;=s-+dtj+)P-{?YOabpVye) zv({d+r87%xvEI|PE2h^7!qXd=ZVwO{8N z$4q-xf98t`|KM7CCZk{QJW%EG+}Uw;LK?}F3EmfeD^4skfqST1?*-{G9I8ggB8hFq zcG3C={t0fi=(511I`Y9VsmVqs5at9p7HY%J_55-fRO_Prj?}3M(Uq53sETvj>Q;Vz zZyccU*r^(G#-h)bG8wF5CiMbQ23Bx+#USA5O(RnvTKgQaamy9dsFHpACBt87Qxq&P z_#>fZUt_pRk|D1*Z}+!t^tF%;dBB3_N2+A*u!$*8QVSpTW6#=oubpb!OS%OM5-a`z z18u{Zr@}p|)%kw9_yJ)p%hv4ETXnHv?fhk__hs^~&54)q4%Pa8nSEpcpx9n5e)pBT zls@>Kzkjda^58f4CKFlharBEjDmf)}cLJi3YXX6`=3-CIB7Wa!PUcnBl0=AHbNIR& zoP7IkK%kn7s{vA2$^U-XpO8aeTW*rE^fPtZGabY|x)3SKkCn^()reQER2d!`cBjaU ze^g}z4({Z0PdDQCR^@U!ChL<@@Zi` zOy9QoD5{Ua(nHW%XOHVK6c>ADvJJL$mo2-z6Q{t={1 zGNOzWIUh>iLklF9TG#6hh&!7#x-Q+DkU`%1o;kjoJ?b~i#X#%2E718UI#8_aspns$74*bSCMZ6H1bdl9C=Erm$yRJdGwC>D&_I!zy z|DkW~{1H1pugxdCu9S347D|x=ftli#OEX2rqv+DZ!6T@W!}G4+YCLQS)c3>@>{GmDZ~OFS;9pCI91BXL22?{5rZ{t(*YT zekQ^;dzFNG#TJfima%=vR6}yQgAq{GFp&SmmhP8F9y$mafdr{Yz3uJFavsf^$Ef|h zZrARYa{1^#jqcPOQOV533;PqCG%B}JT5;|b=hY`Nloiz4FrpNf;Ymowe=o1jN zlV$r-&+?&$pOlYYY%0{;=%4M_y+^j{(oz++p@43@*+{tc{vajWWWYLZ%_|A+vRH0y z82xS49f}{Dr!G!^($@j#r{O_D&}iId^}12{UtHcN<2Q zGlP?}pXL3T?+ZYrz!2#R zva1-aEP;aw3s=RDVPn}Pq@HLpBX(ierN-|WwL699Oq|!UBfH2TLq+i( zA!B4!+;z1Xo)!ufXr{r$pf@eU;1Z}LVbYo0x5)^)=8ZG|{G!{fm~IbSm49CxixriK zPE|6Btm-E`TN%%gezI53KOH@%RVhK6zYa`PhJ{ez8AYzI;9XVNC0*R4Qgzrtl-PRW z40$-}?tFjtq0$xmbRd&|RVNo=(ro=xer&W9!+Lsy(hwQ8G(`c_OMLJl>6Wnkqaq)2 zy!rv@S@>03uVY}>2LiedRbgINSs*5>6muhtlb!IXYl*A}%_m#_*q?OmDVs+hc4R-w zQs5Tp>o#@0J2Tmp_E(v2NfE6oV8h{bY1oeSj*dVhl1 z>1%V=fV$#8H?QBqP)Pgj_7i$-ZnC|UQXU_zbfQO#ke~xwvm(rOe=?!q-gl`Id@RX< zm+KxtqGR%$J$MJ@a!MDyfX<4egI_;)92Zxad1JTr39vhZci+cIJCR%+&CJ>^-qe=q zJ!R_1;lI25Uc#U)(a_Fzx%kUJ%XZU^ZTaAlCj9Ro;?ZSCVL!I;8FwB(L4jzEZw8<| zFCX+*Yx<=^Ti`}aQ%PwDJQV^J`Y{|V%6_UIGZj>Mqo8mojs14N7G}=#8&Z2o_9yik&BtY4#F*RnqI}5$n z#HYnQK<2$GXr0Qy7CRG~9H0055%nGr?8gEz_E0{?IPxZ^IGAm-(lol{^kXQLhvDxBP2JtnE zoc9_ma!sfcsC%m^VoV;q9Uv)tXeW~_>&#QYhw+mVT1%%rgj^Ii;BoB$#ll{R^M3eo z0(Tu{^uL?qe}D#2A#q)Jhh)!Mc=gR++c2UooRt93(xtw(tfr{Vcy+%z+K@J=1V<%K znspb|HNFH{PO|eq2nccUuYOw+NWHtX1h|D)wc~`U2pLUTeUJ6oIJ@wj;(TSBj=5Q0 zF1wvyIfWw@+D&ofl3y=Uba!c``JH1LqIl;<&9&UN?f{5BdzwZ_dzvH8qDWO_|Ifv8 zT`Z7$1;uW($kYDBLrg=d#`592jPrmost7AgE5d9lY(%K()NnPuB%OXKp%YiHlNAe_ zQPf57wlpt(q2Om)659Z8s2lja3616no5ic!j2<{Pps2z8Srd5;NnKnqj+A8k%)4Yr zi2P2uT`ftZ*VSp1>14`#abcijY$UOd@CS(qHbuT5bz%!?5$0<;8#R4$f|6+<-_>kJ zb5r^#` z@?O`4JpUsMU?K?3(NjWR5dY^ZFZ>jY^#W*Nnfw=^5F-`Oo`+LH6Sl8Mlg$#gBw|fD yZ-7VH5IxTV?A&{uWz|jDx@<@^gkFBS@#`0P`vPFy5vCK>k1d7L7drC1Ec_3}n3RkF literal 0 HcmV?d00001 diff --git a/html/img/postcard43.jpg b/html/img/postcard43.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06e457f5d2a7199b2c4cc3b6804a3fffc24b81cf GIT binary patch literal 17167 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 V(5!mmkn!A8kKV;F4Ahc;|JlV~P#ORL literal 0 HcmV?d00001 diff --git a/html/img/postcard44.jpg b/html/img/postcard44.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e78380daa15a0d91884284ae35c5bcafb1206a2e GIT binary patch literal 21761 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 OnzKsE_l@qiKmXa7*T#GR literal 0 HcmV?d00001 diff --git a/html/img/postcard48.jpg b/html/img/postcard48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb055f02ee19de46d3f6c6fac03d495344412947 GIT binary patch literal 33683 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard50.jpg b/html/img/postcard50.jpg new file mode 100644 index 0000000000000000000000000000000000000000..848fca14282d5fe218a852a520c5a2e721dc6a65 GIT binary patch literal 20224 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 G0sq+>Vceep literal 0 HcmV?d00001 diff --git a/html/img/postcard53.jpg b/html/img/postcard53.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ad1b087575bce6b57d40f08f62ec225a26e3fd4 GIT binary patch literal 21563 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard54.jpg b/html/img/postcard54.jpg new file mode 100644 index 0000000000000000000000000000000000000000..52a8c74dbd81743de050afd2029ccc44ca5cfdac GIT binary patch literal 25464 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 C+|UUC literal 0 HcmV?d00001 diff --git a/html/img/postcard55.jpg b/html/img/postcard55.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e065206f15830e7167296a5910377a3bfc8f6148 GIT binary patch literal 14124 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard57.jpg b/html/img/postcard57.jpg new file mode 100644 index 0000000000000000000000000000000000000000..22d68d39d859c1ff0221374d073732c273eb364c GIT binary patch literal 20102 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 z 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൘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

      a?8>!%yBKg4_Zy*&yed^LErP?lpMs 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 Cke*%u literal 0 HcmV?d00001 diff --git a/html/img/postcard6.jpg b/html/img/postcard6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c60a6f9cd473f119efd1019002f65e9795d908a8 GIT binary patch literal 150731 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%0AgB`x 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�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 literal 0 HcmV?d00001 diff --git a/html/img/postcard60.jpg b/html/img/postcard60.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7574bc6476e9dc0b5e205e81f6a671b31d385ea3 GIT binary patch literal 16121 zcmbW8cT^MM*XM(DL=+@S2O;#LltAdc3kZZ3iuB$?ks=6EBOO8sO@ROb5~Ozpr6Zsa zdhZ>j3W%`&-gnRLIs4b{-Z?XW%sgk#eCCf1%YX-3YMN>Q0s;Vl;NJ$g zodYNX$Vf;?Nr=fvNlD4c$tWmk?@`{pOG!`j@IEaw11k$N0}~S)NQj$_U4Vm$iARE0 z;F++Pm>4U!q%1^4Mo3glY37{q;U?E5$Bwz>J zp(Y@tCb;beu>N~aVuJrN!2dLYJA_2UB&1~I6nFnMXm|j)LqJG)hlr4vn26|K>(~FT z1Bj@JX`Toxl04M6A!YZW6^TgwK*pg|(*-p6@e3qs>l;Z<@#rxfJp(5fHxDnL7+72a zA}OV;qN=8@p{ZpEH8M6aHG|pNJ2*NyyST#r`~w1C1qHv2ijIkmi$|oTXCO1PvU5;H z#U<#{vT{sCZC!msV^ecW>zA+HJ-vPX1A}AZ_=(A>>6zJ;)wT7F&8_X7-J|1^)3fv6 z7nfK6;UWMK{x{aY<9~zwA6(S`xb6@U5fYL9hl}7&;J=-anuz#`FbR#KKBeun9HIulfVRFrC?0{tRydFTgZ5u!|94=K|6gSP3+#V$%>pP13I25+AvHiA za9ZhGALW-vvF+VN0u+ZjkSK4mpCK_N`ARQF*J)*a;gk;t)WemUU83RvALqd zFJ;TxCcj~y7jc;vD4>R-&7u=6j42M z|L`^h%|qjWXJLcA5w>nc=88LdkBY|%d1d;y)C!fS-_zTDcWhPm1ZrD*^ACq=zV>ZR zs8Q!9o>yndW?eI3fLZ3~Vo|DpO*CRc=--LpCP}%Ez#FyZ9?cF`-s+HZ;MlNicWP}t zPLb)vaL(+@thuD>(q>q$n^Yc7rqVkBR5tv5sIG1~wBfZ!=Nb_He0(GG!R}{47oi+p z$es3}UW;KCREB#_5*uL>?;d~-8@`W;{WTWuG~7nOCkc|Xcg$7`JK$-0sWo}?Eeit( zdC}?~wHEPHy{^y(uHKR+7>kA|5HK0{kJLI3p_Wy1r)ryG&Bu5CpD1$CVZdnz3S)!c67gC?%QBEq0Y?^b6yzq1}oRy z($|v4ZXn#4HE@najs*>Ay?=dAw-qYiBP<_n@D;lM)P-e}G`;7}1L+gwp-wzZ!9bXY5Q12AG!3u|H6aBV#XtNk%Ltbr2VKuSYM+tCpg{^&$I_ zc9OD{O^6E&>3(G)R%Gu5vN6@OcnO>(AfNro7&#_s?m=p3*wzo}bvkbQyiR#i+T^KS} ziuhjSRh4+{u?V&{E7r=s_h*~*lWNbRelW(An&9{`&BX$_FZF{-k*V!D)Cp4L&&lZ* z@S>O^EMXhl;Nm`=ky5^MLFE<{>dM|koFU3;Xkj~V{w}NsGA=&b#-9|78J|Y zhxjTIvTf%0fm-7<#)PfaM3-c40a`st*UNPhbUVgW7>>Dp)#U^50}Q4?%O^u@UOTWk z1GknCdjd?Do(0kOk|?kuoy(oxy7ha%w|7MTlt%7fVtljO z6)`$+Vd6UK9q9hU-*G=Q9+IXTnH8I`r6@o!k6qvN`xI(TR$VS6@Yr;qTF@aF-8LIh z7U`sGFQURRQA8CnMh>YqLfBQ!_J`hojo#{-$2v zft_+lOv{~25W%k7u%DosG)%nTh^GHQf?tfkRb5V09gDK=Mzo$R#kN#gH0m%M! zHp<}1=nU(fZ|lpR@`H8SUi4VE=l2AUr5?#&9QazDs3nQNd%8{CC#J=s{N38Im83TM zvG?efML@bFREY!v9P1usk7zr?MB~O8+cb+#y_NpGQmOR)6p80y{!sN^QG;G0m$b8r z#Yyhc4Pe+&b^;m<}mtV>;rBtDBO+QFr4Gy{9?Z|yHxLNX$m-UrV zPm4}FwJF~RHNu3yF2hLqJrcS4j&z4V%CGcTjpebB#opo=)_j|C;xH$$@k*xXar&hp zG&|q0s{D@q;x=1;kk z^;W&C+`qm0>A|@mJ2-y|*@3yLOMu^?%*f=U*^MtXHVNapAj2#OknjOy6bMK~Cf%p4 zwwFz`l%iXh9$dFWYX@_vQ?f#;Qhon?BoWpckNtx$!kZN%*KDQBf*9F;@j>YOZUI*L zF(BlQjxt+HXe>}!!7(9Xqsim-+xTTreFJWJYE)MVnXh z?Jp{+zkvy%D~f8&a+G$8W6_i^uhMq3X)DOz#Z!($D9By2M~%FZJj21cFfjVt8lREU z(Etu9@buaJ0>CwYYUH80(_C6ncZN`KX*~bBOs;-Be zpop<5(*fq$7!#0R<>QYP=Aua&hL*yms8-0Kha<1zj%62zne(d6J!r>6rN}>+_{1KLk~~DJJM@gC-68H+dP9|IZ}!2Ppentw z=-R>Mx-g@$dy=yEWZfVC$p~@0x;rDZCHOag#CHaR>ZH4}|I1&-;Cl{3iX9cU^yoEa zsTdSL%#Qg^++~44x_|%tEeAM`DgBpz)S0FA}k! zDd#&@vQ8Fo!TPCTEM3K=1B@VBK>9Xn%4e0-3*F>^w?@^=5)|~|TJ^*}1=>ztUMrUHFy;rY0rMtEom<}p|Pv2SQ z6n`YLe-^E0VWcr{E>61)Eu0-3r0(CuEVhbx8uo@58oMMJ>uygQ0=r*L-wmF$FLg%S z#8Q-;%wl)s%vC_hYigX3Zdk_FB&{j023De}$V*hh?nPhFW}3TedCV zROu+8)Qb;&>ZFZZ(2NT?zMS?+rHtr+uMb3Lv2X5kpdDfAB+HkSt}}R!B%KofDr6O} zOY!_iRW1=eok4ZlMLv(|)aD-H3P(cPFQT)hlXrxNNm0hD>9hm3w$(0@<~>*coRqS+ zCSoH`(~oYTliM!&pyvT62Gy__;ix;MhA)-xN3+=fc6#>2fP6Oi$}ozfHvPhQdVIXF zV`{Ph73vz?v}NV)?b+vs!`Z$I^-H)hVpj^^%DJv|asM8CyT29$3Ttg&v5 zTjYp9YRnjYfhotSr$bo2c2hrwd?DnA9>r{~6s z>}mWg?!%A*L*`lcPC_O~KRE}gsmt==7CY{7fW7v#sWyS^r zK8P^}%__FgQCLh)$Le=bSC-WiQ`ypw8k*$1S4@q7zV}GIv|~jo%FG`)7Cprjht_a5 zHxv0P(kcMcB`atka}mSpZr(oz3Hr~=!b-Km{^rz<5h)*^R$;0^Pm>fXB}}4z6%$UD zYlN;v8JJ!fc4WpFIpLy8jhD9&YR$&Xk|mE!hI+h$ zV{*{<(+QeANq+Xz2b%EFC+flYlsQ$8I!T*JjKE=I&*Ow7VQ9`rbGY9gYD9L>P(R+< zRrfs)w=)E*Bee%;gLLh?(U94tJOYJ4CwDR8^hvXfpUPYP8ETz0es4G$Kq%EY7O|=U z$>f$51f=qb4w@n4jmI}eYmveD0K?9xI$@dggh>R`+9Y3hFdy3fm!a6>iO<*6iwPNK#SrK0JcHenPl z$4~OXYx2?Z-wYsK7=VG4;raM$<(a;kyRvhB&0ZrPS_;fx4YiK}NWv~F+X4bg^(aOk z@)DNv7;%P(bJL+in9x&k4wS~cAPDOcI9;v|F5DH!u~4yCY)5ON^ZD>>&ouBSE%$G> zyg!q9CwlOrJl-!y`GrZrdzV2+kVU@`vA@=0ZPkqe9@IVg%?HJ1T zK&&j+D$lDxP+@RemBnmFJm-UtR>FOX=Hsqqtx~@Nw%$n&X;80GU8n2M??)=A!}S{Z z_7x$lFvKp1EoEk_!@k}_#IghBjFL?A>tZtGR#Cas?Am*w%2(mRjfQBIJP1Muj0EXk zJ>Iv8>JI2-UBA-R$)>2M(JrzVlY9maXW9wfBtL^`o(gy!aSIpUJt0 z&`eVQMBEbvnMwIL5BC|O^4$BZfr#=G-3QOS;iF(Wv!64z0_H3YC0w6WjS=g$^S#cE zywjS)FUQ>N+R{bq_z*2ziITP--*o$z2UwUkaw^HXXuh;#FwucCz_-PR$X{*P?VF?R zw9Dx5DF=P>Sa&lWnG*45Wl660T!a7+z!Uv3oVaVBr3R=aLEJHly6p`6TIgosu^@|S zAUN*G0Y0qhjKB``IC0PoU|a*#E-bqu>g}cwuZxE~V^ne!IZEX|uUQNxu#lf)qPusM z4p-CK@H6$NHEr-!58W9Gfy&WP;}?_Fo4!^X?^y0BiqEib)J|mY|BzGlg~J?*dNE9FXzisnZv30$XDo}`W!60e`B$des7+) z{9$W0YaqJ$%jtPFtHczdKXhx0yZRHqo!X~14Z7`C>h(lXqK_~GF1dvjPtV9cNNP1ejzRuM3#E+2PWs(I$tWYl5Iyt%Gw+mK2; zVP8Za)}DEz?{n~{O7Qm=qRGJ>ED02mqmiVpVl$o+q`X!jpSiiexjvvq>G4NvwzL+0 zoh5A%AHJw*ZZXSN)OKH99@nE>#f1!!`*Ef7AX0AbvHH^;XkVC0A z-{U{O@~b8u_PNSdWmoA{C{-1G{^6g)Rv{t!xL=l3%K^KTE_66EY?14xEbrWM{qDr{ zIRbPy;iShXa=t#tw=>u{yF*kNSt)*(TA71QP#NaZQd^Q&KV3=ONCV>XVhwJEV* zJt93J_%AavBE?*o;muNIgN9SdaUXmu_|DEpfb8x~P7srQ-gO@q{_@!tT9YW(bRESc z_I*3rcq1TCJ8;v+j)S{F=iJ$p+PA_i7T8nz{;1I?8CdBM=;M3o-l$GAZs1~;ub;tP zX7H!|nJz~%fHFK<|1;h!sh7jK?--rQ%ie6TwrQ8Vr(3Aj^16xw*sF=frMGhVdJ1x| ztXd8o3p&M{KI?;RqX;~+GpLYB&)I!LD6&`swq#Z>Q$Z#M?7n5QDVF^&H^I&snX(n? z4bZf~7k7mqRknu~^TinXSv9E>Ei?OMZmd&e=kgiGE>v8yqRyONs(miWLLj>j=wTK> zFpe@+V$m|(py;Hf>v_Bjec}Kw{q?nXoKLI=9uaZIx?+hQk%>F%zXj}>kgtT8xb<%^ z@jVzm{da=l(39Y}==>HyF-LWpVv^jNW0a^ySM?r|ny4_`s0to<%I@y3FU(QxnnDGC z@kJAs?>6`0TFl3&HCHB5u^W{1{uZ!pRQEyXz$UEaubYr+|J(6fKrJ?(IDFN$V6ADg zy(Lth19yMvvLGFP3t&l3R<^hW%os^Gt*Bm5 z+tj={iicwry*0?lNeK%ss$3dc^pn%>FrAepN{x`2`>nU0_2Jy|TLi{x%cXsM?FX z&C0*|KL)n>w0Sc$+FDO5C2j%iPGz?M+=l>g9xk1SF+U0;hOkRnpD>X46pSBw_;j(8 zBv%3bdYIpg%saC;j#WiAJtZqXlv@b?|Sljc5Hk(L##AMoUe<=BDf9~e@t7oM*LfnHPNEk83^H!nJb#km|w?&ZFjAi?zn+hmv zofPQXlJOG`*KJPXnX+b@@X-C+#V(>SDg!nCK}RS0iImCs8-oQy=2xF5rUU!DV_E#* ze09jNIy@sux$Rzoo}mHx9nI8!97^y03{2;D&eY$E(U$S|?w2;|?`hZb&meP+Q9f4P z?>*O&CX_C!N;1G6et9_UXy9Gb8W2BoaSJBOYQrdhieF7{_&X&+G3_MMK+4s67n*8jL|u1ahN0IaP=p!J7G^Gq)1HpFf*SC9Uxh3O zxU&Uvyyr5U%2rI+@OR5Ht9+7HE9u|2W&Dz|`!{y(*FL9cRIKzoubbX(OPrfY{+u-; z9dHAVJAZE9X)S7gUnILOqA>W|Np6_t+E`_7j~~0NQv12;;cs$F+G|TLjYo z$k;ML_8cfFE?kmpiS(G>0 z@e^3GMm@llD?jXH9cho(EE$>g(N!;9$}^Lb@&J$Y4%&Ht`!}cF0^-5)HPf}x8_lFA z)zSqwn}+p+P}ajKe}7l~mQg)ety;tBtba!LM@ns{t114FAm;9+7J|pOfTel$!c4C}q0$ulZu^QQas3lY7iBF*JgQb}3fLN?wW`sv8DA)#7 zMqa=3;#4Qa$}-~PK;vyZbuE`cbO*W`^9eZDS4C9Ic?E8I!f^pncVfl@glG?OGr7cH zyS?>*9*2auV55NKAY0O4|Fr5^g)jwKUJr~uhWn6;FSJ&nJab~+(^}~&!u%e{AT(NG z?PFlw{dW}T34!OcT-1KsXx!SEYoLGcvOz7vR9u^vo~n{!>uQFqwFC7 zYE5}KNLAYEjK!8jsigFl2uaxGP03}ww2x)%U(LK{Gx65`phwwP%7)Kv!2zqRmLs>i zP6;3fd7ecSx;}?rO`H6y8_8(j9(Vs)%&>O2!@2Zx)s}dAyX4?+wH>A} zoGz!-ZOYB(yMJg9^jEFOJDy45fzET7ev9YFPjvc@Dtx?*AwMTu1--OlxI`4DNgLoR zQBIWYljCjE>)JCzmP58GM#Qc7^T|DqSZlJXeT?LtD$ee5fP&BB$5UxLV?ms~hc>Og ziY1hnu)*5GQWI1d!d@RX$*hoCv+r7Uqnu`fm=v#pAhIq3cp}8wc|a5m#BWHK+gOCyx3mx7#v74Y+NIF+0V^5%yz}0uI-&^4dVpe0v=Q`x$`d> zVry(|jAb60;Ma}rQohcYAH`Z4BF=sl-jQ^h-O5x=meaHFxilV)>9n+L-bvmv-4+%)3Eg~oZtBz#LOL6g%cWL?y|Mgluz`5&omwsK>>lo!B#aJiE=u9 z2@EIk0%0?}$I}&rX>OIY)mkEsV)+$=JX=pa8V`qJK|G-(Vj0@%TH=0%2 z<%9Vp30G63!s8wiBBuM&>aYY1Ay>Ujv??eMRVKWJC^^L0L5^oPa-oS+o3ecK@2C?1 z#E$0OV>F8Y62i%ma6=Crrb1q{ivw+U5-G?iWKOj)r6MH^i7CF-&`h z)p~qy`wevU2fbMdTd)zYAJf?cZE>>$(+$x?iLuY;pHG87fIy!}*%;>Qc?1!cuX+8+ zpc$#j{xKe%)RT3lo++%sbD0ZUAifk~)W{!>sx}QQ=u{*F7U&qAI96gqXMa{%=t1*@ zj#+w=EoCk>RY!t5&#x*iuoaBf=k%Re`bjWA2h^2}%rm6SjpfQFyLSMcv*DGVum5CC zoN-oBt8xiK_~a!J?-#UAvN`t=OUp!90of6Ps@5UiBi)@6-~pms!CGd7VxSrSRj(q zLQ7RrHGkKk9vrXkbx9eVf>MZ>Pn zHsS0P=-b)mL|0}XF`2`p@KlC@o<5JKZ0Lio9;OmKFI)e~_TR5{gc+_ho|Bs94Rv0K ziA33)v<59z_GpLy3rlV0n&=Gw&N5x&;KxrRzaeHZeC#p8S|kPHKZJI5B=i zlBT+=Sk`U|=>mUuVQ`;%;qXMpF8#D(ldLb-w_QIw#e+^(=N@fZdfVY&eusMLX}o9> zsTE(xH^)WM`3M!;aUr;I&B%~Da1`jK*Em>nMq8dGLbIW^IVTM#v}=@-JM!Y3p7y$2bpDyqeSDi zA%;6W?mcC1%6Ldu%zv1cGf}y!)pv5!UYZ9I;f<0EHV5n|75Z3^-xf94T5LA9NU?#f z36S`Yl089-jR(wgY>*Khn8|!^3GRp1p$*5I$8<~+Rsly!Y3pgeIx^KmnjP9vlKQ0V zd6MY6>BA5;#bQ*?blh81*cU|zgis8vyIThwNFq_7eMGlzxcQ(zJ&;2B$ap<=@Ey`( z4O2Sv9AReRFYBt^QRl#MpyK6I4wLC|Ugh+q^WW!5ldX7Fo@o-haazXsmYZlSBv!!P z_!f{^A=`<|(vFi!^})k0r^HErX8m2UG|oU<(a3(zSJjEtaSd>D#(Fh*c{ZdAMboF$ z5Uo#6R7I7O;5-b-dyF7|8dWB=QCmE-N<9xBrs>&PbnLTs@VyUQ?GRpD>V=%);4j8W zQDzF)6=}}Bu(~vJk&f4V!c^ppaM-ajo5u$qquEDBl7!%QnWaZCOL`Bwdj-VA&1|U9 z)PeLAm!gRcCf;j))5@HId4=~Xrg^D)B7nDSwkQur3tpnF200CTvbGe&*d(VkwX~tRt}BmH-^l!0x!uI(O&rN3_x5 zLNwi7Q`R35#NO$kfGQSes&r8&+$bTQd4`szY0u1W6d_)rJG=A@P0Rw>-|iVRt15Hf zEezhs#g9E*P**R-39=I|U8270Cp9Q*TDup?zua_Ffm`+7y>Q;>4prxU9K~h*JUQmT z#P2hurc>aSw7pN?no0Ny??<9M$*r-h8=6X?0qza$nK9SlL|vaijUN*P=Jc`wH8>bc z?Dcu&?;DP$)<)+w^?5~LE+KP=aH{E=6RUku4w`HLpMiSheNR7A<`fv98;pP6u-?C` z2AzDzcfH`6{Sj)1TC_i}7Y8vw#AN=%^Bz^m^q7uxZRo)oE#*ha9UV!oGS$B`*dOVRT$scJ(%)|1+Lh#2tuM~J zcC3mq>QQzFRt~GQ^0NlP4xiEY%<6dE?5H7Sb)oHsrgn5_!r7L^EfdAcA?PyIW^oU| zG39IJ#Fu|5nC4qR)$Dx8kx>S(4XTc7GJ%Q0&6ukSVZHXbLnGY-go?|1_)|0QycD!h zB@pYwg{mCZtoJ}e#XKL`E0U+`HRJlU-}x%3Tk&V;pHS?drV%~30p>MIj6VGbWumB}G3Gh*n#8~8DGd%1^|I)vK(jFGI}M!A;UnoUHuPsdt-l$MU=P8$4 z0B`OGp)C()Tr!P^KG}7Jq{nGsLho}9IbAxUGXXYgQZ0B!q;c?op<3qp3R^xXb z@Xf=7wME=+mN!DT_C7Zxy}fsgw2g zbkqK>KAg#YqIoByjCOgR!q~0}9TM;CEq>^(+j$Q>biO5gz(k z(V`iBh|<4Elzxk(+d;YZDvU@QM6|rFGY0yS@Yz<|E@rV?Y|&v(j@M|(F3a{ISg5}(g#^>|Jr?!sHH%qX8!q4!_HN!?W3#vTUO?)`tN>UHHG`=>eo6l%@%V$_Lp2+ z&1GCeOO|khw>m(<^7girdC*?IB&%26@$QFndoM(m*TBVLbB=6&U}Yw!#d!6MLCu$n#fUsgtlFb8 z{bPKZ%45|2Y1|2=I&-uy-DaByP}J-GiXkWF#q?g)cMn}@qh460MN^pfsC)v~fBEsa^Bfb9G6DM|XX&1rQ4lK{AS!%CQDuT^@ske?i>zcpuCD@10}L+I zmcIw<=N)M%j>0;ByeT8lOz+%u&qan@vGnE{imG-4K_AJpfi6|=XOS2nh#Uh~dF83_?x_X14`aXlcP zHZ-RNZH#j{bbI8&v5wEF5Y|xDO*_#KIkb$o-!Y$MSY49)H^aknkXs=rqRcR=D2J1 zyh+x+UfGV$wQ%gcG9sG^5d(8fV89@ruyjRe3l)`$Zj_CLY}Sr0l~Gag!~8j!BMn;^ zAEypU4itOQp3$TEhiN?8>bR;@6DW{UhFY6wqt24M`fss;C;-VYmE^yyEW=7%7jW*v zYqOr|7LdnKfL3<&KVSQ;-3zJYYanisCV9=*&t!tuarS}EdrDR`6$?*vwxh7Ya>}RJ z4El_mAuAvG4Wo*MQZFnxD1UH$@FF9K`)M&q zliA>O4D{6?uV=)s%4KYv}8UCzv26f|HALs3n7g#pW){K{d_c& zWhW35sBZ0MVFGsXGq^ak@H)Gi(q{Aoj8`&hRCu8tbCUi?)vOPFX9o0DeC{e?Xj!qZ zE#ap|vJe}3f79(HF#dy_txw;tTL5hKUQh64NIR8wBCC5 zA5GN)OZj>=Ia($9dc&i@v27f2#b461s?mLL=VkWfaAIv2oqmDr9t`S4UpjD}>f=0d zBB!tDo`ARcNGu~8T)q~PkpI~?ET)!0)hu0p0az9=9hExGuz@RaY$gqOCS~lu)Jl6J zihitLL719n6y2^=;VWe#??R}@VwT+S(p-J{jvEC$ecJ<4iHcm6YkPC;qVvt}B6iDc z$u3n-5iH{o~!W+@3D**CtPpk#<2T3W2MSmqsN z?VnJFXZDU;Qjag2N`qs!*+5;_BQPgN6BBULFnlJEn$-) zv;vp+EH|c)tFAv98GVGDgWvkvraXdBNR~0lgEWvT8y|+ga?fn>%*aEql3vuSj9(w{ zWfpl{FC0m5!mq|{S~N*BI-!H8O%o=^d3SXI#0j~+DG=MHqaw!B=BrMEQKqxpHI%e! z_;KMmwooi*ttSdvJ1#1bY!FIsj5cbS4^k_;`*wz*^=;YLQRx@aOqoyA`Pq zPH<8n*#~wkUj>H^n2wZOju1Db#FBUZ)Nxyp+=%uW#^^1vBBf;23>Fl?L)_?hT8I1i zDNhcK#)y_g_)&~4AO0e1%W)px|Dw)kHa#<*-R^$yev=ovey3RrSgEYu@an00-UT3e z%cu(G!*jQ_+R~!xv2fy&FvoF^Y6dQ+HjA@Rx$dL?bWszVwQ=(hvlgd<_Bjws)!`ZY z)2Qde$dpvn7FMgxjU4>PwlFwimET{6VL}tOZkF5ahl!oX*|h6W!SyX(Rmf)RmKMsW zVj9Ya8cDWla6U;pBCq+7lb;-Png_}`@J6}Z-+fGtF|VniYuK3?7aWoL-?hK|j-r`3 zp|2*1YIp5Wc!pIT)^-5&2TJSPWRaI)#S^V@kOTCZKldf|*8+QzG_MC=t~n69iK=!5 z`VN0~jIh&%dRj*ZR(cn?nmg%pGp{RKCK?(Zb@L}|H3VHR4{@WGUflxDFj__Djuwd% z&!Gnf4@xT?BG($YOp~biBZ@x>)J4-ql~+u|7bBBG#%cmp^M??6V2vK*11<4oWX%|3nS?E|Wnowk)2Qzg;L}V}SQb$M?~1HzRkSbooh;u?q4dmfO9-AK zRtDNdwr8;B2N@{y^PdfmTNeV>Bq66}cd7f|ruJ9!MSrt@pa*R5!qsahmFSa0MAh&e zdWvq%ee|1^qmXIuiSDL25O)A?;wt?!pT(y0O}TH|?HeZpj%5vaQ*Q4a3yapOk?zA@ z*ZWOc>LL%#;CtSUnP4#EuW^mgFV8M4Uh|`xTQW5i7Q5|Gnp<3U>G&Vf$2Vu@x%NDB z21$3{_Af&NHZqrAyI#cKr3o3oSMT~y8QRJx)H`VLB>r)9UpTDBA*`_pF*xsotdcp< z%R(WX;{^Vtu0| zehc?Bg1gRo6gW_3cQprO_ncwTHw=1pxI?67eH9n(aPXJfZZWD>LQv}=B4ALHQZ@BW zSq>vfv{DGetAvxTGHZ{NpRNgYkA`8#quxFmKgx?UO!%_INFl3LWErTJoFP!(qLv(r z!LKNvR`>+w7T{#-D@j}EU>mk`UB1pLN+%TeQ^V6-azRf#v9L9qFA;0%-(RuLos*&` zs*T^QU=42nWn0;9>Adk>%b1No=gD)HVCXw?Sz^uez&_c9in6Uu1?z`AQX}qqiXs~Rr(vzxUtASEoJ(5iYAt< zfLlPoBl&2tRzm#SVZdowQ1MvREx_(yRom!8{o&FD^U_O>FMnM#=q2d5`V9PBFUBgi8_zsAvnz-9l!@#{QB*;-g%Akc{zUcEg;I* zmWo~zNd4)Yn&PzgGNMOT_j|9B=-i#9!3LjN+ItT%ceAUwHpb+3(6x@A@Art9n<5 z@(bA43D^*t%|^*&zK93R{KXyLKMlK{kV|;b%L~FqUiL8pW$eac)if=Og4RMTG6Xf= zPuxE+{r!5j!6}?_yhwwJe3wtqcFfDxpx(nvYj;Yi-ucJJ>o>tyh~SH`(dP7COi84hvoL$KR>=le>tTI|R7NUzwY0V>=C%VU5T$@V{9o6B9|B~n z^G3O$K+?iv9aGrpwqaCp#j~o}T#dmjwVI?y;dM`0&Ni+xiw1(&-&1^uTl>4oI@S@h z>^QU64VHX-Fz&k))Diya<_zun0&1?Yxs}zR-|}n%baMu)=?KX!N%*9=XZo@SCZ#a) zKKl%~Hn8ItEH>s_CySU;tJU^<$*D~xqAIiVsPJUKb)AAp8xatEVpYn5@>`u1?sm~H zF}xXWF#4B7hz|OUIE2kXd0Bu85W-#J;I~Zhbi}b2U4NPJ&ugns#fyzd$R9~2Bqt|i z*FI6rqA(kux=WKu=<^@n7=!)ZUR*fR?jp^61S|MlVx}N=>X`5dBFQmroHgTd9PalS zX*3pzjWXSf_*X`S7^Ao!{PPQX|4ga7N3Aqky)Ld0NgD?IdhyQ>dX9(!z{fgBofi^N z%kBO&m#MY4fCful@}4}P z7{NJ}i?2(+^Lus$pBW~7TdsWUabM^}qfa(g56uFnIunJZJtlfRv3E*aX}zy7->?a- z&DB`UpMTJg_V~)uu*bqmty6+i82P!)|BVDSs7OO#^>$^bizJW3Um%c0eZ`QmB5pTQ zmqyAz{_%TSG$AE%1?!xC*>#O=Sbgu&ok$;#tEtLwN&J42g^Zm$8y{DKZeGHc^MC0C z-f-kJyqZvo`*qJZ&ACrzP@eBA&3K)fpW&u+pMZ|P)m>s-KL>;={OBvR=sPf7@aYch zinG$iFo*j0HMWbT-K1dROd3;<#>@q|&s@3$8~{;ZmwrwoVsL|b@_9Jl>FSueK)OfL z)ZK8$K@z#0YMxe3hcNhw3EJxAun%GHocC8|{+x8xNKN`Hr}WD)jM$33ebI!jU7B=! zrMT{pAM(>IbM=Sod(_U8h(D2ef8CsF2MT=KpX%I4FdxM4g1l+!otGA zqaeV47&|mJ5TIb7;-R4^0G}|RpfRA{`v7Dgal%6VmjV8#L4AUT z`G^t$5efODL*r+_Cn#v>PapAr0Ql(b_u&V?V8CL2VH1VJQZ|OCaK>g2O2|W?6szsQ zQJKD=;xKUuMnuBJ!zUo5rlI{xN6*Q{&BM#bFaBLZQc7AzR#i=1LsLsz$JET+!qUpx z2I%VM?&0a>9TFNA9`Q3WDlsV;oRXTBo{?WrSX5k6T2@|H-_Y39+|t_C`=_seU~p)7 zWM+15eqr(N((=~!&hFm+!N0?!%d6{~+q?UR$EW|`f&xJQH>{8Lzk&T9xG+9&efpRd z82JC-g8Jm~aYJLkz>IM55uV0!-go>{tT!)i5L%qgwFyb~9kPxUktY=uFy zb1JR%gyf*`g?1qx9mU#%*u6C9Sd{aGLTr$vEH9Ra7CSHl-b8FJC{|LYXn0VE5vFj~ zgU~|Z3r%3{7aN7Su^G#puOyKkD!8PLxJMk{sHAn{8iHDjaf^4S1Ta%b8`gF>d#ziK zMP)G0u``bZr;3CA`ad~584Jz=MKx$QL<78|-4#8tL$9S7<;kMN-iq_bVJ^R&@YZ0r zw*eQ|^Jr4Zf2cwd*8^AGO6w=}exPH+MrubupjwWVvE-5h zIr?#tvEcCgzZwb5At^9h)o69)couRZA(qJ>SaFO~{;=B4?l<}rY^@Ozq_|y^3_T(G z;bq3fo>AFVA!J5?{}d%3chmW=g$iaSM1ixl#2H!I+F8Ly6B*8Gocw88am!d{I|G$Y zP*nmCw&rA7VW?=FwWf7H*t+mi0>EsIxF0`djSVwn5fY3A@|- zT9hU;M*)^ffYUO{{wpys>&IU$F|R_nsnO6xjxv;4lS>=-t7ShJSn6IADXS%Sywq zA|Z~UyYCWKwrn7(@$Gu4Ah9=TAHuNG)X${RYcISh!9CkzuB|AJRLbDLteG9-f}n%R zd(97hI*6mBQyadDXq-r1@_;kyucv9Do5K%LsciI99tMqo1?CEGPAu4p;G?X6xiI{j zMEcWH5aU)HrP_}N{ryrV%4bcc^S5*hZFX>)gKnDy=pNR0c^gS&=p6vP;Dw{KFFH3J zH@D+*5SxJh0QfcWuw_bi0j2b6T<}tTLHmqUeNB!(X+!LsGq=~0yu(2D`b@T^XkAEI z7;t~0`nK_(UU+vnhWp=1tm%5Kwc8{@-U0Ic6iQ!3t|s4JqeK=6$wuA*=-22c^j%{i zQHW%*f~#^d_Mo^otzyJo_@Ivgu>&eO1Hf-kuVJc>@zZh>*8a21o)|lCtx>AZY>3frMt{fUU>tMBmJAY=`_sI+6BtheOi9dJD5pvbXT za{R{m4rq3I&At6V8MU@}dqvF&CTO8@#`JFpcZW}#@~6qY+b64k`)%?z1X&9(q>vR? z=2~ETZlvv^Nn7;Y{GR@l5wMbGxhhg;Th*VnAD>aloRx(zd(9bsazLtcaIExfi+XU6 z{7m1KV3uLcrC+r|EGfcoYQQ>RN|voM;k34~O11=EG+CN}<#bWde6|FfOzudhhPJ*A z4=!X(uvS+*2bs@5`%~ATd#iYs4_vq+N;`zJ|2R07y8DguTHOT955rIJekc7UMx-QqQ!h7t36Did^(HmSy%_wg!ms%CchI@pECCt4m{_wH;7Z^Uu z!DQt0t(-XuA?I!pY}fx@AvmfML2@zd4Na_`ooTsdv?pxQ9>{t49T4UiEgnW)pa<*? zh}B%sS^k=~SzXN`xW*_bAC_&$^9dLTc$17YnvW#2nJtMy+mgXKwB6^R@QUH%BS)95 zF2{|UI0v46f}a9(%k$Ojtj{r{VGh$LbY2 zUb-E2s)QIO&lnv#`VFb;+X;{d4-7L^3g`wi#u*x~rIr^fP6`W(hhO)T^mS1%_~ZS` z{MYPC;MB>&-1yNW?28^OAqJ}}gG@IZ^eZD;FM+3%BmxVl(Z*EP9~em5EUJAJ$3qFvquUeyj7U@yD_dJR!^){gK-%fF?vN!e*@ zdg0pz<%kgW%-pOrwV_CYP`s}Y1YSnpU-{=e9}Prc?I@$ z!Vcx-JACu25ZutA{7gl4v!~!Els|bfs(PUi9*ve_sHyyXz!2s@L@Ur{*#dnSV#xVW zAd}5?oE$zSj-E>%6X+hc>NBH8Rqn%`JxJfxb{AQJ(|^P0MEv$C>2%=_dF$~cPC%~? zL1y3b#~kt*`-EzLP6}7?!rmbHw=Naah%6`P?C40GX-a$wfLfg&Mdh7W%hF%UvMrHV zP|y~@)_9w(uf1Eg9{kauL0)h9x*V-AUCcA}C6ODIBDf>winl6cJ3NS_B&MWs_EcqI zi9+m`B}_un;(EEKYHndbXQbFswnZ^X^W(q^Zd%Qh|YSgVEzo@)@8&5aL96Fe)ZSLwG zgoi1haMW?Q%~SV?zVT8Sp`{;2jlSj!augjl<)Hh~_Yx7D-I!%O6rbmq;8BIlb}8xn z+&Th&<*J}p-%bMGNP(#5+Y+IZCgs)Bj5D?frJ1UzB=&}4HqpIF<4fcMKBDUakyg0e~#+9MQq-?%Dk8Yz`ko2v7&oY|7~&hvITBrh$; zqSWtJj%OhOnGsZ?jdT>1^8jqzSq=Df7KFx#D=?bJ}$(SRWTPmA^^JJH&69UIN7 zsV3&g*&U?tn_r(AC4}W{sDFk;uzQn!ceHO6cn6>W6?D_k5U7BQ_UuCRH)HF1cAF@v z$ngaW?T;NoTR;6tB!C_ytKNNmL|)r~g3pSZM@qz|FhBmOsVMJxbpAG%EHuYs_y>Lm zh==$LjgsoVJr?5Cz^y96KR0p>Wb^kGQbIEjv#AEd`@RK$?H)kif?3e56IZ_D9+|B% zhQ*P^@e0xT5T?pVoEy{i7oXR)2C`82h9!WiX9{f7;57#P%D*R-5~=0%aCU_(~EGi9!xY;%pEqs|rC# zD8{@nmr43)odrcr*@ZHW*u}a(o8?6rk&Rq$&cByU&~Z1IgeIR`)+VPMZL*p+!)Lh; z>J%}2E7|v#*(BvKcn4fWp-03&uxLd0JD<;!Qr;PryP(a+?8Mv>zjbJWJ@3Vv8auRI zpFP;>KLS_K>dqsp1qrc#RHJN+KGM2cr

      5b z`ITd&YT8bj;O`&!?_7>3^y_DBC&F-Bq;bOx?dMAzl6|J(*6Kku#j&|a)y=d`5tGZ2 z75xvxnsojk@HVyM$UHHoX>e(J^`@x$^fYn5jeFcs;%vk{BLU~zP)M-uQ#gObKktwwmbVC7BPeAw#ni=wK{%|$cyv-YOY zKV|&_eGB5JkNiQbd{)-=*+!A1d_VBNiGQ-~^xGXW>Q~e+Zf`B#>_a8gdaMZ2i%6b9 z0V-e1+CMz}fAMSJFNbY^v%V92KJkr&x}GjCqVXqrDX&KXVv>J$7%(58n^)Gl=}>l-EA<(i}~aRf$iw(}e1k_X! z2MuNL#8~K>hQH!XUrWIIVU1-}w~iZ$%RHA+gk}W1j3?gd6ta)# zjBkuNetVx~+)H1Ha~j#!9*rC%a1|v|o5EG68hC0c;b?M2-`T=kvZU|LZ+h*&$FTkf z=X^Vm;&@jJ!#I2o4#tfv%BCjSeiIdn!&GXeY2z^x#8>+5I@RY|j4H|zQAtsyD5xl} zrvCtG--z1Bk3VHU4eK5T(Qa>NSZpHk9M-o5CetnSS*$FiV;ll<&gV|Lm|8TEJV+Kp zBZ-uckMuv=Qf*62x6rjqYp68)3s|h}?V<8*W6iu$NhbMaKun1utXqp8mPR`;2p=YV zSpA?i`)>{1cw0l%bzK)iy1SF@+I)8nWcT7p?Nxw9mIJa&b-6CrC@>_RDKO5+eoceL z;^upcMVjW;YlfAeZ$5cd-c`ef@{5HM=Pq1;UR;gkdEaP= zw9yqtWlgBq1iJ#~X(bokH2(k;Ja(}nO|&S%ZQyRtP6`k)gYI*lIv<1n25Ru>jjc)I zEk@a-j(;xQC6mdC;dWz|68w&lsoKetm0VzhUZJggV(?a)ZbJBvN=LWG=pmT4!gGMh z3NT)T4B$6E-Q)S2#11IW{7B-QUUivO#9}2VDiBbl=TDXrP8_mOQ-pt&T{&Gv-t8aT z-VM>oJUQUJzbVV!7Y|R`duouYS_-W>N|NT3qwYELH)i=G1lw_nR=3y|UN*K*lrStxe5ju3Vw&afzq)};Y)RvADh^I~ z;MeC@ia%=~3+VtZo#*QpiZL8Ekj-Zs$PNzciD88#L>Y3%LMBxsEL;Qe7sVfo-YNK( ze$wl=bH1ModAeSc1;op1X(ssyX`wInXOn9MW>qDCQJg3h>Yqk)94 zTAc4nrD)kT$fwIwlKLsrvTaFUM{jeDd~m?!8C>xBRwj;PnpdACIALl|r5rP|_v=c8 zoMSfcc+_7Ci?X@>De9lM&y96GC&ZFyULMlyWYF$3y*Eg{x@)_mBzN|gS65o~{1C0U zSS-@e#FnMte=>NTfZ#uB3t}hu<^gc&k%e;x%i8Dt$2Cm*6-oc;vr>9UTQF< zg{oetwbP{g8vUSne(DJ4krxr%K&*;pm&yG!@D7pTj}7==O_xp5G~Wi=Uqx>u_Lj>Q znQJBG#6sy}mf97yd#TLQm~C2LIfR>IF|y}B+iw|$e#(vsPM0lM%95NRT5+0ADpRe9 zgzC;VZ906=z4?>8Z2tg_uyh-%UcP56K0a$Iz|+LdPuMEa$6;#Hn!{6!9SVQFojQ*d zPLH%)p2;Yxt*@Ch-`QVM(Y1R$SH_+*)cjAP_+R@?ye*?a8d+$TF2e#*M`g9Wn3~?oEBGxV zpY5-4G_3N%^C+|0ijA@4I0xbX0Ek}zbx#m{E%<%nj}2&gZO4git+dwGZ6|52B8JKI z2$Is~;CT#>JTkgmDuyo|%xdxl*x33>%9JIBsa?vRV=Prat456_PL&x^p-QDV!kTJ4 zxXS+RNZu*Vq@?+-;(TT?RmJ4_jsk>gPbQ^-tAnXk&Q)vHSbEfQ>{co@TK(iQnc{Hj zrAbM;Qk6KJ~io1 zT#BTX8OCr@i*kjQAxX8qmrr&2zZKS@jNnY81%ZVxt6{PnvmH*XB;_Sr>vW@OE?CA= zi=qJCKq9}S>Pq*!(OKW}&sP1TelLH*y3{@#*vDbvFAwXMmKK`1(KHw>bqo7D8SL&M zv|UnHx|t%BS_oyp{{UBWa=B8<(frqE@Po&`Fx7OuH^Q1F=B=sgvr3j$&vJ;;$s8~T zmRYBoHANA|tuEEWF(q~Yp#4MP!{NP3&P_*M@z#goTa>fEl`QABj(fPSmrw=`;nZ*Q zG{v|orLtw7-Y^Vhq)$ljwYGWhm0AiE*N&>P9@XQ;U+l?3L!Zn$@je)z*c4 z+Zpxz=B_IdDwsMHqYNDCN}VcHslxNCPBW5qc@yU3pzS@mR;$eZ4gUbaHGVDpSJL(W z01^17#eMl#^I%n!e^8lmLe(P=;gDF zDdDNvCCydFPNhy|ChZz+$CuQ{Jg>vl@Y#R%1}?T9y$HqPD(0AMUMi(&DK#ilp(<*G zXsdgY<&)=fy0S+j@Xz+1_<``^((C>eR;z2_``Pr#G?=wpZ6RQEwvz77=*G7j#LXak zIF%)5X;vRORf9I+^S8wBh`uuMABye#MdObh>i#$JBzkR*oY$JQ{ms+c+F4rK!EFL3 znH*&zf(TTsiz2?vIAtVP&P2Tpa=s#L{FE>V}Uc$ZQ& zT?sfTN|c*}lp!l#2wA@tQ^dmogPuOFFAsvRDzu|h4=-g2)mN!jFsp`yRb6bVMxvZ! zDMd!j+mrA;l-lRn^$E2|;f`6O^TnxxE0`e#i#%&9E4-i*6`>#@8E|(kchl-t)_x$f z(QWl>#nLWyxE6bx$pbyq5nRrKd(}`PnrY*iq>#$8{{W;iI+3*Qqi^t`bm$V-N0DNI zS>49zGFn2XovF|e*!9WCu76+f>u9LSJ0r|jaAYpPk;`w~ibHkC0fz4Q=BE{zSFEv7 zh9VUy*2DV>Qk@kV^rLk*7*&MS()RL{?C)m!o%me)E~6?RRH;%CRUuMvoTWHoCgmP~ zYNab{tP_k>lx-H}70P-mxv!)RuC%NRVJN@IF^z+n>yOjyrt=`!#EGOYuL!_AqC9z37rw1Ia1& zDfcR}lEsS^I4Gk4obUnQ&J=K5KaQ;EQ+V1LZYI3vQA$ptQG$m$Z<|}TnwFa0?dkf5 zhtsd0@%Ibhr;VN$37m0mQ--Ff#_J1*#MD$O(u8jq)NkTaYC7nnvp-g&)BIIDiwfF9 zndRE5Ck3-`{{VGUd2E9CQM8l50gqj&bl)542_O7Ql1QI%a`L=R1bcC}&3J+P^$2I#To)OS|P5VgN zd^qu4t+d`1e*oH>%P8%vqO>wxcy9hrIVO0LW^$1eAZE5$#B1|OyXF3I;Z8Zvc#?); zg`-rPPHxMi3m6`UT?O*y+*>4-~hG^c@RG@o2u(d_Qd@@v>W5*xKk*+?g(x zcUX*PT6lcBb8{q{WsIQXe+%&o_G{8U9C#1IzBtvsBx!~0de zoN3gJXI?LsbmPzL{DO^oqJiZa}8U0q@Ew5!m< z#*I4Cr7S|F3iWbDPOV7MkF=>6Rc;B{rtHnVCVzoe3%1HVCQX}nHNjEg2=Rbayc@AgFTg{}Vp zhV4^d(F%BzOS{xG$%+S^^c zw=+zO7`ul+o*QYK1%=^<#F})@xDbe3m6*6yZRx*b>GW?5{6f^cQ{szfzVKd&4zmT0 zp6w;2^^Mh?^NV}2G*MhdCDgXUC-UTQB9|(~jt9L<=?lj*tp$hh(*sIsx3P?>Vyau;%d^NO~w$x z#_^R})KuiJ7)EY#c8X8bZ@w-3KN1)p#Bec$qbtL1`xup11V|l}ZO+zhoDg%I8s)Ek zGk6#rF1RKL>X?j>M*h3cIVW$+jC4DJ;=Hfo2kf2k4({&Rycyv2mITo3wHujqyS+l{ zX&vE?TbVDBm86PkEhsDPUPs9AX7bk~xaP_dW##NUz zaP+Y*mp8PHH_Jk;DO9N{lC&z*lzE$JdRc$b3&1RHUq>{h<1RlBQoPkVSQ@d(YU1hQ zC+(vgJm}GNC(kEOm03GEIbB8#pI6y@S@3L|pZh~1GTU-k?obHJdYp1`j(Om5S{7dz zydQZL%h}yqN|x+nW}aA)gz6Ns;z{B=0x}WuoUviJk+gH)9KU7_M($fi_;YQeS)D(^ zc3PIJr=*fWEzQN|y{%ftZP7%&eZ+%LK;_aX{KgC<2ur8Rel7i;zAX43MZDJa`#Vb; zI}2MYo9LSPR_fg92Tn_CcZbRdZX|tD$}t*D_<1^%*v~n~(oe*k1zbCa24(n+HYW)T zO)OR&;@uRM9-bn!Yrm{DMsyVIG~AaeQdUmOE)V)Dcpb%f3@v(IE9MwXZZ8u&Ej+Iu z47P@03Xre$cNtKG=_y84Bm1_Ll$4`sU8t|IFa9ieDkvwp7Z$TlNPNk2X(O@09#|&m zj2;h6 znbs2nlFpSJZ5+O)79P?#&#dAp)U8G|;q0cWMpWojmHCpqbZu(#uk=dr+X2Qnt`f}n z!-z8HgTd3xae3A|1Chfi!r&|7UKb6CtyWo_Cl!dQp&D_FXEiFZQi_e`9{hgNz6fO# zyntIHNg3I7YzS!f`GHJ^Fa}5?hu~!3<8)*8jqp6T3wdT^yHJ2;Tgw3qIa0BiNtBN^ zH)SYsv(5{ZBMV#G8txGdsI!$$w{@Tq4z{;mP4%7k*e7WRlnOwz^l`dEs@aG# z?WrUEm%cp8i6ynH7XnL(ZQu#4TW^`;hT7*bqX5pP3#jEns!qVfs(_`u`oBsq5^DQ= zB=|bK?&@KyDpXvozuF-+87M7M!(tP)pEV|*b@Va%8Tc*jqgIEGxoVtdohZu%md-r% zq?hj`v3#7WP?MGFB%^h7mCncF2gE-QY91o7@uc$T*6~KMLnWNjTHRUQO%%d*nrl(# zTQkT6D&&Qi3UWg1+mEb#c+qdJ;%l!9cy!ux5{PY*+vi|d78cS(4i#UGyK+Gwo<})r z`#XGplG@tpEe7IPuOhpW7F|NYi+zbM-e{Y2tNY!yb8S_~;BRI5w)vlkejj{C@V=V* zuDzh@cGgk5#^!ri{#T9eA|xjXGS)Ew@gUlwj0TZc(XZw6>~WX_5UCxNB1O)>`bE(UR9+j zMi7dpno3S}B^rxmCgWtJ?w8Hqwl~Bb8~zdh01e$+yXlsimDZ&Pmjs*Rff;4Dk)!ig zR9rB38%9Crk~#c$@kfbnwcCj_{VBfFaU`z|k(YBd?6OM?X&Mw{`Oa~Zz-C+k0SEMd z_O&gk=o$&N-UJ&vB0ERqa zd+?(BQ%ySJ%H=gpZ%UFKHr7FTZ#;K0T(p2fV=x9y=r_!;uL>RG{ddC7BZh6mv(9Pd zm9aH(8H&QvqdM@bI8Jj;oYo?@C%T(TPH~G-yqj`Xf64yR^^j?ipeP-p0*J9lfjz#)3qBJw4Fv9 zr~6H<)NG@1c8S%d->^EqL13X>#uO+cA6|GH#nb8co3AAn))ON6>uVuk@({UaF48Ds zp+OsZ1wGDvH{+g@;@^ngI@fI*;opdSORB-I>S?HJ)*3y$R*NiiCA-X*kTV;ZP0h5D z`N~Xl2U!+b1Cd^155RvFX_H1Sv|kX~2?*Wxi0=dMBdnnee9xL$IhOWFG`jg3__@eVqw7jRb&erDN;rGNp9E-asuI%)m4)}iOReO)L&e2~STEZD01bcOn*J`-^qWr)`PeX4EQEt45@wD9Nrg|*MDTM*$c+s9(HO{hZ8 zmMRPJ`}TqO=i~nXiT?l+JWYA5X;yaj_gB}UVoeeaDd&l?Wog2{^@l+40N7z7*HB`}=PP zXzzWeBoffm8|Z? zl(H(ap-DWV<0|qW-bWa~x`EpKCRH!&PWhT6VwHuaZEMp&T1|*E|1~HO5k?CHYIx=avM(N46 z)%BI4n|E(pTK2NC(Id>9=~H%Bilp>Kw{pp)wesD@3%!(g)*3i>x@VKh zZC3eJ8|L#rp>R}ilf`Cn!c&E6bW_D(^5V7 z%J^Pcw539>VTG-i-w_8%;VajjI`|58Fm&6lp+=9@m#ol5r&VuK?Ag(yph`p)iT9)o*3gB8AniWl5~#T`uU{sgM>Qp?|Z^ zr>Oi+_;2HRVvktUE%jJlEjM&?C9RF&hc_SDcQdDxa{{%@c4;!SfTgsB2#~QnMX$lV z55qdmuZaFD>XZ1p#Is%7UHD_+zKiDEUky^~+6KCNsTHmzvrD~7NfoUvqY<~4BD0o{ zas4ImM}Rz84}>%=Z^T{%y!d%#abYAj+C|lm+2FOdK%PRT*y48BrZ}DFR+Is{R%a%n zuhwz3=vRd6RCH@loLpr&MpJ~~no?fxBqtwdDvS4UYSNNX)2}DN;-i7gvij1)`x)W! zm~3tr3nSdE>fv*`lsF$Q z%qUX9W2;fh=w)){52du3;B zXLYIFOXS6G}jWOEL1+2Y|Dys*pX?!*grj3cew09ux3(lO~{^ z8^4g=>Uwp;_=eKj+s{J+UtW0;LX$^l96_UvnN)@bMgd6tcPsGz6|op>?yAi(**;NQ z3r{n{;W7BgQN(+AN0v1ts!huf)YV1oCrv`Sj9g;ZBl?VQiTSn~om?G!uY@r9&S^sv zQ!4fxFPAD`%_?KP}Iav>prrSp4 z%6Xd}B)^0!DEZzdDpaW~yMYH+{upP$R~dBikBL_YVFOFDKQI9E{{R!74hZ8O{p+9j zb^Bmxcit$_JQ=A#6U?z#r_@&6E!OW=o^_2a?NDwT;E!>T?+EcDguoz=z4cEKX}%lK zzqd6~_LgkEXmS;Vfxb`_p=L8-Ll}f)s+A<1;=i%DFTlT}_aEWv;;^#K{{XZp(~W#? z0pgcti$tB8*+=gjXZZ2YW$H0Rzsc&)>g>ESaT8{lk29eH5zSjcc*QBoMj zr5VLibYVVuB|UAfx6vOGzw9O8gaEgTHR(Y(3oV>#0mgS`3)Pcw900_w7?KG9hY#3C z!v-Su-ZRxFTo7^4?5Ui z?Z-xydboK?j(v}IuR*BPr_VaIVI>y#g0!@8lS)_dvtOjgiCjO9mS36hkB6%esL`y{ z_(um1-PcM~+JdgzbBdMp_bk-8TS@+Nzw9Za1up(L)m2o0&UDxjRGxvG?MeoDARfTt zz8(1A@Q=Yh6Zos4{3o*U9ruYf-Ahlq)-^d}iEYke|P*#BpL>RtZRCKVFs6{T;4fsDlBluS>$dG_Cv5D5%U%}VUB+TJTa;2zY_dU z@i*fw!s>r-@tly__-tCplig|l7JYA1m|I& zcNy{a2P(|C7sLA8KbK|roXf(;EOfm>OPJQu!e{AI5 zGCZ%0xN{Gaa9;ypXO?Ez49Vs{*tm+a!&91_N^cJ;nS!NL6+(358gX!}lbe#|lvg*% z-wOOo7l=GTCI0}1b!$5tpAB5uYKwWR33T}4nY9?~;kkp&ktCU;xO97IrKI<|THHk=*xYG}5VJQ{R-21KZ*wh-n;B(_M44H< z?=X)hvHgg(ooB;-67kzzUFkY??un&cJQ{Jjx?MnBMPWVU7gw?~6_FC^NiEXmH;yS4 zc9oACKC<|G;0vt>P0;)^15I-ktTxaewHVewm_b}+;X>=T75k)t-Zr&dwx&KbBRUeVij!D;OruW`Q`x9fs^b~T z8foQvf5FdSoI>dmILh!WAkG0(Vj^IT~3?ko=H$D z6ev|n{=M7$16?D+c6!E~WxSp{80K__)r!1^*?hnX&m#tK&9y=?Rv|}HYvfN7_(xZh zT)2vTD*n;sapen(InX;CoDxt4Je&@=0lU}ic~8){==YxDv6S$6#~I=9^r%(A;=QjC z&z`*>Yt35^RaT`L)Wc48oT)VF%4yG)x6FQV#GkZ(=?TH~avV(f1H(Ax@~>Agp;Cto zQ*^NPv9X;x`0OjAUaO&q#Ku)=)|@9!tw_pImXmzn9cZ5oJ}l^-3DkTIrg+c6*4jp- z&Tlr_YVuDyOBAt79JAbbcYH9&vXIXVaJXQhWn7hRyG_%-XgxPfv(l`7AoxhdrfGBO zx^susjP|zIA{$AgwvqHx<&=un-^(RQgUVS`YdntMrhg27WIbPB`!=KE+l!qeOP)BS zju>sc>xos$lCqO`0f;JxQl%V{RE%vZcfK|L%HAFDW`KNG;eAed?5t#1E_CbZc1Z&W z!#t6)y9N@td5W=8yNZCo0(=Pl5k8B!Jl_k$*bXD(iWTcm>eOBXHHXwAIkhjVQ?2zX zl;Y}23UZ8n$0~P}qa?46WBWnAlGQRiR}<&H5%^V80I^Fk$GpdfD#sl>RcJ>J@pHmU z9bXX{%A1WT%2gd+R~X8lE!zCnOYhn`$*ksw#XbOe^yqFZ>~3D>^vM+WV)yO3gDu92 zt#bDRRlYJb;&^=7o#NRdt5%hdh`(r^HseZ~4S(Uq%II2SX}VMwJKi`}?(V|w?q>6J zSMy%vSU@FNywhsShy*8geHQOd^7n1FU?W!`mn@DzA9af3jC{lsjof#t$)~g1+RkCv zE@Cq59Z)F)ZtP*Rkbdg&G21ozD*6X_OH!XI;=d4ml}>7WlFu-6QcY5Fi;KXuHEI;E zqfgn>i`EfK^Ln4O$BpW#DfmO+{b{JwjFZW+kbKR{+EZ#6&T4$psZ}_}(w99(l)a;G z$n~!je$ls&swqDUQhiOVMb*?d6U1FCth5^;2H5nJN#dEjH>R^)5YnVp=!+;xC0FO? z@i*-!cW2^=uC9I_-%H}VJ8KL5*XwYvrrBCvTP~i9HG*44&MzcnoCUc&ktXCuPj{0@ z-q`~j00uHoC+X|&pVFWj8mvgE5F1@sFdab!F^uucXRjxYO zb-02dB&p`ZJKUCXMBa2Iwm^!QelL&qi1A*Jr$^#TEfZI?(5`Q9Ev_fl?c)u3s!4fq zaW(5C2uZoPx|__257@*Ria3@qPXz!8uJD}n)XxIW>f_)6`x`-85dD|DbBbI0fu?vuDQ@hvT|Pj3LugDIW|gT)fA(C=sLv$#7k8WG^99)#3>H@M;#Bir ziMsd2{{V??c`m(cqItTIu#RVk#M(<+PcENfrP@5U_NMGA?zqySxrv%HFlCNKaGqEn zMe9EeFZB&#OKm$%FvW1{1g*2kP-Whycq1s-P_49QBY;U2^_Rl$*lS<$WsBZw8rFwu ze6ZG#i>>nRF~-}OBi=#zit@p}PrHB(Ys7y*zYVf{vJ~?_6?mHkluj-y4_3Yv&HG5k zoT8~==uTeBbmIs~awOCedPQ61_(S%M@dx&uJky7MkA5FK&ka_jRctL>;&r1pC{%Wx zO6pN|lw`SOZ+W}(PIvsE_$MF4{{VyDFMk#3dKQVSUda$hqq^}fjRY{OUf9lV50`oo zj8AJH$m(KXSh}2Iy;s2>6uu|;GUr#+Kj8uJ<;~W)tzPRl^2_2)EgDwTE^clnjs=5v zl<~=TJYdAi8#!VC3csbl6+dLC{uXEna$?i9t6^;HjTBy7%P0)Mk|v$DZAba@fJ%+0 zIUk-rBt9R}ub{KkZtOI9ZWuM4tkR+xm=Hv9nHex-knIPY76%x{Jnj?ypPn4n%Vmw> ze-rqL<#5GQuQ|LH0;LFIXu@=odLcc$ivvA$LHj>uPHHb>lLZUP;=Q2kuU??oc zEdKzj?yMN^7}=6VdsM!G963i3T9rQ*^XRBAuVO3I!sLlU7^>BrtIoYhsB2dfiFTa% zlq*znwK|h>`RpI<9Lg(BRbljK;mWv*({y1%o`1xYu~Vs2nwQn^)FT>_a^{<*7}BXI zxhUPm#wt77H|+=U62ivEPah2Jt|zpURn#Mud`o9C!#<^JtidcJa6rM%s~HizY?1kF z(FH2iz5 z+x`=Yw4WR5(p_43k`%b`oXWgqocC zmEZQqgeAP1+CR73i6OAQTX}xbVjfkT&9`|ouH4Fsk0PjKeS~^_rinaGmeY7+RcN3f zY>q1?fNjY6qg(rk)F~OkR2cxUVt}XU$L#Z=_(#SXr;W6G+wl00PtwiBwZq&+ZZ7V0 zS!5|PT@(_lS}+j_vdt#a@tDe=Q~1a5Z@?Nhmv8?72*t$XTy};Of-OPiH!mqwR{3W* z-a#^gq{oqx*%Mr*-&20t*NgyNdmA7eaaT+L9V zuyu0EmGNpAd?fvrB5{k9U0BOlQjEVfd^>GnrUwh*-w;BQIhIV@LhCb-&Ahm{GD;cF z!dO~X zdfvk>!{t<+YLdg$RBI{1wk0*}F?-dDd@7EXH_OoMjP>I!>*6 z{7E>_!_lb-*P|yonKF!JI8;(mO|+VAYJPoKd_{i;X~}mUljDs7+E-gaaW;pnSjQ>d zEXxB=xS5k-Sck$0`OJv%C z3c2HJeB5*TTkwnFH^WZ`_zus*7vB$H)Fz(C%-1zL+bC{zTg&N^Ip!^SIGXAx;ki~= z(hG>tFK;L`Ez`x`3F0_^4@VPIi?DgVFB0ir34qF|QrP!++07lgSd=v3o;17qqM-_$7hc!!GCN(MN zL1NOFR^AaU%&d|5pu0JRVF+0UBxwr}fg3E3!2H)Tser`8i)dvut4T#v#$n=`J zY8aaCR!QBowQA1$aq&lsToael#bN32M-$`f&`@;iVK}QPbEjIQXF9xzWcVq;KW3b# z6*Syc+;ryu06xEq-Wk+9A>!RnPM>mbM}8w)coX)G_?M$;@!V_aW8$9_Xp47sF|uH~ zR=;&_vY5Q9(=vsD0Ef*?CKO4<%g|?r1i=@LLbP_`3iJ5}o8MekFBN$VY z%bX4?!Q-9@#PEiHi^*%_aQUQg*jjk1nXVq1p$tUk;_4-blU1nQxlfjHx?bvUL*saN zh^TQ!S5G*=P{v>=W;2ycJ{K2>_VuMkRU)9O;u3@^*NmK1N!l)>QmJJYeH?*yVGiVo zpSo0qCn|S0PEjF$_)AhL(~ zS@yO%;jnrQJv&kJN0D;DW<#}@k&*&}TW$dAPaBCndRNBNglS>pSv%3G@5Xz!w2#8C zC9GbKEABnH)8w3?h?9*-H5RVtrIXT8QcYR(dV1)8tp~&%Qp-cK{>sxT?ma85dti3(S(d2-MhvH)*${jd{NTw?tELSUe9LtcJDhiw8jHBmd`UuzCp2_ z&_^p5Pzy9n@eoO5Kc*fv)^0VuTIp@}7($fJ95GCck($aCK6|T9s_>HJ( zkv@Upy$Ic3LwRj!HLQBHCRw6&6DuoCG|ciTg&stG%*9=fe(U|JE$;QN4BYs0!_X{x zpt66kw6ds(JkmzfME+X_j7b=g3#J(v!<-cr^sSGF^nZl@35pFi-|Y7iq?fly;wD?0 ziDFPh-b_$P(ZpD^NF7LKV$AArJ~h{TL2<2kgzlN1SCNEdNMZ5!qLD|jFsuPPEnj{HOo1=j(+T?8`>I13E1kzU}#Xvsc^OmtxA+}wQ(5i z$`Oz_az#^wWU59MzdyYxO78yv&G*GG_$U7W?Gyh13ErXOZ--t1)b;IG zQMuhEmW!xqb6J^gF0Gp4K^^7TxRO{Ri_Y_A0zBgCpS736{{WBQ2|ga^I)}yo z0ESxMhOK75gxlO|a9YmON|w5YBTI`*o4>QmwPa=UUN$I_V~YO4ygj58)NJKgViN}0 z=Y#@mZQZxb032>&K+ZD9-oHKn0N}9x2G=}y@JGSg2ZrpUyuE)KT2D2zS&NZ1jCwbT zW0KvZMv7=7mf~w=6Ui&al9<)ei>V!%h7Iu*Nn&#Aux+=p7`H zkKMnquk8V#TIt%afOS11OVu@h6q)9`xsU9Y%x*5@v9*fc_U_?QDJ`S8Umz>a&k9W^ zl%ZshpUGsO0=Si@yyWG-xUIg;W_StNy4)(eMx!i*-kMZG0eRiXeG z$~iuj@aMx`6w|MKH>g-x-CNyjm%4mblg%Zw*xycMxWB%-+9y<7IO94bfo=rN=KY|n zg&`C9-y+PhJU5u&F`0HEcqrhppW6P$b6;1?AqYx!J+f(Y$zj~w5}t7oUjs6%z-S_}KZdZ{zrnHU9_#~M6gWrcRD%U_(j zcZ>cscyr@Ad_U6Xz3~=}uK2FzO*+Rxg335fiKWZ0t>)NJM{PVd)>?J_+)!jiA+fYo zR#53T-`^U1O|SU*{59au0{k)YbkKM%%-i^*Rn)v4q+70~tLUq&+-r=tLPeP@?e1%!egoDd}o&ZX0|FcCtCr8z*EE0n)Xt_O0*}1 zQgd;WsY}H2;q1~}QH!mDh7%R-D&lb%YWP^%qW7DnI6+=*CZ9F*(LGO`@jK}6 z#9Vj9`E3pf!^1Jg;&2#w!wHAP#-uS3s~%;Cr(RH#c&xvbQpH`kN!47679styVAV9Q z+3VswngmzRtm+;c)wI1NS=-!6C)=m7p5`f3TE@(#G_#N-RA0ugtH89tXG4 zbPE<1a7AyWX%@O(k7+%@hGxB3-eYw+%A|3{aR#6Em?SCoi^whK3he?qewX-v;~ZWo zd(RAb-M-4u>H4y24A9#}X?pDv*jkBDylfU}F4#xqGB6JyVloYUFF%8|?Po)mSn$MX zz8A2X((ZfP%ZzTZxAL!}TWFD$<(RB-r1E)=trJMWNde38Kg2wT#7-CC?As&Fs8-8z z?Bg(nNXl?ku`{WHUeDP@^IkIeUoz%z;c+?qEbzOFJSyUDE#clG%O?!WGRkl>ii?X_ zYBX_b7?)ORH*SwCxw%@8y6%svz6IL&H^W{Gu<=&8sajrN!*PES>sP`#qJggbL*jWM zhQ=F&acyX#@))Bsc{~;j79<3Ff5l7Ww)kD+ZC2Z9DdC%|i+ONkC0aOUSKM~IWWvGn z+ejyA!(~t8uD9a<00vroF!*Jr-|BaFH=2I4Wq8_Ryz$xIkuGC8mBdXNEHV;V{P6La zH!`Xd$Jjp?KWLo?RQOx2ct^v!ZlS8)Ykmv8hHK$#HLjOu40d{KO>qU)>siTu0g+b` zK^ZLJfdLpd;<;vhmtpXg@HH_MzOg(GX)2Yj{jL@coh1aR=%vi1IJ+pd%Wc{H4S>qA zb@QyV6+AsyVX5Xhb{`E+l1iQ`Q>TcXdAg4Ll7y&Ie1u zLrJ;uMwhK>66yM8p`^$5h+a>y-L3jVaNc(yO(mnGagws4S}Qbb6Wg=@01e&@z0>Wr z8w;VUO=WU#B9hKoqfpj5i`;_ODvDj%BD&0xDV_H~v8xP|U(^2p>__6uPZHbcmp&KO zZahz}t)8Ew_^VjfE?Ms*dwYo{wz#w25r|7oUQab*+ZveQ!T?IQ!gy`sPI1F^C&73; z%1ejys9y@H}E8#IRrrVSEVNOlnX*2o@@XdreMXkMt=vgBSxH3fH z$|2m$0btGYZensv0(doVThqJ~t4tx*^xYO~pbXpI8)Ufyz*^#Nb*EXR>~2;m5hBzEpqE5R zG_k~y2nlGP^DA2Yr#?G;eE9vV=$cQ(Zxh?-9x}Z)_xk3SE!LT*=pGJ^{?uxbS~ZNY z%K#RZw^GM&9o$bN6S^QGA8*BZwp+rv*VOU(mO5FLY`TtRPC0%ax>BWxsaA|*QxK-3 z3Axamr%lC5DaE$Al3HXO8%vJ(e+k6YaM)So?>EI{Q>BTP0$9uyTm&doo+02?BCaLj zd27ZnsG#G|3XxL0T3@=qwb$*L@nciI@dv^W*=o|p$?e)*C&fP&bz8YDth9N)$vBr! z@TIC-MzY=f$+J?1;KC$~m>Kz!KY(>F7<_%7;r@f*%|pk!uZVTcD_FAE?q2s?)ee!W z$qu7uD>kh=hii+Ac_)z!b2O2>sVgaDlXG$Rej)gJbXa^bqsTePyHN?@K;R#MxSF9--hwIc3Z@`Zh0T8W?0N-O0iRP zm1-3zM-NhzTfEf;^Eba#2?R1{wT)_(S_Ed}sZpd>^U&Le%~sX>e*fd(CgB>942X=vTM4 zejbt(@^1ATaEOU1zX0xq;$%{yG&_s?x53ZbhvF~nz2Y5Tz}_!QUlVv=!}eNzj+3WY zPZaigew(Iwnr*e*Qrbo5n6A95nXV_ec-@jXb*l2*JT6erFcn$L9Y4Mg9unjP4ck>`ohob1czf zF?fC*{?M;Njxwxf>L*JVin76~lvFB4ool4#+MH?GFV+eF0A!C6#cMp#-05=56e4jK znHpi4inJ_VMGgQ^*;XKyJn(D5Z$2JfY4Xbj&9=$n12L9@LA;O@ZjMHemS8i#10<3$ zn%&TU;G`c2d|#kgYd$R0?mQu>>Q|3qbbU4}{Y*lsE~FA!*L@w*7Tv`Ek5E6LdxxJW)mkHR$*-_sa8@!!^xA91`rO1KdJC%jW0N(&xp^k z7}s5|Wru=vF;pC1y&94Bj>=7|UMZx$ChnKwd~@`C#qi!Po*xa9=XhFitxpM!#bYW{ z#89aU)u>JtFq4d`bHO?iwN=X*#pt%>{8^vl)ZYlSpNK7_==S=>^`DOXV4~JRJ)DmK z@m9aKB)AsWvB)i8xRP6F-rhBdrg-C4c76TV!Y_@QhwT^e`Mh6up$`e#!K`0tvRj== zW@Natw$kRfX#;(q$%tHCnBsA53{Dlb_z{_@4d94i0((Xd93~e3)y0^z<9xc|$v+UCoi-k9k(c=vA7^uZv#S z6Ny)Zr9u#DHKhiUn~jrqmtVc{L&N%fN11T3X#{*T(8Av`@3#K_gtpDy)8JY(`v^ z^3b}o0Dx^^a8#c~@W#30PYzuy+J32h5`_g`E9vdRoL~ULXvaW05#PAu@aFsDU&lY$ zJKHN2}?u+gMv#Sy-E^XMZAR(_oEDGq8^GDOIH>7|N=O_PCfOg{vvyD)U{-5r?eOjCoP@ABlb=_~%@<5Ndk8 z?x$oTmKTdqnpTH!AsJC_WFk@v?Fkrg#fbpzHT>)U0Kq^$BMZNYT2__ejaJfKLqwL_ z?J?TNEKpd>F^y6Sg;?W;Ta$GR$`U4$NSJMuAtJp?{t6TOY-+l9#i=|K@QcPV$Dnv3 z*-oXXX%a~!H#)c4ZqjnM5J=W<3VAU!NFAlz7_pH-+3+{)!Qs7M_Okf*;lB;pUfSO3 z7h0wFiM1V1UXZnv6KQg4I_=ff>@lgEP}w9m*I#8u#E7xLsCnJ+zA|{V!(0o(IoAzf zaFL#EnPnJSvxZ#=(ZXOpyLyypSF28x<2+=!RHaTTilmg|Qf^Kx`kw_nJr;4dkrA%dKgp?sxPIAN2i=@<=YFx_vua{=N&GbhXj#FIF0b?Y->Ue}`^uG=puqZET`lLt54#H#Zj%PZT;rJcVW!t0(Sm zhx;LXF48Q;uf%T_c=zH1>KFE~9ScHb@V|#7zqGcu@XepvEuyq*tGI2g{38SfrnpF% zZG%R*l1l6RY4E?{w}gHPYknc{*TQWd!87Q-DAe@L9_9-LeNz6*NPS+xCi_x}XOi0R zTSX96!xHsVhY_$s9wepkc!ellDwMvf*Jx;cG3E;Ad6`sAxtsffnaQl26( zsm~Y72ud8TFp`W?J|NP*5$azL{4uEb+g`Vi#hx^^vHLhOq?Zs{O0Zl;@L9(om6eiK ziDtTtfpIQeNhC-ddAG&yhSPjT_*tqqhjg2d3hUk%4}GNGKw2xACS5)^pJF6NXyt}W zebLIOkC;J;+bg^1UkZNE9w9#ud`sf*68IdH(PO>3w$m0lt#5T3XlA~KBFTFsqCq3s z7A}h#vl#-AKnd3BUm1KWZ)c_(%>w!>{{R-;wUS!fMGWG`=XkVrl0{D~fu3m4jf{3k z!#M!g)bQpP2gA4=Ei620Q=KaKxMJ(499OrmdS23MEut}`tyt$E}nm}B{B-SWiv2r<`129NTqB$0 zbbYmKc43<4nT-t2QK?qCjyiRHgjAxZFKY-@QGV-D)!AC>z~f#X!*NfD*$#h=g*th5 zQN!FffUA%;Yy5ZMs*b_HqxC)`|_zZKktL#ukAIa{6g@ilc`N4 zejc>AuovRM#XDR@XB-Ixa9hBLvT!Aj%Rrk%s;tR`VPBb_v@iS=7xshEyiKjz_zT0@ zevhG9HPybGsd$!YFK%xlh297+p4v!lt?gD*2~>k)c}*L;OZ(g}wu`^rb>d`rQZ-X>X&cM7;_m^?Nnz9tz( z8n~I%#?qZv?5WPBIt!K&r^^V^RU3+il^k4SADp~@@&5q!m+|JObEs?o01Y-n`HLXBDDogUibhei1^I{@tHrgS0qSuj;kD9i?_`rtw~4LROH4Em_KBuv^8`F9 z%O>5AxHyR6fRlQsgEiSLx7Yp?IptUw|s>H#WAhHkoLG-s$a{ z8SPo)NZn(*W>%17CIH+`do?w`Nc@&U)(aX0uItxU}3$N zO8u`s82ExUn^4jGQ{lqOtf{DIvdk1R?!h+fGE0;ad2|?6Xc7GmABp8_--bie}k)nmkCE1PcDWEuh!|)r#Vts$>OSe zPJe0bW~oMt=X|T3O71eZELYneB>2(d{eEl9iLY+1ArlskdE}Yo*?<%xZ!#PLaH_k2 zJg6A13sd;D<83=b)+B=cBek~DHAgpatoHICj>36WV{ej01<`QHz&IlZX+IHu(BHNH z0K?A${3+ITPX=pt`k#vKQDM?F*0;V%;@7T7b){+ZS?U%y78-rD5yvgD3md(~(qO(-_PWRAl1OC(VF&DU-ZbET6w7c} ziu7<2qdL)4Y0z?=N9^Sbr_DB^tvKx!eS06CW%*whW*Cghio{lyHwOsUl2y!bK5 zWGp9jP1`~9K@7y_HSw0Urg(b6-_QFEtH&ak;j;u?yx^UPs*#yuB=A{4P=5OkGxX1l zG=qoWzD*?cR!#wGbP02{5h57n97osTr#4nD72$XlAILfLrpp4n`%yLS7ff5 z+3;qkB$_pX&2G@hme8ufE+lt^+bXG7*37-Sp_oM)wO+h!YyVDjQ#K4Pi0gMv$K+CqVmfCBI`2Wm^z5)m25U7@l%=O@=A z9C}ygRO-SCQIl>iZcvW#QGB-Z-v0nEL+o*rjdbZjzhte+S5IvvWvu0HS1YSsL2cCk z08yKLE$_8CB2Xm;U{s-EyMR>%j?h3EIs7Z>ZwGj8-^11s>UxBcM>2x2Y-c+Z%Iw}} zn2EOso;P3|`eP@-UI&Ltw{34&Ed(lz&XWg?@(Q?-mO_P4DithtjFs+d&weWWSG9)H zOC34CaLBR7>E#e)G8mb+VCQNa_2@U_lGXd>Do+rng{Idml67i7;kr?jTa09``JB00 zPAN2{t?ZxN!nF(*6Ag-~N;AhzsnWw#{v{X6*F4g^Q%l{_Qqos4J}~@HOW3aT>vxf% zj!z_vM0XXy%59Y7b?bt9kSoOe7ryT1;`T*w6tIMlI8qsYVVq}S#|5%aaBIxw)Stwf zv9`B&XKRHyR`UyQZ=HYy5u{EJe7nLk3qSNU8oGG^SZ(HAcb-$k^Ys(ErSh}iD7m8IjNv>xn8fmuEwYgS_ z>C?ZU_CjEU!-3uSW; zhrCO6@Chf9H4Q9Q(rgj$kdQt=o83O;@a3waD25}pR3<})ea(gHNn*JG90EN^&3LnY?!r$1HM2tt{ul9yzv#Fl9N~u}v(bL$+K;yE{YU*TPcv__$Dx zm2ntsWeRhZ)i`s}=bNb2+D%i^(UWgWTIYep_10Cw_?*GVpV+!}y^~A$wQ&?-&en?Y zyK4Pg^FNl)kNW)HGrH8Z`wt9FVW69>Rgagx<{e7z<684lbh>OT^5zL7nGvxYx0Ml> z735kkh_#(;_+rOK({3id(QV{yI?~?GX)b4;NaaS3ITahqbTLNlo*4ril8UF&EPgC% zR-PBvd>gLn@oE}IlXWub7U30F?J`TMi5(>&SSu8bn8_o+tPI6Q=XULW7x+I-usUap zrd$0o!R>Vhv%l3Ac%YtZJFPfgT-!e65?iZkHt`8<*`h5nqjMn7^EVLD!`6iiTqNOA zmLm~`_HwnB9+H(fPCTvO+a#k__V;BblWNcCa!jugEMr(&%6Lpg3OU7GVw|Cf!`67J zQk@B?!cmO@-Qd3q^a8B#&-`NEGN>3VEd_}wP=Zy6)6FJw@L$lL#nBcUuNAPaF zr!~dyv8nks*3eHDy>60ABvQP{@$f^m zX?j((P>nlKpToBLBTsR09DaMt6_Q8{w+?o*JVHjmZ=ZZA`zhM^Z^afL6+R%|TFawr zkE>ljgA&_RQ+cV~Y8Qgm_UYmKEOJJc%K!|%7z`(#$xA)!(t`vJmsmb!x7V}d)gxg=r%a0>kO;twA9pW(m4>z!WSJxDE3Iheg#bZ#2tMK8KS`HEGWgQaG$ODs#c%=Llgjbg+~5H77z2GL%(+ zVJ8^Rz_mY(-XQq2)|Z|a(crbdH#fGE=z2w_*^^3&&e~gfuPg_!avvN8w+A`t*J)Sv)iG6UDmps|(4jzL{&I=ut_a-dL=E+OWlO zD%!;st8aAk`I6kN(SkV&tDyX{_*dbLC&Qn$7PH~Y&lKu<-0qLo}Lz;xlW{EKWj}? z!_CGL#5HKFRTq=kZz(7aMVmhSPV&tDe*0BYNxjJ__hvGBiwHO~$BWcXWL zvU{uIu$^B|zr4_9j(bS$7P4J` zXloY3Qx+Cd-IkK;#Iia-lf@^N?JR0bTZDf!I)k{%8^wHe;Cp>Hz;^na_R?FA4frK3 zi@edmsBHW>YdoZdC=Z!^aV)qWyd@eXA~e`O_KsmsH_JGNcuXZcBgSEC;iF!Bm21Wh zoeGkbC031Cr0Q(rB;A)cL&xFVjpbSY00B=m##F^i501(+8N!QHaI=mtIeBe@c-VM07TfIk8)Aaal^*e~x5p{ia1-vbDBM}nW ziKGVZNv4G(kIW^4se1h&{gHoZ?-YK?KN5UJr1-N@(Y!^a-N9;?ka&9eZtNcFeGW_c z(#GNEiDH)2YIZjBhw@`5P3aw0bE#J>tB%g7)1?JpGRQaJP&Ws6F@ca7QQRB5CyxeH*jl?6}%o7&ACm2aP@g_}fPC?w_If zJHy(17gqW#c6yGl4yirUUQI05?=+1y>5-#jZFaCfld(f4Gv+DB=-7;AVVq*=)yLLY zoLZ$$6){tsq^c-4XE{nLN=Yw;MWtlG9O%<*OLe-H zuASsy9fN}9o7v6ylKE~Xm(?j$btyV=gMQJ;$t09jH8&R0-dwS=e)a61XANZddFMDh zY$uCTrz)?P+A0nXr76KqdbLstQc85wZMSr^XY_yn00jP*#U2m%da!uz&rH>{$uGQY znu&Y%mF8J5{67VqtWn&cU8@+J4fpM^d-{jGdY7mIu~H^Yw% z#iZ!4q*nH^PyMtY@dl*~wiggP>QS}4Hi(wxBbwdzaO z;VoNLiXVef>sLW8BDK~``lz{Pu$JUn`SCrljsrdGi_4MbE37XlXJ}9@eifM2&Ttui zYm~z)td?luQk<}@R-;O+=tWa?aPyrgR+MDo`K37fH)z_?yZw&|M<>PRd_SM8(u{F= zeOkCWlw4|3sHKI=@t9?bZgZ6=)u!=vJ%r_llw_j^IO}3>kDmuV6h)wXZnDw!-9JyT z_;qJ_Hjm+pGaiw8TJAQwkX>q*cLAH-W8>cu z+G)4?y{*NUg|xffW=XX8?q-_lZKWv!B##Whi3Dt7%z`;%Whw{Rcx6j9;oRd5kInFs z#b9#$9x7@-xrIkgylBdtY0-66D9#e4KWP_LB%C>AE80I7#F*Ea;ILV47Z+Z&Y-`D+ z@iloT8hDHzHycj09H~)+l&i-VNzq)h=2Yr)I%!9r_d8Sg=kU@GhF=zbA19A=doLGj z^88Z%%(4z=xwd81wU+x_?;5?VB?&Xelg^%CQpai?)%@aWzqJpJ{vG^N)$Cx^X4MkH zc9O$YmfOy^iSFW#<}(YsM+86#V~*=%xbtD!rPTwpGwMGU;G4uYnjeF{B41hREveew zT)|^<_Sa`o(deJ1Ar08hDw<-W$q^QG15#H(~#Ai)q? z%Iv|INF~A;_LgDbJ{9<>cj2u*??koKuO%`9@=p_hlHNqAvi zVV&iWmL85H7bsB9J)Idwg(=jbM!Qa>B{fy3)q<4ccIKrUdzX3ME%9~jq}Ma5w2;o; zZQaeapjhVEq|0?InZWxxf+YhxLlQSI2;Zb%@J49$KM{V}-W_Xs)wKA$JFm%blN`VW z?uo0~$Gpa~e(B$Em^aS3W!P90uRO8%JL7F9;lGDg^T92u+?`fwuWg%3STx7duf(@A z`I?>53;7hKxVI5`XsjnJva3d_-&B6f(CR<3f5k5z{BYB}DRFgq;%^V@*WMoRrIwvE z5or%|Cby~S_Lh-(Yv)_r+UhnDU6&3-Nj&c$A*CF7&)2cJH0VyGFIO;A8NsicKWv1vviNi1 z_)$dA-1x%brUVVRkHdZ-kQP-twuwS0*o*_R@Dn9|9{3CY00mU|aj$q^LcaKi1;2;2 zbLQ#Sx@+n-(OkuUr};47l!8{bQv%%FEEezPu$2-wELu&^=wGy##UBs+T~CMa;ExlK z#=~3IrSPP)SVq!|t6L!z_0y|Kdj-Xno~1p%*_L4oiv&DZRj`zE3UJHi zPXk(wMTw&rSyQ6mlwBuLb4I#yQurJkWShE2&GByz=a_sfu_~w5uv3;>S{RHyYFOMf zs8+<&tr*r+B~q;wI#Z0KtJ0*Pr2V6cO|KA}#vTs8@W!oue`wL@k=$;h?sEs6 z9L1ZG3pd%{Xm(MLEbday6O8dR{{Rp5L8i6T2p>`xk7MQlOTEnTB=;$?-w_GSL0z_; ztU&>=r{PbH{{XaAx9ss@ulP^LkS~f}`L!KF&c{cNMrb426`;MHd5D=c5g}%E8&Kl_ zHGDtfU-&7Gsp3sS#xDVUCcM?IG`Z%pv5wwb``LVkxrX4$G!~ZGk0ulg8-o)U8A97i z_qU6sPHz#0tA*sAB5JLFW~o)72NzCs=NZpQ#_fAWPWSJ2xp26OS&e8sx)gD>XFLW9 zH1gLJl0a=T42VSyVt zJ5>Jw4tj!mpW16(*F0bGXT@G2)}viBQq;9LZZ5QTw~F3dDX(pE zQi4U1T_pLp3ij{WZ}wa8=ftRWUlMrNWGbNqZ_&icscqm6UID_J3RWUE;~U8+c)S zEduLaW}|EN-B(V%PqSZJTHL$OePwnehwT=!nE?~VLQalKmWhL(LjABl7kolr*>^*2 zKS{NcTZc=Qejql|5|S4JF>?~gN@NoI0}K|(zwpn-h;KD$ zFEqV*-tSHDO}a-3zma5Vf8igsYX~>UH+kmPZ$Erl9&S}-%L@IdgZ8iZ1>)U5#yV$& zv~K`-N5wj~jP(6CPVof3GLrU5?X9A}xYb%adxV!vhSteEz?Snuk2H@Ij^M($^gC}J z{59~L+P926Tk$jD2EXC!-B-hn;jI@_@m7~(buN{szJ_(XyNLA0n(A*V9Y0!oSdGL< zJlC;6B#G7m2d#|b9G;dMSD{7Mr%6+xg`Lbe{Hm9NPvu)0mTq^$hB zKMG@N*22_{Z)JnTVqspkI~OTD1S!*my`?x-<#tksHKd^D%&o|x- z;GH|e(cZ&umryGGvgML#7SUvoJklVLE0-~V0bp^Qe9iv=1sVOPei;0C`11C@47@$y zeFMYMh%~6RUkN?-x8e;#@*9iG>+6+hq?#v!QE>uWl@fiNLpWb3?+rh|JwsOi0E8n{ zk4D!Y#pce$iF8=6wFvL@i$CnR%$Ik_-?}m)+(7c%f&@~@6l^v~k-zC!-x6?HHVY-g z(ZN=)io{_kR;fmFj4Q^2l8l`-g;J)fLs%yrT-Eh$pOWBsUlX58h;cDer-H%eS-f!7 zXjFA+y0V2z6n(wYsTvZZsm`rc2~(v8+m)5iiT*x#$5gu3TSS)n-K5hcxoKmTW%H2| z;(4|R<1#T|vadJ^xUda?82o$U9a~wpvADKPkz4H~`LZGd@-W&7$S0CO_9r71_Q&mS z;qL%=XIRtkd^+AB)pgxs-g}*J-{_y&Hr7(lB=IeszNGAv&dU@q%NdT{fc@Y?&py4B{ZtC9>dil1Gum{6|lT>)>(t zYO<+^t4dVi8N0d_DXJ>0D#~q2EjE|Dl6HKzcRY-lnXH)O7JxDa{HPJ3NQpq7U|&Y1*T6U?3}kazQ7YU~$xr zl}cF>A{TIxh~2g}QgMLs;6On-sah+(;_+;Xwr6p*j-+lUDYiYPtnx_>f z88qd}xmDfOp0{gFPxYPnoAJs|?A6jNoWdkgxJXh@aj8rh|>bOR&CcXHzQ<+;>sY{*R zww{f*XY>15VXD`z>er~JD8rF9x*!HP9`9LBHZvLbF}3cz7iBhJtP0000O7##(7U?TANZfQbL zoRs<0)8>?0ZCy(5-iuagCeuvkuU@50ejXmuHE7dH9Fb9Kbz6g{B;y;tR?=}&vue^# z=hE6vs<6cyq{;$~rAfgj0PY8%;DL>&rgC}@$^QWOEWe2w=k{OG4YYyZPxy?tZ5fm* z&mF&le0?KFA@ZccI|WiUoMbR31UKmRoijD6m3c5uNBY71E6xrp#6M_H*>!(upNEg& zTg#~Q{{S;siuNnX?S=GKlZ`)Av5}tHZms;qk_}2#kZ*L560aL>1$}I%9fqZk!%q;o zX*pD;=X*Fxt{Su>Chw&_W|ZXZ7`Gi&(Zj{K3~q6eW3uWoZgpWwN)n?t8Ag^T4=F}2 zoKxrJ_oEBmNj_U7e;fW5_;=yIh%jGk8rO|9e+TMO>o)fmIy{T% z!bs8dLYEFD!Sf*|HQEDzLOvV+0D?g2UKH@=x1nmE7=`ASd!=8)Yo*zE2S(G<4NB_T z;~ItDu`R{UsdTX3PbB6P5wVPzRmKC?#r`4x0D>;~cTGl~PmI?ZuBvaY=DEAQ@Z?6* z`#q$Mt!%BVW7H##BLeyAX4+a(>R)M4TlwmIEuU4ySF2irg*r8>DiHnNE85bOxnm^= zRiPNUQ)&M4qMUDc%_YkI-o7g@%kcOtCSN+f&liHj!yj7=u?oF9_)J9z%9UDmsQZb| zpR`h^QXKGH(Ujud{$%(c`&8ZdC&qpn@MX7+{2SseCt206H2p&A%Ewq~ZLBQxd;8c# zB3U_psXfT@V3tDd6xV8B z=L$T@yrqzYk&5oGeE1}{e+o3HJTag`CbzJ%zM1YX?xnaFHx{u%-ebliMGZRajmFLd ze>0JQzYWBm9oEHCmOlfMRi}!J_Ej*|Pq^JfgW9SG#BKybIz^ z4=QvuDz5B85Di9^w~S zRe^@mG(qyYz)j2n&M-j)V~Y7#<6XwT;jM1p#1_{&m92!*TKUQ%D1jh`-X@HyvqnUM zCMV^_817PYTt|uj0BrvN75H85#n*;(Yk?Hbs~b&v`%GcC9E4$oASnRg?#Rdo9u4D< z+ooR>=vNk6=YcHeXGxYAVYw+3EK$*9jiy2)Z@VFIp_R)p40%2tMZ);ZuQR7t8cO@Cr^kpzZs7j{5jP=#eVHOT&AGXG*jGNiJ_Cs26)~icDZb!59N|onXtse z;IG>o{t%5+CY52R?6|v+&(rQTRcknvnerf02F;^;2?H-Uk7zg`eY0cxc6dRw=tbX! zE}rnBw6ZPqAsLwgW=3m0sS$EYCg2rF7!}crrJdw;@mPG94)K|0E~<5Ka-^xj(yPkn z2Tl<9qML$}N^-K3lassUg>DDq2x0S#&a|=|?*|M#U1~}$bFV_2AgWWG-@Qr7l9PhH zG`+_gCXWU1UxPj>d;#!3i8PHzKt3weyhW|vYPbIY@Q*w*MF-j=*KS3++FZy?#b&#P z+{mvQ9qTAiS)yMd_`C5dO<#qcC-9D=r{CH5n^y40h~~Sn)HM06XK6pPG$Cme4;*(9 z!?NP?TOb6CTgqv0xiP2KI*0AQ;3(ai@4}aer;w|49oAPl3|86zbGTy$GDgrz#?Zem z{AvBAejWJN!n*yYi{QJ9J!ep`n$E`hf3U`FC6^3kNmML~<)T6IxF_!(R1xgpxQjcZ zfOvdHMOuw`DaMrO(Tk-zb-7fbT~2hTClv^&xN}Qa%+t00e!mZ7bn{FuCk@1Tb}KEy zP*mfGuUip^#loEmQjBTSovKE1t0~_4JH@NDIUgJT&Kjn)bPZZtU-Ku#_LCh>8|^m9($*%rd1L+DzI=}0k0nsC zjwzBjmPm@O{eUu@3bo-s4Ql==i99u7pz4?Uyt9e4p(%W3gC|KE=G$JTaJ1Y|C zh>svBA9PtY+UeNJ@mO){2xb&e~AtX{kz9)j2nId@Wqgc)Uxe zhrw5^UWA<(Hlr_Z?7hj=rw&N3dMVVD;RxMby)<8?nxDq6iQWi>9lUekxnIw>QkL56 z+JyH~UR=XzJn%ZRTu%RA96&Yx)` zk#%hh`$JtpJev`nkR8ei1^l$!MSN@E@7VLl))wPY@qVe{`+ZJ(mAZW;thdi;Igw{} zytsj8wP~V|oF|@SONCOScwG9FzX&{UCFPERr|SB9LpV!iNIuew6fq!o$WmYqz?D2VhWUExIPIO|Y%OssO6$r`+ zJ2_d!H@)nSs^s{y@M`)-+obCjGRo1hXthR`D_2~WkV1f&9zsUK(x;YC?Jv2C%KkI> zTdd183F5C5*)qm<%I_TLHv&1tPcgvA=gf8|=Wa{a#g?B3{y*I6cN%@i!u@91AOT-n zmr>H+M3JQ26~yZ^%Idoqk~59N)K@R#zlPr){10nr_WuA6wT}`_sm|8PCxl)-S)(wp zVdg;qYn;9c?i*C+c3E-{&|v4{bm~;0{fRp34HZ(QO86K#IJBxs)a0zK6rGcexnR5M zVP7-IX;G(Mt$1=`s!lML8x=V@RFvI0T{<;+Up3>b+E!^Kv|niIk$48?;#p$&k#QSL zQGmYEWs#9qHHo(u;u>23=Zwtq7cW!Qlt_J-AOE-v(F^&71v^(*^` zCRuH*t?m_$p7yU3n6QFG*j0fWGxxYAzP0csi~B@dA-cF`wOnRpyVY!D^3|1HjAl*w z*p}|ig-zh7CybAm{3rha1t$HQ`~mR)08CF3uZfiDP+19{&r1z%*JjsERaAJ?M>@6C zGev-O3AF#ADu9gpF<-g&MW7m7^y-HZR&iRJxSfl&5)9=5ucHNv7`X3{)y8&Q66o6(K3X)0evxsXu2ZK2)4#V}|{rzAM_@ zYaT5+PNdq0#5)~GTQ;Y4J-(%5r##T>wvPIIFXcf4NSeHGx0mLHN&Z(O3_m@*U3qbJ z;!v8Wi?5ESA&|@j+ii!HB(}CK43_C6K_iL;om1}*G@-ynk^W-%gYg?#*Stll>el!7 zDRZh^rOfgr#nOo6iB?J67G-uVj=s*3pk0LMSH2A`n#ihVC!@de$z^^C?T zqKi(uyi^MkOfx<}W)aGaL}kzd0CK_Aey=vdXE^LEFfo-{*lZ;@(}(VH6{&Jxo7zq- zN}OfQE=e|%<%+vjvi@kp=C!Wz6LhFzarI?7^sz9N3e={Wg7#FGvsD))Ak-xmmD{$u z{{U3~0JHUo@qfeZCiBGq03TB8PSdQ6F=^vVu(7v-NTHGxGhAHB=3G9>Wnes&IL;K{ zy7ylQyif3t;dhMn-9yCx02rq6v_nDhR+V9+zLg@{Jlg()E|IqTQ?-%&%UEKSRYF^n zZh)#b`0{_5{{VvDv`zlDmbO|)i7#c+rPRzn>6bS!m6j!OAlW-4xm9MtDYe&j!q~6S z?IZhX>>BbFw$+|QNi7Tcd!uPkIuktX2v&9k?0l#s5x5XPIGrrRFNP;9#a6W%)oIp_ z9*nC|qX^QJCm6uk>}{s; z4zHx2JQ?F%Q^k+rXly(&r0NrCwv)e# zt(wx}*H*pIbbD)SA1cY^Nc{ON!(IveYMA)qk9G%OeqCA@7J4-{m5o$$ZmhwR7UsI6{(D{5XY@#d=b;nPfi z?O*Ju9yX3>M3bANJ;TT3##b(3Qv_icg;8H&fa3~S95Ptx!xdh&8q_A|7dq7G)|8^! zwv^h0y~kz9tkseT@Xm9ZRijzpb38T{o;T}XRgbo#N~9>!ry4Zn7U{Vt)rU2uH_d)m z?yD~D^Ww*gd`a;GQq^_8g*qpRZ11$&Z8}%fyho^Yoj~54FTa?yaojxRM<|NLk@oWV(#R4dja; z8;8uQ!zWSHzh*5$Q9hgD$u!iqoGcdcL#&5*qY7h=Nd@RFw31X3RY@gq#Mdorb?^^D z)`yAo%?MlT3W*F?FKKxrquc)a$;-<%<{HvyV|!w#uLA&Kk~|RGVzX?sFr)1wi>p$l zNJcWJQyW{7nud^zqwSSDH7332Grudz@!2*v4NC!&)x+WAiuSduSIfC)QP-S(t5vBw zwJi=+@5*s;=DcNg+4-IOLHsO-$A1z$TjDD{Mc|tI#9E|`(hs&es@yy=yE9D!xQ;ki zYBB&7RWe5>%PfCqg0{0sf8vYlfI@k8u-ZoyPxt)5>X(c#K3oD0K5S!=Urczm!&1E0 zwM&Rp?7Gx0Co)^SQ4b>GMv(}N$b^-J*D;mJU{t8hae9ued7)doNo}lL>>s;ZQDTSX z#_upqGG{p(Hi9^8_OAo`Pd#yl4+U2R?5R|f!a`G^xnt4VN$benlYZ`vS*3rH;_L=@ zQ;4&yZXX4i{Z=kYoljwkt3q&f(!46vjFh6H`IB;OEnB{)ja&Q#(V@6oyW7n|M}?p^ z@Na8agmFrT%VQj*kYfcDj9{FQ!zz0lNW4$r2rsRC8LPIHZK%Y2@>Ut01G&nhx`qw{ zFYj_U3<9GZy}W04;ti>9qj;ich^%r&9CnDNMIm-HiqbB3j#vg(IQh2as;;9Sji#Aa zF9F_&mJp-+LsQc2+1qosnSr)FyGo3{A0dMb0a1#>@n&&CbTRmfIIKNLDpSMM#n7pS zaEnq)*w2~?r!C_ZrH_@ut|!9Rqm9eyW>lvMdsx(?ft5&9o{{FMdDD$$WS1>S&M7S( zmXDXGhP7)ATIW-p7f@_XbFz74a~;I;M7K9c1;WSX7@AR#fr2}Xk(%_T_IO+Mm>JVPP^0Oi&(RG?5!_MaVfcbm|jbLfsDoDWpKYTZ8#&wJXhllV?t)L*Ys;` z7UoT=lHY3AQpSADr^_sIO&bObK`9|pg@O5VTRsN(f#8vOKl~@Z5v{E>T{BI&p5IK+ zwcin&mzPbjKVh(fC?;!bXoS!#5k`=#D#S`q<(a*V7Ezp0sSoXZLzM~I6yb)gIdWIL zWf{j2gr`zBP*oM8lhwQFW7ngbEc~gIn#tGP@_tUT(YAoD!l5#QgV#B zWd#??^-joi-U;!hyB>?K=$;$4u@^TtvBhzxU)sxa9I(IHT8Wiz?Pc@Y7Mjl5Ig=5`JP6S< zG;*>Z3%&6_!#@vD#^O3lrS5}Bj|G+iiRdM zQ$}J2-b>{sG$_qNls9Uoty1GHR?YZJ}dZwYrS{CDFv{;heLv8xv;XZ zSuNR!ov+yvBeof%QqnPZDsuP&zCHMtsS7U(YC1-V;JEZ%Le^KX)Nb99;$b9dDV(cC z8Hu8e#6g%`1Guh01lQFzT954a5?Y;G<9EajWmU^fZzcY*6|9(T!f5enJ4S)a6^rF6 z;oL^1LeJ*kw4cVWgc?`Es6HF~J-SQ#>2;}Y?=RZRP?qqdwmOt;BkDJBo2g`yS)eRg z$T$VuGN?ZGU4f&F#^qQ#QN+-pO-h{U&b}>SX(&Q7oqCb03N)9saa{76l2TE%udnBM z{sx8{BF|nM8nL*{RN;+)2J6R4ayoFtlVFOggG23BFcp9R!q zwzl9{C?tl!>UxYFq?O6WPYvTs^B#kG!Hg%$U<$q+i{Nm;0-$4@XFG;*is)Y80Dfmw z+6#P=D*eH|pXCddJDNs4NoHfouR8dNaTEA{PcBs?%^Hxcl0hee2RJ7g&j;}1)Q=*p z(u$NE++!GQla-e*FWHKB(@QSeo-Ij9Qce(*C3;Cy=Jt|`bApsyz3z7yww$%SoUZpg zr%AWIl?0;t@(@N;iDW7_C_i_2-H^n6;nzKmYU?8DB#sI1CAvjVISjchtnSgA67F$` z#~H!&9M-;*A&$*fM`bLiBLuMrYJxz(AY*PoBy{5^70l}Mm%7Q3mG4ve(S|9K#ETrGdjrloFKEl-iV=a%m@f$=hVC zt!r(4U;1j;8Sm%v3CIdxs~lmKbMrAD$LU_X;e8rN3I#=d#ALY1!E@=fbUygwgIQWO zj}(g-*vW>-Eszg5#~D5N^}*+^eS1XGgke!&k>8>^58dx#N}b#`0U$OPj2r`jpV@HO z8^SfKO;eJRwKp5I?4L4~?cHsy{I%6{*eoh=7JPbD7x zqfi2v)mgW5yUfUBLDOIuVmQh7^hhR%3)r-ZO58e`NnyD|1tVzM6z%W#iO9}t!!>UnEHg8fNY@;! zT!MEtNi66xdVK)TJXg=YH~4{ZsN77c<}y0%LxjL?a8K_K7zd|09V?!#FJ;T`b8}y% zwzr$^c49G=S0}Tlz3=b#akts)sq7v+_``E3NUiSJNM>c72J(d&$=U#Lz!W^?iOzA@ z51zGO98G<2?9;IsJAmDTy98txK8FM9IpVmxoBQ2XK?_Fz04J6bLb;4K#Q>5EHq~#u zLXrSD8~}UY26#E{3diZSktHbw63Kq^K&@H z?b^|`+In5@YnMtYN);TG>Paa|lTAKmlal7U_*}1kU2Upb+lADA+kY3H+g>?klWHB? zOl8XRo_MZpWgvX&E>TuOho(ZRlqFaxX51WL53_X7 zgvlgK`h~xe*ixIzjiB+hvZMw8?KsaoW~aRPYvKJiFSJc@Zxo||ts@38{{Rbd7#Q8S z4s(!eI<%CRC0g9d*X41$dnNX|`So}1b>ZX5S{RN;2T$OI-jcHS`McTj+TAxl622|? zQsu8N?WTHgGjwu=K|tyEX8{y#0c5hpN9apaHkj`WM;ep#u+*0 zBUJsAu639dY_4pkNkf!y6_!<(aZrXde3sk*+!vGB0#CtX@Nu3Y%B^_OcDF2}f93m5 zQCGF>t>zdA;#CO75tT^EdqpUu+SO?|{gv@xwQ8#dwHkbopHhvRoFGHc477KCSi zZy8$8+9=&x(RWsrwDsxg&q6e-IY*kDuG&pW$}Y{vMwF7WJM;;)&R0y|1I7OVKVMz~ksc=9myK=+joxl&6J~ia==BaYOVACM8 z(yb57651_~o>v8i?~sSd9-)0J=d%o2rBX1AIpVpkK5kq5I@^`~*Jst`*?t~8wPxJz zmpv%A9iLe@E2pp7OV_8v8dvOZeQeu2Pdr+5aw@2b)e_=zBmnJ-A1$6KnOo%C>( z3>;U}9}PYbcw@je>22XnAg%S*EoSisp%uKEhy{@g6L}q2l>~a;k)=y` z&2e`k&2uhVN6UQR5~+`rauHR3!o6q1`T_|p+<>7->PRQ43I$%E4&yxf^{+{S?l%#{p~Ey=!685cr%=S_ z@ce7g%V_dG&PWVS)hZ5ijjA~6P6@7x zUa^1IRsKz0qv2+>e<>Lx^W$JkVK#0u7EB%cv5mXFQOG?-YX9(6eOuqZ6``D5BE`<ol*+fX}@ zHx=B+c6oBmgMvr^3LZN60pUN08V&b{JWZk7YI=658$$N?5G3f5JW{I6fFP17BS&>v z<8@>b6%B_u`Z`NE?x$66zpwy#3%7F~p|hNm*!Hf8^vGhSAY(ytfa;mY!R#Jk|G_N+CWpw2iqq6e1%4Ydi6BUP)aTt1PGN$Ru zN{$^U!6>D*CnVMV)}eLieC%-Z=q^hFNM5E;(rS2Qe4G*3&VIX?5BUW zJHZ3nUc#~^s*;gO95UQWV^$Ha;IWU(wf_KuF@Dp(2=uFsJHz)rAMs^?nrp~zpw*+W zzPNzmD`v0Sdwc7DI^ES61^_a?7_R`4f`0crU|=4Drxvi-h}6sR6sY29)T=70 zydfMuFArVGRI4Rcm7`bMH7K=KoaM_l+}y0sn!xa-IueF6FU42F*P})>BO0=WY&Itk z7%Ftsl}c`{DMFp6dR3zrB$G-vNAL~tKlXI^%kY|KgU9{@@eY9S$2!M*bzv*%mx&m7 z%i8J@7qq!{0H55>(U3z&B&tDg$j^$O3%qsl6XO1*qxeU|n$E3%scK0K0^ZHVv_b4G zRi5hLmP>E|1TzeD$UJBLN&I2(gTormopq$^Iu(wurd`{ZmK&QymLyq~fq_7>Fjiu_ zSg24d=kfVU!r-y5D5Hq0jh-Gcr%trg;W;Ms_MYXf+mXLFdn_pM-?zbbsQPFM;U z*;K^W!%+5|my8pqh^GpY#L}Y`uht_*s%}z`E#V{ib^Vt=V~BnmX;Dw&+w|0RySKEy zm=%s|J4u=;Ba+U|JcW{J;mJ1_esPC+5r~0&*XkCF;b~IN+8rv&Sy5ILCR9XRKm=-1 zG!c~_CnV%C`Gx~l(Xw3%=36`6BIefi!gq>zqgafP$q@jF73D+aoPr91bJS$lLk_iN za}vubljj9oZRctdgddw33ck4a#eXs8FwAOZHC{PZh9W9asY0?*lqD%erjm?Zw^~Ij zblCp7$naSn7b~TQ$*bYs5>kyybHl!PPAPJ?d3(!QC-J{Dc~+$r?VbAC+$5Ic%*(_` z*&#v-jAI}!PDbqf*yEttkP`rxa|YVGMt)QbRBb>*HqfVPGeFs@qkUcVqIAkUL}p!13{z8PtlX zpR;t=JiXiVsPfB|>aBR`drI5c*&j!SohnY0J)&+ijhabc-iumY_v?MTBOYXuCm|=8 zZ~4#6agsv}E(>2fcaJ{kFc#n%Z+))mzK@T`qeLy*b<3I8?UW z(T1B|*0%az$y=i;Y8bV*YuTB`^pT@rMnlFKS2+hbDcJoDab_E>Nt#x6c(S2E+HxB? z+%}&fN!phOW!oTlI?c4_#+Z)8y~{N6#HgUiSy|I-Ct;xEEq0r=Cyvkwwz_P44wq-}7jJhTfT2@@i#E_pfJ&4PMnzdL++{{RH+_)X%- zZ*P1rf8tLI-msX$Y;{IDQq3|mZV=pA+_{NoJLN$rCAWc&0R0y6PK)B0V2$k~mhRr! za_P0n!lSnJ`EW=X9JX*r9qYhP#!Foi?&D9?m2~-|4!P7+LU#eX<{{i*D5a!r?9kR@Hl`RzT)g|@1QH|o|QBtdVROG%DR-HIiij#_{layun&lhly4`cHQ zyw4}6g|AiKrYjEr0JG~gKn;q6mZ zzrM7Q8fz_18=IJI?jhX2a2Yb}it+il+51#C|%a^#$~sc+)Aa>YuOS2_yOZlb28D@si+ z$4c?9igPMw*+g?L&3UA3PDJ+YE_$v80ETd@PADgZ{>(-5D z7tJNjD>$ch8%9>Nx7M;OR1 z3ZD2Nj1Wgr-=$T&*R@?nF&*W>xQ#P~Z~z;yOJR28je{A^I||F5K`hcpI1bqv7(D?0 z06l)Dp{zMzrFg+ddnIe6`X_GITWj+*joOQ9&dIge@AxxSHEWcGA`!*5F@V^Uao`S4 z{A7XH4!=szmR6OEw^Pqk)6=g^kI%kpDk@`65N*aOH+!|z+EuE~DifTg6|!$cf2?MM z;q!VFEQ(csd6hhTtQYSC&)ywL1mvET>)K_i>6Y7#AK)r$+li9mWmyPOi~)>ticfCjn*CMEQqjq^*|yf!{EwuSKdB{F zF78c3tKQPSugQ1Uzg?Tp5Tsjo#{6!`04~qF_kxZy+c@ZPUU{zguW^^k5-u5(K1o#@ z@yRMwWNM2y^y-BWK(t7J3K9;x4^(e#I*QH6el-o_OClepQe*~_tqk`{I zV_~O8QH{j0GRZT%o72llhS?#(0!bGtpd68k_U&U=@NdJtFu|uatd~&2ziFOEgfx#B z8w@+$utxbe>;oBH*!gOg#4i%+x^9bkZ(}TW(HE8=u|^YONUR7<5w~vhu#daOI#=g^ zjyzGWNqsajY7YiZz5Rak9M2z5170{v zG~8;ra(i~6D>${x`Ck0WEo*CYe9xtPPw~zxnOPyef;gm&BmoR-wX&{I%lCI=Z6KTz zkfS&i;QlN4%{}YwNhb>&YMV$>T&u|5Vv?loJA(1@{HNZ&QPs8WQ0graxov`J)DCzG zUuYcT0|T{Y&3|_(Eb}oTaoeED$FEXr=JA=eNLFc4gp^WOa+F?;Eu*8|JH2;X9<2pG zWd~BHw3OnfcNoUWrS94)&d%=dS93$+9LeG~p7ur(N)UN&&Kf}DC*&Z5ykL;PhQl{F zBv&ore~Df_@U(&}9cxgI-w708NV2Reg#@HB$0TUV#GI;)%nPwDNv@nklB9_s+@dnr zKA?aJ_3CSwp3>c7xM3QGRFJ9e2tq;p4@_6YW?0JDiTi5)&PmBfkwZlJZ+pG;Pkyhm zK94S>@YAU2PEb>gw)frqk5&(i9dl$}T> zkTX7lZJ;zbk+ZF3p5wiLIJLbF( zPQAJNNX&%cN&f)Hmb=R<+krHgkn*Gd06|}R_bFEPl5w@I8{g5T-S;>vRdiv_l78}5 zes_PT^|9*Orne={v!s(Oe<|9oAwu~eHr@j^02vF@AfBR^L!LOHVv@$W+DR^lmR0`o zJxSx=fnIiImT&cpTW?JE&tK01yFU*i$W726z4sYc7}-RPG_pKmqz z`5r{-InbHLZ@6?{TpOsPmwO+(zu-Sq8vLyrc(gDclL?832mpxnhSf{tNYSegVqYWw0N0*t>M#|ZDlo3^IaEoj+46E(d$-#B%JzEOUWc8GN>PMl zlZ)oOTDo@S-9J`y7usdUrKCr5BFOPPjPR0-01qpY0{}CIBo0nGa0UlMqv*0lV;<6D z8$fcwhd^}R-P*mcdpq~nq37bShfwx*jB8M*2*x@_ zm$OlKgjSJqQEA%OPTLC46U1!hfV5&W3rIm!ZHu%pkOd$!DwQhZB!Dsw503bsP5T6b zDG^G`69_}E1__ze$CJ#5D93Ru!#p*2GTq#HU+WL>f9OkDelJy(rX{zfHWn*Jq~a^5qE8r7Tn<6;q#*=_Mz0o!eTy_3C~o{@6bP<+9da z#o9%elV@~`Bg=0DLA?275=j)%+eQ?-#T1W;6zvE|3ywZ0PYk5F*=kUNN0;S3;e(CE zPdI#U1b`SYBZ4dU@8Z^trt01R)*AlVE*Uh*T?>GAIQbQqAmNo+fFsoUn*3C_wu;kP z)UBaXB8pWA815i6QMnl-BnEcJw;ikTe-ZNPH0oe8B_}*iDxWSQq^ZGFs@lIjN|E=f zNpdY_-tTLlrg&wUPJ}ZIlC=s`juxYYnW&_+IqfGvv{WeK z+(;EbLRDM_3>Xy1BRCztoaVB1{{V+p8iKiX2&|;LEfWkNCzwxPT|H$!8{(S z)BZvdbn72rKfXVub*hUY+T$yRI6kVZN9sSxugGdiy6z3P2}%)^9KJUEK?5-fbhI?pbOm4%V zW0FY5PizjJ=hnV8_|Kr}x*nv^>CrSXZdKS^vf!(n;Eum2=CycQUt*jo_vDI=_DcMz zUdr};K4*t4P9lWi4{uU&ZK%Rd{Fdcz^)KxzUi;6gO)Xi#*y-kSCyj%Ni4r3G<O_{q?41B6O)rx z=54#S^)#$Cu#Xk8NRhV)<-DvCi}QWpa7k0?>DP+&T?QzonmI^Ukf{WzCo6zQ%BOBO z6V5Voj&a9|i)c|}l~4%@jF!pHSdGW=$**YenEmWMf7OoX+uppnLK66*pG{Ko{{SQD zaG0j)waUIbeC;1U)BKNC(|jP>jj)DD)nW&DX(GbA08?i2tGg=fb`~Juoxd+1H~f43 zg}gEGlSaKU!7iDvDzn(?I(j^98?Cm)X-sm&7zq_vyyWa$g>*o;`>(=Lq_D=WHvz~8 z)G!(RiLYkT>@A)^g)k)At&9Q#ZBjwUTpWz&o^e%!#?;BHQmsOBT+>wjoK#&Yb2TR# zl;qqe2BPm4n!hWvwaoK=8Ou1HkJNGWQ+S7H)`h9pjMOCJ)*>t0QMI+5DJkj8vuE)a z`%8Ee;z#VqcdU3n$C`cip`zT_+*;}P(c1~Fbtj*AwlYm0nHvjy#AZ$5cSxRMx66;p zJJym{l4gvjn$0O0$R*^)|sTrlw(pp*%HJTAe&)HsYw%tMEpp3RM39cS$I6^CcAAla}u1@E?hoTxLzh z_>LdP;wfWimtY|97`jybokxPHi+01}>NKiiCrQcjPJGSTNwn^Bl%n$Kpjs{@+wazPwt<|zru(=)~D3}03%v-8C0pr(zWidy}J4z|JmHMP?7)u literal 0 HcmV?d00001 diff --git a/html/img/postcard46.jpg b/html/img/postcard46.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0289257c5a72e4e19a1f7973501ab32052aff1a1 GIT binary patch literal 77339 zcmbrlWl$VX^ftN#_uvpT0YdQLi$eqr?(XjHEKVS}CTIv2Jh-#C1_%(`StK}%EDP)| zm*4&0dT-VJbnAU*YCcR&&zbXdpY9|5%;VDI7T~#(oT3~64GjQ5dpZG+tAO`UcmHR{ ze?tDxBs{(S*b5-RLE}P8K}UN9ct(PTPJ;G02w;5D6Z3y$1OA@_?HM`-CKfghE*}0< zgXZUeXK3i?&oIz2F)=WnT8BJ62Vjt3lD_1V#Uj(Nz<%XH&L5sygv0!yY3u0f=^GeYS=-p!**iFTdHeYK z`3D3>Mn%WOevXSzOV7y6%KrK-=SOi#X<7Ntipqw@rskH`w)T$xfx)5Sk- z3yVw3E89De-M#&Te}_lV%d6`f*e(3-{y$u30QCRWW&Z>0|AUL<3D+|W40H_a|8Su_ z^Lx6`NiZ;9@?nw6YG7M3}z$Ng{Gb)w2C0?|Qqp>b;E;hiIJryT;Vqma@ z6c>O>50<|uNv+vjMjZnto0TKf#@&rP%ra8LWKI(jk`v4RY|q{FFQ&v5@dM3MQ=mW1 z`9JyFzLeph%iALI8X5cZn{P=UXkoIu4fNWW-K$_wEUUiuNMFnia+!k}54R-=?#IgD&c+D#Q4; z?+AOD-~L5te!!0-Gh2E4l2!2j+69mg)18W%tjjfujzV3(g4St}d7fqNq_}NX5F(M% zONvt<`h0Ak`mR55klncc0C2U?o!cMEHt*)`P~6toBDVHNvOBuotjTC~s;Wnn5pT*@ z?3`mYc2ql}onk0r%;xlET)vJfS+Q=SooFAhuNCuk-S64xy3&Of-G9xBpc|QkVQ6I4*iQ+NO%VIbxAp42(Ykow z8+IeS(t<3(n6KuXedvQU)_0Bc2c$@zo%AXzyXC&2b3u_r=Kt=}+caxJwL{Tml27i3 z>N0ss4BwQrlGJ4LVQxey_+POqO8dR!!s+c@DL!~I2)?GCAfwfDiKd!^jix%LIKQY5 z4eD{v#BgSme=DX4I+phMvaJkgRD|_S;Nn(D_}D9DegxU+lGDx-Og_4~As3Ic1)K~MhVa4kS6Lg|I_Z)-)GIOQp8F99pBzNIRk2@jh{NFf z=tlb9Ib7rUvv(|xFSm1f&|g_2mRPcO^K#Yf<7FA8KyAO@LFi>9?CxJ27R5%3Wm;d? z=`0`G*98dYQL%ak`-lz9~|X^HnLWxoI#9ZaO};5+4QWAg19uyWuci&Rf0qYleBJ6Ef(q zK%Vv6DKQ9hYhX*u?vJv!y_nor?lQYK%z4j&bg8{XLOy=9KFB@Erc?17BR^UDpKaw- z#l{uoY(e&E>kq4}j{t0e{}HYIN9JLg^H$C4NU};r@KTQE*Ls7#bs&W4QkI6!?w_M~ zy~Vg)5e*%5^RHHVQeMT~>c%OeR(JE@j}uW&XOl!Fn<^>~s<|lg^0Z|`~3)r zW_W*Jw-4%X(HvSL(r#tONCCY(O`7M0dFKo7=AEMZ0k7!~g^SNsga~ntbyr$Qjvd&l{QTT z!><5DYgYSf)a*yN^l(x1a`bt*Z!hsLNtLb!o)M{m(W#HbZfZb&6VvCwjmaUelIxi^ zB}GZy!VA1aA&Rq;n-w!e{GnUdz*30(F^as3hU+^7BP=v(3s%!uCW2AX2V@K;xY|r8 zAf`F-->DubwI*I~6uWe1VKGk=0r>ZhXiS^lq-(}&y8ryKo{`T{A)WUp^aYnW()y-p}+0?6CIt-bsC+{4xI+o{1;@KCUZHZ2zXYj z>NOpFeNE?gtS07M3Fa4`2@92{^$0`jMX!Uv=ij;NmKEH;=`33-h?DnS4dgW4_C`_B zNb(fF8LP`M>O3j-g()3yv+z)ROZbkRg;dbfWP}kZoDswIbaT9;ESPPl%@fv8*7qJs zlI)x+yz{bKRgO*4hp&I_I4@@_ zPrECo>yVwtx6+)@)Zrsdej-1#)Z0+oser!TX^BuDTLrV^j=*baHFeH%G2^NCICNP| z>?8`Zk^t(hJm^R$UrzSJt37|pt7o9YgkC7>GTC%9*>Tt@O)qVxThn38Lo+fp0U8c^c#DQ;sMBsy-eGgst z<^dO3{g_J?Mz!399L|b7%^C40*reJc0B50GJdEpXz}zBqjAw^G)SSRPlP#>*iupM4 zaIWG_yQW&&*=faDTF;`9Q3XEX>sf8b&YQ#+iDoSs8y&SdCdOM)j^3$WOEw(-^f-Ozrjd+M&AH*91rrs)D=Jcl;iqB2KT7frlKdg@4Fv$`r*daQ%Ep%x zE-J5XRwenOTiHafDKaceR1r%pR|fH6Yfs4=*N()*w7TKIkrW~&1-rC`x`!_fZ*Uel$TC`B7+HaX}h zmb*IYP&6-~jvMYyzLrMUh_6JO`u*q@>G=}m00zyX@KyrZ`?&n4>5_Ljs(;04bE1d& zc}vPL-!IOphfaa$&gx-iQH*4}(;s7dH&`+XJrY^t7*&Dy3-PFNvnHFtD5GFPc-uen zlo^Bw)VtDMJLLStT>KFbB;n1Rn$|yWMj-b!T47~~ zNfjT3pK;L?$tZ&GNl3=`o^J_3Rl zH|jxsl8*ovn*OiSHlSoZ*1wcCa2<#c=I1fK!jn==PfuJL&ME$nre^Th*{AE?0!|OF zQGc9Oh3ny3J2TI*Q}BE887HR{`ly-nu9X}%&PW`VD>K=(GOxj%qC-t}J(E?OUv(zx zRcHMJlgm4@y$e@V?`snf7yc}=S#)GciHqrL#7gBXJO*Eh`0~sT!X&%9ovy1veLT`` zhvUQG2F8&eg9rQYfF0_v)2x7+Vj0nYv=Rvbv{!zQfQYA=(f6KpeBgl*y6|L1H zzz2Muj-pVqd^eU6S`spM9FJ7}g2Kgq1Yo{sTiy#DH={`RQPv`Xr;0|6$w)+YB zF3PmiM1{f`cxuGlsf+u-<9~=xk}i19+VpL7Ogrb=+%An?5x;PU;z$2ZIgOY%hoZrX zqKUYhZLaI$zgD$+UhH_yJs4S#W1itW+kEZ)y-$ZU^DIl>73n)=QsIi>4ZZ?-(P_8g z!Umx|=4?qKZ3yG-%y~RAG!lgadip4LUNU^R?zwyl4w-*!e~LS(d*2bAu%K8f&!^^% z^j37?g%*35Ei&J2TXc^VsuuYi4SxL4xa3XECMlpFqD=k>NR;zH84U++jGenQ-8m9t z#~IC}b+)SUOrH99K?hw~2&?&J#xwzA=ZoQMbNMuUDMq3X-}9{K{TaGKg&sZ>UdT?v z*`0G0-~bK%@GJOSpHpi+7gp0rv8V*4vnSQ}DyPS%^y+DpGKE1qBZfl>plT>M>Z>rQ z^ASMy3A$OXVI+@l^3gD_#>Pc+c6=2qbo&*l)MYbyQnC&+b>M-`D1rw(S@fF z5y{dVU?=r7_56=d20P86aB!dcfyWaUE?R==+%g9N<5dCVWSq_Nt8oDdc??mD<7Ulv z2r@NTBQnvOo@{WF9zkfeElD+~H(7e9m*SuNaXxJa$<*FqPjx~?)}c^uMB0}cX7D@( z7voqNEun^8u7IKB?j=XM$6jutn1@$|l!B7Zi*ii%i7cWSm8zw^;W>XpvZ0+)H9|Sk z1nXnfx54vt78rHK`*|5;-FZ3kb7C6>J~+Ec`plL~TtjHvil@T?y`vIzInWxlZB)Uc zt#4ykz319$Wa5bD0dXFWyhRF@N6x*N|AP8VBlU9ZZ^+9`c};4sMS5JJ-eXNJEeDeR5ASPZCH<}{fQqpy;t>x^Q_`QG@P+l0 z(*2a8C`;yg*1F)v`m}KDHpDdemqE2fSF@hNWyNin1+}^8^%`FHDUSj5pVq5&Ed3~yqx>B?J5bZpJ8#}FEwYeTTt!z^q{(k))rAI5>B#e!D?UBHt6y>NM z1tE@B&6oJJEkZj!>!BGub*9&W61I2*L^?=Gi0>T3!r(eY!e@LAQq14NAV4ey@)W7_ zPg_BYA07Tv7oo0^JH2ApOF}vP!IWUZRTv`v%Vxn6JHhJA4lHZ7r1U{4;ybZ3+S)C> zqjp@3Csm$LAIg08z6RR?D0jSLoHU!6xw5b6Vy1nDG+FL1id8ftl1XnXOi{G)k2#h!s`b%x_?RZO`m!_brt9b>C!jgFL|dc5n(=3QIU z(@0nf-adPB`75*UCa$tt;L5HigXS($en}MXQWQsNM%96nKEl!$&U)e6#b&5^Ddu4Q z%m>DP7nWBkfe4fkQ$m=64YRL2lNVCGZVpIuoDej7MwjP(eCstQfoNxAOjgq{4vw4n z#)|3WDVIbuEc3JZc#1|JP9UlrN)Klp-t3liud?flZENeIzyD2Z>}lHjT^F?6GwEQ5 zI9LVswSXF|(Mb`8@FA%Hmo$G}y7azbB!lJmEq7e>U$ybPa1lZbT)gm~t%af@>LkBM!a_dNf&AK?Ww-L(aa^E9}beLzKu|o<|A~yN3Sr`hQ zI_MS|X~{H!J%r!=-R(-kg22?y>?VScgL{4StQ{zkgPaj%6O}H%!Ac%1td;&w!7%({ zMWW^=s+5Mi#c|SQ=JaS>KbySth4bD`Q)7h9?({z3Af!oQ_0HE zx(53N{{v9>v*^x{%OW^xF2k@Cru?|UTQO!AYF})zQ51!rc|<2d%7;UlT-Ny&;*VHa zAhl~KI=vIg*TfY_>HdZoqD0{ppZxVrsaIX|*UL)9iVh78o9~JeE7My!7GN;#)`rg8 zACG{ED{1!XN5ED*_(JtTaP<*@r&61Id)8&JlkF}B2{vp}TdcR$T2~w(idaP9oIW|} z>n5i16J&|1oHXQWkb$#9w{MDubzzw%h{A@cZd{gT`f#42$w7`|#!KmTwq&8hM^mkA zHNd_a1&)6N6jlUkm4M&yj2!4BBS>RmSif9mLZ_rKGYDLa+HRDajji1qk9cC4t};Y> zr13 z*<RqopBOJc1b?x4#Ov*%nPeWlT%;=5Nr_y)=;SCi*zwR z0>bJpQMCid{<-UVm4z9*;Md9Gk=wij;SOT)1( zUd%y2a{oQK|I}=bN!sbOJBEZ+>ukpnXMsK)-KOBLzbp?O>X)eV?47=ydj3rkgPVnt z+c}flIj<};Ot=N{MA0FW#|X@&(5+gOz9TS%&zG0b{%wlotl+=#>t!p);xe%S;Nfwh zXmwce9aHA`Q-wyjM!2YasIAd6dCGzyIa z*a|kjq9;E+wKIgp^IgYFpx9j1E@4&Iy3i<#i&FX?^5P(uP$Sa~Kh}lH+X`s}p7Ny) zi3JWb$-u~`0m_i}<-$cNNaMmhmVW|zawjSJNX5u?mA96INN9&k*}`Vex}sOEpJ%#L z&HDJJ^%o41yi3peyzAYVcjCUiu+j%E$;HFV_ag@+Rpi=A87yZD9nNcRPOil^AtIY+ zx}meatr9)Acjq${(Ix0`s`6WA#(M%s5J8Sv!vJ#V5zzDe5g_=wTH{?YW&;RLc6oJ) z(9hWKS=+46eW+_ih^@Xub9w%c4|Vi3hgr$D@gj(f&?P(y3ffSGQ>8z0%F<_bC@Yq= ze-@YaOpEZUuD09~1w2UvU$CJ<&E}V;xy56oHNn|yWdZESdFcxhBu>T8Dm}gV&Xrrg zm35?aX^}_z!d13f)8g?z`90oSJ=C2vLPx0BRO+J}92asUB!qn=zlW49$;>}{I6J+? z&oN#dtLn}LXSISq*4$GlVeX*dMO4kV?hM%&pNlLN&+g`JXRbYyX+00atZubQ8+hMpU#y=>SYY>RR;=8eV))Y=IPKG-i8TaKr!qEXDPwZAx&MY&6@$EXE_lle)xd4lZP#YQY z+Q2s>5`lq-uUksPB3>o=vqbQ>PZ6_KjPzh{(Sm-iH?02bL++e$;Pz)>+=Fn(Mo~V9 zj*33rC<^7KzlEL6O(8ypcfr$VCsKB*&BSi>WL;WWapGp*geW)S4$E`@p@Qao7~%3a zL7n*qJn^ezT$6jJp3GO&Q6E+e3UPW22%aHUBT4y?3!pyk8wDTmvhucTs~h2O4Mzt0 zi>5#F-nll)L4}z1*%~xq09!XGz=as$p}^eIF~IQnjIMw0k18`4Zbc zONE*988f={lV3oP71-v&T;PUKjv@PC+U?g77%bK9B2nJ57{OtoAJog!X96TSH^!M? z1Z$*?DQRg99PsWq;*JnTB&E)C>ufAK+!yGPS&_q;#fnw=+>>~@@{Tx1a#a1t3@1&F zPD2=C{|S+6!5B5}pJL?DGLU%M@GcWN{UhMpZAIo6J0OH{;l~GYd1i231*}3x=>T}Z zxKO4#*1UK3!}=uG)GSBz5kS>lVoCv}YrV>KqHdDZHChcjC5f07r`g!Ic-7Dps*TV5 zjXXxCG?qzk{1H%p9^FG_Z$`{xww*tjzYt#S-#J2sUumT3`lGvmm&(bRCu=)A;B}Iy z?qFA${3W;LJA;(=dol=SUSMoLD9)F(u|%%`9ct5*NP^E~;LW)!j!S_4+_z#xQ; zFESEdMJhEyiSjFs{Io`^_CC5;l$)pp@Z8!Y@3vU%3(tD>p*~4lGcH4hK+WX|LW9t{ z!Bee)4cv=sb>q#W#l^&mqeZ>N0BM?`)!oUbt4!alB=sjni(K2(8l7@j_NwDvbfVp)=@)Kuv?r5W}1Qmdq0vRT>zsH&;0ZQ*w_9qv8h!0R(jx-wDq z)d#5}^qEZCE=fV}L3p^gwxpBtFT372nA$n& zuaQ4VPXsP&b#{86RPU99+*OUc7 zyn`HI{Cp~{s_msB;Kyc>pbN7lZble?mcz?-+t@)A?UEHW+U5@LKx8)4)*C!|(LUx{ z&T|B}FJyz!MQLM|f=2MiUFN4wT9q1WaL#@0g0uwGrFr`i@VxD+`~?tqgI)Y`|1M~+ zGsAhKkQqMw1)^F}zAh-XksM;Hw@=bsotQCd%E}jD?I~u_AV-8-d#eCH+^*VR=Hhl; zVvRl)0NKDes!T?Zl5d|*RIBq8F$< z4Pus}tptzGO^3QO5fttSS>MB3#4FvzTamCXnjTr&N>T~d;)o^lXH_o!r)UZiUUP_Z z%0w=cQ0xTDejjM zXF{R>5TI}6TLob`O7GldCD_CZAIdR)j(84|{I!AtAes*BY(La|g3daf>W+79M9&Hq zTl3G-6n$L&rOmgbErMRdPj}9V;I!M=gVJR1I=x?iuIa@G^!^;ZC@bafv$O9gn0&oC zmHHXawzDTjbJt;j+fB5I5$Y%&If-+sC>56X zO_5^oCzW*l=h(7mrE-w2)6N*4t#-Qjf^mofo*uHgYll~ z4UK&rSozz8W+NLc3&Bq1hcLYk?*dUbsR6Z%wHGSuXWxsu1ZPz^9aBiiPY(=Vt&TQ? zdLNlxcu)o-h&PRB$z)DY|f3YH1On zba8l|wf7aLkF~`WH1n%Tz&SVSimNBf?DPG;)8}$7Q|4o!>L&)1leg5>M6VJ|T-~Zw zJ*z~=e`r_8&bkZ-kKX-mrO5ib^NI2K!q9f**4xz5=!u`5Z>$>eXp-#0f4^<}_BVdF zT(yRJwn$lF=V-Xn(HlY;THp&v&34yciW31Wqyh|2z0>b5i>lbSt9s}w#JQhWcX_AExz>iZSMvN{5{T6NP6X@@#hBl!_tRzTY z@wb>}K_fvr=(7)Bx(?^qm8_13S0ab^KXwlCH-is`OGisNzyxk%A1)J)_UK@j7hk)a z4~%eCtFn2pk|pKw{9o|pBvBEnaOj6Bj^hc`={^FMK?xy} z;fv6NM*xY&8u%W(1jG4!WCQPPdn+k?dZEo?h3)I-Lp>rI2i`iI)Q)V0NzP@nak3Or zzvfK1u{Ohs5Fr8(_A#enOIZ#;=)p@K><$+bgl~|!%az@$=WwU}YC%%P9rwjYK;5<3 zt)$6Y7}n~YOL)q75_3!*V(!cCiC6FOE^)&0O4o3yDv z0G6(vXJboMxAT;1_DyZlC&;{ikVJ5iQkayZ zNQp^+^a2mf*=&2$veCzXw4`@lgI5@|xfy%SqSSwh%jZ|Zi>`V_@mg{Fro_@y{A;p| z433Vr=X2l%9K8OWD?q~>pYD4XmwoSleWe`NJoCtv>w@f7ImG?p!aAsFauPLd>_Z+ET(Gtd}5g?>@ge>w}^bjROflwZM;xN2HEqwYpc2T^g zC*JV71?oPsKD_21b|7&8{3iyB0`-j+HlHke!|g6e-wH&(@QeQ%7HE-c#sp!mOp`hB zbWmolqIeB$<1D%H92z=hNbBQSSPX%6a?2CL>b03#U3HjFn&zARTszpxa&Azoh~7Z4 zKpzRlt79d)f?T!WXSgGCET~L`7TgO(gpX`R*z6Dr4BRt@hhnxAR~rx5Shz4m?udR` z)T1IX8hEmZxGT{BmI5JafOqd$HK7@bhy>X#c>Iuy8!T|4x?rTc%25~HJZ6w|NVdma z#s76W8|=aHz<{;dVw?c3uMeH-+SW|;lO0%jmsjbfb&^aCt~4hqcQ0LqtynOV zi;Ib#Zf*^QW+~2Wrv7Y(!_U9&iH5GmHLLmJ&0Y_F+|$e$7g)&h%h7|2 z>+gIA0FMO3@`z~{6a^yQE>nX8L9o4S`{Yk>0kjAiZoL;tp@Q5g1l*SXF$@ZZrWUA;crkP2zLZUgpKUc zuXs_||FgsT5zvo`rmlvKVJZNbJGUz)OLMFSUzj}t;BVNzJ_M^>jL-l{5EAtql8vnW zEud$733R&zHc^vvW*7Nd`G^a$vj zL|*be0?<%Fha#l>G#QU)%wmZEGpQoKmOz4w;jJgByCQC7VP)2(I$Mi6KL?;}N zNzx_G^VCnUOZqy}_SEDQ)c3xQTo6PN%;r?sy&EicQ89&!y)VoWFrtoz{r56(!Qh*+ zS{1NH^4#U)>W6z(P!?Du_-XA8opOlEol}?_>Xuv&xyN;?%U|zkd{`sp6-|{U#lGT1 zf{2c+)djk7U`#%@Yff5O^?ql?uF!5V`%Z<1>e@`cSb7G< ztV@To3B@9pQLEf}Fvmil>{y5|e}fsJSW6%qxWVMc&*Wa<;r>eNFKBZb)h+#0MzIc2 zV4SQ%pcYa1LjS3h{!Q8*siFYcy|4=#9Wj0cj5Y;~N#0vFmOQD{|KGN=eimrOYp@IY z#SPyd6X!gSErvXNm|s7skoTQPGV##sM?kathg*&NdU73N?+aX zD76kbfD0foepet=(GCXy0`LOxu7^@Bk+1Mc$jL9@^%OD90Ub;T6}TvUp+^jVLqBYt z4*L$x*|I*JK`>*KyrIE(|NRw@Oz%>qyDUpRm;3&cUNxZ`i$;wP8o?iEj+^X-A3$rD z-rh%Ys>r3@)r1z00!3iic2fUjm4Oizk&9Ib1I>_wpHolgKf__0m7q_?-cDWhJuDa5zgSCalWLMU%PvkPs;)hQd+M}VVr z9GniFvcdt)TosKQGvgC3HVeCsM1l*eQ~rM@m5ExLt55_xCMR&Vi6W=t-OTrT(OM0^ z8gWK=bmrYqPr5ITL;onw-8Z`kg|3p&>oheExRu^s{p*7?_@5?M!{*J|T(T7{$=t3M zodiL}P~g#Tsba>-3cnPwguwcP%PG+PJj(GFbfK}i8v1U>ZKV#<<*5A#_zB&p3@bc4 zRg6SiOj)yR=d6Rj5joBFHaI|5q9oe-#Eo{$;vg2`3DHSNRaJff(^ZNro0JKaLFWQY zJ@E#4eI#xY%$JB`a^6)lyC)H-0d1P*y}1aFPNt6yNXU@kjknUuJys@Fb33tEd6l2kpA z2g1&t%U^RT0XN^C@(K)^!M?zEs4*?gb_x>_KeoNv4)iTr-N$QZar<|P+*&QH2n*bh8W9%`XMK zQ0!hXrgU8MY8{C&^)>9lwIayxr=wqx3zHW2IubG=@%!kxU>cQO$nWL#7O)m~-Ci3Y zwe_Xi#`@xg;nqZzyukP`(P2swL0tq_9Il&_8+Tlv z4`1|H8KKA5;2lY%N86k7Ww5Dcq-msSYO1>4`xyRn(NLFv`9{Rkvo{X{w3IwV*|i=& z0v2kLa};@2d|FV}VOx<2TaifVx|_NIH#o1ir}6{&W^_mVlXXTF_ZLCTb4v-KWZQT8 zi-~>TAP`sTt?)drhc95@o!2PDSNtB*YKTyIGSxE~GZ-Tjv$r+igDKAip70`oHy_H_ zcixWD<*Iavh@w^8F!Gy-gl*7rLWkdVbbZurdC-^m#0z2}o8-ZT7A;f5 zuWmMNtp>$wonNYdOFIhgHv9r$d1dgKBlA9$NsYX^**D?MEIXzuxW|jJ^$0PDv_xL z(}#1$`q{yKwlp`aIO(38=F5`$UYxcA2~u}{V#$z`LShb@g(to>`NeXhqY7~NVn9+5 z9J0DN@qVB0+nzIoc?WwulS9Ze-YZA#wk=bQyi&<<6|RwxpLV z08Rb(5?*c$eFlX&UOjfi#BF?%SJJK@1&{ns#1YMBadIZl6TmK6-#=^uPc?CUZ*++T zQg}i3ZHo&lSogv0z{y9{iPtx9`IrUf;jpe~dIa@N>u@|Ydk;@Xc6#eT%@E{uu$;NG zvol_A7uxOa{hFY1u7(lZoPiyphI%8QqLpTS_dq4z-Oj^@HciuyZu`oRr#jm-IpQOf z?=R25lE0hLq6GVPjTrR`A+PcUEUwN`eQCvTMbN#1kcGAM+cxR=BBseV=6;Y4sJS3% z5qzOuxT>X>?@K7X%@}uTrSJ$yc1vvjmio;S=V9T^;8$N;BCr4-jr3@Ck`FEqLT9J5 z3{Pb`K3LfkYnkGmvC~S_VUr>=9eE1h1j!ZS0L+v*U&&)fXY!53kp+;Lr<!l`qm zuQ1Ll&gS(Hl-Vx0iqVROb$oT-m9b0LtfR2qUU_}}Xs%&tIb!Q6T4Rn13IQ@Om z2&>R`r3?RaW}NzmEWDFVbXcIEIVMR92sohkT9t|loP+o}U@7)-d88*rT~EudMEjmj za+}mlvUYb0?X?uKpJiA%8HiAXWT&03o;QeWcLY$2*W;BWxLOMIO#yC?7wWiYEAFgc zCSxRSrFitcl-EQXQN0OE<0k-!9ppU(k{s$`V=yWmmSQtFwb!&%7?>??n$6kzT|ZH( zt@ifz+zx4dsr-!|;C|Yqto_LW8d^#ymiJB9FO+ISjR4)2zUBJsHck1xJ13o(gq%Xy^!j7`hp<*^|U^+ zjH@~K&_;IqftOz>2}qy3a>{#P`(CUgMypKjJx2w8VJ@rE)#imhFIHWQv{N0eV`aDn zw5AyxUxTJUm`J{87+rSwjX8l5C-n`Q90j@cPWj6nIxub`BsiDkO^6#!`mUh6*Wi47 zg<*?cQk5C?#dVr7to(B^O|xyWl3{E`&;#hkElz48}< zBChqikpzw0?Otg#L=Ov01)?baAx#|+?5w+gvsTY*D<1(D22kRB;k>^&AkrwwW1+f% zg~hx3jecW3CV`&KvrBDrYr=MBJegrEEHvsNeMNBavrbITG_hxE2`N~(!%u7p0778y zoOtB!MJIuy+E>L8kt2(08um28kH}dh#Q^FZYm}ydw*jP1SIc z(cK8#fwy<^rft(2Ln_?^&v2PsfILe;bfzRZ+~Z^TU-lP8qikiOBdy;VGVSHcB=1BA z7?vQw)6-+U6Xp%G*t@_-fU+@Jw3?5Jkx|)0sf!*6j!{24Yxh!)FTrmr@IsQ~xAW>> zSKt(1dVR;ZL6{ifgTFUwv!%3+r&B;Rm7;fHqhPtG5 zeMjmkCv)6;@F#hyYKli`XG7vX|9wR7pUY^V5nvr$VNP%Jo+RM;jcRRg$$twqq$+fCXmiRs*Bdk=D3>iNe@o@u{j z296E*JrR7ax6JLjgI{x~N8Pcv%=+C{ucw*R{MTXZz_thZAW3PqVC_%?(i3Z5CrYqo^bk}j!-cM6i<=G_dY$?Q7Gvf?S zIuZYpPX&`K;r&+N6!aUCa(yICsDBLL=`sv!m*BK2R;{t80 zZj=|!?H1Yf9x}Z&F(^fQG1+vRleqZ>#ULh&-t;kx_p>QYYIur-N7%$))nmqS(RH&r zXMVmT`J<1ao=-8Ff`oGcCEV!8p_aTo)IWBxhu#1+`(&-}Eq1^}8`!ID-ukSxzj{-9 zjp>lmm^)Ql{)Jp47KgJ{T3Gd8%ki$B{-2THL8thfn{m%laqQ$!IzK0+mgw&9JQ2%x zXUb7>I5TMzF;U8)%2Aoc%h&hkOW6Ue;CfX$R<=?--p%T0It% z^tvlwng|_3EcNu{oRr-Tq0+1tx$HN@eoA87wqL_9QH#hvCIXn~Gq6E0+Y{aCYPK2Q zM#XPv&K(+k!LW4)7!?E{nyUVIWoI)fR^JtM zwF>1pN&x)0TX~++GXp5xi&@YB4}yw&N{SxN==Xa%_33|*q_17BIwKNWHZs)M^q{!& z&!7v{bI5`1ds4+;ch`*vCyF>f#ZH6-+ zgb*xqwMA((CkV8y&o)UicWRvdhQ^-H8S`T_qCp*gfb#Fs7OMJ6?F%YK_#8SJzm^LH zN_kvARG331dE!q6YZm3Q%KP@<1ipF$G$=;?e(eEEo8*2|q2dXV>VoMz?VVO975df( zr6x|PCeCBE%vS--rq75)>RBQnJ>up>ME=wgixVI!)Y~HzJ-DUiqAm_a*vG}8f{KRJ zQOlS3#~K8`HBzDEbc%!-McePb3d->D{2}EnP-*%eEXR;yn006dh9RRKNu9gFKkX z4;mJe~U61lu4Rqy(LM z7}bdWp}1y*T&NThc}X9pjFQPs*IlU=#%G4yvvP(~+6*L$$rOb$JCt6f)IsMfQzZva z!o!1BCt^qyteGagBoeR8t#}5vF2vH)WKiW@6i_lPC>w&TamOslr^={C#Nb6tHaQhl zT7_a!Hx#RyRiEKfF5V`rH0reFm4=%E(dc+QN~hfOUqj;1-iLI*(co!ON?mIl;gsK} z2?XeQ1bTlwOgZsCk3qk75UH0Z?TDH~RNZrTOVjpf)YI@j-=z`eOcQE2!!O_{sqo|w$|m)|;*ERrS3Roqg%5XJl~SpY|FHX)sB#+7 zkIRf3W)qKqhKjkfr2KpDBd<>_F$Pd-y(`>1ZT7WZU;Kph%`i2JKyl67!71`G&!l(4 z@+?*yUZ)9*`=-MokYf<*3g`X9W)+@;_>k~v%hc5RdMm1PvFf|65aUVRC4~YOSMM_! zW@?Q4TZ-amF-s-ZE`4+t@2-Kn<_jssP9oLmJ=y2wZlh(hzJXF3oi0A`tfGg)cc7vQ zhsq*3a&tRL#RF)0rp3I%=_qrd(mxHiiG|~98ZM9el{@ND$*aDD*47%spXS8lznB2N z5qx7~*BHC=nHp2u*HiMfq0LQNGd``mVFjz_p`cNnqxd&7G902KY%Et{M4qamrz^Fx zR9_X}{BB2Q5*8SilMjAzTue27)-!h)ntJ*VGiP@0%(~epcf7UGJkyf2Xq+pq3DIjO zeoNBVJ7StioEH1z0O|&~yE};-6DwUlVKM`I4+_NX zY6Ye^fBmVxdNmGb)fb*ik?9-lW&S=Dl;A6|@M}QyO<8-%if-4B+@3FmMgg7T0r}pJ z?7+R=R zOz>}Yz~mugf` z`z$@euC;1z76lrE7`;1TV|k^zq|76+T5X$L2?Em;4()}PVjR3H&2Kc-)cll9 zCe#jjpYzk1Fk)T4(A2h{K#%CNb^KDq(e^bccvwGAxk5vBII=>u=jE*NsY>(oXu93y zrNJ~2t|ebv$eIuPh6qIM%D9a%xofb?vQTr_!PQVH~$;d`LgZ~gxZ;6NY0V&xbTNiBi~TdBd| zb@at2l`HQk?|-@J*veDocIA`wUZ3!O;=~_( z{{Xswn5$r9fIE;sI*m~kj?e>Rk&;d`=ufUH^f9SaVx*ksJoaPgaoW0SQCzC-FJ6yc zpYVR``5a_kL;A1gf5NP&z)(ow08efOP9w`G3P{h*jGTI8j-Bdsx7{w)QUNW4&M*NZ zlgB|=`xtrrzv2CV4%(-CJ8#gatGTvpN?bkS{cxle?ZaVqCn)dQ2%@Ka{bK_wwa5+4Kjt&Q0XP;UpggWex zfzKE??>0JHL7EBi)uw?;I z5@Tb?FOZ`HJC4%FZ*1gOq+O}8x?5QcCwwe^SpyJvt{H~z6bysVDPf*==a<$V3zv#G zU=cJfjPkObvVcJ&b7e>)<>QXn1YmxDn5+aRDs(DNQ%SyADETJWy!F+6>5}iwO(mm} zPj#ou`t&G1lOTa^qyf@EtkT9k7xt;iWz$s4jd z5>&4Zjxk*fGe;$)ks#Ry*oTzFkXQ!{M&ersjsd{zF@jS@w2J2S?aMTBd7Gj;U&?fB zorTnb2#+`lLC6_AoP7M;-3hk&C(AoYZl1Plvt712saxwaSG-~D+;5`zVC?$aSGR4o zKfRy$CVlwU z%5V54zMl+#v#)@el#nfyPVCuH>%leooco((eBNQYqidjhh7W1_ykQJx2pMKTe0C{4f6i zg0}dt=kNxP4)AR?TOc}_x4p=K9I-%N6m_T5wmLIyALU6=ml6f5fBp$qc zz;o;QSM!bk00mmq*m%FgB6l+n?S~#(JSy8(<#wI855nyrjtIfz*Vpi^B???ki)nM< zxL-J&ANTPXS>co0q$<=-_TI|+pC`msr1NeL%NH_O?kCHoT2P##{e>Ew(uzqmCwH%c?l_O40GH`;kymf`5 zz3!gwwr^hky?5aKAH*76-L2iFyz$L!U-yy4nB<5tLZq%aB4M1_|rW zUTH@Ya(!fHLdz2*% zYN4F|@SrS*AG%=hc#OjrhrwY~U2H{2(~mbZgn6YHxk*KHH5=bedtKQ-<*eH?!({n( zFEhoOwGz_oXJI6x*@#AN&>b#NIB`zhYmB-XHKBQh&l* z?rBu*o*XX_+JYU-r%YzJ4Y6&&3Nh z&x$-pt0bDMUZhu^CDru{dsnj6OtzO0+na-Ke#Im)O=k&-7TuzbGy$UxUkuoI%f)^$ z*Jai9{{RtO>nnRKPcXlg?;aOY9uyNj%e-o%8@u+UVLXi%QZ>YaR8ATnk%RB0`qx z;Z{ru6J@MzB&@M4gYeqVN4UIrqnREevKS^Oe&`B?Z{8Qfqk!NQ;I1~17!hBZXLw9r zPs12`S)EFr+NTq7CN5EPi-aj-o*uObr%gsNN;2h+it|#la=U+{@eVqUbH`5|fSm<` z!*FK{<@6mClw|VSbtzPocaL` zocVA%#?wez<&CtSYVAnXT0P7Ketl0gpc(=8=SlC;PZ@N4uEhlFl(XH z#1={~HA`la#Hb6ocL@mUBjJu$Ae;{0LtdP!#tu?zmD6wBmXdsy_@ebq+U`52b<)ez zrBXGhQ^m@hmo++7EZd8I)0I-Qleh0(qfNae-kjPMBZA^Z-Q=(t zmPabSX!6)FJ9_bh>yCS#I%B^T+GyAQ9h&wv)FGZdI!R$MM-gb{5r>7!v#Nqem%N3cJb zQM(PF!ynz_*W3R9tyU5*Fz0qQ`)50|?lFu}99wqd=0UZxd#gDaAmE&~Kp4r#Ok%F0 zf^dpC^Z|2^u03nsjRnrF2A=Bo(KVyi%hCDz9)eAz?Yva9)mhnHKC102mMtJovNy;3FjoJbK!39xP?bDhHgZU+OdG5B?;E#fC=+6YmH2W~Tt(4c>vwqNu z2?_xi0|zILaq274p+UI2+v0nr*?E9PZ7TrVNZfXT*YW*2W51Wttf2a{hZpr0^ z`S!2}jlXz->fVI@73g|xjKbL#2p(DIDH<$ebC!^(Bm>kOo!o#ECp=dprrS$2w(*_7 zJc<~C3E+Y=&PnTo+couPz~2bR;-85=8_*uw>hcyhLR)(%mV1d*+TBJZju&J}C5^(! zib-#f?F8-5J~F*5vjv!DIIBYom*8vSswuujXhKqhbCs;6IJidc&VK6GL*2-7iDub` z2Lna^{{S+@QNlqc+is;uLAxgY2uq%JNyaOg*=l~H{>I)c@dc;Di<>wu4x0~!G(A>L zUDgSi-rCN~#2S*@sSZ$Xmen%<05MYgyrL5i=HIl>#!roUUw}3L01Djdlj{Bl@vW`D z+U1rAl`N!=>sm=|Y>>u0uQbnb=1CkdlC2Vv`=B4}pV|B1wyB`U@h8Hg!+L@K-_iU< zXQx}<*?o>kro8aqh{dm-iIiDVZB_uvj1&Gm!1>T^sqw$|O!35@4D>GxYkI5?6W@(N zbf_Y>iuM${l30bj(s{md7V=%Q#w0#cJ2S2un*RVe@f=5!&y4Z;wjwwfLV4=O$`+DT z=*pfNy(-kPIC(;(8kI_vsz;qhrAktSlW=K&T=5oBo8$O<2ZW_M^__f*hF?xKrwTZH zW-IG!0apQDl%XdnDs=w4OW9J5SW=6Ut4f@t<^0;*+DQw=9vJyvS`t*DB~?QbrJIsL zEOW`p?}}B0n>(_&#xgUWzT>5R1@Y72(fD`c?O(%9_w8EQxG}n{v)Qfrj7tkVCu-fo zjL79O6*px_UlM46S6LXN3~lu}>&oXC;B$=r75;~CrelN8a%>K5gqp8Ty()555@{}K zQI*tIiu}t-Ya7|CpT>CH1zfWiiNIEag-i}2t`cd*#VOE}rq!F1OWnFoQq!y4%r@YR zGh}xd$Lo`fb?HbDN3~WFAa*%m_}jqku;76(?tZw#NztNmEAyVA&no(LfS~uNmcAK-hzsRDN>Lo76aACJ@F@i`r z&Q5w`7#(`m;Tt0e(K5ME4srLePZ&K3J^87jfdlp5#sFa02P2WVV?VDotre+k9z!q8 zS3F=Gj{A849=-YIhX}pb;>;;UN=->!C4Q@0uHQ19ybbg2`F`#=&VKjOti+gRZQtt2 z9XkI24_xur-n62LzHP`4OlN8J&vQ};qheENQrXE==Wxj!fzKn8)43pXLZuBCE#BR3 z_WuAc>g-dBRUB4|>1)#If0;vSH!Q5)>M}9uk>9O5WWV#w{$jlid@rb3cyb+PdkcuI zE+>n~yOuqW%%p%y$apz9Rs{b52?x+(n_b)$3Ev}bew=65^rcVPwB=34O8l+HT*~p? zT{f<-s^48nsR`1lDpesURDy$)XBQb-tvJ=D+LpGRIl^&vvxK81btK*-F`q4We5dBf z>yMcC&vDH;q255)B*#4QjQVx!kJ7c)6c6Q)4$?OU%rq$Ek^(MKzTd>j7Nt<5$>w{@IEuE-EzlA(wJPaqy!=x|PX?~4Vz^3L0!QOGOI zT#OyZ?{SVg_0IyjOL#+-jYiVjV`7S%gEka>>@Nh2u{crlXN=bMD1Pp8Q;v{rY}S#! zxAVR3t?AQBFP5xi_LS+V-&Esxt3A@XR?~C)z5f7$YR`55016MmFqUE#(%r-+KP)VA zlE8u`l&}R#=W6c3I8()bxmX6N}b^to@h zq}`H9Yh`4Q>7Nv3P3M)lR8v%FT_lrobZDtvE~(!4*4BNS-cf;%LPz9HDIY6-Uzk7P zOplcZ)RXuYIQ=S7j4(a=ei^Q$`C5IS{15nk$K+hiK5Jdyr(5n)M%_1;jBiI>+2}wd zao;3kuYUb2`MUoAg0fl9Z{u$aI|$uQsBjhAc?M|E9i}j&?*9OMdPF=@a?D3T*9V@x$mw66-w!nd6T>Sy?K3NJ*Y7VlKgIaqjyl)fz6sT1 zxv&bCvG zjN|15dz_xN`NL;BwX>k)v}+h6INWoBNbQ~p13X|3YxIlZ0+Haq4HJ)-P1E9G&UdYX zWR5=X%0MRvra&xAR~#K>efg7Zu8P*a-F`>&pN)}l%BWrY)iLu=))b=G zuQF;WX=`6ym#%CBoSr%SzY6?a{{Vufc>3c()jk^OTI?E>zYVSYBjZmR_{FR&?l0Q? z^gVy!?X9)Ek;fR0Iaf{BHHkMi_6Q$n3P`WoqT>gs{J+M$`^EkY@Q;tQOaA~2c+bO{ zXNmM}V$MxE_QO}TifArvZXP*gwv&S)ww738nc?2Z{!q_M*YsXRnBlU_#u%Jl9<_Q8 z4~nAR8nh^4Fw?I>RB2-<%6C$$g{x8(qfPs@Ib0l|a zV$!P)dR3khqOVSsUwSsC>cSJ9@68xE+f)3oz9;yH!Ja4!6G?*mrZIRGKEz^Gq;wixC4*1@&1XW>C$QXH22V~G8t9wRXqELlK_xe zNdiAFBp!1h$83L0AMjW&*_Yu5fi=y3@8C~`v_A(}=r(DjPiLU$_SW`xcUM|^M|_r( z&v6qq!XnPHG*P=GfVd3csQyO$O`+;mSF^0`Gm~{9n~jWGMiV$~{{Sxq2^b?F?|R% zZX&pt$!!!!?2>GVq=6k^E~=`gFE?Yd3~nB?toRedJ|fqb;y;Gq6ZlT|RT1kNTv2Vd z(=H{BF>nlVzJALU%kOYs%qt)nA9=iP!{I#E{{Rg1&l*_81;y#|<<%bINml3Vl0|6H z2%?v1XhYq>^TQj)fPlnsE9-3%4IcCMPtr8)JT{Xyuj8e=)+R@3T3@p!n=H1|k}(yu z_qrCA0;zA6!N%q*UkSxkG{p$AJx7}kWG znn_FUGb}R8uvv_w7()?|;P9B*e5?19jx!O4!ooANa;=B|0BNZ>yK=_83Uid8qSU#s z2-OLuavTOGNvfr5E*uaT91oE5Lba%^TE6ekFN>l;?3dXRcTi>Xpjmn}L^np7H5 zf4ugSx_0IFlV6^?b!p>PXHtzk%LhqeaIl?Pc!i3O`$bh8MNBlJmNpSp>B6lja?UjA zO1hMkTn`-Z_rkvrYe{DXv>#^|H!Td8*TZF`6D~>#ND9DZT_2uUp%?*y?yv22yUi2+ z71iFBx6R?(%a@8xI>1iMqBj#0bR$P{k@-)SkjIVetIC1uH$E|&Uhrfu;wQ84{mr$# zwEAw1qy}5ttAg8-Yp01_5*LyPrI8Xz7==5K5Hrl!d_lal)TPrjeLCiLNbVa|)?Mwz z?AFq%z!EsXlPb?T97s@z%dx>2JazMYT<0e#s*|GSMs(t>?4c&PuPuGFroH7ZT5UNb zle0dL5sJrRaW$}YuvmFUjH${vd_70Yh*WuMP{gY1mX#bOIVDzfs!3PmykkYlSmZn* z@bgUZ9ge#U_tMzv8djTodl{Gf>cOB2L)j9HlE?HF7(Y{q1R`-pZg%n zUg}F(Ztf*5a*&APj3HtqRcTml$S$N~>VMh$!MfJ3pj>FWOb_AvsZr&-*6wbuVAGN$ zjifV3fly3VMToRyINBNfwq)GDM})_$n=Pvp3VqrWb7irX|8mTI@TDx*-^0>;; zalF0Ksbi~Cp^VIG)Pto@DuiiZt4XC#GN&q$oT*fbZ@?`dLk6tA3MxEiSUjb-dC%o}x<%Q;-aXZ^a9?IR~CP|t})s_|6D#(1aE<%7C z_nUzD^%on7!3^7ne0A&FKTm#Z?J^8LDd4@fDNdD4MQlX2)2U7lr?QN3a*X9BrA}43oMNKluB|6x%n+)H z4qJvDNXIM(r>1LO3v>f^TRHU@;Qs)-{cASdi29Gcj9?Bk`F@qLYi^P_W*qVcI%7Vc ziT?mRSJBX-+vLBx-TCdac2>3fE8hNIzisW`^8P>Y4GFD{yiuGe4}*|7&&|hfI`zrO z>)NNZh2&Ak$TD&|;4$2CayY^5+MggMA20Zej2_(>eS7*=jh(yXDZ%-0LgbPTcmo3@ z^aGA-q7>ww?P=C8y7NYqs(VSO+Sj(XzU?inyWHx$FQ$pERfbAL1HR%i2;H+EE--Mx zxFqrEU!#BUPYLbE?J=O=$rJ^2_-~3V*@qFRd$ z6|S8a2S-Tw`GGkZBOqWF1dvWU4A@PRS46m$mFkg7g;rH?yjG2*1RdBIrxLZ zcvvofV~$v*B${oxQ&kg`Zs|Hy{{VT+uH(d8G(Y_eP1ukIn8ys`n7 zNf#y7CFsX9j@pLNDZjCn>Vd~0MzuKzR zr%kw0RVY$bD$pdF)wT2!?L^%umjDu2{&&1#1bLq!U`OSJSj&$o^4QkWbTIttX zewC?eH|IhA(S@yVKeAxEyN65?LS?uSyV+YrWkEE7UBC=S3+LGRrEb8f&#pn>dY(Jr zay{|=z2T-;fXTRShYw)!czkR!IV`%KGL&P@iG~g_!$!2ZCn#QVrl#7IlXAMYjQ(cL zaSt7d$7f$wtAcs{Dp|!`1!+`r%V(Hh7Yq&R{_*=5)#OfTOWoC8_JqQi&gS~$9-oIj zD{sU4OxmuiWv1Ff)6IE2aReCOhLR*ZasbZPBxOhku6i7t60GASDF*;@PE~m74l)i7 zJ?r%Q{s~R+hRfnl?IopZdY#RL7TytwwK(nX5ggr5_k56ee%k1b|TRF+K&uLrvS~cN}nx_(H7#yl8Q;mA^Rb<+J z&WtHawMy2q=1`?dtobgl$k#H|{MOX0X49{xvz`+KkT_RYIeo+vf<^`i9fxuF*@ZyE z0&>6u>FLM6^{=b{0BwH&Soj0>gz?UUVX50{Wp8aSC6d}B3^BCnED}W!Dy-nkWbMi? z%40eCnOEi*BP;vDK~fKLPZ>yR_3yh81nuE!&Vl_4dtdXH3q~;bRO3>$I&!>} zWYYJVZ6|NQ{Vn~bzh`Ce&+Lit+T}HkEtf>_{+X%W7%lD6Yp2wnU11_=5(O@?!Kp-x zmGc5BgCh}>__EeA2{sN!+~oD`=(z9GAB}%nf3>gd$6?|xgB~Ezq46KuZ2T{v!DpxG zuz_$M9U|HrD|MO7kZb~IWQ?MQ!xcF@il_3mtLa9|S-I2XXJct~Dug3|xQ0!@rNns;bt)W-_bIye*2S8qN`@=O-^^E7NJlHswysp3CUGTEb!Q z9BWosIMI$98J6IFtqM|cjHuvaJQQlUxGq|iAx1KAvvH3t8P zdVAKsm1S!!$rsQ&;y3aZCfdGd3=8fDaSW@l40Ub~Z40{;nskyelu)3aGI&wPB=C4S z?^N}XE}CYJ-awZN8Uo5gM8L1iGxxVBY;wJL?O%6}&$8MS>O!U_ROii7m+sPYjOn+1 z8&-^((-u4^LxVyt3Q}d0ue%a^*)-+p;*? z2MvOG#}$!1q_^^mmQu`HEJs7_&~iO9)4y8$haHWpjjdJ6q^Ayd7&%(}iQQhwb#Cjq z%SMc;#xcJ?Jx9$eTG~fjUEiYJecN+Z7IMjIB=X%MR^7RX-H;C*2T_yIar(zRyQEb> z8C{hZaLx}4mBAe3WM?(Ibu6s{S`Jb_oBjpJ2i#$Z?T$F-jFpMig6+!!G8B#hImymA z$2AbA6yLqgrq*k!*7rRz*3n5Eq1+9CVXz1wA5ML}2(1fO25A~0nBsI|WMZd2U{Fg8 z00Us)f)Amn^7|4!jkBLKfs#1J-g)nwlqw87+)- zIjv;BcR1SXl2=};-n+lWuB_66a<5L!B^R}?d0s9u`Cn@``fsQA!T$gR&w?1gW-o@% zF81GUGbZSnN0)OvU>`0d=j8;9XC!3yuhd&~0I28YDi2PFB;$(w(fiLyZAmuVmL0urla?P3J1rL6$zQFsw#JfxpaIZ&($PhFC+DIS4YVGc zm-&zX09}4rf5BJ$KOU|7Jz8q)k$IX&iTo%QR~XvYzB}-}giGf07gc2e8pY^A~fHC}7$ODtX><8qpf;?QFWI22cfuA!tJJ;27o;`gB zVUM`}8TiB{-J*+t6f@u#;{|eZKSbau||>9QPz1 zEA_A87JuOq(DE^zF3984_c$OAKz%*y^v?>a!xNiUnw_fCz|@@Ju9vfQ9W^iIZOS&~ zP01}wkpb z1U@8uSF*CWJ|XbWgLMmplFnA%uFpf8nviWSVmh+Z9s$XtCo+BWSQHt@e zk6J#7;va+FGSa+7X&v^HapB!Y4MGVqvgjmcSW(U!%PnynNWUzEyM@O*e@WyuDMLKT zm3Y*h3Yne;o+6buXI6xHJ3WXNVy*c_<4tl?CdYlT$`ry~E#r`4 zTn3q z9v+@~InGq&Pcg^gaP-@5QK3&0QV~vRxXrq1(v)QRwR)}p02s*VQK?@kmLD!rc&w`| z#nh;uv~}?qtUVglCy13_;U`*d5TO46hZ$PR37@MUv+lp)d!G#WW8sdaq1|0-UO3UA zxBk_)(;~l`3l+1_9%yYMx?6}Mm(H{ML)|^NTt_6Kl|vfn{4?N9cTD(|;}3%R7lY)| zv?kPNzq)@F>JeSq_+L(iwEb3V{ZXxqi>J$P3@J3$vc(n0mKX*R?osm=mE-CD9e9Vr zmwIjES?gLifumg|p@~e8-?#Q%laSB7LyLK(kcLLi3IYiZJ=Ng z;tzK5?C9Wfr16dw zFxcEC61Ex@xo0XE+`|JLW;YQu?%frIr3gYc_uU>yUR<$%eV_X}*!*5LQN&h`O@PjD zdA%AElwp`;^f5Frm@EXLbepM}S=5x`=_)atrqrQHzAxfWi2NHjjrE-y!P02$;Jq5m zTiNROmJmg6sNAK**3!)sXzw$`O}fhyZ)TE7W0-{uv>$5d-j`s zPA@(ic=ws6Fr+CeN9EOEvrWhDcnvT8UH@~+Ub=8DZ8Sd8pNp#qOf;Ay`EVHsHPc2S7!ogH7Ol3gN z^Da9v!D2I9ZCWv#A62RD&u-5p+|u8w!*UASGeDxyUp zhR#64blx)XZkK)F>pOo8=o-b=t)xcRI{vK{^~J`YZDR4;I!7|dC4vyKi>F^Lq4Pe> z!GnCJKbI`D{Za;=$eC3n2%&cJ8g+6cI zE=qEnQc-T|Z{Ivati_`>zOujYjojYeT&(MD0)`fF`LeshKxQRbNLFK&atH@-Cc8U7 zjZta3TU>Z@=TXvisjQ^5lGZttSt3X_x|q)BSOpnYXvr=D7Ws%jFr-ctTh3qib26xr z2r@RsJZ)A`2qTbRoc8IXZ)b3PTl%pMQd+fB69($CDdzLIF|Vo4FMWLTqD-e6ZO zp~>2Vo!Djs;EMe-4UL4{Rw}G%)T)zGomAr~D06EiClxDuwtn)ux=h-gJT?OjMujLs zh8~1rMui%1vZocx2tpL1xsrE`V`#2stgh9Lej9Tj3KfIlh&XJ8Mgf~0g5ZM0U>*-O z(%M)`E&kE-Y*xXS2g?NG0I?eZIp7ir{HwR{#+#>Tr&3K~(sb9RnhQ%CNmCL7E2=JI zY>2}Pj!&sG4+noN*OWPS4pzMoQO~zUMPcnPTGODbj?hQC`h`VhPHX zN|h%lM-NJIyj^7|H9Knt++@^~ONC{Pg85^2%raHCU~|_DYpu{U_rAD>C@tigd1Q(x zLJ1#q&fz0a6FZ4=2Ha%l80}eFeUeTcRdKi5IUcyr9YuZ3`w4tDvGM1}&j)FG%OpBR zn{#ul&n&ioYm0W75Y!!Us{ysXk2A*6%kVgyU3tnBXwscY@>x`p zrn%H$-MM8a6t1l+T`ewsrwZgXv+V0E%dpbrmOB?i45uq{#x<%!H6+uu`6;>0Xx-wi z?`U{GiQ#QB+RsJ^=+VNGNMu5fzI8&umDg}lw+L~_ZoCTp7XJW(Xlq^@@TZP^M|-U4 z_u8(jJ&mGiP}rFakw4qCH&^)^Vg?Ypjq2N);xt^d#4G2|+Y`ZhSB1Vk`0qy2E*kE_ z4Mx$e$hH>H#Gl!=F|u36s-VR4!#&1UMha#z06eoKzgvI7Eqp6su6$qDp}xYcuZF(W z3Yf$Bv&XIIFrwtTd3#6k0Q?MKWSaOd6tUFve+{#0$vDuflVEDngM62bc{$D%9V^~0 zQ<9%8+q>$S`agp&5WGUedpWvll}zIb=QzvSL1CjjJgQT6=7gmRUeYmEmZ@7yAHCi! z{iZxa;jIrs)I2reB#z>1IPK(pO{Kb$KQBqtCR?fP;Z4gDJT{@El2ua3RmK^E{{T0i zw#V%&@osO3viQ4I@j#l|$5>rbJucqP#?MQV;@Ei`j8R1lW@U|xc_5Ii>fdf+T03iTs`uR>I5 zHBGz*7QCTOwVh`r9Au*!kkTp1b864i{9mgKyZa`-TS~Pl(T~>WjdO~lTBr7fMG7*7 zNk&ps<%W!)l9IZNmZqAf!C*T>G|?A+PwF|kxy&lSBl}xDC@ciV{9XgNwDN? z47iwXUA*lpo^m~6OLMrk{{X$)Z$diro_kmI?}NAs8GJJgzX+-iKD{&iG zS;MAycpynU#kDfX{vx=sX1}!` z_$6=b!k-O)X1@-!da%CL{A|~n_NFGY!Lz>AEwsCMgbw#|0h>k_Rx)F`S|VOkX zrxuc&RIG}2(1_TAg#pF`2FbuV10)^>GDjmltMt$Q35D>l#ojmlqO`vd=$c&DdOw6L zHH+<5WR7V>ao=d#zK?AZHMv&vB)PqZa{`^fUhe1YLVy314`!*H_Zzj^|#vx4MGipk_&I5@fU^&hpt+BDs|A zgcd9!X$e9~uLp|R))Ow^yxOb8QTCO2FcSUZQl&!~`>NA$zcZRu8&Zs0gmreY_x>4W z__=Xz9~nv&n#ph&yxN>xX1%s22?)-OE4wJd^?j>^r4=dCUuwwxXZZQyZxrA73&)yw zgtVPbO-oVGZ=|r0jWfyInu1@v*9Li5Bw|S&6>+$vIdip$KgPF?d^M@~bH$p@mEsFo zW4{*@pe1)s?HPs^m@G=DVs?xuWnG)&Dme}h_UZdi{A0B6CXuJbqUqA(?8fg{y|>YY z<*VrPO(mhVOQs00OEmG78A&%80SJ5l03si?$BXvrGo@NEua{zQQj=BTPW0Syk#AP7WhG6yStTf?6nrUh zc`dY(MJ2`pyMVHJakBu#l>mU*87Yy-$77ROS2s}4Y|_Uwy~L@R!?r<_EC7rWK{#A8 zpa1}z4cyt*V6?lL?p8(;7G^*WcNY1JaKHeKkViYQ)p^COF3(Q;5BhvevoMumRVOaz z05)(x*}%d2j%)4lm6j(JI?<_7#m;=b(pRY{UGgdF`I=kZ=b6)7g4+D+Z{zeCO>NgCir3n^kufR3CJ+kyMN$3cU~9h|@d!4;7Zl?QX+;{=?N zdgs)RIIh+mAVF~_+95fSLm_^u8=Mexl1CZH_4E`?qa%V44W#FU93F&y;CcbhN3|+c z<0!YH_nO=4QBhHfS|r-hwyk^Ze^>YQTr)##WRamQBLpX*APvKw2_0}h8o#33 zB(HJiL2ok3g$qamG$5%%AZ6Obr`{Wn7##;)f9$7<%-Wo}DYE z)2yxR8bNVsDUrejh(vJVmn4QDj1b@5Jm=_lj5#05-F&s*vPIUHx}uv-ZAD5qy6be( zcH4g5r!5A78!Yc6aylkUa0u_%(rNY=48TBJXnZ3G)wl=c1%N6`aHFwe zG1|R83lno`GsA5(X*8_Nh9Y*U7}y)-1U5M!06j2jq&j?Y%(22erb#1qjH7N<5-ItQ z0QAS;aC&D>R^r{XYr0p~*1Kxmb-MKoHAzy&Min2uB?nFtmDKrT6@BcSn!dJeyPw>D z{1ZAdpR(tG@EFE)wPM31S(f5#usn?5fNdEx!SLZkU z6H*}$?7i^r*f*HJ*&B=P+y1iRRmRd=rrhUt4sn5Bqt>zGzIX?wJLlBb7YjK@hB9?h zP;z)hB;f}Y?B!Nmk!s1Ntkdq#-MGH2r<_-FZAsF>xkpy7^*lbUtESsYykc6r7t)IL0Ja7U>)9A_l)jCWpw# z@~_7J5!U_^>$2I*@?2U%S>-5Q*cf@$*IzD*k6TOZV(6nO84t2#M%64v^rZy81uaW{<$Ih0(W zy|g2&RIj31U3nk3KM1^eV|k?cO)4X8j0P7f7!`P!;kN<^0f^_+E_2WCf5Dk|_y@v| zxVyE4K4X?H+YC}{4JSMB%Z>>>3F8F+01jRh{h_s;CihI!EN&eQ&ZTP`yR$CSBLEbY zWeg9@2m_8mKA+n^?9*`f9|-&%B<|A6`b-&iAeJDLyCVRCSn>zI*YocT^7^@Uds`1$ zhb*O+V=JjRxJvYE;OQthx1&^ zJ<6h%&MHbSNn2P)sy>I_qrd2X!nxlSXck^8@csV)hi^+Qo~*G#(nd-;1e!a5$Wf8d zmV_?lVBa@WTZfQGtyj8}$g($MV=cT=Tx}<4K1wr%EPm*6r2zx00x}0by24c{)uUF7 zoGVkSN>rw|jabx#>9pEw;)4A(KbLVar93@o*R!JORE5<#Zg*Qd#W>rllSy5l z#y|WQ2jK^WJ{ev3bHe&07S@_$TG`u8Z*6Fit4nQR5nRZqLpE$)K#uJD<&k3mum|~U zxcF=0J4^on4eOWsE~{zboqJeFbZt&+X)W#bcZNigRI-*$hVa6&!q4Rg5pD&_ka7Jm zf5B~^;+MpK9BEp%uq-qk5%qi1W20N%?l%^q8{uI+)WMyu9qpYal0E2vID{gEuD9c# zz;6%yLj96IV*3vR_-0wO--q{JB5xRYw$j4QQqDWC5NLX25yrwOmRU)#)Z>-f85mmM zKm#nFyl?1yT}o>OkmZ=mR>b3Sy!SH3Vl(}d_2ZD9+PAxdbRAUyt z%lv2XhrsP0;@|BVYvDabHEVAV=>8nNpIEihwkEDp-aClm`zpzS9RC2?5L&4P3#x+q zKv2WaelL7q@F##Y?Qh`cfPNhKkHelDk6*dDiu=VLBU$y!yGwiP3GLj+Zv<&-^IPc< zKu1b#>SM6kT^4!JevqpHiOUfyb&gjct>61&~K#5WSzO}x7>jH_FWBB)W4 z`1$aDBaX2zEX%!=XL?mI*%lI$l8pVG96nV>rCGv!tNo+>qBJW?&MWtn`8ku3^clu0 z7mBZyU?@xK_&nni#TB!K3bCbM6H2yqLk)$a&&eq)GK-cb5nl4B)VZvhKDPasu6#T3 zN5-@08oi#UrCCJ+>N<`6x7#o8UNNy`w_8+TA%#W5N(7*<$aX}<_Ya}s_$%=r;y#nA z+;}W#`UipRZYGyj*L6#qYkTW$GRo5S^5th{F)gGQiDdRE5M`N+(U_5p(eL=<;NG*~ zp9pB$+y`3mHixTR*odyKG+jbiE;V^3cvdSs#jqu=GNiB06m2Y7mBuyqjWyftBGG{$qwhw^Zp7MMJly%7>W?kFdnY6)YYrGL=dz z3yH+b+0w*1RA%nuPOO`fik&%A=eDPg^?Q9IPSiX*;N5h2jdyjV>kVmlGh4|Pp2=r* zGRTapEORM2QqpcoTZRnT@+)}OCKnRl`OJ^=aV*YuFy4W(FyDIzdXO;cN`g<=+9$(* zhyEGx-npdsms-;-HRRJRH7Fp4-r8stenWSVh{R#|u2j*;;~9}Q_*4~BG&7hKZxdnDC0aXMQ?b1Wuhb`TUQW^4wQ zUo&*F7ITsFG`d&AeLBw1RhPwbJePAo@#&3Wb~Z8p-w=^BRAx)=6m`tc*aJShJYX9UQS-I0X(X&~3aG;!hm-FI?2%)$Hv@ zhUEKjwn^f*^W;RlxQ(E+^OAX7#csex69gF!bBudb^Td_|FTm7`ekV-WfKsh?3sk#U_I3k{4N87t`L*mS9kpCFGF<#Kjn*;y|Z=ZFj3luj#3%>USY7 z!^v=#lX;R#ttljhShCPF2V7%XO{Slu_-+|e;>-x`#ohJDEd{-_L0MKNwU+Uv zEJ$FH>?ks?_b>bwf8bAxZ2TqQuM){=q1gCm!!2yr5sQagyPM0oHM>bdEGiZ_rIP*| zh~<@JMl#vUiU(IM1lx6z_a zI$NlsDQdrMRK0YP;dZZ^XwMN?m@!9iatjLlXwx*gE-xarMERO^i9-GJkVXOM#Et+M z&nCaF&-f%?hWtC>&xUWLYaSY&+Uol5Yq!*|EP@N@e5+44$eXK23f)^ru#Kiwkgz$( z{U60l%9aC#^9j_KENaG`I&xD~xg|NqF_XG}?=$6U*Ry)0kGb%oo2QP%=Sqa?(aJD* zoJ~4ue)gszC_)YoMeZrew6<;(+D`2=@=N{-mEi3f%j1+UrRh;w8SE`5xo9A0pk+6g zv68J6YZpkwYy%S_M;fSQh;7UN0D@ua7P=3{T}({|MA`tga!gFdL#pV~4=rUpnS8fx z#BT498-tILSmHI3mOVgnjT zP81N$n*7T%;vBVjMUTN|8I?I=zN_^be9hEVD>>AyhlM8=uGLDBq^{nPQMJ|Iwc*7a zOngqoVyWSzurzVmmS>2Jt3nc?g2rK0JViOAlD!|^Y}fB1<#+I(tv?VxC-_D$9qJlQ z?zN-o>t*o&0K~e4kjo&7TRlE62l%3CukK;m8_SLurQYhTu@E8Ukx%m@`*--0Oz~d7 ztK8^%!PNBY>+6{9?yTgvmI-2tKv`p8p-QjtsQFv?0RY$TZ|!IM19alsixX(MzDhxvH;!{Bce z`~va3-WBn8i*zp&TG(HkXl1d~(^37@(xkbzXq}VGX#A4lq;@hBfC0k(CBd0q77)f` zX=5dftA?Cv!i73Ayz0`+urzDN&A)yXC^+5OG^3{H(RhuU!!W~TI4Q;$3?%WD@YJf} ztHPtL1({c^g{qrPe+v+sNp)UU@XIYC^4|MKySawpC6Xa+13I%j@&mMzKr9F&0pDmO zaK|FOdOZgIXoQkSZ*LNnS!KGoh621~kD5hs>T(8qWak}+#(x!jDAj%v=oelX)B}#e;@YCV0hv3VtL9g!oJ*R29d%UVxy~MTyQQoa4;goCW;X(;2v8W^}41Wdx0I}Ye zdE!snL*WhHfu-FlTWZ$Hc`w>`EzQh!nt+mjHN!2u5y=R-MF?0b>?}zHe|Ucb{A1y$ zBfN#9ywz{6E{B&a2&UEvENnu~*LRM>HC2u%<3?E3I17yAkB{*~k2Cz+KFP4F5U})c z6l02~PLh-=QpDDlCY@N$T+(hcjVv;8R?*2`?(6hU3&^k(co#gWLN2~1G0myr>eGTz zoq8A=SUR*P7**y<4yHP~oV9-EOFRB${{X>Tbzc|jxB8!l#ntuoybGqgXqML(P-)ZY z&2!?dJp`uRVh+vwrJSzv{{Ux%$faYAm-#Ka_|M`c*KDoe(e%rBEw0gJvbVNrW|YTp z0Ey?AqbOjz8J$D&Neo9n)|c(;e=Pq17`$6|eLTiD@aLCi@y8=s+Q%NJ;wi1fpt(~c zF(ry^I0J6cyLa+Osd!52&&570y^2d^`yRWgyfU<#9(4ZGxY(%+D>$7Z3nGHsT}t6q zNEP)QIho_|xo&AiW3f_oV}p{Et54phy?JB7tpXy8g3I716X}TxFKZW+59ly5MQhhq=`tMk4 z2w=L@QS7w4)|<|{D|Ip(%b6sFKn2h5BaAD9U&oQPisy67ChNlztIIiOZKz=z)39~g zTO<_SBmB5HAJW(C5&KnqGVu3+JQv{fy?Y-J_*24G;_Ft`))dmMZeh|iD=bEUhIrQI zIdTsyRW|u#hF{KnNy6s1ytgjH;i}ifQv@VG2hd^H*2WhqVycdp}7jW*`gVM`9>Qxl_YL2}tCC;H#}arpMr z!auXGiWd6T{>xOnvC~X?iW3|bYaYL+yh2%``AadCh=@O$74xtIll*l2P1fh}9<{08 z+iBOfklkHflO@FR$s@wj`HLf&NC@ig`%)rD?<8UYVh`=d{1gNBi?#Tn@c#f!()>H| z9rgPwyLB40aN9{8mZPfelIq4+bBrg)3 z(v^^gE_(8$1q3JqaTqxSeFp;NO9hqSDoRb%l<_~i_EDy(%B<GuH6~$P*4jDm11xF03Ri#>0DN3}eR+U)NP1-PVP*S{GX-3jb9zkni5xRxvW|BC- z-xf;(pn}Q{3g$%|o`IO|$2GlnAT!2o(4dRUXyVvG83R1vE=JMLMt%El=^9PF)wK6} zmNZAg#<s*GKA7z}WJNp5Bv~2A83doqV;Jx2$KOzkl}RNlMwF!% zFC1jK4Z7!Phz1^9Ec&RHal01Rj0&qhu}<1Z6TwAdC;2uNWYn>p}2tp?@^KWD+=KjS+Xo zk*Ev`uq_)E90SS8A1_=Q?Cty`Ev4dE#RIgN#LgkiA-M)4jii+THtgdJIL=AxjYX=2 zl#+ID&rLtCGdEE|^0)kNaz0IKb*i@eyZ#z^ewpE!E?z(MY?8nkF&_0EtJSmEW1JfA zhlVYLiZuuxDPvG$G7N52P*ekgL1hDsjO3qM^@~pg-P&41JUe5Pa3Ho0NZfX)3Jy*) z$vMV3;d37mge--XK*P7of<`cma*4=Nqk(~sqqQ#sv~V)PrpX@USlqIN^1;Cp9AFEE=k_3<0T0o07B=U21&zI#-p0LZqE89($i1Vw!H|UjCC;y z!VaZMO-3`7(`{P!vq_}YwpuNEH~n7!0Kq;Xjt|+l!0Q}q0FO&((NZX507s}@Y$~w) ztC+mD$iW2RutqEN0@;VJRRC~$@%}aNpX?h9Hva&#mxCh($xS9nGFg7|-rTMUzyxDG zIq8$sSKT(?55TYL0j;=lDe(4L(%5)4Zi-40vhq#4dhXBYZX%PbkDTPBoT=e%-LBu% zu-DhJvPjsu4-aW?viDH&e}T~f4kOy%5WFOzq;yh zOUL>&H;^Rul4=$f&LtUETZXlb!hmqgh9HJ2TNvrhea)(BalNXuIK;gk|Wumocn z>)V5$rawBqIcm3y;~fEQG3OmyPVxgrT^dtyZRLgt46KFl97aRqDx@3%`}Ha`s$ntw z$_g{U;yx%T$}@x&NXjvGP2L>0Zv3t2eruW4ojk`YYEsiP!RZ;wJlC3!E!Moe%}UGp zQ{Qf%;s@;M;3$(s@s5UM(I+?dGRtdbz`$NP+U2F%*a_x>M7SiDDh5>Ke_sCp0Bu^^ z;m?MkX5Hl2C_|D)!a+_>GIk6TjAy2JHTv|o!_d|SC&@Sut}%gA-J`?Muu4ABnC%2 zSY#89GuY!ll(kD!)hsk?JB?RUx{ezw7@A3BB>-F;Dg%%Vk~s+ylk>{y7z|ld{DS9m zf~U{z9G532#m&tgR<%}X^}W^f79rA9D>~M6y_HUM^-VanX1;%#-pBEO{{RJ%@U@-C z?JMEG18I=n*w{9)XQ$cRNi?Q6xYVY#L$Jn^7DV%MZL@-0H;8a4wWLA60eEBjt~Dz!L|!->JuQKOXM zu{G2pz3C}Bwd=Zy_pLV^WT#}*oZ;^~%a`%~3XKXr8hD*naGfb)IM!J;Ck|-JtRkmd z4NW+%Xws!y7lypr=5ghWqZLXHU&WV#HOV}4`%L)TOw%Kd9UIT_o#w4_ko}t6*aX&s zs~FnmLH5~YhSeTL1T@>3gART<@gIQn{d2^gHSsoqZ62MY$>LuU-{?Ai^`3jJCH0HP zvBTw+{QGi~p=nfYkaXieWPCN#^sfx*-?VSUi<`@YS@i3F59#+diowO!q2liiUPzIY zJ3PZ@E~2Uj?_CyL?h&1zGf&`cM$5yt?cs~N+sMAn2A?;X9G-K`VMtm?lMLI*h{$7) zA0Z8ZoY%ql&6)cNODd&a5rnfkSUfV9HzaWQ3@#eFnsI}E+NCP-|8FdbBNWw$}(enTp3Cc}=rS zV^?57E3u3DpDx_-Tab8K@5582hPR^XNSBP)4rI4$M`V4-*jBWK9 z{6BivX6`w>wUH))Hr!mfkO8_=wTx@CX=TX-NrgBW@>_jdSJG#&yS2EG-YXTh5wl4k zls59kwycCIZf0VcC2~}D`$xt){2nHP($7u1i&wU=((SCRE)Jgsmzg>(%(o$;RWh`a z%{d#TBsfL#eo#R0e+>A0O=P^g)Y4cr2Avrsc+nxUw~T}f3Bm>sI|XS7GBUAOc2;FS zZI)o8{g)R}(Q&C7PBk04qxFc!ZkYSO&9TWP!VKbh#d1fTGjXoCLx%DUCmE8Gbco?Dq45$%-7v5=stBrZVD1d>#J zOYke<4~sr7OQ`Ao4AZ5W_eHf!olIE8E8E&f8p**#00wZmMh6>sIA#ERp=SO-ZugBg3@b;ytcpu|mg`?HmOHFgc5qNXN zvPb=!Zwg5)FyCAg8ZFe13&?GPN~SxN9&m^xZ}6F%R4dN`mttvC#MY{pGoqCyow=mu zoSb7GWUp=Iv()wQc{MD<5tw4CVQ~@39YP*YbFS>^gmozS-h82+>?mb0QoVmUUTWX;W!dK*3#t@s2)Dyz#z? zadT^7aTqfL9Oa6r(sQ9r(Tz6wQj>5_Q%YM+!9J}mPn*hes?x=B)x=S) zN|Y(q!_Nl}MOKq>lpR-9uV+rQY^tRx&yrGJ^WXX@{{Vu0d`s8AXT48H)qEpysp~p- ziS141y{1^$2e*p)%}h$4Y>=!XNYQQtxMyJ-$B;L-m+wEeXYE<1{?yt(i~JqpEmu;} zt~@nyeRpS|-A@Cx)S65hcBN-y6lnW4t>vZ0RInmhRBs`e$MdJ`^>3)?-vRVr4_Pzc zI_a|B#?}ucSKe-?V{IJbSqU;Mu!U(^%WMxSu~4!M_;#!CgU9|Z@fFOPE`|18LGL_; zg68AQ)Nh*pQqoCwR2TClnnrEWfI>WRsR^|QNo5a3KwXl+O zrB=3$!c(IPQIER*6@FW!zi8t8;=Wac%D6J79y!iVuu@aR`wy$)aJXE38g-+Ejaa#R zN>niptBjVe5?Uvs`Pag_L=fxINqo<3Zw0|~I!4mCn%&Xj5l4?Vb4;kAws&EGP7n2~ z`w;3aAH#18+}}+;ooLzwMa}uSR=I2YPYv7vkTx)U>j~6`RXDhEq4#t6Z}7kNN%232 zZuI{E9C+5&&Slaym~Nj=yPZTgE{JDX<}Ozewqlbcg~^G2?4UR9XTkpf7x*XpFG`B` zCA7L^iVJI3)E?U0NgM?tf*2!`HIX3-0*H?Nh+83mBi->gKg>AU<&-GUSUjpO4!mnW z-(zc2jJYW)iOI^6n^UP4;_n2~cCq%J3*uo*0h+@c>_FwU*} zm&)aNoBjy3@p^9!i~j%)>v|oCj)rsodQ|1lBQHS=&9!d3F%X0F14~I$$xnG+tauBW@2T zne(}}2Ciq9teXcqaK>TkU@_93B2H8&;xP26RE-!?#8QnX8nqIPQ*IM-_xWzp_Bd+` z9G@SXXE}JXQyV&Zry7vO$v}+VH}H( z-!5l1~_mlW*a_3)ou439(B(Rzn@;r!1y(3(0QQ;J}l~x<=o; zDrLW+O+Vwe?PIIx{xANs0SJlIjyW zh#p6`^CM_3V02i}e>lIiAH?Z=Yp?4U7CN-Loz|swGwL@QMwO>%+C1~y+$2#?W-K6v zLlm$ZeWi&<07;U~xw|qv4kDy83^fYTz{?Go${4!d))i$|ql6rx&q{Zl1v!f)VRxzU( zK4(wEUlu+QSiP5n{BPh%EPOqtXgASMbK&D|+NPzb#i!p3Atlx7JZ4+1S~zB!CU~Oq zUB7r4e7f4uyhY$IiQ0y%;p-0wOJ$)Ho((JQw{blBUA@QlyfNJDv)>=~gZ}_%z$E#0 z!?lcWF7AFzu<-5Ai**}_@g1G&&lR$Hj;gN2va3le0G?rYk%sJ&cV{7RKS2KgXK#dh zj+5a_oikd|AQxJep)RL$d>$p9;=@XtOT9i#&A{@!sTJo}2thooL=|8=GkmKrz)m=- z6{@UTYNaY(*6^o`gp}${MKvGZ$w@0Vz3nwTEW0+xW2j0v$)bBXQudDRkzbTIc0Tke|FZ>wx1%RX;P6j;w~_bk^#DZ z^_WJ=YrCS?Sxynu2tX!n!DsocgNvSzX$^0@-_t9g9%`<7{)1yN$ z#$d3VwCU2F8ZnJ36=MiT+rcR}DAZ9(_;i$m7>{S{{Ux5 zm)F+%a>w?I7-zeYZKQ3e;S84(!ODT<%n3V)QTb)8>AIGssNP3wHqj5AGtD6peXX6? z$i-KA4>X0D!2klp=e>UDe0bIk^^LnegWzov>sNR*u^yjoX=)v0klf7`nJ}?tRUUK7 z%2qVtnRhOJ3HY`9J6wD}(L5*OOMQ1q)Z4|^a#)QwPYrW(VIcn4Ws34+7=>{ri#TSE zLh1ITQWiy2U#rV8Jk;>`I#QulwOS3~X+_VU5km<|Q*NI;Bh4sLRVqnIts?EI@Z3R1 zF{hkkvG|2jwHgwJ9~GEWv}p6zsZKQDsX^KTv_!yKiULjtbgfmKzJOCVer%!ec$&AaC=VL-#!1|O5E;(zOAk{CR;3u$_Elwxr5r{cF}q5e zjAW*pin5BlwO3m2qc|N*b{-16wromWDwSlP+fbLE99iYz6F1%|wUX7#pZSQo$bd3$XUSM^`WHJw%JOFl;_ai&8 zoD2^xx$!rhs0&xQeMZ?fLljU%1THqhiZL4RZN(Q1?8J@~fWtpS_;*jaZ89W+DJ@cH zVv((y77ex3vbG&}s{*)_Q}@ZF6Z9P{NJnw_+5l zaC6F@dk%5$UDd6;TBnl&La{b63#cWS1rD3WG1F)O5)R%-&TGl^SYf-C8))W?mteBo zM<``TvIA~qVuPGyk;ZrwAd8w#EGnCx4QBU2nZ<RSTA6B(YPwf){TExvCx^@Dgc{WhI1nE*d4=U02I_ zWo2vv8IM-(I*>aPUd`hjJ4n+mG&|dih?#GuUoGN}IITo>ne&*=Hkp|Skbi)9X)jDU!xevGlg510brfb2HpfSllkLlr-B_Y?ZHYBO=H(z2TO zTYBEno%X(oX>@$P9~V+Ql_}H2DwHwH4T^A+T&;4|grx^%$trS>D^1<*mF|A~e#T32 zZ}2a`2L}Ed9H%_b4TfqlvrYRd)hzCslU}Eo-0E?KnI?Ww zu!ud66VQNO4u~Wd}Xja5~E>}1zb*aWxIU{~rlc=59R^Pi-D=Vz2epvQ7W>M!xFr@wOL%5!T|oft z7(Ea6f$)icMPZ!Y^#?*+3#YGlCzS@Cq1?#x-E1Iug(+%Nh>{2Y|Y;7<-n&_=#yoP!Eg*E<>F ziF)M~aH*aGfztyY&zxJD*TiO#%PLd$P{3t$Y12})Wi<-CyzNPIT6X45Zx))-qxyG* za4@IAc)ZRvRaxe_ysJ)7lvOWsrF5dXo060xN-l9$vzkeA$s^X-k&>h^0I_DmC{P=c z#fVTg{Kbe02t4#Ybh5XLwOB65N&Gve6gJ99^6#(w#x1GI6DTs;TS8GRRz@jsx6bUb zHL`h{J}J`moo>q8PPKor*qFvl;oOs zP2H%p_E)>+_fmtENc&0O4@;U8jNrMkH57TJB^zDB5WA_LQ1-va8&(w{{RIYRki(# z{BN(r98yo={W&#A-GB_SX>wa?vxwWBjN?f~QgUN0=3$C#e~>?J--`bL3qBb9UDLiJ z_{UVXw%0r%uG`&d*Y^|2s@y=@e2oB#4LpX5*3GS>jv32JhD3Q|Osle27V3AHkCGtUSpc^hHskSu=rS1m3Ye^92Of5Qlw#bMbX6JpzRe1su!r0n`h(?jHdBlgnwo& zI$sPW)EB=JynPh6H*aFQZ8WVHPuHh!HsVO69%a;*ni7U60+&bJ;e#)2sd)E9@VA3J z6Qq+CZ(W7rF8_939{U*+Pw=te?Ax#Pt#EikBzqw-N%-HrHh93xR@BAvh zB-eE7E0ndp5WR#5rb%Jk&?Ury#_!$9Bxx9M3hh=v5eXlc_@#-fiO#Utd?sHkQ?FMY zO9dDt>Q%(ouTm7MN_AA@A7?@oV6AW6#xB-rzYjCOO1i}0i`MX^sncRC%+_Aa{?=NZ6r~+G3&HpO4C_(!^pO zRi0t%;NyXeDPtuC73}32RUw0eRQXz@=OroClV0pwl$uAEMs%=PI+SqqT^g>Wt43|k zQJiMgOhcfOcuvW*Z7Xhq`fF`x$4J%{M`CakY#&MZ z7el|A1@Kx~>GE9L$tvF7!p~~aTJ1-X(dF`r%jK15erzcxe$&C%@vnuv1t*JO(Y!r- zsL!R^%m%F^6*od>l492Ig#&UtGQ}j0ft6DrA2~J;8nzy?#NsGmac*>QwCgJOn|OHE zl5&h(qq=TO*t_#in}dV*qRjC%lqM|IB$#=HqRxLYi)CXBPm%Vi&3_QX(W|?XqrgT zvdk;#3)}D6GULWJ+OFG+%`WMp)ODG*yCfGjs%=GuliVVc8u`)6rXbJ0+CL}|q>Qmt zJ~29AeC9)8$ntLR6eERObluQgo%wH)g8Ti}&Ry#>eWJ9}niLI6Tfg zMU>!hxY}x+Oq&%_Fsqig3aU7qWZ@{TNx@H-+g;)1C_%LAr7y;vXW?d(;_nk(T{~)v zZ>nmu+_jCmBwuHa`%t>Na1jv_D6PS0IQk>r>xpmX{W` z^FuG0sx{4$eTk!Mc;QrFin|s+vz??WGXd*DRX*zoOXxDdA zS)#(}7*&x2#}j#bS}4M<&J>k+jwZ~p8I@cFD63JVqd6+7E)7K~IXE@^0_^(#o@ z5leFG5l52kCEiM^Duq}=EFsBaP)*l02RPfa+$}z=aX<_Norm5ATE>{>vDl$<}O7gq- zu6;GG*!Y{`@4}lq-vC2@s>^kM9p%btntj}|t+eeGv{-~Ge=ay|-g54d=WvT^kDa|6 z!XFDhE9+X1hczo-4{I3kgf_Bj%Bc>YX{X&;iJs_QHNlCbmNklS=!(q#Q{!QBi^u-S zpS2dP@H<|QLX+Xvui{NBQ=d$aQ@n=Et6C%wUKy>R@-0GKqIuz@jh`pU3xZ06`cvWG z+dsiRB)_xJ{vG@~pFqFy1iGH7uf?xhTiLwpD{GR<=^T?R;itHDxbr6mY*#=Xs;;T? z*`{;ta=6vaFpCQE`P8LNMjW*2LZgi8Vrfkzl~p)GKI={ql+sEq-}U^HCc?Uu>SQ$K zUXE!zHENXMio^c^v*KwkS~OfF-LR3TI<+MxoFynh&9r!phwRtmzZrPL!oLtMZPEzt zWVW)@WSZk~R<^iXC4aLdinwVm2y!GpEG*}a2hz8Hvr1_m8SxF}z4)`c)O4**8<)3D zq9uI}^vOAPKw=Liv@){^n;6FT9JgcPzl@r^zBsVZtaQ6;T@J%Syw;>GOZ-pb9sPdkvrXX&epX4UkqTUEZ1BGYxx2;SODZt}`ux10Mi_A8MD zAS*n^+GZo{<)&f*P2^zXk!JXO(=vrjMjM+E8dyv#lbu<{5p}Rn4~djxJ2gt4FAq7+ z*NkkOtkZt3dq)$M<<+qDFt}(@sVu_1I^NO~t5X!^h^1DSw51s@XIfB|lsTaVCG6Gg zm+~ER`!`APr{hPAeiqtm`sc(e9S$E9-|7&5YENn5&kf4Anw8Q;cRO57X?Jj!NpS#a zAXRQKdE+rp+)i+w9*ikT%9@nZf1KvjA%@^?6Qe>47oFp&&lxz?r&5i2X;rCZUlA7R zVU`XTN|kDno+>rtCrvtWOY!ae2@G@Tx4M?6CY2VvC%U$^(^dCbi)L6%j`6vXfmnH$G0$cq zX{J72#}au&jg{~hg>?-Z!rv48JE8nV(SE~er)qa?G#3$o_VL_n5nVxSbkL>JsMkt`o~MH^Z3z zCBoCe<`_CyY-U}J!A@$VuvIJJYDHtJQ=dGcR|{Hkg$lJ-JS7<6)VXBozn4BEc%u3A zd34JiYWht+}X_Mt;03l#A>YuXD#a|6g7l$+t z9(Y>k#J9RS-07Ce_gl^F#F1;z!D};ItdL1<9nIum&E>|*@e}0`z>g=i(EM9}s;nAb zjb*Ot1`DQ!-sxe7aa&oHQc*i3GVJ6syJO@$0bW~ouXxMBdcn}Iu5EPPYyJ{_cH&61 z*e!+4obRaWF^GJ~n`e^=h5-@@HmOkS^5Lt*&+wJ=ECyjloK*}}3A|J%My%s`RE!j1 zDMCp`nuKAiYA#&YySh9c4&n+~PGLf}IyJEv97P&fT5-hEPO|#FT9sk!;W(*EqN`SO z{sFKUi(Wnm(Al%I)4vn+HRF?_J|>t>&6p#x}K&jrkNG(Zc=bZ zmce$w12XTg&wX25@s;kE2Z(%4soZJ_ad8`^{P#0R{!B1R7T;^jBZrJgl16X}g({qq zE8YGf{@GCYgZ5&w_(yr+W_?df@jjO{nw6!xBv)4UhgFIreQ~(7`x50`MptBw9`0GU zw~>%XHl>niPV<%G6l|@E!hLpMa=V+$a*kbX# zH;u~p*Dt}s7z|cpg3GZvb{84SZfLs8*{^3p66SJgMQ)GF4-;!GcYSw$ zv&jszO&-KTQLWHMg;X;jEO7W|+L_yuxj3$4Ue&xseQ%@PYMPbir)j3ma|Vk9_j1h) z2|8NGKa~dI6jBAYDJBt#GM~6m2K0XrX!p1N8@lnlng#4yByM7pQ{##ps@n7JWcUR3!jHx74W5>g)|El(Jtq?xz=H~h-&(aO$U}m&C=zk zg(Ze7nBtJMQOPqrDy|71t>9|LqQlCCCaB3&!#gf{;gvOb(Tw?DH8j`N=T&>MoMp<> zX#8Hb9a4rqje3!0Ot?_Ni@U zZ*e5z9X=x*$Pv~kSA3F07=o>QbjunET1pR&4Y}c z*v2@)&k3b?l1qoVw4U*yvAmWkuFxwxIxAq6VhIepM;Ol|0P~G&Yuzf&VA^W1jfa=I zUE7x=5^`5?!BNon>&<-)InETSQ{;Z~ijTVVweNj3>Am*zIbxyCs>VsWvvn&*{MVCF zio9C)6{GN_6!msJt4NaJUriAuoUXD%G(sdBmQg5hjx)J{ljR`eAOX{Z^~Z*_Rf;K& zxp@t()xC|gEGVk`g4#u~K@5a5?im|crUr5k9}4Lj-1c*=)ssgzkiK)i(p`MNpCyWi zB|!N|$pZjja635sS$`$UU(0?mC{SaR%`eKal^~$pRDY`&WdVY&0SWT)%Ly9JJk-7P zw3jQ5npeHmm)>w@)ZJJ@mm^S=n^iSYf|FdluuVemNXgrp*KO;k)zE5w8;<_~QM}bJ zuVPuD66vs5#3gyIeDx9}{{Xx~i?yB06NK7GM%#nZ>Gw$`jAwgK18!}tjp@0IY``Br z)hqK3>_={Xbns@QYpcM`sNBab>$L2s!GKuDltCNUX%a}THmN5pSb!TR=)VctMIEP| zGoym=s#@+=WXS}CP)@~V$I3D4M>WqWQH@1O)TvTwD@G~BsPtU0<+{=P&sX1L&BRiz zgTrCtA7-Tpu30x0=I^SPGJN0Rmoi)1R^2FI)SnX))xAO z(TdX1S_ok>mP=UfC!R?P?gMkl9MVExXKswhM(@+p;e zuKqWK9JHMzRWG$kBECG6ScWJB;zfPR7%$9D@DAnKjo%?72XA~SJmPID#WCO9EO#zr zNb-zSpD`l}$_j!r@?a960;4AkLhVgCTK2B&MQ{0;bbeP&pf(&qv_9d4oD02&IQ}k~=vZT|etLeum+N=?I`{^7;=(42a){(0e5SRl#94L{ zModJO9F`yMgZdX}z!8#p7zduDoDav7{QB3ektH4;%3&AH7-8iVE9&i9S~bzG$M2c8 z9vE+{QKKh1RPcCZPHu6X;VN|H7NrZ_H7lmu=Dv-ZRE#$%UYW-~O!oX~Xs(s4m#X~F zoL79U?&TK!d6Q;(5FEyFhhhsJgMrRF@<$mTTK;W+;I!H_){Ei$zamwQwVM}NkbtB% zv!>&M2?rqL=hKdB`bcx-$|Pa(q?vw)3zW&nZ~#3reXH=R{tJ8I$lu|Qg*Ct45ESvEHZ0fdNdVDcUMtO zwW6|bq502=6eS7p_GqIg93F3!^R%vL>Z*OlV^bf+tA>7L=26DM$UZG)YuWOzihCdS8t&P5qe>}Q;myh;E ziozRvi$gu7t(TPw?0Y+QGE5OfPxni>LGv%f?~htsdSv>4haBrKrpXj~mZq^Y+b-8O z@>`%!C5)0Xut}s62-jU@D9tYNR z>qxD2eGgL8>^w_#G=FEBYgx6JZex)pQWD|aB-ErYDoM430~-d`{{TXNg3c%Sec@RZ zi%Irndw{!qrOa}Hsr6v$~Y?CEJIRIGmg> zCDB;*UeMaQLh<=BplCRdr>H_Het8Bq1M)_K)DIo>Cxh0B3jzjY=3hb^=Tm#&LR=U(D{ZdP}hhU*k3<+b#2Oa+az0{ z(XBLyv|T?<*0sGu#n-}1>F%R932-2`w`m#T*==<-$DM{K)>5zmHpV}X7Wir6ooB>n zL9?-I+n9ALt1C+@dq+#1Kw8~iMs}4Dmy+m4-ceit!2F;bAM_Fb0D`)FQkTR3008Ci zHlJ%f?ca&@J3T&ocqCN&R96zlw-7Kgs~dQ21e08nHw6#1U!ndjuY60Z_#5K~g8W0J zX*Sw?+IFXJ1+Ao4l1Xc9Qstw2iIhjYxm&i#0f20E4VwM$C3%)VhSoN<6;Bn3_Lzt) zJR=xZqe9e_X8D_@>(13zEK-B_IbH6*2Ft18@cd_p%V}ceJhp`JxGK1*`}MH3>r{lE zA{U>tt11vqn~g}yHIi<2Pn3?s_FP|uULOtO(c%ve{886#lG{q~rH$Bk&~0s?o=dxr z5aFdudx-!9F4QmEdFIEl=VOm2qi%bdjfpb!$i@ zxxa$SO9>^BZc-WECTSAk0c0`mh@H74pM@mx#q#`0_`9XS;tLNMUteG9+J~8Q z6#7;Ep{VLw!$gf6A0{+1n1iajD9VIhqxEa{b@=(rT+j3 zmXQHVT{mB_vA)$G?3b3(y8W@PwCl4Fm(4*mks)Ci1?%Clam+DU<^v3|8GZ_dDzu#{ z*@Y(u^}Islq~lqprA~9FDpPuUKWERcI#K;kFT`cewsBuF!Pc!s;qh2}7F~p+3`H1I z!L`qdoeHy(sa|nw6{HtGxArvLAxbU$*ZWa^&05#PACKP;{u^4|Ev|{L-@GtKG%PJ9 zxVDl3btB#%l&ofERCR#iNCh17IIr7>!+tXTm#*}`3hdE5N#gGqO9r3e+Z$_ZhqHo9 z+jgF7zux_v&erj73Vg_r`Cu?^WN*W_Kqnqg+aiZgM@Bwbl0;Al1=I3B;>YcGrheSt7f+70mec$bp!hq&`dyxh zYvc>h5o&k$mU>o}Ewp&;{MqjB=GG;g>DG`aAc*c7MU;giRmaxNahY}(4TRzx zig{If(u<)f@n%h$LoUZ)D6if|H9dr*jfAQ?Z~*i`3%{vOqvUNznqQRSvfA}<8Ky~w zjT}aMhvK{zI~1=eQ?J0e-U_xm3z}f0ttsK4s8zvAaf_UBP825!N~EP9h(@F1O%bI2 z*4lOHn4L;&Llm++$~Q$3jom;7 zRf2_V9T`PVofj+5mHRnIo;;~@H+8L#oi8+P3*tVLIPp)3t-Le#TZqgS>hevHRWhX_ zGRVv_ep3rX00*fexsQiuz>xUv4-fd0#CPYw7Iy;X=TLn*WVpIxb8LYlib#o!6qZI= z8C!1MrCV?#*nel=fI44|WS>>>R;v0{i|ZElP(Tz(Bgu zCvANZ;Xm11!oDN;*=ykCxsZ5j=IS9e)M6-Zj4;6%aFVcefE$;UgrNPxfR!%FKR*7) zSj`1WCb^vE`C|na%V#9it#kDpv+EccaJ6bVE)uKE zvm8ANk;GP%{{XbBN|kER`prjAmkWhajHNoB&ZJ=|!VOE>UO#I5De&j)`Qxty*h8U1 zsoY)IU)(geH@4Q%2D3@;;IT-{LL_OViq_nx1aD*V5LUg9;h*f&;XfPrsyQ`F8T9)b z8Q_&naihxCk!>c=Q4%+DpEcg1Sh$VvdN$(@E)nrMuyJI9~C}bL&m>lLXAd!(2Y}@%at$aDr z{xE!R)vo+O@h;|6)Abl^mh)4d$y!}awFs=1(@&1*3uxd-F06dApf=&dag&YlhvG+% zJ{kN%@ghN~J+v2EMg5(;?=e-lnp>-*45kAiS(pf3Ev|?#7?7l3eqnf{;y;Z1H+eMH znzRWe-m03ur5ei&6JAP_#_)}(?jvBfc7dY}v@*K~Ip^sxKkFVBA+N(!>r$Q;y$mdC zV`mz$t&5`zRrX3W>%~8MZYot>Xsch5w`KCU-Y3hmtmh-m^9pKsjHX$IOjID%@Ysbp zQl}adQBj2F8gbg6w2J#qHb?HK{4XDbKLb2sJ|Aco{ul9Pui+S_z0_~zXs>MNo;lv$ zVKw|vC7k#2s~2c3vm8NWCUADC`TEo0=BxWqc&As6%Gw_e*?o&yy1dtXFLv;yx|sDT z1)|9ew-TVa1lp~-%6G^LsfZO+{3r2ek98~A(c;xbjF)#7{{U^4CQ~i!F-n_uDfyHL z@?G6y3$$RIivEMY;FkXYwB^0ehV-w39tqL(d39TrxV+RgJyqvS#@8}jYAo_Y9FKQ9 zTA6L&jgf>iEOF!@BzalB79P(Bm(Zt&!QgRFp+^;ntruVF{He~pX=v(I_S}jJojPt& zl$5UH7Jcsq<~1{%Mlt3XsY_$S3KbeMwMDnwK(A^PNjE0XH%V1aOHSdUcZ>{ z7Jk%U5AYBxGmI+c^jr<-Jvui@3<)8)T0-R`oAI3Y8~6d~^I zWHB=DLA`zhd@GjXaUWZhXks%gJZfSwGp6NB3hUt3JK0l`Ud>_Rs8pusDJGO0;S2J| z-pn}ao@1Eda@zH)V`_h9P8b?AtvFJv95ra+D`I4n9BE=_Mt7*C89BM?-R<=k$6xp; zXY7OETi+J^L-3b}weN}F8MLT8Nu+4D7n*h4+FW{rYBv)qOqV6Bpt6o4IDFC*h~<8}WO?9yilI)8T)QsAQ=^5$`w8VV zYG-t*SIm`9WnQH$N3x|HJXGpS4LY?Y&ZQShq)+4D;*=gU*FG^>YZ|Y^ePcsDCDq}V zMbot}n(W%$yUAlC$@Ym7Ihto@^?ET=~3rvGkw(%U7H*cxQ zE#;#_Y+gMHp4%~qrV%p8RI5tO^6=nte4qBS@l3uq*RG^<|=_|jcnwVf`^ zMRFt>#nEV{xpug@nKb)bx$Lc>%3DG9c$lTajm^lNQr};g8I+bY5OToP^#fPJvAC~ z_Hw4>IYy#R(x+})OO@Zr%DA^E!Ej#}sw32!1?Yqu@-jU&NnTKp zt2W7{B3B1Ez|5H=Ip-u`gIWY@OCD8a&$pS|qo89BamrF7#L zA9XkRbu7lUOjZ`UooQ3TsbVR*x8{Z>btIihQb~U8QdFs`ZLMJE&+l1%1@Rl=cY?L8 z6T-SDhji^nPMb}%yq8+PyVRZS=F}#*wn$J~#W%?mD+SU@?j5&zYO*fk8h;RY=fjEM zi%WxPZ*{6z&!iaTOR!*>Ezgw3ST=>Y^Or3u%3pkpR24(AzBFalFCm)jTbUz_`F9f# z;y6JBlfMKPI2a3@u1VuHi*aSCn{yi8Ft;boNb`(3<$yT=1uw}tI0PJap>XXQYXs=l zseBBask)YPm$d#XsN?L^+?!9~PWru%qyEyVRpZ@iUd`qU4>z-?M-hifMpPo3l_cXS zd%VsoXMNY!-xB`-Y8`9EUkkiH@WrhfJr>euzPT2kxU-gdMwK#5E$!Ykd1IEwDJ45_ z&lFq%xHrj~&a)lM#}%}V<$<$n22em7OBKmrd-6#KgPN9jAv#jD(=oeTsw?0sleZ@z zkX5j_+6fzZQCt+3*H-szT1IA(Hz^tNi6D}ph*sl}2HcZ?a5Imj%W!yX79JF+LTZ|w zS=ys+T=go>tw(mRXHs%$TSU}u?AzzXW2hE5Y}?N!`C<}n0g46$@7sV!CnGs0sK@JD@alUuLd-;rrH(Q%G65r;j-#%6 z{wIlp&7R?7n+qBFS($(cMtE$Tfr2rBdj1tOk9e+A$!Qul8>Gj~Mh{*<3!G(%1RcC{ zk?H%A?+bt1*V%t|-;Ve0W620O#uDap^0lpP{{ZkVm)Aqp^o>S4Wtr0Anv|p<$#iMnOu{S8IQN19mYL9E19?OCyDGdJAH2Xw6(FmwtLH1 zQ&ENQ6(W}20w%T#xgF%3Ng64A@guMx>{ow2(OVD9=+mjA(s{vQc%qgy zlYE%kA8e=P#&8gv=N0jfhVJ|uaW<iexcNGc%2WuSq z8n(@-rLoi+?PG}@Ld5J=;lRiyILd`82q2Q+_8HD==vJve!Raqnk1s92;pkwMbvY=) zO7om;C)UxX%+cX61*Rs?170^O26DC%7DXXVRv(@u-IRr&v%z z%F2!!FwW&z65*8az~uKF7(Q&9I`N__VPVQD9WmxNm)Xh z_bq>E&Xl1h?zvwpinXNIQ~PEA0D@}k&8mLQpAKh|RC6|gb16vqjx~P~YahEzbMl#F zIdaF9CA(MZO|Sg2{{VS^_Glk9^PMfpao}436$+Wrob+zB` zyiZ1*2Y`(~`W0oD(JfvN3of7HZ@azQyJoc^8SY2ZidrkPUXIVX@jDf6Al($ZOKvE~ zw`C-rncxhbYw}b63m>J$fBPz%`BE+VSBks=zE+M_WLwW4_)^y@QbopASvbM@)k!6O zQ~Kj5${zSC*!9}MzomXm{{X>fbyd-SVec7guVgPk@u$L*91XR3K0VULSi7Pwa6tLV z0syX-E&$sT)A(rFDh#3uZ!^>bfLjH<|h#@ zNM-nHd6a6Uc~X`G8-m3-t2OY#l%%@o_v!wB)(`Ph$G2bblizsWTbpZ%^*ui0Mu&4l zYZQ^7^3^R-Ep8kgpLR01lXGQ?n(+v2BeK&xL8sh9ZmnUeUTL?uSla4aNiXlCj{V%L z6gEQU(&2p3<{02m35m+LUE-Zf$KC~VLX z_%Gv@n{OnSbH_BWI$bhLJXWbB&oaa|B1I5sC$@%GljidxjduqmH~NTt44ONShu$5Q z7-WJLwunTMdATSSV&oZ#cFcq^EK34#Na%me2jM@5HIEPcUGP?qWnpgiwwnHtKBGO# z?2_WrDFJ1kXXZpgxhc6rml?*@&-#4)0b&0D3e&?8Z46_u%x;(pK$X;C12)mLe4sml zfV-Qi{9}ly&W{sPm0ES9QodD;l-!h(glS^1E<5P`w6PIVioB)lVA^UCYx+}y>q57O zSlB|hw~h}!!%?L;xkfc8)x%=%Hy3aBdXaQ}<#y^+oNpOQN4QpIv#aTv6`jVXt!fsU zPM2hcSuStqiq_sDs#$X^u8Pcdov2H0!Qj@3BxjGObCZtWkFPlQuaJLj%{NKa{{UzI z01(=1-X^s0)|`{eEcf@f@#&V=radEA5$WG)c>s2nR*k;R5SB?qOchju%JR${G5LlQ z2U4r0PZL@+CsI1fDqiz(O7@%O~Egp3tcX21hR^2i&;t#sR6TD))?bJ9(Hom zZZommz_;ed?LqrEzrtN_MbQhUvvYBySYPUI6iFDil2fR~9B7%77)usuB;S%9a*O5u z^Y$(u%%wR00Ay2y^7^X}SJ_~tK1@wI5PXua%&i}KOPNM8=hvM@MO^%`mcS)CZiGNnyZp^C)TO0=j&&z7v#9&eMLOOexyikB-rYxZ36*MNQ}+v}bP)-BTN zT~kT6gHM8Ib0D~VM#*HGY?6gSmeO7S0HhVxQb=VI#_Tu`*ptCN64yR1XwmB$sLhK@F2!2_h~{!^JeN12l?{62_&(tNl^_$Un1}ggznoL*izo;=ct)cD^&e z*Amw9?@hiIvPF1wi|8#aB$Z+Qo^bO01kyah*z%m%R1*yjERWqscRTlC^qyjv9t%JX|8GtUfmn zf{ZFh+fI_^rBba*wJ`K!UB%W^ElEv9+wouEzwH~Z{2a6RyWoG1-Ye15!ygwsFf}V5 z5M4(V)tW~Y)9Jz+dpmS>YqWy$+Bpr%Z}P1(Jllfq_{07QoA9^BUNZQHto%gqr-rQc ztuMirZ>(DlVoS&p+3jxZic1BBq!KLmlEXc_tQQ0=y~#-B@@7^e=`Z*yNBk4-;-Bo> zr?-wL)@?N(hR>+XwlGh7VfMW@?J-+izMpFZ4{pj!1x000z(@i!N$Vf*L+|)Y z?z}hgh5R!#R+l!qWcKV|Op5wfi|t+*7cryES))LrUE7voz-~=|DzDAwbnzHPl<@Uz zRB<_P5%CsXm_s#=CUT>SsqCm__1;~Hlq$wJIn<*2b| z#xFjhN>~irg!orEz}3Q0qLw!eg{dq~Z-$|qU?QVVb*V;Jighvo{rAI-}Oa6^s z{8I4uis7EqQM!FAUAB0|?vrxlT^auX(T|x6mPvfLqg9O&vaPr01cP4~{?bUkD)E~5 zcf&?R@cxscMFrNP8_b$}p(IhsV-lwIONdReB+v6mu*$e&yFWvGeE2cr{d-cMS<x$`xyK)1w$pSc$G`N~)t5A9YEs8~p1ar9(Ty;xTxIPX&&SD+cit zD@}4$tyVa>Ms(|9rACBkO>@-5Vclg)GQv}*%~qXA)Q8M}1b!d*mtOH^uc2G`k+dYy zH7T8vOL(BNv9)V~EK=QHv`xC=KqHakjdF?QFgS24-@GZWX#NrL75talm6oAvq@=RT ztlC~R+_x{ZJ zKFKw$&Y|IZON>EhEX!?U9lSTL(9IOGN~M6fj1?p2uMzwy*7Y9{-_3idTKG@G5Xm!X z*3hN0U4G;2A!U{YVp2o)=0m6uNB-;UCVr` z(m+;XCuI^D2$Q1*3g0+4{1l(ZwsL9eEv@XWEiO{wbm->Z>=t*Gl6$E)Naj|2vml7a zk~$O%hw%@>O{LswvuX=A*KGMRD#*^0PZDnp6hbJ~6s! zW^3I-{hC6yp`?z;$=$_&4zGm_Z+db zYAeOK-F4-A^gKK_eHD@*SD5ha5MEykQ=tsHE2Z zYTD_+A5dvwF~@T!Ir}@vxty5HT%$M22f42i_;(hY;O$!f08l2<1qt?BXzwFdc9cqP z23u=Ax%qsjV3PTnB;aL6uf(}EeM)zSN1dR#*P|Ko1IaMx^j2sbGvco)!8L`BV2rNG~N>xfy2|KEM<3F69%HG zy3PB}T5>k*q}|(X>fOw56Z}%qH0zn3*Gqz1*+iD?)6Q-fTfB-68YNibU4w^=DdQmZ zBlHvg3Ca6fXuk};C)h;mXJ9pbQfRL)3r}j&LwN#OBw?+Uq;$5LN0(_a2_pl{W{(U% z6t#nKX{pH_&R#`QnKNXZm2B<7$4^pyJu7#^8kN48CEfXJwZDYhjW}A#3Xv&r(;35J zK@4#X&4qt3DUDQdT4q^PahP9Y3Ca}|p(=GL%h}2fF86Y}lT9}l6}o!qbM3fG8$72K zLme2#yePtS=Lt$p#+6v8&)C}hva_;JmM$(=cHjGF{k8N@iZ`DF{8i&00eJ7gU+{%^ z@?AGq)a+X6t#wP0r8b|Z&jGo(E9aYtqO;Q{R*~d_+S6nnQCV~R!=I1ZhM}q3-b1Nq z`c|Ew_;oB=OIwi&+`|y?wS~RRSE^@gi0A&xceb&PR1#at(g?CiubDhg`%V00@jrzZ z!CJ?}4--w{OL%3ohecgZ>I+e7^UHAYGNWLL9%9bXtZZI5BqVuZPtMP(T-)q0zSLNw zg;93|XrfReQl*(r09+C{IAPFN(&xC`CUuoz7A}o{?QA+r6IPvg!wFuLV@4Hf#|)`T z_?gq8N!72+r&6^wQc~tgo_zVJaXv2_fy7j)lg|Z0o(dHr;g7@ODdQF{G-}s&l(4vJ z)2`^#Qgq=)tf2(CeV zD=#)Pd8s>E+fLK!X>oHTpSx!{aNM8m5B~rKFZi4B+r<7Yi$n2VusjI5Rp*AhF{58! zL#9I>kuQ@F;Ww2^}hyn4-P+#qE8iR`i8q;A#)Cwr`}`O~ zb?|s;RGg|RQeV7;B~uY9l_O6_H#s$VNuIuI zh{SOeaCvqq%a!6QV=HcHS_A}(8J-NGdQE*W1R+Uw9 zdLsSN#9H12GBk|Ai3T79=nSEDlBnS0gw$>(4{oczN%&1-2y~>FtJ8oD@|!*cA!+ zoD2d19ANa|a4ZBc)Ra`Dsi`@n<;;}YjBb_hdqpi5ZA@xlT&q;A4|m#o8cjEQ!c&*E zsn=R@<+6VEua^4X>6mOK)a~r0u)1~9u2*&XTeNJEFa&J!nZi2~a2c~FP^W7(dB2G5 zqS9n(42>d1Hd+arY>tZTLP;9Pc8Nj|qp4n)#~!VvT}P*BD`{@_>nw@pp?LsE0reUAq1|CFfO)aJafuXv$8Ms!htXa&AzoC`*xPcN%=EF@FqiWcAky{{U7? zktDNb6^RQ&3Nbk(p&L-1Hh^#d%jA>0Zx&waJyO=zTOTenYFB#5=sd!T1F|9hCZKn2RW}rd$wsU{nYG}Yh`z3<-LzWRHN-1Qj%WouJTs2b!{hg)vLaV z>$gYYi{A^i>QfO*O@vJUfWkw<8$Y^M!Ii%B~1tz=6m#*flL4*H9wvLc};Os1@UQ z@Ixp)7-N%;n9pu}_f(5hy_fB2U?YZ0n4yMLfuc?k6D8DzMZn#h9G1p7Caq~67T2}S zLe|SmwYa~(xzCp!vdM68PQsFHT&4>tCj{UTgS&8w(X*RVN)1KxbEKmscG6erb+WUy z(|tFN5~T4oWjM~AURIqbU9L$e@>EcT(z;IVq|?!~^j`aWtLR4B-|SL{XN^~Alg!&5 zRn!y?!ZkpO#DED@+)rA&rTi}O--*04toYMF@VAI=yep*53_7m8Z>P-mHnPsLvPUh- zAV`^(HeeXLmBSFD8@t~Cd@g0>^Ds)wKflPb!eYx5d-E-(ZK9~ zdP?Q-f{TXwPrx1v__#h9c%^h7h+2PwJ{L$P*X|;_)Zh<4*<`pYZz6edm-|JV0R(d6 zdHakuocyjUKcRx1Ds<~ol&6VQDk{o+%_@ zvDJNsTZqMBs#BC@N|kCfr7AS5PPEkJPH!$i$yGNq~_8 z8IC~#!#Tkfv3XrNU)UY^Ns?(`iN9(Fe&a5XDG@%H)D8Ww+09dua@8Pw0{%s zY_xCe-6cr0CgSF1l0!7d%xKXz7XScuxdA`}p$DjUhIMmusf&$a+ATIjd1iH0Gs>;G zRZbm90o@yK%t06=gSwR}IGT~fOC32!l2dfm9!RQ?)uiPH=MW*DeMMm?km%TZ=M!l}(J#|f9*Vz5N45%cmrxDw#%AH>blX;IPw_Jk%Vy z6JGBuQcB4k9AuOQy7Qjh&N%vFpHal6Py%vtPH~R@nKdPPJgrH)Ca(Kguj^y;?pB_P z>(1Y+5aYfvwfgkWmiX)6ILEzyJAc7&E@zMS0P%c*RoQ%X@SzA{Zh$ZRC%SF{Hwe&< zamz03iTQvE56!{J9r2Pt&rIO|0Eatwc5iM(R_eZ5NRdcz+siRgjvH+I+ z-)(MuucH3Q9{}twZCcmiXM_@Cb7sMQ9s1`zEA~U-%%)!pXl_9UO&d;QpS%M=hm(=cF`n7U=te&x@iPTW z4?Gm#?<=^?`)MetdpRm`ly4OubvVJ>`QsMvWPY>2xVg_M&L~rrsK*tD{mf$+!=4nS z9%PlZZmipTx61YRnbhl=$M!alsp`hc?)Yi8v)uiP#v?7&$hSt6q(}}7jEdVq86`j& zVgde2f8eFRwHL(?+EY^TAHwZEJxjuRM}u|9ZZs_>&gTBs)>t66)}ec?ZyO`O)FpPe zc&!y>Sk^``uHe=Ec4a|0$jI730D;sV#GHab87e_N4o!Yr{@i~Ed=H~Ghw&T3{u1!5 zw~R0DB-1C=?=;9HiWhsE2$udkb=eE*P@!`K(xjzX--3nFzB7e$6_!sGJT?_eHdHHO zFc^xwj*Mf6rBb#koYhE95S3aGnx|EJ@pp=9Eg11mTSGDWl|0I=MUYDoN}f7}2{=@z zUad-0uy~gh5B7?5tIE^E`)WMurTN-}xA2dmYQG)49q~fv#adpG;+OFboMyL@=vm)P zi*F0*r*IN_0yD}fLNeo_us;-|&$i(WI=E;Vl%-fHQn-P*@&VxRW{3uxB< zb=aPH-L-C}TrUG@RprW`tUPC=c-zMxAG~j+YWmiGF%rgs+nF{1Ag_`vZ!JP z)kR*Un)}KQSd97OYEY*~F?bp-^xK=IP0~(ORMWKMYo{i?>p3Q_c{Q;#*9>K_g-W$B z6|+o67Y#zMvi;sANz?k|6)4&s*G^Tr0m;lISs5O@n%H#s2^fXx|9DQ>05};vEM_YaKfJ#@8|4 zJ)nt1?Ggyy&KZ;jndM0Q$%Dx5OM_p?kHPPS*1kXZhv0tzyq{-}#~vWj^c#!GJf@P_ zbuB{P)#rufQmHIx<>Dka??P<^;8*$*{>T3Sv0v=n`#gLn(R?ZJf%oE%lMU)~{~hNe+c^ zr>M5KmS-x`OLK4wDhSB)42(B|-v|D}zZmuJh8`@|^m}W)Lf*?*vjTfNd#P;Vm&}&M z2H?01TJ=F9NL>?DOzq*}&TGYw**;5Ie6Rt2|mtu~NJdk%a^TI@gKC{9hg< zo)Q#t{{X1az+&f#!cv7;#+@5Z6QwxDods&QjpZe4?<>Amz5|0eDqJUy#AX$eV9EOjRnBDp01Y&)xQsf}bj;(x#JkidsL(FWJlXmhdY0Q^Fn_z0x%ON5y_M z@mKamrlF}%Zr9eaB5CkE_bkEYOIsV8=;ewn;7y4bAs~_SukHT;@tznzYppgLdlb5{ zv+$bP+uGY*gJmVl$D;Yt&uro-o+*;rFC zwQD#|N-7Hvhowe}ha{BUM=8xTqv>b7IYTqUWYlo;qk^fH=6FnAH`w86s(8#66A3&# zaPq%0mL_#;R;yM`dp8+EKFKvFFXf`=#QJWB;!QqlYn?a#5*=Obn@@=?8shHKBzRtL zutOUtj_jDFEp~2UMaL`~1+u(r@dDb(q=ws3zOnl-6YE!!t(CK2&Kgv*X`boINYb>f z8f1~%a|YaSf2rpEjz4ADbtKj#_!02j>M=slMSR)>O>q=1S)C%0nT%n}l1yPqJq~eM zx`*sN`zGq8j-&7^z;~O5Boo?RNFV+1*Q6YKk6hQyJa#U4hl#5xRjVvLDs^6pF0483 z+&SkND8^7w=1r!avc8-Y_*a(;3@ovBRH{yN)L`X8Fq?{xx|))zp#@H)xveP15lJX3 z{{SC;Gx48+$A@nI-XB|iO61=pR}m-rSCJ+Bu%x#aE-oZznRLRim1qmjg#nHyDe%XO zeku5SK+^B-+ewmbS(HNsh)7n-&L)yyv&kGtzFC$b$$V~BRVZ>vukTWC*bDYFoFJR_ zeE59kKe$bW(em(PE9K_wgeW3Fr9j3HeruD}zu=jFu!gwnCaL>1{64*9LW9h*yI?cP zVh!h0fztzyn9XG=y0oEB5Thv5t5U3G%9Pxye>ImYO8O|M+25tny)GJ!8r3Vu5l%9x zMie<|Vd_GiI&n%ryMm~%?!D@ByF2e@f1F2&JZJr_e;v#gamA3bTtuxP`%It)kg!<@ z+)m<4N5^fwM4HFM{YzAiI~yoo%El;?+`$f2o;5%iySYHYn2=E9e7Wa5{{W&y{{Zkw zZ}=yb*5N1Yz2Ftxa(tL|2*~Gm$Wrl2f_jA@V~k^p%#;2I{r><2>X7ID8JEIQ@zN=^ zh{5+DY8(GYI{y;Hj;``<+55kEib+IZr8VS(pf$gP@#vLRVmPyI#Pp= zG@6QTTDz-7YMQ#z-Twg2I{J9EO;lXnL=g%`C-U~IkOAIRhb6b{$pb7sK)~rdIpNE# zURfp6zR1ocTX=2f%S|M1`$WL>h)3UXLd8sjIm!P3LsS0%1ZMvLf^n7(KW9w_Hymz{ zRPh>|eMYU%t~lqKl0Wz(XZ#bw8J6PP;61&p$+W9lc#p+a;BCe}SoMH9fKRFC+ODkJ z;*~e5cXv|TZl1U4>))#nfuV>kh2}Cfmq?O^G3O)C57zJ#!Eznl@dZoK(19+ z=i@2>8O}>`dK&)#Mg2?u2)X|N1oPD9Hxqmry%V-GDtObzA;v!L-0LMrQ=gRNU~!Ds zBYXb<1TOyof^y%?*Ao0A*2K-7#y=eRp>kM~#F;Oo0Jcdv81w_JWrmGPbf-$Ez3(|w zsVljp-!!QwbiJJ0aguQ6vv!g>F!^>RVk%d!i;UqpUNEN#Q?iYsuBPVoNjX{S-j+_s z`PP`E2Mz%_VxxL7!{J*1F(YsQH>dy}0IgpP>zbd0wYyz!Ohg)umgyiYkw~j90a*&M z+DLGq5+Bp|A84pZ*Qr{{Vt? z%3J;<-xwj|ffvL}ZK!d<0#6M&I6pVc$DZI|4tn$c4a)xjf_u)&*7rXgZ85unuXy_n&UZmM11EM z!QFsC1B09%faF*AHxK+9#rqIi+xZsWCHUNms)-9fhNcHly}r)XFjV>+zvl zJ{LBA5+DJ>f6Nt0+5qp!7(Dcx9V(8LDdH5=lDy{VwJvqal3w!nTD|VNEqb18GJI>P zDM~af<;za>6uq4-8-!AdvT{*+^EGaV@lOoRsZ3xK#Ti6)o@u3TEUyGA#t9_8#^-4Z zfu5iq+rhHgJjl9%^YnWw>shr6c;b=1(P)=Z!#c6pL3WI?M>K%^#bj3C8vea*Kj7Gp z+4@FivHhXGF2H?c(tIxdxZSqKEa#!YQ`e^zP7nAtTj55Yw=wD8w6DY{#nep<>viE> z3T1Q-BnsYKmgS1Fjif$u0VMP~VledTQ}%w+q-7Z^+Kl;}A1^ieIi%#1e62E%**+-_@ z-AN?VAd613ORIv+pl+8@TghVzFp;t*a-Q@Rjrz8WVwV07v>a?LFe9JnT0f1=6MfWSn6&NZSCD{9Q@+s9^s9gJm=e z5Dlm8MX1O`frNJ+0EQ(&w1c&x)}4=Gw2U53;8X*ZOghj9MM9_1;R*xAxTxXq6NkeKhpgF0Pt;G>Os^00BN`YQVRW} z!B-2DoZtwxCkyju2NGkh!}n{P)j#0c&l%3d+WymC8*{X%`)7moW!R$|ReZT$Abi;e z7&ttG$DHy^EnHO`ONJTy3%Jtu6=bB`d2ZY&)suRuHlr)=qSbUfUSi=>4xu>0u9Nn4 z@68n`w;0D&$tzmTJ3+V7=kq1u?-h8HP|<(0R!O7Npz_cojL8utBYmy7xr_mTshp`G zfHG?xSlM`!OGvJz6C1dS%@P>iG+T&Rm3Iotz?R5T2`3;NkUys=f8g7{i`GbE)BgZz zKZi$v7tZjYxF?=Drx1T0m(fFn#AThcOq?&653ar6M9B02ZrJ;Yp1pfeN z?+@8e3_dUTF?%J%vrQp;{{RqMd9pH?<3?#TNii5eyFej<%WlUN2Gy_cUKjHtF_k`B z22m1k$!6R_F4OZmlexB$g2xs8HxKwASM7BMwQYR9CHOBbvfcTUTAvc@VGX!#>wt7M z#zJ08Y!avnSK_m$rqU)hP6eK<|l+1;~q5eIF2%k{$UEJLaPE5KmY-O zU%FaL?TL9HYzK_vuV4PZxb?5julOhD?0MtA*{9%VggzboM7z=Nd{^OJ8s^thn?=8C zy9c|UUDh=t_G#s|g{6rbhngg&ZK8a$=gnNyRA02ZGU;=Oy4fY)WA}~*M)UMD$8ijRGp%# zQo&()qWPSi<148>HPIsMB$eco_4=BSkUE-bCc%z#+#jj`02*;n*v@#bMM*bh{eNGl zq3|k6yD#hd{XGbzA>&}Y{H%RA0OzhN@!S3jiz+Yt6XV75`K3^JYV9#|IU z*-XUnbAU%eIU_%??mV>tIV?hR=zt$lJjjJo_Mt3 z{{Rr%jN>UNx#W1Naa!N^>0#T`s-0?f?Rh&so+o#$$t;g=8;4>-F&Hb?oE)B~o|*Q| zZCTvKZxWUyFhkQE5x9=y11CIwRpvTQ45gfsak!Qv?*>tmlh}H3$4cx$Sq1|$0-zm* zTZ~}fDakk;I+O2TyZd^pNb<%VAhu6UcD|O-_^MRrPCCk)p4U%KTPv%$-*vUDyP5Z9 zYu!@WNBXwDvn+hZOt0EvIr&wx0LeWu+pT`*d^<>&!g@NpsEIUfIYSak{IEo-azG?8 zPyxnH;hY?S_>XN8t>v1H-!$3NqG82^yzY$hzmQtxo30>OGGHywwrPFpzx2A{boDWm| zk2HntKWT@2%FZh8I=!BWYOUL$;eWMP?Q!t8_DAqj_{ZW!)~Rzn%r3eIhxBV!xW3jd zOjnN#O(81r&n8+AMdr za$V_uLeB4RcR!l3#?!+R7>2KA z-od2ko*2+{yBoXDv!h#2ulR#pGEJ#!JC3hwvD)GY1VFTLd0WkRSUet4m*u$*XH`x( zymQP}GP1-}txM`vu=2xGjA-F$Rh!qr$h)p3+Dl%KH0tVC5g(Unu`sLFelxuHhQ*)r*{ z&1G+W_F3aIG?rrB6h|p_MnM#e$A-`6PQ7QQUS9tIV%gu?YhFZ)6I`^cR8Gw?5Nj(lUkl$ zVT7fHr7WJi_LcBix}F`$)P-kS6_?iGJUyhT!B>o<2u7t&Uv){VA58oK__w0#A0B=K zKAqs3Uk};o-Zk)Dy@k|GIy|dytZC@?_j2rIntO|7-+w7MVFYqUU6`Q$=Pv&MZr|Cf z;U=^2*Wo{m{vhdA{yy>4R+3ogT5a8h?7Cbx{%_fDd_yZ=K$=ah+e0sq(-)b5MtD_S z3xA*Pn_=Rg1?qkp@uZ>&!V*UFUkrXphRh`K*^Nw8Ft|LI6;BURoi#W0{%KUf;nS0}RZ5e*pqf=|qbb2f zGwtx1wHaWr84eo>31hL`WtZ2?)M^1sDYVvmK1`yf5*Tbvcus!K6z4)vPF3I56*TV} z6PEt~=>eg5n?vzNnQ5!&8jY^0rrt#z&7Jj~#1}TV5Xu#!k_q6JNaROW1Qk7f2^r}Z z1xFtI`ug+IzFqy7?tCM8@RPv*0Pu$RKT_}>gC>DxCY9mcQUh&urP?B_No#WnmSGgb z${ATDl2%sS%ugrk2#!%s(!E9wbHfqe*BSKZjw|w-uxZ9OP4Y%f^nA%R%J;RK-6PS? za{76GV~fGk_WYDF6=4sos4BdXmA&s}Dv-U_ys~RT!gu^Xtw~S5ON_58MolKt({*)gYp(05J_n%usc=0# zzYj`iVA#O~5s*Oy5$r)dML;2YDX zKGh1SDmNJsS1dpSac#LIfCm}K$7)GE7c8&amA}O+ z8K}#dD>Ux4ah0yxwc1)-v9*8N{Ez6{R8>4V;% zM!i${{{USyHnfv!R_SYB^%aguKj)<}l(sRBGuQB?Bo3qxsT9_1V+424L+M*aD@WGf zn*P5307GcSX!_gpU)SI0L}MSjSHT72&OM!eo&Ny({8!^Y{1;e4KVZ)o$K|^>{3gE) zj^h+kCI`d~6;4uFV+7^F&PU7Co-6iJM{Gt;ND@c5W4D-@Cm6;$labTXzYPBX;NZPh zdk^?0zl^Ret^`}WW$^z1W1+QDRu3L{eVGH?BgK~9Hsluvq2|9q@S>cmc$LABkNpqw z`n$U&O0;Dw**2SslUg*?Wp=c`=YB2S_;JOtSA5x2;-k+fMaosEq`lPJlY1_?CdlB-MG$s zgN$Gvd8tOV7Y*kz?|{E4$83?i2fu!}?O(WEcVBuw8A-Kt+g+q#@{{Ncyq85Zi? zE1oXmWAm`W2~eJ=7{@sF?O(oM556OKOTb?PG+!Ke)5Mx@hP*eV_-99&_g25Ujyr33 z<+8Je75m$sNhXnFNRdo|M#ZDiRwN4NVUTiLV`i*yo5 z>C+tg$NUrrcrYEqo!JFvD-^D zaNp|!IOIrzNDxaK7~?XJ$_MZl#mkQqj}dsAO7TviW2oG<%v#p8_cvCr4#-S5R&(B% zw?Gm&mOmmcLaxJzjy!D7ETeTOGu=hfD4NxOqymlJ?lTiAJQ|M=Gtk zNw;@yTHoUDjCEfS%5@pO)21>QS4)KgTG_y5FB>FdEi8ZqjhK|(g4j|5k5c$KtLeID z#T^sG+QJKe4M(WKeW^lGmEO`Dm1)qJO?bKR-S&rgvaC?bW{52A z4%bkLkmJlN&g>8mAc24z6q*LGEluUE+uakkSmH>-F_604D=?D;0^&qQ$-z(taHJ1n zbn0R#Vrjay9vc@PMF=*bNh>8@I?)) z{h>gG1PJoYBuN-~KoM`;#fVS1t@Gr@SYVahMsxRxVb6XKTK;pt;DcWhwI2|E&+zG5 z--vXR7MZEtXqp~}CFY+Nqid(>-(*#3EfLbHcEp7(bUEo^kru z6H#}1H)iyGkCv2HuG-o4wxs@Nx9k4^)~PC|m^}~W{{Yvgh9~%sBRzlm^^t>0*L!!r zr=OudN2vViat}fcLL|o-9D1IAoj6JB`hWW9GjUxco9LGR04;9pi72Lr1mmB}{4-0D z@A)6_rF6Gxe8{s~s|!Ulc=SJ~_|t;}*#1ZQ3So8Ke_!zH?-q(ok6e9t{&Zw|iY~kV z0AJHV()~O1`^BP)ZuRy34FPoaX^x_sxqW{_-|(Y)`u>OfC;`+`1_aOV0?N2vV81t%r7_459^{v~;Bl2L}_WljnHB{@^mw-rWRDmiv;V0Ji=WFNe_$3_^z zIs7YLim23*YnDpuMQdOBv2m?ZJ4)JHXuUpYhA50+WwU?>OmrB}U-OQ&BMkmu)F0_i zqNj5<+m|!=wAa&ZHvA09Y=p|_#kNR~8>kEkM^;B0g90+FMn@w#7&tYW`USDI7E1F) zZnp1isSMM?!WWClBYH|C+z|Y)xUg@W5XUvrVEUia{3!`gdBHvMIsFA+w4Z+6Bhzl1 z`R;Vaysx9y*48oEHU3NFa+COK8<^xtuXO|FMk362a>PVq&cFc}C}1XUpKkUc3$qkb zGIc)#uAx1>%zECfV>~58wY0&KSVi8QcF>5YSz?VOeKr(!L=v(|I++NSg?G$H8%{lO z$M{oneNX0VSmLn}ca27$q+03G#jcB|McEfB)nt@h+g#C=mWj$Xwu{qLx4XGY+SQ

      QR;= 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard19.jpg b/html/img/postcard19.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dad61a5b3438d17de05c0d4c92606484d1eebdc1 GIT binary patch literal 33526 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 ?c?r@TG}mZr}fyi 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 Qxg=w8#}&EAUNL9?*`x=-dH?_b literal 0 HcmV?d00001 diff --git a/html/img/postcard20.jpg b/html/img/postcard20.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e2d12ae572c4297a6c0432855c846cb58ed54400 GIT binary patch literal 23574 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 literal 0 HcmV?d00001 diff --git a/html/img/postcard21.jpg b/html/img/postcard21.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2b4e1505fe788af2e58d8857926e99a975c7549b GIT binary patch literal 73230 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