úÎ&ò#O$      !"#None!Image data, either 8 or 16 bits.  TODO rename to PNM For 16-bit PGMs. For 8-bit PGMs. For 1-bit PBMs. For 16-bit PPMs. For 8-bit PPMs. -A pixel containing a 16-bit greyscale value. -A pixel containing an 8-bit greyscale value. #A pixel containing black or white. 7A pixel containing three 16-bit color components, RGB. 6A pixel containing three 8-bit color components, RGB. 2A PPM file with type, dimensions, and image data. #The netpbm image type of an image. binary pixmap (color) binary greymap binary bitmap ASCII pixmap (color) ASCII greymap  ASCII bitmap "The result of a PPM parse. See #. $Parses a netpbm magic number.  One of P1, P2, P3, P4, P5, P6. %-Decimal, possibly with comments interleaved, ' but starting and ending with a digit.  See the notes about comments. &Parses a SINGLE PPM file. Specification: http:netpbm.sourceforge.netdoc ppm.html =There can be multiple images in one file, each starting with  a Pn magic number. Comments starting with '#' can only be  8before the whitespace character that delimits the raster  (see http:netpbm.sourceforge.netdoc pbm.html). # Nevertheless, I interpret that as +comments cannot be inside the magic number. See also the notes for '. ( See http:netpbm.sourceforge.netdoc pbm.html We ignore the +No line should be longer than 70 characters here due to should. '7Parses a full PPM file, containing one or more images. From the spec:  >"A PPM file consists of a sequence of one or more PPM images. N There are no data, delimiters, or padding before, after, or between images." LHowever, you can find PPM files that have trailing whitespace, especially a '\n',  so we allow this. #!Parses a PPM file from the given ).  On failure,  Left error contains the error message.  On success, Right (images, Maybe rest) contains the parsed images + and potentially an unparsable rest input. F  !*+,-."/0123$45%6789:&;<(=>?@'#ABCDEF$  !"#$   !#"/    !*+,-."/0123$45%6789:&;<(=>?@'#ABCDEFG           !"#$%&'()*+,-./0123456789:;<=>?@ABCD netpbm-0.3.0Graphics.Netpbm PpmPixelDataPgmPixelData16 PgmPixelData8 PbmPixelDataPpmPixelDataRGB16PpmPixelDataRGB8 PgmPixel16 PgmPixel8PbmPixel PpmPixelRGB16 PpmPixelRGB8 PPMHeaderppmTypeppmWidth ppmHeightPPM ppmHeaderppmDataPPMTypeP6P5P4P3P2P1pixelVectorToListpixelDataToIntListPpmParseResultparsePPMmagicNumberParserdecimalC ppmBodyParser imagesParserpbmAsciiBodyParserbytestring-0.10.0.2Data.ByteString.Internal ByteString $fShowPPM$fUnboxPpmPixelRGB8$fUnboxPpmPixelRGB16$fUnboxPbmPixel$fUnboxPgmPixel8storePpmPixel8storePpmPixel16 storePbmPixelstorePgmPixel8storePgmPixel16commentsep headerParserword8max word16max isValidMaxvalsingleWhitespace pgmBodyParser pbmBodyParserpgmAsciiBodyParserppmAsciiBodyParserimageParserOfType imageParser$fStorablePgmPixel16$fStorablePgmPixel8$fStorablePbmPixel$fStorablePpmPixelRGB16$fStorablePpmPixelRGB8$fUnboxPgmPixel16