diff options
108 files changed, 845 insertions, 726 deletions
diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index 56665e5a8..05fb5c6c2 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -646,10 +646,16 @@ void Magick::Image::colorMatrix (const size_t order_, // in the current image. False is returned if the images are identical. bool Magick::Image::compare ( const Image &reference_ ) { + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); modifyImage(); Image ref = reference_; ref.modifyImage(); - return static_cast<bool>(IsImagesEqual(image(), ref.image())); + bool status = + static_cast<bool>(IsImagesEqual(image(), ref.image(), &exceptionInfo)); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); + return status; } // Composite two images @@ -762,9 +768,12 @@ void Magick::Image::crop ( const Geometry &geometry_ ) // Cycle Color Map void Magick::Image::cycleColormap ( const ssize_t amount_ ) { + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); modifyImage(); - CycleColormapImage( image(), amount_ ); - throwImageException(); + CycleColormapImage( image(), amount_, &exceptionInfo ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } // Despeckle @@ -1310,11 +1319,14 @@ void Magick::Image::magnify ( void ) // Remap image colors with closest color from reference image void Magick::Image::map ( const Image &mapImage_ , const bool dither_ ) { + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); modifyImage(); options()->quantizeDither( dither_ ); RemapImage ( options()->quantizeInfo(), image(), - mapImage_.constImage()); - throwImageException(); + mapImage_.constImage(), &exceptionInfo); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } // Floodfill designated area with replacement alpha value void Magick::Image::matteFloodfill ( const Color &target_ , @@ -1537,9 +1549,12 @@ void Magick::Image::quantize ( const bool measureError_ ) else options()->quantizeInfo()->measure_error=MagickFalse; - QuantizeImage( options()->quantizeInfo(), image() ); + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); + QuantizeImage( options()->quantizeInfo(), image(), &exceptionInfo ); - throwImageException(); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } // Apply an arithmetic or bitwise operator to the image pixel quantums. @@ -1885,15 +1900,17 @@ void Magick::Image::scale ( const Geometry &geometry_ ) void Magick::Image::segment ( const double clusterThreshold_, const double smoothingThreshold_ ) { + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); modifyImage(); SegmentImage ( image(), options()->quantizeColorSpace(), (MagickBooleanType) options()->verbose(), clusterThreshold_, - smoothingThreshold_ ); - throwImageException(); + smoothingThreshold_, &exceptionInfo ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); SyncImage( image() ); - throwImageException(); } // Shade image using distant light source @@ -2603,26 +2620,30 @@ void Magick::Image::clipMask ( const Magick::Image & clipMask_ ) { modifyImage(); + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); if( clipMask_.isValid() ) { // Set clip mask - SetImageClipMask( image(), clipMask_.constImage() ); + SetImageClipMask( image(), clipMask_.constImage(), &exceptionInfo ); } else { // Unset existing clip mask - SetImageClipMask( image(), 0 ); + SetImageClipMask( image(), 0, &exceptionInfo ); } + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } Magick::Image Magick::Image::clipMask ( void ) const { - ExceptionInfo exceptionInfo; - GetExceptionInfo( &exceptionInfo ); - MagickCore::Image* image = - GetImageClipMask( constImage(), &exceptionInfo ); - throwException( exceptionInfo ); - (void) DestroyExceptionInfo( &exceptionInfo ); - return Magick::Image( image ); + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); + MagickCore::Image* image = + GetImageClipMask( constImage(), &exceptionInfo ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); + return Magick::Image( image ); } void Magick::Image::colorFuzz ( const double fuzz_ ) @@ -3609,13 +3630,17 @@ std::string Magick::Image::signature ( const bool force_ ) const Lock( &_imgRef->_mutexLock ); // Re-calculate image signature if necessary + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); if ( force_ || !GetImageProperty(constImage(), "Signature") || constImage()->taint ) { - SignatureImage( const_cast<MagickCore::Image *>(constImage()) ); + SignatureImage( const_cast<MagickCore::Image *>(constImage()), &exceptionInfo ); } + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); const char *property = GetImageProperty(constImage(), "Signature"); return std::string( property ); @@ -3940,9 +3965,13 @@ Magick::ImageType Magick::Image::type ( void ) const } void Magick::Image::type ( const Magick::ImageType type_) { + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); modifyImage(); options()->type( type_ ); - SetImageType( image(), type_ ); + SetImageType( image(), type_, &exceptionInfo ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } void Magick::Image::verbose ( const bool verboseFlag_ ) diff --git a/MagickCore/animate.c b/MagickCore/animate.c index b79c0d6c0..97a3df15b 100644 --- a/MagickCore/animate.c +++ b/MagickCore/animate.c @@ -496,7 +496,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, *title; title=InterpretImageProperties(resource_info->image_info,*image, - resource_info->title); + resource_info->title,exception); (void) CopyMagickString(windows->image.name,title,MaxTextExtent); title=DestroyString(title); } @@ -889,7 +889,8 @@ MagickExport void XAnimateBackgroundImage(Display *display, next=GetNextImageInList(next); } if (next != (Image *) NULL) - (void) RemapImages(resources.quantize_info,images,(Image *) NULL); + (void) RemapImages(resources.quantize_info,images,(Image *) NULL, + exception); } /* Sort images by increasing scene number. @@ -915,7 +916,7 @@ MagickExport void XAnimateBackgroundImage(Display *display, (visual_info->klass == TrueColor) || (visual_info->klass == DirectColor)) (void) SetImageType(image_list[scene],image_list[scene]->matte == - MagickFalse ? TrueColorType : TrueColorMatteType); + MagickFalse ? TrueColorType : TrueColorMatteType,exception); if ((display_image->columns < image_list[scene]->columns) && (display_image->rows < image_list[scene]->rows)) display_image=image_list[scene]; @@ -923,7 +924,7 @@ MagickExport void XAnimateBackgroundImage(Display *display, if ((resource_info->map_type != (char *) NULL) || (visual_info->klass == TrueColor) || (visual_info->klass == DirectColor)) (void) SetImageType(display_image,display_image->matte == MagickFalse ? - TrueColorType : TrueColorMatteType); + TrueColorType : TrueColorMatteType,exception); XMakeStandardColormap(display,visual_info,&resources,display_image,map_info, &pixel); /* @@ -1511,7 +1512,7 @@ MagickExport Image *XAnimateImages(Display *display, } if (next != (Image *) NULL) (void) RemapImages(resource_info->quantize_info,images, - (Image *) NULL); + (Image *) NULL,exception); } /* Sort images by increasing scene number. @@ -1537,7 +1538,7 @@ MagickExport Image *XAnimateImages(Display *display, (visual_info->klass == TrueColor) || (visual_info->klass == DirectColor)) (void) SetImageType(image_list[scene],image_list[scene]->matte == - MagickFalse ? TrueColorType : TrueColorMatteType); + MagickFalse ? TrueColorType : TrueColorMatteType,exception); if ((display_image->columns < image_list[scene]->columns) && (display_image->rows < image_list[scene]->rows)) display_image=image_list[scene]; @@ -1651,7 +1652,7 @@ MagickExport Image *XAnimateImages(Display *display, *title; title=InterpretImageProperties(resource_info->image_info,display_image, - resource_info->title); + resource_info->title,exception); (void) CopyMagickString(windows->image.name,title,MaxTextExtent); (void) CopyMagickString(windows->image.icon_name,title,MaxTextExtent); title=DestroyString(title); @@ -1962,7 +1963,7 @@ MagickExport Image *XAnimateImages(Display *display, *title; title=InterpretImageProperties(resource_info->image_info, - image_list[scene],resource_info->title); + image_list[scene],resource_info->title,exception); (void) CopyMagickString(windows->image.name,title,MaxTextExtent); title=DestroyString(title); } @@ -2100,7 +2101,7 @@ MagickExport Image *XAnimateImages(Display *display, *title; title=InterpretImageProperties(resource_info->image_info, - image,resource_info->title); + image,resource_info->title,exception); (void) CopyMagickString(windows->image.name,title, MaxTextExtent); title=DestroyString(title); diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c index 0def9c980..5559c98aa 100644 --- a/MagickCore/annotate.c +++ b/MagickCore/annotate.c @@ -463,7 +463,7 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, (void) FormatLocaleString(primitive,MaxTextExtent, "rectangle 0,0 %g,%.20g",metrics.origin.x,(double) height); (void) CloneString(&undercolor_info->primitive,primitive); - (void) DrawImage(image,undercolor_info); + (void) DrawImage(image,undercolor_info,exception); (void) DestroyDrawInfo(undercolor_info); } annotate_info->affine.tx=offset.x; @@ -475,7 +475,7 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, annotate_info->affine.ty-=(draw_info->affine.sy*(metrics.ascent+ metrics.descent-metrics.underline_position)); (void) CloneString(&annotate_info->primitive,primitive); - (void) DrawImage(image,annotate_info); + (void) DrawImage(image,annotate_info,exception); } else if (annotate->decorate == UnderlineDecoration) @@ -483,7 +483,7 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, annotate_info->affine.ty-=(draw_info->affine.sy* metrics.underline_position); (void) CloneString(&annotate_info->primitive,primitive); - (void) DrawImage(image,annotate_info); + (void) DrawImage(image,annotate_info,exception); } /* Annotate image with text. @@ -496,7 +496,7 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, annotate_info->affine.ty-=(draw_info->affine.sy*(height+ metrics.underline_position+metrics.descent)/2.0); (void) CloneString(&annotate_info->primitive,primitive); - (void) DrawImage(image,annotate_info); + (void) DrawImage(image,annotate_info,exception); } } /* @@ -1476,7 +1476,7 @@ static MagickBooleanType RenderFreetype(Image *image,const DrawInfo *draw_info, annotate_info->affine.tx=offset->x; annotate_info->affine.ty=offset->y; (void) ConcatenateString(&annotate_info->primitive,"'"); - (void) DrawImage(image,annotate_info); + (void) DrawImage(image,annotate_info,exception); } } /* diff --git a/MagickCore/colormap.c b/MagickCore/colormap.c index 265a11c08..75f47b684 100644 --- a/MagickCore/colormap.c +++ b/MagickCore/colormap.c @@ -87,7 +87,7 @@ % The format of the AcquireImageColormap method is: % % MagickBooleanType AcquireImageColormap(Image *image, -% const size_t colors) +% const size_t colors,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -95,6 +95,8 @@ % % o colors: the number of colors in the image colormap. % +% o exception: return any errors or warnings in this structure. +% */ static inline size_t MagickMax(const size_t x, @@ -114,7 +116,7 @@ static inline size_t MagickMin(const size_t x, } MagickExport MagickBooleanType AcquireImageColormap(Image *image, - const size_t colors) + const size_t colors,ExceptionInfo *exception) { register ssize_t i; @@ -171,7 +173,8 @@ MagickExport MagickBooleanType AcquireImageColormap(Image *image, % % The format of the CycleColormapImage method is: % -% MagickBooleanType CycleColormapImage(Image *image,const ssize_t displace) +% MagickBooleanType CycleColormapImage(Image *image,const ssize_t displace, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -179,16 +182,15 @@ MagickExport MagickBooleanType AcquireImageColormap(Image *image, % % o displace: displace the colormap this amount. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType CycleColormapImage(Image *image, - const ssize_t displace) + const ssize_t displace,ExceptionInfo *exception) { CacheView *image_view; - ExceptionInfo - *exception; - MagickBooleanType status; @@ -200,9 +202,8 @@ MagickExport MagickBooleanType CycleColormapImage(Image *image, if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); if (image->storage_class == DirectClass) - (void) SetImageType(image,PaletteType); + (void) SetImageType(image,PaletteType,exception); status=MagickTrue; - exception=(&image->exception); image_view=AcquireCacheView(image); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(dynamic,4) shared(status) @@ -258,12 +259,15 @@ MagickExport MagickBooleanType CycleColormapImage(Image *image, % % The format of the SortColormapByIntensity method is: % -% MagickBooleanType SortColormapByIntensity(Image *image) +% MagickBooleanType SortColormapByIntensity(Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % % o image: A pointer to an Image structure. % +% o exception: return any errors or warnings in this structure. +% */ #if defined(__cplusplus) || defined(c_plusplus) @@ -290,14 +294,12 @@ static int IntensityCompare(const void *x,const void *y) } #endif -MagickExport MagickBooleanType SortColormapByIntensity(Image *image) +MagickExport MagickBooleanType SortColormapByIntensity(Image *image, + ExceptionInfo *exception) { CacheView *image_view; - ExceptionInfo - *exception; - MagickBooleanType status; @@ -346,7 +348,6 @@ MagickExport MagickBooleanType SortColormapByIntensity(Image *image) for (i=0; i < (ssize_t) image->colors; i++) pixels[(ssize_t) image->colormap[i].alpha]=(unsigned short) i; status=MagickTrue; - exception=(&image->exception); image_view=AcquireCacheView(image); for (y=0; y < (ssize_t) image->rows; y++) { diff --git a/MagickCore/colormap.h b/MagickCore/colormap.h index d81fa66b5..8d5b3cbb3 100644 --- a/MagickCore/colormap.h +++ b/MagickCore/colormap.h @@ -23,9 +23,9 @@ extern "C" { #endif extern MagickExport MagickBooleanType - AcquireImageColormap(Image *,const size_t), - CycleColormapImage(Image *,const ssize_t), - SortColormapByIntensity(Image *); + AcquireImageColormap(Image *,const size_t,ExceptionInfo *), + CycleColormapImage(Image *,const ssize_t,ExceptionInfo *), + SortColormapByIntensity(Image *,ExceptionInfo *); #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/MagickCore/compare.c b/MagickCore/compare.c index 57297191c..22cf78816 100644 --- a/MagickCore/compare.c +++ b/MagickCore/compare.c @@ -1458,7 +1458,7 @@ MagickExport double *GetImageDistortions(Image *image, % The format of the IsImagesEqual method is: % % MagickBooleanType IsImagesEqual(Image *image, -% const Image *reconstruct_image) +% const Image *reconstruct_image,ExceptionInfo *exception) % % A description of each parameter follows. % @@ -1466,17 +1466,16 @@ MagickExport double *GetImageDistortions(Image *image, % % o reconstruct_image: the reconstruct image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType IsImagesEqual(Image *image, - const Image *reconstruct_image) + const Image *reconstruct_image,ExceptionInfo *exception) { CacheView *image_view, *reconstruct_view; - ExceptionInfo - *exception; - MagickBooleanType status; @@ -1500,7 +1499,6 @@ MagickExport MagickBooleanType IsImagesEqual(Image *image, maximum_error=0.0; mean_error_per_pixel=0.0; mean_error=0.0; - exception=(&image->exception); image_view=AcquireCacheView(image); reconstruct_view=AcquireCacheView(reconstruct_image); for (y=0; y < (ssize_t) image->rows; y++) diff --git a/MagickCore/compare.h b/MagickCore/compare.h index 714fea447..15944b7ee 100644 --- a/MagickCore/compare.h +++ b/MagickCore/compare.h @@ -50,7 +50,7 @@ extern MagickExport Image extern MagickExport MagickBooleanType GetImageDistortion(Image *,const Image *,const MetricType,double *, ExceptionInfo *), - IsImagesEqual(Image *,const Image *); + IsImagesEqual(Image *,const Image *,ExceptionInfo *); #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/MagickCore/compress.c b/MagickCore/compress.c index d29dd3bfb..812537d91 100644 --- a/MagickCore/compress.c +++ b/MagickCore/compress.c @@ -361,12 +361,15 @@ MagickExport void Ascii85Encode(Image *image,const unsigned char code) % % The format of the HuffmanDecodeImage method is: % -% MagickBooleanType HuffmanDecodeImage(Image *image) +% MagickBooleanType HuffmanDecodeImage(Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static inline size_t MagickMax(const size_t x,const size_t y) @@ -383,7 +386,8 @@ static inline size_t MagickMin(const size_t x,const size_t y) return(y); } -MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) +MagickExport MagickBooleanType HuffmanDecodeImage(Image *image, + ExceptionInfo *exception) { #define HashSize 1021 #define MBHashA 293 @@ -423,9 +427,6 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) const HuffmanTable *entry; - ExceptionInfo - *exception; - HuffmanTable **mb_hash, **mw_hash; @@ -507,7 +508,6 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) image->x_resolution=204.0; image->y_resolution=196.0; image->units=PixelsPerInchResolution; - exception=(&image->exception); image_view=AcquireCacheView(image); for (y=0; ((y < (ssize_t) image->rows) && (null_lines < 3)); ) { @@ -673,7 +673,7 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) % The format of the HuffmanEncodeImage method is: % % MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, -% Image *image,Image *inject_image) +% Image *image,Image *inject_image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -683,9 +683,11 @@ MagickExport MagickBooleanType HuffmanDecodeImage(Image *image) % % o inject_image: inject into the image stream. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, - Image *image,Image *inject_image) + Image *image,Image *inject_image,ExceptionInfo *exception) { #define HuffmanOutputCode(entry) \ { \ @@ -716,9 +718,6 @@ MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, const HuffmanTable *entry; - ExceptionInfo - *exception; - int k, runlength; @@ -780,7 +779,7 @@ MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, scanline=(unsigned char *) RelinquishMagickMemory(scanline); return(MagickFalse); } - (void) SetImageType(huffman_image,BilevelType); + (void) SetImageType(huffman_image,BilevelType,exception); byte='\0'; bit=(unsigned char) 0x80; if (LocaleCompare(image_info->magick,"FAX") != 0) @@ -797,7 +796,6 @@ MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, /* Compress to 1D Huffman pixels. */ - exception=(&huffman_image->exception); q=scanline; for (y=0; y < (ssize_t) huffman_image->rows; y++) { @@ -915,7 +913,7 @@ MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, % The format of the LZWEncodeImage method is: % % MagickBooleanType LZWEncodeImage(Image *image,const size_t length, -% unsigned char *pixels) +% unsigned char *pixels,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -926,9 +924,11 @@ MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, % o pixels: the address of an unsigned array of characters containing the % pixels to compress. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType LZWEncodeImage(Image *image,const size_t length, - unsigned char *pixels) + unsigned char *pixels,ExceptionInfo *exception) { #define LZWClr 256UL /* Clear Table Marker */ #define LZWEod 257UL /* End of Data marker */ @@ -1090,7 +1090,7 @@ MagickExport MagickBooleanType LZWEncodeImage(Image *image,const size_t length, % */ MagickExport MagickBooleanType PackbitsEncodeImage(Image *image, - const size_t length,unsigned char *pixels) + const size_t length,unsigned char *pixels,ExceptionInfo *exception) { int count; @@ -1212,7 +1212,7 @@ MagickExport MagickBooleanType PackbitsEncodeImage(Image *image, % The format of the ZLIBEncodeImage method is: % % MagickBooleanType ZLIBEncodeImage(Image *image,const size_t length, -% unsigned char *pixels) +% unsigned char *pixels,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -1224,6 +1224,8 @@ MagickExport MagickBooleanType PackbitsEncodeImage(Image *image, % o pixels: the address of an unsigned array of characters containing the % pixels to compress. % +% o exception: return any errors or warnings in this structure. +% */ static voidpf AcquireZIPMemory(voidpf context,unsigned int items, @@ -1240,7 +1242,7 @@ static void RelinquishZIPMemory(voidpf context,voidpf memory) } MagickExport MagickBooleanType ZLIBEncodeImage(Image *image,const size_t length, - unsigned char *pixels) + unsigned char *pixels,ExceptionInfo *exception) { int status; diff --git a/MagickCore/compress.h b/MagickCore/compress.h index 313ee3bac..4b7fcbc14 100644 --- a/MagickCore/compress.h +++ b/MagickCore/compress.h @@ -52,11 +52,11 @@ typedef struct _Ascii85Info Ascii85Info; extern MagickExport MagickBooleanType - HuffmanDecodeImage(Image *), - HuffmanEncodeImage(const ImageInfo *,Image *,Image *), - LZWEncodeImage(Image *,const size_t,unsigned char *), - PackbitsEncodeImage(Image *,const size_t,unsigned char *), - ZLIBEncodeImage(Image *,const size_t,unsigned char *); + HuffmanDecodeImage(Image *,ExceptionInfo *), + HuffmanEncodeImage(const ImageInfo *,Image *,Image *,ExceptionInfo *), + LZWEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *), + PackbitsEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *), + ZLIBEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *); extern MagickExport void Ascii85Encode(Image *,const unsigned char), diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c index e2d0e2981..b0749ced6 100644 --- a/MagickCore/constitute.c +++ b/MagickCore/constitute.c @@ -203,12 +203,9 @@ MagickExport Image *ConstituteImage(const size_t columns, image->columns=columns; image->rows=rows; (void) SetImageBackgroundColor(image); - status=ImportImagePixels(image,0,0,columns,rows,map,storage,pixels); + status=ImportImagePixels(image,0,0,columns,rows,map,storage,pixels,exception); if (status == MagickFalse) - { - InheritException(exception,&image->exception); - image=DestroyImage(image); - } + image=DestroyImage(image); return(image); } @@ -694,21 +691,21 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, option=GetImageOption(read_info,"caption"); if (option != (const char *) NULL) { - property=InterpretImageProperties(read_info,next,option); + property=InterpretImageProperties(read_info,next,option,exception); (void) SetImageProperty(next,"caption",property); property=DestroyString(property); } option=GetImageOption(read_info,"comment"); if (option != (const char *) NULL) { - property=InterpretImageProperties(read_info,next,option); + property=InterpretImageProperties(read_info,next,option,exception); (void) SetImageProperty(next,"comment",property); property=DestroyString(property); } option=GetImageOption(read_info,"label"); if (option != (const char *) NULL) { - property=InterpretImageProperties(read_info,next,option); + property=InterpretImageProperties(read_info,next,option,exception); (void) SetImageProperty(next,"label",property); property=DestroyString(property); } diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c index 2f475959d..caa2cc762 100644 --- a/MagickCore/delegate.c +++ b/MagickCore/delegate.c @@ -287,7 +287,7 @@ MagickExport char *GetDelegateCommand(const ImageInfo *image_info,Image *image, decode ? decode : encode); return((char *) NULL); } - command=InterpretImageProperties(image_info,image,commands[0]); + command=InterpretImageProperties(image_info,image,commands[0],exception); if (command == (char *) NULL) (void) ThrowMagickException(exception,GetMagickModule(),ResourceLimitError, "MemoryAllocationFailed","`%s'",commands[0]); @@ -936,7 +936,7 @@ MagickExport MagickBooleanType InvokeDelegate(ImageInfo *image_info, return(MagickFalse); } magick=InterpretImageProperties(image_info,image,decode != (char *) NULL ? - delegate_info->encode : delegate_info->decode); + delegate_info->encode : delegate_info->decode,exception); if (magick == (char *) NULL) { (void) RelinquishUniqueFileResource(image_info->unique); @@ -1029,7 +1029,7 @@ MagickExport MagickBooleanType InvokeDelegate(ImageInfo *image_info, } } status=MagickFalse; - command=InterpretImageProperties(image_info,image,commands[i]); + command=InterpretImageProperties(image_info,image,commands[i],exception); if (command != (char *) NULL) { /* diff --git a/MagickCore/display.c b/MagickCore/display.c index 84c09bbc9..536b0646b 100644 --- a/MagickCore/display.c +++ b/MagickCore/display.c @@ -7984,7 +7984,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (void) SetImageType(*image,(*image)->matte == MagickFalse ? - GrayscaleType : GrayscaleMatteType); + GrayscaleType : GrayscaleMatteType,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; @@ -8015,7 +8015,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, affinity_image=ReadImage(image_info,exception); if (affinity_image != (Image *) NULL) { - (void) RemapImage(&quantize_info,*image,affinity_image); + (void) RemapImage(&quantize_info,*image,affinity_image,exception); affinity_image=DestroyImage(affinity_image); } CatchException(exception); @@ -8048,7 +8048,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XCheckRefreshWindows(display,windows); quantize_info.number_colors=StringToUnsignedLong(colors); quantize_info.dither=status != 0 ? MagickTrue : MagickFalse; - (void) QuantizeImage(&quantize_info,*image); + (void) QuantizeImage(&quantize_info,*image,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; @@ -8455,7 +8455,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; (void) SegmentImage(*image,RGBColorspace,MagickFalse,geometry_info.rho, - geometry_info.sigma); + geometry_info.sigma,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; @@ -13642,7 +13642,7 @@ static Image *XVisualDirectoryImage(Display *display, { (void) DeleteImageProperty(next_image,"label"); (void) SetImageProperty(next_image,"label",InterpretImageProperties( - read_info,next_image,DefaultTileLabel)); + read_info,next_image,DefaultTileLabel,exception)); (void) ParseRegionGeometry(next_image,read_info->size,&geometry, exception); thumbnail_image=ThumbnailImage(next_image,geometry.width, @@ -14652,7 +14652,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, *title; title=InterpretImageProperties(resource_info->image_info,display_image, - resource_info->title); + resource_info->title,exception); (void) CopyMagickString(windows->image.name,title,MaxTextExtent); (void) CopyMagickString(windows->image.icon_name,title,MaxTextExtent); title=DestroyString(title); diff --git a/MagickCore/draw.c b/MagickCore/draw.c index cde101375..ee38ad689 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -1372,7 +1372,7 @@ static void DrawBoundingRectangles(Image *image,const DrawInfo *draw_info, % The format of the DrawClipPath method is: % % MagickBooleanType DrawClipPath(Image *image,const DrawInfo *draw_info, -% const char *name) +% const char *name,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -1382,9 +1382,11 @@ static void DrawBoundingRectangles(Image *image,const DrawInfo *draw_info, % % o name: the name of the clip path. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType DrawClipPath(Image *image, - const DrawInfo *draw_info,const char *name) + const DrawInfo *draw_info,const char *name,ExceptionInfo *exception) { char clip_mask[MaxTextExtent]; @@ -1416,7 +1418,7 @@ MagickExport MagickBooleanType DrawClipPath(Image *image, &image->exception); if (clip_mask == (Image *) NULL) return(MagickFalse); - (void) SetImageClipMask(image,clip_mask); + (void) SetImageClipMask(image,clip_mask,exception); clip_mask=DestroyImage(clip_mask); } (void) QueryColorDatabase("#00000000",&image->clip_mask->background_color, @@ -1430,7 +1432,7 @@ MagickExport MagickBooleanType DrawClipPath(Image *image, (void) CloneString(&clone_info->primitive,value); (void) QueryColorDatabase("#ffffff",&clone_info->fill,&image->exception); clone_info->clip_mask=(char *) NULL; - status=DrawImage(image->clip_mask,clone_info); + status=DrawImage(image->clip_mask,clone_info,exception); status|=NegateImage(image->clip_mask,MagickFalse,&image->exception); clone_info=DestroyDrawInfo(clone_info); if (image->debug != MagickFalse) @@ -1628,7 +1630,8 @@ static MagickBooleanType DrawDashPolygon(const DrawInfo *draw_info, % % The format of the DrawImage method is: % -% MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) +% MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -1636,6 +1639,8 @@ static MagickBooleanType DrawDashPolygon(const DrawInfo *draw_info, % % o draw_info: the draw info. % +% o exception: return any errors or warnings in this structure. +% */ static inline MagickBooleanType IsPoint(const char *point) @@ -1657,7 +1662,8 @@ static inline void TracePoint(PrimitiveInfo *primitive_info, primitive_info->point=point; } -MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) +MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info, + ExceptionInfo *exception) { #define RenderImageTag "Render/Image" @@ -1871,7 +1877,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) GetMagickToken(q,&q,token); (void) CloneString(&graphic_context[n]->clip_mask,token); (void) DrawClipPath(image,graphic_context[n], - graphic_context[n]->clip_mask); + graphic_context[n]->clip_mask,exception); break; } if (LocaleCompare("clip-rule",keyword) == 0) @@ -1976,7 +1982,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) (void) FormatLocaleString(pattern,MaxTextExtent,"%s",token); if (GetImageArtifact(image,pattern) != (const char *) NULL) (void) DrawPatternPath(image,draw_info,token, - &graphic_context[n]->fill_pattern); + &graphic_context[n]->fill_pattern,exception); else { status=QueryColorDatabase(token,&graphic_context[n]->fill, @@ -2259,7 +2265,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) if (graphic_context[n]->clip_mask != (char *) NULL) if (LocaleCompare(graphic_context[n]->clip_mask, graphic_context[n-1]->clip_mask) != 0) - (void) SetImageClipMask(image,(Image *) NULL); + (void) SetImageClipMask(image,(Image *) NULL,exception); graphic_context[n]=DestroyDrawInfo(graphic_context[n]); n--; break; @@ -2505,7 +2511,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) (void) FormatLocaleString(pattern,MaxTextExtent,"%s",token); if (GetImageArtifact(image,pattern) != (const char *) NULL) (void) DrawPatternPath(image,draw_info,token, - &graphic_context[n]->stroke_pattern); + &graphic_context[n]->stroke_pattern,exception); else { status=QueryColorDatabase(token,&graphic_context[n]->stroke, @@ -3106,7 +3112,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) (LocaleCompare(graphic_context[n]->clip_mask, graphic_context[n-1]->clip_mask) != 0)) (void) DrawClipPath(image,graphic_context[n], - graphic_context[n]->clip_mask); + graphic_context[n]->clip_mask,exception); (void) DrawPrimitive(image,graphic_context[n],primitive_info); } if (primitive_info->text != (char *) NULL) @@ -3464,7 +3470,7 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image, % The format of the DrawPatternPath method is: % % MagickBooleanType DrawPatternPath(Image *image,const DrawInfo *draw_info, -% const char *name,Image **pattern) +% const char *name,Image **pattern,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -3476,9 +3482,12 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType DrawPatternPath(Image *image, - const DrawInfo *draw_info,const char *name,Image **pattern) + const DrawInfo *draw_info,const char *name,Image **pattern, + ExceptionInfo *exception) { char property[MaxTextExtent]; @@ -3526,7 +3535,7 @@ MagickExport MagickBooleanType DrawPatternPath(Image *image, clone_info->fill_pattern=NewImageList(); clone_info->stroke_pattern=NewImageList(); (void) CloneString(&clone_info->primitive,path); - status=DrawImage(*pattern,clone_info); + status=DrawImage(*pattern,clone_info,exception); clone_info=DestroyDrawInfo(clone_info); if (image->debug != MagickFalse) (void) LogMagickEvent(DrawEvent,GetMagickModule(),"end pattern-path"); diff --git a/MagickCore/draw.h b/MagickCore/draw.h index 66e80aa77..164b10c33 100644 --- a/MagickCore/draw.h +++ b/MagickCore/draw.h @@ -377,10 +377,11 @@ extern MagickExport DrawInfo extern MagickExport MagickBooleanType DrawAffineImage(Image *,const Image *,const AffineMatrix *), - DrawClipPath(Image *,const DrawInfo *,const char *), + DrawClipPath(Image *,const DrawInfo *,const char *,ExceptionInfo *), DrawGradientImage(Image *,const DrawInfo *), - DrawImage(Image *,const DrawInfo *), - DrawPatternPath(Image *,const DrawInfo *,const char *,Image **), + DrawImage(Image *,const DrawInfo *,ExceptionInfo *), + DrawPatternPath(Image *,const DrawInfo *,const char *,Image **, + ExceptionInfo *), DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *); extern MagickExport void diff --git a/MagickCore/effect.c b/MagickCore/effect.c index c45593a92..6e35d1511 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -2492,7 +2492,7 @@ MagickExport Image *PreviewImage(const Image *image,const PreviewType preview, colors<<=1; quantize_info.number_colors=colors; quantize_info.colorspace=GRAYColorspace; - (void) QuantizeImage(&quantize_info,preview_image); + (void) QuantizeImage(&quantize_info,preview_image,exception); (void) FormatLocaleString(label,MaxTextExtent, "-colorspace gray -colors %.20g",(double) colors); break; @@ -2504,7 +2504,7 @@ MagickExport Image *PreviewImage(const Image *image,const PreviewType preview, break; colors<<=1; quantize_info.number_colors=colors; - (void) QuantizeImage(&quantize_info,preview_image); + (void) QuantizeImage(&quantize_info,preview_image,exception); (void) FormatLocaleString(label,MaxTextExtent,"colors %.20g",(double) colors); break; @@ -2658,7 +2658,7 @@ MagickExport Image *PreviewImage(const Image *image,const PreviewType preview, break; threshold+=0.4f; (void) SegmentImage(preview_image,RGBColorspace,MagickFalse,threshold, - threshold); + threshold,exception); (void) FormatLocaleString(label,MaxTextExtent,"segment %gx%g", threshold,threshold); break; diff --git a/MagickCore/exception-private.h b/MagickCore/exception-private.h index 8fef7e9da..e1ce0136b 100644 --- a/MagickCore/exception-private.h +++ b/MagickCore/exception-private.h @@ -28,7 +28,7 @@ extern "C" { #define ThrowBinaryException(severity,tag,context) \ { \ if (image != (Image *) NULL) \ - (void) ThrowMagickException(&image->exception,GetMagickModule(),severity, \ + (void) ThrowMagickException(exception,GetMagickModule(),severity, \ tag == (const char *) NULL ? "unknown" : tag,"`%s'",context); \ return(MagickFalse); \ } @@ -78,7 +78,7 @@ extern "C" { } #define ThrowWriterException(severity,tag) \ { \ - (void) ThrowMagickException(&image->exception,GetMagickModule(),severity, \ + (void) ThrowMagickException(exception,GetMagickModule(),severity, \ tag == (const char *) NULL ? "unknown" : tag,"`%s'",image->filename); \ if (image_info->adjoin != MagickFalse) \ while (image->previous != (Image *) NULL) \ diff --git a/MagickCore/fx.c b/MagickCore/fx.c index 045399c43..da805a212 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -640,7 +640,7 @@ MagickExport Image *CharcoalImage(const Image *image,const double radius, clone_image=CloneImage(image,0,0,MagickTrue,exception); if (clone_image == (Image *) NULL) return((Image *) NULL); - (void) SetImageType(clone_image,GrayscaleType); + (void) SetImageType(clone_image,GrayscaleType,exception); edge_image=EdgeImage(clone_image,radius,exception); clone_image=DestroyImage(clone_image); if (edge_image == (Image *) NULL) @@ -651,7 +651,7 @@ MagickExport Image *CharcoalImage(const Image *image,const double radius, return((Image *) NULL); (void) NormalizeImage(charcoal_image,exception); (void) NegateImage(charcoal_image,MagickFalse,exception); - (void) SetImageType(charcoal_image,GrayscaleType); + (void) SetImageType(charcoal_image,GrayscaleType,exception); return(charcoal_image); } @@ -3845,7 +3845,7 @@ MagickExport Image *PolaroidImage(const Image *image,const DrawInfo *draw_info, return((Image *) NULL); annotate_info=CloneDrawInfo((const ImageInfo *) NULL,draw_info); caption=InterpretImageProperties((ImageInfo *) NULL,(Image *) image, - value); + value,exception); (void) CloneString(&annotate_info->text,caption); count=FormatMagickCaption(caption_image,annotate_info,MagickTrue,&metrics, &caption,exception); @@ -5273,7 +5273,7 @@ MagickExport Image *VignetteImage(const Image *image,const double radius, "ellipse %g,%g,%g,%g,0.0,360.0",image->columns/2.0, image->rows/2.0,image->columns/2.0-x,image->rows/2.0-y); draw_info->primitive=AcquireString(ellipse); - (void) DrawImage(oval_image,draw_info); + (void) DrawImage(oval_image,draw_info,exception); draw_info=DestroyDrawInfo(draw_info); blur_image=BlurImage(oval_image,radius,sigma,exception); oval_image=DestroyImage(oval_image); diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c index 7a07c421d..11b5303bd 100644 --- a/MagickCore/histogram.c +++ b/MagickCore/histogram.c @@ -1333,7 +1333,7 @@ MagickExport Image *UniqueImageColors(const Image *image, quantize_info->number_colors=MaxColormapSize; quantize_info->dither=MagickFalse; quantize_info->tree_depth=8; - (void) QuantizeImage(quantize_info,unique_image); + (void) QuantizeImage(quantize_info,unique_image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); } cube_info=DestroyCubeInfo(image,cube_info); diff --git a/MagickCore/identify.c b/MagickCore/identify.c index 4bcbad715..782d048ee 100644 --- a/MagickCore/identify.c +++ b/MagickCore/identify.c @@ -365,7 +365,7 @@ MagickExport MagickBooleanType IdentifyImage(Image *image,FILE *file, p=GetVirtualPixels(image,0,0,1,1,exception); ping=p == (const Quantum *) NULL ? MagickTrue : MagickFalse; type=GetImageType(image,exception); - (void) SignatureImage(image); + (void) SignatureImage(image,exception); (void) FormatLocaleFile(file,"Image: %s\n",image->filename); if (*image->magick_filename != '\0') if (LocaleCompare(image->magick_filename,image->filename) != 0) @@ -796,7 +796,7 @@ MagickExport MagickBooleanType IdentifyImage(Image *image,FILE *file, } (void) FormatLocaleFile(file," %.20gx%.20g %s\n",(double) tile->magick_columns,(double) tile->magick_rows,tile->magick); - (void) SignatureImage(tile); + (void) SignatureImage(tile,exception); ResetImagePropertyIterator(tile); property=GetNextImageProperty(tile); while (property != (const char *) NULL) diff --git a/MagickCore/image.c b/MagickCore/image.c index 558f0334e..6f3adfbe7 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -636,7 +636,7 @@ MagickExport ExceptionType CatchImageException(Image *image) % The format of the ClipImagePath method is: % % MagickBooleanType ClipImagePath(Image *image,const char *pathname, -% const MagickBooleanType inside) +% const MagickBooleanType inside,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -648,15 +648,17 @@ MagickExport ExceptionType CatchImageException(Image *image) % o inside: if non-zero, later operations take effect inside clipping path. % Otherwise later operations take effect outside clipping path. % +% o exception: return any errors or warnings in this structure. +% */ -MagickExport MagickBooleanType ClipImage(Image *image) +MagickExport MagickBooleanType ClipImage(Image *image,ExceptionInfo *exception) { - return(ClipImagePath(image,"#1",MagickTrue)); + return(ClipImagePath(image,"#1",MagickTrue,exception)); } MagickExport MagickBooleanType ClipImagePath(Image *image,const char *pathname, - const MagickBooleanType inside) + const MagickBooleanType inside,ExceptionInfo *exception) { #define ClipImagePathTag "ClipPath/Image" @@ -705,7 +707,7 @@ MagickExport MagickBooleanType ClipImagePath(Image *image,const char *pathname, (void) NegateImage(clip_mask,MagickFalse,&image->exception); (void) FormatLocaleString(clip_mask->magick_filename,MaxTextExtent, "8BIM:1999,2998:%s\nPS",pathname); - (void) SetImageClipMask(image,clip_mask); + (void) SetImageClipMask(image,clip_mask,exception); clip_mask=DestroyImage(clip_mask); return(MagickTrue); } @@ -2902,7 +2904,8 @@ MagickExport MagickBooleanType SetImageStorageClass(Image *image, % % The format of the SetImageClipMask method is: % -% MagickBooleanType SetImageClipMask(Image *image,const Image *clip_mask) +% MagickBooleanType SetImageClipMask(Image *image,const Image *clip_mask, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2910,9 +2913,11 @@ MagickExport MagickBooleanType SetImageStorageClass(Image *image, % % o clip_mask: the image clip path. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType SetImageClipMask(Image *image, - const Image *clip_mask) + const Image *clip_mask,ExceptionInfo *exception) { assert(image != (Image *) NULL); if (image->debug != MagickFalse) @@ -3401,7 +3406,8 @@ MagickExport void SetImageInfoFile(ImageInfo *image_info,FILE *file) % % The format of the SetImageMask method is: % -% MagickBooleanType SetImageMask(Image *image,const Image *mask) +% MagickBooleanType SetImageMask(Image *image,const Image *mask, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -3409,9 +3415,11 @@ MagickExport void SetImageInfoFile(ImageInfo *image_info,FILE *file) % % o mask: the image mask. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType SetImageMask(Image *image, - const Image *mask) + const Image *mask,ExceptionInfo *exception) { assert(image != (Image *) NULL); if (image->debug != MagickFalse) @@ -3532,7 +3540,8 @@ MagickExport MagickBooleanType SetImageOpacity(Image *image, % % The format of the SetImageType method is: % -% MagickBooleanType SetImageType(Image *image,const ImageType type) +% MagickBooleanType SetImageType(Image *image,const ImageType type, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -3540,15 +3549,15 @@ MagickExport MagickBooleanType SetImageOpacity(Image *image, % % o type: Image type. % +% o exception: return any errors or warnings in this structure. +% */ -MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type) +MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type, + ExceptionInfo *exception) { const char *artifact; - ExceptionInfo - *exception; - ImageInfo *image_info; @@ -3568,7 +3577,6 @@ MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type) artifact=GetImageArtifact(image,"dither"); if (artifact != (const char *) NULL) (void) SetImageOption(image_info,"dither",artifact); - exception=(&image->exception); switch (type) { case BilevelType: @@ -3580,7 +3588,7 @@ MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type) quantize_info=AcquireQuantizeInfo(image_info); quantize_info->number_colors=2; quantize_info->colorspace=GRAYColorspace; - status=QuantizeImage(quantize_info,image); + status=QuantizeImage(quantize_info,image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); } image->matte=MagickFalse; @@ -3609,7 +3617,7 @@ MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type) { quantize_info=AcquireQuantizeInfo(image_info); quantize_info->number_colors=256; - status=QuantizeImage(quantize_info,image); + status=QuantizeImage(quantize_info,image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); } image->matte=MagickFalse; @@ -3628,7 +3636,7 @@ MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type) (void) BilevelImage(image,(double) QuantumRange/2.0); (void) SetPixelChannelMask(image,channel_mask); quantize_info=AcquireQuantizeInfo(image_info); - status=QuantizeImage(quantize_info,image); + status=QuantizeImage(quantize_info,image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); break; } @@ -3640,7 +3648,7 @@ MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type) (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception); quantize_info=AcquireQuantizeInfo(image_info); quantize_info->colorspace=TransparentColorspace; - status=QuantizeImage(quantize_info,image); + status=QuantizeImage(quantize_info,image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); break; } diff --git a/MagickCore/image.h b/MagickCore/image.h index bade5047d..2e5ee7e4e 100644 --- a/MagickCore/image.h +++ b/MagickCore/image.h @@ -521,8 +521,8 @@ extern MagickExport ImageInfo *DestroyImageInfo(ImageInfo *); extern MagickExport MagickBooleanType - ClipImage(Image *), - ClipImagePath(Image *,const char *,const MagickBooleanType), + ClipImage(Image *,ExceptionInfo *), + ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *), GetImageAlphaChannel(const Image *), IsTaintImage(const Image *), IsMagickConflict(const char *), @@ -534,14 +534,14 @@ extern MagickExport MagickBooleanType SeparateImage(Image *), SetImageAlphaChannel(Image *,const AlphaChannelType,ExceptionInfo *), SetImageBackgroundColor(Image *), - SetImageClipMask(Image *,const Image *), + SetImageClipMask(Image *,const Image *,ExceptionInfo *), SetImageColor(Image *,const PixelInfo *), SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *), SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *), - SetImageMask(Image *,const Image *), + SetImageMask(Image *,const Image *,ExceptionInfo *), SetImageOpacity(Image *,const Quantum), SetImageStorageClass(Image *,const ClassType,ExceptionInfo *), - SetImageType(Image *,const ImageType), + SetImageType(Image *,const ImageType,ExceptionInfo *), StripImage(Image *), SyncImage(Image *), SyncImageSettings(const ImageInfo *,Image *), diff --git a/MagickCore/montage.c b/MagickCore/montage.c index 62c4633a1..9ab20151a 100644 --- a/MagickCore/montage.c +++ b/MagickCore/montage.c @@ -387,7 +387,6 @@ MagickExport Image *MontageImageList(const ImageInfo *image_info, geometry, extract_info; - size_t bevel_width, border_width, @@ -560,7 +559,8 @@ MagickExport Image *MontageImageList(const ImageInfo *image_info, /* Determine the number of lines in an next label. */ - title=InterpretImageProperties(clone_info,image_list[0],montage_info->title); + title=InterpretImageProperties(clone_info,image_list[0],montage_info->title, + exception); title_offset=0; if (montage_info->title != (char *) NULL) title_offset=(size_t) (2*(metrics.ascent-metrics.descent)* diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c index 0e179bb45..aecd19c41 100644 --- a/MagickCore/pixel.c +++ b/MagickCore/pixel.c @@ -1797,7 +1797,7 @@ MagickExport void GetPixelInfo(const Image *image, % MagickBooleanType ImportImagePixels(Image *image,const ssize_t x_offset, % const ssize_t y_offset,const size_t columns, % const size_t rows,const char *map,const StorageType type, -% const void *pixels) +% const void *pixels,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -1821,15 +1821,14 @@ MagickExport void GetPixelInfo(const Image *image, % map and type. You must preallocate this array where the expected % length varies depending on the values of width, height, map, and type. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType ImportImagePixels(Image *image, const ssize_t x_offset,const ssize_t y_offset,const size_t columns, const size_t rows,const char *map,const StorageType type, - const void *pixels) + const void *pixels,ExceptionInfo *exception) { - ExceptionInfo - *exception; - QuantumType *quantum_map; @@ -1858,7 +1857,6 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image, if (quantum_map == (QuantumType *) NULL) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); - exception=(&image->exception); for (i=0; i < (ssize_t) length; i++) { switch (map[i]) diff --git a/MagickCore/pixel.h b/MagickCore/pixel.h index 08ef29db2..59715fcfa 100644 --- a/MagickCore/pixel.h +++ b/MagickCore/pixel.h @@ -147,7 +147,7 @@ extern MagickExport MagickBooleanType ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t, const size_t,const char *,const StorageType,void *,ExceptionInfo *), ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t, - const size_t,const char *,const StorageType,const void *), + const size_t,const char *,const StorageType,const void *,ExceptionInfo *), InterpolatePixelChannel(const Image *,const CacheView_ *, const PixelChannel,const InterpolatePixelMethod,const double,const double, double *,ExceptionInfo *), diff --git a/MagickCore/property.c b/MagickCore/property.c index f157ecf22..634041992 100644 --- a/MagickCore/property.c +++ b/MagickCore/property.c @@ -2523,7 +2523,7 @@ MagickExport char *GetNextImageProperty(const Image *image) % The format of the InterpretImageProperties method is: % % char *InterpretImageProperties(const ImageInfo *image_info,Image *image, -% const char *embed_text) +% const char *embed_text,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2534,9 +2534,11 @@ MagickExport char *GetNextImageProperty(const Image *image) % o embed_text: the address of a character string containing the embedded % formatting characters. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport char *InterpretImageProperties(const ImageInfo *image_info, - Image *image,const char *embed_text) + Image *image,const char *embed_text,ExceptionInfo *exception) { char filename[MaxTextExtent], @@ -3108,7 +3110,7 @@ MagickExport char *InterpretImageProperties(const ImageInfo *image_info, /* Image bounding box. */ - page=GetImageBoundingBox(image,&image->exception); + page=GetImageBoundingBox(image,exception); q+=FormatLocaleString(q,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g", (double) page.width,(double) page.height,(double) page.x,(double) page.y); @@ -3119,7 +3121,7 @@ MagickExport char *InterpretImageProperties(const ImageInfo *image_info, /* Image signature. */ - (void) SignatureImage(image); + (void) SignatureImage(image,exception); value=GetImageProperty(image,"signature"); if (value == (const char *) NULL) break; diff --git a/MagickCore/property.h b/MagickCore/property.h index a67af02a2..4b8af40ff 100644 --- a/MagickCore/property.h +++ b/MagickCore/property.h @@ -24,7 +24,8 @@ extern "C" { extern MagickExport char *GetNextImageProperty(const Image *), - *InterpretImageProperties(const ImageInfo *,Image *,const char *), + *InterpretImageProperties(const ImageInfo *,Image *,const char *, + ExceptionInfo *), *RemoveImageProperty(Image *,const char *); extern MagickExport const char diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c index c863e0cbc..cab87d9c8 100644 --- a/MagickCore/quantize.c +++ b/MagickCore/quantize.c @@ -328,10 +328,10 @@ static NodeInfo *GetNodeInfo(CubeInfo *,const size_t,const size_t,NodeInfo *); static MagickBooleanType - AssignImageColors(Image *,CubeInfo *), + AssignImageColors(Image *,CubeInfo *,ExceptionInfo *), ClassifyImageColors(CubeInfo *,const Image *,ExceptionInfo *), DitherImage(Image *,CubeInfo *), - SetGrayscaleImage(Image *); + SetGrayscaleImage(Image *,ExceptionInfo *); static size_t DefineImageColormap(Image *,CubeInfo *,NodeInfo *); @@ -497,7 +497,8 @@ static inline size_t ColorToNodeId(const CubeInfo *cube_info, return(id); } -static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info) +static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info, + ExceptionInfo *exception) { #define AssignImageTag "Assign/Image" @@ -516,7 +517,7 @@ static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info) (IsRGBColorspace(image->colorspace) == MagickFalse) && (image->colorspace != CMYColorspace)) (void) TransformImageColorspace((Image *) image,RGBColorspace); - if (AcquireImageColormap(image,cube_info->colors) == MagickFalse) + if (AcquireImageColormap(image,cube_info->colors,exception) == MagickFalse) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); image->colors=0; @@ -1160,14 +1161,18 @@ static void ClosestColor(const Image *image,CubeInfo *cube_info, % % The format of the CompressImageColormap method is: % -% MagickBooleanType CompressImageColormap(Image *image) +% MagickBooleanType CompressImageColormap(Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ -MagickExport MagickBooleanType CompressImageColormap(Image *image) +MagickExport MagickBooleanType CompressImageColormap(Image *image, + ExceptionInfo *exception) { QuantizeInfo quantize_info; @@ -1181,7 +1186,7 @@ MagickExport MagickBooleanType CompressImageColormap(Image *image) GetQuantizeInfo(&quantize_info); quantize_info.number_colors=image->colors; quantize_info.tree_depth=MaxTreeDepth; - return(QuantizeImage(&quantize_info,image)); + return(QuantizeImage(&quantize_info,image,exception)); } /* @@ -2265,7 +2270,7 @@ MagickExport void GetQuantizeInfo(QuantizeInfo *quantize_info) % % % % % % -% P o s t e r i z e I m a g e C h a n n e l % +% P o s t e r i z e I m a g e % % % % % % % @@ -2277,7 +2282,7 @@ MagickExport void GetQuantizeInfo(QuantizeInfo *quantize_info) % The format of the PosterizeImage method is: % % MagickBooleanType PosterizeImage(Image *image,const size_t levels, -% const MagickBooleanType dither) +% const MagickBooleanType dither,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2289,6 +2294,8 @@ MagickExport void GetQuantizeInfo(QuantizeInfo *quantize_info) % o dither: Set this integer value to something other than zero to dither % the mapped image. % +% o exception: return any errors or warnings in this structure. +% */ static inline ssize_t MagickRound(MagickRealType x) @@ -2302,7 +2309,7 @@ static inline ssize_t MagickRound(MagickRealType x) } MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, - const MagickBooleanType dither) + const MagickBooleanType dither,ExceptionInfo *exception) { #define PosterizeImageTag "Posterize/Image" #define PosterizePixel(pixel) (Quantum) (QuantumRange*(MagickRound( \ @@ -2311,9 +2318,6 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, CacheView *image_view; - ExceptionInfo - *exception; - MagickBooleanType status; @@ -2356,7 +2360,6 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, */ status=MagickTrue; progress=0; - exception=(&image->exception); image_view=AcquireCacheView(image); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(dynamic,4) shared(progress,status) @@ -2415,7 +2418,7 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels, levels,MaxColormapSize+1); quantize_info->dither=dither; quantize_info->tree_depth=MaxTreeDepth; - status=QuantizeImage(quantize_info,image); + status=QuantizeImage(quantize_info,image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); return(status); } @@ -2594,7 +2597,7 @@ static void PruneToCubeDepth(const Image *image,CubeInfo *cube_info, % The format of the QuantizeImage method is: % % MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info, -% Image *image) +% Image *image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2602,6 +2605,8 @@ static void PruneToCubeDepth(const Image *image,CubeInfo *cube_info, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType DirectToColormapImage(Image *image, @@ -2624,7 +2629,7 @@ static MagickBooleanType DirectToColormapImage(Image *image, status=MagickTrue; number_colors=(size_t) (image->columns*image->rows); - if (AcquireImageColormap(image,number_colors) == MagickFalse) + if (AcquireImageColormap(image,number_colors,exception) == MagickFalse) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); if (image->colors != number_colors) @@ -2667,7 +2672,7 @@ static MagickBooleanType DirectToColormapImage(Image *image, } MagickExport MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info, - Image *image) + Image *image,ExceptionInfo *exception) { CubeInfo *cube_info; @@ -2694,7 +2699,7 @@ MagickExport MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info, (void) DirectToColormapImage(image,&image->exception); if ((IsImageGray(image,&image->exception) != MagickFalse) && (image->matte == MagickFalse)) - (void) SetGrayscaleImage(image); + (void) SetGrayscaleImage(image,exception); if ((image->storage_class == PseudoClass) && (image->colors <= maximum_colors)) return(MagickTrue); @@ -2729,7 +2734,7 @@ MagickExport MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info, Reduce the number of colors in the image. */ ReduceImageColors(image,cube_info); - status=AssignImageColors(image,cube_info); + status=AssignImageColors(image,cube_info,exception); } DestroyCubeInfo(cube_info); return(status); @@ -2754,7 +2759,7 @@ MagickExport MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info, % The format of the QuantizeImages method is: % % MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info, -% Image *images) +% Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2762,9 +2767,11 @@ MagickExport MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info, % % o images: Specifies a pointer to a list of Image structures. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info, - Image *images) + Image *images,ExceptionInfo *exception) { CubeInfo *cube_info; @@ -2798,7 +2805,7 @@ MagickExport MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info, /* Handle a single image with QuantizeImage. */ - status=QuantizeImage(quantize_info,images); + status=QuantizeImage(quantize_info,images,exception); return(status); } status=MagickFalse; @@ -2859,7 +2866,7 @@ MagickExport MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info, { progress_monitor=SetImageProgressMonitor(image,(MagickProgressMonitor) NULL,image->client_data); - status=AssignImageColors(image,cube_info); + status=AssignImageColors(image,cube_info,exception); if (status == MagickFalse) break; (void) SetImageProgressMonitor(image,progress_monitor, @@ -3031,7 +3038,7 @@ static void ReduceImageColors(const Image *image,CubeInfo *cube_info) % The format of the RemapImage method is: % % MagickBooleanType RemapImage(const QuantizeInfo *quantize_info, -% Image *image,const Image *remap_image) +% Image *image,const Image *remap_image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -3041,9 +3048,11 @@ static void ReduceImageColors(const Image *image,CubeInfo *cube_info) % % o remap_image: the reference image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType RemapImage(const QuantizeInfo *quantize_info, - Image *image,const Image *remap_image) + Image *image,const Image *remap_image,ExceptionInfo *exception) { CubeInfo *cube_info; @@ -3072,7 +3081,7 @@ MagickExport MagickBooleanType RemapImage(const QuantizeInfo *quantize_info, Classify image colors from the reference image. */ cube_info->quantize_info->number_colors=cube_info->colors; - status=AssignImageColors(image,cube_info); + status=AssignImageColors(image,cube_info,exception); } DestroyCubeInfo(cube_info); return(status); @@ -3095,7 +3104,7 @@ MagickExport MagickBooleanType RemapImage(const QuantizeInfo *quantize_info, % The format of the RemapImage method is: % % MagickBooleanType RemapImages(const QuantizeInfo *quantize_info, -% Image *images,Image *remap_image) +% Image *images,Image *remap_image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -3105,9 +3114,11 @@ MagickExport MagickBooleanType RemapImage(const QuantizeInfo *quantize_info, % % o remap_image: the reference image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info, - Image *images,const Image *remap_image) + Image *images,const Image *remap_image,ExceptionInfo *exception) { CubeInfo *cube_info; @@ -3128,7 +3139,7 @@ MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info, /* Create a global colormap for an image sequence. */ - status=QuantizeImages(quantize_info,images); + status=QuantizeImages(quantize_info,images,exception); return(status); } /* @@ -3139,7 +3150,7 @@ MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info, if (cube_info == (CubeInfo *) NULL) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); - status=ClassifyImageColors(cube_info,remap_image,&image->exception); + status=ClassifyImageColors(cube_info,remap_image,exception); if (status != MagickFalse) { /* @@ -3149,7 +3160,7 @@ MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info, image=images; for ( ; image != (Image *) NULL; image=GetNextImageInList(image)) { - status=AssignImageColors(image,cube_info); + status=AssignImageColors(image,cube_info,exception); if (status == MagickFalse) break; } @@ -3173,12 +3184,14 @@ MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info, % % The format of the SetGrayscaleImage method is: % -% MagickBooleanType SetGrayscaleImage(Image *image) +% MagickBooleanType SetGrayscaleImage(Image *image,ExceptionInfo *exeption) % % A description of each parameter follows: % % o image: The image. % +% o exception: return any errors or warnings in this structure. +% */ #if defined(__cplusplus) || defined(c_plusplus) @@ -3205,14 +3218,12 @@ static int IntensityCompare(const void *x,const void *y) } #endif -static MagickBooleanType SetGrayscaleImage(Image *image) +static MagickBooleanType SetGrayscaleImage(Image *image, + ExceptionInfo *exception) { CacheView *image_view; - ExceptionInfo - *exception; - MagickBooleanType status; @@ -3238,17 +3249,13 @@ static MagickBooleanType SetGrayscaleImage(Image *image) image->filename); if (image->storage_class != PseudoClass) { - ExceptionInfo - *exception; - for (i=0; i <= (ssize_t) MaxMap; i++) colormap_index[i]=(-1); - if (AcquireImageColormap(image,MaxMap+1) == MagickFalse) + if (AcquireImageColormap(image,MaxMap+1,exception) == MagickFalse) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); image->colors=0; status=MagickTrue; - exception=(&image->exception); image_view=AcquireCacheView(image); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(dynamic,4) shared(status) @@ -3323,7 +3330,6 @@ static MagickBooleanType SetGrayscaleImage(Image *image) image->colormap=(PixelPacket *) RelinquishMagickMemory(image->colormap); image->colormap=colormap; status=MagickTrue; - exception=(&image->exception); image_view=AcquireCacheView(image); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(dynamic,4) shared(status) diff --git a/MagickCore/quantize.h b/MagickCore/quantize.h index 61d6d2995..445c40d68 100644 --- a/MagickCore/quantize.h +++ b/MagickCore/quantize.h @@ -57,13 +57,13 @@ typedef struct _QuantizeInfo } QuantizeInfo; extern MagickExport MagickBooleanType - CompressImageColormap(Image *), + CompressImageColormap(Image *,ExceptionInfo *), GetImageQuantizeError(Image *), - PosterizeImage(Image *,const size_t,const MagickBooleanType), - QuantizeImage(const QuantizeInfo *,Image *), - QuantizeImages(const QuantizeInfo *,Image *), - RemapImage(const QuantizeInfo *,Image *,const Image *), - RemapImages(const QuantizeInfo *,Image *,const Image *); + PosterizeImage(Image *,const size_t,const MagickBooleanType,ExceptionInfo *), + QuantizeImage(const QuantizeInfo *,Image *,ExceptionInfo *), + QuantizeImages(const QuantizeInfo *,Image *,ExceptionInfo *), + RemapImage(const QuantizeInfo *,Image *,const Image *,ExceptionInfo *), + RemapImages(const QuantizeInfo *,Image *,const Image *,ExceptionInfo *); extern MagickExport QuantizeInfo *AcquireQuantizeInfo(const ImageInfo *), diff --git a/MagickCore/resize.c b/MagickCore/resize.c index 83367a413..9f34a819e 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -2604,8 +2604,11 @@ MagickExport Image *ResizeImage(const Image *image,const size_t columns, */ filter_image=DestroyImage(filter_image); resize_filter=DestroyResizeFilter(resize_filter); - if ((status == MagickFalse) || (resize_image == (Image *) NULL)) - return((Image *) NULL); + if (status == MagickFalse) + { + resize_image=DestroyImage(resize_image); + return((Image *) NULL); + } resize_image->type=image->type; return(resize_image); } diff --git a/MagickCore/segment.c b/MagickCore/segment.c index 3d66c910e..91a105532 100644 --- a/MagickCore/segment.c +++ b/MagickCore/segment.c @@ -218,7 +218,7 @@ static void % MagickBooleanType Classify(Image *image,short **extrema, % const MagickRealType cluster_threshold, % const MagickRealType weighting_exponent, -% const MagickBooleanType verbose) +% const MagickBooleanType verbose,ExceptionInfo *exception) % % A description of each parameter follows. % @@ -237,10 +237,13 @@ static void % o verbose: A value greater than zero prints detailed information about % the identified classes. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType Classify(Image *image,short **extrema, const MagickRealType cluster_threshold, - const MagickRealType weighting_exponent,const MagickBooleanType verbose) + const MagickRealType weighting_exponent,const MagickBooleanType verbose, + ExceptionInfo *exception) { #define SegmentImageTag "Segment/Image" @@ -253,9 +256,6 @@ static MagickBooleanType Classify(Image *image,short **extrema, *last_cluster, *next_cluster; - ExceptionInfo - *exception; - ExtentPacket blue, green, @@ -352,7 +352,6 @@ static MagickBooleanType Classify(Image *image,short **extrema, status=MagickTrue; count=0; progress=0; - exception=(&image->exception); image_view=AcquireCacheView(image); for (y=0; y < (ssize_t) image->rows; y++) { @@ -512,7 +511,7 @@ static MagickBooleanType Classify(Image *image,short **extrema, /* Allocate image colormap. */ - if (AcquireImageColormap(image,number_clusters) == MagickFalse) + if (AcquireImageColormap(image,number_clusters,exception) == MagickFalse) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); i=0; @@ -1768,7 +1767,8 @@ static void ScaleSpace(const ssize_t *histogram,const MagickRealType tau, % % MagickBooleanType SegmentImage(Image *image, % const ColorspaceType colorspace,const MagickBooleanType verbose, -% const double cluster_threshold,const double smooth_threshold) +% const double cluster_threshold,const double smooth_threshold, +% ExceptionInfo *exception) % % A description of each parameter follows. % @@ -1787,10 +1787,13 @@ static void ScaleSpace(const ssize_t *histogram,const MagickRealType tau, % derivative of the histogram. As the value is increased, you can expect a % smoother second derivative. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType SegmentImage(Image *image, const ColorspaceType colorspace,const MagickBooleanType verbose, - const double cluster_threshold,const double smooth_threshold) + const double cluster_threshold,const double smooth_threshold, + ExceptionInfo *exception) { MagickBooleanType status; @@ -1841,7 +1844,8 @@ MagickExport MagickBooleanType SegmentImage(Image *image, /* Classify using the fuzzy c-Means technique. */ - status=Classify(image,extrema,cluster_threshold,WeightingExponent,verbose); + status=Classify(image,extrema,cluster_threshold,WeightingExponent,verbose, + exception); if (IsRGBColorspace(colorspace) == MagickFalse) (void) TransformImageColorspace(image,colorspace); /* diff --git a/MagickCore/segment.h b/MagickCore/segment.h index 06314daf9..d9bb2c685 100644 --- a/MagickCore/segment.h +++ b/MagickCore/segment.h @@ -26,7 +26,7 @@ extern MagickExport MagickBooleanType GetImageDynamicThreshold(const Image *,const double,const double, PixelInfo *,ExceptionInfo *), SegmentImage(Image *,const ColorspaceType,const MagickBooleanType, - const double,const double); + const double,const double,ExceptionInfo *); #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/MagickCore/signature-private.h b/MagickCore/signature-private.h index 2171e17fc..d7001dd38 100644 --- a/MagickCore/signature-private.h +++ b/MagickCore/signature-private.h @@ -30,7 +30,7 @@ typedef struct _SignatureInfo SignatureInfo; extern MagickExport MagickBooleanType - SignatureImage(Image *); + SignatureImage(Image *,ExceptionInfo *exception); extern MagickExport SignatureInfo *AcquireSignatureInfo(void), diff --git a/MagickCore/signature.c b/MagickCore/signature.c index 52345bbf7..8a0b2b8bc 100644 --- a/MagickCore/signature.c +++ b/MagickCore/signature.c @@ -458,14 +458,17 @@ MagickExport void SetSignatureDigest(SignatureInfo *signature_info, % % The format of the SignatureImage method is: % -% MagickBooleanType SignatureImage(Image *image) +% MagickBooleanType SignatureImage(Image *image,ExceptionInfo *exception) % % A description of each parameter follows: % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ -MagickExport MagickBooleanType SignatureImage(Image *image) +MagickExport MagickBooleanType SignatureImage(Image *image, + ExceptionInfo *exception) { CacheView *image_view; @@ -473,9 +476,6 @@ MagickExport MagickBooleanType SignatureImage(Image *image) char *hex_signature; - ExceptionInfo - *exception; - QuantumInfo *quantum_info; @@ -523,7 +523,6 @@ MagickExport MagickBooleanType SignatureImage(Image *image) signature_info=AcquireSignatureInfo(); signature=AcquireStringInfo(quantum_info->extent); pixels=GetQuantumPixels(quantum_info); - exception=(&image->exception); image_view=AcquireCacheView(image); for (y=0; y < (ssize_t) image->rows; y++) { diff --git a/MagickCore/signature.h b/MagickCore/signature.h index 6f59e3844..976c4636b 100644 --- a/MagickCore/signature.h +++ b/MagickCore/signature.h @@ -23,7 +23,7 @@ extern "C" { #endif extern MagickExport MagickBooleanType - SignatureImage(Image *); + SignatureImage(Image *,ExceptionInfo *); #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c index 4c73de713..69f9de508 100644 --- a/MagickCore/threshold.c +++ b/MagickCore/threshold.c @@ -1541,7 +1541,7 @@ MagickExport MagickBooleanType RandomThresholdImage(Image *image, progress=0; if (image->sync != MagickFalse) { - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); random_info=AcquireRandomInfoThreadSet(); diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c index 4304c161f..395022cb6 100644 --- a/MagickCore/xwindow.c +++ b/MagickCore/xwindow.c @@ -4445,7 +4445,7 @@ static Image *XGetWindowImage(Display *display,const Window window, /* Create colormap. */ - if (AcquireImageColormap(composite_image,number_colors) == MagickFalse) + if (AcquireImageColormap(composite_image,number_colors,exception) == MagickFalse) { XDestroyImage(ximage); composite_image=DestroyImage(composite_image); @@ -7803,7 +7803,7 @@ MagickPrivate void XMakeStandardColormap(Display *display, } (void) SyncAuthenticPixels(affinity_image,exception); (void) RemapImage(resource_info->quantize_info,image, - affinity_image); + affinity_image,exception); } XGetPixelInfo(display,visual_info,map_info,resource_info,image, pixel); @@ -7838,7 +7838,7 @@ MagickPrivate void XMakeStandardColormap(Display *display, */ quantize_info=(*resource_info->quantize_info); quantize_info.number_colors=(size_t) visual_info->colormap_size; - (void) QuantizeImage(&quantize_info,image); + (void) QuantizeImage(&quantize_info,image,exception); } /* Free previous and create new colormap. diff --git a/MagickWand/compare.c b/MagickWand/compare.c index 15c7f93f3..803a17a47 100644 --- a/MagickWand/compare.c +++ b/MagickWand/compare.c @@ -992,7 +992,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, else { if (image_info->verbose != MagickFalse) - (void) IsImagesEqual(image,reconstruct_image); + (void) IsImagesEqual(image,reconstruct_image,exception); if (*difference_image->magick == '\0') (void) CopyMagickString(difference_image->magick,image->magick, MaxTextExtent); @@ -1191,7 +1191,8 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, char *text; - text=InterpretImageProperties(image_info,difference_image,format); + text=InterpretImageProperties(image_info,difference_image,format, + exception); if (text == (char *) NULL) ThrowCompareException(ResourceLimitError,"MemoryAllocationFailed", GetExceptionMessage(errno)); diff --git a/MagickWand/composite.c b/MagickWand/composite.c index 329abca23..d7f08f048 100644 --- a/MagickWand/composite.c +++ b/MagickWand/composite.c @@ -1665,7 +1665,7 @@ WandExport MagickBooleanType CompositeImageCommand(ImageInfo *image_info, char *text; - text=InterpretImageProperties(image_info,images,format); + text=InterpretImageProperties(image_info,images,format,exception); if (text == (char *) NULL) ThrowCompositeException(ResourceLimitError,"MemoryAllocationFailed", GetExceptionMessage(errno)); diff --git a/MagickWand/convert.c b/MagickWand/convert.c index b75b6174e..8f5c9a974 100644 --- a/MagickWand/convert.c +++ b/MagickWand/convert.c @@ -3025,7 +3025,7 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info, char *text; - text=InterpretImageProperties(image_info,image,format); + text=InterpretImageProperties(image_info,image,format,exception); if (text == (char *) NULL) ThrowConvertException(ResourceLimitError,"MemoryAllocationFailed", GetExceptionMessage(errno)); diff --git a/MagickWand/drawing-wand.c b/MagickWand/drawing-wand.c index bba8c55b4..26a7ebe95 100644 --- a/MagickWand/drawing-wand.c +++ b/MagickWand/drawing-wand.c @@ -4300,8 +4300,7 @@ WandExport MagickBooleanType DrawRender(DrawingWand *wand) (void) LogMagickEvent(DrawEvent,GetMagickModule(),"MVG:\n'%s'\n",wand->mvg); if (wand->image == (Image *) NULL) ThrowDrawException(WandError,"ContainsNoImages",wand->name); - status=DrawImage(wand->image,CurrentContext); - InheritException(wand->exception,&wand->image->exception); + status=DrawImage(wand->image,CurrentContext,wand->exception); CurrentContext->primitive=(char *) NULL; return(status); } diff --git a/MagickWand/identify.c b/MagickWand/identify.c index be8aacf0a..df1c07172 100644 --- a/MagickWand/identify.c +++ b/MagickWand/identify.c @@ -338,7 +338,7 @@ WandExport MagickBooleanType IdentifyImageCommand(ImageInfo *image_info, char *text; - text=InterpretImageProperties(image_info,image,format); + text=InterpretImageProperties(image_info,image,format,exception); if (text == (char *) NULL) ThrowIdentifyException(ResourceLimitError, "MemoryAllocationFailed",GetExceptionMessage(errno)); diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index 4fe769a49..20abc98ab 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -1204,9 +1204,7 @@ WandExport MagickBooleanType MagickClipImage(MagickWand *wand) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - status=ClipImage(wand->images); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=ClipImage(wand->images,wand->exception); return(status); } @@ -1254,9 +1252,7 @@ WandExport MagickBooleanType MagickClipImagePath(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - status=ClipImagePath(wand->images,pathname,inside); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=ClipImagePath(wand->images,pathname,inside,wand->exception); return(status); } @@ -1995,9 +1991,7 @@ WandExport MagickBooleanType MagickCycleColormapImage(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - status=CycleColormapImage(wand->images,displace); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=CycleColormapImage(wand->images,displace,wand->exception); return(status); } @@ -2486,9 +2480,7 @@ WandExport MagickBooleanType MagickDrawImage(MagickWand *wand, draw_info=DestroyDrawInfo(draw_info); draw_info=CloneDrawInfo(wand->image_info,(DrawInfo *) NULL); draw_info->primitive=primitive; - status=DrawImage(wand->images,draw_info); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=DrawImage(wand->images,draw_info,wand->exception); draw_info=DestroyDrawInfo(draw_info); return(status); } @@ -5273,14 +5265,13 @@ WandExport char *MagickGetImageSignature(MagickWand *wand) "ContainsNoImages","`%s'",wand->name); return((char *) NULL); } - status=SignatureImage(wand->images); + status=SignatureImage(wand->images,wand->exception); if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + return((char *) NULL); value=GetImageProperty(wand->images,"signature"); - if (value != (const char *) NULL) - return(AcquireString(value)); - InheritException(wand->exception,&wand->images->exception); - return((char *) NULL); + if (value == (const char *) NULL) + return((char *) NULL); + return(AcquireString(value)); } /* @@ -5858,9 +5849,8 @@ WandExport MagickBooleanType MagickImplodeImage(MagickWand *wand, % */ WandExport MagickBooleanType MagickImportImagePixels(MagickWand *wand, - const ssize_t x,const ssize_t y,const size_t columns, - const size_t rows,const char *map,const StorageType storage, - const void *pixels) + const ssize_t x,const ssize_t y,const size_t columns,const size_t rows, + const char *map,const StorageType storage,const void *pixels) { MagickBooleanType status; @@ -5871,9 +5861,8 @@ WandExport MagickBooleanType MagickImportImagePixels(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - status=ImportImagePixels(wand->images,x,y,columns,rows,map,storage,pixels); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=ImportImagePixels(wand->images,x,y,columns,rows,map,storage,pixels, + wand->exception); return(status); } @@ -7239,9 +7228,7 @@ WandExport MagickBooleanType MagickPosterizeImage(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - status=PosterizeImage(wand->images,levels,dither); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=PosterizeImage(wand->images,levels,dither,wand->exception); return(status); } @@ -7410,9 +7397,7 @@ WandExport MagickBooleanType MagickQuantizeImage(MagickWand *wand, quantize_info->tree_depth=treedepth; quantize_info->colorspace=colorspace; quantize_info->measure_error=measure_error; - status=QuantizeImage(quantize_info,wand->images); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=QuantizeImage(quantize_info,wand->images,wand->exception); quantize_info=DestroyQuantizeInfo(quantize_info); return(status); } @@ -7491,9 +7476,7 @@ WandExport MagickBooleanType MagickQuantizeImages(MagickWand *wand, quantize_info->tree_depth=treedepth; quantize_info->colorspace=colorspace; quantize_info->measure_error=measure_error; - status=QuantizeImages(quantize_info,wand->images); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=QuantizeImages(quantize_info,wand->images,wand->exception); quantize_info=DestroyQuantizeInfo(quantize_info); return(status); } @@ -7838,10 +7821,9 @@ WandExport MagickBooleanType MagickRemapImage(MagickWand *wand, quantize_info->dither_method=method; if (method == NoDitherMethod) quantize_info->dither=MagickFalse; - status=RemapImage(quantize_info,wand->images,remap_wand->images); + status=RemapImage(quantize_info,wand->images,remap_wand->images, + wand->exception); quantize_info=DestroyQuantizeInfo(quantize_info); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); return(status); } @@ -8296,9 +8278,7 @@ MagickExport MagickBooleanType MagickSegmentImage(MagickWand *wand, if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); status=SegmentImage(wand->images,colorspace,verbose,cluster_threshold, - smooth_threshold); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + smooth_threshold,wand->exception); return(status); } @@ -8726,7 +8706,7 @@ WandExport MagickBooleanType MagickSetImageClipMask(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",clip_mask->name); if (clip_mask->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - return(SetImageClipMask(wand->images,clip_mask->images)); + return(SetImageClipMask(wand->images,clip_mask->images,wand->exception)); } /* @@ -9994,7 +9974,7 @@ WandExport MagickBooleanType MagickSetImageType(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - return(SetImageType(wand->images,image_type)); + return(SetImageType(wand->images,image_type,wand->exception)); } /* diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index 4acb036fc..e6a1ddea9 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -772,8 +772,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, flags=ParseGeometry(argv[i+1],&geometry_info); if ((flags & SigmaValue) == 0) geometry_info.sigma=geometry_info.rho; - text=InterpretImageProperties(mogrify_info,*image,argv[i+2]); - InheritException(exception,&(*image)->exception); + text=InterpretImageProperties(mogrify_info,*image,argv[i+2], + exception); if (text == (char *) NULL) break; (void) CloneString(&draw_info->text,text); @@ -1028,12 +1028,10 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, (void) SyncImageSettings(mogrify_info,*image); if (*option == '+') { - (void) SetImageClipMask(*image,(Image *) NULL); - InheritException(exception,&(*image)->exception); + (void) SetImageClipMask(*image,(Image *) NULL,exception); break; } - (void) ClipImage(*image); - InheritException(exception,&(*image)->exception); + (void) ClipImage(*image,exception); break; } if (LocaleCompare("clip-mask",option+1) == 0) @@ -1059,8 +1057,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, /* Remove a mask. */ - (void) SetImageMask(*image,(Image *) NULL); - InheritException(exception,&(*image)->exception); + (void) SetImageMask(*image,(Image *) NULL,exception); break; } /* @@ -1093,8 +1090,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, } mask_view=DestroyCacheView(mask_view); mask_image->matte=MagickTrue; - (void) SetImageClipMask(*image,mask_image); - mask_image=DestroyImage(mask_image); + (void) SetImageClipMask(*image,mask_image,exception); InheritException(exception,&(*image)->exception); break; } @@ -1102,8 +1098,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, { (void) SyncImageSettings(mogrify_info,*image); (void) ClipImagePath(*image,argv[i+1],*option == '-' ? MagickTrue : - MagickFalse); - InheritException(exception,&(*image)->exception); + MagickFalse,exception); break; } if (LocaleCompare("colorize",option+1) == 0) @@ -1140,10 +1135,9 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, break; if (((*image)->storage_class == DirectClass) || (*image)->colors > quantize_info->number_colors) - (void) QuantizeImage(quantize_info,*image); + (void) QuantizeImage(quantize_info,*image,exception); else - (void) CompressImageColormap(*image); - InheritException(exception,&(*image)->exception); + (void) CompressImageColormap(*image,exception); break; } if (LocaleCompare("colorspace",option+1) == 0) @@ -1229,8 +1223,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, Cycle an image colormap. */ (void) SyncImageSettings(mogrify_info,*image); - (void) CycleColormapImage(*image,(ssize_t) StringToLong(argv[i+1])); - InheritException(exception,&(*image)->exception); + (void) CycleColormapImage(*image,(ssize_t) StringToLong(argv[i+1]), + exception); break; } break; @@ -1345,8 +1339,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, resize_args,MagickTrue,exception); break; } - args=InterpretImageProperties(mogrify_info,*image,argv[i+2]); - InheritException(exception,&(*image)->exception); + args=InterpretImageProperties(mogrify_info,*image,argv[i+2], + exception); if (args == (char *) NULL) break; p=(char *) args; @@ -1399,8 +1393,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, */ (void) SyncImageSettings(mogrify_info,*image); (void) CloneString(&draw_info->primitive,argv[i+1]); - (void) DrawImage(*image,draw_info); - InheritException(exception,&(*image)->exception); + (void) DrawImage(*image,draw_info,exception); break; } break; @@ -1648,8 +1641,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, (void) SyncImageSettings(mogrify_info,*image); function=(MagickFunction) ParseCommandOption(MagickFunctionOptions, MagickFalse,argv[i+1]); - arguments=InterpretImageProperties(mogrify_info,*image,argv[i+2]); - InheritException(exception,&(*image)->exception); + arguments=InterpretImageProperties(mogrify_info,*image,argv[i+2], + exception); if (arguments == (char *) NULL) break; p=(char *) arguments; @@ -1768,8 +1761,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, exception); break; } - text=InterpretImageProperties(mogrify_info,*image,format); - InheritException(exception,&(*image)->exception); + text=InterpretImageProperties(mogrify_info,*image,format, + exception); if (text == (char *) NULL) break; (void) fputs(text,stdout); @@ -1980,8 +1973,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, remap_image=GetImageCache(mogrify_info,argv[i+1],exception); if (remap_image == (Image *) NULL) break; - (void) RemapImage(quantize_info,*image,remap_image); - InheritException(exception,&(*image)->exception); + (void) RemapImage(quantize_info,*image,remap_image,exception); remap_image=DestroyImage(remap_image); break; } @@ -1996,8 +1988,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, /* Remove a mask. */ - (void) SetImageMask(*image,(Image *) NULL); - InheritException(exception,&(*image)->exception); + (void) SetImageMask(*image,(Image *) NULL,exception); break; } /* @@ -2006,9 +1997,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, mask=GetImageCache(mogrify_info,argv[i+1],exception); if (mask == (Image *) NULL) break; - (void) SetImageMask(*image,mask); + (void) SetImageMask(*image,mask,exception); mask=DestroyImage(mask); - InheritException(exception,&(*image)->exception); break; } if (LocaleCompare("matte",option+1) == 0) @@ -2060,8 +2050,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, if (LocaleCompare("monochrome",option+1) == 0) { (void) SyncImageSettings(mogrify_info,*image); - (void) SetImageType(*image,BilevelType); - InheritException(exception,&(*image)->exception); + (void) SetImageType(*image,BilevelType,exception); break; } if (LocaleCompare("morphology",option+1) == 0) @@ -2241,8 +2230,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, */ (void) SyncImageSettings(mogrify_info,*image); (void) PosterizeImage(*image,StringToUnsignedLong(argv[i+1]), - quantize_info->dither); - InheritException(exception,&(*image)->exception); + quantize_info->dither,exception); break; } if (LocaleCompare("preview",option+1) == 0) @@ -2442,8 +2430,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, remap_image=GetImageCache(mogrify_info,argv[i+1],exception); if (remap_image == (Image *) NULL) break; - (void) RemapImage(quantize_info,*image,remap_image); - InheritException(exception,&(*image)->exception); + (void) RemapImage(quantize_info,*image,remap_image,exception); remap_image=DestroyImage(remap_image); break; } @@ -2589,8 +2576,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; (void) SegmentImage(*image,(*image)->colorspace, - mogrify_info->verbose,geometry_info.rho,geometry_info.sigma); - InheritException(exception,&(*image)->exception); + mogrify_info->verbose,geometry_info.rho,geometry_info.sigma, + exception); break; } if (LocaleCompare("set",option+1) == 0) @@ -2615,7 +2602,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, (void) DeleteImageProperty(*image,argv[i+1]); break; } - value=InterpretImageProperties(mogrify_info,*image,argv[i+2]); + value=InterpretImageProperties(mogrify_info,*image,argv[i+2], + exception); if (value == (char *) NULL) break; if (LocaleNCompare(argv[i+1],"registry:",9) == 0) @@ -2754,8 +2742,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, (void) SyncImageSettings(mogrify_info,*image); method=(SparseColorMethod) ParseCommandOption( MagickSparseColorOptions,MagickFalse,argv[i+1]); - arguments=InterpretImageProperties(mogrify_info,*image,argv[i+2]); - InheritException(exception,&(*image)->exception); + arguments=InterpretImageProperties(mogrify_info,*image,argv[i+2], + exception); if (arguments == (char *) NULL) break; mogrify_image=SparseColorOption(*image,method,arguments, @@ -2984,8 +2972,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, type=(ImageType) ParseCommandOption(MagickTypeOptions,MagickFalse, argv[i+1]); (*image)->type=UndefinedType; - (void) SetImageType(*image,type); - InheritException(exception,&(*image)->exception); + (void) SetImageType(*image,type,exception); break; } break; @@ -3680,7 +3667,7 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info, *quantize_info; quantize_info=AcquireQuantizeInfo(image_info); - (void) RemapImages(quantize_info,images,(Image *) NULL); + (void) RemapImages(quantize_info,images,(Image *) NULL,exception); quantize_info=DestroyQuantizeInfo(quantize_info); } *backup_filename='\0'; @@ -7261,8 +7248,8 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info, (void) SyncImagesSettings(mogrify_info,*images); if (*option == '+') { - (void) RemapImages(quantize_info,*images,(Image *) NULL); - InheritException(exception,&(*images)->exception); + (void) RemapImages(quantize_info,*images,(Image *) NULL, + exception); break; } i++; @@ -7773,7 +7760,6 @@ This has been merged completely into MogrifyImage() status=MagickFalse; break; } - InheritException(exception,&layers->exception); *images=DestroyImageList(*images); *images=layers; layers=OptimizeImageLayers(*images,exception); @@ -7782,13 +7768,12 @@ This has been merged completely into MogrifyImage() status=MagickFalse; break; } - InheritException(exception,&layers->exception); *images=DestroyImageList(*images); *images=layers; layers=(Image *) NULL; OptimizeImageTransparency(*images,exception); - InheritException(exception,&(*images)->exception); - (void) RemapImages(quantize_info,*images,(Image *) NULL); + (void) RemapImages(quantize_info,*images,(Image *) NULL, + exception); break; } case CompositeLayer: @@ -7874,8 +7859,8 @@ This has been merged completely into MogrifyImage() (void) SyncImagesSettings(mogrify_info,*images); if (*option == '+') { - (void) RemapImages(quantize_info,*images,(Image *) NULL); - InheritException(exception,&(*images)->exception); + (void) RemapImages(quantize_info,*images,(Image *) NULL, + exception); break; } i++; @@ -7962,10 +7947,10 @@ This has been merged completely into MogrifyImage() *string; (void) SyncImagesSettings(mogrify_info,*images); - string=InterpretImageProperties(mogrify_info,*images,argv[i+1]); + string=InterpretImageProperties(mogrify_info,*images,argv[i+1], + exception); if (string == (char *) NULL) break; - InheritException(exception,&(*images)->exception); (void) FormatLocaleFile(stdout,"%s",string); string=DestroyString(string); } diff --git a/MagickWand/montage.c b/MagickWand/montage.c index bd9fe71f2..f9efed0ef 100644 --- a/MagickWand/montage.c +++ b/MagickWand/montage.c @@ -1774,7 +1774,8 @@ WandExport MagickBooleanType MontageImageCommand(ImageInfo *image_info, char *text; - text=InterpretImageProperties(image_info,montage_image,format); + text=InterpretImageProperties(image_info,montage_image,format, + exception); if (text == (char *) NULL) ThrowMontageException(ResourceLimitError,"MemoryAllocationFailed", GetExceptionMessage(errno)); diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index 327e67366..c5b907e94 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -48,10 +48,6 @@ /* Include declarations. */ -#if !defined(WIN32) -#define MagickExport -#endif - #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif @@ -1222,7 +1218,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, if (SvPOK(sval)) clip_mask=SetupList(aTHX_ SvRV(sval),&info,(SV ***) NULL,exception); for ( ; image; image=image->next) - SetImageClipMask(image,clip_mask); + SetImageClipMask(image,clip_mask,exception); break; } if (LocaleNCompare(attribute,"colormap",8) == 0) @@ -1281,7 +1277,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, for ( ; image; image=image->next) (void) SetImageProperty(image,"Comment",InterpretImageProperties( info ? info->image_info : (ImageInfo *) NULL,image, - SvPV(sval,na))); + SvPV(sval,na),exception)); break; } if (LocaleCompare(attribute,"compression") == 0) @@ -1628,7 +1624,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, for ( ; image; image=image->next) (void) SetImageProperty(image,"label",InterpretImageProperties( info ? info->image_info : (ImageInfo *) NULL,image, - SvPV(sval,na))); + SvPV(sval,na),exception)); break; } if (LocaleCompare(attribute,"loop") == 0) @@ -1671,7 +1667,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, if (SvPOK(sval)) mask=SetupList(aTHX_ SvRV(sval),&info,(SV ***) NULL,exception); for ( ; image; image=image->next) - SetImageMask(image,mask); + SetImageMask(image,mask,exception); break; } if (LocaleCompare(attribute,"mattecolor") == 0) @@ -1721,7 +1717,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, if (info) info->image_info->monochrome=sp != 0 ? MagickTrue : MagickFalse; for ( ; image; image=image->next) - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); break; } if (info) @@ -2077,7 +2073,7 @@ static void SetAttribute(pTHX_ struct PackageInfo *info,Image *image, if (info) info->image_info->type=(ImageType) sp; for ( ; image; image=image->next) - SetImageType(image,(ImageType) sp); + SetImageType(image,(ImageType) sp,exception); break; } if (info) @@ -4416,7 +4412,7 @@ Get(ref,...) sv=NULL; if (image->mask == (Image *) NULL) - ClipImage(image); + ClipImage(image,exception); if (image->mask != (Image *) NULL) { AddImageToRegistry(sv,image->mask); @@ -4435,7 +4431,7 @@ Get(ref,...) sv=NULL; if (image->clip_mask == (Image *) NULL) - ClipImage(image); + ClipImage(image,exception); if (image->clip_mask != (Image *) NULL) { AddImageToRegistry(sv,image->clip_mask); @@ -5231,7 +5227,7 @@ Get(ref,...) if (image == (Image *) NULL) break; - (void) SignatureImage(image); + (void) SignatureImage(image,exception); value=GetImageProperty(image,"Signature"); if (value != (const char *) NULL) s=newSVpv(value,0); @@ -5441,7 +5437,7 @@ Get(ref,...) *meta; meta=InterpretImageProperties(info ? info->image_info : - (ImageInfo *) NULL,image,attribute); + (ImageInfo *) NULL,image,attribute,exception); s=newSVpv(meta,0); PUSHs(s ? sv_2mortal(s) : &sv_undef); meta=(char *) RelinquishMagickMemory(meta); @@ -6784,7 +6780,7 @@ Layers(ref,...) OptimizeImageTransparency(image,exception); InheritException(&(image->exception),exception); quantize_info=AcquireQuantizeInfo(info->image_info); - (void) RemapImages(quantize_info,image,(Image *) NULL); + (void) RemapImages(quantize_info,image,(Image *) NULL,exception); quantize_info=DestroyQuantizeInfo(quantize_info); break; } @@ -7473,7 +7469,7 @@ Mogrify(ref,...) argument_list[0].string_reference=(char *) NULL; (void) SetImageProperty(image,"comment",InterpretImageProperties( info ? info->image_info : (ImageInfo *) NULL,image, - argument_list[0].string_reference)); + argument_list[0].string_reference,exception)); break; } case 2: /* Label */ @@ -7482,7 +7478,7 @@ Mogrify(ref,...) argument_list[0].string_reference=(char *) NULL; (void) SetImageProperty(image,"label",InterpretImageProperties( info ? info->image_info : (ImageInfo *) NULL,image, - argument_list[0].string_reference)); + argument_list[0].string_reference,exception)); break; } case 3: /* AddNoise */ @@ -7928,7 +7924,8 @@ Mogrify(ref,...) *text; text=InterpretImageProperties(info ? info->image_info : - (ImageInfo *) NULL,image,argument_list[0].string_reference); + (ImageInfo *) NULL,image,argument_list[0].string_reference, + exception); (void) CloneString(&draw_info->text,text); text=DestroyString(text); } @@ -8394,7 +8391,8 @@ Mogrify(ref,...) { if (attribute_flag[0] == 0) argument_list[0].integer_reference=6; - (void) CycleColormapImage(image,argument_list[0].integer_reference); + (void) CycleColormapImage(image,argument_list[0].integer_reference, + exception); break; } case 38: /* Draw */ @@ -8634,7 +8632,7 @@ Mogrify(ref,...) if (attribute_flag[32] != 0) draw_info->direction=(DirectionType) argument_list[32].integer_reference; - DrawImage(image,draw_info); + DrawImage(image,draw_info,exception); draw_info=DestroyDrawInfo(draw_info); break; } @@ -8688,7 +8686,7 @@ Mogrify(ref,...) quantize_info->dither_method=(DitherMethod) argument_list[2].integer_reference; (void) RemapImages(quantize_info,image, - argument_list[0].image_reference); + argument_list[0].image_reference,exception); quantize_info=DestroyQuantizeInfo(quantize_info); break; } @@ -8854,7 +8852,7 @@ Mogrify(ref,...) &image->transparent_color,exception); if (attribute_flag[5] && argument_list[5].integer_reference) { - (void) QuantizeImages(quantize_info,image); + (void) QuantizeImages(quantize_info,image,exception); goto PerlException; } if (attribute_flag[6] != 0) @@ -8863,9 +8861,9 @@ Mogrify(ref,...) if ((image->storage_class == DirectClass) || (image->colors > quantize_info->number_colors) || (quantize_info->colorspace == GRAYColorspace)) - (void) QuantizeImage(quantize_info,image); + (void) QuantizeImage(quantize_info,image,exception); else - CompressImageColormap(image); + CompressImageColormap(image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); break; } @@ -8919,12 +8917,12 @@ Mogrify(ref,...) verbose=argument_list[4].integer_reference != 0 ? MagickTrue : MagickFalse; (void) SegmentImage(image,colorspace,verbose,cluster_threshold, - smoothing_threshold); + smoothing_threshold,exception); break; } case 51: /* Signature */ { - (void) SignatureImage(image); + (void) SignatureImage(image,exception); break; } case 52: /* Solarize */ @@ -9386,7 +9384,8 @@ Mogrify(ref,...) if (attribute_flag[1] == 0) argument_list[1].integer_reference=MagickTrue; (void) ClipImagePath(image,argument_list[0].string_reference, - argument_list[1].integer_reference != 0 ? MagickTrue : MagickFalse); + argument_list[1].integer_reference != 0 ? MagickTrue : MagickFalse, + exception); break; } case 75: /* AffineTransform */ @@ -9519,7 +9518,8 @@ Mogrify(ref,...) if (attribute_flag[1] != 0) image->fuzz=SiPrefixToDouble(argument_list[1].string_reference, QuantumRange); - (void) IsImagesEqual(image,argument_list[0].image_reference); + (void) IsImagesEqual(image,argument_list[0].image_reference, + exception); break; } case 77: /* AdaptiveThreshold */ @@ -9705,7 +9705,8 @@ Mogrify(ref,...) if (attribute_flag[1] == 0) argument_list[1].integer_reference=0; (void) PosterizeImage(image,argument_list[0].integer_reference, - argument_list[1].integer_reference ? MagickTrue : MagickFalse); + argument_list[1].integer_reference ? MagickTrue : MagickFalse, + exception); break; } case 89: /* Shadow */ @@ -10103,7 +10104,7 @@ Mogrify(ref,...) if (attribute_flag[0] != 0) (void) SetImageProperty(image,"caption",InterpretImageProperties( info ? info->image_info : (ImageInfo *) NULL,image, - argument_list[0].string_reference)); + argument_list[0].string_reference,exception)); angle=0.0; if (attribute_flag[1] != 0) angle=argument_list[1].real_reference; @@ -10294,7 +10295,7 @@ Mogrify(ref,...) quantize_info->dither_method=(DitherMethod) argument_list[2].integer_reference; (void) RemapImages(quantize_info,image, - argument_list[0].image_reference); + argument_list[0].image_reference,exception); quantize_info=DestroyQuantizeInfo(quantize_info); break; } @@ -10956,7 +10957,7 @@ Montage(ref,...) for (next=image; next; next=next->next) (void) SetImageProperty(next,"label",InterpretImageProperties( info ? info->image_info : (ImageInfo *) NULL,next, - SvPV(ST(i),na))); + SvPV(ST(i),na),exception)); break; } ThrowPerlException(exception,OptionError,"UnrecognizedAttribute", diff --git a/PerlMagick/t/composite.t b/PerlMagick/t/composite.t index fa1fc3908..a74a4896e 100644 --- a/PerlMagick/t/composite.t +++ b/PerlMagick/t/composite.t @@ -1,5 +1,5 @@ #!/usr/bin/perl -# Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization +# Copyright 1999-20.3 ImageMagick Studio LLC, a non-profit organization # dedicated to making software imaging solutions freely available. # # You may not use this file except in compliance with the License. You may @@ -27,22 +27,22 @@ chdir 't' || die 'Cd failed'; # testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'ModulusAdd'/, - 'reference/composite/Add.miff', 0.1, 1.03); + 'reference/composite/Add.miff', 0.3, 1.03); # # Atop # ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Atop'/, - 'reference/composite/Atop.miff', 0.1, 1.03); + 'reference/composite/Atop.miff', 0.3, 1.03); # # Bumpmap # ++$test; -testCompositeCompare('gradient:white-black',q/size=>"100x80"/, +testCompositeCompare('gradient:white-black',q/size=>"70x46"/, 'input.miff', q//,q/, gravity=>'Center', compose=>'Bumpmap'/, - 'reference/composite/Bumpmap.miff', 0.1, 1.03); + 'reference/composite/Bumpmap.miff', 0.3, 1.03); # # Clear @@ -58,7 +58,7 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Copy'/, - 'reference/composite/Copy.miff', 0.1, 1.03); + 'reference/composite/Copy.miff', 0.3, 1.03); # # CopyBlue @@ -66,7 +66,7 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'CopyBlue'/, - 'reference/composite/CopyBlue.miff', 0.1, 1.03); + 'reference/composite/CopyBlue.miff', 0.3, 1.03); # # CopyGreen @@ -74,7 +74,7 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'CopyGreen'/, - 'reference/composite/CopyGreen.miff', 0.1, 1.03); + 'reference/composite/CopyGreen.miff', 0.3, 1.03); # # CopyRed @@ -82,15 +82,15 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'CopyRed'/, - 'reference/composite/CopyRed.miff', 0.1, 1.03); + 'reference/composite/CopyRed.miff', 0.3, 1.03); # # CopyOpacity # ++$test; -testCompositeCompare('gradient:white-black',q/size=>"100x80"/, +testCompositeCompare('gradient:white-black',q/size=>"70x46"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'CopyOpacity'/, - 'reference/composite/CopyOpacity.miff', 0.1, 1.03); + 'reference/composite/CopyOpacity.miff', 0.3, 1.03); # # Difference @@ -98,7 +98,7 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Difference'/, - 'reference/composite/Difference.miff', 0.1, 1.03); + 'reference/composite/Difference.miff', 0.3, 1.03); # # In @@ -106,7 +106,7 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'In'/, - 'reference/composite/In.miff', 0.1, 1.03); + 'reference/composite/In.miff', 0.3, 1.03); # # Minus @@ -122,13 +122,13 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Multiply'/, - 'reference/composite/Multiply.miff', 0.1, 1.03); + 'reference/composite/Multiply.miff', 0.3, 1.03); # # Out # ++$test; -testCompositeCompare('gradient:white-black',q/size=>"100x80"/, +testCompositeCompare('gradient:white-black',q/size=>"70x46"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Out'/, 'reference/composite/Out.miff', 0.3, 1.03); @@ -138,7 +138,7 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Over'/, - 'reference/composite/Over.miff', 0.1, 1.03); + 'reference/composite/Over.miff', 0.3, 1.03); # # Plus @@ -146,7 +146,7 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Plus'/, - 'reference/composite/Plus.miff', 0.1, 1.03); + 'reference/composite/Plus.miff', 0.3, 1.03); # # Subtract @@ -154,13 +154,13 @@ testCompositeCompare('gradient:white-black',q/size=>"100x80"/, ++$test; testCompositeCompare('gradient:white-black',q/size=>"100x80"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'ModulusSubtract'/, - 'reference/composite/Subtract.miff', 0.1, 1.03); + 'reference/composite/Subtract.miff', 0.3, 1.03); # # Xor # ++$test; -testCompositeCompare('gradient:white-black',q/size=>"100x80"/, +testCompositeCompare('gradient:white-black',q/size=>"70x46"/, 'input.miff', q//, q/, gravity=>'Center', compose=>'Xor'/, 'reference/composite/Xor.miff', 0.3, 1.03); diff --git a/PerlMagick/t/reference/filter/Shear.miff b/PerlMagick/t/reference/filter/Shear.miff index b1bb584a4..6ad04b2ad 100644 --- a/PerlMagick/t/reference/filter/Shear.miff +++ b/PerlMagick/t/reference/filter/Shear.miff @@ -1,11 +1,10 @@ id=ImageMagick version=1.0 class=DirectClass colors=0 matte=True -columns=86 rows=78 depth=8 +columns=87 rows=78 depth=8 colorspace=RGB compression=None quality=0 resolution=72x72 -compose={Over} -create-date={2008-10-04T20:10:45-04:00} -modify-date={2008-10-04T20:10:45-04:00} +date:create={2011-09-04T13:28:40-04:00} +date:modify={2009-09-05T17:47:34-04:00} -:žœÿéééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/.,ÿ30.ÿjgdÿ´²°ÿüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPOÿ/.,ÿ50-ÿ82-ÿ92,ÿ~yvÿÆÄÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›››ÿ+,+ÿ0.+ÿ40,ÿ70+ÿ80,ÿ7/,ÿH@>ÿ‹ŠÿØÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßàÿ-/1ÿ,--ÿ/-+ÿ1,)ÿ4-*ÿ4.+ÿ80-ÿ80-ÿ7/,ÿXQOÿ ›ÿêééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFHJÿ+.1ÿ.--ÿ.,(ÿ/+'ÿ/+*ÿ1,+ÿ4-+ÿ6/-ÿ6.+ÿ4,)ÿ4,)ÿjdaÿ³°¯ÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“”“ÿ-/.ÿ../ÿ-.-ÿ-*(ÿ,*)ÿ,**ÿ.**ÿ1++ÿ2,+ÿ2,*ÿ3,)ÿ5.*ÿ4-)ÿ1-'ÿzxtÿÆÅÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÛÿ12-ÿ01-ÿ01.ÿ0.,ÿ.++ÿ+)*ÿ*()ÿ-**ÿ.++ÿ/++ÿ0+)ÿ3-*ÿ4-+ÿ3/*ÿ2/)ÿ41+ÿHE?ÿ’‹ÿÛÚ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOPKÿ45/ÿ53.ÿ64/ÿ41-ÿ1-*ÿ,))ÿ*)*ÿ,*+ÿ-*+ÿ.++ÿ0,,ÿ1,,ÿ2.,ÿ30+ÿ30+ÿ63-ÿ86/ÿ@;/ÿgaVÿ«§ ÿíìëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘ÿ782ÿ883ÿ:83ÿ:72ÿ91-ÿ3-+ÿ-++ÿ+),ÿ+)+ÿ*()ÿ+))ÿ.+,ÿ/-,ÿ0.+ÿ3/+ÿ41,ÿ64/ÿ=7-ÿE=2ÿI@2ÿLA1ÿthÿĹ³ÿþýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙØÿ782ÿ;;5ÿ><7ÿ@=8ÿA97ÿ<41ÿ50.ÿ0./ÿ+*.ÿ,',ÿ+')ÿ,**ÿ-,-ÿ/,+ÿ1-+ÿ2.+ÿ40-ÿ83-ÿ>6-ÿC:/ÿH=-ÿL@/ÿYB2ÿC3ÿÄ…|ÿëÊÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúùÿIJEÿ681ÿ>=8ÿB?:ÿD?:ÿC=8ÿ?94ÿ:53ÿ301ÿ0)/ÿ/(,ÿ,))ÿ,+*ÿ.,+ÿ/+*ÿ.*)ÿ0,+ÿ3/.ÿ92.ÿ>5-ÿA6-ÿG;.ÿJC2ÿiD3ÿ”@0ÿ´@4ÿÓTQÿð˜™ÿüÛÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……ƒÿ440ÿ994ÿ@>9ÿFA>ÿFB<ÿEA:ÿD>8ÿ?95ÿ:20ÿ6-.ÿ2,,ÿ1.*ÿ//+ÿ.-+ÿ.*)ÿ0+)ÿ0,,ÿ700ÿ<30ÿ>4.ÿC7.ÿF>2ÿOD4ÿr?.ÿš;+ÿ¼F<ÿàCFÿï@Dÿö_cÿô¦¦ÿúíìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÎÿ0/,ÿ32.ÿ993ÿBA8ÿFD=ÿHD=ÿIC;ÿI?6ÿE<2ÿ@71ÿ;4/ÿ61.ÿ41,ÿ11.ÿ//.ÿ3-*ÿ6.)ÿ81,ÿ;30ÿ;20ÿ>1.ÿD71ÿJ=6ÿZ<1ÿu9*ÿ˜A0ÿÆE?ÿæBCÿú<Aÿî<>ÿË?6ÿÉrfÿ⸲ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ:81ÿ41-ÿ43.ÿ:;3ÿCC9ÿIH;ÿKH8ÿKC6ÿJ=1ÿF;.ÿD;1ÿ?91ÿ85.ÿ640ÿ752ÿ:3.ÿ=3,ÿ?4,ÿ?5/ÿ<2.ÿ;/-ÿ?0.ÿ@62ÿH:4ÿ^60ÿ‚8-ÿ¤A4ÿÊE=ÿï>?ÿó<>ÿÐ@:ÿ²?-ÿ°?,ÿ©@,ÿÁ…wÿâÊÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ…~ÿ=:1ÿ52,ÿ74,ÿ>=4ÿIE9ÿMJ6ÿMJ;ÿNJIÿH@9ÿE<.ÿD:0ÿ>80ÿ95/ÿ:5/ÿ>80ÿB90ÿE;0ÿE:1ÿA8/ÿ<2-ÿ</.ÿ>1,ÿ<70ÿD60ÿg7/ÿ<0ÿ¥A4ÿÌC;ÿçA>ÿË@5ÿ?,ÿ¬?+ÿ¬?+ÿ @+ÿ–?+ÿ›O@ÿÕ‹ÿëÛØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÍÉÿJD8ÿA<1ÿ73)ÿ97.ÿG?5ÿTJ8ÿRL=ÿffsÿpnˆÿUMRÿC9,ÿ@8/ÿ<71ÿ:7-ÿ>9-ÿE</ÿJ>0ÿL?3ÿH=4ÿA7/ÿ=2/ÿ=1.ÿB1-ÿ>2-ÿG/)ÿo7,ÿŽ=3ÿŸA4ÿÆD;ÿÊF;ÿ¥A-ÿ£?,ÿ¦>-ÿŸ?+ÿ–>*ÿ‘>-ÿ=+ÿ’<*ÿ§`Qÿϧ ÿöíìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]VHÿNG:ÿC=2ÿ;6.ÿ@93ÿPD6ÿTG8ÿc_oÿ•›Óÿ†…¸ÿSMdÿ@:=ÿ<61ÿ=71ÿ>80ÿD<0ÿL?/ÿO@1ÿM>4ÿF:2ÿA70ÿ?61ÿ@51ÿK,/ÿC+,ÿK1)ÿq;.ÿ‹@1ÿŸ@3ÿµF:ÿ¡@2ÿ˜?,ÿ=-ÿ›=-ÿ“=*ÿ>+ÿŽ=,ÿ<*ÿ;*ÿ”>.ÿ¡?3ÿÉvkÿỶÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽˆ}ÿWM?ÿOH9ÿE=2ÿ?82ÿF?7ÿRE4ÿZNTÿ†ŠÀÿ§°úÿ¡ìÿsq—ÿGCIÿ62'ÿ96.ÿ>;5ÿG?5ÿN@/ÿN=0ÿI:1ÿC:0ÿ?:1ÿ?92ÿK76ÿA40ÿ<3*ÿR1(ÿs:/ÿŠ;2ÿ“>0ÿ˜?2ÿ“>-ÿ“=+ÿ–;-ÿ<,ÿ‹<*ÿ‰<+ÿŠ<,ÿŠ;,ÿ=-ÿ—>2ÿ¸@4ÿ¶D7ÿ|A5ÿ‹€|ÿÉÈÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÈÃÿZO@ÿYM?ÿQG8ÿI>2ÿD?6ÿME4ÿSF7ÿjg‚ÿ™¤æÿ±»þÿ©êÿªÿJGSÿ;:=ÿ<:/ÿE>/ÿM@/ÿJ?-ÿJ:0ÿD90ÿ=<0ÿ?<1ÿp>=ÿŠDGÿk>7ÿR8,ÿ`6,ÿ‚:7ÿ…:5ÿ…?4ÿŽ>2ÿ<.ÿ=-ÿ<-ÿ‡;+ÿ‡:*ÿ…;,ÿ…;.ÿ†=0ÿ“A0ÿ¶@5ÿÅD:ÿ’G:ÿE7-ÿ842ÿIECÿ’ŽÿÚÚÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôóòÿcVGÿZM=ÿXL<ÿTI9ÿNE9ÿMG7ÿRG/ÿYQWÿˆÅÿ¨®üÿ³¶ÿÿ®¯÷ÿˆ…ÈÿZU€ÿA=FÿA=)ÿGA.ÿI>.ÿB8+ÿ?60ÿ8;1ÿ=>0ÿŠC@ÿâHWÿ®;9ÿ˜D;ÿ™E=ÿ>7ÿA>ÿ„A:ÿ„@5ÿˆ@0ÿ†=-ÿ‰<-ÿ‡:-ÿ‚9*ÿ€9*ÿ€:-ÿ>4ÿ‹D8ÿ©D9ÿ¿HBÿQJÿPA7ÿ954ÿ820ÿ61.ÿ50-ÿWVSÿ¡¡ ÿíììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰~sÿZL<ÿ[L<ÿXL;ÿWJ<ÿSI<ÿUJ6ÿWNGÿx{¡ÿŸ¡ðÿ¨©þÿ¬°ýÿ£¦òÿ…ƒÌÿa[ÿ@?Lÿ=>4ÿ9A:ÿ;AFÿ;@?ÿ63/ÿQ71ÿŽB:ÿ±:4ÿµ3*ÿŸ;$ÿº@6ÿ§?3ÿ¨@3ÿœC5ÿ@4ÿ@5ÿ€;.ÿƒ:+ÿ‚;*ÿz;*ÿw:+ÿz:-ÿ€?6ÿ…F?ÿ™E=ÿ³PKÿ©pfÿpk]ÿAA9ÿ93/ÿ62.ÿ52.ÿ10,ÿ./-ÿ1.-ÿlfgÿº´µÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ¿¹ÿ[K:ÿZK:ÿYI:ÿYJ;ÿXK=ÿXL;ÿXL=ÿe`oÿŠŒÀÿš›èÿ §øÿ¤¬ñÿ£¤ïÿˆ×ÿckšÿOJYÿQDGÿd[rÿeczÿFSRÿ_?8ÿ–;7ÿª;,ÿ¤8%ÿ¦=%ÿ¬<'ÿ§9+ÿ²>2ÿ°C4ÿ¦?.ÿª?9ÿ—><ÿ~=3ÿv=-ÿw8)ÿ;0ÿu:.ÿA5ÿ†I?ÿKFÿ£\Vÿ£‹wÿˆ™€ÿZfXÿ?=3ÿ53,ÿ13-ÿ.3.ÿ,2.ÿ/0.ÿ4.-ÿ:-/ÿc>>ÿ¶’”ÿã×Ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôóñÿ[K7ÿ[K7ÿYJ8ÿYJ9ÿ[K<ÿ]L<ÿ\N;ÿYOIÿgc{ÿ‚ƒµÿ‘•Üÿ—¡âÿ› âÿœ§òÿ—¡ØÿŽk‡ÿžM[ÿºTbÿ¹iŠÿ´iÿŸMRÿžD6ÿ¨<+ÿ©>)ÿ©;'ÿ¸=,ÿ°9+ÿ§;.ÿ@2ÿ©<,ÿ»>2ÿÃ><ÿ¦@?ÿw>5ÿŠ84ÿ³IFÿ£SMÿ|F9ÿ†I?ÿ‰QHÿŽk^ÿ‘—~ÿŒª‹ÿwŒvÿSZHÿ9;0ÿ/1*ÿ-1+ÿ,2.ÿ-3/ÿ11/ÿ1,,ÿE21ÿGAÿ•fxÿŒ„®ÿª©Ãÿàßäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ykÿ]L8ÿ\K6ÿ\K7ÿ\K:ÿ]J;ÿ^M;ÿ\N>ÿYLGÿg_vÿ|x±ÿ‡†Êÿ…Áÿƒ½ÿ§±ÿÆgƒÿÛDRÿæAFÿèEMÿÙDLÿÐCJÿÄ@7ÿ¬:%ÿ®<)ÿ²:(ÿ¾7*ÿÉ:0ÿ¶:.ÿ®;,ÿ²>0ÿº?3ÿÌ;0ÿê69ÿÖ<;ÿº?=ÿÓ>DÿÌNLÿŠQCÿkR?ÿwZGÿoXÿz—uÿ‚Šÿ£„ÿfƒeÿJXCÿ46,ÿ-*'ÿ/.+ÿ-/.ÿ/1.ÿ01.ÿ2.,ÿU4*ÿ…STÿ…|ªÿbfŸÿOGiÿ}z‡ÿÆÈÇÿõõôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ¹²ÿ^N<ÿ^M:ÿ]L9ÿ]L9ÿ]L:ÿ]M<ÿ]O;ÿ^N:ÿ^NKÿg\‚ÿ‚{½ÿˆ{µÿuj›ÿ’TiÿÜF[ÿæ=Cÿç>?ÿå<<ÿÌ?1ÿÒB;ÿâ=<ÿÆ=2ÿ·<,ÿ¾;-ÿÊ:/ÿ×91ÿÓ93ÿÅ8/ÿÂ;/ÿÃ:/ÿÉ5+ÿÞ3+ÿò.,ÿæ73ÿè55ÿ×5/ÿ¬NCÿlaFÿtgKÿ’mUÿ¬i^ÿ¥‹xÿŠ¨‡ÿq™vÿ]\ÿISBÿ5.+ÿ1))ÿ1+*ÿ/-+ÿ/0,ÿ/0/ÿ6,+ÿW?=ÿs—ÿmr¸ÿKArÿNE^ÿpsvÿŠŽ‚ÿ––ŽÿÙÙØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúùùÿ\M=ÿ_O>ÿ^N=ÿ^M;ÿ^L8ÿ^M9ÿ[O=ÿ]O<ÿ`L<ÿ`NUÿog‹ÿ™~§ÿ±t ÿ¬IXÿÕ;;ÿø7>ÿèC@ÿæ@GÿÐ>?ÿÎC>ÿç>Aÿß9;ÿÇ>5ÿÉ?3ÿÓ<2ÿÛ90ÿÜ71ÿÜ:5ÿÙ:4ÿ×;2ÿ×:2ÿÝ4+ÿå4,ÿò/)ÿå3%ÿÙ4#ÿÄ?3ÿ•aMÿ‰eLÿÆ`Xÿò?QÿçDWÿ¾~tÿŸ~ÿy”oÿf…eÿGUDÿ1.*ÿ-')ÿ/)+ÿ0++ÿ/.+ÿ1+0ÿ=56ÿvs‚ÿ…‰ÉÿZXŸÿB7dÿLJ[ÿz€yÿlo_ÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyobÿ]N>ÿ_QAÿ_P?ÿ_O;ÿ^N7ÿZOBÿ^URÿgWWÿfPOÿiaxÿŽ‚¨ÿÓzŽÿíM`ÿÚ<;ÿá?7ÿô>?ÿëBKÿÔACÿÀA:ÿÙA@ÿÞ>=ÿÍ>7ÿÆC7ÿÀ8+ÿÐ5,ÿÚ4,ÿÜ80ÿâ:3ÿß91ÿß?5ÿë5+ÿò-(ÿõ.(ÿæ1%ÿÖ4 ÿÑ6'ÿÆK?ÿÄXNÿèVVÿô;Dÿì8Fÿú7OÿëN]ÿ¿rlÿ’‘uÿjŠiÿEQ>ÿ,($ÿ-%(ÿ.(,ÿ1)/ÿ0*0ÿ/((ÿbkSÿ‘š¯ÿ|†¼ÿ]`ˆÿGG\ÿ>DJÿOWNÿWWQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²®¨ÿSI9ÿ]P@ÿ`SCÿ`R@ÿ\N?ÿ_TQÿjgxÿwqÿqi‚ÿnq•ÿ€†Çÿ±…ªÿ÷klÿ÷ANÿÝADÿå@BÿéAFÿÆ=:ÿ¯<.ÿÆ@8ÿÐ72ÿÈ?4ÿÀ=.ÿ¼;,ÿÅ6+ÿÚ40ÿÝ9/ÿÝ6+ÿÖ3'ÿÕ8)ÿå?1ÿø0,ÿù+)ÿê1(ÿÒ6 ÿÓ6#ÿÒ:.ÿÕF?ÿìDHÿç?CÿÉ>9ÿæCGÿý0Gÿõ=UÿåVfÿÄpoÿ‘k_ÿOE4ÿ2*$ÿ)*'ÿ(*,ÿ**/ÿ+''ÿHL4ÿƒ‘wÿ¤šÿ˜µ«ÿ{Œÿl{ÿo€vÿ^gZÿÄÄÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèæÿED9ÿQH=ÿ_Q@ÿ`TAÿaVPÿiaoÿvwšÿy|²ÿtu´ÿt{ºÿ‚ŠÎÿ–ŠÑÿ¼x‹ÿíX\ÿò@Pÿã>Eÿà@@ÿÇ?7ÿ«9*ÿ¾?2ÿØ;7ÿËA6ÿ½:(ÿ¾9&ÿÄ:)ÿÙ9/ÿà60ÿà5+ÿÔ4!ÿÈ5!ÿÌ9%ÿæ;2ÿû02ÿì/-ÿÕ2&ÿÍ7$ÿÐ5(ÿ×B;ÿÜIDÿÕ?9ÿ¼<0ÿ¹@3ÿã@Aÿû6Gÿþ3Sÿ÷>`ÿæQlÿÖXlÿ¡HTÿW65ÿ).%ÿ1(+ÿ.&*ÿ31)ÿjuUÿ‹£sÿ™½‹ÿ¡Æ¡ÿ·—ÿ‘¯“ÿzŽzÿŒ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSVNÿ=<4ÿUI<ÿ`UDÿhabÿupÿvy«ÿkr³ÿckµÿyzÓÿžÑÿ±®¿ÿ¼§¦ÿ΀pÿñTUÿð>FÿÜ:;ÿÄ=3ÿª:*ÿ·<-ÿÛ<8ÿßA<ÿÄ=-ÿÁ:&ÿÆ9&ÿ×7(ÿæ4-ÿê20ÿÙ6+ÿÄ8'ÿÄ8(ÿÏ5)ÿæ51ÿí12ÿÛ2/ÿÖ6,ÿÐ:)ÿÔ;0ÿÝOGÿº=1ÿ¶:'ÿ±:)ÿÀ@5ÿêBEÿûAMÿþ<Vÿþ;fÿþ:oÿðFnÿÊJaÿv:<ÿB-(ÿA,)ÿME5ÿahNÿyfÿ€¢oÿ¶ÿ¶…ÿŠ±†ÿƒ €ÿ]iOÿööõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿšœ˜ÿ-1*ÿ@;5ÿSI<ÿfcgÿso“ÿlk¥ÿbe«ÿip½ÿ†Ôÿ°±àÿàݽÿîæ¥ÿÓ¿’ÿ¹jRÿÝGDÿç;=ÿÊ>3ÿ;,ÿ¶?1ÿÓ72ÿã94ÿßJ>ÿÊB3ÿÈ6'ÿ×4'ÿé6,ÿñ1/ÿþ,2ÿæ1/ÿÎ73ÿØ:6ÿÖ7,ÿÝ7+ÿæ41ÿæ14ÿì40ÿÛ8,ÿÝC;ÿ×FBÿ½;*ÿº9(ÿÅ@6ÿØFEÿïEJÿúBPÿþ@_ÿü>nÿüBtÿýHpÿøYuÿ‘ILÿI:,ÿTM3ÿimKÿi€Wÿm‘^ÿvžiÿ}£oÿ¦xÿ|œxÿ`qWÿÈËÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàáßÿ,1&ÿ/1,ÿ><7ÿUUYÿed†ÿSSŠÿ\]¤ÿssÆÿÝÿ§¨ßÿÆÆÛÿÝÙÆÿÛÖ´ÿµ²‘ÿ®l[ÿäQPÿá86ÿÁ:/ÿ¸A7ÿÄB9ÿÒ6,ÿÛ9)ÿâJ=ÿÌ:-ÿØ5,ÿé4.ÿè3,ÿì-$ÿõ**ÿõ*6ÿ÷);ÿä1.ÿÇ7#ÿÎ5&ÿß00ÿò+0ÿã2*ÿÖ=/ÿáLIÿÐ@;ÿÁ9)ÿÄ</ÿÐICÿÕGFÿïEKÿüH[ÿýEgÿþHvÿûItÿûSuÿæXrÿECÿMH3ÿxtZÿy‰fÿl‰Zÿn’`ÿl—gÿtrÿxšvÿhdÿ†€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYYMÿ45-ÿ24,ÿBD=ÿVWkÿ[[’ÿef²ÿx{ÐÿˆˆÛÿ”“ÖÿœšÔÿ©£Òÿ´«Åÿ˜–œÿunÿ¹kfÿõWZÿß76ÿÃ;3ÿÁRFÿÈJ>ÿÕ6)ÿâ8/ÿØ@3ÿÖ:/ÿë56ÿò06ÿõ/:ÿö*4ÿö'4ÿý5ÿò&2ÿ×2+ÿÏ8(ÿÚ7.ÿÒ6-ÿÒ5(ÿË6%ÿ×I>ÿÙFFÿÑ@7ÿÀ9+ÿÅC6ÿÇG>ÿÚIEÿðOVÿ÷G_ÿýJpÿýM{ÿýOwÿûQsÿßZrÿ’faÿ¢–Šÿ¤©¢ÿŠ™Œÿƒ•yÿ}–sÿœ~ÿz˜{ÿjˆfÿ\hTÿö÷öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¡™ÿID8ÿ>>3ÿ?B.ÿLNHÿ[Yuÿqp±ÿ„†äÿƒ„áÿ††Ñÿ‡…ÍÿŒ…Ñÿ”ŒÉÿŠ®ÿngqÿ|b\ÿÇsnÿðYYÿâ=:ÿ½<2ÿÁSEÿË@4ÿÞ2+ÿá:1ÿÝ=0ÿë43ÿø5@ÿü!.ÿû$2ÿó(;ÿô+Lÿ÷2Kÿð=Hÿç38ÿî65ÿå<3ÿÌ>0ÿÆ8'ÿÒ=/ÿßB@ÿáLJÿÈ90ÿ¿;+ÿ¾@.ÿÃB5ÿØMHÿêRZÿùRjÿûQuÿ÷WyÿûRoÿðVnÿ¾osÿ¶›‘ÿàÛÞÿÔÍÞÿÁ¼Äÿ¾»µÿ»¾´ÿ ¬¡ÿsŠqÿXiOÿÏÒÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæåâÿ[SDÿWN@ÿPK9ÿOM:ÿSR?ÿhf{ÿŒ‰ÙÿŽŒîÿÐÿ‚ƒÍÿ‡ÕÿŒ„Êÿ‡®ÿy^pÿcWOÿŒTJÿÖe`ÿö\Yÿá?8ÿÄD9ÿÐSDÿÒ1'ÿå94ÿâ;.ÿè3+ÿö9=ÿ÷CHÿñ-1ÿð$+ÿï';ÿø>ZÿûXhÿôGXÿï2>ÿð,/ÿÜ83ÿÏ;1ÿÎ5+ÿâ86ÿèCCÿáKDÿÉ<-ÿ¼:'ÿ¸;+ÿ¿C8ÿÒPMÿï\gÿüVpÿüRtÿýUqÿúThÿøapÿÃhhÿòÙÒÿùôûÿ÷èúÿûïùÿðèçÿÞÕÛÿ¨«©ÿbu]ÿ’›‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿxpcÿe[Kÿ`WGÿ\TDÿ]TBÿaZOÿws’ÿŽŠÑÿ~Áÿƒ‚ÁÿŒ‰Íÿ‹ƒÃÿ„} ÿyclÿb[MÿnWDÿÆXVÿítrÿøqmÿÙHAÿÅ=0ÿÍ;-ÿâ@<ÿâ@8ÿâ0&ÿí.+ÿð?AÿìEIÿä54ÿà/0ÿê<Jÿ÷ZeÿïLRÿÖ6<ÿÄ3-ÿÊ:/ÿàFBÿÛ97ÿÞ85ÿß0-ÿÖ6,ÿÏ;/ÿÁ<,ÿ³;+ÿ±;.ÿ¹?2ÿâ\XÿúdpÿüRoÿú\tÿû^mÿýXgÿØNWÿØž™ÿþþþÿýúÿÿþúþÿþûúÿùðôÿÛÔÙÿ†„ÿkycÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«¦žÿh_Pÿg^Oÿe\Mÿe[Lÿd\Hÿg]Tÿsizÿzq’ÿupšÿ€|«ÿƒz ÿ{q…ÿma]ÿe[Jÿb^Eÿ¡XMÿÞadÿï|ÿñlfÿÆ7,ÿÃ7&ÿÕ?4ÿàFCÿà92ÿæ0*ÿÚ3*ÿÚA@ÿëNSÿêOTÿáEIÿÛ>BÿÞ<>ÿÊ72ÿ£6%ÿ™2ÿÇD;ÿÜKGÿÕ<7ÿÒ6+ÿÈ7'ÿÈ8+ÿÐH<ÿ´<.ÿ«9,ÿ:+ÿÉN@ÿîidÿögoÿódrÿðntÿògsÿØgjÿ§gbÿàÆÄÿûúúÿüýþÿþû÷ÿÿûúÿùòöÿÅÃÀÿŠ“„ÿÝàÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâàÝÿi`Qÿi`Qÿi`Qÿh_Pÿi`Oÿh_Kÿg^Pÿla^ÿg]_ÿ`\dÿkdkÿn`\ÿk[Mÿb\Hÿf\Hÿy[FÿÀXTÿïghÿïldÿËA3ÿ¼:$ÿÉ:*ÿÓ8.ÿÖ9/ÿß7/ÿÓ7,ÿÅ9,ÿâLLÿôUaÿòZaÿâCGÿç5;ÿÜ58ÿÓHEÿ¿F@ÿ¹?9ÿÄ97ÿÔD>ÿÇ8+ÿ·8$ÿµ8(ÿÒI?ÿÇ?5ÿ¸8-ÿ«9*ÿ°>.ÿ×[Sÿìfhÿîclÿïpqÿøntÿëyÿ„raÿ}tÿòååÿûþÿÿüúøÿþù÷ÿýïóÿæÛÚÿÉÇ¿ÿÑÔÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿofXÿi`Qÿh_PÿjaQÿj`SÿjaUÿi`Pÿh_Lÿf\Hÿ]XIÿUQEÿ_VEÿj[Gÿj]Jÿi]Mÿv]KÿšUCÿçPOÿæIEÿÒ=0ÿÆ9&ÿÉ:(ÿÔ6*ÿÎ9+ÿÕ7,ÿÕ9-ÿÂ;*ÿÃ<0ÿÑ=@ÿñXcÿø_eÿó07ÿñ0<ÿöUaÿócmÿÛQTÿàQQÿÛHEÿÌ<2ÿÃ8*ÿ¯8)ÿ¾=3ÿÕ?:ÿØ71ÿÒ92ÿ»8+ÿ¿G=ÿïqtÿólvÿ÷krÿüinÿüizÿ—ŽzÿQ[AÿÝÇÅÿþüþÿýüýÿþúøÿûòñÿèÚØÿîåÚÿèêáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥ —ÿi`Qÿi_QÿkbSÿjaSÿk_Zÿj_ZÿjaQÿiaKÿf`IÿXTAÿMI7ÿYS@ÿe^Iÿw_OÿŽYLÿ¢L>ÿÐ:3ÿä51ÿÝ1*ÿÖ7&ÿÒ8(ÿÖ4)ÿÌ8*ÿÇ8(ÿÔ9,ÿÇ9)ÿÃ=0ÿÄ;4ÿÕEHÿéV\ÿç?@ÿò1:ÿöEQÿûakÿöZbÿáGDÿÚ?<ÿ×B;ÿÙ=6ÿÓ64ÿÌ83ÿÝF=ÿå40ÿö10ÿã5/ÿ¿7,ÿÝa_ÿùyÿût}ÿýmvÿüWhÿ¹lkÿ_sPÿ¿µ¥ÿûùøÿþýþÿýýüÿýþøÿòíçÿïæØÿ÷öèÿýþûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚØÕÿhaQÿjaRÿjaRÿjaRÿlaUÿkaUÿkbQÿkaTÿjaSÿf^KÿSO;ÿGI7ÿQS@ÿc_Oÿš[Sÿ·G>ÿ¼7+ÿÚ3,ÿá3*ÿÙ7%ÿÑ9%ÿÛ5*ÿÇ6)ÿÀ<)ÿÎA2ÿÐ<.ÿÆ9+ÿÇ:/ÿÈ;4ÿÕKEÿÓD;ÿâ95ÿî>EÿìCHÿôIMÿß73ÿá74ÿÜ?9ÿÝ>7ÿë27ÿõ4=ÿé>;ÿâ3.ÿú.0ÿö//ÿÜ5,ÿÊF=ÿðtvÿý}…ÿþr~ÿþSfÿêQdÿŠ—rÿ©…ÿõðæÿÿþÿÿ÷ýùÿïÿñÿüüõÿôðâÿúøáÿüýóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrl]ÿibRÿicRÿiaRÿjaRÿkbSÿkbPÿkcPÿkaUÿlaRÿe^KÿNM<ÿ@F6ÿBI<ÿjREÿÂKIÿÎ5/ÿÅ9*ÿÜ7-ÿÚ6*ÿÐ9&ÿÔ9*ÿÀ9)ÿ»:)ÿÈ=-ÿÕ@4ÿÈ9)ÿÈ8)ÿÊ8+ÿÎ=2ÿÉ<0ÿÔ3'ÿï-2ÿô,<ÿõ/9ÿñ52ÿë41ÿß71ÿÖ80ÿæ54ÿù1;ÿô6:ÿá4.ÿë1.ÿ÷.0ÿï1,ÿÈ6(ÿÖ]Xÿþ„‰ÿüt€ÿýWlÿùA]ÿ–€bÿ}–eÿÅÉ«ÿÛæÒÿÖèÖÿÒñÕÿäóÞÿûûìÿýøãÿüûëÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿž›‘ÿhbRÿjbRÿibRÿibRÿjbSÿkbRÿkbRÿlbTÿmbSÿmbSÿb\LÿHI:ÿ9B3ÿAF3ÿŠRCÿÞGFÿÇ<.ÿÌ9)ÿÙ8+ÿÕ7)ÿÔ9*ÿÅ:+ÿ³8&ÿÐ;2ÿÞE<ÿÀ9)ÿÅ9(ÿË7(ÿÒ8+ÿÕ;/ÿÜ4.ÿõ/6ÿü*<ÿû&=ÿþ 9ÿö+4ÿç51ÿÞ:1ÿä84ÿç::ÿê56ÿÞ5-ÿã3+ÿô00ÿõ//ÿ×2'ÿÃH=ÿù‰Šÿþw…ÿýXqÿ÷B\ÿ¨VKÿe|Kÿw…Yÿ‚™qÿ‘±‰ÿ”¹ÿ«Ï£ÿßèÍÿøïÝÿ÷ïáÿýüúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÔÐÿgcRÿgcRÿhbRÿhbRÿibRÿjbSÿkbSÿlcSÿmbSÿoaSÿi`Rÿ[VFÿEA1ÿ8A)ÿhK6ÿ¶YLÿßJEÿÊ:,ÿÏ7(ÿÓ8)ÿÔ7)ÿÏ:+ÿ³:)ÿ³6&ÿÔ>5ÿÃ=.ÿ¹9(ÿÇ8*ÿÑ5*ÿÚ5+ÿæ95ÿó3=ÿö-<ÿô,;ÿý$:ÿý%8ÿî17ÿß:4ÿã94ÿé66ÿé65ÿÛ5-ÿá6)ÿó0-ÿù.1ÿè1+ÿÄ;0ÿätrÿýz†ÿþSpÿû?`ÿÀDNÿVg;ÿq†Xÿxbÿm“_ÿueÿ‰¶zÿ¥Å•ÿ×ÙÁÿîàÕÿõïêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÿqo_ÿgdRÿgcRÿgcRÿibRÿkbSÿlcTÿlcTÿkbSÿj^Rÿi_Uÿoj^ÿa\HÿDF,ÿyJ<ÿ¾@AÿßQQÿçKJÿÌ9-ÿÎ9*ÿÐ:)ÿÒ9)ÿ»;-ÿ˜5ÿ·<+ÿÐ>3ÿÑD8ÿÎ=3ÿÕ;4ÿß94ÿè:6ÿï6;ÿí1<ÿë8?ÿï47ÿö09ÿî4;ÿÜ96ÿà:4ÿê54ÿê33ÿà5.ÿÝ6)ÿì2*ÿ÷03ÿõ0.ÿÒ8-ÿÈOKÿûz†ÿüSoÿþ>dÿº@OÿV\9ÿq•[ÿƒ mÿ¥nÿ‚ªoÿ†¯pÿ‰·uÿ™²„ÿÏŶÿÝÏÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜–ŒÿheVÿgdUÿgdSÿfcRÿjcRÿlcTÿlcTÿkbRÿf^Sÿzuoÿš™”ÿ§¤œÿ…pÿbQ=ÿG@ÿ½GHÿëcfÿÚJEÿÍ>3ÿÏ=1ÿÒ</ÿÇ<0ÿœ7"ÿœ:"ÿ½7)ÿÓ90ÿà99ÿà;:ÿè99ÿé97ÿç86ÿð@CÿëMNÿîRMÿì;:ÿå66ÿÝ75ÿÞ95ÿé64ÿï36ÿâ5.ÿÚ7(ÿá6'ÿî3-ÿô11ÿà4,ÿÀ93ÿûw‚ÿüSoÿû>cÿ»>Pÿ]Q:ÿg…Qÿz dÿ~¥jÿ|¤fÿ§iÿƒ±nÿ„±qÿ¨±ÿµ¯ÿöôóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÎÊÿheVÿheVÿheVÿgdVÿidTÿkcUÿmdTÿlcRÿke[ÿ‘’ÿÐÒÓÿõ÷øÿÞÝØÿ‹|ÿ=>,ÿh?5ÿ¢GDÿËMLÿÐD@ÿÒD>ÿÖE>ÿÖB;ÿÃ?7ÿ¨=+ÿµ;+ÿÑ:1ÿè9=ÿå7<ÿì6:ÿë69ÿÖ;5ÿÌ=4ÿÙLFÿÒGAÿÝ=9ÿß82ÿß74ÿá87ÿé88ÿò69ÿæ63ÿÖ7)ÿÚ7&ÿâ5&ÿî4+ÿå3)ÿÖ=8ÿì]eÿþNlÿþ<dÿÀGYÿJB.ÿXmGÿw˜`ÿvž`ÿu_ÿz¡dÿ}§hÿ°fÿ±yÿµ¹¤ÿâàßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÿheVÿheVÿheVÿheVÿheUÿjdXÿmdWÿjdRÿibUÿz|}ÿÏÖØÿþþþÿþþþÿ÷èáÿž|ÿAG2ÿ;=.ÿ^?5ÿ¤E@ÿÍA=ÿÏD<ÿÚGDÿãFJÿÐGBÿÎE<ÿßG@ÿäCBÿÕ?=ÿÉ75ÿÔ67ÿÎ62ÿ±8(ÿ³9)ÿÈ;0ÿÝ:7ÿá84ÿâ83ÿæ77ÿé7<ÿî6;ÿë67ÿ×8/ÿÐ8(ÿÕ7%ÿ×8%ÿÛ8&ÿÛ=4ÿñU`ÿþJiÿü=eÿ±HTÿMD1ÿAI0ÿl„Vÿu˜\ÿp˜Wÿu]ÿz£bÿ{¨]ÿ…±iÿ˜²†ÿ«µ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘…ÿgdUÿheVÿheVÿheVÿidWÿldYÿieSÿmkcÿŒ•ÿÀÉÎÿðûûÿûþûÿýþóÿíðÔÿ‹“rÿAJ3ÿ;81ÿQ:3ÿ©EDÿÓ@@ÿÖB?ÿÝADÿàEGÿåGFÿëABÿãDBÿÁA:ÿ >0ÿ£>2ÿ¤:/ÿ¢;)ÿ¤;'ÿ¸:)ÿÛ;5ÿë69ÿæ77ÿç75ÿê7;ÿë6<ÿë69ÿ×:4ÿÂ8)ÿÅ;(ÿÇ;#ÿÈ;$ÿÖ>4ÿùTfÿþAfÿó;bÿ¦?KÿQD4ÿHF2ÿS`=ÿlŠQÿh’Lÿo˜Tÿvž\ÿx¤Yÿ~«^ÿ‡«oÿ|’uÿíïìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÂÿfdTÿheVÿifWÿieVÿjdVÿlc[ÿlfVÿpqbÿ¢§ªÿÝâæÿùúûÿýþûÿùûïÿøüëÿàãÇÿ‚†eÿA?-ÿ771ÿXBAÿÇijÿÕIGÿÝCAÿÞCDÿàCCÿãB@ÿãA?ÿÍ@<ÿž=0ÿŠC1ÿ€A/ÿ†=+ÿ•>*ÿ£=(ÿÀ9,ÿä96ÿð66ÿè84ÿå93ÿç88ÿé7:ÿÚ=7ÿ¼:,ÿ´<)ÿ¸<(ÿ·9#ÿÑA9ÿõG\ÿþ:eÿôAfÿ€6Bÿ34'ÿ<>,ÿAF*ÿ\pAÿf‹Fÿh’Kÿq™WÿsTÿržSÿz¡^ÿu‘cÿ½Ç¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_fQÿefTÿhfWÿheWÿieVÿlcZÿmfYÿhjSÿ€‰†ÿÝäèÿþÿÿÿþþûÿ÷ùñÿøúòÿüûêÿÓ̱ÿb`KÿJJ@ÿ}xuÿȲ®ÿÜŽ‰ÿÜ<<ÿßACÿÝCDÿÙEBÿÚD>ÿÔB<ÿ«<3ÿŠ>0ÿ„<1ÿ€;1ÿƒ:-ÿŠ<+ÿœ9*ÿ¾90ÿæ<6ÿê;5ÿä=4ÿà<8ÿà;;ÿØ=:ÿ»=1ÿ¦;(ÿ¤;'ÿ¡7#ÿÀ<5ÿýK_ÿù=bÿÊ>Yÿj:@ÿ//+ÿ/4ÿQO-ÿn|Qÿb|Jÿb‰Dÿi‘Nÿk’OÿfJÿ`ˆDÿUq<ÿwŠiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÉÁÿ‹“‚ÿgjVÿhfWÿieVÿldXÿlfZÿgjUÿjvkÿºÄÊÿýþþÿþþüÿóôìÿåêÜÿòôâÿáàÃÿ€eÿ^gWÿ§§ŸÿéàÞÿùïèÿ椟ÿÒMMÿÖ@AÿÜABÿÕD>ÿÔE<ÿÇ@9ÿ–<0ÿ€<1ÿƒ92ÿ:1ÿ~;0ÿ‚;-ÿ‘9+ÿ°:/ÿÑ=3ÿÛA6ÿÒA9ÿÊ<9ÿÂ>8ÿ¬9,ÿœ:)ÿ“9&ÿŽ7$ÿ³E=ÿòRaÿåG\ÿJTÿL=2ÿ41+ÿ@>,ÿpyJÿ¡µ€ÿvbÿ_„AÿgŽGÿjLÿdŠGÿ\DÿUr?ÿPh:ÿúúùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòñÿ»»´ÿ‡‚wÿlfXÿle[ÿihWÿdp_ÿ˜¦§ÿèîðÿþþýÿúûñÿèìÛÿçíÔÿäãÊÿ¹· ÿ“˜ˆÿºÀºÿôñïÿÿýüÿþÿýÿ踱ÿÊYQÿÐ@>ÿÕ@?ÿÑC;ÿÙB:ÿ±?4ÿƒ=,ÿ;/ÿ…9/ÿ‚;.ÿ}:-ÿz:+ÿ:+ÿž:-ÿ´</ÿ´;.ÿ«80ÿ8,ÿ•8(ÿ:(ÿ‹9'ÿƒ7#ÿ›C9ÿÉVYÿÂRWÿZPÿB?+ÿ9=&ÿVK5ÿ†›eÿªÉŠÿ¯xÿc‡GÿjHÿo”PÿiHÿd†Iÿa~Hÿ^wEÿ¾Èµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåäâÿ¯¬¦ÿvuiÿdlYÿ‚‘ÿ×àæÿþþýÿÿÿöÿóøäÿäëÎÿæäËÿÙÑÄÿÕÍÈÿàßÝÿö÷õÿÿþýÿýÿýÿüúöÿຬÿ°I>ÿÅ<8ÿÓ@=ÿØA<ÿÆA9ÿ“;-ÿ€<,ÿƒ:,ÿƒ:+ÿ€:,ÿ}:-ÿ{:.ÿ€8.ÿ‹8,ÿ˜8(ÿ’7*ÿŠ9,ÿ…:*ÿƒ:)ÿ;(ÿ{5#ÿ‚<-ÿ§RKÿ UNÿ]Oÿhd>ÿ\k;ÿnVÿŒ£hÿš»~ÿ‚pÿWt@ÿf‹Dÿp•PÿjIÿh‹KÿeƒJÿe€Gÿ‰ŸsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ×Òÿ¬µ²ÿÇÑØÿøûûÿüýöÿùûëÿäéÎÿØ׿ÿãÚÓÿôçêÿÿúþÿýýüÿþþýÿþþüÿþþýÿþþþÿì×Ðÿ¿_VÿÈA:ÿÏB=ÿÌB=ÿ¨>6ÿ†<.ÿ€<+ÿ:+ÿ~9,ÿ~9-ÿ}:/ÿ|90ÿz8/ÿ€8-ÿ‚9+ÿ;,ÿ9+ÿ|8)ÿx:+ÿu6'ÿ‚<.ÿ’NBÿ“VKÿ\SÿŽqYÿ—_ÿ†¢bÿoˆSÿqWÿUaDÿDU2ÿa~?ÿk’IÿfŒHÿf‰Hÿe‡Kÿe…HÿgˆGÿõ÷òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýýÿùûôÿïïÝÿááËÿÌɳÿ×ÏÊÿ÷îóÿþûýÿÿþýÿþþüÿþþüÿþþüÿþýüÿýûüÿãžÿ»\OÿÂ?5ÿÉE<ÿ®?9ÿ‹<2ÿ</ÿ~:-ÿ}9-ÿ|9/ÿ}9/ÿ|90ÿy80ÿy8.ÿx9.ÿx9.ÿx8-ÿx4)ÿy6+ÿq5)ÿ}</ÿJ=ÿ‘SHÿ•XQÿŽ]QÿqyTÿL[<ÿ9G+ÿ@F3ÿ78,ÿ9@.ÿZn=ÿiEÿcŒEÿfˆEÿiNÿf‹JÿhHÿÊØ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýûÿïîåÿÓ˽ÿËÀ¹ÿïçíÿþþþÿþþûÿþþûÿþþüÿþþüÿþýûÿþýúÿúÿýÿçÝÑÿ¸n\ÿ»C5ÿ®D6ÿ@5ÿ€=3ÿ~;0ÿ}9.ÿ{9/ÿ{:1ÿ{;2ÿv:2ÿt8/ÿs7-ÿt9/ÿt8-ÿr6,ÿp4*ÿn3(ÿu<0ÿ†P?ÿŒRFÿšSPÿ•]Wÿh_Cÿ1=(ÿ/8/ÿ:=5ÿ76/ÿ7:/ÿIX8ÿjŠHÿh‘HÿiJÿkOÿk’Nÿh‘Gÿ—¶€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõóñÿòîñÿýúþÿýþýÿýþûÿþþüÿþþüÿþþüÿûþüÿûþþÿûýÿÿðãÞÿÆ~lÿ¹>5ÿ¡=9ÿ…>8ÿ;2ÿ}90ÿ{8/ÿ{90ÿy:2ÿt:1ÿn9.ÿm6,ÿn7,ÿo7+ÿo5-ÿm3*ÿj3'ÿo9.ÿMCÿŒRJÿ˜QLÿŽ[TÿnfLÿYjAÿGS;ÿKQAÿ@?.ÿ8:.ÿ;E1ÿh„Kÿq˜Nÿl“Oÿk’Mÿm–Mÿm™Mÿz¥\ÿöùôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿýþþÿýþþÿþþüÿþýûÿýýýÿýýþÿþúþÿþüýÿðâÕÿ¸t^ÿŸ=1ÿ:5ÿx@<ÿu>6ÿv:1ÿv7.ÿv7/ÿs7/ÿj8.ÿh7-ÿh7,ÿi7,ÿl6.ÿk4,ÿh3)ÿf2'ÿ|C:ÿ‘SMÿ’TMÿ„^Oÿ]`EÿOe=ÿ[oCÿP]=ÿDH.ÿ9:)ÿ7=-ÿ\qCÿt˜Oÿp™Rÿo—Nÿn™Iÿt£Oÿt¤UÿÓáÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþýÿÿýüÿþýùÿþüüÿûþúÿûþøÿþþýÿÿþñÿЪ–ÿ›TDÿ}8,ÿo@5ÿq>5ÿp>3ÿo:0ÿn6,ÿj6/ÿg7/ÿe6,ÿe7-ÿh7.ÿi6.ÿe2)ÿ_.$ÿo8/ÿ“RNÿ‰ZQÿx^Oÿ_cHÿTjDÿTi@ÿBS-ÿ6@*ÿ9;-ÿ7:/ÿK[:ÿoMÿr›Oÿp›LÿrMÿx¦Vÿt¤Wÿ™·‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿýýÿÿýýÿýþûÿüûøÿþüüÿ÷óíÿÌ´¥ÿƒT=ÿl=+ÿn:2ÿr?8ÿo?7ÿj;2ÿk71ÿk60ÿf5/ÿf6.ÿf6-ÿi6/ÿg5-ÿ_/%ÿd4*ÿ€MGÿwXLÿYRBÿIN<ÿ>K5ÿ<J0ÿ?J/ÿ8<*ÿ9;1ÿ69/ÿ9B.ÿeFÿuœOÿpNÿv£Tÿ{¦^ÿl˜RÿiTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿýûùÿöíêÿþûûÿþþþÿüúôÿ¿ª˜ÿ…]Oÿi8/ÿn>6ÿn>7ÿm;5ÿo72ÿk60ÿh7/ÿh80ÿk60ÿj9/ÿf:/ÿh=3ÿjH@ÿUF=ÿ>@1ÿ3>/ÿ/6,ÿ36.ÿ7?/ÿ?G4ÿ8=/ÿ5;0ÿ6:+ÿTe;ÿu˜PÿpžPÿv¦WÿsžYÿeŽMÿa‰KÿÓÞÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýÿþþýÿýþþÿù÷ïÿæÛÉÿ¥ŽxÿfF4ÿf?2ÿi=3ÿk<4ÿj;3ÿd;1ÿc<2ÿfA6ÿgC4ÿfF3ÿ{dSÿk[Nÿ681ÿ25,ÿ18,ÿ4:/ÿ572ÿ04.ÿ3=0ÿ9E4ÿ3;/ÿ481ÿCI1ÿe~IÿužWÿu£Zÿi”Rÿ^†HÿcŠJÿ›³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿýÿÿÿòÿãÞÆÿh[AÿXG-ÿ^H2ÿ_E5ÿ_D5ÿ]C4ÿ^F7ÿP<,ÿ[M8ÿ`N7ÿncMÿmmZÿ7>2ÿ/5,ÿ16,ÿ46*ÿ37,ÿ28/ÿ/8,ÿ5B1ÿ2A0ÿ.3/ÿ89,ÿRb9ÿtšVÿtœZÿb‰Kÿ\„FÿeŒJÿa…Iÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüúÿ¼¹ÿqkRÿVN2ÿVM4ÿSN8ÿRL6ÿ\W@ÿML5ÿEH/ÿUS8ÿ__BÿioXÿ=E6ÿ-4*ÿ07,ÿ06*ÿ05*ÿ/7+ÿ/8*ÿ/:+ÿ5B2ÿ3=0ÿ12(ÿ>H-ÿoUÿqšVÿ]€Fÿ\EÿbˆJÿ_„HÿÙáÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÞØÿ žŽÿ_]EÿMN6ÿOT;ÿS]Aÿ=G,ÿAG*ÿcdFÿdjPÿ4@,ÿ06-ÿ17-ÿ06,ÿ/4+ÿ.3,ÿ/3,ÿ.5,ÿ/7,ÿ8A1ÿ48+ÿ6;)ÿbzRÿl”WÿVxAÿZ|Dÿ`ƒJÿ^‚Iÿœ±‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÎÇÿ‰Ž}ÿEN.ÿGO/ÿHN0ÿTU7ÿccHÿBF2ÿ4:0ÿ4:0ÿ39/ÿ16,ÿ.3,ÿ-2-ÿ.3-ÿ-1,ÿ/5.ÿ4>1ÿ37)ÿO]Eÿi‹^ÿUxCÿUt@ÿ\|Iÿ^Iÿh†Zÿúûúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþýÿ¼¿²ÿˆrÿ_cDÿ][BÿVR>ÿ?B4ÿ8=4ÿ7=3ÿ6<1ÿ27/ÿ-2-ÿ-2,ÿ,1+ÿ,1+ÿ-7/ÿ1>2ÿ@M:ÿYpRÿGh<ÿNl<ÿUrAÿ_}IÿXvHÿÞãÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïìÿ±±¥ÿtq^ÿQO8ÿBC5ÿ:>4ÿ8>4ÿ8=5ÿ7;5ÿ372ÿ-2,ÿ*/)ÿ*1+ÿ*5,ÿ2=/ÿ=K6ÿBS8ÿKe=ÿKh<ÿYwGÿ[wIÿ›¨•ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÙÿœšÿRQEÿ;>4ÿ8?5ÿ9@9ÿ9>8ÿ494ÿ.3-ÿ+0+ÿ*2*ÿ+5,ÿ0:,ÿ4@,ÿ@R6ÿG_:ÿToFÿ\wOÿYiTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÉÆÿ~„|ÿ8B5ÿ9@8ÿ9?8ÿ8=8ÿ271ÿ+0*ÿ)/)ÿ,3,ÿ6?4ÿ9E3ÿ?O6ÿQfFÿ\qRÿ>O<ÿÜßÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿµ¸´ÿmrjÿ9A7ÿ9?7ÿ5;5ÿ-3.ÿ+0,ÿ-1.ÿ8?7ÿ7B1ÿ@L6ÿ[iSÿGUDÿ’™“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëêÿ£§¢ÿ]d]ÿ8A8ÿ170ÿ+/.ÿ-3/ÿ7C4ÿ4B,ÿHUAÿKWIÿEMFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÛØÿ”ŽÿELEÿ2>.ÿ6H/ÿ7J2ÿ:K3ÿAN>ÿ5@6ÿàáàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÉÃÿ‡—{ÿFa;ÿ9L5ÿ:K5ÿ6D4ÿœ¢œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿ´»´ÿq~mÿFY?ÿT_RÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëíëÿŸ¦žÿ
\ No newline at end of file +:žžÿêééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0/-ÿ31.ÿkgeÿ´²°ÿüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQPOÿ0/-ÿ51-ÿ82-ÿ:3-ÿ~ywÿÆÄÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ››œÿ,-,ÿ0/,ÿ50,ÿ81,ÿ80,ÿ80-ÿHA>ÿŒŠÿÙ×Öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààÿ./1ÿ--.ÿ0.,ÿ2-)ÿ4.*ÿ5.,ÿ81-ÿ81-ÿ80-ÿYROÿ¡œÿëêéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFIKÿ+.1ÿ.--ÿ/,)ÿ0+(ÿ0,*ÿ2,+ÿ5.,ÿ70-ÿ7.,ÿ4-*ÿ4,)ÿjdbÿ³±¯ÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”•”ÿ.//ÿ.//ÿ-.-ÿ.+)ÿ-+)ÿ,**ÿ/++ÿ1,+ÿ3,+ÿ3-*ÿ4,*ÿ6.+ÿ4-*ÿ1-'ÿ{ytÿÆÅÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÜÿ12-ÿ11-ÿ11.ÿ1/,ÿ.,+ÿ+)+ÿ*))ÿ-++ÿ/++ÿ0,+ÿ1,*ÿ3-+ÿ5.+ÿ3/*ÿ30)ÿ52+ÿHE?ÿ“‘ŒÿÛÚØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPQLÿ55/ÿ64/ÿ740ÿ51.ÿ2.+ÿ,)*ÿ**+ÿ,*+ÿ-++ÿ/++ÿ0-,ÿ2-,ÿ3.,ÿ30+ÿ41+ÿ63-ÿ960ÿA;0ÿhaWÿ¬¨¡ÿîíëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘‘Žÿ893ÿ994ÿ;83ÿ;72ÿ91.ÿ4.,ÿ.+,ÿ+*,ÿ+),ÿ*))ÿ+)*ÿ/,,ÿ0--ÿ1.+ÿ30,ÿ51-ÿ74/ÿ=7-ÿE>2ÿI@2ÿLA2ÿtiÿĹ´ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙØÿ893ÿ;<6ÿ>=7ÿ@=8ÿA:7ÿ=52ÿ50.ÿ1//ÿ,+.ÿ,(,ÿ+(*ÿ,*+ÿ.-.ÿ/-+ÿ1-,ÿ2.+ÿ41.ÿ83.ÿ>6.ÿD;/ÿH=.ÿM@0ÿYC3ÿ‚D4ÿĆ}ÿìËÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿJJFÿ782ÿ>>9ÿB?:ÿE?;ÿD>9ÿ?95ÿ:64ÿ312ÿ0)/ÿ/)-ÿ-**ÿ-,*ÿ.-+ÿ0,+ÿ.*)ÿ0,,ÿ40.ÿ:3/ÿ>5.ÿB7-ÿG<.ÿKC3ÿiE4ÿ•A0ÿµA5ÿÓUQÿñ˜šÿüÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……„ÿ441ÿ995ÿ@?:ÿFA?ÿGB=ÿFA;ÿD>8ÿ@95ÿ:21ÿ7./ÿ2--ÿ1.*ÿ0/+ÿ/-,ÿ/+)ÿ0+*ÿ1-,ÿ810ÿ<30ÿ>4/ÿC7.ÿF?3ÿOD4ÿs@.ÿš<,ÿ¼G<ÿàDGÿïAEÿö_cÿô¦§ÿúíìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÏÏÿ0/-ÿ32/ÿ:94ÿBA9ÿGE=ÿHD=ÿJC;ÿI@6ÿE<2ÿA81ÿ;40ÿ62.ÿ42-ÿ22/ÿ0//ÿ4.*ÿ6.*ÿ91-ÿ<31ÿ;21ÿ?2.ÿD71ÿJ=6ÿZ<2ÿv9+ÿ™A1ÿÆF@ÿæCDÿû<Aÿî=?ÿË@7ÿÊsgÿâ¹²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;92ÿ42-ÿ54/ÿ;<4ÿCC:ÿIH;ÿLH8ÿKD7ÿJ>2ÿG<.ÿD;2ÿ@92ÿ95/ÿ740ÿ862ÿ:4/ÿ=3,ÿ@5-ÿ?6/ÿ<3.ÿ<0.ÿ?1/ÿA73ÿI:5ÿ^70ÿ‚9.ÿ¤A4ÿËE=ÿï??ÿó=?ÿÐA:ÿ²?-ÿ°?,ÿ©@,ÿ†xÿâËÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ†ÿ>:1ÿ62,ÿ75-ÿ>>4ÿJF9ÿNK7ÿMJ;ÿOJJÿIA9ÿF=/ÿE;0ÿ>80ÿ:5/ÿ:50ÿ>81ÿB90ÿF;0ÿF;1ÿA90ÿ<3-ÿ</.ÿ>1-ÿ<81ÿE61ÿh7/ÿŽ=0ÿ¦A5ÿÌD<ÿçA?ÿËA5ÿ@,ÿ?+ÿ?,ÿ¡@+ÿ–?,ÿ›P@ÿÕŒÿëÜØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÍÊÿJE8ÿA<2ÿ73*ÿ:7/ÿH@6ÿUJ9ÿRL>ÿfgtÿqoˆÿVNRÿD:-ÿ@80ÿ=71ÿ:7.ÿ?9.ÿE<0ÿK>1ÿL?3ÿI=4ÿA80ÿ=20ÿ>1/ÿB2-ÿ>2.ÿH0*ÿp8-ÿ>4ÿ B5ÿÇE<ÿÊF<ÿ¦A.ÿ£?,ÿ¦>-ÿ ?,ÿ–?+ÿ‘>.ÿ‘=,ÿ’=+ÿ§aRÿШ¡ÿ÷îíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^VHÿNG:ÿC=3ÿ<6.ÿA:4ÿPE7ÿUG9ÿc_pÿ–›Óÿ†…¸ÿTMdÿA:=ÿ<71ÿ=71ÿ>90ÿE<1ÿM?/ÿOA2ÿN>4ÿG:2ÿA81ÿ?62ÿ@51ÿL-0ÿC+-ÿK2)ÿq;.ÿŒA1ÿ A3ÿ¶F:ÿ¡@2ÿ™?,ÿ>.ÿœ>.ÿ”>+ÿ>+ÿŽ=,ÿ=+ÿ‘<*ÿ”?/ÿ¡@3ÿÉvlÿá¼·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆ~ÿWN@ÿPH:ÿF>3ÿ@92ÿF@7ÿSF5ÿZOTÿ†ŠÁÿ¨°ûÿ¡ìÿsq—ÿGCJÿ62(ÿ:6/ÿ?<6ÿH@5ÿOA0ÿN>1ÿJ;1ÿC:0ÿ?;2ÿ@92ÿL86ÿB40ÿ=3*ÿS2)ÿs:0ÿŠ<2ÿ”>0ÿ™@2ÿ“>.ÿ”=+ÿ—<-ÿ‘=-ÿ‹=+ÿŠ=,ÿŠ<-ÿ‹;-ÿ>.ÿ˜>3ÿ¹A4ÿ·D7ÿ|B6ÿŒ|ÿÉÈÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÈÃÿ[O@ÿYN?ÿQG9ÿI?3ÿE@7ÿME4ÿTF7ÿjgƒÿš¥æÿ±¼ÿÿ©êÿ€€«ÿJGTÿ<:>ÿ=:0ÿF>/ÿN@/ÿJ?-ÿJ:0ÿD91ÿ==1ÿ?<2ÿp?>ÿ‹DGÿk>8ÿS8,ÿa6-ÿ‚;7ÿ†;5ÿ†@4ÿŽ?2ÿ=.ÿ=.ÿ<.ÿˆ;,ÿ‡:*ÿ†;,ÿ…</ÿ†>1ÿ”A1ÿ¶A5ÿÆD;ÿ’H;ÿF7.ÿ943ÿJEDÿ’ŽÿÛÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôóÿcWGÿZN>ÿYM=ÿUI:ÿOF:ÿNG8ÿSG/ÿYRWÿˆÆÿ©¯üÿ³·ÿÿ®°÷ÿ‰†ÈÿZUÿB>GÿB=)ÿHA/ÿI>.ÿB9+ÿ@60ÿ9;1ÿ=>0ÿŠDAÿâHXÿ®<:ÿ˜E;ÿšE=ÿ‘?7ÿ‘A?ÿ„B:ÿ…A6ÿˆ@0ÿ‡>-ÿ‰<.ÿ‡:-ÿƒ:+ÿ9*ÿ€:.ÿ>5ÿŒD9ÿ©E:ÿ¿HCÿžQJÿPA7ÿ:64ÿ931ÿ62/ÿ51-ÿXVSÿ¡¡ ÿíííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠsÿ[L<ÿ[M<ÿYL<ÿXK<ÿSJ<ÿUK7ÿWNHÿx|¡ÿ ¢ñÿ¨©þÿ¬°þÿ£¦óÿ…„Ìÿa\‘ÿA@Mÿ>?4ÿ:A:ÿ<BGÿ<@?ÿ73/ÿQ71ÿŽB:ÿ²;4ÿµ4+ÿ <%ÿ»@7ÿ¨?4ÿ¨A4ÿD6ÿ@5ÿ€@5ÿ</ÿ„:,ÿƒ;*ÿz<+ÿx:+ÿ{:-ÿ€@6ÿ†G?ÿšF=ÿ´PKÿªqfÿqk]ÿAA:ÿ:3/ÿ63.ÿ52.ÿ11-ÿ.0-ÿ1.-ÿlfgÿºµµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÀºÿ[K:ÿ[K;ÿYJ;ÿZK;ÿYK>ÿYL;ÿYM>ÿeapÿŠŒÀÿšœéÿ ¨ùÿ¤òÿ£¥ïÿ‰×ÿdkšÿPKYÿQEHÿd\sÿfc{ÿGSRÿ_@9ÿ–<7ÿ«;,ÿ¥8%ÿ¦=%ÿ¬<'ÿ¨9,ÿ²>3ÿ±C5ÿ¦@.ÿ«?9ÿ—><ÿ=4ÿw=.ÿx9*ÿ€<1ÿu:.ÿ€A6ÿ‡I@ÿ‘LGÿ£\Vÿ¤Œxÿ‰šÿ[fXÿ?=4ÿ63,ÿ23.ÿ/3.ÿ-2/ÿ00.ÿ5..ÿ;./ÿc??ÿ·’”ÿãØÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôóòÿ\K7ÿ[K8ÿZJ9ÿZJ:ÿ[K<ÿ]M<ÿ]O<ÿYOJÿgc{ÿƒ„µÿ’•Üÿ—¡âÿœ¡ãÿœ¨óÿ˜¢ÙÿŽl‡ÿŸM\ÿ»Tcÿ¹j‹ÿ´jÿ NSÿŸE7ÿ¨=+ÿ©?*ÿª<(ÿ¸=,ÿ±9+ÿ¨;/ÿ®A2ÿª=,ÿ»>3ÿÃ>=ÿ¦@?ÿw?6ÿ‹94ÿ´IFÿ¤SMÿ|G:ÿ†I?ÿŠQIÿŽl_ÿ‘—ÿªŒÿwŒwÿTZHÿ:<0ÿ/1*ÿ.1,ÿ-2.ÿ.3/ÿ21/ÿ2,-ÿF21ÿ€GAÿ–gyÿŒ…®ÿªªÄÿáßåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ykÿ]L8ÿ\K7ÿ\L8ÿ\K:ÿ]K<ÿ^N<ÿ\O>ÿYLGÿg`vÿ|x±ÿˆ†Ëÿ†Âÿ‚„¾ÿ¨²ÿÆgƒÿÜERÿçAGÿèEMÿÙDLÿÐDJÿÅ@7ÿ¬:%ÿ¯=*ÿ²;)ÿ¾7+ÿÊ:1ÿ·:/ÿ®;,ÿ³?0ÿ»@3ÿÍ;1ÿê79ÿÖ=<ÿº?>ÿÓ>EÿÌOMÿŠQDÿlS?ÿx[HÿpYÿz—uÿ‚®Šÿ¤„ÿfƒeÿJXCÿ57,ÿ-+(ÿ/.,ÿ.0.ÿ01.ÿ01.ÿ2.,ÿU5+ÿ†STÿ…|ªÿbgŸÿPGiÿ}{‡ÿÇÈÈÿõöõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀº³ÿ_N<ÿ^M;ÿ^M:ÿ]L:ÿ]L;ÿ^M=ÿ^O<ÿ^O;ÿ^NKÿg]ƒÿƒ{¾ÿ‰|µÿvjœÿ’UjÿÜF\ÿæ>Cÿç>?ÿå<<ÿÌ@2ÿÓB<ÿâ>=ÿÇ>2ÿ¸<,ÿ¿;-ÿË;0ÿØ:1ÿÓ:4ÿÆ80ÿÂ;0ÿÃ;/ÿÊ6+ÿÞ4+ÿó.-ÿç83ÿé66ÿ×5/ÿ¬ODÿlaFÿugLÿ’nVÿ¬j_ÿ¦‹xÿ‹¨‡ÿršwÿ]\ÿJTCÿ5.,ÿ1**ÿ2,+ÿ0-+ÿ00-ÿ/1/ÿ7-,ÿX@=ÿ€s˜ÿms¸ÿLAsÿOE_ÿqswÿŠŽ‚ÿ——ÿÚÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúùÿ]N=ÿ_O?ÿ_O=ÿ^N;ÿ_M8ÿ^M:ÿ[O>ÿ]P=ÿ`M=ÿaNVÿogŒÿš~§ÿ±t¡ÿJXÿÕ<;ÿù7>ÿéC@ÿæ@HÿÑ>@ÿÎD?ÿè?Aÿß:<ÿÇ?6ÿÉ@4ÿÔ<2ÿÛ:1ÿÝ71ÿÜ:5ÿÚ;5ÿ×;2ÿØ;3ÿÝ4+ÿå5-ÿò0*ÿæ4&ÿÚ4#ÿÅ?3ÿ–bMÿ‰eLÿÇ`Xÿò?RÿçEWÿ¾~tÿ ÿz•pÿf†eÿGVEÿ1/+ÿ.'*ÿ/)+ÿ0+,ÿ0/+ÿ1+0ÿ=56ÿvs‚ÿ…‰Éÿ[X ÿC7dÿMK\ÿz€yÿlo`ÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzocÿ]O?ÿ_QAÿ_P@ÿ_P;ÿ^N8ÿZOBÿ^USÿhXXÿfPOÿjayÿƒ©ÿÓzÿíNaÿÚ<;ÿâ@8ÿõ??ÿëBKÿÕBDÿÀA:ÿÙB@ÿß>>ÿÍ?8ÿÆC7ÿÁ8+ÿÑ5,ÿÛ4-ÿÝ81ÿâ:4ÿà92ÿà?6ÿì5+ÿó.(ÿõ.)ÿç1&ÿ×5!ÿÑ7'ÿÇL@ÿÅYNÿèVVÿõ<Eÿí9Fÿû8PÿìN^ÿ¿slÿ“’uÿk‹iÿER>ÿ-(%ÿ.&(ÿ/),ÿ1*0ÿ1*0ÿ/)(ÿclSÿ’š°ÿ|‡½ÿ^`‰ÿHH]ÿ?DKÿPXNÿXXRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²¯¨ÿTI:ÿ]P@ÿ`SCÿ`R@ÿ]O?ÿ_TQÿjgxÿxrÿqjƒÿoq–ÿ€†Èÿ²…«ÿ÷klÿøANÿÞAEÿæABÿêAGÿÇ=:ÿ°</ÿÆ@8ÿÐ73ÿÈ?4ÿÁ=/ÿ¼<-ÿÆ6,ÿÚ40ÿÝ:/ÿÝ7,ÿ×3(ÿÕ9*ÿå?1ÿø1-ÿú,)ÿë2)ÿÓ7!ÿÔ6$ÿÒ;/ÿÕF@ÿíEHÿç@DÿÉ>9ÿçCHÿý0Gÿö>UÿåWgÿÅppÿ’k`ÿPE5ÿ3*$ÿ)*'ÿ)+-ÿ**/ÿ,((ÿHM4ÿ„‘xÿ¥›ÿ˜µ«ÿ|ÿm€|ÿp€wÿ_g[ÿÄÅÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèçÿFD9ÿQI=ÿ_RAÿaTAÿbWPÿiapÿwwšÿz|²ÿtv´ÿu{ºÿƒŠÎÿ—‹Ñÿ½xŒÿîX\ÿòAQÿä>Eÿá@AÿÈ?8ÿ«:*ÿ¾?3ÿØ<7ÿÌB7ÿ½:(ÿ¾:&ÿÄ:)ÿÙ90ÿá70ÿà6+ÿÔ4"ÿÉ5"ÿÌ9&ÿæ;2ÿû13ÿì0-ÿÕ3&ÿÍ8$ÿÑ6(ÿØB<ÿÜIEÿÖ@:ÿ½<0ÿº@4ÿä@Bÿû6Hÿÿ3Tÿø>aÿçRmÿ×Ylÿ¢ITÿX65ÿ*.%ÿ1)+ÿ.'*ÿ41*ÿkuUÿ‹£tÿ™½‹ÿ¢Ç¢ÿ‘·˜ÿ‘¯”ÿ{zÿŒ‘‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTWNÿ=<5ÿVI<ÿ`UDÿibcÿupŽÿvz¬ÿls´ÿdl¶ÿzzÔÿžÒÿ±®¿ÿ½¨§ÿÏpÿñUVÿñ>FÿÝ:;ÿÄ>3ÿ«;*ÿ·<.ÿÛ<8ÿßB=ÿÄ=-ÿÂ:'ÿÆ9&ÿ×7(ÿç4.ÿê20ÿÚ6,ÿÅ8'ÿÄ8)ÿÏ6*ÿç51ÿí23ÿÛ3/ÿÖ7-ÿÐ:*ÿÔ;0ÿÝPHÿº>2ÿ·;'ÿ±:*ÿÀ@5ÿëBEÿûANÿÿ<Vÿÿ<fÿÿ;oÿñGoÿËJaÿv;=ÿB-(ÿB-)ÿNE6ÿbiNÿzgÿ£oÿ¶ÿŽ¶…ÿ‹±‡ÿƒ¡ÿ]jOÿö÷õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš˜ÿ-2+ÿA<6ÿSJ<ÿgchÿso“ÿmk¥ÿbf«ÿjq½ÿ‡Ôÿ±±àÿàÞ½ÿîç¥ÿÔ¿’ÿ¹kSÿÞGEÿç;=ÿÊ?3ÿ®<,ÿ·?2ÿÓ83ÿã:4ÿßK>ÿËB3ÿÈ7(ÿ×5(ÿê7-ÿñ2/ÿþ,3ÿæ2/ÿÏ73ÿØ;6ÿÖ8-ÿÝ8,ÿæ42ÿç24ÿì51ÿÜ9,ÿÝD;ÿØFCÿ½<*ÿº:(ÿÅ@7ÿØGEÿïFJÿúCQÿþ@`ÿü?nÿýCtÿýIpÿùZvÿ’ILÿJ:-ÿTM3ÿimLÿjWÿn‘^ÿwžiÿ}¤oÿ€§xÿ}œxÿ`rXÿÈÌÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿááßÿ-1'ÿ/1-ÿ><8ÿVUZÿee†ÿTS‹ÿ\^¤ÿssÆÿŽÞÿ§©àÿÇÇÜÿÞÚÆÿÜÖµÿµ²’ÿ®m\ÿåQQÿá87ÿÂ:/ÿ¸B8ÿÄB:ÿÒ7-ÿÜ:)ÿâK>ÿÍ:-ÿØ5-ÿé5/ÿé3,ÿì-%ÿö++ÿõ+7ÿ÷*;ÿå1.ÿÇ8$ÿÏ5&ÿß10ÿó+0ÿä3*ÿÖ>0ÿáMJÿÑA;ÿÂ:)ÿÄ=/ÿÐICÿÕGGÿïFKÿýI\ÿþEhÿþHwÿüJuÿüTuÿæXsÿ€FDÿNH4ÿxuZÿz‰fÿm‰[ÿn“`ÿm˜hÿužsÿyšwÿhdÿ†€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZYNÿ45.ÿ34-ÿBE>ÿVXkÿ[[’ÿeg³ÿy{ÑÿˆˆÜÿ”“ÖÿšÔÿ©¤Óÿµ¬Åÿ˜–ÿvnÿºkfÿöWZÿß77ÿÃ;4ÿÁRGÿÉJ>ÿÖ7*ÿã90ÿÙ@3ÿÖ:/ÿì67ÿó17ÿö/:ÿö+4ÿö'5ÿý6ÿó&3ÿ×3,ÿÐ8)ÿÚ7.ÿÓ7-ÿÒ6)ÿÌ7&ÿØJ>ÿÙFFÿÑ@8ÿÁ9,ÿÅD7ÿÈH?ÿÚJFÿñOVÿ÷G`ÿþJqÿþN{ÿþPxÿüRsÿà[rÿ’fbÿ¢—‹ÿ¥©¢ÿ‹šÿƒ–zÿ}–tÿœÿz˜{ÿj‰gÿ]hTÿ÷÷öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥¡šÿIE8ÿ??4ÿ?C.ÿMNIÿ\Zvÿqp²ÿ…†äÿ„…áÿ†‡Òÿ‡…ÎÿŒ†Òÿ•ŒÊÿ‹€¯ÿngqÿ}b]ÿÈsoÿñZYÿâ=;ÿ½<3ÿÁSEÿÌ@5ÿÞ2+ÿâ;1ÿÞ>0ÿë44ÿù6@ÿü"/ÿü$2ÿó)<ÿõ,Mÿ÷2Kÿð>Hÿè49ÿï66ÿå=4ÿÍ?0ÿÆ9'ÿÓ>0ÿßBAÿâLKÿÈ:0ÿÀ<+ÿ¾@/ÿÃB5ÿØMIÿëS[ÿúRkÿüRvÿ÷XzÿüRpÿñVnÿ¿ptÿ¶›’ÿáÛßÿÕÎÞÿÁ½Äÿ¾¼µÿ¼¾´ÿ¡¬¡ÿsŠqÿYjPÿÐÓÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæåãÿ\SDÿXO@ÿPL9ÿON:ÿSS@ÿig{ÿŠÙÿŒîÿ‚‚Ðÿƒ„Íÿ‡‚ÖÿŒ„Ëÿ‡‚®ÿz_pÿdWOÿŒUJÿ×f`ÿö\Yÿâ?9ÿÄE9ÿÐTEÿÒ1(ÿå94ÿâ;/ÿé3+ÿ÷9=ÿøCIÿñ-1ÿð%+ÿï(<ÿø>ZÿûXiÿõGYÿð2>ÿñ-0ÿÝ94ÿÏ;1ÿÏ5+ÿã97ÿèDCÿâLEÿÊ=.ÿ¼;(ÿ¹<+ÿÀC8ÿÒPNÿð\gÿüVpÿüSuÿþVrÿûUhÿùbpÿÄhiÿòÙÓÿúõüÿ÷éúÿûïùÿñèèÿÞÕÛÿ©¬©ÿbu]ÿ“›‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýüÿyqdÿe[LÿaXHÿ]UDÿ^TCÿa[Oÿxs’ÿŠÑÿ‚~Áÿƒ‚ÂÿŒŠÍÿŒƒÃÿ„} ÿzdlÿc[NÿnWEÿÆYVÿîurÿùrnÿÙIAÿÅ>0ÿÎ<-ÿã@<ÿâA8ÿâ1&ÿí/+ÿð@BÿíEIÿå65ÿà01ÿê=Jÿ÷[fÿïLSÿÖ7<ÿÄ3-ÿÊ;/ÿàFCÿÜ97ÿß85ÿß1.ÿÖ7-ÿÐ<0ÿÁ<-ÿ³;+ÿ±<.ÿ¹?2ÿâ\XÿûdpÿüSoÿú]uÿû^nÿýYgÿÙOXÿØž™ÿÿþþÿþúÿÿÿûÿÿþüûÿúñõÿÜÔÚÿ†‘„ÿlycÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«¦žÿi`Qÿh_Oÿf]Nÿe[Mÿe\Hÿg^Uÿtizÿzq’ÿupšÿ€|«ÿ„z ÿ|q…ÿmb^ÿe\Kÿb_Eÿ¡XNÿßaeÿï|ÿòmfÿÇ8,ÿÃ8'ÿÕ?5ÿáGDÿá:3ÿæ0*ÿÛ3*ÿÚAAÿëNTÿêPTÿáEIÿÛ>Cÿß=?ÿË72ÿ£7&ÿ™2ÿÈD;ÿÝLHÿÕ=7ÿÒ7+ÿÈ7'ÿÉ8,ÿÐI=ÿµ</ÿ«:,ÿ;,ÿÊNAÿîieÿöhpÿôesÿðouÿógsÿØgkÿ¨gcÿáÇÄÿüúúÿýýþÿþû÷ÿÿûûÿúóöÿÆÄÁÿ‹“…ÿÞáÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâàÝÿi`Qÿi`Qÿi`Qÿh_Pÿi`Pÿi`Kÿh_Pÿmb^ÿg^`ÿ`\dÿkdlÿoa\ÿl\Nÿc\Hÿg]Hÿz[GÿÁXUÿðgiÿðleÿËA4ÿ½:$ÿÉ;*ÿÓ9/ÿÖ90ÿà70ÿÔ8-ÿÆ9-ÿâMLÿôVaÿóZbÿâDHÿè5<ÿÝ69ÿÓIEÿ¿FAÿº@:ÿÄ:7ÿÕD?ÿÇ9+ÿ·9%ÿµ9(ÿÒJ@ÿÈ?5ÿ¹8-ÿ«9+ÿ±>/ÿØ\Sÿìfhÿïdmÿðpqÿùouÿëyÿ„raÿŽ~uÿóåæÿûÿÿÿýûùÿÿúøÿþðôÿæÛÚÿÉÈ¿ÿÑÔÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿofXÿi`Qÿi`QÿjaRÿjaTÿjaVÿi`Qÿh_Lÿf]Iÿ^XIÿUREÿ_VEÿj\Hÿj^Kÿj^Mÿw^KÿšUDÿèPPÿçIEÿÒ=0ÿÆ:&ÿÊ:)ÿÕ6+ÿÎ:+ÿÖ8-ÿÖ9.ÿÃ<*ÿÃ=1ÿÑ>@ÿñYcÿù_fÿô08ÿñ0=ÿ÷VbÿódmÿÜRTÿáRQÿÛIEÿÌ=3ÿÄ8*ÿ°9)ÿ¿>4ÿÖ@:ÿØ82ÿÓ92ÿ»9,ÿ¿G>ÿðqtÿôlvÿ÷krÿüioÿýj{ÿ˜ŽzÿQ\BÿÝÈÆÿþýÿÿýýýÿÿûøÿüóòÿèÛÙÿïæÚÿèêâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦ —ÿi`Qÿi`QÿlcTÿkaSÿl`Zÿk`[ÿjaRÿibKÿg`IÿYTBÿMI8ÿZTAÿf_Jÿw_OÿŽYMÿ¢M>ÿÑ;3ÿä52ÿÝ2*ÿ×7&ÿÒ8(ÿÖ4)ÿÌ9*ÿÈ8)ÿÕ:-ÿÇ:*ÿÃ>0ÿÅ;5ÿÕFHÿêW]ÿç?Aÿò2;ÿöERÿûbkÿ÷[cÿáGDÿÛ?<ÿ×C<ÿÙ=7ÿÔ64ÿÌ93ÿÝF>ÿæ40ÿö11ÿä5/ÿÀ8-ÿÞb`ÿúyÿûu}ÿýmvÿüWiÿºmkÿ_sPÿ¿µ¥ÿüùøÿÿþÿÿýþýÿþÿøÿóíèÿïçÙÿø÷èÿþþüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÙÕÿiaQÿkbSÿkaSÿjaRÿlbVÿlbVÿlcRÿkbTÿkaTÿg_LÿSP<ÿHI7ÿQSAÿd_Pÿš\Sÿ·G?ÿ½7,ÿÚ3,ÿâ4+ÿÙ7%ÿÑ9&ÿÜ5+ÿÈ7)ÿÁ<*ÿÎA2ÿÐ=/ÿÇ:,ÿÇ:/ÿÉ<4ÿÕLFÿÔE;ÿâ:5ÿî>EÿíDIÿõINÿß73ÿá75ÿÜ@9ÿÝ?8ÿì37ÿö5>ÿé><ÿâ3.ÿû.1ÿ÷/0ÿÜ5,ÿÊF=ÿðuvÿý}…ÿþsÿþSgÿêReÿŠ˜rÿª…ÿõðçÿÿÿÿÿ÷þúÿïÿñÿüýöÿôñâÿúùâÿüýôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsm^ÿibRÿjcSÿibRÿjbSÿkbSÿkcQÿldPÿlbVÿlbSÿf^KÿNN=ÿ@F7ÿBI<ÿkSFÿÂLJÿÏ5/ÿÆ9+ÿÜ8.ÿÛ7+ÿÐ:'ÿÕ:+ÿÁ:*ÿ»;)ÿÉ=.ÿÕA5ÿÉ9*ÿÈ9)ÿË8,ÿÏ>3ÿÊ<1ÿÕ3'ÿï-3ÿô-<ÿõ09ÿò53ÿë52ÿß81ÿ×91ÿç64ÿù1<ÿô7;ÿá5/ÿì2.ÿ÷/1ÿï1-ÿÉ6(ÿÖ^Yÿþ…Šÿüt€ÿýXmÿúB]ÿ—€cÿ}—eÿÆÊ«ÿÛçÒÿ×éÖÿÒñÖÿäôÞÿûûíÿþùãÿýûìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸœ‘ÿibRÿkcSÿibRÿibRÿjbSÿkbSÿlcSÿlcTÿnbTÿmcTÿb]LÿII:ÿ:C4ÿAF3ÿŠRCÿÞHFÿÇ=/ÿÌ:*ÿÚ8+ÿÕ8*ÿÔ9*ÿÅ;+ÿ´8'ÿÑ<2ÿßE<ÿÁ9*ÿÅ:(ÿË8(ÿÒ9+ÿÖ;/ÿÜ5.ÿö06ÿý*<ÿü'>ÿÿ 9ÿ÷+5ÿè61ÿß:1ÿä95ÿç::ÿë66ÿÞ5.ÿä4,ÿõ00ÿö//ÿ×3'ÿÃI>ÿú‰Šÿÿx†ÿýYqÿøC\ÿ©VLÿf|Kÿx…Zÿƒšrÿ‘±‰ÿ”¹ÿ¬Ð¤ÿßéÎÿùïÞÿøðáÿþýûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÕÐÿhcSÿhcSÿhcSÿibRÿjbSÿkbSÿkbSÿlcTÿmbSÿpaTÿi`Sÿ\VFÿEA1ÿ8B*ÿiK7ÿ·ZLÿßKFÿÊ:,ÿÐ8(ÿÓ9*ÿÕ8*ÿÐ:+ÿ³:)ÿ³7'ÿÔ?6ÿÃ=/ÿº:)ÿÇ9*ÿÑ5*ÿÚ5,ÿç96ÿô4=ÿö.=ÿõ,<ÿþ%:ÿþ&8ÿï28ÿß;5ÿä95ÿê77ÿé65ÿÜ5-ÿâ6*ÿó0.ÿù/2ÿé1,ÿÄ<0ÿätrÿþz†ÿÿTpÿü?aÿÁENÿVh<ÿr†XÿxŽbÿn“`ÿvžfÿŠ·{ÿ¦Å•ÿØÙÂÿïàÕÿõïêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøø÷ÿro`ÿgdRÿgdRÿhcSÿicSÿkcSÿlcTÿlcTÿlbSÿk_Sÿj`Vÿpk^ÿb\HÿEF-ÿzJ<ÿ¿AAÿàRRÿèKJÿÍ:-ÿÎ:+ÿÑ:)ÿÒ:)ÿ¼<-ÿ™6ÿ·=,ÿÐ?3ÿÑD8ÿÎ=3ÿÕ<4ÿà:4ÿé:7ÿï7;ÿî2=ÿì9?ÿð47ÿ÷09ÿï4;ÿÜ:6ÿà;5ÿë65ÿë44ÿá5/ÿÞ7*ÿì2+ÿ÷03ÿö0/ÿÓ8-ÿÈOKÿüz†ÿüSoÿþ?eÿº@OÿW\9ÿq•\ÿƒ¡mÿ€¦oÿƒ«oÿ†¯pÿŠ·vÿ™²„ÿÐƶÿÞÏÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™—ÿheWÿheUÿgdSÿgdRÿjcSÿlcUÿmdUÿlbRÿf^Tÿ{voÿš™”ÿ¨¤œÿ…‚qÿcR>ÿ‘G@ÿ½HHÿìcfÿÛKEÿÍ>4ÿÐ=2ÿÒ</ÿÇ<0ÿ7#ÿœ:"ÿ½7)ÿÓ:1ÿà:9ÿá<;ÿè::ÿé98ÿè96ÿð@CÿìMOÿîRMÿì<;ÿæ76ÿÞ75ÿß:6ÿê65ÿï47ÿâ5/ÿÛ7(ÿâ7'ÿî4.ÿô11ÿà5-ÿÀ:4ÿüw‚ÿýSpÿü?cÿ¼?Pÿ^Q:ÿg†Qÿ{ eÿ~¦kÿ|¥fÿ‚§jÿƒ²nÿ…²qÿ¨±ÿö¯ÿ÷ôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÏÊÿheVÿheVÿheWÿheWÿidUÿlcVÿmdUÿlcSÿlf[ÿ‘’ÿÑÓÓÿö÷ùÿßÝÙÿ‘‹}ÿ=>,ÿi?5ÿ£HEÿËMLÿÐE@ÿÓE?ÿ×E>ÿÖB;ÿÄ?8ÿ¨=,ÿ¶<,ÿÒ:2ÿé:=ÿæ8<ÿí7;ÿë79ÿÖ;5ÿÍ>5ÿÙLFÿÒGBÿÞ=9ÿà83ÿß85ÿá88ÿé89ÿò69ÿç63ÿÖ7*ÿÚ8&ÿã6'ÿî5,ÿæ4*ÿ×>8ÿí^fÿþNmÿÿ<dÿÀHYÿKC.ÿYnHÿw˜`ÿvž`ÿvž_ÿ{¡dÿ~¨iÿ°gÿ‘±yÿ¶¹¤ÿãààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷öÿheVÿheVÿheVÿheVÿheVÿjdYÿmeWÿkeRÿibVÿz}}ÿÐÖÙÿÿÿÿÿÿÿÿÿøéáÿž}ÿBH2ÿ<=.ÿ^@5ÿ¤E@ÿÍB=ÿÐD=ÿÚGDÿäGKÿÐHBÿÎF<ÿßGAÿäDBÿÖ?=ÿÊ85ÿÕ78ÿÏ62ÿ±9(ÿ³:*ÿÈ;1ÿÝ:8ÿâ85ÿã84ÿæ78ÿé8<ÿî7;ÿë78ÿØ8/ÿÐ9)ÿÕ8&ÿ×9&ÿÛ9&ÿÛ=5ÿñU`ÿþJjÿü=fÿ±IUÿND2ÿBJ0ÿl…Wÿv™\ÿp˜Wÿv]ÿz£bÿ{©^ÿ†±jÿ˜³†ÿ¬¶¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’…ÿheVÿheVÿifWÿhfVÿieWÿmdYÿjfSÿmldÿŒ‘•ÿÀÊÏÿñüüÿüÿûÿþþôÿíðÕÿŒ“sÿAJ3ÿ<91ÿQ;3ÿ©EDÿÓA@ÿÖC@ÿÝAEÿàFGÿæHGÿìBCÿãEBÿÂB;ÿ¡?1ÿ£>3ÿ¤:/ÿ¢;*ÿ¥<(ÿ¸:*ÿÜ<5ÿì79ÿç78ÿç76ÿë8;ÿì6=ÿì6:ÿ×;4ÿÃ9)ÿÆ;)ÿÇ<$ÿÈ<$ÿ×?5ÿúUfÿÿAfÿó<cÿ¦?KÿQE5ÿIF2ÿS`=ÿmŠQÿh’Lÿp˜TÿwŸ\ÿy¥Zÿ¬_ÿ‡«pÿ|“uÿíðíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÂÿfdTÿhfVÿifWÿifWÿjeVÿlc[ÿlfWÿprcÿ¢¨ªÿÝâçÿúûûÿýÿûÿúüïÿùüìÿàäÇÿ‚†eÿB@.ÿ882ÿYCAÿÇjjÿÖJGÿÝDBÿßCDÿàDDÿäB@ÿäB?ÿÎ@=ÿž>0ÿŠC2ÿ€B0ÿ†>,ÿ–>+ÿ£=(ÿÀ:-ÿå96ÿð67ÿè85ÿå:4ÿè88ÿê8;ÿÚ>8ÿ½;,ÿ´<)ÿ¸<)ÿ¸:$ÿÒA9ÿõH\ÿÿ;fÿôAgÿ6Cÿ34'ÿ=>-ÿBG*ÿ\qBÿfŒGÿi’Lÿq™XÿtžUÿsŸSÿ{¢^ÿv‘cÿ½Ç¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`gRÿefUÿhfWÿifWÿjeVÿmd[ÿmgZÿhjTÿ‰‡ÿÝäéÿÿÿÿÿþþüÿ÷ùñÿøúòÿüüëÿÓ̱ÿcaLÿKKAÿ~xvÿɳ®ÿÝŠÿÜ<=ÿàACÿÝDDÿÚFBÿÛD>ÿÕB=ÿ¬<3ÿŠ?1ÿ…<1ÿ€;1ÿ„;.ÿŠ<,ÿ:*ÿ¾:0ÿæ<6ÿë<6ÿä=4ÿá=9ÿá<<ÿÙ=;ÿ»=1ÿ§;)ÿ¥;(ÿ¢7$ÿÀ=6ÿþL_ÿù=bÿÊ?Yÿk;@ÿ/0,ÿ/4ÿRP-ÿn|Rÿc|JÿbŠDÿj’Oÿk’PÿfJÿaˆEÿVr=ÿx‹iÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÉÁÿŒ“ƒÿgkWÿigXÿjfWÿldYÿmf[ÿhkUÿkvlÿºÅËÿþÿÿÿþþüÿôõíÿæêÝÿòõãÿááÄÿeÿ^gWÿ¨§ ÿêáÞÿùïéÿç¤ ÿÓMMÿ×ABÿÝBBÿÖD?ÿÔE=ÿÈA:ÿ–<0ÿ€<1ÿ„:3ÿ‚;1ÿ~;1ÿ‚;.ÿ’9+ÿ°;/ÿÑ=3ÿÜB7ÿÓA9ÿÊ=:ÿÃ?8ÿ:-ÿœ;)ÿ”:&ÿ7%ÿ³F>ÿòRaÿæG]ÿ®KTÿL=2ÿ41,ÿ@?,ÿpzJÿ¡µ€ÿwcÿ_…AÿgŽHÿkLÿd‹Hÿ\EÿVr@ÿPh;ÿúûúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòóñÿ¼¼´ÿˆƒxÿlgYÿlf[ÿiiWÿeq_ÿ˜§¨ÿéîñÿþÿýÿúûòÿèíÛÿèîÔÿääÊÿ¹¸ ÿ”˜‰ÿ»Áºÿõòðÿÿýüÿÿÿþÿè¹²ÿÊYRÿÑ@?ÿÖA?ÿÑD<ÿÙB:ÿ²?5ÿ„=-ÿ<0ÿ†:/ÿ‚;.ÿ~;.ÿ{;,ÿ:+ÿž:.ÿ´=/ÿµ;/ÿ«90ÿ8,ÿ–8)ÿ:(ÿŒ:'ÿ„7$ÿ›C9ÿÉVYÿÂSWÿ‘[PÿB?+ÿ9>&ÿWK5ÿ‡›eÿªÊŠÿ¯xÿc‡Gÿk‘Iÿo”PÿiHÿd†JÿaHÿ_xEÿ¿É¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåäâÿ¯§ÿwviÿemZÿ‚’ÿØáæÿþÿþÿÿÿöÿóøåÿåëÎÿæäËÿÚÒÄÿÖÎÈÿáàÝÿ÷÷öÿÿÿýÿýÿþÿýúöÿáºÿ±J>ÿÆ<8ÿÓ@>ÿØA<ÿÇB:ÿ”<.ÿ€=-ÿƒ:,ÿ„:+ÿ€:,ÿ~:-ÿ|:.ÿ€9.ÿ‹8-ÿ™8)ÿ“8*ÿ‹9,ÿ†;*ÿƒ;)ÿ;(ÿ|6#ÿ‚<-ÿ¨SKÿ UOÿ^Pÿhd?ÿ\l;ÿoVÿ£iÿš¼~ÿƒpÿWu@ÿgŒDÿp–PÿkJÿi‹Lÿe„JÿeHÿŠ sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖØÓÿ¬µ²ÿÈÒÙÿøüûÿýþöÿúüëÿäéÎÿØØ¿ÿäÛÔÿôèêÿÿúÿÿýýýÿÿÿþÿÿÿýÿþþýÿÿÿÿÿí×ÑÿÀ`WÿÈA;ÿÏB=ÿÍC=ÿ©?6ÿ†</ÿ€<,ÿ:+ÿ9,ÿ~:-ÿ~:/ÿ|:0ÿ{80ÿ€9-ÿƒ:,ÿ<,ÿ€9+ÿ}8*ÿx:+ÿv7'ÿƒ=.ÿ“NBÿ“WKÿ]SÿqZÿ—`ÿ†¢cÿpˆSÿrWÿUbEÿEU3ÿa?ÿk“IÿgHÿf‰IÿfˆLÿf†Hÿg‰Gÿõ÷óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýýÿùûôÿïïÝÿááËÿÌÉ´ÿØÐËÿ÷ïóÿÿûþÿÿÿýÿÿÿýÿþþüÿþþüÿþþýÿþüüÿäžÿ»\OÿÃ?6ÿÊE<ÿ®?9ÿŒ<2ÿ€=/ÿ;-ÿ}9.ÿ}9/ÿ}:0ÿ}:0ÿz90ÿy8/ÿy9/ÿx9/ÿy8-ÿx4)ÿy6,ÿr5)ÿ}</ÿK>ÿ’TIÿ–XRÿŽ^RÿrzUÿL\=ÿ9H,ÿ@F4ÿ79-ÿ9@.ÿ[n>ÿjFÿcŒFÿg‰FÿjNÿgŒKÿiŽIÿËØ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþüÿðîåÿÓ̽ÿËÁ¹ÿðèíÿÿÿþÿþÿüÿþþüÿþþüÿþþüÿþþüÿÿýûÿûÿýÿèÝÒÿ¹n]ÿ¼C5ÿ¯E6ÿA6ÿ>4ÿ~<0ÿ}:.ÿ|9/ÿ|;1ÿ{;2ÿw:3ÿt8/ÿt8.ÿu9/ÿt9.ÿr6,ÿp5*ÿn3(ÿu<1ÿ†P@ÿRGÿšTPÿ–^Xÿi_Dÿ2=)ÿ08/ÿ;>6ÿ76/ÿ8:/ÿJX9ÿjŠHÿh‘HÿjKÿlOÿk’Oÿh’Hÿ˜¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõóòÿóîñÿþúÿÿýþýÿþþüÿþþüÿþþüÿþþüÿûÿýÿüþÿÿûþÿÿðäÞÿÇlÿ¹>6ÿ¡=9ÿ…?8ÿ‚<3ÿ~:1ÿ{9/ÿ|90ÿz:3ÿt;2ÿn9/ÿm7-ÿo8-ÿp8,ÿo6-ÿm3*ÿk3(ÿp9.ÿ‚MDÿSJÿ™QMÿŽ\TÿofMÿZjAÿGT<ÿLRBÿA@/ÿ9:.ÿ<F1ÿi…Kÿr˜Nÿl”Pÿl“Mÿn—Mÿn™Nÿz¦\ÿöùôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþþþÿþþþÿÿþüÿþþüÿþþýÿýþþÿþúþÿÿüýÿðãÕÿ¹u^ÿŸ=1ÿŽ:5ÿxA=ÿu>7ÿw:1ÿv7.ÿv80ÿs8/ÿj8/ÿi8.ÿh7-ÿj8-ÿl7/ÿk4,ÿh3)ÿg3'ÿ}D;ÿ’SNÿ’UNÿ„^Oÿ^`EÿPf>ÿ[oDÿP^>ÿEI/ÿ9:)ÿ8>.ÿ\rDÿt˜Pÿp™Rÿo—Nÿn™Iÿt¤Pÿu¤UÿÓâËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþüÿÿýùÿþýýÿûÿúÿûÿøÿþÿýÿÿþòÿÑ«–ÿ›UEÿ~9-ÿpA6ÿq?6ÿq>4ÿp;1ÿo6-ÿk7/ÿh7/ÿf7,ÿf7-ÿh7.ÿj6.ÿf3*ÿ`.$ÿp8/ÿ“SNÿ‰[Rÿy^Oÿ_cIÿUkEÿTi@ÿBT.ÿ6@*ÿ:;.ÿ8;/ÿK\:ÿp‘NÿsœPÿpœLÿsžNÿx¦Vÿu¤Wÿš¸‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþþÿÿýýÿýþûÿýüøÿþýýÿøóíÿ͵¦ÿ„U=ÿl=+ÿo;3ÿs?9ÿp?7ÿj<3ÿl81ÿk61ÿg5/ÿf6.ÿg7.ÿi60ÿg5-ÿ_0&ÿe5+ÿMGÿwXLÿYSCÿIO<ÿ?L5ÿ<K0ÿ?K0ÿ8=+ÿ:<1ÿ7:0ÿ:C.ÿf‚GÿuPÿqžNÿv£Tÿ{¦^ÿm˜Rÿi‘Uÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýûùÿ÷îêÿþûüÿÿÿþÿüûôÿÀª˜ÿ†^Oÿj8/ÿo?6ÿn?7ÿn<5ÿp73ÿl60ÿh70ÿh81ÿk71ÿk9/ÿg:0ÿi=4ÿkIAÿVF=ÿ>@1ÿ4>/ÿ06-ÿ37.ÿ8?/ÿ@G4ÿ8>0ÿ6;1ÿ7:,ÿTe;ÿu™PÿpžQÿv¦WÿtžYÿfNÿa‰KÿÔßÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþÿþÿýÿÿÿú÷ðÿçÜÊÿ¥ŽyÿfF4ÿg@3ÿi>3ÿk<5ÿj;3ÿe<1ÿc<2ÿgB6ÿgC4ÿfF4ÿ{eTÿl\Oÿ782ÿ36,ÿ19,ÿ4;0ÿ573ÿ05.ÿ4=0ÿ9F4ÿ3<0ÿ592ÿCJ2ÿfIÿuŸXÿv£Zÿi”Rÿ^†Iÿd‹Kÿ›³ŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿóÿãßÆÿi\BÿXG.ÿ_I3ÿ`F6ÿ_D6ÿ]D4ÿ_G7ÿQ=,ÿ[M9ÿ`O7ÿodMÿnmZÿ8>3ÿ06-ÿ27-ÿ46+ÿ38,ÿ280ÿ/9-ÿ5C2ÿ3A0ÿ.4/ÿ8:-ÿRc9ÿušWÿtZÿbŠLÿ]…GÿeJÿb†Jÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýúÿ½ºÿqkSÿVN2ÿWN5ÿTO9ÿSL7ÿ\WAÿNL6ÿFI/ÿVT8ÿ``CÿjpYÿ=F6ÿ-4*ÿ07-ÿ16+ÿ16+ÿ/7,ÿ09*ÿ0;,ÿ6C2ÿ4=0ÿ12)ÿ>H.ÿoUÿqšWÿ^Gÿ\Eÿb‰Jÿ_…IÿÙâÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÞÙÿ žÿ_]FÿMO6ÿOT;ÿS]Aÿ>G,ÿAG*ÿceGÿejPÿ4@,ÿ16.ÿ17-ÿ17-ÿ05,ÿ/3-ÿ/3-ÿ/5-ÿ07-ÿ8A2ÿ49+ÿ6<*ÿbzRÿm”XÿWxAÿZ}Dÿ`ƒJÿ_ƒJÿœ²’ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÎÇÿŠŽ}ÿEN.ÿGO/ÿHO0ÿUV8ÿdcIÿBF3ÿ5;1ÿ4:1ÿ39/ÿ17-ÿ.3,ÿ-2-ÿ.3-ÿ.1,ÿ/6.ÿ5>1ÿ38*ÿO^Eÿj‹_ÿVxCÿUtAÿ]}Iÿ_‚Iÿi‡Zÿûüúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ½¿³ÿˆŽsÿ`cDÿ]\BÿWS>ÿ?B4ÿ8>4ÿ7>4ÿ6<1ÿ28/ÿ.3-ÿ.3-ÿ,1+ÿ,2,ÿ.8/ÿ1>2ÿ@M;ÿYpRÿHi=ÿNm=ÿUrBÿ_~JÿXvHÿÞäÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððíÿ±±¦ÿtr^ÿQO8ÿCC5ÿ:>5ÿ8>4ÿ8>5ÿ7;6ÿ382ÿ.3-ÿ*/)ÿ+2,ÿ+5-ÿ2>/ÿ>K6ÿBT8ÿKf>ÿLh<ÿYwGÿ[xJÿœ¨–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÞÚÿšÿSRFÿ;?5ÿ9@6ÿ:@9ÿ9>8ÿ5:4ÿ/4.ÿ,1+ÿ+2+ÿ+5,ÿ0:,ÿ4@-ÿ@R7ÿG_;ÿUoGÿ\xOÿZjUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÉÆÿ„}ÿ8C5ÿ:A8ÿ:?8ÿ9>8ÿ372ÿ+1+ÿ*/*ÿ-3,ÿ6?4ÿ:E3ÿ@P7ÿRfFÿ\rRÿ>P=ÿÝàÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿµ¸´ÿmskÿ:B7ÿ:@8ÿ6;6ÿ.3/ÿ,0,ÿ.1.ÿ9@7ÿ7B1ÿAM7ÿ[jSÿHVEÿ“™”ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëìëÿ¤¨¢ÿ]e]ÿ9B8ÿ270ÿ+//ÿ.40ÿ8D5ÿ5B-ÿHVAÿKWIÿEMGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÛÙÿ‘•ÿELFÿ2>.ÿ6H/ÿ7K2ÿ:K4ÿAN>ÿ6@7ÿàâàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÊÄÿˆ˜|ÿGb<ÿ:L6ÿ;L5ÿ7E5ÿ¢œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýüÿµ¼´ÿqmÿFZ@ÿU`Sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìîëÿ ¦žÿÿÿÿÿ
\ No newline at end of file diff --git a/PerlMagick/t/reference/wmf/clock.miff b/PerlMagick/t/reference/wmf/clock.miff Binary files differindex 8c944c670..5087879f6 100644 --- a/PerlMagick/t/reference/wmf/clock.miff +++ b/PerlMagick/t/reference/wmf/clock.miff diff --git a/PerlMagick/t/reference/wmf/wizard.miff b/PerlMagick/t/reference/wmf/wizard.miff Binary files differindex a34c80d54..295e3939c 100644 --- a/PerlMagick/t/reference/wmf/wizard.miff +++ b/PerlMagick/t/reference/wmf/wizard.miff diff --git a/coders/art.c b/coders/art.c index 44aa3f237..4df65f40e 100644 --- a/coders/art.c +++ b/coders/art.c @@ -144,7 +144,7 @@ static Image *ReadARTImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Initialize image colormap. */ - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { @@ -331,7 +331,7 @@ static MagickBooleanType WriteARTImage(const ImageInfo *image_info,Image *image, /* Convert image to a bi-level image. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); quantum_info=AcquireQuantumInfo(image_info,image); for (y=0; y < (ssize_t) image->rows; y++) { diff --git a/coders/bmp.c b/coders/bmp.c index 81e2a9fca..feca87928 100644 --- a/coders/bmp.c +++ b/coders/bmp.c @@ -855,7 +855,7 @@ static Image *ReadBMPImage(const ImageInfo *image_info,ExceptionInfo *exception) if (image->debug != MagickFalse) (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Reading colormap of %.20g colors",(double) image->colors); - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); bmp_colormap=(unsigned char *) AcquireQuantumMemory((size_t) image->colors,4*sizeof(*bmp_colormap)); diff --git a/coders/braille.c b/coders/braille.c index d5876257b..3b78180bc 100644 --- a/coders/braille.c +++ b/coders/braille.c @@ -249,7 +249,7 @@ static MagickBooleanType WriteBRAILLEImage(const ImageInfo *image_info, (void) WriteBlobString(image,buffer); (void) WriteBlobString(image,"\n"); } - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); polarity = 0; if (image->storage_class == PseudoClass) { polarity=(Quantum) (GetPixelPacketIntensity(&image->colormap[0]) >= diff --git a/coders/caption.c b/coders/caption.c index 03b49d7b5..61826ad73 100644 --- a/coders/caption.c +++ b/coders/caption.c @@ -132,7 +132,8 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, /* Format caption. */ - property=InterpretImageProperties(image_info,image,image_info->filename); + property=InterpretImageProperties(image_info,image,image_info->filename, + exception); (void) SetImageProperty(image,"caption",property); property=DestroyString(property); caption=ConstantString(GetImageProperty(image,"caption")); diff --git a/coders/clip.c b/coders/clip.c index f43d9250e..92510ca78 100644 --- a/coders/clip.c +++ b/coders/clip.c @@ -161,13 +161,13 @@ static MagickBooleanType WriteCLIPImage(const ImageInfo *image_info, status; if (image->clip_mask == (Image *) NULL) - (void) ClipImage(image); + (void) ClipImage(image,exception); if (image->clip_mask == (Image *) NULL) ThrowWriterException(CoderError,"ImageDoesNotHaveAClipMask"); clip_image=CloneImage(image->clip_mask,0,0,MagickTrue,exception); if (clip_image == (Image *) NULL) return(MagickFalse); - (void) SetImageType(clip_image,TrueColorType); + (void) SetImageType(clip_image,TrueColorType,exception); (void) CopyMagickString(clip_image->filename,image->filename,MaxTextExtent); write_info=CloneImageInfo(image_info); (void) SetImageInfo(write_info,1,exception); diff --git a/coders/cut.c b/coders/cut.c index 05a7bb375..046766b8f 100644 --- a/coders/cut.c +++ b/coders/cut.c @@ -445,7 +445,7 @@ static Image *ReadCUTImage(const ImageInfo *image_info,ExceptionInfo *exception) if(PalHeader.MaxIndex<1) goto ErasePalette; image->colors=PalHeader.MaxIndex+1; - if (AcquireImageColormap(image,image->colors) == MagickFalse) goto NoMemory; + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) goto NoMemory; if(PalHeader.MaxRed==0) PalHeader.MaxRed=(unsigned int) QuantumRange; /*avoid division by 0*/ if(PalHeader.MaxGreen==0) PalHeader.MaxGreen=(unsigned int) QuantumRange; @@ -491,7 +491,7 @@ static Image *ReadCUTImage(const ImageInfo *image_info,ExceptionInfo *exception) { image->colors=256; - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) { NoMemory: ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); diff --git a/coders/dcm.c b/coders/dcm.c index 36b7d6995..3175a3cfb 100644 --- a/coders/dcm.c +++ b/coders/dcm.c @@ -3646,7 +3646,7 @@ static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) one=1; if (colors == 0) colors=one << depth; - if (AcquireImageColormap(image,colors) == MagickFalse) + if (AcquireImageColormap(image,colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (redmap != (int *) NULL) for (i=0; i < (ssize_t) colors; i++) diff --git a/coders/dib.c b/coders/dib.c index 20bcc8f47..7cf148c15 100644 --- a/coders/dib.c +++ b/coders/dib.c @@ -578,7 +578,7 @@ static Image *ReadDIBImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Read DIB raster colormap. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); length=(size_t) image->colors; dib_colormap=(unsigned char *) AcquireQuantumMemory(length, diff --git a/coders/djvu.c b/coders/djvu.c index 5d6ae7825..2f803a552 100644 --- a/coders/djvu.c +++ b/coders/djvu.c @@ -652,7 +652,7 @@ static Image *ReadOneDJVUImage(LoadContext* lc,const int pagenum, image->storage_class = PseudoClass; image->depth = 8UL; /* i only support that? */ image->colors= 2; - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError, "MemoryAllocationFailed"); } else { @@ -713,7 +713,7 @@ static Image *ReadOneDJVUImage(LoadContext* lc,const int pagenum, #if 0 /* palette */ - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); /* Monochrome colormap. mmc: this the default! diff --git a/coders/ept.c b/coders/ept.c index 59b334df9..b2527cbe6 100644 --- a/coders/ept.c +++ b/coders/ept.c @@ -432,7 +432,7 @@ static MagickBooleanType WriteEPTImage(const ImageInfo *image_info,Image *image, GetQuantizeInfo(&quantize_info); quantize_info.dither=IsPaletteImage(write_image,exception) == MagickFalse ? MagickTrue : MagickFalse; - (void) QuantizeImage(&quantize_info,write_image); + (void) QuantizeImage(&quantize_info,write_image,exception); } write_info->compression=NoCompression; ept_info.tiff=(unsigned char *) ImageToBlob(write_info,write_image, diff --git a/coders/fax.c b/coders/fax.c index 858349bed..ad02240bc 100644 --- a/coders/fax.c +++ b/coders/fax.c @@ -161,7 +161,7 @@ static Image *ReadFAXImage(const ImageInfo *image_info,ExceptionInfo *exception) if (image->rows == 0) image->rows=3508; image->depth=8; - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); /* Monochrome colormap. @@ -177,7 +177,7 @@ static Image *ReadFAXImage(const ImageInfo *image_info,ExceptionInfo *exception) (void) CloseBlob(image); return(GetFirstImageInList(image)); } - status=HuffmanDecodeImage(image); + status=HuffmanDecodeImage(image,exception); if (status == MagickFalse) ThrowReaderException(CorruptImageError,"UnableToReadImageData"); if (EOFBlob(image) != MagickFalse) @@ -332,7 +332,7 @@ static MagickBooleanType WriteFAXImage(const ImageInfo *image_info,Image *image, */ if (IsRGBColorspace(image->colorspace) == MagickFalse) (void) TransformImageColorspace(image,RGBColorspace); - status=HuffmanEncodeImage(write_info,image,image); + status=HuffmanEncodeImage(write_info,image,image,exception); if (GetNextImageInList(image) == (Image *) NULL) break; image=SyncNextImageInList(image); diff --git a/coders/gif.c b/coders/gif.c index 9d8f722dc..4b5caf190 100644 --- a/coders/gif.c +++ b/coders/gif.c @@ -387,11 +387,9 @@ static int ReadBlobLZWByte(LZWInfo *lzw_info) return(PopLZWStack(lzw_info->stack)); } -static MagickBooleanType DecodeImage(Image *image,const ssize_t opacity) +static MagickBooleanType DecodeImage(Image *image,const ssize_t opacity, + ExceptionInfo *exception) { - ExceptionInfo - *exception; - int c; @@ -425,7 +423,6 @@ static MagickBooleanType DecodeImage(Image *image,const ssize_t opacity) if (lzw_info == (LZWInfo *) NULL) ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", image->filename); - exception=(&image->exception); pass=0; offset=0; for (y=0; y < (ssize_t) image->rows; y++) @@ -930,7 +927,7 @@ static inline size_t MagickMin(const size_t x,const size_t y) return(y); } -static MagickBooleanType PingGIFImage(Image *image) +static MagickBooleanType PingGIFImage(Image *image,ExceptionInfo *exception) { unsigned char buffer[256], @@ -1257,7 +1254,7 @@ static Image *ReadGIFImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Inititialize colormap. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) { global_colormap=(unsigned char *) RelinquishMagickMemory( global_colormap); @@ -1326,9 +1323,9 @@ static Image *ReadGIFImage(const ImageInfo *image_info,ExceptionInfo *exception) Decode image. */ if (image_info->ping != MagickFalse) - status=PingGIFImage(image); + status=PingGIFImage(image,exception); else - status=DecodeImage(image,opacity); + status=DecodeImage(image,opacity,exception); if ((image_info->ping == MagickFalse) && (status == MagickFalse)) { global_colormap=(unsigned char *) RelinquishMagickMemory( @@ -1572,7 +1569,7 @@ static MagickBooleanType WriteGIFImage(const ImageInfo *image_info,Image *image, if (IsImageOpaque(image,exception) != MagickFalse) { if ((image->storage_class == DirectClass) || (image->colors > 256)) - (void) SetImageType(image,PaletteType); + (void) SetImageType(image,PaletteType,exception); } else { @@ -1584,7 +1581,7 @@ static MagickBooleanType WriteGIFImage(const ImageInfo *image_info,Image *image, Identify transparent colormap index. */ if ((image->storage_class == DirectClass) || (image->colors > 256)) - (void) SetImageType(image,PaletteBilevelMatteType); + (void) SetImageType(image,PaletteBilevelMatteType,exception); for (i=0; i < (ssize_t) image->colors; i++) if (image->colormap[i].alpha != OpaqueAlpha) { @@ -1602,7 +1599,7 @@ static MagickBooleanType WriteGIFImage(const ImageInfo *image_info,Image *image, } if (opacity == -1) { - (void) SetImageType(image,PaletteBilevelMatteType); + (void) SetImageType(image,PaletteBilevelMatteType,exception); for (i=0; i < (ssize_t) image->colors; i++) if (image->colormap[i].alpha != OpaqueAlpha) { diff --git a/coders/icon.c b/coders/icon.c index 92d1ee68c..7d23860e6 100644 --- a/coders/icon.c +++ b/coders/icon.c @@ -358,7 +358,7 @@ static Image *ReadICONImage(const ImageInfo *image_info, */ one=1; number_colors=one << icon_info.bits_per_pixel; - if (AcquireImageColormap(image,number_colors) == MagickFalse) + if (AcquireImageColormap(image,number_colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); icon_colormap=(unsigned char *) AcquireQuantumMemory((size_t) image->colors,4UL*sizeof(*icon_colormap)); diff --git a/coders/info.c b/coders/info.c index f750cea29..925e6573d 100644 --- a/coders/info.c +++ b/coders/info.c @@ -197,7 +197,7 @@ static MagickBooleanType WriteINFOImage(const ImageInfo *image_info, char *text; - text=InterpretImageProperties(image_info,image,format); + text=InterpretImageProperties(image_info,image,format,exception); if (text != (char *) NULL) { (void) WriteBlobString(image,text); diff --git a/coders/jbig.c b/coders/jbig.c index ac85f397d..4ccf6313e 100644 --- a/coders/jbig.c +++ b/coders/jbig.c @@ -195,7 +195,7 @@ static Image *ReadJBIGImage(const ImageInfo *image_info, image->columns=jbg_dec_getwidth(&jbig_info); image->rows=jbg_dec_getheight(&jbig_info); image->compression=JBIG2Compression; - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) { buffer=(unsigned char *) RelinquishMagickMemory(buffer); ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); @@ -455,7 +455,7 @@ static MagickBooleanType WriteJBIGImage(const ImageInfo *image_info, /* Convert pixels to a bitmap. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); q=pixels; for (y=0; y < (ssize_t) image->rows; y++) { diff --git a/coders/jpeg.c b/coders/jpeg.c index 68a96e4b7..e5a6d8469 100644 --- a/coders/jpeg.c +++ b/coders/jpeg.c @@ -118,6 +118,9 @@ typedef struct _DestinationManager typedef struct _ErrorManager { + ExceptionInfo + *exception; + Image *image; @@ -309,11 +312,15 @@ static MagickBooleanType JPEGWarningHandler(j_common_ptr jpeg_info,int level) ErrorManager *error_manager; + ExceptionInfo + *exception; + Image *image; *message='\0'; error_manager=(ErrorManager *) jpeg_info->client_data; + exception=error_manager->exception; image=error_manager->image; if (level < 0) { @@ -349,6 +356,9 @@ static boolean ReadComment(j_decompress_ptr jpeg_info) ErrorManager *error_manager; + ExceptionInfo + *exception; + Image *image; @@ -365,6 +375,7 @@ static boolean ReadComment(j_decompress_ptr jpeg_info) Determine length of comment. */ error_manager=(ErrorManager *) jpeg_info->client_data; + exception=error_manager->exception; image=error_manager->image; length=(size_t) ((size_t) GetCharacter(jpeg_info) << 8); length+=GetCharacter(jpeg_info); @@ -398,6 +409,9 @@ static boolean ReadICCProfile(j_decompress_ptr jpeg_info) ErrorManager *error_manager; + ExceptionInfo + *exception; + Image *image; @@ -444,6 +458,7 @@ static boolean ReadICCProfile(j_decompress_ptr jpeg_info) (void) GetCharacter(jpeg_info); /* markers */ length-=14; error_manager=(ErrorManager *) jpeg_info->client_data; + exception=error_manager->exception; image=error_manager->image; profile=BlobToStringInfo((const void *) NULL,length); if (profile == (StringInfo *) NULL) @@ -480,6 +495,9 @@ static boolean ReadIPTCProfile(j_decompress_ptr jpeg_info) ErrorManager *error_manager; + ExceptionInfo + *exception; + Image *image; @@ -540,6 +558,7 @@ static boolean ReadIPTCProfile(j_decompress_ptr jpeg_info) if (length == 0) return(MagickTrue); error_manager=(ErrorManager *) jpeg_info->client_data; + exception=error_manager->exception; image=error_manager->image; profile=BlobToStringInfo((const void *) NULL,length); if (profile == (StringInfo *) NULL) @@ -579,6 +598,9 @@ static boolean ReadProfile(j_decompress_ptr jpeg_info) ErrorManager *error_manager; + ExceptionInfo + *exception; + Image *image; @@ -611,6 +633,7 @@ static boolean ReadProfile(j_decompress_ptr jpeg_info) marker=jpeg_info->unread_marker-JPEG_APP0; (void) FormatLocaleString(name,MaxTextExtent,"APP%d",marker); error_manager=(ErrorManager *) jpeg_info->client_data; + exception=error_manager->exception; image=error_manager->image; profile=BlobToStringInfo((const void *) NULL,length); if (profile == (StringInfo *) NULL) @@ -986,6 +1009,7 @@ static Image *ReadJPEGImage(const ImageInfo *image_info, jpeg_info.err->emit_message=(void (*)(j_common_ptr,int)) JPEGWarningHandler; jpeg_info.err->error_exit=(void (*)(j_common_ptr)) JPEGErrorHandler; jpeg_pixels=(JSAMPLE *) NULL; + error_manager.exception=exception; error_manager.image=image; if (setjmp(error_manager.error_recovery) != 0) { @@ -1152,7 +1176,7 @@ static Image *ReadJPEGImage(const ImageInfo *image_info, if (jpeg_info.out_color_space == JCS_CMYK) image->colorspace=CMYKColorspace; if ((image_info->colors != 0) && (image_info->colors <= 256)) - if (AcquireImageColormap(image,image_info->colors) == MagickFalse) + if (AcquireImageColormap(image,image_info->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if ((jpeg_info.output_components == 1) && (jpeg_info.quantize_colors == MagickFalse)) @@ -1161,7 +1185,7 @@ static Image *ReadJPEGImage(const ImageInfo *image_info, colors; colors=(size_t) GetQuantumRange(image->depth)+1; - if (AcquireImageColormap(image,colors) == MagickFalse) + if (AcquireImageColormap(image,colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); } if (image->debug != MagickFalse) @@ -1780,6 +1804,7 @@ static MagickBooleanType WriteJPEGImage(const ImageInfo *image_info, jpeg_info.err=jpeg_std_error(&jpeg_error); jpeg_info.err->emit_message=(void (*)(j_common_ptr,int)) JPEGWarningHandler; jpeg_info.err->error_exit=(void (*)(j_common_ptr)) JPEGErrorHandler; + error_manager.exception=exception; error_manager.image=image; jpeg_pixels=(JSAMPLE *) NULL; if (setjmp(error_manager.error_recovery) != 0) diff --git a/coders/label.c b/coders/label.c index 5c73428d9..f3bd5ebbf 100644 --- a/coders/label.c +++ b/coders/label.c @@ -123,7 +123,8 @@ static Image *ReadLABELImage(const ImageInfo *image_info, assert(exception->signature == MagickSignature); image=AcquireImage(image_info); (void) ResetImagePage(image,"0x0+0+0"); - property=InterpretImageProperties(image_info,image,image_info->filename); + property=InterpretImageProperties(image_info,image,image_info->filename, + exception); (void) SetImageProperty(image,"label",property); property=DestroyString(property); label=GetImageProperty(image,"label"); diff --git a/coders/mac.c b/coders/mac.c index 3af844afd..5ddcf7e8a 100644 --- a/coders/mac.c +++ b/coders/mac.c @@ -146,7 +146,7 @@ static Image *ReadMACImage(const ImageInfo *image_info,ExceptionInfo *exception) image->columns=576; image->rows=720; image->depth=1; - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { diff --git a/coders/map.c b/coders/map.c index 16fb68da4..7ee63f9c9 100644 --- a/coders/map.c +++ b/coders/map.c @@ -157,7 +157,7 @@ static Image *ReadMAPImage(const ImageInfo *image_info,ExceptionInfo *exception) */ image->storage_class=PseudoClass; status=AcquireImageColormap(image,(size_t) - (image->offset != 0 ? image->offset : 256)); + (image->offset != 0 ? image->offset : 256),exception); if (status == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); depth=GetImageQuantumDepth(image,MagickTrue); @@ -380,7 +380,7 @@ static MagickBooleanType WriteMAPImage(const ImageInfo *image_info,Image *image, Allocate colormap. */ if (IsPaletteImage(image,exception) == MagickFalse) - (void) SetImageType(image,PaletteType); + (void) SetImageType(image,PaletteType,exception); depth=GetImageQuantumDepth(image,MagickTrue); packet_size=(size_t) (depth/8); pixels=(unsigned char *) AcquireQuantumMemory(image->columns,packet_size* diff --git a/coders/mat.c b/coders/mat.c index ba1bd3413..46fcf626d 100644 --- a/coders/mat.c +++ b/coders/mat.c @@ -852,7 +852,7 @@ MATLAB_KO: ThrowReaderException(CorruptImageError,"ImproperImageHeader"); { if(image->colors>256) image->colors = 256; - if (!AcquireImageColormap(image, image->colors)) + if (AcquireImageColormap(image, image->colors,exception) == MagickFalse) { NoMemory:ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");} } diff --git a/coders/matte.c b/coders/matte.c index f98b8e2d9..fec885a26 100644 --- a/coders/matte.c +++ b/coders/matte.c @@ -179,7 +179,7 @@ static MagickBooleanType WriteMATTEImage(const ImageInfo *image_info, matte_image=CloneImage(image,image->columns,image->rows,MagickTrue,exception); if (matte_image == (Image *) NULL) return(MagickFalse); - (void) SetImageType(matte_image,TrueColorMatteType); + (void) SetImageType(matte_image,TrueColorMatteType,exception); matte_image->matte=MagickFalse; /* Convert image to matte pixels. diff --git a/coders/miff.c b/coders/miff.c index 4619e31ad..bd064e389 100644 --- a/coders/miff.c +++ b/coders/miff.c @@ -1113,7 +1113,7 @@ static Image *ReadMIFFImage(const ImageInfo *image_info, /* Create image colormap. */ - status=AcquireImageColormap(image,colors != 0 ? colors : 256); + status=AcquireImageColormap(image,colors != 0 ? colors : 256,exception); if (status == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (colors != 0) diff --git a/coders/mono.c b/coders/mono.c index 9139189a7..3cea1bb76 100644 --- a/coders/mono.c +++ b/coders/mono.c @@ -143,7 +143,7 @@ static Image *ReadMONOImage(const ImageInfo *image_info, Initialize image colormap. */ image->depth=1; - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { @@ -318,7 +318,7 @@ static MagickBooleanType WriteMONOImage(const ImageInfo *image_info, /* Convert image to a bi-level image. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetVirtualPixels(image,0,y,image->columns,1,exception); diff --git a/coders/mpc.c b/coders/mpc.c index 113c70ca1..c3b03ab0c 100644 --- a/coders/mpc.c +++ b/coders/mpc.c @@ -812,7 +812,7 @@ static Image *ReadMPCImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Create image colormap. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image->colors != 0) { diff --git a/coders/msl.c b/coders/msl.c index eee2b4554..042d8ede3 100644 --- a/coders/msl.c +++ b/coders/msl.c @@ -694,7 +694,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -773,7 +774,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1104,7 +1106,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1166,7 +1169,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1263,7 +1267,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1384,7 +1389,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1449,7 +1455,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'R': @@ -1519,7 +1525,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1628,7 +1635,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1756,7 +1764,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1808,7 +1817,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -1898,7 +1908,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, if ((attribute != (const char *) NULL) && (LocaleCompare(value,value) == 0)) { - SetImageType(composite_image,TrueColorMatteType); + SetImageType(composite_image,TrueColorMatteType, + &exception); (void) CompositeImage(composite_image, CopyOpacityCompositeOp,msl_info->image[j],0,0); break; @@ -2095,7 +2106,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2148,7 +2160,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2249,7 +2262,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2273,7 +2287,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } } - (void) CycleColormapImage(msl_info->image[n],display); + (void) CycleColormapImage(msl_info->image[n],display,&exception); break; } ThrowMSLException(OptionError,"UnrecognizedElement",(const char *) tag); @@ -2300,7 +2314,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } @@ -2325,7 +2340,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2365,7 +2381,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2676,7 +2693,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, affine.tx; draw_info->affine.ty=affine.rx*current.tx+affine.sy*current.ty+ affine.ty; - (void) DrawImage(msl_info->image[n],draw_info); + (void) DrawImage(msl_info->image[n],draw_info,&exception); draw_info=DestroyDrawInfo(draw_info); break; } @@ -2704,7 +2721,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2770,7 +2788,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2848,7 +2867,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } @@ -2876,7 +2896,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -2941,7 +2962,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } @@ -2972,7 +2994,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } @@ -3007,7 +3030,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -3160,7 +3184,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -3308,7 +3333,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'C': @@ -3376,7 +3401,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -3519,7 +3545,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } @@ -3558,7 +3585,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -3610,7 +3638,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, quantize_info=AcquireQuantizeInfo(msl_info->image_info[n]); quantize_info->dither=dither; (void) RemapImages(quantize_info,msl_info->image[n], - affinity_image); + affinity_image,&exception); quantize_info=DestroyQuantizeInfo(quantize_info); affinity_image=DestroyImage(affinity_image); break; @@ -3643,7 +3671,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -3768,7 +3797,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -3835,7 +3865,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } @@ -3871,7 +3902,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -3997,7 +4029,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4064,7 +4097,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4120,7 +4154,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4189,7 +4224,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4254,7 +4290,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4304,7 +4341,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); if (*keyword == '+') { @@ -4404,7 +4442,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4484,7 +4523,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } } - (void) QuantizeImage(&quantize_info,msl_info->image[n]); + (void) QuantizeImage(&quantize_info,msl_info->image[n],&exception); break; } if (LocaleCompare((const char *) tag,"query-font-metrics") == 0) @@ -4511,7 +4550,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4881,7 +4921,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -4961,7 +5002,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'F': @@ -5012,7 +5053,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -5080,7 +5122,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'G': @@ -5207,7 +5249,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'b': @@ -5324,7 +5366,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -5430,7 +5473,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -5508,7 +5552,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'G': @@ -5587,7 +5631,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -5651,7 +5696,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'D': @@ -5713,7 +5758,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -5789,7 +5835,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -5872,7 +5919,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -5935,7 +5983,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } (void) SegmentImage(msl_info->image[n],colorspace,verbose, - geometry_info.rho,geometry_info.sigma); + geometry_info.rho,geometry_info.sigma,&exception); break; } else if (LocaleCompare((const char *) tag, "set") == 0) @@ -5952,7 +6000,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'C': @@ -5968,7 +6016,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, property=GetImageProperty(msl_info->attributes[j],"id"); if (LocaleCompare(property,value) == 0) { - SetImageMask(msl_info->image[n],msl_info->image[j]); + SetImageMask(msl_info->image[n],msl_info->image[j], + &exception); break; } } @@ -5984,7 +6033,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, property=GetImageProperty(msl_info->attributes[j],"id"); if (LocaleCompare(property,value) == 0) { - SetImageClipMask(msl_info->image[n],msl_info->image[j]); + SetImageClipMask(msl_info->image[n],msl_info->image[j], + &exception); break; } } @@ -6117,7 +6167,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6206,7 +6257,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6308,7 +6360,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'R': @@ -6375,7 +6427,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'G': @@ -6463,7 +6515,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6551,7 +6604,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6563,7 +6617,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } } - (void) SignatureImage(msl_info->image[n]); + (void) SignatureImage(msl_info->image[n],&exception); break; } if (LocaleCompare((const char *) tag,"solarize") == 0) @@ -6583,7 +6637,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6643,7 +6698,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6707,7 +6763,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'I': @@ -6771,7 +6827,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'I': @@ -6843,7 +6899,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6905,7 +6962,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -6968,7 +7026,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -7008,7 +7067,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; attribute=InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i]); + msl_info->attributes[n],(const char *) attributes[i], + &exception); CloneString(&value,attribute); switch (*keyword) { @@ -7060,7 +7120,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'T': @@ -7103,7 +7163,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'C': @@ -7179,7 +7239,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, { keyword=(const char *) attributes[i++]; CloneString(&value,InterpretImageProperties(msl_info->image_info[n], - msl_info->attributes[n],(const char *) attributes[i])); + msl_info->attributes[n],(const char *) attributes[i],&exception)); switch (*keyword) { case 'F': diff --git a/coders/mvg.c b/coders/mvg.c index 36c4f4460..1591a2e71 100644 --- a/coders/mvg.c +++ b/coders/mvg.c @@ -210,7 +210,7 @@ static Image *ReadMVGImage(const ImageInfo *image_info,ExceptionInfo *exception) draw_info->primitive[GetBlobSize(image)]='\0'; } } - (void) DrawImage(image,draw_info); + (void) DrawImage(image,draw_info,exception); draw_info=DestroyDrawInfo(draw_info); (void) CloseBlob(image); return(GetFirstImageInList(image)); diff --git a/coders/otb.c b/coders/otb.c index 508955661..044339655 100644 --- a/coders/otb.c +++ b/coders/otb.c @@ -157,7 +157,7 @@ static Image *ReadOTBImage(const ImageInfo *image_info,ExceptionInfo *exception) depth=(unsigned char) ReadBlobByte(image); if (depth != 1) ThrowReaderException(CoderError,"OnlyLevelZerofilesSupported"); - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { @@ -338,7 +338,7 @@ static MagickBooleanType WriteOTBImage(const ImageInfo *image_info,Image *image, /* Convert image to a bi-level image. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); info=0; if ((image->columns >= 256) || (image->rows >= 256)) SetBit(info,4,1); diff --git a/coders/palm.c b/coders/palm.c index c906c29c0..b8fceb37b 100644 --- a/coders/palm.c +++ b/coders/palm.c @@ -342,7 +342,7 @@ static Image *ReadPALMImage(const ImageInfo *image_info, */ one=1; if ((bits_per_pixel < 16) && - (AcquireImageColormap(image,one << bits_per_pixel) == MagickFalse)) + (AcquireImageColormap(image,one << bits_per_pixel,exception) == MagickFalse)) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); GetPixelInfo(image,&transpix); if (bits_per_pixel == 16) /* Direct Color */ @@ -744,8 +744,8 @@ static MagickBooleanType WritePALMImage(const ImageInfo *image_info, if (bits_per_pixel < 8) { (void) TransformImageColorspace(image,GRAYColorspace); - (void) SetImageType(image,PaletteType); - (void) SortColormapByIntensity(image); + (void) SetImageType(image,PaletteType,exception); + (void) SortColormapByIntensity(image,exception); } if ((image->storage_class == PseudoClass) && (image->colors > 256)) (void) SetImageStorageClass(image,DirectClass,exception); @@ -795,7 +795,7 @@ static MagickBooleanType WritePALMImage(const ImageInfo *image_info, { quantize_info->dither=IsPaletteImage(image,exception); quantize_info->number_colors=image->colors; - (void) QuantizeImage(quantize_info,image); + (void) QuantizeImage(quantize_info,image,exception); (void) WriteBlobMSBShort(image,(unsigned short) image->colors); for (count = 0; count < image->colors; count++) { @@ -818,7 +818,7 @@ static MagickBooleanType WritePALMImage(const ImageInfo *image_info, exception); (void) TransformImageColorspace(affinity_image, affinity_image->colorspace); - (void) RemapImage(quantize_info,image,affinity_image); + (void) RemapImage(quantize_info,image,affinity_image,exception); for (y=0; y < (ssize_t) image->rows; y++) { q=GetAuthenticPixels(image,0,y,image->columns,1,exception); diff --git a/coders/pcd.c b/coders/pcd.c index 824ee6a99..527821842 100644 --- a/coders/pcd.c +++ b/coders/pcd.c @@ -111,7 +111,7 @@ static MagickBooleanType % */ static MagickBooleanType DecodeImage(Image *image,unsigned char *luma, - unsigned char *chroma1,unsigned char *chroma2) + unsigned char *chroma1,unsigned char *chroma2,ExceptionInfo *exception) { #define IsSync ((sum & 0xffffff00UL) == 0xfffffe00UL) #define PCDGetBits(n) \ @@ -741,7 +741,7 @@ static Image *ReadPCDImage(const ImageInfo *image_info,ExceptionInfo *exception) image->rows=1024; for (i=0; i < (4*0x800); i++) (void) ReadBlobByte(image); - status=DecodeImage(image,luma,chroma1,chroma2); + status=DecodeImage(image,luma,chroma1,chroma2,exception); if ((scene >= 5) && status) { /* @@ -753,7 +753,7 @@ static Image *ReadPCDImage(const ImageInfo *image_info,ExceptionInfo *exception) image->rows=2048; offset=TellBlob(image)/0x800+12; offset=SeekBlob(image,offset*0x800,SEEK_SET); - status=DecodeImage(image,luma,chroma1,chroma2); + status=DecodeImage(image,luma,chroma1,chroma2,exception); if ((scene >= 6) && (status != MagickFalse)) { /* diff --git a/coders/pcx.c b/coders/pcx.c index e55453086..41a173db9 100644 --- a/coders/pcx.c +++ b/coders/pcx.c @@ -363,7 +363,7 @@ static Image *ReadPCXImage(const ImageInfo *image_info,ExceptionInfo *exception) ((pcx_info.bits_per_pixel*pcx_info.planes) == 1)) image->colors=(size_t) MagickMin(one << (1UL* (pcx_info.bits_per_pixel*pcx_info.planes)),256UL); - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if ((pcx_info.bits_per_pixel >= 8) && (pcx_info.planes != 1)) image->storage_class=DirectClass; diff --git a/coders/pdb.c b/coders/pdb.c index 363bc6d91..9ad4ad19b 100644 --- a/coders/pdb.c +++ b/coders/pdb.c @@ -388,7 +388,7 @@ static Image *ReadPDBImage(const ImageInfo *image_info,ExceptionInfo *exception) image->storage_class=PseudoClass; bits_per_pixel=pdb_image.type == 0 ? 2UL : pdb_image.type == 2 ? 4UL : 1UL; one=1; - if (AcquireImageColormap(image,one << bits_per_pixel) == MagickFalse) + if (AcquireImageColormap(image,one << bits_per_pixel,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { diff --git a/coders/pdf.c b/coders/pdf.c index bf9a7fde2..9b2648806 100644 --- a/coders/pdf.c +++ b/coders/pdf.c @@ -888,7 +888,7 @@ static char *EscapeParenthesis(const char *text) } static MagickBooleanType Huffman2DEncodeImage(const ImageInfo *image_info, - Image *image,Image *inject_image) + Image *image,Image *inject_image,ExceptionInfo *exception) { Image *group4_image; @@ -909,11 +909,11 @@ static MagickBooleanType Huffman2DEncodeImage(const ImageInfo *image_info, write_info=CloneImageInfo(image_info); (void) CopyMagickString(write_info->filename,"GROUP4:",MaxTextExtent); (void) CopyMagickString(write_info->magick,"GROUP4",MaxTextExtent); - group4_image=CloneImage(inject_image,0,0,MagickTrue,&image->exception); + group4_image=CloneImage(inject_image,0,0,MagickTrue,exception); if (group4_image == (Image *) NULL) return(MagickFalse); group4=(unsigned char *) ImageToBlob(write_info,group4_image,&length, - &image->exception); + exception); group4_image=DestroyImage(group4_image); if (group4 == (unsigned char *) NULL) return(MagickFalse); @@ -1565,10 +1565,10 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, { if (LocaleCompare(CCITTParam,"0") == 0) { - (void) HuffmanEncodeImage(image_info,image,image); + (void) HuffmanEncodeImage(image_info,image,image,exception); break; } - (void) Huffman2DEncodeImage(image_info,image,image); + (void) Huffman2DEncodeImage(image_info,image,image,exception); break; } case JPEGCompression: @@ -1626,13 +1626,13 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, } #if defined(MAGICKCORE_ZLIB_DELEGATE) if (compression == ZipCompression) - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); else #endif if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { @@ -1737,13 +1737,13 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, } #if defined(MAGICKCORE_ZLIB_DELEGATE) if (compression == ZipCompression) - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); else #endif if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { @@ -1828,13 +1828,13 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, } #if defined(MAGICKCORE_ZLIB_DELEGATE) if (compression == ZipCompression) - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); else #endif if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { @@ -2014,10 +2014,11 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, { if (LocaleCompare(CCITTParam,"0") == 0) { - (void) HuffmanEncodeImage(image_info,image,tile_image); + (void) HuffmanEncodeImage(image_info,image,tile_image, + exception); break; } - (void) Huffman2DEncodeImage(image_info,image,tile_image); + (void) Huffman2DEncodeImage(image_info,image,tile_image,exception); break; } case JPEGCompression: @@ -2074,13 +2075,13 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, } #if defined(MAGICKCORE_ZLIB_DELEGATE) if (compression == ZipCompression) - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); else #endif if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { @@ -2178,13 +2179,13 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, } #if defined(MAGICKCORE_ZLIB_DELEGATE) if (compression == ZipCompression) - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); else #endif if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { @@ -2263,13 +2264,13 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, } #if defined(MAGICKCORE_ZLIB_DELEGATE) if (compression == ZipCompression) - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); else #endif if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { @@ -2466,13 +2467,13 @@ static MagickBooleanType WritePDFImage(const ImageInfo *image_info,Image *image, } #if defined(MAGICKCORE_ZLIB_DELEGATE) if (compression == ZipCompression) - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); else #endif if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { diff --git a/coders/pict.c b/coders/pict.c index 5212776f9..69c754ec9 100644 --- a/coders/pict.c +++ b/coders/pict.c @@ -1094,7 +1094,8 @@ static Image *ReadPICTImage(const ImageInfo *image_info, flags=1L*ReadBlobMSBShort(image); tile_image->colors=1UL*ReadBlobMSBShort(image)+1; } - status=AcquireImageColormap(tile_image,tile_image->colors); + status=AcquireImageColormap(tile_image,tile_image->colors, + exception); if (status == MagickFalse) { tile_image=DestroyImage(tile_image); diff --git a/coders/pix.c b/coders/pix.c index 323d18abd..e43281976 100644 --- a/coders/pix.c +++ b/coders/pix.c @@ -151,7 +151,7 @@ static Image *ReadPIXImage(const ImageInfo *image_info,ExceptionInfo *exception) image->columns=width; image->rows=height; if (bits_per_pixel == 8) - if (AcquireImageColormap(image,256) == MagickFalse) + if (AcquireImageColormap(image,256,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if ((image_info->ping != MagickFalse) && (image_info->number_scenes != 0)) if (image->scene >= (image_info->scene+image_info->number_scenes-1)) diff --git a/coders/png.c b/coders/png.c index 9be177d7c..74413cfc2 100644 --- a/coders/png.c +++ b/coders/png.c @@ -2709,7 +2709,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, /* Initialize image colormap. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if ((int) ping_color_type == PNG_COLOR_TYPE_PALETTE) @@ -3699,12 +3699,12 @@ static Image *ReadPNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (LocaleCompare(image_info->magick,"PNG24") == 0) { - (void) SetImageType(image,TrueColorType); + (void) SetImageType(image,TrueColorType,exception); image->matte=MagickFalse; } if (LocaleCompare(image_info->magick,"PNG32") == 0) - (void) SetImageType(image,TrueColorMatteType); + (void) SetImageType(image,TrueColorMatteType,exception); if (logging != MagickFalse) (void) LogMagickEvent(CoderEvent,GetMagickModule(), @@ -7418,7 +7418,7 @@ static MagickBooleanType Magick_png_write_chunk_from_profile(Image *image, /* Write one PNG image */ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, - const ImageInfo *IMimage_info,Image *IMimage) + const ImageInfo *IMimage_info,Image *IMimage,ExceptionInfo *exception) { Image *image; @@ -8260,7 +8260,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, image->colors = image_colors; - if (AcquireImageColormap(image,image_colors) == + if (AcquireImageColormap(image,image_colors,exception) == MagickFalse) ThrowWriterException(ResourceLimitError, "MemoryAllocationFailed"); @@ -10902,10 +10902,10 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, image->depth = 8; if (image->matte == MagickTrue) - (void) SetImageType(image,TrueColorMatteType); + (void) SetImageType(image,TrueColorMatteType,exception); else - (void) SetImageType(image,TrueColorType); + (void) SetImageType(image,TrueColorType,exception); (void) SyncImage(image); } @@ -10917,10 +10917,10 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, image->depth = 8; if (image->matte == MagickTrue) - (void) SetImageType(image,TrueColorMatteType); + (void) SetImageType(image,TrueColorMatteType,exception); else - (void) SetImageType(image,TrueColorType); + (void) SetImageType(image,TrueColorType,exception); (void) SyncImage(image); } @@ -11489,7 +11489,7 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, mng_info->need_blob = MagickTrue; - status=WriteOnePNGImage(mng_info,image_info,image); + status=WriteOnePNGImage(mng_info,image_info,image,exception); MngInfoFreeStruct(mng_info,&have_mng_structure); @@ -11503,7 +11503,7 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, /* Write one JNG image */ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, - const ImageInfo *image_info,Image *image) + const ImageInfo *image_info,Image *image,ExceptionInfo *exception) { Image *jpeg_image; @@ -11594,7 +11594,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, jpeg_image_info->quality=jng_quality; jpeg_image_info->type=GrayscaleType; - (void) SetImageType(jpeg_image,GrayscaleType); + (void) SetImageType(jpeg_image,GrayscaleType,exception); (void) AcquireUniqueFilename(jpeg_image->filename); (void) FormatLocaleString(jpeg_image_info->filename,MaxTextExtent, "%s",jpeg_image->filename); @@ -12104,7 +12104,7 @@ static MagickBooleanType WriteJNGImage(const ImageInfo *image_info,Image *image, (void) WriteBlob(image,8,(const unsigned char *) "\213JNG\r\n\032\n"); - status=WriteOneJNGImage(mng_info,image_info,image); + status=WriteOneJNGImage(mng_info,image_info,image,exception); (void) CloseBlob(image); (void) CatchImageException(image); @@ -12919,7 +12919,7 @@ static MagickBooleanType WriteMNGImage(const ImageInfo *image_info,Image *image, /* To do: specify the desired alpha compression method. */ write_info=CloneImageInfo(image_info); write_info->compression=UndefinedCompression; - status=WriteOneJNGImage(mng_info,write_info,image); + status=WriteOneJNGImage(mng_info,write_info,image,exception); write_info=DestroyImageInfo(write_info); } else @@ -12949,7 +12949,7 @@ static MagickBooleanType WriteMNGImage(const ImageInfo *image_info,Image *image, mng_info->ping_exclude_zCCP=MagickTrue; mng_info->ping_exclude_zTXt=MagickTrue; - status=WriteOnePNGImage(mng_info,image_info,image); + status=WriteOnePNGImage(mng_info,image_info,image,exception); } if (status == MagickFalse) diff --git a/coders/ps2.c b/coders/ps2.c index e772247d8..c005070d5 100644 --- a/coders/ps2.c +++ b/coders/ps2.c @@ -186,7 +186,7 @@ ModuleExport void UnregisterPS2Image(void) */ static MagickBooleanType Huffman2DEncodeImage(const ImageInfo *image_info, - Image *image,Image *inject_image) + Image *image,Image *inject_image,ExceptionInfo *exception) { Image *group4_image; @@ -207,11 +207,11 @@ static MagickBooleanType Huffman2DEncodeImage(const ImageInfo *image_info, write_info=CloneImageInfo(image_info); (void) CopyMagickString(write_info->filename,"GROUP4:",MaxTextExtent); (void) CopyMagickString(write_info->magick,"GROUP4",MaxTextExtent); - group4_image=CloneImage(inject_image,0,0,MagickTrue,&image->exception); + group4_image=CloneImage(inject_image,0,0,MagickTrue,exception); if (group4_image == (Image *) NULL) return(MagickFalse); group4=(unsigned char *) ImageToBlob(write_info,group4_image,&length, - &image->exception); + exception); group4_image=DestroyImage(group4_image); if (group4 == (unsigned char *) NULL) return(MagickFalse); @@ -749,10 +749,10 @@ static MagickBooleanType WritePS2Image(const ImageInfo *image_info,Image *image, { if (LocaleCompare(CCITTParam,"0") == 0) { - (void) HuffmanEncodeImage(image_info,image,image); + (void) HuffmanEncodeImage(image_info,image,image,exception); break; } - (void) Huffman2DEncodeImage(image_info,image,image); + (void) Huffman2DEncodeImage(image_info,image,image,exception); break; } case JPEGCompression: @@ -800,9 +800,9 @@ static MagickBooleanType WritePS2Image(const ImageInfo *image_info,Image *image, } length=(size_t) (q-pixels); if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { @@ -917,9 +917,9 @@ static MagickBooleanType WritePS2Image(const ImageInfo *image_info,Image *image, } length=(size_t) (q-pixels); if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); if (status == MagickFalse) { (void) CloseBlob(image); @@ -1045,9 +1045,9 @@ static MagickBooleanType WritePS2Image(const ImageInfo *image_info,Image *image, } length=(size_t) (q-pixels); if (compression == LZWCompression) - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); else - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) { diff --git a/coders/ps3.c b/coders/ps3.c index e5917c7d8..3a813fd84 100644 --- a/coders/ps3.c +++ b/coders/ps3.c @@ -199,7 +199,7 @@ ModuleExport void UnregisterPS3Image(void) */ static MagickBooleanType Huffman2DEncodeImage(const ImageInfo *image_info, - Image *image,Image *inject_image) + Image *image,Image *inject_image,ExceptionInfo *exception) { Image *group4_image; @@ -220,11 +220,11 @@ static MagickBooleanType Huffman2DEncodeImage(const ImageInfo *image_info, write_info=CloneImageInfo(image_info); (void) CopyMagickString(write_info->filename,"GROUP4:",MaxTextExtent); (void) CopyMagickString(write_info->magick,"GROUP4",MaxTextExtent); - group4_image=CloneImage(inject_image,0,0,MagickTrue,&image->exception); + group4_image=CloneImage(inject_image,0,0,MagickTrue,exception); if (group4_image == (Image *) NULL) return(MagickFalse); group4=(unsigned char *) ImageToBlob(write_info,group4_image,&length, - &image->exception); + exception); group4_image=DestroyImage(group4_image); if (group4 == (unsigned char *) NULL) return(MagickFalse); @@ -236,7 +236,7 @@ static MagickBooleanType Huffman2DEncodeImage(const ImageInfo *image_info, } static MagickBooleanType SerializeImage(const ImageInfo *image_info, - Image *image,unsigned char **pixels,size_t *length) + Image *image,unsigned char **pixels,size_t *length,ExceptionInfo *exception) { MagickBooleanType status; @@ -300,7 +300,7 @@ static MagickBooleanType SerializeImage(const ImageInfo *image_info, } static MagickBooleanType SerializeImageChannel(const ImageInfo *image_info, - Image *image,unsigned char **pixels,size_t *length) + Image *image,unsigned char **pixels,size_t *length,ExceptionInfo *exception) { MagickBooleanType status; @@ -339,7 +339,7 @@ static MagickBooleanType SerializeImageChannel(const ImageInfo *image_info, q=(*pixels); for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; if (pack == 1) @@ -377,7 +377,7 @@ static MagickBooleanType SerializeImageChannel(const ImageInfo *image_info, } static MagickBooleanType SerializeImageIndexes(const ImageInfo *image_info, - Image *image,unsigned char **pixels,size_t *length) + Image *image,unsigned char **pixels,size_t *length,ExceptionInfo *exception) { MagickBooleanType status; @@ -406,7 +406,7 @@ static MagickBooleanType SerializeImageIndexes(const ImageInfo *image_info, q=(*pixels); for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) @@ -428,7 +428,7 @@ static MagickBooleanType SerializeImageIndexes(const ImageInfo *image_info, } static MagickBooleanType WritePS3MaskImage(const ImageInfo *image_info, - Image *image,const CompressionType compression) + Image *image,const CompressionType compression,ExceptionInfo *exception) { ChannelType channel_mask; @@ -529,8 +529,8 @@ static MagickBooleanType WritePS3MaskImage(const ImageInfo *image_info, mask_image=DestroyImage(mask_image); return(MagickFalse); } - (void) SetImageType(mask_image,BilevelType); - (void) SetImageType(mask_image,PaletteType); + (void) SetImageType(mask_image,BilevelType,exception); + (void) SetImageType(mask_image,PaletteType,exception); mask_image->matte=MagickFalse; pixels=(unsigned char *) NULL; length=0; @@ -539,7 +539,8 @@ static MagickBooleanType WritePS3MaskImage(const ImageInfo *image_info, case NoCompression: default: { - status=SerializeImageChannel(image_info,mask_image,&pixels,&length); + status=SerializeImageChannel(image_info,mask_image,&pixels,&length, + exception); if (status == MagickFalse) break; Ascii85Initialize(image); @@ -554,35 +555,38 @@ static MagickBooleanType WritePS3MaskImage(const ImageInfo *image_info, { if ((compression == FaxCompression) || (LocaleCompare(CCITTParam,"0") == 0)) - status=HuffmanEncodeImage(image_info,image,mask_image); + status=HuffmanEncodeImage(image_info,image,mask_image,exception); else - status=Huffman2DEncodeImage(image_info,image,mask_image); + status=Huffman2DEncodeImage(image_info,image,mask_image,exception); break; } case LZWCompression: { - status=SerializeImageChannel(image_info,mask_image,&pixels,&length); + status=SerializeImageChannel(image_info,mask_image,&pixels,&length, + exception); if (status == MagickFalse) break; - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); break; } case RLECompression: { - status=SerializeImageChannel(image_info,mask_image,&pixels,&length); + status=SerializeImageChannel(image_info,mask_image,&pixels,&length, + exception); if (status == MagickFalse) break; - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); break; } case ZipCompression: { - status=SerializeImageChannel(image_info,mask_image,&pixels,&length); + status=SerializeImageChannel(image_info,mask_image,&pixels,&length, + exception); if (status == MagickFalse) break; - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); break; } @@ -1155,7 +1159,7 @@ static MagickBooleanType WritePS3Image(const ImageInfo *image_info,Image *image, Image mask. */ if ((image->matte != MagickFalse) && - (WritePS3MaskImage(image_info,image,compression) == MagickFalse)) + (WritePS3MaskImage(image_info,image,compression,exception) == MagickFalse)) { (void) CloseBlob(image); return(MagickFalse); @@ -1309,13 +1313,14 @@ static MagickBooleanType WritePS3Image(const ImageInfo *image_info,Image *image, (compression == Group4Compression)) { if (LocaleCompare(CCITTParam,"0") == 0) - status=HuffmanEncodeImage(image_info,image,image); + status=HuffmanEncodeImage(image_info,image,image,exception); else - status=Huffman2DEncodeImage(image_info,image,image); + status=Huffman2DEncodeImage(image_info,image,image,exception); } else { - status=SerializeImageChannel(image_info,image,&pixels,&length); + status=SerializeImageChannel(image_info,image,&pixels,&length, + exception); if (status == MagickFalse) { (void) CloseBlob(image); @@ -1335,17 +1340,17 @@ static MagickBooleanType WritePS3Image(const ImageInfo *image_info,Image *image, } case LZWCompression: { - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); break; } case RLECompression: { - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); break; } case ZipCompression: { - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); break; } } @@ -1399,7 +1404,7 @@ static MagickBooleanType WritePS3Image(const ImageInfo *image_info,Image *image, /* Stream based compressions. */ - status=SerializeImage(image_info,image,&pixels,&length); + status=SerializeImage(image_info,image,&pixels,&length,exception); if (status == MagickFalse) { (void) CloseBlob(image); @@ -1419,17 +1424,17 @@ static MagickBooleanType WritePS3Image(const ImageInfo *image_info,Image *image, } case RLECompression: { - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); break; } case LZWCompression: { - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); break; } case ZipCompression: { - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); break; } } @@ -1507,7 +1512,8 @@ static MagickBooleanType WritePS3Image(const ImageInfo *image_info,Image *image, } Ascii85Flush(image); } - status=SerializeImageIndexes(image_info,image,&pixels,&length); + status=SerializeImageIndexes(image_info,image,&pixels,&length, + exception); if (status == MagickFalse) { (void) CloseBlob(image); @@ -1532,17 +1538,17 @@ static MagickBooleanType WritePS3Image(const ImageInfo *image_info,Image *image, } case RLECompression: { - status=PackbitsEncodeImage(image,length,pixels); + status=PackbitsEncodeImage(image,length,pixels,exception); break; } case LZWCompression: { - status=LZWEncodeImage(image,length,pixels); + status=LZWEncodeImage(image,length,pixels,exception); break; } case ZipCompression: { - status=ZLIBEncodeImage(image,length,pixels); + status=ZLIBEncodeImage(image,length,pixels,exception); break; } } diff --git a/coders/psd.c b/coders/psd.c index 5c8ad2206..198a2bf22 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -841,7 +841,7 @@ static Image *ReadPSDImage(const ImageInfo *image_info,ExceptionInfo *exception) if ((psd_info.mode == BitmapMode) || (psd_info.mode == GrayscaleMode) || (psd_info.mode == DuotoneMode)) { - if (AcquireImageColormap(image,256) == MagickFalse) + if (AcquireImageColormap(image,256,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); image->matte=psd_info.channels >= 2 ? MagickTrue : MagickFalse; if (image->debug != MagickFalse) @@ -878,7 +878,7 @@ static Image *ReadPSDImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Read PSD raster colormap. */ - if (AcquireImageColormap(image,(size_t) (length/3)) == MagickFalse) + if (AcquireImageColormap(image,(size_t) (length/3),exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); for (i=0; i < (ssize_t) image->colors; i++) image->colormap[i].red=ScaleCharToQuantum((unsigned char) @@ -1554,7 +1554,8 @@ static inline ssize_t SetPSDSize(const PSDInfo *psd_info,Image *image, } static size_t PSDPackbitsEncodeImage(Image *image,const size_t length, - const unsigned char *pixels,unsigned char *compact_pixels) + const unsigned char *pixels,unsigned char *compact_pixels, + ExceptionInfo *exception) { int count; @@ -1664,7 +1665,8 @@ static size_t PSDPackbitsEncodeImage(Image *image,const size_t length, static void WritePackbitsLength(const PSDInfo *psd_info, const ImageInfo *image_info,Image *image,Image *next_image, - unsigned char *compact_pixels,const QuantumType quantum_type) + unsigned char *compact_pixels,const QuantumType quantum_type, + ExceptionInfo *exception) { QuantumInfo *quantum_info; @@ -1695,7 +1697,8 @@ static void WritePackbitsLength(const PSDInfo *psd_info, break; length=ExportQuantumPixels(next_image,(CacheView *) NULL,quantum_info, quantum_type,pixels,&image->exception); - length=PSDPackbitsEncodeImage(image,length,pixels,compact_pixels); + length=PSDPackbitsEncodeImage(image,length,pixels,compact_pixels, + exception); (void) SetPSDOffset(psd_info,image,length); } quantum_info=DestroyQuantumInfo(quantum_info); @@ -1703,7 +1706,8 @@ static void WritePackbitsLength(const PSDInfo *psd_info, static void WriteOneChannel(const PSDInfo *psd_info,const ImageInfo *image_info, Image *image,Image *next_image,unsigned char *compact_pixels, - const QuantumType quantum_type,const MagickBooleanType compression_flag) + const QuantumType quantum_type,const MagickBooleanType compression_flag, + ExceptionInfo *exception) { int y; @@ -1753,7 +1757,8 @@ static void WriteOneChannel(const PSDInfo *psd_info,const ImageInfo *image_info, (void) WriteBlob(image,length,pixels); else { - length=PSDPackbitsEncodeImage(image,length,pixels,compact_pixels); + length=PSDPackbitsEncodeImage(image,length,pixels,compact_pixels, + exception); (void) WriteBlob(image,length,compact_pixels); } } @@ -1762,7 +1767,7 @@ static void WriteOneChannel(const PSDInfo *psd_info,const ImageInfo *image_info, static MagickBooleanType WriteImageChannels(const PSDInfo *psd_info, const ImageInfo *image_info,Image *image,Image *next_image, - const MagickBooleanType separate) + const MagickBooleanType separate,ExceptionInfo *exception) { int i; @@ -1797,18 +1802,18 @@ static MagickBooleanType WriteImageChannels(const PSDInfo *psd_info, */ (void) WriteBlobMSBShort(image,1); WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,GrayQuantum); + compact_pixels,GrayQuantum,exception); if (next_image->matte != MagickFalse) WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,AlphaQuantum); + compact_pixels,AlphaQuantum,exception); } WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, GrayQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); if (next_image->matte != MagickFalse) WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, AlphaQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,0,1); } else @@ -1821,18 +1826,18 @@ static MagickBooleanType WriteImageChannels(const PSDInfo *psd_info, */ (void) WriteBlobMSBShort(image,1); WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,IndexQuantum); + compact_pixels,IndexQuantum,exception); if (next_image->matte != MagickFalse) WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,AlphaQuantum); + compact_pixels,AlphaQuantum,exception); } WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, IndexQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); if (next_image->matte != MagickFalse) WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, AlphaQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,0,1); } else @@ -1846,40 +1851,40 @@ static MagickBooleanType WriteImageChannels(const PSDInfo *psd_info, */ (void) WriteBlobMSBShort(image,1); WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,RedQuantum); + compact_pixels,RedQuantum,exception); WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,GreenQuantum); + compact_pixels,GreenQuantum,exception); WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,BlueQuantum); + compact_pixels,BlueQuantum,exception); if (next_image->colorspace == CMYKColorspace) WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,BlackQuantum); + compact_pixels,BlackQuantum,exception); if (next_image->matte != MagickFalse) WritePackbitsLength(psd_info,image_info,image,next_image, - compact_pixels,AlphaQuantum); + compact_pixels,AlphaQuantum,exception); } (void) SetImageProgress(image,SaveImagesTag,0,6); WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, RedQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,1,6); WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, GreenQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,2,6); WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, BlueQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,3,6); if (next_image->colorspace == CMYKColorspace) WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, BlackQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,4,6); if (next_image->matte != MagickFalse) WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels, AlphaQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue : - MagickFalse); + MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,5,6); if (next_image->colorspace == CMYKColorspace) (void) NegateImage(next_image,MagickFalse,&next_image->exception); @@ -2364,7 +2369,7 @@ static MagickBooleanType WritePSDImage(const ImageInfo *image_info,Image *image, while (next_image != NULL) { status=WriteImageChannels(&psd_info,image_info,image,next_image, - MagickTrue); + MagickTrue,exception); next_image=GetNextImageInList(next_image); } (void) WriteBlobMSBLong(image,0); /* user mask data */ @@ -2373,7 +2378,8 @@ static MagickBooleanType WritePSDImage(const ImageInfo *image_info,Image *image, /* Write composite image. */ - status=WriteImageChannels(&psd_info,image_info,image,image,MagickFalse); + status=WriteImageChannels(&psd_info,image_info,image,image,MagickFalse, + exception); (void) CloseBlob(image); return(status); } diff --git a/coders/rle.c b/coders/rle.c index a3b762799..5c0d5cb48 100644 --- a/coders/rle.c +++ b/coders/rle.c @@ -467,7 +467,7 @@ static Image *ReadRLEImage(const ImageInfo *image_info,ExceptionInfo *exception) */ if (number_colormaps == 0) map_length=256; - if (AcquireImageColormap(image,map_length) == MagickFalse) + if (AcquireImageColormap(image,map_length,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); p=colormap; if (number_colormaps == 1) diff --git a/coders/sgi.c b/coders/sgi.c index 11e55f4d0..6a67fd9a0 100644 --- a/coders/sgi.c +++ b/coders/sgi.c @@ -609,7 +609,7 @@ static Image *ReadSGIImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Create grayscale map. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); /* Convert SGI image to PseudoClass pixel packets. diff --git a/coders/stegano.c b/coders/stegano.c index 71ba93056..f0c52c020 100644 --- a/coders/stegano.c +++ b/coders/stegano.c @@ -159,7 +159,7 @@ static Image *ReadSTEGANOImage(const ImageInfo *image_info, if (watermark == (Image *) NULL) return((Image *) NULL); watermark->depth=MAGICKCORE_QUANTUM_DEPTH; - if (AcquireImageColormap(image,MaxColormapSize) == MagickFalse) + if (AcquireImageColormap(image,MaxColormapSize,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { diff --git a/coders/sun.c b/coders/sun.c index 752cdffde..9ad0204cd 100644 --- a/coders/sun.c +++ b/coders/sun.c @@ -333,7 +333,7 @@ static Image *ReadSUNImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Create linear color ramp. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); } break; @@ -346,7 +346,7 @@ static Image *ReadSUNImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Read SUN raster colormap. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); sun_colormap=(unsigned char *) AcquireQuantumMemory(image->colors, sizeof(*sun_colormap)); @@ -889,7 +889,7 @@ static MagickBooleanType WriteSUNImage(const ImageInfo *image_info,Image *image, /* Convert PseudoClass image to a SUN monochrome image. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetVirtualPixels(image,0,y,image->columns,1,exception); diff --git a/coders/tga.c b/coders/tga.c index e183e4a18..c737794a4 100644 --- a/coders/tga.c +++ b/coders/tga.c @@ -254,7 +254,7 @@ static Image *ReadTGAImage(const ImageInfo *image_info,ExceptionInfo *exception) one=1; image->colors=one << tga_info.bits_per_pixel; - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); } } @@ -288,7 +288,7 @@ static Image *ReadTGAImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Read TGA raster colormap. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); for (i=0; i < (ssize_t) image->colors; i++) { diff --git a/coders/thumbnail.c b/coders/thumbnail.c index d291be8b7..2037dc562 100644 --- a/coders/thumbnail.c +++ b/coders/thumbnail.c @@ -205,7 +205,7 @@ static MagickBooleanType WriteTHUMBNAILImage(const ImageInfo *image_info, if (thumbnail_image == (Image *) NULL) return(MagickFalse); (void) SetImageType(thumbnail_image,thumbnail_image->matte == MagickFalse ? - TrueColorType : TrueColorMatteType); + TrueColorType : TrueColorMatteType,exception); (void) CopyMagickString(thumbnail_image->filename,image->filename, MaxTextExtent); write_info=CloneImageInfo(image_info); diff --git a/coders/tiff.c b/coders/tiff.c index b8d4aaa3e..9250c3d55 100644 --- a/coders/tiff.c +++ b/coders/tiff.c @@ -433,7 +433,7 @@ static inline ssize_t MagickMin(const ssize_t x,const ssize_t y) } static MagickBooleanType ReadProfile(Image *image,const char *name, - unsigned char *datum,ssize_t length) + unsigned char *datum,ssize_t length,ExceptionInfo *exception) { MagickBooleanType status; @@ -501,7 +501,7 @@ static void TIFFErrors(const char *module,const char *format,va_list error) "`%s'",module); } -static void TIFFGetProfiles(TIFF *tiff,Image *image) +static void TIFFGetProfiles(TIFF *tiff,Image *image,ExceptionInfo *exception) { uint32 length; @@ -512,12 +512,12 @@ static void TIFFGetProfiles(TIFF *tiff,Image *image) #if defined(TIFFTAG_ICCPROFILE) length=0; if (TIFFGetField(tiff,TIFFTAG_ICCPROFILE,&length,&profile) == 1) - (void) ReadProfile(image,"icc",profile,(ssize_t) length); + (void) ReadProfile(image,"icc",profile,(ssize_t) length,exception); #endif #if defined(TIFFTAG_PHOTOSHOP) length=0; if (TIFFGetField(tiff,TIFFTAG_PHOTOSHOP,&length,&profile) == 1) - (void) ReadProfile(image,"8bim",profile,(ssize_t) length); + (void) ReadProfile(image,"8bim",profile,(ssize_t) length,exception); #endif #if defined(TIFFTAG_RICHTIFFIPTC) length=0; @@ -525,17 +525,17 @@ static void TIFFGetProfiles(TIFF *tiff,Image *image) { if (TIFFIsByteSwapped(tiff) != 0) TIFFSwabArrayOfLong((uint32 *) profile,(size_t) length); - (void) ReadProfile(image,"iptc",profile,4L*length); + (void) ReadProfile(image,"iptc",profile,4L*length,exception); } #endif #if defined(TIFFTAG_XMLPACKET) length=0; if (TIFFGetField(tiff,TIFFTAG_XMLPACKET,&length,&profile) == 1) - (void) ReadProfile(image,"xmp",profile,(ssize_t) length); + (void) ReadProfile(image,"xmp",profile,(ssize_t) length,exception); #endif length=0; if (TIFFGetField(tiff,37724,&length,&profile) == 1) - (void) ReadProfile(image,"tiff:37724",profile,(ssize_t) length); + (void) ReadProfile(image,"tiff:37724",profile,(ssize_t) length,exception); } static void TIFFGetProperties(TIFF *tiff,Image *image) @@ -990,7 +990,7 @@ static Image *ReadTIFFImage(const ImageInfo *image_info, if ((option != (const char *) NULL) && (IsMagickTrue(option) != MagickFalse)) TIFFGetEXIFProperties(tiff,image); - TIFFGetProfiles(tiff,image); + TIFFGetProfiles(tiff,image,exception); /* Allocate memory for the image and pixel buffer. */ @@ -1109,7 +1109,7 @@ static Image *ReadTIFFImage(const ImageInfo *image_info, colors; colors=(size_t) GetQuantumRange(bits_per_sample)+1; - if (AcquireImageColormap(image,colors) == MagickFalse) + if (AcquireImageColormap(image,colors,exception) == MagickFalse) { TIFFClose(tiff); ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); @@ -1935,7 +1935,7 @@ static MagickBooleanType WriteGROUP4Image(const ImageInfo *image_info, } (void) FormatLocaleString(huffman_image->filename,MaxTextExtent,"tiff:%s", filename); - (void) SetImageType(huffman_image,BilevelType); + (void) SetImageType(huffman_image,BilevelType,exception); write_info=CloneImageInfo((ImageInfo *) NULL); SetImageInfoFile(write_info,file); write_info->compression=Group4Compression; @@ -2538,7 +2538,7 @@ static MagickBooleanType WriteTIFFImage(const ImageInfo *image_info, */ if ((image_info->type != UndefinedType) && (image_info->type != OptimizeType)) - (void) SetImageType(image,image_info->type); + (void) SetImageType(image,image_info->type,exception); quantum_info=AcquireQuantumInfo(image_info,image); if (quantum_info == (QuantumInfo *) NULL) ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed"); @@ -2666,7 +2666,7 @@ static MagickBooleanType WriteTIFFImage(const ImageInfo *image_info, case FaxCompression: case Group4Compression: { - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); break; } case JPEGCompression: diff --git a/coders/tim.c b/coders/tim.c index bd265c3db..3b9cb774b 100644 --- a/coders/tim.c +++ b/coders/tim.c @@ -193,7 +193,7 @@ static Image *ReadTIMImage(const ImageInfo *image_info,ExceptionInfo *exception) height=ReadBlobLSBShort(image); image->columns=width; image->rows=height; - if (AcquireImageColormap(image,pixel_mode == 1 ? 256UL : 16UL) == MagickFalse) + if (AcquireImageColormap(image,pixel_mode == 1 ? 256UL : 16UL,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); tim_colormap=(unsigned char *) AcquireQuantumMemory(image->colors, 2UL*sizeof(*tim_colormap)); diff --git a/coders/ttf.c b/coders/ttf.c index c054e2db5..0307c088e 100644 --- a/coders/ttf.c +++ b/coders/ttf.c @@ -281,7 +281,7 @@ static Image *ReadTTFImage(const ImageInfo *image_info,ExceptionInfo *exception) i+=6; } ConcatenateString(&draw_info->primitive,"pop graphic-context"); - (void) DrawImage(image,draw_info); + (void) DrawImage(image,draw_info,exception); /* Relinquish resources. */ diff --git a/coders/uil.c b/coders/uil.c index 795979bcf..7a86a5904 100644 --- a/coders/uil.c +++ b/coders/uil.c @@ -257,7 +257,7 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image, } } } - (void) SetImageType(image,PaletteType); + (void) SetImageType(image,PaletteType,exception); colors=image->colors; if (transparent != MagickFalse) { diff --git a/coders/vicar.c b/coders/vicar.c index 840be5de2..ddfcb7394 100644 --- a/coders/vicar.c +++ b/coders/vicar.c @@ -280,7 +280,7 @@ static Image *ReadVICARImage(const ImageInfo *image_info, if ((image->columns == 0) || (image->rows == 0)) ThrowReaderException(CorruptImageError,"NegativeOrZeroImageSize"); image->depth=8; - if (AcquireImageColormap(image,256) == MagickFalse) + if (AcquireImageColormap(image,256,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { diff --git a/coders/vid.c b/coders/vid.c index 4ec99b928..469ee8a51 100644 --- a/coders/vid.c +++ b/coders/vid.c @@ -170,7 +170,8 @@ static Image *ReadVIDImage(const ImageInfo *image_info,ExceptionInfo *exception) CatchException(exception); if (next_image == (Image *) NULL) break; - label=InterpretImageProperties(image_info,next_image,DefaultTileLabel); + label=InterpretImageProperties(image_info,next_image,DefaultTileLabel, + exception); (void) SetImageProperty(next_image,"label",label); label=DestroyString(label); if (image_info->debug != MagickFalse) diff --git a/coders/viff.c b/coders/viff.c index 2ab7f99b0..dc8c0ec89 100644 --- a/coders/viff.c +++ b/coders/viff.c @@ -394,7 +394,7 @@ static Image *ReadVIFFImage(const ImageInfo *image_info, image->colors=image->depth <= 8 ? 256UL : 65536UL; if (viff_info.data_storage_type == VFF_TYP_BIT) image->colors=2; - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); } break; @@ -418,7 +418,7 @@ static Image *ReadVIFFImage(const ImageInfo *image_info, default: bytes_per_pixel=1; break; } image->colors=viff_info.map_columns; - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); viff_colormap=(unsigned char *) AcquireQuantumMemory(image->colors, viff_info.map_rows*bytes_per_pixel*sizeof(*viff_colormap)); @@ -615,8 +615,8 @@ static Image *ReadVIFFImage(const ImageInfo *image_info, /* Convert bitmap scanline. */ - (void) SetImageType(image,BilevelType); - (void) SetImageType(image,PaletteType); + (void) SetImageType(image,BilevelType,exception); + (void) SetImageType(image,PaletteType,exception); for (y=0; y < (ssize_t) image->rows; y++) { q=QueueAuthenticPixels(image,0,y,image->columns,1,exception); @@ -1179,7 +1179,7 @@ static MagickBooleanType WriteVIFFImage(const ImageInfo *image_info, /* Convert PseudoClass image to a VIFF monochrome image. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); for (y=0; y < (ssize_t) image->rows; y++) { p=GetVirtualPixels(image,0,y,image->columns,1,exception); diff --git a/coders/wbmp.c b/coders/wbmp.c index e637dfd31..1a157a0b5 100644 --- a/coders/wbmp.c +++ b/coders/wbmp.c @@ -174,7 +174,7 @@ static Image *ReadWBMPImage(const ImageInfo *image_info, if (DiscardBlobBytes(image,image->offset) == MagickFalse) ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile", image->filename); - if (AcquireImageColormap(image,2) == MagickFalse) + if (AcquireImageColormap(image,2,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); if (image_info->ping != MagickFalse) { @@ -382,7 +382,7 @@ static MagickBooleanType WriteWBMPImage(const ImageInfo *image_info, /* Convert image to a bi-level image. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); (void) WriteBlobMSBShort(image,0); WBMPWriteInteger(image,image->columns); WBMPWriteInteger(image,image->rows); diff --git a/coders/webp.c b/coders/webp.c index 49f81a12b..f1d92bf43 100644 --- a/coders/webp.c +++ b/coders/webp.c @@ -72,7 +72,7 @@ */ #if defined(MAGICKCORE_WEBP_DELEGATE) static MagickBooleanType - WriteWEBPImage(const ImageInfo *,Image *); + WriteWEBPImage(const ImageInfo *,Image *,ExceptionInfo *); #endif #if defined(MAGICKCORE_WEBP_DELEGATE) @@ -294,7 +294,7 @@ static int WebPWriter(const unsigned char *stream,size_t length, } static MagickBooleanType WriteWEBPImage(const ImageInfo *image_info, - Image *image) + Image *image,ExceptionInfo *exception) { int webp_status; diff --git a/coders/wpg.c b/coders/wpg.c index 4370e1057..322702e5f 100644 --- a/coders/wpg.c +++ b/coders/wpg.c @@ -1036,7 +1036,7 @@ static Image *ReadWPGImage(const ImageInfo *image_info, WPG_Palette.NumOfEntries=ReadBlobLSBShort(image); image->colors=WPG_Palette.NumOfEntries; - if (!AcquireImageColormap(image,image->colors)) + if (!AcquireImageColormap(image,image->colors,exception)) goto NoMemory; for (i=WPG_Palette.StartIndex; i < (int)WPG_Palette.NumOfEntries; i++) @@ -1089,7 +1089,7 @@ static Image *ReadWPGImage(const ImageInfo *image_info, if ((image->colors == 0) && (bpp != 24)) { image->colors=one << bpp; - if (!AcquireImageColormap(image,image->colors)) + if (!AcquireImageColormap(image,image->colors,exception)) { NoMemory: ThrowReaderException(ResourceLimitError, @@ -1220,7 +1220,7 @@ static Image *ReadWPGImage(const ImageInfo *image_info, WPG_Palette.NumOfEntries=ReadBlobLSBShort(image); image->colors=WPG_Palette.NumOfEntries; - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError, "MemoryAllocationFailed"); for (i=WPG_Palette.StartIndex; @@ -1273,7 +1273,7 @@ static Image *ReadWPGImage(const ImageInfo *image_info, one=1; image->colors=one << bpp; - if (!AcquireImageColormap(image,image->colors)) + if (!AcquireImageColormap(image,image->colors,exception)) goto NoMemory; } else diff --git a/coders/xbm.c b/coders/xbm.c index 1d192fbf1..ababf6a80 100644 --- a/coders/xbm.c +++ b/coders/xbm.c @@ -271,7 +271,7 @@ static Image *ReadXBMImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Initialize image structure. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); /* Initialize colormap. @@ -530,7 +530,7 @@ static MagickBooleanType WriteXBMImage(const ImageInfo *image_info,Image *image, /* Convert MIFF to X bitmap pixels. */ - (void) SetImageType(image,BilevelType); + (void) SetImageType(image,BilevelType,exception); bit=0; byte=0; count=0; diff --git a/coders/xcf.c b/coders/xcf.c index fa3e2e7b4..7de9d5936 100644 --- a/coders/xcf.c +++ b/coders/xcf.c @@ -331,11 +331,9 @@ static char *ReadBlobStringWithLongSize(Image *image,char *string,size_t max) } static MagickBooleanType load_tile(Image *image,Image *tile_image, - XCFDocInfo *inDocInfo,XCFLayerInfo *inLayerInfo,size_t data_length) + XCFDocInfo *inDocInfo,XCFLayerInfo *inLayerInfo,size_t data_length, + ExceptionInfo *exception) { - ExceptionInfo - *exception; - ssize_t y; @@ -365,7 +363,6 @@ static MagickBooleanType load_tile(Image *image,Image *tile_image, if (count != (ssize_t) data_length) ThrowBinaryException(CorruptImageError,"NotEnoughPixelData", image->filename); - exception=(&image->exception); for (y=0; y < (ssize_t) tile_image->rows; y++) { q=QueueAuthenticPixels(tile_image,0,y,tile_image->columns,1,exception); @@ -406,11 +403,9 @@ static MagickBooleanType load_tile(Image *image,Image *tile_image, } static MagickBooleanType load_tile_rle(Image *image,Image *tile_image, - XCFDocInfo *inDocInfo,XCFLayerInfo *inLayerInfo,size_t data_length) + XCFDocInfo *inDocInfo,XCFLayerInfo *inLayerInfo,size_t data_length, + ExceptionInfo *exception) { - ExceptionInfo - *exception; - MagickOffsetType size; @@ -670,12 +665,12 @@ static MagickBooleanType load_level(Image *image,XCFDocInfo *inDocInfo, switch (inDocInfo->compression) { case COMPRESS_NONE: - if (load_tile(image,tile_image,inDocInfo,inLayerInfo,(size_t) (offset2-offset)) == 0) + if (load_tile(image,tile_image,inDocInfo,inLayerInfo,(size_t) (offset2-offset),exception) == 0) status=MagickTrue; break; case COMPRESS_RLE: if (load_tile_rle (image,tile_image,inDocInfo,inLayerInfo, - (int) (offset2-offset)) == 0) + (int) (offset2-offset),exception) == 0) status=MagickTrue; break; case COMPRESS_ZLIB: @@ -765,7 +760,7 @@ static MagickBooleanType load_hierarchy(Image *image,XCFDocInfo *inDocInfo, } static MagickBooleanType ReadOneLayer(Image* image,XCFDocInfo* inDocInfo, - XCFLayerInfo *outLayer ) + XCFLayerInfo *outLayer, ExceptionInfo *exception ) { MagickOffsetType offset; @@ -1294,7 +1289,8 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) /* seek to the layer offset */ offset=SeekBlob(image,offset,SEEK_SET); /* read in the layer */ - layer_ok=ReadOneLayer(image,&doc_info,&layer_info[current_layer]); + layer_ok=ReadOneLayer(image,&doc_info,&layer_info[current_layer], + exception); if (layer_ok == MagickFalse) { int j; diff --git a/coders/xpm.c b/coders/xpm.c index 959f02fb1..bf8deb8af 100644 --- a/coders/xpm.c +++ b/coders/xpm.c @@ -342,7 +342,7 @@ static Image *ReadXPMImage(const ImageInfo *image_info,ExceptionInfo *exception) */ xpm_colors=NewSplayTree(CompareXPMColor,RelinquishMagickMemory, (void *(*)(void *)) NULL); - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); /* Read image colormap. @@ -650,13 +650,13 @@ static MagickBooleanType WritePICONImage(const ImageInfo *image_info, if ((picon == (Image *) NULL) || (affinity_image == (Image *) NULL)) return(MagickFalse); quantize_info=AcquireQuantizeInfo(image_info); - status=RemapImage(quantize_info,picon,affinity_image); + status=RemapImage(quantize_info,picon,affinity_image,exception); quantize_info=DestroyQuantizeInfo(quantize_info); affinity_image=DestroyImage(affinity_image); transparent=MagickFalse; if (picon->storage_class == PseudoClass) { - (void) CompressImageColormap(picon); + (void) CompressImageColormap(picon,exception); if (picon->matte != MagickFalse) transparent=MagickTrue; } @@ -687,7 +687,7 @@ static MagickBooleanType WritePICONImage(const ImageInfo *image_info, break; } } - (void) SetImageType(picon,PaletteType); + (void) SetImageType(picon,PaletteType,exception); } colors=picon->colors; if (transparent != MagickFalse) @@ -884,7 +884,7 @@ static MagickBooleanType WriteXPMImage(const ImageInfo *image_info,Image *image, if (image->matte == MagickFalse) { if ((image->storage_class == DirectClass) || (image->colors > 256)) - (void) SetImageType(image,PaletteType); + (void) SetImageType(image,PaletteType,exception); } else { @@ -896,7 +896,7 @@ static MagickBooleanType WriteXPMImage(const ImageInfo *image_info,Image *image, Identify transparent colormap index. */ if ((image->storage_class == DirectClass) || (image->colors > 256)) - (void) SetImageType(image,PaletteBilevelMatteType); + (void) SetImageType(image,PaletteBilevelMatteType,exception); for (i=0; i < (ssize_t) image->colors; i++) if (image->colormap[i].alpha != OpaqueAlpha) { @@ -914,7 +914,7 @@ static MagickBooleanType WriteXPMImage(const ImageInfo *image_info,Image *image, } if (opacity == -1) { - (void) SetImageType(image,PaletteBilevelMatteType); + (void) SetImageType(image,PaletteBilevelMatteType,exception); for (i=0; i < (ssize_t) image->colors; i++) if (image->colormap[i].alpha != OpaqueAlpha) { diff --git a/coders/xwd.c b/coders/xwd.c index 2535fb459..dfdde5f6c 100644 --- a/coders/xwd.c +++ b/coders/xwd.c @@ -458,7 +458,7 @@ static Image *ReadXWDImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Convert X image to PseudoClass packets. */ - if (AcquireImageColormap(image,image->colors) == MagickFalse) + if (AcquireImageColormap(image,image->colors,exception) == MagickFalse) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); for (i=0; i < (ssize_t) image->colors; i++) { diff --git a/tests/validate.c b/tests/validate.c index 684e9f5f0..cdc492266 100644 --- a/tests/validate.c +++ b/tests/validate.c @@ -523,7 +523,7 @@ static size_t ValidateImageFormatsInMemory(ImageInfo *image_info, image_info->depth=reference_types[j].depth; (void) FormatLocaleString(reference_image->filename,MaxTextExtent,"%s:%s", reference_formats[i].magick,output_filename); - status=SetImageType(reference_image,reference_types[j].type); + status=SetImageType(reference_image,reference_types[j].type,exception); InheritException(exception,&reference_image->exception); if (status == MagickFalse) { @@ -741,7 +741,7 @@ static size_t ValidateImageFormatsOnDisk(ImageInfo *image_info, image_info->depth=reference_types[j].depth; (void) FormatLocaleString(reference_image->filename,MaxTextExtent,"%s:%s", reference_formats[i].magick,output_filename); - status=SetImageType(reference_image,reference_types[j].type); + status=SetImageType(reference_image,reference_types[j].type,exception); InheritException(exception,&reference_image->exception); if (status == MagickFalse) { @@ -969,8 +969,7 @@ static size_t ValidateImportExportPixels(ImageInfo *image_info, (void) SetImageBackgroundColor(reference_image); status=ImportImagePixels(reference_image,0,0,reference_image->columns, reference_image->rows,reference_map[i],reference_storage[j].type, - pixels); - InheritException(exception,&reference_image->exception); + pixels,exception); if (status == MagickFalse) { (void) FormatLocaleFile(stdout,"... fail @ %s/%s/%lu.\n", @@ -991,7 +990,7 @@ static size_t ValidateImportExportPixels(ImageInfo *image_info, (void) SetImageBackgroundColor(reconstruct_image); status=ImportImagePixels(reconstruct_image,0,0,reconstruct_image->columns, reconstruct_image->rows,reference_map[i],reference_storage[j].type, - pixels); + pixels,exception); InheritException(exception,&reconstruct_image->exception); pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (status == MagickFalse) |