2020-04-07  7.0.10-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-7, GIT revision 17...

2020-04-07  7.0.10-7 Cristy  <quetzlzacatenango@image...>
 * Fix erroneous "insufficient image data" exception (reference
   https://github.com/ImageMagick/ImageMagick/issues/1883).

    https://github.com/ImageMagick/ImageMagick/discussions/1880).
2020-04-06  7.0.10-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-6, GIT revision 17146:634bbfd:20200406.

2020-04-05  7.0.10-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-5, GIT revision 17143:8be18423e:20200405.

2020-04-05  7.0.10-5 Cristy  <quetzlzacatenango@image...>
 * Default inkscape delegate to version 0.92 (reference
    https://github.com/ImageMagick/ImageMagick/discussions/1880).
  * Set monochrome image depth to 1 for Group4 compression.

2020-04-05  7.0.10-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-4, GIT revision 17137:eeff0b6:20200405

2020-03-28  7.0.10-4 Cristy  <quetzlzacatenango@image...>
  * The X max attribute for certain fonts is zero (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37723).
  * Multi-value of jp2:quality does not work (reference
    https://github.com/ImageMagick/ImageMagick/issues/1873).
  * Return EPS & TIFF images from the EPT image format (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37781).

2020-03-27  7.0.10-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-3, GIT revision 17108:5a4f5a9:20200327.

2020-03-22  7.0.10-3 Cristy  <quetzlzacatenango@image...>
  * The -charcoal option should ignore the alpha channel.
  * Fix numerical instability issue when drawing lines
  * Improve mono font rendering (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37723).

2020-03-21  7.0.10-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-2, GIT revision 17088:ed6f37f:20200322.

2020-03-16  7.0.10-2 Cristy  <quetzlzacatenango@image...>
  * Fixed another sizing issue with the label coder when pointsize is set.
  * Respect explicit image filename modified (e.g. png24:im.png) (reference
    https://github.com/ImageMagick/ImageMagick/issues/1835).
  * Add support for returning the minimum bounding box of an image with the
    %[minimum-bounding-box] property.
  * Stroked dash array render properly again.

2020-03-15  7.0.10-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-1, GIT revision 17065:130e52e:20200315.

2020-03-14  7.0.10-1 Cristy  <quetzlzacatenango@image...>
  * Add support for returning the convex hull of an image with the
    %[canvas-hull] property.

2020-03-09  7.0.10-1 Dirk Lemstra <dirk@lem.....org>
  * Added option to specify the preferred version when writing a PDF file with
    -define pdf:version=version (e.g. 1.7).

2020-03-07  7.0.10-1 Cristy  <quetzlzacatenango@image...>
  * Do not throw exception on empty draw path (reference
    https://github.com/ImageMagick/ImageMagick/issues/974).
  * Fix possible buffer overflow in ComplexImages().
  * SVG to MVG requires transforms to appear before clipping paths (reference
    https://github.com/ImageMagick/ImageMagick/issues/1860).

2020-03-06  7.0.10-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.10-0, GIT revision 17026:fd430ac9a:20200307

2020-03-01  7.0.10-0 Cristy  <quetzlzacatenango@image...>
  * Label text no longer gets cut-off (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37621).
  * Prevent heap overflow (reference
     https://github.com/ImageMagick/ImageMagick/issues/1857).

2020-02-29  7.0.9-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-27, GIT revision 17006:49d81b672:20200229

2020-02-24  7.0.9-27 Cristy  <quetzlzacatenango@image...>
  * Make sure we can grok this Fx expression: 1- -2.
  * Do not advance when substituting a NULL string.
  * Correct alpha for named colors in the Q32 non-HDRI build.
  * Write Group4 compressed image as a single strip.

2020-02-23  7.0.9-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-26, GIT revision 16972:49f1e4de2:20200223

2020-02-22  7.0.9-26 Cristy  <quetzlzacatenango@image...>
  * No percent sign in lab() color.
  * Introducing the -color-threshold command-line option.
  * Handle out of range HDRI values for -statistic option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37589).
  * Fix improper casting when computing image signature (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37594).

2020-02-21  7.0.9-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-25, GIT revision 16931:2a56db8:20200221

2020-02-18  7.0.9-25 Cristy  <quetzlzacatenango@image...>
  * Adapt to a change in command-line options in the SVG inkscape delegate.

2020-02-17  7.0.9-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-24, GIT revision 16919:41efef9de:20200217

2020-02-15  7.0.9-24 Cristy  <quetzlzacatenango@image...>
  * Support connected-components:eccentricity-threshold,
    connected-components:major-axis-threshold,
    connected-components:minor-axis-threshold,
    connected-components:angle-threshold.
  * Set the alpha channel if the write mask is not enabled.
  * Corrected ellipse orientation when computing image moments.

2020-02-14  7.0.9-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-23, GIT revision 16884:acb56cd:20200214

2020-02-08  7.0.9-23 Cristy  <quetzlzacatenango@image...>
  * Report gray(127.5) as gray(50%).
  * Support -define connected-components:perimeter-threshold=min-max

2020-02-07  7.0.9-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-22, GIT revision 16855:8733f3e:20200207

2020-02-03  7.0.9-22 Cristy  <quetzlzacatenango@image...>
  * More work on connect components, e.g. keep-colors, remove-colors,
    keep-topids.
  * Initialize mutex before locking if its not already initialized.
  * Support 24-bit TIFF images.

2020-02-01  7.0.9-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-21, GIT revision 16823:290cb93:20200201.

2020-01-27  7.0.9-21 Cristy  <quetzlzacatenango@image...>
  * Support additional connected components defines.
  * Refresh cache morphology when writing MPC images.

2020-01-26  7.0.9-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-19, GIT revision 16789:bac6ecc:20200126

2020-01-26  7.0.9-19 Cristy  <quetzlzacatenango@image...>
  * Make PNG creation reproducible (reference
    https://github.com/ImageMagick/ImageMagick/pull/1270).
  * Refactor uninitialize variable patch for -fx "while(,)" expression.

2020-01-25  7.0.9-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-18, GIT revision 16780:08beae5:20200125

2020-01-19  7.0.9-18 Cristy  <quetzlzacatenango@image...>
  * Alpha draw primitive no longer returns a parser exception.
  * Support 32-bit tiled TIFF images.
  * New -connected-component options (reference
    https://imagemagick.org/script/connected-components.php).

    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37391).
2020-01-18  7.0.9-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-17, GIT revision 16753:c300b3a:20200118

2020-01-12  7.0.9-17 Cristy  <quetzlzacatenango@image...>
  * Allow larger negative interline spacing (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37391).
  * Conditional compile for huge xml pages for RSVG delegate library.
  * Put "width" property in the PNG namespace (reference
    https://github.com/ImageMagick/ImageMagick/issues/1833).
  * -combine -colorspace sRGB no longer returns grayscale output (reference
    https://github.com/ImageMagick/ImageMagick/issues/1835).
  * Support Jzazbz colorspace (contributed by snibgo @
    http://im.snibgo.com/jzazbz.htm).

2020-01-12  7.0.9-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-16, GIT revision 16719:fefd765:20200112.

2020-01-12  7.0.9-16 Cristy  <quetzlzacatenango@image...>
  * Fixed three failing Magick.NET unit tests.

2020-01-11  7.0.9-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-15, GIT revision 16709:0000f6d:20200111.

2020-01-11  7.0.9-15 Dirk Lemstra <dirk@lem.....org>
  * Also support svg:xml-parse-huge when using librsvg.

2020-01-10  7.0.9-15 Cristy  <quetzlzacatenango@image...>
  * Optimize -evaluate-sequence option (reference
    https://github.com/ImageMagick/ImageMagick/issues/1824).
  * Support Fx do() iterator.
  * `magick -size 100x100 xc:black black.pnm` no longer creates a white image
    (reference https://github.com/ImageMagick/ImageMagick/issues/1817).
  * setjmp/longjmp in jpeg.c no longer trigger undefind behavior (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37379).
  * Permit compositing in the CMYK colorspace (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37368).

2020-01-04  7.0.9-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-14, GIT revision 16654:89ef7ea:20200104.

2020-01-01  7.0.9-14 Cristy  <quetzlzacatenango@image...>
  * Support extended Fx assignment operators (e.g. *=, /=, ++, --, etc.)
  * Support Fx for() iterator.
  * Optimize Fx performance.
  * Ensure circle.rb renders the same for IMv6 and IMv7 (reference
    https://github.com/rmagick/rmagick/issues/905).

2019-12-30  7.0.9-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-13, GIT revision 16616:dbafe0b:20191230.

2019-12-27  7.0.9-13 Cristy  <quetzlzacatenango@image...>
  * xc:white no longer creates a black PNM image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1817).
  * Sync pixel cache for -kmeans option.
  * Thread -kmeans option.
  * PSD: only set the alpha channel when type is not 0.
  * Fix Lab to custom profile (CMYK or RGB) conversion bug (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37318).

2019-12-26  7.0.9-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-12, GIT revision 16587:7d6a559:20191226.

2019-12-26  7.0.9-12 Cristy  <quetzlzacatenango@image...>
  * Fix Build failure with MinGW-w64 (reference
    https://github.com/ImageMagick/ImageMagick6/issues/67).
  * Inject image profile properties immediately after the image is read.

2019-12-23  7.0.9-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-11, GIT revision 16568:1d6c960:20191224.

2019-12-18  7.0.9-11 Cristy  <quetzlzacatenango@image...>
  * Replace pseudo-random number generator with a Xoshiro generator.
  * The -layers optimize option requires a fully transparent previous image.

2019-12-22  7.0.9-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-10, GIT revision 16548:281649843:20191222.

2019-12-18  7.0.9-10 Cristy  <quetzlzacatenango@image...>
  * Some clang releases do not support _aligned_alloc().
  * Support -kmeans command-line option.

2019-12-07  7.0.9-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-9, GIT revision 16513:8ec82f4:20191215.

2019-12-07  7.0.9-9 Cristy  <quetzlzacatenango@image...>
  * Build file clean-up (reference
    https://github.com/ImageMagick/ImageMagick/pull/1798).
  * Improve semaphore handling @
    https://github.com/ImageMagick/ImageMagick/pull/1798).
  * Introduce HeapOverflowSanityCheckGetExtent() method (reference
    https://github.com/ImageMagick/ImageMagick/pull/1798).

2019-12-01  7.0.9-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-8, GIT revision 16474:0bc0e95:20191207.

2019-12-01  7.0.9-8 Cristy  <quetzlzacatenango@image...>
  * -type bilevel behavior restored, it creates a black and white image.

2019-11-30  7.0.9-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-7, GIT revision 16449:971ba06:20191130.

2019-11-26  7.0.9-7 Cristy  <quetzlzacatenango@image...>
  * Support Pocketmod image format, e.g.
    convert -density 300 pages?.pdf pocketmod:organize.pdf
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Update documentation.

2019-11-26  7.0.9-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-6, GIT revision 16407:1725ec3:20191126.

2019-11-19  7.0.9-6 Cristy  <quetzlzacatenango@image...>
  * Increase the maximum number of bezier coordinates (reference
    https://github.com/ImageMagick/ImageMagick/issues/1784).
  * Santize "'" from SHOW and WIN delegates under Linux, '"\' for Windows
    (thanks to Enzo Puig).
  * Correct for TGA orientation (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34757).
  * The result for -compose Copy -extent on a  MYK image is CMYK (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37118).
  * Fix potential buffer overflow when reading a fax image (alert from
    Justin).
  * Support dng:use-camera-wb option.

2019-11-17  7.0.9-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-5, GIT revision 16369:747618e:20191117.

2019-11-16  7.0.9-5 Cristy  <quetzlzacatenango@image...>
  * Ensure Ascii85 compression is thread safe.
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-11-13  7.0.9-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-4, GIT revision 16354:5f53562:20191114.

2019-11-10  7.0.9-4 Cristy  <quetzlzacatenango@image...>
  * Add exception parameter to CMS transform methods.
  * Output exception there is an attempt to perform an operation not allowed by
    the security policy
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-10-30  7.0.9-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-2, GIT revision 16325:6f84d89:20191030.

2019-10-29  7.0.9-2 Cristy  <quetzlzacatenango@image...>
  * JPEG and JPG are aliases in coder security policy.
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-10-27  7.0.9-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-1, GIT revision 16313:e068be3:20191027.

2019-10-27  7.0.9-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-10-23  7.0.9-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.9-0, GIT revision 16297:8744fd9:20191024

2019-10-06  7.0.9-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous issues  posted to GitHub (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support trim:background-color define for -trim option.

2019-10-05  7.0.8-68 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-68, GIT revision 16184:b75b0e5:20191005.

2019-09-30  7.0.8-68 Cristy  <quetzlzacatenango@image...>
  * Support animated WebP encoding/decoding (reference
    https://github.com/ImageMagick/ImageMagick/pull/1708).
  * Text stroke cut off (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=36829).
  * Adds support for lossless JPEG1 recompression (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36828).

2019-09-29  7.0.8-67 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-67, GIT revision 16145:6f2feb9:20190929.

2019-09-28  7.0.8-67 Cristy  <quetzlzacatenango@image...>
  * line endings renedered as empty boxes (reference
    https://github.com/ImageMagick/ImageMagick/issues/1704).

2019-09-21  7.0.8-66 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-66, GIT revision 16134:f6ce80a:20190921.

2019-09-09  7.0.8-66 Cristy  <quetzlzacatenango@image...>
  * Support compound statements in FX while() (reference
    https://github.com/ImageMagick/ImageMagick/issues/1701).

2019-09-15  7.0.8-65 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-65, GIT revision 16130:254db34:20190915.

2019-09-09  7.0.8-65 Cristy  <quetzlzacatenango@image...>
  * Eliminate fault when trace delegate is not available.
  * Properly distinquish linear and non-linear gray colorspaces (reference
    https://github.com/ImageMagick/ImageMagick/issues/1680).

2019-09-07  7.0.8-64 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-64, GIT revision 16108:2ad3cbc:20190907.

2019-09-02  7.0.8-64 Cristy  <quetzlzacatenango@image...>
  * Support XPM symbolic (reference
    https://github.com/ImageMagick/ImageMagick/issues/1684).
  * DilateIntensity is channel independent (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36641).

2019-08-31  7.0.8-63 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-63, GIT revision 16088:3b7a33d:20190831.

2019-08-24  7.0.8-63 Cristy  <quetzlzacatenango@image...>
  * Properly identify the DNG and AI image format (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36581).

2019-08-23  7.0.8-62 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-62, GIT revision 16061:7525595:20190823.

2019-08-23  7.0.8-62 Dirk Lemstra <dirk@lem.....org>
  * Added option to limit the maximum point size with -define
    caption:max-pointsize=pointsize.
  * Corrected JP2 numresolution calculation (reference:
    https://github.com/ImageMagick/ImageMagick/issues/1673)

2019-08-19  7.0.8-62 Cristy  <quetzlzacatenango@image...>
  * Conditionally compile call to AcquireCLocale() (reference
    https://github.com/ImageMagick/ImageMagick/issues/1669).
  * More robust support for converting bitmap to vector.

2019-08-16  7.0.8-61 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-61, GIT revision 16033:0c5808c:20190816.

2019-08-03  7.0.8-61 Cristy  <quetzlzacatenango@image...>
  * Issue with -background and -swirl (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36512).

2019-08-10  7.0.8-60 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-60, GIT revision 16020:52ff205:20190810.

2019-08-07  7.0.8-60 Cristy  <quetzlzacatenango@image...>
  * Enable reading EXR image file from stdin.

2019-08-04  7.0.8-59 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-59, GIT revision 15986:c3de0e7:20190804.

2019-08-01  7.0.8-59 Cristy  <quetzlzacatenango@image...>
  * Module is a reserved keyword for C++ 20 (reference
    https://github.com/ImageMagick/ImageMagick/issues/1650).

2019-07-29  7.0.8-58 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-58, GIT revision 15962:cf00632:20190729.

2019-07-27  7.0.8-58 Cristy  <quetzlzacatenango@image...>
  * Improve GetNextToken() performance.

2019-07-26  7.0.8-57 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-57, GIT revision 15948:8fba4a3:20190726.

2019-07-22  7.0.8-57 Cristy  <quetzlzacatenango@image...>
  * Heap-buffer-overflow in Postscript coder (reference
    https://github.com/ImageMagick/ImageMagick/issues/1644).
  * The -alpha shape option nondeteministic under OpenMP (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
  * Correction to the ModulusAdd and ModulusSubtract composite op (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36413).

2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-56, GIT revision 15936:2ac4147:20190720.

2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
  * Unexpected -alpha shape results (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
  * Converting from PDF to PBM inverts the image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1643).

2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-55, GIT revision 15930:ac09240:20190718.

2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
  * Heap-buffer overflow (reference
    https://github.com/ImageMagick/ImageMagick/issues/1641
  * PerlMagick test suite passes again (reference
    https://github.com/ImageMagick/ImageMagick/issues/1640) 

2019-07-16  7.0.8-54 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-54, GIT revision 15916:e868e22:20190716.

2019-07-08  7.0.8-54 Cristy  <quetzlzacatenango@image...>
  * resolve division by zero  (reference
     https://github.com/ImageMagick/ImageMagick/issues/1629).
  * introducing MagickLevelImageColors() MagickWand method.
  * Transient problem with text placement with gravity (reference
    https://github.com/ImageMagick/ImageMagick/issues/1633).
  * Support TIM2 image format (reference
    https://github.com/ImageMagick/ImageMagick/pull/1571).
  * For -magnify option, specify an alternative scaling method with -define
    magnify:method=method, choose from these methods: eagle2X, eagle3X,
    eagle3XB, epb2X, fish2X, hq2X,  scale2X (default), scale3X, xbr2X.

2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-53, GIT revision 15828:f5d59c0:20190705.

2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
   * Fix -fx parsing issue (reference
     https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36314).

2019-07-05  7.0.8-52 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-52, GIT revision 15825:ea47310:20190705.

2019-07-01  7.0.8-52 Cristy  <quetzlzacatenango@image...>
  * Eliminate buffer overflow in TranslateEvent() (reference
    https://github.com/ImageMagick/ImageMagick/issues/1621).

2019-06-30  7.0.8-51 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-51, GIT revision 15812:51f11c4:20190630.

2019-06-24  7.0.8-51 Cristy  <quetzlzacatenango@image...>
  * Clone rather than copy X window name/icon.
  * Optimize PDF reader.

2019-06-23  7.0.8-50 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-50, GIT revision 15778:4a60519:20190623

2019-06-14  7.0.8-50 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading all images from a HEIC image (reference
    https://github.com/ImageMagick/ImageMagick/issues/1391).
  * Heap-buffer-overflow in MagickCore/fourier.c (reference
   https://github.com/ImageMagick/ImageMagick/issues/1588).
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-06-08  7.0.8-49 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-49, GIT revision 15708:6d7e1db:20190608

2019-06-03  7.0.8-49 Cristy  <quetzlzacatenango@image...>
  * Add support for RGB565 image format (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36078).
  * Use user defined allocator instead of `malloc` (reference
    https://github.com/ImageMagick/ImageMagick6/pull/49/).
  * Add static decorator to accelerator kernels (reference
    https://github.com/ImageMagick/ImageMagick/issues/1366).

2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-48, GIT revision 15689:061a3bb82:20190601

2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
  * Fix transient convolution bug (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36119).

2019-05-26  7.0.8-47 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-47, GIT revision 15681:5cffc6cbb:20190526

2019-05-19  7.0.8-47 Cristy  <quetzlzacatenango@image...>
  * Support 16 and 32 bit tiled float TIFF images.
  * Convolve morphology alpha channel fix (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36086).
  * Text improvements to the internal SVG renderer.

2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-46, GIT revision 15655:84dd3301c:20190518

2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
  * PerlMagick unit tests pass again.
  * Builds under MacOS X and FreeBSD works again.
  * Return HEIC images in the sRGB colorspace.

2019-05-12  7.0.8-45 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-45, GIT revision 15634:784105bcb:20190512

2019-05-06  7.0.8-45 Cristy  <quetzlzacatenango@image...>
  * Fix image signatures to ensure they are Q-depth invariant (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35970).
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-44, GIT revision 15600:41f47759a:20190503

2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-43, GIT revision 15595:0062cef74:20190502

2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-04-29  7.0.8-42 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-42, GIT revision 15570:71190ccd0:20190424

2019-04-20  7.0.8-42 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-04-19  7.0.8-41 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-41, GIT revision 15540:c78993d13:20190420

2019-04-13  7.0.8-41 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Honor SOURCE_DATE_EPOCH environment variable (reference
    https://github.com/ImageMagick/ImageMagick/pull/1496/).
  * Standardize on UTC time for any image format timestamp.
  * Add MagickAutoThresholdImage(), MagickCannyEdgeImage(),
    MagickComplexImages(), MagickConnectedComponentsImage(),
    MagickHoughLineImage(), MagickKuwaharaImage(), MagickLevelizeImageColors(),
    MagickLevelImageColors(), MagickMeanShiftImage(), MagickPolynomialImage(),
    MagickRangeThresholdImage(), MagickSetSeed(), MagickWaveletDenoiseImage()
    methods to MagickWand API.

2019-04-12  7.0.8-40 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-40, GIT revision 15510:7e503e231:20190412

2019-04-10  7.0.8-40 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).


2019-04-07  7.0.8-39 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-39, GIT revision 15489:6120f8bc1:20190406

2019-04-06  7.0.8-39 Cristy  <quetzlzacatenango@image...>
  * The -layers option compared pixels inocorrectly as opacity rather than
    alpha.
  * The -preview raise option now returns expected results.
  * Initialise ghostscript instances with NULL (reference
    https://github.com/ImageMagick/ImageMagick/pull/1538).

2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-38, GIT revision 15483:23edcef04:20190406

2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
  * Modulo off by one patch for -virtual-pixel option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).

2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-37, GIT revision 15470:477216fd7:20190403

2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
  * Fixed -virtual-pixel option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).

2019-03-31  7.0.8-36 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-36, GIT revision 15464:3a928224d:20190331

2019-03-27  7.0.8-36 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-03-24  7.0.8-35 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-35, GIT revision 15440:4a0a88e41:20190324

2019-03-23  7.0.8-35 Cristy  <quetzlzacatenango@image...>
  * -draw image DstOver is now responsive to the composite operator (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35650).
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-03-15  7.0.8-34 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-34, GIT revision 15413:860af935d:20190315

2019-03-11  7.0.8-34 Cristy  <quetzlzacatenango@image...>
  * Associate one lock with each resource.
  * Report exception if opening TIFF did not work out.
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2019-03-10  7.0.8-33 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-33, GIT revision 15401:c805e3205:20190310

2019-03-06  7.0.8-33 Cristy  <quetzlzacatenango@image...>
  * Fix SVG conversion infinite loop (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35591).
  * Initialize primitive drawing structure after resizing.

2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-32, GIT revision 15386:58d9c4692:20190305

2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
  * Fix out-of-boundary LocaleLowerCase() @
    https://github.com/ImageMagick/ImageMagick/issues/1495

2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-31, GIT revision 15381:3122a669d:20190304

2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
  * -trim is no longer sensitive to the image virtual canvas.

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-30, GIT revision 15376:16d2b4e6a:20190303

2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
  * Support define to remove additional background from an image during a
    trim, e.g. -fuzz 5% -define trim:percent-background=0% -trim.

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-29, GIT revision 15368:5d8ed9f56:20190228

2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2019-02-18  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-28, GIT revision 15345:09a7c67dd:20190218

2019-02-12  7.0.8-28 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-27, GIT revision 15315:5d48cd312:20190209

2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
  * Mod patch to properly handle subimage ranges (e.g. image.gif[2-3]).

2019-02-03  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-26, GIT revision 15294:726bd82a3:20190203

2019-02-02  7.0.8-26 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2019-01-27  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-25, GIT revision 15279:7da783a5b:20190127

2019-01-19  7.0.8-25 Cristy  <quetzlzacatenango@image...>
  * Eliminate spurious font warning (reference
    https://github.com/ImageMagick/ImageMagick/issues/1458).
  * Support HEIC EXIF & XMP profiles.

2019-01-12  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-24, GIT revision 15233:db129ba64:20190112

2019-01-08  7.0.8-24 Cristy  <quetzlzacatenango@image...>
  * Support -clahe option real clip limit (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=35292).
  * ShadeImage() kernels can return negative pixels, clamp to range (reference
    https://github.com/ImageMagick/ImageMagick/issues/1319).
  * Annotate with negative offsets no longer renders slanted text.

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-23, GIT revision 15199:ba07f7d07:20190101

2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
  * CacheInfo destructor must be aligned in DestroyPixelStream().

2018-12-30  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-22, GIT revision 15189:842164090:20181230

2018-12-29  7.0.8-22 Cristy  <quetzlzacatenango@image...>
  * Support negative rotations in a geometry (e.g. -10x-10+10+10).
  * Return expected canvas offset after a crop with gravity.

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-21, GIT revision 15179:114be1716:20181227

2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
  * Check to ensure SeekBlob() offset can be represented in an off_t.

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-20, GIT revision 15170:8e8222e87:20181223

2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
  * Cube image format returns a HALD image.
  * CLAHE tiles overlapped are now centered relative to the image.

2018-12-19  7.0.8-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-19, GIT revision 15153:e74ed77f5:20181219

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-18, GIT revision 15146:b5eccd295:20181218

2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
  * Fixed Magick++ compile error on Mac OS X.

2018-12-17  7.0.8-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-17, GIT revision 15142:32f2d195e:20181217

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Support -clahe clip limit with percentages (e.g. -clahe 50x50%+128+3).

2018-12-10  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-16, GIT revision 15109:9a9af88de:20181210.

2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
  * Check for modulo underflow.
  * Change SVG default DPI to 96 from 90 to meet recommendation of SVG2 & CSS.

2018-12-01  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-15, GIT revision 15059:2fb22e07b:20181201

2018-11-21  7.0.8-15 Cristy  <quetzlzacatenango@image...>
  * Added support for the -clahe option: contrast limited adaptive histogram
    equalization.

2018-11-13  7.0.8-15 Dirk Lemstra <dirk@lem.....org>
  * Added support for GIMP 2.10 files (reference
    https://github.com/ImageMagick/ImageMagick/pull/1381).

2018-10-23  7.0.8-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-14, GIT revision 14943:1a0da3dd0:20181023

2018-10-21  7.0.8-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-13, GIT revision 14936:d3ec5abe2:20181021.

2018-10-04  7.0.8-13 Dirk Lemstra <dirk@lem.....org>
  * Adding coder headers with magic.xml will no longer be supported.
  * Adding coder aliases with coder.xml will no longer be supported.

2018-09-16  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-12, GIT revision 14843:cb5cf1959:20180923

2018-09-15  7.0.8-12 Dirk Lemstra <dirk@lem.....org>
  * Added support for arithmetic coding to the jpeg encoder:
    -define jpeg:arithmetic-coding=true.

2018-09-08  7.0.8-12 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-08-28  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-11, GIT revision 14729:798fbdb5b:20180828

2018-08-15  7.0.8-11 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Add support for "module" security policy.

2018-08-13  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-10, GIT revision 14646:48fba3256:20180813

2018-08-12  7.0.8-10 Dirk Lemstra <dirk@lem.....org>
  * Added dcraw coder (dcraw:img.cr2) that can be used to force the use of the
    dcraw delegate when libraw is the default raw delegate.
  * Restored thread support for the HEIC coder.

2018-08-08  7.0.8-10 Cristy  <quetzlzacatenango@image...>
  * ThumbnailImage function no longer reveals sensitive information (reference
    https://github.com/ImageMagick/ImageMagick/issues/1243).

2018-08-06  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-9, GIT revision 14618:a3663c3dc:20180805.

2018-07-24  7.0.8-9 Cristy  <quetzlzacatenango@image...>
  * XBM coder leaves the hex image data uninitialized if hex value of the
    pixel is negative.
  * More improvements to SVG text handling.
  * New -range-threshold option that combines hard and soft thresholding.

2018-07-23  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-8, GIT revision 14583:300fdbcfd:20180723.

2018-07-20  7.0.8-8 Cristy  <quetzlzacatenango@image...>
  * Non-HDRI ScaleLongToQuantum() private method no longer adds a half interval.
  * Fixed memset() negative-size-param (reference
    https://github.com/ImageMagick/ImageMagick/issues/1217).

2018-07-16  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-7, GIT revision 14561:f85c23180:20180716.

2018-07-15  7.0.8-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-07-08  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-6, GIT revision 14541:db940ccd2:20180708.

2018-07-06  7.0.8-6 Cristy  <quetzlzacatenango@image...>
  * Improve SVG support for tspan element.
  * Add support for -fx image.extent.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-5, GIT revision 14514:bba545bbb:20180704.

2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
  * Fixed a few potential memory leaks
    https://github.com/ImageMagick/ImageMagick/issues).

2018-07-02  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-4, GIT revision 14505:4613eed4a:20180702.

2018-06-28  7.0.8-4 Cristy  <quetzlzacatenango@image...>
  * Small tweaks to compile under Cygwin.
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Support %B property, the image file size without any decorations.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-3, GIT revision 14489:c63c504e8:20180624.

2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
  * Apply translate component of SVG transform rotate.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-2, GIT revision 14476:cda11d81d:20180618.

2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
  * More robust SVG text handling.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-1, GIT revision 14468:94cb08785:20180616.

2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Fixed an issue with stroke and label: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34142).
  * PNG: set storage class to DirectClass if alpha enabled (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34121).

2018-06-12  7.0.8-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.8-0, GIT revision 14459:d7c892d5a:20180612.

2018-06-11  7.0.8-0  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-11  7.0.7-39 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-39, GIT revision 14445:cc962acde:20180611.

2018-06-06  7.0.7-39  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-06-02  7.0.7-38 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-38, GIT revision 14409:01e395a73:20180602.

2018-05-30  7.0.7-38  <quetzlzacatenango@image...>
  * Heap buffer overflow fix (reference
    https://github.com/ImageMagick/ImageMagick/issues/1156).
  * Boundary issues with -gamma option when HDRI is enabled (reference
    https://github.com/ImageMagick/ImageMagick/issues/1151).
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-29  7.0.7-37 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-37, GIT revision 14393:61d7e8b17:20180529.

2018-05-29  7.0.7-37  <quetzlzacatenango@image...>
  * Properly initialize SVG color style.

2018-05-28  7.0.7-36 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-36, GIT revision 14390:3a6bd703f:20180528.

2018-05-28  7.0.7-36  <quetzlzacatenango@image...>
  * A SVG rectangle with a width and height of 1 is a point.

2018-05-21  7.0.7-35 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-35, GIT revision 14356:13507412c:20180521.

2018-05-21  7.0.7-35  <quetzlzacatenango@image...>
  * Fixed memory corruption for MVG paths.

2018-05-20  7.0.7-34 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-34, GIT revision 14348:ac9ff6ba1:20180520.

2018-05-20  7.0.7-34 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading eXIf chunks to the PNG coder.

2018-05-19  7.0.7-34  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).
  * Improved clip / composite mask handling.

2018-05-16  7.0.7-33 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-33, GIT revision 14326:58c2e4972:20180516.

2018-05-03  7.0.7-33  <quetzlzacatenango@image...>
  * Restore SetImageAlpha() behavior.
  * Fix -clip and -mask options.

2018-05-13  7.0.7-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-32, GIT revision 14307:f61f674e3:20180513.

2018-05-03  7.0.7-31  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-05-01  7.0.7-30 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-30, GIT revision 14242:730f1d1d3:20180501.

2018-05-01  7.0.7-30  <quetzlzacatenango@image...>
  * Missing break when checking "compliance" element.

2018-04-30  7.0.7-29 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-29, GIT revision 14225:41edbdcea:20180430.

2018-03-26  7.0.7-29  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-24  7.0.7-28 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-28, GIT revision 23615:edd71782e:20180325.

2018-03-21  7.0.7-28  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-18  7.0.7-27 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-27, GIT revision 23466:734b146df:20180318.

2018-03-17  7.0.7-27  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-11  7.0.7-26 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-26, GIT revision 23344:7a03766ef:20180311.

2018-03-10  7.0.7-26  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-25, GIT revision 23177:17a986472:20180304.

2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow, memory
    exceeded, and timeouts (credit to OSS Fuzz).

2018-02-25  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-24, GIT revision 23079:7ccb76178:20180225.

2018-02-19  7.0.7-24 Cristy  <quetzlzacatenango@image...>
  * Do not refer to page in OptimizeLayerFrames (reference
    https://github.com/ImageMagick/ImageMagick/pull/987).
  * PerlMagick unit tests pass again.
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).

2018-02-18  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-23, GIT revision 22969:c6b3a22b0:20180218.

2018-02-09  7.0.7-23 Dirk Lemstra <dirk@lem.....org>
  * Add support for reading the HEIC image format to the Windows build.

2018-01-23  7.0.7-23 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous use of uninitialized values, integer overflow,
    memory exceeded, and timeouts (credit to OSS Fuzz).
  * Add list-length policy to limit the maximum image sequence length.

2018-01-22  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-22, GIT revision 22391:e8be814f1:20180122.

2018-01-06  7.0.7-22 Cristy  <quetzlzacatenango@image...>
  * Support aspect ratio geometry, e.g. -crop 3:2.
  * Add support for reading the HEIC image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/507).
  * Fixed numerous memory leaks, credit to OSS Fuzz.

2018-01-06  7.0.7-21 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.0-21, GIT revision 22168:a91afc45b:20180106.

2018-01-06  7.0.7-21 Dirk Lemstra <dirk@lem.....org>
  * Fix some enum values in the OpenCL code.

2018-01-06  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-20, GIT revision 22161:33a04d3e5:20180105.

2018-01-05  7.0.7-20 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2018-01-01  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-19, GIT revision 22133:977fe08bf:20180101.

2017-12-29  7.0.7-19 Cristy  <quetzlzacatenango@image...>
  * Check for webpmux library version 0.4.4 (reference
    https://github.com/ImageMagick/ImageMagick/issues/896).

2017-12-26  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-18, GIT revision 22096:ad4bdeb40:20171228.

2017-12-28  7.0.7-18 Cristy  <quetzlzacatenango@image...>
  * Fix error reading from pipe under Windows (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=33288).

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-17, GIT revision 22093:9caea323b:20171227.

2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
  * Fix heap use after free error (reference
    https://github.com/ImageMagick/ImageMagick/issues/918).

2017-12-24  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-16, GIT revision 22038:e55dc7626:20171225.

2017-12-18  7.0.7-16 Cristy  <quetzlzacatenango@image...>
  * Fix error reading multi-layer XCF image file.
  * Fix possible stack overflow in WEBP reader (reference
    https://github.com/ImageMagick/ImageMagick/issues/907)
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-12-16  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-15, GIT revision 21924:30cb31746:20171216.

2017-12-08  7.0.7-15 Cristy  <quetzlzacatenango@image...>
  * Overall standard deviation is the average of each pixel channel (reference
    https://imagemagick.org/discourse-server/viewforum.php?f=3).
  * Update to the latest ImageMagick documentation.

2017-12-05  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-14, GIT revision 21855:dc73b2aba:20171205.

2017-11-30  7.0.7-14 Cristy  <quetzlzacatenango@image...>
  * Support Stereo composite operator.
  * Fix build failure with --without-modules (reference
    https://github.com/ImageMagick/ImageMagick/issues/890).

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-13, GIT revision 21823:72cb0fd0c:20171130.

2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
  * Fix build failure with libraw 0.14.8 (reference
    https://github.com/ImageMagick/ImageMagick/issues/888).

2017-11-29  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-12, GIT revision 21814:5ef2c5a67:20171129.

2017-11-12  7.0.7-12 Cristy  <quetzlzacatenango@image...>
  * The -tint option no longer munges the alpha channel (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=1&t=33070).
  * Don't delete in-memory blob when reading an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/886).
  * Support HDRI color profile management.

2017-11-11  7.0.7-11 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-11, GIT revision 21635:0447c6b46:20171111.

2017-11-05  7.0.7-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-10, GIT revision 21612:36e2aabfd:20171105.

2017-11-03  7.0.7-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed a problem with resource bookkeeping in AcquireMatrixInfo().

2017-10-30  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-9, GIT revision 21580:2682a311e:20171031.

2017-10-20  7.0.7-9 Cristy  <quetzlzacatenango@image...>
  * Encode JSON control characters (reference
    https://github.com/ImageMagick/ImageMagick/issues/848).

2017-10-27  7.0.7-9 Dirk Lemstra <dirk@lem.....org>
  * Added support for reading mipmaps in dds images (reference
    https://github.com/ImageMagick/ImageMagick/issues/845).

2017-10-15  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-8, GIT revision 21507:63ffc9878:20171015.

2017-10-08  7.0.7-8 Cristy  <quetzlzacatenango@image...>
  * Return expected results for a percent 0 -chop option argument (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32806).
  * Tweaks to OpenMP support within ImageMagick.

2017-10-07  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-7, GIT revision 21432:29003eeed:20171007.

2017-10-06  7.0.7-7 Cristy  <quetzlzacatenango@image...>
  * Correct handling of GIF transparency (reference
    https://github.com/ImageMagick/ImageMagick/issues/831).

2017-10-04  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-6, GIT revision 21426:0a1cb507b:20171004.

2017-10-03  7.0.7-6 Cristy  <quetzlzacatenango@image...>
  * Reset the magick_list_initialized boolean when needed (reference
    https://github.com/ImageMagick/ImageMagick/pull/826).

2017-10-01  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-5, GIT revision 21382:3846f9d97:20171001.

2017-09-28  7.0.7-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support URW-base35 fonts.

2017-09-26  7.0.7-5 Glenn Randers-Pehrson <glennrp@image...>
  * Removed "ping_preserve_iCCP=MagickTrue;" statement that was inadvertently
    added to coders/png.c (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32771).

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-4, GIT revision 21265:bdbc14590:20170923.

2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-17  7.0.7-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-3, GIT revision 21202:6e6907ac7:20170917.

2017-09-17  7.0.7-3 ADLab of Venustech
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/pull/763).

2017-09-15  7.0.7-3 Glenn Randers-Pehrson <glennrp@image...>
  * Stop potential leaks in the JNG decoder (reference:
    https://github.com/ImageMagick/ImageMagick/issues/760).
  * Maximum valid hour is 23, not 24, in the PNG tIME chunk, and maximum
    valid minute is 59, not 60.

2017-09-12  7.0.7-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-2, GIT revision 21089:4e46ad9dd:20170912.

2017-09-11  7.0.7-2 Glenn Randers-Pehrson <glennrp@image...>
  * Use signed integer arithmetic to calculate timezone corrections (reference
    https://github.com/ImageMagick/ImageMagick/issues/685).

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-1, GIT revision 21065:ab2194121:20170909.

2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-09-05 7.0.7-1 Dirk Lemstra <dirk@lem.....org>
  * Added -define tiff:write-layers=true to add support for writing layered
    tiff files.

2017-09-03  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.7-0, GIT revision 20996:2f8ac2203:20170903.

2017-08-28  7.0.7-0 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't overwrite symbolic links when the shred policy is enabled.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-10, GIT revision 20920:9940c367a:20170827.

2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
  * Support -metric ssim, structual similarity index.

2017-08-26  7.0.6-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed thread safety issue inside the pango and librsvg decoder
    (reference: https://github.com/dlemstra/Magick.NET/issues/91).

2017-08-20  7.0.6-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-9, GIT revision 20860:3f307d8ad:20170820.

2017-08-18  7.0.6-9 Glenn Randers-Pehrson <glennrp@image...>
  * Fixed bug with writing tIME chunk when timezone has a negative offset
    (reference: https://github.com/ImageMagick/ImageMagick/issues/685)

2017-08-18  7.0.6-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-8, GIT revision 20838:e2eb79427:20170818.

2017-08-14  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Support CubicSpline resize filter.  Define the lobes with the
    -define filter:lobes={2,3,4} (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=32506).
  * Prevent assertion failure when creating PDF thumbnail (reference
    https://github.com/ImageMagick/ImageMagick/issues/674).

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-7, GIT revision 20799:0db4d8a16:20170812.

2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
  * Improve EPS aliasing (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32497).

2017-08-11  7.0.6-7 Dirk Lemstra <dirk@lem.....org>
  * Added a new option called 'dds:fast-mipmaps' (reference
    https://github.com/ImageMagick/ImageMagick/issues/558)
  * The mipmaps of a dds image can now be created from a list of images with
    -define dds:mipmaps=fromlist (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30236).

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-6, GIT revision 20775:061d0fa25:20170810.

2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-08-10  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * tests/validate.c: Show the reason for failures in the test logs,
    if available.

2017-08-03  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
  * Put UTC time in the PNG tIME chunk instead of local time (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32447).

2017-08-02  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-5, GIT revision 20715:26b28d50a:20170802.

2017-08-01  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-29  7.0.6-5 Glenn Randers-Pehrson <glennrp@image...>
  * Properly set image->colorspace in the PNG decoder (previously
    it was setting image->gamma, but only setting image->colorspace
    for grayscale and gray-alpha images.  Reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32418).
  * Fix improper use of NULL in the JNG decoder (CVE-2017-11750, Reference
    https://github.com/ImageMagick/ImageMagick/issues/632).
  * Added "-define png:ignore-crc" option to PNG decoder. When you know
    your image has no CRC or ADLER32 errors, this can speed up decoding.
    It is also helpful in debugging bug reports from "fuzzers".

2017-07-29  7.0.6-5 Cristy  <quetzlzacatenango@image...>
  * Off by one error for gradient coder (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416),
    https://github.com/ImageMagick/ImageMagick/issues/612).

2017-07-28  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-4, GIT revision 20657:4e81160d6:20170728.

2017-07-24  7.0.6-4 Cristy  <quetzlzacatenango@image...>
  * YUV coder no longer renders streaks (reference
    https://github.com/ImageMagick/ImageMagick/issues/612).
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues) including
    https://github.com/ImageMagick/ImageMagick/issues/618 (CVE-2017-12676).
  * coders/png.c: Initialized quantum_scanline and quantum_info
    to prevent a bad free (reference
    https://github.com/ImageMagick/ImageMagick/issues/621).

2017-07-25  7.0.6-4 Glenn Randers-Pehrson <glennrp@image...>
  * Removed write_chunk_from_profile() from coders/png.c because it has
    not worked at least since version 6.7.6.
  * Removed many redundant checks before RelinquishMagickMemory(), which
    is safe to call with a NULL argument.
  * Added experimental PNG orNT chunk, to store image->orientation.
  * Removed vpAg chunk write support (we are now writing caNv instead).

2017-07-24  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-3, GIT revision 20598:cc9c43b44:20170724.

2017-07-23  7.0.6-3 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).

2017-07-23  7.0.6-3 Glenn Randers-Pehrson <glennrp@image...>
  * Fix memory leaks when reading a malformed JNG image:
    https://github.com/ImageMagick/ImageMagick/issues/600 (CVE-2017-13141),
    https://github.com/ImageMagick/ImageMagick/issues/602 (CVE-2017-12565).

2017-07-21  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-2, GIT revision 20549:62fcf3d96:20170721.

2017-07-19  7.0.6-2 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * The -monochrome option no longer returns a blank canvas (reference
    https://github.com/ImageMagick/ImageMagick/issues/594).
  * coders/png.c: fixed memory leak of quantum_info (CVE-2017-11539, reference
    https://github.com/ImageMagick/ImageMagick/issues/582
  * coders/png.c: fixed NULL dereference when trying to write an empty MNG
    (CVE-2017-11522, reference
    https://github.com/ImageMagick/ImageMagick/issues/586).

2017-07-15  7.0.6-2 Glenn Randers-Pehrson <glennrp@image...>
  * Added caNv, eXIf, and pHYs to the list of PNG chunks to be removed
    by the "-strip" option.

2017-07-15  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-1, GIT revision 20447:c2a315e10:20170715.

2017-07-13  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Implemented PNG eXIf chunk support.

2017-07-08  7.0.6-1 Cristy  <quetzlzacatenango@image...>
  * Support new -auto-threshold option.  OTSU and Triangle methods are
    currently supported.  Look for the Kapur method in the next release.
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).
  * Don't use variable float_t / double_t, bump SO (reference
    https://github.com/ImageMagick/ImageMagick/issues/510).
  * Support DNG images with libraw delegate library.

2017-07-02  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Reject PNG file that is too small (under 60 bytes) to contain
    a valid image.
  * Reject JPEG file that is too small (under 107 bytes) to contain
    a valid image.
  * Reject JNG file that is too small (under 147 bytes) to contain
    a valid image.

2017-06-22  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
  * Stop a memory leak in read_user_chunk_callback() (reference
    https://github.com/ImageMagick/ImageMagick/issues/517,
    CVE 2017-11310).

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.6-0, GIT revision 20194:b0c0d00:20170611.

2017-06-10  7.0.6-0 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Accept exIf chunks whose data segment
    erroneously begins with "Exif\0\0".

2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
  * Introduce SetMagickSecurityPolicy() (MagickCore) and
    MagickSetSecurityPolicy() (MagickWand) to set the ImageMagick security
    policy (reference https://github.com/ImageMagick/ImageMagick/issues/407).

2017-06-02  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-10, GIT revision 20155:38ebc02:20170602.

2017-06-01  7.0.5-10 Glenn Randers-Pehrson <glennrp@image...>
  * Removed experimental PNG zxIF chunk support; the proposal is dead.

2017-06-01  7.0.5-10 Cristy  <quetzlzacatenango@image...>
  * Fix choppy bitmap font rendering (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32071).
  * The +opaque option is not longer a noop (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32081).
  * Add support  for 'hex:' property.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-9, GIT revision 20113:8b67333:20170528.

2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
  * Transient error validating the JPEG-2000 image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/501).
  * Properly allocate DCM image colormap (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32063).

2017-05-26  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-8, GIT revision 20099:870a016:20170526.

2017-05-23  7.0.5-8 Cristy  <quetzlzacatenango@image...>
  * Improper allocation of memory for IM instances without threads (reference
    https://github.com/ImageMagick/ImageMagick/issues/497).
  * Delete corrupt image from list (reference
    https://github.com/ImageMagick/ImageMagick/issues/500).

2017-05-19  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20078:7ce2d38:20170519.

2017-05-15  7.0.5-7 Cristy  <quetzlzacatenango@image...>
  * Support various image operators for the compare utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=31938).

 2017-05-12  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-6, GIT revision 20039:9371904:20170512.

2017-05-10  7.0.5-6 John Cupitt <jcupitt@gmail.com>
  * Revise DICOM window and rescale handling (reference
    https://github.com/ImageMagick/ImageMagick/pull/484)

2017-05-06  7.0.5-6 Cristy  <quetzlzacatenango@image...>
  * Restore the -alpha Shape option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31879).
  * Fix transient PDF bug (reference
    https://github.com/ImageMagick/ImageMagick/issues/463).
  * The +opaque option now works on all channels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31862).
  * Ensure backwards compatibility for the -combine option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31855).
  * Check for EOF conditions for RLE image format.
  * Reset histogram page geometry (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31920).

2017-04-24  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-5, GIT revision 19915:12eec43:20170424.

2017-03-26  7.0.5-5 Cristy  <quetzlzacatenango@image...>
  * Minimize buffer copies to improve OpenCL performance.
  * Morphology thinning is no longer a no-op (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31650).
  * Patch two PCD writer problems, corrupt output and dark pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=3164).
  * Support ICC based PDF's (reference
    https://github.com/ImageMagick/ImageMagick/issues/417).
  * Fix improper EPS clip path rendering (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31722).

2017-03-24  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-4, GIT revision 19754:350fff3:20170324.

2017-03-21  7.0.5-4 Cristy  <quetzlzacatenango@image...>
  * Respect -loop option for animate -window (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31619).

2017-03-17  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-3, GIT revision 19741:070c3fb:20170317.

2017-03-14  7.0.5-3 Cristy  <quetzlzacatenango@image...>
  * Support namespaces for the security policy.
  * Support the -authenticate option for PDF (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31530).

2017-03-11  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-2, GIT revision 19696:da91a7c:20170311.

2017-03-06  7.0.5-2 Cristy  <quetzlzacatenango@image...>
  * Respect throttle policy (reference
    https://github.com/ImageMagick/ImageMagick/issues/393).
  * Return proper minima / maxima (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).

2017-03-03  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-1, GIT revision 19662:b7f455a:20170303.

2017-02-21  7.0.5-1 Cristy  <quetzlzacatenango@image...>
  * Fix Spurious memory allocation message (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31438).
  * Identical images should return inf for PSNR (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31487).

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.5-0, GIT revision 19616:505fea9:20170220.

2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
  * Fix transient bug with -separate option (reference
    https://github.com/ImageMagick/ImageMagick/issues/385).

2017-02-18  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-10, GIT revision 19608:fe757a2:20170218.

2017-02-18  7.0.4-10 Dirk Lemstra <dirk@lem.....org>
  * Fixed fd leak for webp coder (reference
    https://github.com/ImageMagick/ImageMagick/pull/382)

2017-02-15  7.0.4-10 Cristy  <quetzlzacatenango@image...>
  * Prevent random pixel data for corrupt JPEG image (bug report from
    Hirokazu Moriguchi, Sony).
  * Restore -mattecolor option.
  * Support pixel-cache and shred security policies.
  * Bump Magick++ SO.  Previously a global replace changed matteColor to
    alphaColor.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-9, GIT revision 19580:d474b37:20170214.

2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
  * Revert patch that did not set update trait on alpha channel.

2017-02-13  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-8, GIT revision 19574:7642384:20170213.

2017-02-09  7.0.4-8 Dirk Lemstra <dirk@lem.....org>
  * Fixed memory leak when creating nested exceptions in Magick++ (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=23&p=142634)

2017-02-09  7.0.4-8 Cristy  <quetzlzacatenango@image...>
  * Unbreak build without JPEG support (reference
    https://github.com/ImageMagick/ImageMagick/pull/373).
  * Document behavior change in the security policy (thanks to yoya @
    https://blog.awm.jp/2017/02/09/imagemagick-en/).
  * Return unbiased standard deviation for image statistics (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).
  * Don't set update trait on alpha channel (private e-mail concerning
    -levels-colors option).

2017-02-04  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-7, GIT revision 19513:5783e57:20170204.

2017-01-28  7.0.4-7 Cristy  <quetzlzacatenango@image...>
  * Sanitize comments that include braces for the MIFF image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/368).

2017-01-27  7.0.4-7 Glenn Randers-Pehrson <glennrp@image...>
  * coders/png.c: Added support for a proposed new PNG chunk
    (zxIf, read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.  Enable
    exIf and zxIf with CPPFLAGS="-DexIf_SUPPORTED -DxzIf_SUPPORTED".
    If exIf is enabled, only the uncompressed exIF chunk will be
    written and the hex-encoded zTXt chunk containing the raw Exif
    profile won't be written.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-6, GIT revision 19442:4747de9:20170127.

2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
  * Uninitialized data in MAT image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/362).
  * Properly auto-fit caption (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Correction to composite Over operator (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31282).
  * Respect gravity option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31284).

2017-01-22  7.0.4-6 Glenn Randers-Pehrson <glennrp@image...>
  * Renamed read_vpag_chunk_callback() function to png_user_chunk_callback()
    in coders/png.c
  * Implemented a private PNG caNv (canvas) chunk for remembering the
    original dimensions and offsets when an image is cropped.  Previously
    we used the oFFs and vpAg chunks for this purpose, but this had potential
    conflicts with other applications that also use the oFFs chunk.
  * coders/png.c: Added support for a proposed new PNG chunk (exIf
    read-write, eXIf read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.

2017-01-22  7.0.4-6 Dirk Lemstra <dirk@lem.....org>
  * Replaced CoderSeekableStreamFlag with CoderDecoderSeekableStreamFlag and
    CoderEncoderSeekableStreamFlag.

2017-01-21  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-5, GIT revision 19381:7ae396f:20170121.

2017-01-18  7.0.4-5 Cristy  <quetzlzacatenango@image...>
  * Don't set background for transparent tiled images (reference
    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31210).

2017-01-14  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-4, GIT revision 19361:a12953c:20170114.

2017-01-14  7.0.4-4 Dirk Lemstra <dirk@lem.....org>
  * Added support for RGB555, RGB565, ARGB4444 and ARGB1555 to the
    BMP encoder (reference
    https://github.com/ImageMagick/ImageMagick/issues/344).

2017-01-10  7.0.4-4 Cristy  <quetzlzacatenango@image...>
  * Recognize XML policy closing tags (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31182).
  * Fix memory leak in the MPC format.

2017-01-07  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-3, GIT revision 19329:930ca78:20170107.

2017-01-04  7.0.4-3 Cristy  <quetzlzacatenango@image...>
  * Increase memory allocation for TIFF pixels (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31161).

2017-01-03  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-2, GIT revision 19318:8766311:20170103.

2017-01-02  7.0.4-2 Cristy  <quetzlzacatenango@image...>
  * Validation unit test for MNG works again.

2016-12-31  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-1, GIT revision 19292:c5ccfa8:20161231.

2016-12-26  7.0.4-1 Cristy  <quetzlzacatenango@image...>
  * Initialize draw_info alpha member to OpaqueAlpha.
  * Monochrome images no longer have inverted colors (reference
    https://github.com/ImageMagick/ImageMagick/issues/332).

2016-12-18  7.0.4-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.4-0, GIT revision 19221:d5e8abc:20161218.

2016-12-14  7.0.4-0 Cristy  <quetzlzacatenango@image...>
 * Do not close path for linejoins of round (reference
   https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31039).

2016-12-10  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-10, GIT revision 19191:338f088:20161210.

2016-12-07  7.0.3-10 Cristy  <quetzlzacatenango@image...>
  * Set colorspace to sRGB if -append has non-homogenous colorspaces (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29105).
  * Respect connected-components:area-threshold define (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31006).
  * Enable alpha channel if background color is non-opaque (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31016).
  * Return correct offset for negative index for -fx option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31019).
  * Fixed improper scaling of certain FITS images (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31028).
  * Properly center text label (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31027).

2016-12-05  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-9, GIT revision 19139:6fed3f1:20161205.

2016-11-26  7.0.3-9 Cristy  <quetzlzacatenango@image...>
  * Support the compare -read-mask option.
  * Support read-masks for the -modulate option.
  * Prevent buffer overflow when streaming an image (reference
    https://github.com/ImageMagick/ImageMagick/issues/312).
  * Fix possible buffer overflow when writing compressed TIFFS (vulnerability
    report from Cisco Talos, CVE-2016-8707).

2016-11-15  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-8, GIT revision 19067:5aceded:20161125.

2016-11-18  7.0.3-8 Cristy  <quetzlzacatenango@image...>
  * Support the phash:colorspaces and phash:normalize options.
  * If a convenient line break is not found, force it for caption: (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Set alpha member of draw structure to OpaqueAlpha (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30894).
  * Off by 1 error when computing the standard deviation (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30866).
  * Apply Debian patches, (reference
    https://github.com/ImageMagick/ImageMagick/issues/304).
  * Permit EPT images with just a TIFF or EPS image, not both (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30921).
  * The -clone option no longer leaks memory.
  * Render to clip mask rather than image for clip-path MVG graphics primitive.

2016-11-15  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-7, GIT revision 19024:87aca83:20161115.

2016-11-10  7.0.3-7 Cristy  <quetzlzacatenango@image...>
  * Web pages were broken when we moved to HTTPS protocol.

2016-11-08  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-6, GIT revision 19001:4cff747:20161108.

2016-11-01  7.0.3-6 Cristy  <quetzlzacatenango@image...>
  * Off by one memory allocation (reference
    https://github.com/ImageMagick/ImageMagick/issues/296).
  * The -extent option now matches the results of IMv6 (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=30779).
  * Prevent fault in MSL interpreter (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30797).
  * Mask composite produces proper results for the convert utility (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29675).

2016-10-10  7.0.3-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-5, GIT revision 18975:a8174a2:20161030.

2016-10-16  7.0.3-5 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-4, GIT revision 18937:83da034:20161010.

2016-10-10  7.0.3-4 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect parsing with ordered dither. (reference
    https://github.com/ImageMagick/ImageMagick/issues/254)

2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
  * Unit test pass again after small SUN image patch.

2016-10-08  7.0.3-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-3, GIT revision 18924:d6614e7:20161008.

2016-10-07  7.0.3-3 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading a DCM image that contains
    multiple segments.

2016-10-02  7.0.3-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-2, GIT revision 18887:6b27c5b:20161002.

2016-09-27  7.0.3-2 Dirk Lemstra <dirk@lem.....org>
  * Fixed incorrect RLE decoding when reading an SGI image (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30514)

2016-09-20  7.0.3-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-1, GIT revision 18851:ad91ea8:20160920.

2016-09-16  7.0.3-1 Dirk Lemstra <dirk@lem.....org>
  * Added layer RLE compression to the PSD encoder.
  * Added define 'psd:preserve-opacity-mask' to preserve the opacity mask
    in a PSD file.
  * Fixed issue where the display window was used instead of the data window
    when reading EXR files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&p=137849).

2016-09-05  7.0.3-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.3-0, GIT revision 18786:10aa64c:20160905.

2016-08-29  7.0.3-0 Dirk Lemstra <dirk@lem.....org>
  * Fixed reading DXT1 images with an alpha channel.
  * Fixed incorrect padding calculation in PSD encoder.

2016-08-27  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-10, GIT revision 18750:e3335b3:20160827.

2016-08-27  7.0.2-10 Dirk Lemstra <dirk@lem.....org>
  * Added define 'psd:additional-info' to preserve the additional information
    in a PSD file.

2016-08-15  7.0.2-10 Cristy  <quetzlzacatenango@image...>
  * Prevent buffer overflow in BMP & SGI coders (bug report from
    pwchen&rayzhong of tencent).
  * Prevent buffer overflow and other problems in SIXEL, PDB, MAP, TIFF and
    CALS coders (bug report from Donghai Zhu).
  * The -stream option now increments the pixel pointer properly (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30327).

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-9, GIT revision 18707:2c02f09:20160814.

2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
  * Fix compile error in opencl.c (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30289).
  * Eliminate compiler warning.

2016-08-14  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-8, GIT revision 18698:74b1d5d:20160814.

2016-08-07  7.0.2-8 Cristy  <quetzlzacatenango@image...>
  * Prevent spurious removal of MPC cache files (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30256).
  * Note alpha channel when combining 4 or more images (reference
    https://github.com/ImageMagick/ImageMagick/issues/250).

2016-08-06  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-7, GIT revision 10980:ecc03a2:20160806.

2016-08-01  7.0.2-7 Cristy  <quetzlzacatenango@image...>
  * Evaluate lazy pixel cache morphology to prevent buffer overflow (bug report
    from Ibrahim M. El-Sayed).
  * Prevent buffer overflow (bug report from Max Thrane).
  * Prevent memory use after free (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30245).

2016-07-30  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-6, GIT revision 18651:df24175:20160729.

2016-07-29  7.0.2-6 Cristy  <quetzlzacatenango@image...>
  * Support -region option (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29692).

2016-07-21  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-5, GIT revision 18627:2b5ddbd:20160721.

2016-07-13  7.0.2-5 Cristy  <quetzlzacatenango@image...>
  * Fix MVG stroke-opacity (reference
    https://github.com/ImageMagick/ImageMagick/issues/229).
  * Prevent possible buffer overflow when reading TIFF images (bug report from
    Shi Pu of MS509 Team).
  * Initialize index channel to get expected results from the stegano coder.

2016-07-11  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-4, GIT revision 18591:50debe5:20160710.

2016-07-10  7.0.2-4 Cristy  <quetzlzacatenango@image...>
  * To comply with the SVG standard, use stroke-opacity for transparent strokes.
  * Define CompositeChannels mask to Red, Green, Blue, Alpha, and Black.

2016-07-09  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-3, GIT revision 18572:28560fc:20160709.

2016-07-01  7.0.2-3 Cristy  <quetzlzacatenango@image...>
  * Patch so -kuwahara option can preserve colormapped edges.
  * The histogram coder now returns the correct extent.
  * Use CopyMagickString() rather than CopyMagickMemory() for strings.

2016-06-26  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-2, GIT revision 18514:a7b5b46:20160626.

2016-06-23  7.0.2-2 Cristy  <quetzlzacatenango@image...>
  * Correct for numerical instability (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).

2016-06-21  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-1, GIT revision 18479:931319b:20160622.

2016-06-17  7.0.2-1 Dirk Lemstra <dirk@lem.....org>
  * Added support for GROUP4 compression to the FAX coder.

2016-06-12  7.0.2-1 Cristy  <quetzlzacatenango@image...>
  * Distort no longer converts grayscale image to sRGB (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29895).
  * Don't return a zero bounding box for QueryMultilineFontMetrics() (reference
    https://github.com/ImageMagick/ImageMagick/issues/222).

2016-06-12  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.2-0, GIT revision 10884:f0e15e8:20160612.

2016-06-09  7.0.2-0 Cristy  <quetzlzacatenango@image...>
  * Backoff finite precision epsilon (reference
    https://github.com/ImageMagick/ImageMagick/issues/215).
  * Fix drawing glitch for stroke widths greater than 2 (reference
    https://github.com/ImageMagick/ImageMagick/issues/218).

2016-06-05  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-10, GIT revision 18406:ba4ad2d:20160607.

2016-06-04  7.0.1-10 Cristy  <quetzlzacatenango@image...>
  * Deny indirect reads by policy, remove policy to permit, e.g.,
    convert caption:@mytext.txt ...
  * RLE check for pixel offset less than 0 (heap overflow report from Craig
    Young).
  * Properly initialze PES blocks (reference
    https://github.com/ImageMagick/ImageMagick/issues/213).

2016-06-03  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-9, GIT revision 10847:339f803:20160602.

2016-06-02  7.0.1-9 Cristy  <quetzlzacatenango@image...>
  * Fix small memory leak (patch provided by Андрей Черный).
  * Coder path traversal is not authorized (bug report provided by
    Masaaki Chida).
  * Turn off alpha channel for the compare difference image (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29828).

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-8, GIT revision 18334:97775b5:20160531.

2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
  * Support configure script --enable-pipes option to enable pipes (|) in
    filenames.
  * Support configure script --enable-indirect-reads option to enable
    indirect reads (@) in filenames.

2016-05-30  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-7, GIT revision 18321:5511ef5:20160530.

2016-05-25  7.0.1-7 Cristy  <quetzlzacatenango@image...>
  * Security improvements to TEXT coder broke it (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29754).
  * Fix stroke offset problem for -annotate (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29626).
  * Don't interpret -fx option arguments (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29774);
  * Add additional checks to DCM reader to prevent data-driven faults (bug
    report from Hanno Böck).

2016-05-21  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-6, GIT revision 18241:d4f277c:20160521.

2016-05-20  7.0.1-6 Cristy  <quetzlzacatenango@image...>
  * Fixed proper placement of text annotation for east / west gravity.

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-5, GIT revision 10789:f7c2e89:20160518,

2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
  * Process channels independently for -channel -equalize (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29708).
  * Fix pixel cache on disk regression (reference
    https://github.com/ImageMagick/ImageMagick/issues/202).

2016-05-15  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-4, GIT revision 10778:52dae14:20160516.

2016-05-10  7.0.1-4 Cristy  <quetzlzacatenango@image...>
  * Prevent possible shell command injection vulnerability through the
    authenticate parameter of the PDF, PCL and XPS coders (report from
    Erez Turjeman).
  * Quote passwords when passed to a delegate program.
  * Iterate channels over source image rather than destination (bug report
    from Hanno Böck).
  * Can read geo-related EXIF metdata once-again (reference
    https://github.com/ImageMagick/ImageMagick/issues/198).
  * Sanitize all delegate emedded formatting characters.
  * Don't sync pixel cache in AcquireAuthenticCacheView() (bug report from
    Hanno Böck).

2016-05-09  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-3, GIT revision 10755:d540dda:20160509.

2016-05-07  7.0.1-3 Cristy  <quetzlzacatenango@image...>
  * Remove https delegate.

2016-05-06  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 7.0.1-2, GIT revision 10741:5746147:20160507.

2016-05-04  7.0.1-2 Cristy  <quetzlzacatenango@image...>
  * Check for buffer overflow in magick/draw.c/DrawStrokePolygon().
  * Replace show delegate title with image filename rather than label.
  * Fix GetNextToken() off by one error.
  * Remove support for internal ephemeral coder.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-1, GIT revision 10723:9fc8a0c:20160503.

2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
  * Sanitize input filename for http / https delegates (improved patch).
  * Fix for possible security vulnerabilities (reference
    https://imagemagick.org/discourse-server/viewtopic.php?f=4&t=29588).

2016-04-30  7.0.1-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.1-0, GIT revision 10716:b527bce:20160430.

2016-01-30  7.0.0-0 Fahad-Alsaidi & ShamsaHamed
  * Add support for languages that require complex text layout (reference
    https://github.com/ImageMagick/ImageMagick/pull/88).

2012-04-27  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Allow the use of set and escapes when no images in memory
    (unless you attempt to access per-image meta-data)
    Currently does not include %[fx:...] and %[pixel:...]

2012-10-05  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  * Rather than replicate 'options' into 'artifacts' make a link
    from image to image_info and lookup a global option if no artifact
    is defined.

2012-09-11  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Remove unnecessary initial ClampToQuantum.

2012-09-10  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * sigmoidal-contrast:
  * Direct computation, without LUT;
  * Fix re-declaration of i (at the top, and inside a conditional).

2012-09-04  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add tanh/atanh clone of legacy sigmoidal map (faster & more accurate).

2012-08-08  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  * Add final ClampToQuantum in sigmoidal colormap loop.
  * Remove OpenMP calls from colormap update loops.

2011-08-01  7.0.0-0 Cristy  <quetzlzacatenango@image...>
  * New version 7.0.0-0.

